Я пишу приложение Bluetooth, ориентированное на API 7 (у меня устройство API 8 - 2.2). Когда я пытаюсь подключить разъем Bluetooth, я получаю всплывающее окно, предлагающее пользователю выполнить сопряжение с устройством, но иногда подключение прерывается или прерывается. В этих случаях всплывающее окно исчезает, ничего не щелкая, но в настройках Bluetooth устройство отображается как «Сопряжено, но не подключено».
Если я подключаюсь к устройству Bluetooth напрямую из настроек Bluetooth, этого не происходит; устройство показывает «Сопряжено, но не подключено», только если пользователь действительно нажимает «Сопряжение».
Вот код, который создает соединение, кажется достаточно простым:
try {
BluetoothDevice btDevice = _btAdapter.getRemoteDevice(address);
_btAdapter.cancelDiscovery();
sock = btDevice.createRfcommSocketToServiceRecord(SafConstants.BT_UUID);
sock.connect();
} catch (IOException e) {
logger.error("socket connection failed", e);
if (sock != null) {
try {sock.close();}
catch (IOException e1) {}
}
}
Это проблема с Android или я должен делать что-то еще? Я искал API, чтобы посмотреть, смогу ли я удалить устройство из набора связанных устройств (если соединение не установилось), но кажется, что это невозможно.
РЕДАКТИРОВАТЬ: Одна вещь, которую я замечаю, это то, что, когда я пытаюсь подключиться через мое приложение, на моем ноутбуке появляется сообщение о том, что он пытается получить доступ к службе гарнитуры перед сопряжением. Через несколько секунд на моем ноутбуке появится сообщение о том, что устройство пытается выполнить сопряжение.
Если я подключаюсь через настройки Bluetooth, я получаю приглашение сначала выполнить сопряжение устройства, а затем, после его успешного завершения, появляется сообщение о том, что устройство пытается получить доступ к службе гарнитуры. Я не уверен, важно это или нет ...