Bluetooth-сервер Android - клиент Java Bluecove. UUID?
Я пишу приложение для связи между моим смартфоном и компьютером с помощью устройства Bluetooth.
Я использую Bluecove для управления Bluetooth на компьютере и Android API для моего устройства Android.
Однако, когда я отлаживаю, ничего не происходит. Я думаю, что проблема в том, что UUID неверен. Я не уверен, как заставить устройства идентифицировать друг друга, чтобы установить соединение.
Я прочитал некоторые другие "вопросы" об этих тегах, но то, что я пробовал, не решило мою проблему:
- Простой приемник данных Bluetooth для Android
- Android: получение UUID устройства Bluetooth
- Так далее...
Вот что я написал до сих пор:
Для Android (Сервер) (это функция, которая будет устанавливать соединение)
public void connectSocket () {blueAdapter.cancelDiscovery (); // Отмена обнаружения, потому что это замедлит соединение
final BluetoothServerSocket serverSocket; BluetoothServerSocket sSocket= null; try{ sSocket = blueAdapter.listenUsingRfcommWithServiceRecord("BluetoothJANE", MY_UUID); }catch(IOException e){} serverSocket = sSocket; Thread acceptThread = new Thread(new Runnable() { @Override public void run() { BluetoothSocket socket = null; while(true){ try{ socket = serverSocket.accept(); }catch(IOException e){ break; } if(socket != null){ try{ iStream = socket.getInputStream(); oStream = socket.getOutputStream(); } catch(IOException e){} } } } }); acceptThread.start();
}
Для Java-приложения на ПК (это конструктор класса (он находится в независимом потоке), который будет управлять подключением Bluetooth)
public ModuleBluetooth () {
StreamConnectionNotifier notifier = null; StreamConnection connection = null; try { blueDevice = LocalDevice.getLocalDevice(); blueDevice.setDiscoverable(DiscoveryAgent.GIAC); String url = "btspp://localhost:" + MY_UUID.toString() + ";name=RemoteBluetooth"; notifier = (StreamConnectionNotifier) Connector.open(url); } catch (BluetoothStateException e) { System.out .println("ModuleBluetooth: Error getting the bluetooth device"); } catch (IOException e) { } System.out.println("waiting for connection..."); try { connection = notifier.acceptAndOpen(); System.out.println("Conenction created"); } catch (IOException e) { System.out.println("Can not create the connection"); }
}
Может ли кто-нибудь помочь мне? Любые мысли будут очень цениться.
Я также пытался использовать некоторые функции для получения UUID (в Android), такие как [fetchUuidsWithSdp][2] (и связанные с ними функции), но eclipse не распознает эти функции (кажется, что они не существуют в " мой "API).
http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
1 ответ
Попробуйте этот пример, http://luugiathuy.com/2011/02/android-java-bluetooth/. У меня также была проблема, связанная с UUID, в этом примере преобразование UUID в 00001101-0000-1000-8000-00805F9B34FB работало "из коробки". Смотрите эту ссылку: http://www.avetana-gmbh.de/avetana-gmbh/produkte/doc/javax/bluetooth/UUID.html