android音乐播放器监听电话状态实现代码
如下代码是监听电话的状态,代码简单不做介绍直接看代码:
代码如下:
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();
}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341