我的录音应用程序中有一个奇怪的错误,当我调用AudioRecord.startRecording();
含义时,它会导致设备切换到内部音频,从那时起,每个应用程序(音乐播放器、YouTube 等)的所有音频都被强制通过扬声器,并且即使插入带有麦克风的耳机,也可以通过内部麦克风进行录音。
让耳机再次工作的唯一方法是退出应用程序并调整手机音量,这似乎会使设备意识到它再次拥有耳机。
我的问题是是否有人可以告诉我我可能会做什么来导致强制切换到扬声器?或者这可能只是我用来测试的设备/ROM的问题?
这是导致切换的调用:
AudioRecord record = openAudio();
record.startRecording();
...
private AudioRecord openAudio()
{
int samplingRate = Integer.parseInt(prefs.getString("sample_rate", "44100"));
int min = AudioRecord.getMinBufferSize(samplingRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
Log.d("Recorder", "Min buffer size: " + min);
Log.d("Recorder", "Sampling Rate: " + samplingRate);
if (min < 4096)
min = 4096;
AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, samplingRate,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, min);
if (record.getState() == AudioRecord.STATE_INITIALIZED)
{
// Log.d("Recorder", "Audio recorder initialized at " + record.getSampleRate()); 退货记录;} 记录.release(); 记录=空;返回空值;}
如果有人有兴趣在他们的设备上进行测试,这里是完整的应用程序:
https://play.google.com/store/apps/details?id=org.yuttadhammo.androidwave
https://github.com/yuttadhammo/androidwave
更新:排练助手中也会发生相同的行为,但前提是我让它录制未压缩的音频。似乎问题与录制未压缩的音频有关。任何想法为什么?