我想在蓝牙启用时执行一些操作。要开始它,我打电话给bluetoothAdapter.enable();
on
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
,
但bluetooth
未立即启用 - 大约需要2-3 seconds
。是否有任何一般模式可以执行此操作,还是应该以某种方式在其上实现Observer
?
问候
答案 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>