(八)监听耳机插入拔出状态

简聆APP开发持续进行中......

这一次加入一个小功能

需求是这样的:

当用户正在使用耳机听歌时,

耳机被拔出时音乐暂停播放

耳机再次插入时音乐从暂停的位置播放。

其实这个功能是很有必要的。

比如一些人在公共场所听歌

耳机突然拔出来了,自己听的歌被大声放出开

这样子是比较尴尬的。

所以设计了这样一个小功能

具体实现如下:


首先在主页监听耳机状态广播

和上一章一样,因为主页是不会被finish掉的

所以选择在主页进行监听

//监听耳机状态的广播
private BroadcastReceiver headsetReceiver;

headsetReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (Intent.ACTION_HEADSET_PLUG.equals(intent.getAction())) {
                if (intent.hasExtra("state")) {
                    int state = intent.getIntExtra("state", 0);
                    Intent intentstate = new Intent("intentstate");
                    if (state == 1) {
                        intentstate.putExtra("state", 1);
                    } else if (state == 0) {
                        intentstate.putExtra("state", 0);
                    }
                    //发送耳机状态广播
                    localBroadcastManager.sendBroadcast(intentstate);
                }

            }
        }
    };
    IntentFilter headintentFilter = new IntentFilter();
    headintentFilter.addAction(Intent.ACTION_HEADSET_PLUG);
    registerReceiver(headsetReceiver, headintentFilter);
}

记得写取消注册

@Override
protected void onDestroy() {
    super.onDestroy();
    //取消注册屏幕状态广播
    unregisterReceiver(mOnepxReceiver);
    if (headsetReceiver != null) {
        //取消注册耳机监听广播
        unregisterReceiver(headsetReceiver);
    }
    
}

可以看到,主页这边接受到广播后,立马发送了出去

这时候就需要在音乐播放界面进行接收了。



 case "intentstate"://耳机状态广播
                        int state = intent.getIntExtra("state", -1);
                        if (state != -1) {
                            if (state == 1) {
//                            Toast.makeText(context, "插入耳机", Toast.LENGTH_SHORT).show();
                                if (index != -1) {//判断是不是第一次进入
                                    //播放
                                    if (!mediaPlayer.isPlaying()) {
                                        mediaPlayer.start();
                                        timer();//开启定时器
                                    }
                                }
                            } else if (state == 0) {
//                            Toast.makeText(context, "拔出耳机", Toast.LENGTH_SHORT).show();
                                //暂停
                                if (index != -1) {
                                    if (mediaPlayer.isPlaying()) {
                                        mediaPlayer.pause();
                                    }
                                }
                            }
                        }

这样这个小小的功能就实现了。

















猜你喜欢

转载自blog.csdn.net/android_xiong_st/article/details/77602869
今日推荐