1

我正在使用運行jb的根三星galaxy nexus手機,由於某些原因,我沒有收到來自藍牙連接服務的任何廣播意圖。下面你會發現我的接收器清單和廣播接收器代碼。任何提示或想法,將不勝感激。Android JB廣播接收器沒有收到bluetooth.android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED

感謝

這裏是清單

<receiver android:name=".ABroadcastReciever" > 
<intent-filter> 
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED" /> 
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED" /> 
<action android:name="android.bluetooth.BluetoothDevice.ACTION_BOND_STATE_CHANGED" /> 
<action android:name="android.bluetooth.BluetoothDevice.ACTION_FOUND" /> 
<action android:name="android.bluetooth.BluetoothDevice.BOND_BONDING" /> 
<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED" /> 
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
</intent-filter> 
</receiver> 

這裏是Reciever

public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      //This is looking for the Wifi Connectivity Changes 
      if(action.equals("android.net.conn.CONNECTIVITY_CHANGE")){ 
       Log.d(TAG,"received: Wifi Connection Change");   
      } 
      //This is looking Bluetooth connection disconnect 
      else if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED") || 
      action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_DISCONNECTED_REQUESTED")){ 
       Log.d(TAG,"Received: Bluetooth Disconnected"); 

      } 
      //This is looking for Bluetooth connection established 
      else if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED")){ 
    Log.d(TAG,"Received: Bluetooth Connected"); 
      } 
     } 
+0

您是否在JB之前嘗試過相同的應用程序?換句話說,JB是問題還是上述代碼? – Tom

回答

2

這裏是正在播出的新意圖。

<action android:name="android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED" /> 

感謝這裏看着 是新的意圖

1

我不知道,如果我是正確的,但我認爲,這條線是錯誤的:

<action android:name="android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED" /> 

它應該是這個一個:

<action android:name="android.bluetooth.device.ACTION_ACL_CONNECTED" /> 

與其他人一樣的東西。更改「設備」的「BluetoothDevice」。

在broascast類似的還有同樣的事情:

if(action.equals("android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED")) 

應該

if(action.equals("android.bluetooth.device.action.ACL_CONNECTED")) 

變化BluetoothDevice.ACTION_ACL_CONNECTED爲device.action.ACL_CONNECTED

+0

非常感謝!浪費了幾個小時,弄清楚爲什麼我的BroadcastReceiver註冊動態收到了動作,但沒有在清單中定義的靜態動作。 – stefan

+0

此解決方案對我無效(Nexus 6 Lollipop)。查看我的答案以獲取更新的解決方案 –

0

你的意圖過濾器的行爲是不正確的。實際上,你要使用以下命令:

<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />

可以在official Android BluetoothDevice documentation找到這些值(看下恆定值)。