Ошибка при отправке файлов через Bluetooth в Android?

Я рассмотрел этот вопрос, но все упоминание о решении не помогло мне.

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

// BluetoothConnector ( полный код )

Class<?> clazz = tmp.getRemoteDevice().getClass(); Class<?>[] paramTypes = new Class<?>[] {Integer.TYPE}; Method m = clazz.getMethod("createRfcommSocket", paramTypes); Object[] params = new Object[] {Integer.valueOf(1)}; fallbackSocket = (BluetoothSocket) m.invoke(tmp.getRemoteDevice(), params); 

После выполнения запроса на соединение и подключения, я пытаюсь отправить данные по выходному потоку на другое устройство через этот фрагмент кода.

// Код выходного потока ( полный код)

 public void write(byte[] buffer) { try { Log.i(TAG, "write"); mmOutStream.write(buffer); } catch (IOException e) { Log.e(TAG, "Exception during write", e); } 

Но я не могу отправить данные, как только mmOutStream.write (buffer); Называется дающей следующую ошибку.

// Журнал ошибок ( полный журнал )

 09-21 16:21:52.829 6262-6262/com.example.aadi.myapplication D/BT_app﹕ connection_done 09-21 16:21:52.829 6262-6871/com.example.aadi.myapplication I/BT_app﹕ BEGIN mConnectedThread 09-21 16:21:52.829 6262-6871/com.example.aadi.myapplication I/BT_app﹕ write 09-21 16:21:52.829 6262-6262/com.example.aadi.myapplication D/BT_app﹕ msg write :[B@4265cd70 09-21 16:22:50.149 6262-6823/com.example.aadi.myapplication W/BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback 09-21 16:22:50.159 6262-6823/com.example.aadi.myapplication D/BluetoothSocket﹕ connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[81]} 09-21 16:22:50.679 6262-6823/com.example.aadi.myapplication W/BT_app﹕ Fallback failed. Cancelling. java.io.IOException: read failed, socket might closed or timeout, read ret: -1 at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:505) at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:482) at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:324) at com.example.aadi.myapplication.BluetoothConnector$FallbackBluetoothSocket.connect(BluetoothConnector.java:202) at com.example.aadi.myapplication.BluetoothConnector.connect(BluetoothConnector.java:64) at com.example.aadi.myapplication.BluetoothService$ConnectThread.run(BluetoothService.java:218) 09-21 16:22:50.679 6262-6823/com.example.aadi.myapplication I/BT_app﹕ Attempting to connect to Protocol: 0000112f-0000-1000-8000-00805f9b34fb 

Пожалуйста, скажите мне, что я делаю неправильно в коде выше. Возможно ли передавать файлы через Bluetooth без реализации кода на стороне сервера?

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

  09-21 16:21:47.329 6262-6822/com.example.gauravdubey.myapplication I/BT_app﹕ BEGIN mConnectedThread 09-21 16:21:47.329 6262-6822/com.example.gauravdubey.myapplication I/BT_app﹕ write 09-21 16:21:47.329 6262-6262/com.example.gauravdubey.myapplication D/BT_app﹕ msg write :[B@425c9958 09-21 16:21:47.329 6262-6763/com.example.gauravdubey.myapplication D/BT_app﹕ setState() 2 -> 3 after a while 09-21 16:21:47.359 6262-6262/com.example.gauravdubey.myapplication D/BT_app﹕ ConnectThread 09-21 16:21:47.359 6262-6262/com.example.gauravdubey.myapplication D/BT_app﹕ setState() 0 -> 2 09-21 16:21:47.359 6262-6262/com.example.gauravdubey.myapplication D/BT_app﹕ state is :null 09-21 16:21:47.359 6262-6823/com.example.gauravdubey.myapplication D/ BT_app﹕ ConnectThread---->run() 

Кажется, что ваш единственный поток ConnectThread вызывается несколько раз. Попробуйте проверить свой код, чтобы поток выполнялся только один раз. Надеюсь, что это сработает.