重启后接收蓝牙连接更改

时间:2014-11-24 13:28:26

标签: android bluetooth

我正在尝试使用接收器检查与不同设备的蓝牙连接,然后将其记录在logcat中。它适用于正常情况但重启时失败。

这是一个正常的工作流程:

  1. 致电
  2. 打开/关闭蓝牙
  3. 重新启动手机
  4. 重启后设备重新连接
  5. 我可以在我的登录中看到2,所以正常情况下工作正常。但我错过了4并且在重启后没有得到一个事件,所以我不知道我们是否再次连接。

    我的清单有这个:

        <receiver android:name=".settings.BluetoothReceiver"
                  android:enabled="true">
                <intent-filter>
                    <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
                    <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
                    <action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" />
                </intent-filter>
            </receiver>
    

    这些许可:

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

    我的蓝牙接收器看起来像这样:

    public class BluetoothReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            Log.e("BluetoothReceiver", "ActionFound");
        }
        JSONObject status = new JSONObject();
        try {
            status.put("status", action);
            status.put("name", device.getName());
            status.put("address", device.getAddress());
            Calendar c = Calendar.getInstance();
            status.put("time", c.getTime());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Log.e("BluetoothReceiver", status.toString());
    }
    

    }

    有没有更简单的方法呢?如果我在重新启动后没有收到第一个蓝牙连接事件,那么一切都毫无价值。或者我在重启后以某种方式启动接收器?

1 个答案:

答案 0 :(得分:0)

你可以抓住

<action android:name="android.intent.action.BOOT_COMPLETED" /> 
在您的BluetoothReceiver

并手动检查蓝牙连接状态。

P.S。别忘了

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

例如检查http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html