Как отправить и получить данные из потока (треда) одного активити, когда находишься в другом
Есть приложение в Android studio, в котором активити "BluetoothActivity.java" отвечает за поиск устройств, их выбор и соединение мобильного телефона с промышленными платами через Bluetooth. В результате соединения образуется новый поток, который реагирует на получение и отправку сообщений:
public class ConnectedThred extends Thread{
private final BluetoothSocket copyBtSocket;
private final OutputStream OutStream;
private final InputStream InStream;
public ConnectedThred(BluetoothSocket socket){
copyBtSocket = socket;
OutputStream tmpOut = null;
InputStream tmpIn = null;
try{
tmpOut = socket.getOutputStream();
tmpIn = socket.getInputStream();
} catch (IOException e){}
OutStream = tmpOut;
InStream = tmpIn;
}
public void run()
{
byte[] buffer = new byte[1024];
int numBytes;
int s=0;
while(true){
try{
numBytes = InStream.read(buffer);
Message readMsg = handler.obtainMessage(Constants.MESSAGE_READ, numBytes, -1, buffer);
readMsg.sendToTarget();
}catch(IOException e){break;}
}
}
public void sendData(byte[] buffer) {
try {
OutStream.write(buffer);
// Share the sent message with the UI activity.
Message writtenMsg = handler.obtainMessage(
Constants.MESSAGE_WRITE, -1, -1, buffer);
writtenMsg.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "Ошибка при передачи данных", e);
// Send a failure message back to the activity.
Message writeErrorMsg =
handler.obtainMessage(Constants.MESSAGE_TOAST);
Bundle bundle = new Bundle();
bundle.putString("toast",
"Не удается передать данные на другое устройство");
writeErrorMsg.setData(bundle);
handler.sendMessage(writeErrorMsg);
}
}
public void cancel(){
try {
copyBtSocket.close();
}catch(IOException e){}
}
public Object status_OutStream(){
if (OutStream == null){return null;
}else{return OutStream;}
}
}
После соединения открывается новое активити, состоящее из меню, которое посылает команды плате управления, а плата в ответ передает параметры, которые должны быть видны пользователю во втором активити.
Каким образом можно передавать команды такому потоку из другого активити и принимать сообщения ответ?