2012-10-15 152 views
4

我的應用程序需要藍牙連接。在第一階段,我試圖打開標準活動「藍牙設備選取器」,以幫助用戶掃描新設備或從列表中選擇設備。Android藍牙設備選擇器使用

問題是我無法得到藍牙設備選擇器的任何工作示例。任務很簡單。以意圖開始一個活動「android.bluetooth.devicepicker.action.LAUNCH」

而設備選取器打開沒有任何問題。

但設備選取器需要四個臨時文件,我無法弄清下面列出的兩個附加文件的確切參數。

.putExtra("android.bluetooth.devicepicker.extra.LAUNCH_PACKAGE","com.extreme.controlcenter" 

.putExtra("android.bluetooth.devicepicker.extra.DEVICE_PICKER_LAUNCH_CLASS","com.extreme.controlcenter.WelcomeActivity") 

我以爲參數應該是

*「android.bluetooth.devicepicker.extra.LAUNCH_PACKAGE」 *

應該有我的包的名稱,所以我通過了而已。這是「com.extreme.controlcenter」

第二個應該是組件的名稱,它必須接收在選擇設備後完成的廣播。在這裏,我試着把名爲具有onReceive()函數的類。

但問題是,當在設備選取器中選取設備時,onReceive()函數不會被調用!

public void onReceive(Context context, Intent intent) { 

      String action = intent.getAction(); 

      //Device Selected on Device Picker 
      if("android.bluetooth.devicepicker.action.DEVICE_SELECTED".equals(action)) { 
       //context.unregisterReceiver(this); 

       BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 

       Toast.makeText(context, "device" + device.getAddress(), Toast.LENGTH_SHORT).show(); 

       String MAC = device.getAddress(); 
       //Log.d("my", MAC); 

       Intent intent2 = new Intent(WelcomeActivity.this, ControlActivity.class); 
       intent2.putExtra(EXTRA_DEVICE_ADDRESS, MAC); 
       startActivity(intent2); 
      } 


     }; 

我已經創建了一個意圖過濾並登記在OnCreate接收()的主要活動

// Register the BroadcastReceiver 
    IntentFilter filter = new IntentFilter("android.bluetooth.devicepicker.action.DEVICE_SELECTED"); 


    registerReceiver(mReceiver, filter); 

一件事是,如果我不提供這兩個演員,在中廣播事件成功接收。但是,該代碼只能在我的TAB上運行,但同樣在手機中崩潰。所以我認爲提供這兩項附加功能是強制性的。

在此先感謝!

回答

1

您的EXTRAs中的「com.extreme.controlcenter.WelcomeActivity」需要是BroadcastReceiver類,例如MyBroadcastReceiver.class.getName()。我也在標籤內的清單中聲明瞭它