最近在做一个新的音乐播放器,试用的过程中发现了几个用户体验问题,其中一个就是拔掉耳机的时候居然还在播放,用户体验不怎么好,找了一些资料,发现耳机的拔插状态是可以监听到的,并且也是如此简单,做下笔记:
首先需要一个广播接收器,因为耳机的拔插都会发送广播,但是这个广播只能动态注册,而不能在manifest.xml文件中注册:
String ACTION = "android.intent.action.HEADSET_PLUG";
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction().equals(ACTION))
{
if (intent.hasExtra("state"))
{
if (intent.getIntExtra("state", 0) == 0)
{
//耳机拔掉了
}
else if (intent.getIntExtra("state", 0) == 1)
{
//耳机插入
}
}
}
}
接着就是注册广播,一般在activity的onCreate中注册,onDestroy中注销,但是基于现在的需求,我放在了service中注册,这样能够保证当我的程序在后台运行的时候也能够监听到耳机的拔插:
private void register()
{
MyReceiver myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.HEADSET_PLUG");
registerReceiver(myReceiver, intentFilter);
}