在手机上播放音乐的时候,我们希望监听电话的状态,当然在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();
- }