2016-10-22 12 views
3

На данный момент я разрабатываю новое приложение для Android. Мне требуется Bluetooth для этого приложения. Каждый раз, когда я хочу подключить два (парных) устройства через систему serverocket/socket, я не могу создать рабочий сокет. Он всегда возвращает:Какой UUID должен быть выбран для подключения Bluetooth на Android

java.io.IOException: read failed, socket might closed or timeout, read ret: -1 

Так что мой вопрос: пользуюсь ли я неправильным UUID? Если это не так. Есть ли у вас какие-либо другие предложения, что может быть неправильным?

public Accept(BluetoothAdapter bt, BluetoothDevice device, Context context) { 
      try { 
       BluetoothAdapter.getDefaultAdapter().cancelDiscovery(); 
       BluetoothServerSocket tmp = null; 
       try { 
        UUID uuid = UUID.fromString("00001101-0000-1000-8000-00294F9B3423"); 
    //Here is the point when it doesn't work... 
        tmp = bt.listenUsingRfcommWithServiceRecord(context.getResources().getString(R.string.bt_string_for_profile_image), uuid); 
       } catch (Exception e) { 
       } 
       mmServerSocket = tmp; 

       bt_device = device; 
      } catch (Exception e) { 
      } 
     } 

Благодарим за помощь.

ответ

0

Я думаю, что вы здесь не принимаете заявление. После прослушивания следующего утверждения должно быть tmp.accept(). Это решит вашу проблему. Таким образом, ваш код должен выглядеть следующим образом:

try { 
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00294F9B3423"); 
Bluetoothsocket clientSocket; 
//Here is the point when it doesn't work... 
tmp = bt.listenUsingRfcommWithServiceRecord(context.getResources().getString(R.string.bt_string_for_profile_image), uuid); 
clientSocket = tmp.accept(); 
} 

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

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

+0

Прежде всего: Благодарим вас за ответ. Но мне жаль говорить, что это не решило мою проблему. Я, вероятно, не дал вам достаточно кода. Мой код выглядит так же, как тот, который вы видите здесь: [link] (https://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingAsAServer). Поэтому я обрабатываю его как Thread. И я вызываю метод accept() - Methode в методе run() этого потока. – Swittmann

+0

Но как только я назову этот метод bt.listenUsingRfcommWithServiceRecord (context.getResources(). GetString (R.string.bt_string_for_profile_image), uuid); канал thr serversocket равен -1, поэтому я думаю, что это проблема с этим методом? – Swittmann

+0

Ohhh .. Извините, я не знал вашего полного кода ... Теперь, первое, что вы можете сделать здесь, это проверить код ошибки/исключение, возвращаемое функцией прослушивания. Это поможет нам понять причину ошибки. Когда я прочитал ссылку, предоставленную вами, слушание может исключать исключение только в таких случаях: «при ошибке, например, Bluetooth недоступен или недостаточно разрешений или используемого канала». – aksonlyaks

 Смежные вопросы

  • Нет связанных вопросов^_^