我正在努力解决蓝牙应用程序的一些问题 . 应用程序通过蓝牙连接到OBD2接口,我的目标是从我的汽车接收一些数据,如Speed,RPM等 . 我制作了一个有按钮的应用程序当我点击它时,我发送消息到OBD2界面,我得到响应 . 但我的目标是不断收到这些数据 . 所以我发现我可以在 onResume()
方法中做到这一点 . 下面是发送消息的简单代码 .
@Override
protected void onResume() {
super.onResume();
HandlerDelay.postDelayed(new Runnable() {
@Override
public void run() {
checkSPDstatus();
}
},500);
}
private void checkSPDstatus(){
if (mmSocket != null){
try {
mmSocket.getOutputStream().write("010C\r".getBytes());
} catch (IOException e) {
Log.e("Status", String.valueOf(e));
}
}
}
但使用我的应用程序崩溃,甚至无法连接BT设备..使用AsyncTask通过BT Im连接我的应用程序 . 我将不胜感激任何帮助 .
关心马特 .
1 回答
好的,我想出了如何做到这一点 . 我使用Service来连接蓝牙设备而不是AsyncTask . 我使用了两个处理程序 . 现在一切正常 . 我可以每500ms发送一次String消息,也可以从OBD2接口获得响应 . 以下是服务类的代码 . 我使用BroadcastReceiver从Service接收数据到我的UI .