android耳机插拔的监听

必须动态注册,否则无效监听
一、主要监听事件
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)