1. 程式人生 > >android插入耳機狀態使用揚聲器外放音樂

android插入耳機狀態使用揚聲器外放音樂

插入耳機的時候也可以選擇使用揚聲器播放音樂,來電鈴聲就是這麼用的。但是隻能用MediaPlayer,播放音訊檔案。

使用AudioTrack.write播放是行不通的。按理說AudioRecord、AudioTrack類相對於MediaRecorder mediaPlayer來說,更加接近底層,應該也行得通的。

還搞不清楚為什麼,大家來解答一下!

插入耳機,選擇外放的程式碼如下:


[html] view plaincopyprint?
AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMicrophoneMute(false);
audioManager.setSpeakerphoneOn(true);//使用揚聲器外放,即使已經插入耳機
setVolumeControlStream(AudioManager.STREAM_MUSIC);//控制聲音的大小
audioManager.setMode(AudioManager.STREAM_MUSIC);

//播放一段聲音,檢視效果
MediaPlayer playerSound = MediaPlayer.create(this, Uri.parse("file:///system/media/audio/ui/camera_click.ogg"));

playerSound.start();

註釋:

setVolumeControlStream(int streamType)方法:

當開發多媒體應用或者遊戲應用的時候,需要使用音量控制鍵來設定程式的音量大小。在Android系統中有多中音訊流,通過Activity中的函式 setVolumeControlStream(int streamType)可以設定該Activity中音量控制鍵控制的音訊流,一般在onCreate函式中設定。

Android中有如下幾種音訊流:
AudioManager.STREAM_MUSIC
AudioManager.STREAM_RING
AudioManager.STREAM_ALARM
AudioManager.STREAM_NOTIFICATION
AudioManager.STREAM_SYSTEM
AudioManager.STREAM_VOICECALL