android耳机插拔的监听
16lz
2021-01-23
必须动态注册,否则无效监听
一、主要监听事件
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(); } } } }
更多相关文章
- android处理Back键Home键和Menu键事件
- Android 手机切屏事件
- Android中的双击事件,可扩展至多击事件
- Android触摸事件总结
- Android长按事件和点击事件问题处理,OnItemLongClickListener和On
- Android触摸事件分发机制(1)之View
- Android事件分发机制研究
- Android 4.0 事件输入(Event Input)系统
- android中的事件总线