通过BroadcastReceiver监听有线耳机连接与断开情况
HeadsetDetectReceiver类
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* 监听头戴耳机连接状态变化
*
* @author wang songbo
*/
public class HeadsetDetectReceiver extends BroadcastReceiver {
private OnHeadsetDetectLintener onHeadsetDetectLintener;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_HEADSET_PLUG.equals(action)) {
if (intent.hasExtra("state")) {
int state = intent.getIntExtra("state", 0);
if (state == 1) {
//插入耳机
onHeadsetDetectLintener.isHeadseDetectConnected(true);
} else if (state == 0) {
//拔出耳机
onHeadsetDetectLintener.isHeadseDetectConnected(false);
}
}
}
}
public interface OnHeadsetDetectLintener {
void isHeadseDetectConnected(boolean connected);
}
public void setOnHeadsetDetectLintener(OnHeadsetDetectLintener onHeadsetDetectLintener) {
this.onHeadsetDetectLintener = onHeadsetDetectLintener;
}
}
Util管理类
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
/**
* @author wang songbo
*/
public class HeadsetDetectUtils {
private static HeadsetDetectUtils INSTANCE;
private HeadsetDetectReceiver headsetDetectReceiver;
public static synchronized HeadsetDetectUtils getInstance() {
if (INSTANCE == null) {
INSTANCE = new HeadsetDetectUtils();
}
return INSTANCE;
}
//注册插入耳机事件
public void registerHeadsetDetectReceiver(Activity activity) {
headsetDetectReceiver = new HeadsetDetectReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_HEADSET_PLUG);
activity.registerReceiver(headsetDetectReceiver, intentFilter);
headsetDetectReceiver.setOnHeadsetDetectLintener(new HeadsetDetectReceiver.OnHeadsetDetectLintener() {
@Override
public void isHeadseDetectConnected(boolean connected) {
if (connected) {
//耳机已连接 do something...
} else {
//耳机已断开 do something...
}
}
});
}
public void unregisterHeadsetDetectReceiver(Activity activity) {
activity.unregisterReceiver(headsetDetectReceiver);
}
}
在Activity中注册与取消注册:
BlueToothUtils.getInstance().registerHeadsetDetectReceiver(this);
BlueToothUtils.getInstance().unregisterHeadsetDetectReceiver(this);