您的位置:首页 > 移动开发 > Android开发

Android 打开和关闭扬声器

2014-10-23 17:19 316 查看


//打开扬声器

public void OpenSpeaker() {

try{

AudioManager audioManager = (AudioManager) mContext.getSystemService (Context.AUDIO_SERVICE);

//audioManager.setMode(AudioManager.ROUTE_SPEAKER);

audioManager.setMode(AudioManager.MODE_IN_CALL);

currVolume = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);

if(!audioManager.isSpeakerphoneOn()) {

audioManager.setSpeakerphoneOn(true);

audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,

audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ),

AudioManager.STREAM_VOICE_CALL);

}

} catch (Exception e) {

e.printStackTrace();

}

}

//关闭扬声器

public void CloseSpeaker() {

try {

AudioManager audioManager = (AudioManager) mContext.getSystemService (Context.AUDIO_SERVICE);

if(audioManager != null) {

if(audioManager.isSpeakerphoneOn()) {

audioManager.setSpeakerphoneOn(false);

audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,currVolume,

AudioManager.STREAM_VOICE_CALL);

}

}

} catch (Exception e) {

e.printStackTrace();

}

//Toast.makeText(context,"扬声器已经关闭",Toast.LENGTH_SHORT).show();

}

注意:

1.setSpeakerphoneOn() only work when audio mode set to MODE_IN_CALL. Try this:

AudioManager audioManager = (AudioManager)mActivity.getSystemService(Context.AUDIO_SERVICE);


audioManager.setMode(AudioManager.MODE_IN_CALL);


audioManager.setSpeakerphoneOn(true);


2. android.permission.MODIFY_AUDIO_SETTINGS

permission set in your manifest file because setSpeakerPhoneOn() requires that permission.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: