我的录音应用程序中有一个奇怪的错误导致设备在我拨打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”,“录音机初始化为”+ record.getSampleRate()); 回报记录; } record.release(); record = null; return null; }
如果有人有兴趣在他们的设备上进行测试,那么这是完整的应用程序:
https://play.google.com/store/apps/details?id=org.yuttadhammo.androidwave
https://github.com/yuttadhammo/androidwave
更新:同样的行为也出现在排练助手中,但只有我记录了未压缩的音频。似乎问题与录制未压缩音频有关。有什么想法吗?