android耳机插拔的监听

来源:互联网 发布:linux镜像下载 编辑:程序博客网 时间:2024/04/30 06:51

必须动态注册,否则无效监听
一、主要监听事件
1.监听有线耳机
Intent.ACTION_HEADSET_PLUG
android.intent.action.HEADSET_PLUG
2,监听蓝牙耳机
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED
二、代码实现

/**注册receiver*/public class HeadSetActivity extends AppCompatActivity {    private HeadSetReceiver mReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_head_set);        mReceiver = new HeadSetReceiver();        IntentFilter intentFilter = new IntentFilter();        intentFilter.addAction(Intent.ACTION_HEADSET_PLUG);        intentFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);        registerReceiver(mReceiver, intentFilter);    }    @Override    protected void onDestroy() {        super.onDestroy();        /**        销毁receiver        */        if (mReceiver != null) {            unregisterReceiver(mReceiver);        }    }
/**receiver监听*/public class HeadSetReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String action = intent.getAction();        if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {            BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();            if (BluetoothProfile.STATE_DISCONNECTED == adapter.getProfileConnectionState(BluetoothProfile.HEADSET)) {                //Bluetooth headset is now disconnected            }        } else if ("android.intent.action.HEADSET_PLUG".equals(action)) {            if (intent.hasExtra("state")){                if (intent.getIntExtra("state", 0) == 0){                    Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();                }                else if (intent.getIntExtra("state", 0) == 1){                    Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();                }            }        }    }
0 0
原创粉丝点击