最近在做一個新的音樂播放器,試用的過程中發現了幾個用戶體驗問題,其中一個就是拔掉耳機的時候居然還在播放,用戶體驗不怎麼好,找了一些資料,發現耳機的拔插狀態是可以監聽到的,並且也是如此簡單,做下筆記:
首先需要一個廣播接收器,因爲耳機的拔插都會發送廣播,但是這個廣播只能動態註冊,而不能在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);
}