Привет всем. Я пишу код для обработчика, который обрабатывает функцию и вызывает ее каждые 5 секунд. Я использовал код ниже, но он показывает мне следующую ошибку. основная идея заключается в том, чтобы сначала запустить его через 5 секунд и присвоить значение Bluetooth_service , и служба Bluetooth отобразит это в панели уведомлений. панель уведомлений работает нормально только для значения. теперь через это я хочу изменить значение через 5 секунд.
error: incompatible types: <anonymous BleReadCallback> cannot be converted to Runnable
mHandler.postDelayed(this, 5000);
код
Handler mHandler = new Handler();
Runnable mToastRunnable = new Runnable() {
@Override
public void run() {
if(manager.getConnectedDevices().size()<=0){
Toast.makeText(MainActivity.this,"No connected devices", Toast.LENGTH_LONG).show();
return;
}
BleDevice device = manager.getConnectedDevices().get(0);
Map<String , String> reciveData = getSpecificServiceInfo(device , CHARACTERISTIC_READABLE);
for (Map.Entry<String, String> e : reciveData.entrySet()){
manager.read(device, e.getKey(), e.getValue(), new BleReadCallback() {
@Override
public void onRead(byte[] data, BleDevice device) {
Toast.makeText(MainActivity.this, "Read success! data: " + new String(data), Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this , BluetoothService.class);
intent.putExtra("inputString" ,new String(data));
startService(intent);
mHandler.postDelayed(this, 5000);
// mHandler.postDelayed(MainActivity.this.getApplication() , 5000);
TextView textView = findViewById(R.id.textView);
textView.setText(new String(data));
}
@Override
public void onFail(int failCode, String info, BleDevice device) {
// Toast.makeText(MainActivity.this, "Read fail! data: " + info, Toast.LENGTH_LONG).show();
}
});
}
}
};
private void readData(){
mToastRunnable.run();
}
Служба Bluetooth:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String input = intent.getStringExtra("inputString");
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Bluetooth Services")
.setContentText(input)
.setSmallIcon(R.drawable.ic_android)
.setContentIntent(pendingIntent)
.build();
startForeground(1, notification);
return START_NOT_STICKY;
}