Android подключается к Bluetooth-гарнитуре Blackberry 655+ - PullRequest
0 голосов
/ 12 февраля 2011

Я пытаюсь написать тестовое приложение, которое подключается к Bluetooth-гарнитуре BlackBerry 655+. В основном я хочу подключиться к гарнитуре и зафиксировать нажатие кнопок. Я думаю, что это можно сделать, прочитав поток ввода сокета. Во всяком случае, я получаю некоторые ошибки правильно, когда я пытаюсь подключиться к сокету. Вот код:

BluetoothSocket tmp = null;
try {
    tmp = mDevice.createRfcommSocketToServiceRecord(
                   UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch(IOException e) {}
mSocket = tmp;

mBtAdapter.cancelDiscovery();

try {
    mSocket.connect();   // THIS ONE GIVES A "Service discovery failed" exception
} catch (IOException e1) {
Method m = null;
try {
    m = mDevice.getClass().getMethod(
          "createRfcommSocket", new Class[] {int.class});
} catch (SecurityException e) {
    e.printStackTrace();
} catch (NoSuchMethodException e) {
    e.printStackTrace();
}
try {
    tmp = (BluetoothSocket) m.invoke(mDevice, 1);
} catch (IllegalArgumentException e) {
            e.printStackTrace();
} catch (IllegalAccessException e) {
            e.printStackTrace();
} catch (InvocationTargetException e) {
            e.printStackTrace();
}
mSocket = tmp;

try {
    mSocket.connect();  // THIS ONE GIVES A "Connection refused" EXCEPTION
} catch (IOException e) {
    e.printStackTrace();
}
}

Что я делаю не так? Я уже пробовал разные порты в инструкции m.invoke (mDevice, X), но всегда выдает «Отказ в соединении»

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Здесь у вас есть официальный список с UUID из Bluetooth SIG. Для профиля гарнитуры UUID равен 0x1108, используемый вами UUID является базовым универсальным уникальным идентификатором и используется для SDP.

0 голосов
/ 13 февраля 2011

Я работал с Bluetooth раньше, но с python и Java ME, поэтому я понимаю основы. Хотя я не очень разбираюсь в API Android.

Откуда вы взяли код UUID? Это может быть одной из причин сбоя обнаружения службы.

Каждое устройство Bluetooth может иметь несколько служб, каждая из которых связана с одним портом (или каналом). Если вы работаете в Ubuntu, попробуйте использовать инструменты hci, чтобы узнать, к какому каналу подключаться или какой сервис искать.

...