Android Bluetooth не отображается диалоговое окно сопряжения

Я пытаюсь подключить свой HTC myTouch 3G к устройству Bluetooth, которое будет передавать данные на телефон через SPP. Я просмотрел примеры чата и обнаружил, что в них не хватает того, что мне нужно, из-за высокой скорости передачи данных, которая мне понадобится, а пример чата блокирует поток пользовательского интерфейса. Но при этом моя основная проблема заключается в том, что когда я пытаюсь подключить устройство, которое в настоящее время не сопряжено, API Bluetooth сообщает, что он автоматически откроет диалоговое окно, если устройству требуется код сопряжения. Такого никогда не бывает. Как мне убедиться, что это так? Вот мой код ...

BluetoothSocket btSocket;
String macAddress = data.getStringExtra("mac");
Log.d(TAG, "Found Device " + macAddress);

// Get the Bluetooth adapter on the device
BluetoothAdapter bta = ((MyApplication)this.getApplication()).getBtState();
BluetoothDevice btDevice = bta.getRemoteDevice(macAddress);
BluetoothSocket tmp = null;
try {
    tmp = btDevice.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch (IOException e) {
    e.printStackTrace();
}
if (tmp != null) {
    btSocket = tmp;
    bta.cancelDiscovery();

    try {
        btSocket.connect();
    } catch (IOException e) {
        try {
            Log.e(TAG, "------------- Close IOException");
            btSocket.close();
        } catch (IOException e2) {
            Log.e(TAG, "unable to close() socket during connection failure", e2);
        }
    }
}   

Вот и ошибка, которую я тоже получаю:

ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Adapter:DeviceCreated from /org/bluez/14284/hci0
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Adapter:PropertyChanged from /org/bluez/14284/hci0
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B
DEBUG/BluetoothService(149): updateDeviceServiceChannelCache(00:02:5B:00:A5:0B)
DEBUG/BluetoothService(149):     uuid(application): 00001101-0000-1000-8000-00805f9b34fb 1
DEBUG/BluetoothService(149): Making callback for 00001101-0000-1000-8000-00805f9b34fb with result 1
VERBOSE/BluetoothEventRedirector(13691): Received android.bleutooth.device.action.UUID
ERROR/MainApp(14272): ------------- Close IOException
ERROR/BluetoothService.cpp(149): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
ERROR/BluetoothEventLoop.cpp(149): event_filter: Received signal org.bluez.Device:PropertyChanged from /org/bluez/14284/hci0/dev_00_02_5B_00_A5_0B
VERBOSE/BluetoothEventRedirector(13691): Received android.bleutooth.device.action.UUID

Одна странная вещь, которая кажется ошибкой, заключается в том, что если я запускаю этот код, а он терпит неудачу, я выключаю Bluetooth и включаю он снова на устройстве отображается как пара в стеке. Насколько я понимаю, чип Bluetooth на myTouch - это 2.1, а чип, к которому мы пытаемся подключиться, - 1.2

6
задан Brian Tompsett - 汤莱恩 17 February 2019 в 08:35
поделиться