2

我还是 Android 开发的新手,但我目前正在开发一个需要蓝牙接口与蓝牙设备持续通信的项目。我一直在阅读,Service但我仍然感到困惑。我认为我不应该使用它,因为它是为了处理一个非常短的任务?如果我使用,如何产生多个线程来检查蓝牙设备是否已连接、发送和接收?IntentServiceAsynTaskAsyncTaskIntentService

我使用BluetoothViewer作为参考。其中connectThread有一个线程,当连接到蓝牙设备时,它将启动connectedThread.

谢谢

4

1 回答 1

1

我使用 ACTION_REQUEST_ENABLE 意图来 startActivityForResult()。这将导致调用:

    @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 与其父类通信

于 2013-10-03T22:15:20.417 回答