Проблемы с Reflection для createRfcommSocket - PullRequest
2 голосов
/ 13 октября 2011

Это странно.Я пытаюсь настроить Bluetooth SPP на Android Droid X 2.3.4.Я включил несколько разных способов от попытки открыть сокет rfcomm, один из которых - отражение (необходимо для поддержки определенных телефонов)

Однако с Droid X происходит странная вещь.Когда я подключаюсь в первый раз к устройству Bluetooth, мое приложение открывается и сначала пытается выполнить SPP:

Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, Integer.valueOf(1));

И если он не может найти метод, он пытается нормально

mmSocket = mmDevice.createRfcommSocketToServiceRecord(SerialPortServiceClass_UUID);

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

Если я закрою приложение, выключите и снова включите адаптер Bluetooth на телефоне и повторите попытку, чтобы он работал правильно.

Я в растерянности, что происходит, поэтому любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 17 октября 2011

Ну, я придумала исправление типа bandaid, которое меня не устраивает, но будет работать, пока я не найду основную причину или лучшее решение.Я просто делаю объект общих предпочтений, который содержит «уровень» того, какие методы попробовать.

Уровни помечены как 1-4, и если уровень установлен на число <= до текущего уровня, он попытается использовать этот метод, если соединение не было установлено.</p>

if(level<=1){
success set level = 1
fail set level = 0
}

if(level<=2){
success set level = 2
fail set level = 0
}

...


if(level<=4){
success set level = 4
fail set level = 0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...