Bluetooth-сервер Android - клиент Java Bluecove. UUID?

Я пишу приложение для связи между моим смартфоном и компьютером с помощью устройства Bluetooth.

Я использую Bluecove для управления Bluetooth на компьютере и Android API для моего устройства Android.

Однако, когда я отлаживаю, ничего не происходит. Я думаю, что проблема в том, что UUID неверен. Я не уверен, как заставить устройства идентифицировать друг друга, чтобы установить соединение.

Я прочитал некоторые другие "вопросы" об этих тегах, но то, что я пробовал, не решило мою проблему:

Вот что я написал до сих пор:

  1. Для 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();
    

    }

  2. Для 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

Другие вопросы по тегам