背景蓝牙应用程序 - 线程?

时间:2013-10-03 21:28:14

标签: android multithreading bluetooth

我还不熟悉Android开发,但我目前正在开发一个项目,该项目要求蓝牙接口与蓝牙设备保持持续通信。我一直在阅读ServiceIntentService& AsynTask但我仍感到困惑。我想我不应该使用AsyncTask,因为它用于处理一个非常短的任务?如果我使用IntentService,如何生成多个线程以检查蓝牙设备是否已连接,发送和接收?

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

由于

1 个答案:

答案 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

与其父类进行通信