2014-12-15 10 views
3

그래서 마이크에서 입력을 받아서 동시에 AudioRecorderAudioTrack 클래스를 사용하여 스피커를 통해 재생하는 코드가 있습니다.Android에서 외부 마이크 및 전화 스피커를 강제 설정하는 방법은 무엇입니까?

코드는 완벽하게 작동하지만, 이어폰을 연결하고 외부 마이크를 입력 및 전화 스피커로 사용하여 출력하고 싶습니다.

나는 이미 AudioManager 클래스를 시도했지만, 의도 한대로 작동하지 않을 수 있습니다.

이어폰이 연결되어 기본적

는 외부 마이크 입력으로서 사용되며, 소리 그러나 다음 코드 사용에 대한 ... 이어폰을 통해 나온다 :

audioManager.setMode(AudioManager.MODE_IN_CALL); 
audioManager.setSpeakerphoneOn(true); 

입력이 전환을 전화 마이크 및 스피커는 전화 스피커로 전환됩니다.

전화 스피커를 계속 사용하고 싶지만 외부 마이크를 사용하고 싶습니다. 이것이 가능한가?

나는 API 레벨 19 (킷캣)에 컴파일하고, 나는 이미 내 매니페스트

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 

있습니다. 또한 AudioRecorder 소스는 MediaRecorder.AudioSource.MIC

답변

0

같은 문제가 있습니다. 다양한 조합을 시도한 후에 외부 마이크에서 녹음하고 전화 스피커로 재생하는 방법을 발견했습니다.

mAudioInput = new AudioRecord(MediaRecorder.AudioSource.MIC, mSampleRate, AudioFormat.CHANNEL_IN_MONO, mFormat, mInBufferSize); 
mAudioOutput = new AudioTrack(AudioManager.STREAM_MUSIC, mSampleRate, AudioFormat.CHANNEL_OUT_MONO, mFormat, mOutBufferSize, AudioTrack.MODE_STREAM); 
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); 
mAudioManager.setSpeakerphoneOn(true); 

편집 : 그것은 삼성 갤럭시 그랜드 프라임 (SM-G531Y) 작동하지 않습니다

다음 API 레벨 25 아수스 Zenfone 3 ZE520KL (안드로이드 6.0.1)와 나를 위해 작동 코드입니다
관련 문제