2013-10-03 147 views
1

我對Android開發還不熟悉,但我目前正在開發一個項目,該項目需要藍牙接口與藍牙設備進行持續通信。我一直在閱讀Service,IntentService & AsynTask但我仍感到困惑。我認爲我不應該使用AsyncTask,因爲它意味着處理一個非常短的任務?如果我使用IntentService,如何產生多個線程來檢查藍牙設備是否連接,發送和接收?背景藍牙應用程序 - 線程?

我使用BluetoothViewer作爲我的參考。在它connectThread是一個線程,當連接到藍牙設備,然後將啓動connectedThread

感謝

回答

0

我使用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 extends Thread創建一個單獨的進程來監視輸入流。該類通過Handler.sendMessage與其父類進行通信