Android bluetooth UUID для последовательного порта вызывает исключение

#android #bluetooth #uuid

#Android #bluetooth #uuid

Вопрос:

Я использую образец проекта для разработки Android BluetoothChat.
http://developer.android.com/resources/samples/BluetoothChat/index.html Я запускаю его на Archos 43 и пытаюсь установить связь с последовательным адаптером Bluetooth. Для связи с адаптером мне нужно использовать UUID 00001101-0000-1000-8000-00805F9B34FB. Однако, когда я это делаю, я получаю исключение с нулевым указателем в этой строке: socket = mmServerSocket.accept();

Если я использую другой UUID, у меня нет этой проблемы, однако я не могу подключиться к последовательному адаптеру. Если я использую Motorola Droid вместо Archos 43, у меня нет этой проблемы.

Из некоторых сообщений об ошибках я думаю, что Archos использует стек bluez.

Есть идеи, почему комбинация этого UUID и стека может вызвать исключение при вызове функции accept ()?

Вот окружающий код (вы можете получить весь исходный код по ссылке выше)

     public void run() {
        if (D) Log.d(TAG, "BEGIN mAcceptThread"   this);
        setName("AcceptThread");
        BluetoothSocket socket = null;

        // Listen to the server socket if we're not connected
        while (mState != STATE_CONNECTED) {
            try {
                // This is a blocking call and will only return on a
                // successful connection or an exception
                socket = mmServerSocket.accept();
            } catch (IOException e) {
                Log.e(TAG, "accept() failed", e);
                break;
            }
  

Некоторые сообщения об ошибках из журнала:

04-25 21:05:33.278: ОШИБКА / BluetoothChatService (3321): сбой функции прослушивания ()

04-25 21:05:33.278: ОШИБКА / BluetoothChatService(3321): исключение java.io.IOException: не удается зарегистрировать запись SDP для BluetoothChat

04-25 21:05:33.278: ОШИБКА / BluetoothChatService (3321): в Android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord.listenUsingRfcommWithServiceRecord.(BluetoothAdapter.java:778)

Ответ №1:

Вы изменили конструктор «class AcceptThread», где вы используете эту функцию «listenUsingRfcommWithServiceRecord()»?

Я использую тот же UUID на archos 70, и я не получаю никаких ошибок подключения Bluetooth.(Попробуйте перезапустить archos, если он работает с перебоями.) Я хотел добавить это в качестве комментариев по некоторым причинам, которые я не вижу комментарий!

Комментарии:

1. Спасибо за предложение. Глядя на конструктор, он выдает исключение при вызове listenUsingRfcommWithServiceRecord()

2. Из документации это происходит, когда «по ошибке, например, Bluetooth недоступен, или недостаточно разрешений, или используется канал»

3. Я отредактировал свой OP, потому что сообщения об ошибках не были актуальны. Важны новые сообщения, в частности, не удается зарегистрировать запись SDP для BluetoothChat. Есть другие предложения?

4. В «AndroidManifest.xml «у вас должна быть следующая строка <использует-разрешение android:name=»android.разрешение. BLUETOOTH» />

5. @m4n07: О каких изменениях в классе «AcceptThread» вы говорите. Пожалуйста, уточните.

Ответ №2:

В итоге проблема была решена с помощью обновления прошивки от Archos.