Ich versuche, Bluetooth-Statusänderungen mit Broadcast Receiver zu fangen.Android Broadcast Receiver Bluetooth Ereignisse fangen
Mein Manifest:
<uses-permission android:name="android.permission.BLUETOOTH" />
<application>
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BluetoothBroadcastReceiver"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<action android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
</intent-filter>
</receiver>
</application>
Empfänger onReceive
Methode:
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d("BroadcastActions", "Action "+action+"received");
int state;
BluetoothDevice bluetoothDevice;
switch(action)
{
case BluetoothAdapter.ACTION_STATE_CHANGED:
state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
if (state == BluetoothAdapter.STATE_OFF)
{
Toast.makeText(context, "Bluetooth is off", Toast.LENGTH_SHORT).show();
Log.d("BroadcastActions", "Bluetooth is off");
}
else if (state == BluetoothAdapter.STATE_TURNING_OFF)
{
Toast.makeText(context, "Bluetooth is turning off", Toast.LENGTH_SHORT).show();
Log.d("BroadcastActions", "Bluetooth is turning off");
}
else if(state == BluetoothAdapter.STATE_ON)
{
Log.d("BroadcastActions", "Bluetooth is on");
}
break;
case BluetoothDevice.ACTION_ACL_CONNECTED:
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Toast.makeText(context, "Connected to "+bluetoothDevice.getName(),
Toast.LENGTH_SHORT).show();
Log.d("BroadcastActions", "Connected to "+bluetoothDevice.getName());
break;
case BluetoothDevice.ACTION_ACL_DISCONNECTED:
bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Toast.makeText(context, "Disconnected from "+bluetoothDevice.getName(),
Toast.LENGTH_SHORT).show();
break;
}
}
ich starte App minimiert es dann durch Home-Taste drücken. Gehe zu den Einstellungen und schalte Bluetooth ein, aber nichts passiert. Obwohl ich Toast und Logcat Nachrichten erwarte. Was ist hier falsch?
Nicht sicher, kann es wegen der Art und Weise Broadcast registriert sein. Ich würde versuchen, im Dienst statt zur Laufzeit zu registrieren und sehen, ob sich das ändert. –
@VladimirLichonos Ja, ich habe versucht, Dienst hinzuzufügen, wo ich Empfänger registrieren. Es sah wie folgt aus: IntentFilter vlnr = new IntentFilter (BluetoothDevice.ACTION_ACL_CONNECTED); fltr.addAction (BluetoothDevice.ACTION_ACL_DISCONNECTED); fltr.addAction (BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED); fltr.addAction (BluetoothAdapter.ACTION_STATE_CHANGED); registerReceiver (brecv, vlnr); 'where' brecv' ist ein Objekt von CustomBluetoothReceiver. Es gab keine Änderungen. –
Starten Sie den Service an einem Ort? – osayilgan