在手机上播放音乐的时候,我们希望监听电话的状态,当然在MID上没有电话功能,不需要监听。

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

[java] view plain copy print ?
  1. privatebooleanmResumeAfterCall=false;
  2. privatePhoneStateListenermPhoneStateListener=newPhoneStateListener(){
  3. @Override
  4. publicvoidonCallStateChanged(intstate,StringincomingNumber){
  5. if(state==TelephonyManager.CALL_STATE_RINGING){
  6. AudioManageraudioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
  7. intringvolume=audioManager
  8. .getStreamVolume(AudioManager.STREAM_RING);
  9. if(ringvolume>0){
  10. mResumeAfterCall=(player.isPlaying()||mResumeAfterCall);
  11. try{
  12. stub.pause();
  13. }catch(RemoteExceptione){
  14. //TODOAuto-generatedcatchblock
  15. e.printStackTrace();
  16. }
  17. }
  18. }elseif(state==TelephonyManager.CALL_STATE_OFFHOOK){
  19. //pausethemusicwhileaconversationisinprogress
  20. mResumeAfterCall=(player.isPlaying()||mResumeAfterCall);
  21. try{
  22. stub.pause();
  23. }catch(RemoteExceptione){
  24. //TODOAuto-generatedcatchblock
  25. e.printStackTrace();
  26. }
  27. }elseif(state==TelephonyManager.CALL_STATE_IDLE){
  28. //startplayingagain
  29. if(mResumeAfterCall){
  30. //resumeplaybackonlyifmusicwasplaying
  31. //whenthecallwasanswered
  32. try{
  33. stub.resume();
  34. }catch(RemoteExceptione){
  35. //TODOAuto-generatedcatchblock
  36. e.printStackTrace();
  37. }
  38. mResumeAfterCall=false;
  39. }
  40. }
  41. }
  42. };

使用的时候呢,就在service 的oncreate 里面添加,如下:

[java] view plain copy print ?
  1. publicvoidonCreate(){
  2. player=newMediaPlayer();
  3. super.onCreate();
  4. TelephonyManagertmgr=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  5. tmgr.listen(mPhoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);
  6. IntentFilterfilter=newIntentFilter();
  7. filter.addAction(SERVICECMD);
  8. filter.addAction(PAUSE_ACTION);
  9. receiver=newMusicServiceReceiver();
  10. registerReceiver(receiver,filter);
  11. }

在ondestroy 里面删除就可以了

[java] view plain copy print ?
  1. publicvoidonDestroy(){
  2. //Log.e(TAG,"onDestroy"+player.isPlaying());
  3. //System.out.println("onDestroy");
  4. unregisterReceiver(receiver);
  5. player.release();
  6. player=null;
  7. TelephonyManagertmgr=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  8. tmgr.listen(mPhoneStateListener,0);
  9. super.onDestroy();
  10. }

更多相关文章

  1. 自动完成AutoCompleteTextView(android)
  2. android 监听 APK 安装 与 删除等过程
  3. 安卓开发文件缓存方法的具体实现(参考代码)
  4. react-native 中配置极光推送 Android关键详细的说明与截图代码
  5. Android(安卓)退出多个Activity | 退出程序
  6. Android如何用代码重复加载同一个xml
  7. 《Android第一行代码》coolweather项目个人总结
  8. DPBaseAdapter-Android
  9. [android]android自动化测试十一之代码覆盖率报告EMMA

随机推荐

  1. Android(安卓)NotificationManager 和Not
  2. 学习Linux的第8天
  3. 【第846期】你不懂JS:异步流程控制
  4. 坚持写作快两年了,有些私藏工具跟你们分享
  5. 【同说】机械转行前端,半年零基础自学的心
  6. RocketMQ 源码分析 —— Message 存储
  7. RocketMQ 源码分析 —— 高可用
  8. Guava Cache本地缓存在 Spring Boot应用
  9. RocketMQ 源码分析 —— Filtersrv
  10. Android(安卓)TV横向滚动网格布局——Rec