2016-12-01 18 views
0

Я использую AudioRecord для записи музыки, но когда я записываю, он использует микрофон телефона. Как я могу заставить его использовать канал наушников?Сила Android 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() для проверки, если гарнитура подключена или нет. Если приведенное выше значение ложно, не выполняйте никаких действий или что бы вы ни делали. А также вам сначала нужно разрешение: MODIFY_AUDIO_SETTINGS

Надеюсь, это поможет. :)

+0

не помог, когда я записываю запись по-прежнему из встроенного динамика с телефона. – Daffa

+0

@ Даффа вы прочитали файл андроидного doc? Не знаю, поможет ли это вам, но вот ссылка [link] (https://developer.android.com/reference/android/media/AudioRecord.html) – Dhruv

+0

Я уже прочитал документацию и не нашел решение проблемы. Даже если я изменю параметр канала – Daffa