Мне нужно получать данные из последовательного порта usb всякий раз, когда на нем записаны данные.Запуск прослушивателя в фоновом режиме в android
Для этого я создал службу, которая имеет прослушиватель onread, который считывает данные из последовательного порта, когда доступны данные.
Я добавляю текстовое представление с полученными данными в свою деятельность. Но я ничего не вижу.
Служба работает, но не может получать данные.
Ниже приведен мой код класса обслуживания.
public class BroadcastService extends Service {
private static final String TAG = "BroadcastService";
public static final String BROADCAST_ACTION = "com.example.flowtest.displayevent";
private final Handler handler = new Handler();
// DatabaseHandle db = new DatabaseHandle(this);
Intent intent;
int counter = 0;
int i = 0, flag = 0;
String d = "a";
byte[] buf = new byte[5];
byte[] start = new byte[21];
byte[] rbuf;// updated
String str;
Physicaloid mPhysicaloid = new Physicaloid(this);
@Override
public void onCreate() {
super.onCreate();
intent = new Intent(BROADCAST_ACTION);
// mPhysicaloid.open();
}
@Override
public void onStart(Intent intent, int startId) {
mPhysicaloid.open();
handler.removeCallbacks(getdata);
handler.post(getdata);
}
private Runnable getdata = new Runnable() {
public void run() {
Log.d("service", "in service");
mPhysicaloid.addReadListener(new ReadLisener() {
@Override
public void onRead(int size) {
// TODO Auto-generated method stub
byte[] rbuf = new byte[size];
mPhysicaloid.read(rbuf, size);
try {
str = new String(rbuf, "UTF-8");
if (str.equals(null)) {
flag = 0;
intent.putExtra("inputString", "no luck");
sendBroadcast(intent);
} else {
flag = 1;
intent.putExtra("inputString", str);
sendBroadcast(intent);
}
// sendBroadcast(intent);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
};
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
// handler.removeCallbacks(sendUpdatesToUI);
super.onDestroy();
}
}
Сейчас моя деятельность,
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
private void updateUI(Intent intent) {
// TODO Auto-generated method stub
String data = intent.getStringExtra("inputString").toString();
if(data.equals("NORMAL")){
i = new Intent(MainActivity.this,ModeScreenActivity.class);
startActivity(i);
finish();
}
else{
}
tvAppend(tv1,data);
}
};
Пожалуйста, помогите мне. Я хочу использовать фоновый сервис, поскольку последовательные данные будут использоваться многими действиями, и я не хочу писать onread listener во всех действиях. Пожалуйста, помогите –
Я пробовал различные возможные способы, доступные в Интернете, но все же я застрял с этой проблемой. –
Вы, вероятно, должны преследовать это с поставщиками «Физиоидов» в первую очередь. –