Android-соединение Bluetooth – обнаружено обнаружение службы

Я пытаюсь создать базовое приложение bluetooth для тестирования устройства.

Я получил код от разработчика. Вот ссылка: http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices

Вот часть моего кода потока:

public void run() { mBluetoothAdapter.cancelDiscovery(); Log.i(TAG, "Discovery Cancel!"); try { Log.i(TAG, "Connection Started"); mmSocket.connect(); Log.i(TAG, "Connection Ended"); } catch (IOException e) { try { Log.e(TAG, "Connection Failed", e); mmSocket.close(); } catch (IOException e2) { Log.e(TAG, "Connection Close Failed", e2); } return; } 

Что бы я ни попробовал mmSocket.connect(); Никогда не работает. Всегда выдает исключение IOException, и я получаю этот журнал из моего логарифма:

java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)

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

Android Bluetooth: обнаружено обнаружение службы, подключение к настольному компьютеру / ноутбуку

Обнаружение сбоя службы с помощью Bluetooth на Android

Соединение Bluetooth на Android ICS невозможно

Android Bluetooth java.io.IOException: Connection отказался?

Btw Я работаю над android ics 4.0.4.

Я знаю, что это не проблема с устройством, потому что я пробовал это приложение на разных устройствах.

Solutions Collecting From Web of "Android-соединение Bluetooth – обнаружено обнаружение службы"

Я не знаю, и я до сих пор не понимаю вещи UUID, но проблема была UUID. Я использую UUID, который я получил из журналов ядра, и это 00001105-0000-1000-8000-00805F9B34FB .

Его работа для меня

 BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID); Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class}); socket = (BluetoothSocket) m.invoke(device, 1); bluetoothAdapter.cancelDiscovery(); socket.connect(); 

Следующий фрагмент кода работает для меня. Попробуй…

 BluetoothDevice mmDevice; boolean temp = mmDevice.fetchUuidsWithSdp(); UUID uuid = null; if( temp ){ uuid = mmDevice.getUuids()[0].getUuid(); } tmp = device.createRfcommSocketToServiceRecord(uuid); 

Я работал с аналогичным процессом обучения. Я попытался документировать то, что я узнал в серии примеров.

Это может помочь:

http://digitalhacksblog.blogspot.com/2012/05/android-example-bluetooth-simple-spp.html

Это настройка простой связи между Android-устройством и ПК через Bluetooth. Примеры содержат файлы Android, а также сервер SPP в Java и один в perl для ПК.

Надеюсь это поможет.

Убедитесь, что ваше приложение не пытается подключиться, когда адаптер занят обнаружением: похоже, проблема заключалась в том, что до того, как я позвонил

 clientSocket.connect() 

Мне нужно было позвонить

 btAdapter.cancelDiscovery() 

Это помогло решить ту же проблему для меня Matts Reco

Вам нужно будет предоставить действительный UUID для обнаружения службы.

 BluetoothSocket sock = bdevice.createRfcommSocketToServiceRecord(VALID_UUID); 

Существует несколько распространенных UUID для различных стандартных (по умолчанию) bluetooth-сервисов (Handsfree, File transfer и т. Д.).

Глянь сюда

Попробуйте использовать образец образца Bluetooth Chat, предоставленный как часть SDK, если вы просто пытаетесь протестировать устройство. Этот код, который вы пытаетесь использовать, и тот, который указан на сайте developer.android.com, включен в пример Bluetooth Chat.