2011-01-11 12 views
11

私のアプリケーションでは、マイクから直接スピーカーに音を向ける必要があります。他のアクションはありません。 ファイルを再生してスピーカーをオフに設定することで、マイクからイヤホンにサウンドを送る方法を見つけました。だから私はスピーカーが同様に動作することができると思います。しかし、私は再生ファイルのものを取り除く方法を知らない。ありがとうございました。アンドロイドでマイクからスピーカーに直接音を再生する方法は?

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

答えて

14

使用スピーカーは

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

ねえA117、あなたがこのリンクを参照してくださいすることができhttp://stackoverflow.com/questions/を必要に応じて(MUSIC ..._への変更を&プレイを記録するために& AudioTrackをaudiorecordの10012009/how-can-i-play-sound-when-device-receive-incoming-call-in-androidと私の要求を満たすためにあなたのコードが使われていることを教えてください。 – anddev

関連する問題