2016-12-01 116 views
0

我使用AudioRecord来录制音乐,但是当我录制它时使用手机麦克风。 我该如何强迫他使用耳机的频道?Android force AudioRecord使用耳机麦克风

我用这个代码:

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(); 

谢谢

回答

1

您可以使用AudioManager.isWiredHeadsetOn()检查,如果耳机在插入或没有。如果上述值为false,则不执行任何操作或任何您想要执行的操作。而且您首先需要获得许可:MODIFY_AUDIO_SETTINGS

希望这会有所帮助。 :)

+0

没有帮助,当我记录的记录仍然是从手机内置扬声器。 – Daffa

+0

@Daffa你读过android doc文件吗?不知道它是否会帮助你,但这里是链接[链接](https://developer.android.com/reference/android/media/AudioRecord.html) – Dhruv

+0

我已阅读文档,并没有找到解决问题的方法。即使我更改了通道参数 – Daffa