android音乐播放器监听电话状态,解决通话中的音乐的播放
16lz
2021-01-23
在音乐播放时电话打进来当然不希望音乐和来电铃声一同在响,所以下面的代码能解决此问题。
在 MusicPlayService中先创建一个电话状态监听的方法
/** * 电话状态监听事件 */ private boolean mResumeAfterCall = false; private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { if (state == TelephonyManager.CALL_STATE_RINGING) { AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int ringvolume = audioManager .getStreamVolume(AudioManager.STREAM_RING); if (ringvolume > 0) { mResumeAfterCall = (getMusicPlayState() || mResumeAfterCall); //当电话打进来时,就设置为停止播放状态 getAireMusicPlay().setPlayStatus(false); } } else if (state == TelephonyManager.CALL_STATE_OFFHOOK) { // pause the music while a conversation is in progress mResumeAfterCall = (getMusicPlayState() || mResumeAfterCall); getAireMusicPlay().setPlayStatus(false); } else if (state == TelephonyManager.CALL_STATE_IDLE) { // start playing again if (mResumeAfterCall) {
//当电话挂断是时,就设置为播放状态
getAireMusicPlay().setPlayStatus(true); mResumeAfterCall = false; } } } }; 在MusicPlayService的onCreate()方法中
@Override public void onCreate() { //电话监听的主要这两句 TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); tmgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); }
在MusicPlayService的onDestroy()方法中
public void onDestroy() { TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); tmgr.listen(mPhoneStateListener, 0); super.onDestroy(); }
更多相关文章
- Android获取网络连接状态(3G/Wifi)及调用网络配置界面
- 【Android基础学习】Android使用fitsSystemWindows属性实现–状
- Android读取文件方法总结
- Android中Intent传递对象的两种方法(Serializable,Parcelable)!
- Mac安装android studio后卡在building gradle project info的解
- appium 【已解决】Android,每次启动手机中都会安装Appium setting
- android 图片压缩的几种方法
- Android SqLite中insert()方法解析