Android BluetoothSocket.connect () выбрасывает IOExceptions «Соединение отклонено» и «Ошибка обнаружения службы» - PullRequest
1 голос
/ 29 марта 2011

Моя цель - написать приложение, которое позволит мне управлять моим Motorola Xoom с помощью пульта дистанционного управления Playstation 3 Bluetooth.

Устройство может быть обнаружено нативным приложением Bluetooth и классифицировано как джойстик. Однако я не могу выполнить сопряжение через собственное приложение Bluetooth, потому что приложение требует PIN-код, а устройство не имеет PIN-кода, который мне известен.

Пока я могу программно обнаружить устройство и создать сокет, однако все попытки подключиться к устройству завершаются неудачей.

В обоих случаях: UUID u = UUID.fromString ("00001124-0000-1000-8000-00805f9b34fb");

Предполагается, что это UUID, используемый устройствами HID. Я также использовал метод, описанный на другом сайте , чтобы убедиться, что UUID доступен на устройстве.

Method1 (похоже, у многих людей есть проблемы с этим):

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(u);
socket.connect();

Результат: IOException "Обнаружение службы не удалось"

Method2 (принятый обходной путь для Method1. Я также пробовал порты 1-100):

Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
BluetoothSocket socket = (BluetoothSocket) m.invoke(device, 1);
socket.connect();

Результат: IOException «Отказ в соединении»

Я пробовал этот код, используя 3 устройства (плюс их UUID):

  • Playstation Remote

    00001124-0000-1000-8000-00805f9b34fb

    00001200-0000-1000-8000-00805f9b34fb

  • Nintento Wiimote

    00001000-0000-1000-8000-00805f9b34fb

    00001124-0000-1000-8000-00805f9b34fb

    00001200-0000-1000-8000-00805f9b34fb

  • Microsoft Bluetooth цифровая клавиатура (который успешно соединяется с помощью булавки через приложение natvie bluetooth)

    00001000-0000-1000-8000-00805f9b34fb

    00001124-0000-1000-8000-00805f9b34fb

    00001200-0000-1000-8000-00805f9b34fb

1 Ответ

1 голос
/ 30 марта 2011

Чтобы иметь возможность подключаться к устройствам, которые вы должны подключить через профиль HID, вы пытаетесь подключиться через SPP (профиль последовательного порта) к UUID для HID и т. Д., Это не будет работать. Кроме того, эти устройства имеют некоторые «пользовательские» дескрипторы протокола HID, которые позволяют ему работать с этими предварительно сопряженными игровыми консолями, вам необходимо получить доступ к ним, чтобы иметь возможность управлять Xoom с помощью этих контроллеров

...