android音乐播放器监听电话状态
16lz
2021-01-26
在手机上播放音乐的时候,我们希望监听电话的状态,当然在MID上没有电话功能,不需要监听。
如下代码是监听电话的状态,代码简单不做介绍直接看代码:
[java] view plain copy print ?
- privatebooleanmResumeAfterCall=false;
- privatePhoneStateListenermPhoneStateListener=newPhoneStateListener(){
- @Override
- publicvoidonCallStateChanged(intstate,StringincomingNumber){
- if(state==TelephonyManager.CALL_STATE_RINGING){
- AudioManageraudioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
- intringvolume=audioManager
- .getStreamVolume(AudioManager.STREAM_RING);
- if(ringvolume>0){
- mResumeAfterCall=(player.isPlaying()||mResumeAfterCall);
- try{
- stub.pause();
- }catch(RemoteExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }elseif(state==TelephonyManager.CALL_STATE_OFFHOOK){
- //pausethemusicwhileaconversationisinprogress
- mResumeAfterCall=(player.isPlaying()||mResumeAfterCall);
- try{
- stub.pause();
- }catch(RemoteExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }elseif(state==TelephonyManager.CALL_STATE_IDLE){
- //startplayingagain
- if(mResumeAfterCall){
- //resumeplaybackonlyifmusicwasplaying
- //whenthecallwasanswered
- try{
- stub.resume();
- }catch(RemoteExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- mResumeAfterCall=false;
- }
- }
- }
- };
使用的时候呢,就在service 的oncreate 里面添加,如下:
[java] view plain copy print ?
- publicvoidonCreate(){
- player=newMediaPlayer();
- super.onCreate();
- TelephonyManagertmgr=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
- tmgr.listen(mPhoneStateListener,PhoneStateListener.LISTEN_CALL_STATE);
- IntentFilterfilter=newIntentFilter();
- filter.addAction(SERVICECMD);
- filter.addAction(PAUSE_ACTION);
- receiver=newMusicServiceReceiver();
- registerReceiver(receiver,filter);
- }
在ondestroy 里面删除就可以了
[java] view plain copy print ?
- publicvoidonDestroy(){
- //Log.e(TAG,"onDestroy"+player.isPlaying());
- //System.out.println("onDestroy");
- unregisterReceiver(receiver);
- player.release();
- player=null;
- TelephonyManagertmgr=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
- tmgr.listen(mPhoneStateListener,0);
- super.onDestroy();
- }
更多相关文章
- 自动完成AutoCompleteTextView(android)
- android 监听 APK 安装 与 删除等过程
- 安卓开发文件缓存方法的具体实现(参考代码)
- react-native 中配置极光推送 Android关键详细的说明与截图代码
- Android(安卓)退出多个Activity | 退出程序
- Android如何用代码重复加载同一个xml
- 《Android第一行代码》coolweather项目个人总结
- DPBaseAdapter-Android
- [android]android自动化测试十一之代码覆盖率报告EMMA