我正在开发一个使用 BluetoothChat 示例应用程序的应用程序。在我的主要活动中,我使用了一个网页视图,我在其中加载了一个外部页面。我正在通过与外部页面一起加载的 javascript 处理蓝牙功能。基本上,我通过以下行在 Javascript 和本机代码之间添加了一座桥梁:
myWebView.addJavascriptInterface(new WebAppInterface(this,myWebView), "Android");//I pass a refference to the context and a refference to the webview.
WebAppInterface 是具有我可以从 Javascript 调用的所有公共方法的类。在这个类中,我有如下方法:enableBluetooth、disableBluetooth、listBoundedDevices、connect 等。
我正在使用 BluetoothChat 示例应用程序中的 BluetoothSerialService 类。我的设备必须连接到嵌入式设备,该设备接收命令并根据我给出的输入以不同的方式回复。一个例子是:当我按下 webview 上的按钮时,我调用以下本机代码:
while(true){
out.write(requestKey);//send command - where "out" is the OutputStream
key = in.read();//get response - where "in" is the InputStream
if(key==KEY1){
out.write(activateRFID);//send command - activateRFID
rfidTag = in.read();//get response - RFID Tag
updateUI(rfidTag);//perform function - update the UI with the tag
}
else if(key==KEY2){
out.write(deactivateRFID);//send command - deactivate RFID
response = in.read();//get response
}
else if(key==KEY3){
out.write(anotherCommand);//send command -
response = in.read();//get response
}
}
我想要实现的是将命令发送到另一台设备(请求按下的键)并执行功能。这必须始终发生(为按下的键汇集设备并执行特定功能)。
如何启动 1 个汇集设备的 SINGLE THREAD(写入 OutputStream 并从 InputStream 读取响应)?BluetoothChat 示例应用程序的工作方式略有不同:每当我调用 BluetoothChatSevice.write() 时,我都会通过 ConnectedThread 运行方法获得响应,该方法通过 mHandler 将消息发送到 UI。
欢迎所有建议。