2016-09-11 9 views
0

MediPlayerでSoundCloudから音楽を再生しています。 私は離れて移動するときに私の耳に電話をイヤホンまで移動し、スピーカーに戻るときに出力ソースを切り替えることができるようにしたい。Android:音楽再生を中断することなく出力ソースを切り替える

@Override 
    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
      if (event.values[0] == 0) { 
       //near 
       mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 
       audiomgr.setSpeakerphoneOn(false); 
       Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show(); 
      } else { 
       //far 
       audiomgr.setSpeakerphoneOn(true); 
       mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); 
       Toast.makeText(getApplicationContext(), "far", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 

しかし、これは何もしません: は現在、私はこれを持っています。センサーは、私が電話を耳に接離していることを検知しますが、出力ソースは変わらないでしょう。 また、音楽の再生が連続的である必要があります。そのため、出力ソースが変更されたときに音楽が中断されることはありません。 ありがとうございました。

答えて

0

解決策が見つかりました。 サウンド出力を切り替えるには、AudioManagerを使用する必要があります。

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
     mAudioManager.setMode(AudioManager.STREAM_MUSIC); 
     mMediaPlayer = new MediaPlayer(); 
     mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

MediaPlayerとAudioManagerに同じモードを使用することが重要です。 次にソースを変更します。

mAudioManager.setSpeakerphoneOn(true); 
関連する問題