Как отправить и получить данные из потока (треда) одного активити, когда находишься в другом

Есть приложение в 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;}
    }
}

После соединения открывается новое активити, состоящее из меню, которое посылает команды плате управления, а плата в ответ передает параметры, которые должны быть видны пользователю во втором активити.

Каким образом можно передавать команды такому потоку из другого активити и принимать сообщения ответ?


Ответы (0 шт):