蓝牙开启时通知

时间:2014-11-10 13:08:50

标签: java android bluetooth observer-pattern android-bluetooth

我想在蓝牙启用时执行一些操作。要开始它,我打电话给bluetoothAdapter.enable();

on

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

bluetooth未立即启用 - 大约需要2-3 seconds。是否有任何一般模式可以执行此操作,还是应该以某种方式在其上实现Observer

问候

2 个答案:

答案 0 :(得分:1)

1)在BLUETOOTH STATE CHANGE行动中注册您的清单中的接收者。

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

2)在状态改变时你的接收器被调用,你可以检查当前的状态ON / OFF并完成你的任务。

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

如果您想在自己的本地活动中需要这个,您可以在自己的活动中注册接收器,它将如下所示。

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                                                 BluetoothAdapter.ERROR);
            switch (state) {
            case BluetoothAdapter.STATE_OFF:
                setButtonText("Bluetooth off");
                break;
            case BluetoothAdapter.STATE_TURNING_OFF:
                setButtonText("Turning Bluetooth off...");
                break;
            case BluetoothAdapter.STATE_ON:
                setButtonText("Bluetooth on");
                break;
            case BluetoothAdapter.STATE_TURNING_ON:
                setButtonText("Turning Bluetooth on...");
                break;
            }
        }
    }
};

如果想要全程监听状态更改,直到您的应用程序安装在手机中。像我上面说的那样在清单中注册它。

答案 1 :(得分:0)

为蓝牙状态更改编写接收器

   class MyReciver extents  BroadCastReceiver{
        @Override
            public void onReceive(Context context, Intent intent) { 
                 String event = intent.getAction();    
               if(event.equals("android.bluetooth.device.action.ACL_CONNECTED") {
                      //Do your code.
                      }
               }
}

将使用权限和声明接收器放在清单

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

<receiver android:name=".BTReceiver" >
        <intent-filter>
        <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />           
        </intent-filter>  
    </receiver>