如何使用广播接收机检测蓝牙状态变化?

我正在尝试制作一个应用程序,在设备的蓝牙开启时显示敬酒。 即使当我的应用程序没有运行,我也想这样做。 所以我应该使用广播接收器,添加一些权限,意图过滤到Android清单,并作出一个Java类,但我不知道的细节。

我该怎么办? 我应该使用哪些权限?

Solutions Collecting From Web of "如何使用广播接收机检测蓝牙状态变化?"

至于权限去,检测蓝牙的状态变化,你需要添加到您的AndroidManifest.xml。

<uses-permission android:name="android.permission.BLUETOOTH" /> 

一个接收器的例子看起来像这样,你把这个代码添加到你想要处理广播的地方,例如一个activity:

  private final BroadcastReceiver mReceiver = new BroadcastReceiver() { public void onReceive (Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { if(intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_OFF) // Bluetooth is disconnected, do handling here } } }; 

要使用接收器,您需要注册它。 你可以做如下。 我在我的主要活动注册接收器。

 registerReceiver(this, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)); 

您也可以决定将其全部添加到您的AndroidManifest.xml中。 这样你就可以为接收器做一个特殊的课程并在那里处理。 无需注册接收器,只需创build类并将以下代码添加到AndroidManifest

 <receiver android:name=".packagename.NameOfBroadcastReceiverClass" android:enabled="true"> <intent-filter> <action android:name="android.bluetooth.adapter.action.STATE_CHANGED"/> </intent-filter> </receiver> 

你必须得到以下许可。

 <uses-permission android:name="android.permission.BLUETOOTH" /> 

你必须把它写成接收者标签中的意图filter。

 <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />