Я пытаюсь отправить несколько файлов изображений через 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.