Большое спасибо Skylarsutton за его ответ. Я отправляю это как ответ на его, но поскольку я публикую код, я не могу ответить как комментарий. Я уже проголосовал за его ответ, поэтому не ищу никаких пунктов. Просто платите вперед.
По какой-то причине Android Studio не удалось разрешить BluetoothAdapter.ACTION_ACL_CONNECTED. Возможно, это устарело в Android 4.2.2? Вот модификация его кода. Регистрационный код такой же; Код получателя немного отличается. Я использую это в службе, которая обновляет флаг Bluetooth-соединения, на который ссылаются другие части приложения.
public void onCreate() {
//...
IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);
this.registerReceiver(mReceiver, filter1);
this.registerReceiver(mReceiver, filter2);
this.registerReceiver(mReceiver, filter3);
}
//The BroadcastReceiver that listens for bluetooth broadcasts
private final BroadcastReceiver BTReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
//Do something if connected
Toast.makeText(getApplicationContext(), "BT Connected", Toast.LENGTH_SHORT).show();
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
//Do something if disconnected
Toast.makeText(getApplicationContext(), "BT Disconnected", Toast.LENGTH_SHORT).show();
}
//else if...
}
};