gpt4 book ai didi

android - Bluetooth.ACTION_FOUND 未注册

转载 作者:行者123 更新时间:2023-11-30 02:12:12 25 4
gpt4 key购买 nike

我有一个蓝牙设备。

如果:

  1. 他们已经配对并连接到设备
  2. 它变得不插电
  3. 然后它会重新插入

我想自动连接到它。这就是我听 ACTION_FOUND 的原因。

我的代码相当简单。 ACTION_BOND_STATE_CHANGED 和 ACTION_ACL_DISCONNECTED 工作得很好。我完全无法让 ACTION_FOUND 捕捉到。我的“INTENT RECEIVED”日志消息从未打印出来……

我觉得我缺少一些简单的东西。谢谢!

public void registerReceiver() {
if (BuildConfig.DEBUG) Log.e(TAG, "REGISTERING RECEIVER");

IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
mainActivity.registerReceiver(receiver, filter);
}

private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BuildConfig.DEBUG) Log.e(TAG, "INTENT RECEIVED: " + String.valueOf(action));

if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// … some stuff …

} else if (BluetoothDevice.ACTION_FOUND.equals(action)) {
autoConnectDevice();

} else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {
disconnectDevice();
}
}
};

public void unregisterReceiver() {
if (BuildConfig.DEBUG) Log.e(TAG, "UNREGISTERING RECEIVER");
mainActivity.unregisterReceiver(receiver);
}

最佳答案

我相信 ACTION_FOUND 事件只会在您运行设备发现以将您的设备与另一个设备配对时触发。当已经配对的设备回到范围内时,它不会触发。不幸的是,似乎没有您想要的案例的事件。

最好的办法是在连接丢失时启动 AsycTask 或 Thread 并尝试重新连接直到成功或直到达到任意时间限制并放弃。

关于android - Bluetooth.ACTION_FOUND 未注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com