如何在Android中录制音频时停止声音输入和输出更改为内部?

时间:2013-02-20 14:50:02

标签: android microphone audiorecord headset

我的录音应用程序中有一个奇怪的错误导致设备在我拨打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

更新:同样的行为也出现在排练助手中,但只有我记录了未压缩的音频。似乎问题与录制未压缩音频有关。有什么想法吗?

0 个答案:

没有答案