我还不熟悉Android开发,但我目前正在开发一个项目,该项目要求蓝牙接口与蓝牙设备保持持续通信。我一直在阅读Service
,IntentService
& AsynTask
但我仍感到困惑。我想我不应该使用AsyncTask
,因为它用于处理一个非常短的任务?如果我使用IntentService
,如何生成多个线程以检查蓝牙设备是否已连接,发送和接收?
我使用BluetoothViewer作为参考。其中connectThread
是一个线程,当连接到蓝牙设备时,它将启动connectedThread
。
由于
肯
答案 0 :(得分:1)
我对startActivityForResult()使用ACTION_REQUEST_ENABLE意图。然后调用:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == imu.requestCode) {
if (resultCode == RESULT_OK) {
getPairedDevice(); // my function
initializeConnection(); // my function
}
}
}
initializeConnection()创建一个新线程,初始化我的输入套接字,创建另一个用于蓝牙输入处理的线程,并创建我的输出线程。这些功能的片段包括:
myServerSocket = dev.createInsecureRfcommSocketToServiceRecord(uuid);
myBluetooth.cancelDiscovery();
myServerSocket.connect();
myBluetoothInputThread = new BluetoothInputThread(myServerSocket, handler); myBluetoothInputThread.setPriority(Thread.MAX_PRIORITY);
myBluetoothInputThread.start();
myBluetoothSocketOutputStream = myServerSocket.getOutputStream();
BluetoothInputThread扩展Thread以创建一个单独的进程来监视输入流。该类通过Handler.sendMessage
与其父类进行通信