android - 适用于 Android 的低级音频 API

标签 android audio

我正在寻找在 Android 中以类似于 Windows 编程中的 waveOutOpen 系列方法的方式播放内存中音频的方法。

waveOut... 方法实质上让应用程序创建样本值数组(如内存中没有 header 的 WAV 文件)并将它们转储到队列中以进行顺序播放。 Windows 从一个数组无缝过渡到另一个数组,因此只要应用程序在播放前不断将数组转储到队列中,程序就可以创建和播放任意长度的连续音频。 Windows API 还包含一个回调机制,应用程序可以使用该机制来指示进度和加载额外的缓冲区。

据我所知,Android 音频 API 允许应用程序播放来自本地存储或 URL 或内存流的文件。有什么方法可以让 Android 系统“排队”MediaPlayer.start() 调用,以便一个播放器在播放完成后(无故障)过渡到下一个播放器? Jet 似乎做了类似的事情,但只是使用了它自己的内部合成引擎。

是否有任何其他方式以 waveOutOpen 方式访问 Android 音频?

最佳答案

android.media.AudioTrack

... 是您可能正在寻找的类(class)。

http://developer.android.com/reference/android/media/AudioTrack.html#AudioTrack%28int,%20int,%20int,%20int,%20int,%20int%29

创建它后,您只需使用以下方法向其提供给定格式的二进制数据:

AudioTrack.writeTo(...)

关于android - 适用于 Android 的低级音频 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436938/

相关文章:

c# - 没有流或缓冲区的C#音频输出

Java:混合两个 WAV 文件而不引入噪音

android - 将 Android Studio 更新到 2.2 Preview 3 后 Gradle 构建错误

android - 从 ViewPager 中检索 fragment

macos - 如何检查音频设备是否是聚合体

javascript - 发送警报通知时播放声音

android - 播放一些声音后,媒体播放器无法播放声音

java - Android onTap Intent 数组

c# - 从 PHP (MySQL) 中选择返回 Android (C#)

java - 如何在我的场景中解决 firestore 基本查询