我目前正在开发可在设备和平板电脑上运行的录音应用程序。
用户可以在开始录制之前设置以下首选项。
格式(AAC-PCM)
通道(单声道 - 立体声)
采样位大小(8-16位)
采样率(8000,11025,22050,44100赫兹)
基于这些偏好值,我创建了AudioRecord(用于解压缩)& MediaRecord(压缩)并开始录制。
到目前为止一直很好,但最近我发现了以下问题。
如果我将频道设置为Stereo
,那么我的应用程序在Xperia Arc上运行良好,但在Galaxy上,录制的声音会以说话的方式播放。而在三星i9000上,录制失败。
我也面临同样的问题Sample Bit Size
如果我将比特大小设置为8比特。加法器拒绝工作。
根据Android docs,8位不能保证在所有设备上运行。
所以我有以下方法。
有什么方法可以检测到设备上不兼容的录制设置,所以我会禁用它们。
因此用户不会有糟糕的用户体验,因为我会在启动应用程序后仅显示兼容的设置。
如果有人能给我一个暗示实施上述方法,我真的很感激。
由于
答案 0 :(得分:1)
没有任何api用于此目的。每个制造商都选择自己的语音识别方式(它可以有不同的蓝牙和speacker选项)。 所以我可以建议2个选项: 1)选择一个更稳定的选项(如PCM Mono,16KHz,22050) 2)在首次启动应用程序时,检查所有可能的配置并保存
答案 1 :(得分:1)
Android的声音API并不是那么好。如果您使用带有AudioRecord的立体声并使用奇数缓冲区大小调用读取,则可能会导致手机重启或搞砸音频子系统,直到手机重新启动。立体声也适用于只有一个麦克风的手机,结果各不相同。您不能将任何事情视为理所当然,但更安全的选择是使用44100hz 16位单声道,并在软件中进行自己的下采样。</ p>