当前位置: 移动技术网 > 移动技术>移动开发>Android > android音乐播放器监听电话状态实现代码

android音乐播放器监听电话状态实现代码

2019年07月24日  | 移动技术网移动技术  | 我要评论
如下代码是监听电话的状态,代码简单不做介绍直接看代码:复制代码 代码如下: private boolean mresumeaftercall = false;&n

如下代码是监听电话的状态,代码简单不做介绍直接看代码:

复制代码 代码如下:

 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();
 }

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网