android - 无法使用 Samsung Galaxy S2 进行录音,但可以通过麦克风使用其他手机进行录音

标签 android record galaxy mediarecorder

但是我的应用程序无法通过麦克风在 Samsung Galaxy S 2 中录音,它一直在通过麦克风在其他手机中录音。

Recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
Recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

在我的代码中,我选择从 0 到 4 的源类型,选择编码器类型为 amr-nb、amr-wb、aac 或默认,选择输出格式类型为 .3gp、.mp4 或 .amr 以及选择音频 channel 为 1 或 2。 我尝试了所有可用的组合。至少其中一种组合适用于许多手机。但它们都不能在三星 Galaxy S 2 中工作。它记录了文件,记录的持续时间是真实的,但声音只是沉默!

在我对这个问题的网络研究中,我发现它可能来自麦克风类型。虽然在我的代码中我选择了默认的音频源类型,麦克风,语音下行,语音上行,语音通话,但它无法工作。然后我将音频源类型设置为 0、1、2、3、4 而不是 MediaRecorder.AudioSource.MIC 等。但它也无法工作...

最佳答案

我在 S2 上遇到过应用程序会锁定麦克风并且不会释放它的问题,特别是如果您正在进行快速开发周期,您在卸载应用程序时锁定和释放麦克风(并重新- 安装新版本)。有时它会在一段时间后解锁,但确保麦克风可用的可靠方法是在尝试失败后重启手机。

我已经能够使用 AudioRecord 对象中的以下设置来录制音频:

int buffer_size = 2 * AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
recorder = new AudioRecord(
  MediaRecorder.AudioSource.MIC,               //audio source
  16000,                                       //16kHz sample rate
  AudioFormat.CHANNEL_IN_MONO,                 //channel
  AudioFormat.ENCODING_PCM_16BIT,              //encoding
  buffer_size );                               //buffer size

关于android - 无法使用 Samsung Galaxy S2 进行录音,但可以通过麦克风使用其他手机进行录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822848/

相关文章:

android - Android:在以下位置启动声音

java - 用 Java 反序列化员工记录

php - 插入数据时避免 MySQL 中出现重复条目​​?

android - Galaxy S3 - 以纵向模式拍照会破坏 Activity

android - 在 Android Galaxy S3 上访问前置摄像头时遇到问题

android - BroadcastReceiver不接收来自外部链接的Intent

java - 如何将查询传递给 FirestoreRecyclerOptions?

c++ - 从文件中删除记录 C++

android - 来自自定义相机的图像在 Galaxy Nexus 上模糊

java - Recyclerview 无尽的滚动重新加载页面 onscroll