Android 强制 AudioRecord 使用耳机麦克风

标签 android microphone audiorecord

我使用 AudioRecord 录制音乐,但在录制时使用手机麦克风。 我怎样才能强制他使用耳机的 channel ?

我使用这段代码:

  int minSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
        AudioRecord ar = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, minSize);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            recorder[0] = false;
        }
    }, timeInSecondsToRecord * 1000);

    short[] buffer = new short[minSize];
    ar.startRecording();
        Log.d("Started","Reording");
    while (recorder[0]) {
        ar.read(buffer, 0, minSize);
        for (short s : buffer) {
            if (s>1000)
            System.out.println("signalVal=" + s);
        }
    }
        Log.d("Finished","Reording");
    ar.stop();

谢谢

最佳答案

您可以使用 AudioManager.isWiredHeadsetOn() 检查耳机是否已插入。如果上述值为 false,则不要执行任何操作或任何您想做的事情。您还需要先获得许可:MODIFY_AUDIO_SETTINGS

希望这对您有所帮助。 :)

关于Android 强制 AudioRecord 使用耳机麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916501/

相关文章:

java - LGP500上的 Intent RECORD_SOUND_ACTION

javascript - Android 上的手机唤醒后 HTML5 GPS 地理定位失败

android - Android:不断聆听语音识别输入

android - 使用相机拍摄,在 ImageView 中显示并保存到图片

flash - 如何允许用户始终允许我的 Flash 应用程序访问麦克风?

android - 如何在 Android 上使用外部麦克风?

android - MediaCodec 没有任何可用的输入缓冲区

android - 应用崩溃时如何释放Android资源

android - 如何在本地删除文档以便服务器在 couches 服务器中保留副本

java - Android sqlite jdbc由于只读文件系统而无法连接