Я работаю над приложением, которое получает данные Bluetooth. Приложение содержит действие и несколько фрагментов, один фрагмент имеет обзорное окно с некоторыми элементами, а каждый элемент имеет кнопку переключения, текстовое представление и изображение. Я хочу установить флажок для конкретной кнопки при получении сообщения.
например, если входящее сообщение содержит «1», кнопка переключения в положении 1 должна быть включена.
BluetoothConnectionSericve.java:
/**
*Finally the ConnectedThread which is responsible for maintaining
* the BTConnection, Sending the data,and receiving incoming data
* through input/output streams respectively.
*/
private class ConnectedThread extends Thread{
private final BluetoothSocket bluetoothSocket;
private final InputStream inputStream;
private final OutputStream outputStream;
public ConnectedThread(BluetoothSocket socket){
Log.d(TAG,"ConnectedThread: Starting.");
bluetoothSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
//Dismiss the progressDialog when connection is established
progressDialog.dismiss();
try {
tmpIn = bluetoothSocket.getInputStream();
tmpOut = bluetoothSocket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
inputStream = tmpIn;
outputStream = tmpOut;
}
public void run(){
byte[] buffer = new byte[1024]; //buffer store the stream
int bytes; //bytes returned from read()
//Keep listening to the inputStream until an exception is occurs
while (true){
//Read from the input stream
try {
bytes = inputStream.read(buffer);
String inComingMessage = new String(buffer, 0, bytes);
Log.d(TAG,"InputStream: " + inComingMessage);
Intent incomingMessageIntent = new Intent("incomingMessage");
incomingMessageIntent.putExtra("receivedMessage", inComingMessage);
LocalBroadcastManager.getInstance(context).sendBroadcast(incomingMessageIntent);
} catch (IOException e) {
Log.d(TAG, "write: Error listening to inputStream: " + e.getMessage());
break;
}
}
}
Приемник вещания:
LocalBroadcastManager.getInstance(context).registerReceiver(receiver, new IntentFilter("incomingMessage"));
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// new push notification is received
msg = intent.getStringExtra("receivedMessage");
if (msg.equals("1")){
//Set the toggle button at position 1 to true
}
}
}