#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.