2

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

用户可以在开始录制之前设置以下偏好。

格式(AAC-PCM)

通道(单声道)

样本位大小(8-16 位)

采样率(8000、11025、22050、44100Hz)

基于这些首选项值,我创建 AudioRecord(用于解压缩)和 MediaRecord(压缩)并开始录制。

到目前为止一切顺利,但最近我注意到以下问题。

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

Sample Bit Size 如果我将位大小设置为 8 Bits.Recorder 拒绝工作,我也面临同样的问题。

根据 android docs 8 位不保证适用于所有设备。

所以我有以下方法。

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

所以用户不会有糟糕的用户体验,因为一旦他启动应用程序,我只会显示兼容的设置。

如果有人能给我一些关于实施上述方法的提示,我将不胜感激。

谢谢

4

2 回答 2

1

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

于 2012-08-02T10:14:16.133 回答
1

Android 的声音 API 并不是那么好。如果您将立体声与 AudioRecord 一起使用,并以奇数缓冲区大小调用 read,您可能会导致手机重新启动或破坏音频子系统,直到手机重新启动。立体声也适用于只有一个麦克风的手机,效果各异。您不能想当然,但更安全的选择是使用 44100hz 16 位单声道,并在软件中进行自己的下采样。

于 2012-09-28T23:39:03.630 回答