Широковещательный приемник Android JB не получает bluetooth.android.bluetooth.BluetoothDevice.ACTION_ACL_CONNECTED

Я использую телефон samsung galaxy nexus с root-правами, работающий под управлением jb, и по какой-то причине я не получаю никаких широковещательных намерений от службы подключения Bluetooth. Ниже вы найдете мой манифест приемника и код широковещательного приемника. Любые советы или идеи будут оценены.

Спасибо

Вот манифест

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

Вот приемник

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");
            }
        }

person user1631602    schedule 28.08.2012    source источник
comment
Вы пробовали то же приложение на pre-JB? Другими словами, проблема в JB или в приведенном выше коде?   -  person Tom    schedule 29.08.2012


Ответы (3)


Вот новое намерение, которое транслируется.

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

Спасибо, что посмотрели, вот новый Intent

person user1631602    schedule 29.08.2012

Я не знаю, прав ли я, но я думаю, что эта строка неверна:

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

Должен быть вот этот:

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

То же самое и с остальными. Измените «BluetoothDevice» на «устройство».

Также то же самое в вещании:

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.

person Ton    schedule 31.03.2013
comment
Большое спасибо! Напрасно потраченные часы на выяснение того, почему мой зарегистрированный BroadcastReceiver динамически получал действия, а не статический, определенный в манифесте. - person stefan; 07.11.2014
comment
Это решение не работает для меня (Nexus 6 Lollipop). Смотрите мой ответ для обновленного решения. - person J Wang; 14.05.2015

Ваши действия фильтра намерений неверны. На самом деле вы хотите использовать следующее:

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

Вы можете найти эти значения в официальной документации Android BluetoothDevice (см. постоянное значение).

person J Wang    schedule 14.05.2015