Я хочу слушать соединение/разъединение с некоторыми конкретными устройствами Bluetooth, чьи MAC-адреса я знаю, но которые не обязательно сопряжены (я не хочу связываться с списком спаренных устройств пользователя и наоборот). Меня интересует только их присутствие, а не общение с ними.Как определить устройство *, которое Bluetooth-устройство вызывает трансляцию ACTION_ACL_CONNECTED?
Это очень хорошо работает с моим кодом ниже! Но моя проблема в том, что я не могу узнать, какое конкретное устройство подключается/отключается, только то, что это происходит с кем-то из них. Как я могу узнать, к какому действию относится это действие?
Сначала я конкретизации объектов для моих двух конкретных физических устройств блютуз и добавить их в намерениях фильтра:
BluetoothDevice myPinkHeadset = mBluetoothAdapter.getRemoteDevice("18:17:0C:EB:9C:81");
BluetoothDevice myPcBluetoothDongle = mBluetoothAdapter.getRemoteDevice("5A:7A:CC:4B:C5:08");
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(myPinkHeadset.ACTION_ACL_CONNECTED);
intentFilter.addAction(myPinkHeadset.ACTION_ACL_DISCONNECTED);
intentFilter.addAction(myPcBluetoothDongle.ACTION_ACL_CONNECTED);
intentFilter.addAction(myPcBluetoothDongle.ACTION_ACL_DISCONNECTED);
Тогда я слушаю для передач о них:
final BroadcastReceiver intentReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Теперь я хочу найти который был подключен и/или отключен, и я не вижу, как я могу это сделать.
Либо 1) Я напрямую использую «BluetoothDevice». Он реагирует на трансляцию в порядке, но это не говорит мне, какой из двух физических устройств имеет действие. Их способ узнать? Bluetooth.getName() не допускается, потому что это не статический класс.
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
}
или 2) Я слушаю оба действия для обоих устройств.
if (myPinkHeadset .ACTION_ACL_CONNECTED.equals(action)) {
Log.v(TAG, "Connected to myPinkHeadset ");
}
else if (myPinkHeadset .ACTION_ACL_DISCONNECTED.equals(action)) {
Log.v(TAG, "Disconnected from myPinkHeadset ");
}
else if (myPcBluetoothDongle .ACTION_ACL_CONNECTED.equals(action)) {
Log.v(TAG, "Connected to myPcBluetoothDongle ");
}
else if (myPcBluetoothDongle .ACTION_ACL_DISCONNECTED.equals(action)) {
Log.v(TAG, "Disconnected from myPcBluetoothDongle ");
Но затем он записывает, что он соединяется с myPinkHeadset даже если это myPvBluetoothDongle я активировать физически. Он всегда идет на тот, который приходит первым из тестов if. Он заботится только о самом действии, а не о том, к какому объекту он относится.
Я видел, что EXTRA_DEVICE «используется в качестве дополнительного дополнительного поля BluetoothDevice в каждом намерении, транслируемом этим классом». Но это только возвращает нуль ко мне:
String extra = intent.getStringExtra(BluetoothDevice.EXTRA_DEVICE);
сделал ту же ошибку с аргументацией, Строка сбивает с толку – NikkyD