Intereting Posts
Как позволить ImageView и TextView одинаковой высоты Android – как сделать сложное приложение с вкладками с представлениями Тесты Gradle для Android Создание растрового изображения из HTML в Android Android Share Image Не очищает предварительный просмотр с ранее разделяемого элемента Как создать локализованное время назад String на Android Как добавить кнопку непосредственно в Уведомление на Android Wear Повторный запрос разрешения после изменения ориентации Исключено исключение, созданное финализатором java.lang.IllegalStateException: Binding завершено Есть ли способ уменьшить расстояние между значками элементов действия на панели действий? Android SDK Manager не будет обновлен: подключение к https://dl-ssl.google.com отклонено Обнаруживать, разрешает ли клиент встроенное воспроизведение мультимедиа для видео HTML5 Как разбирать этот массив JSON в андроиде Вставьте отметку времени в базу данных через ContentValues Как показать круговой текст с помощью TextView в Android

Отправка файла Bluetooth для Android

Я пытаюсь отправить файл через Bluetooth в Android-устройстве. Я сделал открытие, подключение и сделал разъем Bluetooth. Проблема в том, что когда я пишу массив байтов в выходном потоке сокета bluetooth, получающая сторона ничего не получает, хотя признает, что что-то отправляется.

Вот что я делаю (плохой адаптер Bluetooth)

Пожалуйста, порекомендуйте.

try { BluetoothDevice dev = bad.getRemoteDevice(a); bad.cancelDiscovery(); dev.createRfcommSocketToServiceRecord(new UUID(1111, 2222)); Method m = dev.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); bs = (BluetoothSocket) m.invoke(dev, Integer.valueOf(1)); bs.connect(); tmpOut = bs.getOutputStream(); }catch(Exception e) { } File f = new File(filename); byte b[] = new byte[(int) f.length()]; try { FileInputStream fileInputStream = new FileInputStream(f); fileInputStream.read(b); }catch(IOException e) { Log.d(TAG, "Error converting file"); Log.d(TAG, e.getMessage()); } try { tmpOut.write(b); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Solutions Collecting From Web of "Отправка файла Bluetooth для Android"

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

Сторона клиента:

 UUID serialUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); BluetoothDevice btDevice = btAdapter.getRemoteDevice(BTAddress); // Get the BTAddress after scan BluetoothSocket btSocket = btDevice.createRfcommSocketToServiceRecord(SERIAL_UUID); btSocket.connect(); InputStream iStream = btSocket.getInputStream(); OutputStream oStream = btSocket.getOutputStream(); 

Сторона сервера:

 UUID serialUUID = new UUID("1101", true); String serviceURL = "btspp://localhost:" + serialUUID + ";name=Android BT Server;authorize=false;authenticate=false"; StreamConnectionNotifier connectionNotifier = (StreamConnectionNotifier) Connector .open(serviceURL); // Blocking method will wait for client to connect StreamConnection connection = connectionNotifier.acceptAndOpen(); RemoteDevice remoteDevice = RemoteDevice.getRemoteDevice(connection); InputStream btInput = connection.openInputStream(); OutputStream btOutput = connection.openOutputStream(); 

Почему бы не использовать стандартный вызов api вместо вызова через отражение, например:

 BluetoothSocket socket = destination .createRfcommSocketToServiceRecord(new UUID(...)) ; 

Также ваш блок блокировки пуст. Вы уверены, что сокет был подключен без каких-либо исключений? Connect вызовет исключение IOException, если соединение по какой-то причине не получилось. См. Эту ссылку

Возможно, из-за того, что dev и bs выходят за рамки, прежде чем использовать tmpout, потому что они объявлены в вашем блоке try / catch.