Как передать несколько файлов изображений через разъем Bluetooth - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь отправить несколько файлов изображений через Bluetooth на определенное устройство с помощью MAC-адреса Bluetooth: Ниже приведен код для отправки байта в сокет:

   ArrayList<Uri> uris = new ArrayList<Uri>();
                for (int j = 0; j < imagesList.size(); j++) {
                    File file = new File(imagesList.get(j));
                    // uris.add(Uri.fromFile(file))

  uris.add(FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".my.package.name.provider", file));

 for(int k=0;k<1;k++){

  byte[] send = readBytes(uris.get(position));
   Bitmap bitmap = BitmapFactory.decodeByteArray(send, 0, send.length);
    chatService.write(send);// calling write method of thread in for loop
                }
            }
        }

Ниже указан подключенный поток.класс для потоков ввода и вывода:

    private class ConnectedThread extends Thread {
    private final BluetoothSocket bluetoothSocket;
    private  InputStream inputStream;
    private  OutputStream outputStream;

    public ConnectedThread(BluetoothSocket socket, String socketType) {
        this.bluetoothSocket = socket;
        InputStream tmpIn = null;
        OutputStream tmpOut = null;

        try {
            tmpIn = socket.getInputStream();
            tmpOut = socket.getOutputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }

        inputStream = tmpIn;
        outputStream = tmpOut;

        public void run() {
          try {
            byte[] buffer = new byte[1024 * 4];
            int bytes;
            fileName= new SimpleDateFormat("yyyyMMdd-HHmmss'.jpg'").format(new Date());
            FileOutputStream output = new FileOutputStream("/sdcard/"+fileName);

            //FileOutputStream output = new FileOutputStream("/sdcard/picfling.jpg");

            byte data[] = new byte[4096];
            long total = 0;
            int count;
            while ((count = inputStream.read(data)) != -1) {
                total += count;
                output.write(data, 0, count);
            }
            output.close();

        }catch (Exception e){e.printStackTrace();}
    }

    // write to OutputStream
    public void write(byte[] buffer) {
        try {
            outputStream.write(buffer);

            handler.obtainMessage(MainActivity.MESSAGE_WRITE, -1, -1,
                    buffer).sendToTarget();

        } catch (IOException e) {
        }
    }
    public void cancel() {
        try {
            bluetoothSocket.close();
        } catch (IOException e) {
        }
    }
}

Я могу передать одно изображение с помощью этого кода, но это не работает в случае нескольких изображений.Например, если я вызываю метод write класса connectedThread в цикле for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...