Android 蓝牙连接
程序员文章站
2024-03-24 23:14:46
...
定义广播: private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR); handleStateChanged(state); } else if (action.equals(BluetoothDevice.ACTION_FOUND)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (HOME_BASE.equals(device.getName())) { bluetoothDevice = device; bluetoothDevice.createBond(); } } else if (action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) { if (bluetoothDevice != null) { bluetoothDevice.setPairingConfirmation(true); bluetoothDevice.setPin(PIN.getBytes()); } } else if (action.equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) { if (bluetoothDevice.getBondState() == BluetoothDevice.BOND_BONDED) { if (bluetoothA2dp != null) { bluetoothA2dp.connect(bluetoothDevice); } } } } }; 蓝牙状态处理方法: private void handleStateChanged(int state) { switch (state) { case BluetoothAdapter.STATE_TURNING_ON: break; case BluetoothAdapter.STATE_ON: bluetoothDevice = null; bluetoothAdapter.startDiscovery(); break; case BluetoothAdapter.STATE_TURNING_OFF: break; case BluetoothAdapter.STATE_OFF: bluetoothAdapter.cancelDiscovery(); break; } } 定义serviceListener: BluetoothProfile.ServiceListener serviceListener = new BluetoothProfile.ServiceListener() { @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { bluetoothA2dp = (BluetoothA2dp) proxy; } @Override public void onServiceDisconnected(int profile) { bluetoothA2dp = null; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bluetoothManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE); bluetoothAdapter = bluetoothManager.getAdapter(); //获取A2DP的服务代理 bluetoothAdapter.getProfileProxy(this, serviceListener, BluetoothProfile.A2DP);
intentFilter = new IntentFilter(); intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); intentFilter.addAction(BluetoothDevice.ACTION_FOUND); intentFilter.addAction(BluetoothDevice.ACTION_PAIRING_REQUEST); intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); } @Override protected void onStart() { super.onStart(); registerReceiver(bluetoothReceiver, intentFilter); } @Override protected void onStop() { super.onStop(); unregisterReceiver(bluetoothReceiver); bluetoothAdapter.closeProfileProxy(BluetoothProfile.A2DP, bluetoothA2dp); }