2011-01-11 26 views
11

w mojej aplikacji, muszę kierować dźwięk z mikrofonu bezpośrednio na głośnik. Żadnych innych działań. Znalazłem sposób na przekierowanie dźwięku z mikrofonu do słuchawki przez odtworzenie pliku i wyłączenie głośnika. Myślę więc, że głośnik może działać podobnie. Jednak nie wiem, jak pozbyć się tego pliku. Dziękuję Ci.jak odtwarzać dźwięk z mikrofonu do głośnika bezpośrednio na Androidzie?

speaker() { 
    m_audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    m_audioManager.setSpeakerphoneOn(true); // not needed I think 
    //m_audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL); earpiece need this? 
    setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); 
    m_audioManager.setMode(AudioManager.MODE_IN_CALL); 

Odpowiedz

14

użycie AudioRecord & AudioTrack nagrać & luz (zmiana do ..._ MUZYKI jeśli głośnik potrzebne

static final int bufferSize = 200000; 
final short[] buffer = new short[bufferSize]; 
short[] readBuffer = new short[bufferSize]; 
public void run() { 
    isRecording = true; 
    android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); 
    int buffersize = AudioRecord.getMinBufferSize(11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); 
    arec = new AudioRecord(MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize); 
    atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize, AudioTrack.MODE_STREAM); 
    atrack.setPlaybackRate(11025); 
    byte[] buffer = new byte[buffersize]; 
    arec.startRecording(); 
    atrack.play(); 
      while(isRecording) { 
       arec.read(buffer, 0, buffersize); 
       atrack.write(buffer, 0, buffer.length); 
       } 
    } 
+0

Hey A117 można patrz link http://stackoverflow.com/questions/ 10012009/how-can-i-play-sound-when-device-receive-incoming-call-in-android i zasugeruj mi, że twój kod jest używany do spełnienia moich wymagań? Z góry dziękuję. – anddev