android音乐播放器监听电话状态实现代码
更新时间:2013年11月02日 09:15:50 作者:
在手机上播放音乐的时候,我们希望监听电话的状态,当然在MID上没有电话功能,不需要监听
如下代码是监听电话的状态,代码简单不做介绍直接看代码:
复制代码 代码如下:
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 = (player.isPlaying() || mResumeAfterCall);
try {
stub.pause();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
// pause the music while a conversation is in progress
mResumeAfterCall = (player.isPlaying() || mResumeAfterCall);
try {
stub.pause();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (state == TelephonyManager.CALL_STATE_IDLE) {
// start playing again
if (mResumeAfterCall) {
// resume playback only if music was playing
// when the call was answered
try {
stub.resume();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mResumeAfterCall = false;
}
}
}
};
使用的时候呢,就在service 的oncreate 里面添加,如下:
复制代码 代码如下:
public void onCreate() {
player = new MediaPlayer();
super.onCreate();
TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tmgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
IntentFilter filter = new IntentFilter();
filter.addAction(SERVICECMD);
filter.addAction(PAUSE_ACTION);
receiver = new MusicServiceReceiver();
registerReceiver(receiver, filter);
}
在ondestroy 里面删除就可以了
复制代码 代码如下:
public void onDestroy() {
// Log.e(TAG, "onDestroy" +player.isPlaying() );
// System.out.println("onDestroy");
unregisterReceiver(receiver);
player.release();
player = null;
TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tmgr.listen(mPhoneStateListener, 0);
super.onDestroy();
}
相关文章
Android使用Notification实现宽视图通知栏(二)
这篇文章主要为大家详细介绍了Android使用Notification实现宽视图通知栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2016-12-12Android 将网络的Url资源转换为Drawable资源方式
这篇文章主要介绍了Android 将网络的Url资源转换为Drawable资源方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-03-03Android开发中解析xml文件XmlUtils工具类与用法示例
这篇文章主要介绍了Android开发中解析xml文件XmlUtils工具类与用法,结合实例形式分析了Android开发中解析xml文件工具类定义与相关使用技巧,需要的朋友可以参考下2018-01-01Android多设备多module打包fat-aar(最新推荐)
这篇文章主要介绍了Android多设备多module打包(fat-aar),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-03-03
最新评论