android - 在 Android 设备上播放来自 ASIO 设备的音频
问题描述
我从 ASIO 设备录制了一些声音,该设备存储为浮点数组。音频的样本类型似乎是“ASIOSTInt32LSB”。我正在尝试弄清楚如何在 Android 设备上播放此音频。
我已经尝试创建一个 AudioTrack 并将音频的字节数组从 ASIO 设备写入轨道,但我得到了可以在下面看到的错误。我尝试将浮点数组值标准化为 -1.0 到 1.0 的范围,但这没有效果。我也尝试使用 MediaPlayer 而不是 AudioTrack,并创建一个临时文件,该文件采用字节数组的值,但这也不起作用。
private void playSound(byte[] soundArray)
{
final int TEST_SR = 22050; //This is from an example I found online.
final int TEST_CONF = AudioFormat.CHANNEL_OUT_MONO;
final int TEST_FORMAT = AudioFormat.ENCODING_PCM_FLOAT;
final int TEST_MODE = AudioTrack.MODE_STATIC;.
final int TEST_STREAM_TYPE = AudioManager.STREAM_ALARM;
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT, soundArray.length, TEST_MODE);
track.write(soundArray, 0, soundArray.length);
}
我希望播放声音,但会产生以下错误:
2019-02-13 20:19:29.665 16618-16653/com.xx.yy E/AudioTrack: AudioFlinger could not create track, status: -12
2019-02-13 20:19:29.666 16618-16653/com.xx.yy E/AudioTrack-JNI: Error -12 initializing AudioTrack
2019-02-13 20:19:29.667 16618-16653/com.xx.yy E/android.media.AudioTrack: Error code -20 when initializing AudioTrack.
解决方案
推荐阅读
- python - 在 Python 中使用密码创建 ZipFile
- vba - 是否可以将自定义图标/图像添加到 Word for Mac 中的宏按钮?
- javascript - Bot 的移动状态指示器
- python - ModuleNotFoundError:没有名为“simple_salesforce”的模块
- fortran - status="old" 的 OPEN 语句创建一个新文件并挂起
- stm32 - 什么可以使奇偶校验位总是高或总是低?
- javascript - MONGODB - 在嵌套查询中查找两个数组的差异
- powershell - 从文本文件创建 CSV 并定义字段
- sql - SQL Server UNION 更改结果中查询的顺序
- javascript - Jasmine 单元测试:this.wvInstance.docViewer.getDocument 不是函数