检测不同设备上的不兼容录制设置

时间:2012-08-02 10:07:01

标签: android audio-recording

我目前正在开发可在设备和平板电脑上运行的录音应用程序。

用户可以在开始录制之前设置以下首选项。

  

格式(AAC-PCM)

     

通道(单声道 - 立体声)

     

采样位大小(8-16位)

     

采样率(8000,11025,22050,44100赫兹)

基于这些偏好值,我创建了AudioRecord(用于解压缩)& MediaRecord(压缩)并开始录制。

到目前为止一直很好,但最近我发现了以下问题。

如果我将频道设置为Stereo,那么我的应用程序在Xperia Arc上运行良好,但在Galaxy上,录制的声音会以说话的方式播放。而在三星i9000上,录制失败。

我也面临同样的问题Sample Bit Size如果我将比特大小设置为8比特。加法器拒绝工作。

根据Android docs,8位不能保证在所有设备上运行。

所以我有以下方法。

有什么方法可以检测到设备上不兼容的录制设置,所以我会禁用它们。

因此用户不会有糟糕的用户体验,因为我会在启动应用程序后仅显示兼容的设置。

如果有人能给我一个暗示实施上述方法,我真的很感激。

由于

2 个答案:

答案 0 :(得分:1)

没有任何api用于此目的。每个制造商都选择自己的语音识别方式(它可以有不同的蓝牙和speacker选项)。 所以我可以建议2个选项: 1)选择一个更稳定的选项(如PCM Mono,16KHz,22050) 2)在首次启动应用程序时,检查所有可能的配置并保存

答案 1 :(得分:1)

Android的声音API并不是那么好。如果您使用带有AudioRecord的立体声并使用奇数缓冲区大小调用读取,则可能会导致手机重启或搞砸音频子系统,直到手机重新启动。立体声也适用于只有一个麦克风的手机,结果各不相同。您不能将任何事情视为理所当然,但更安全的选择是使用44100hz 16位单声道,并在软件中进行自己的下采样。<​​/ p>