gpt4 book ai didi

android - 更改蓝牙可发现性时未发送广播

转载 作者:行者123 更新时间:2023-11-29 22:09:58 24 4
gpt4 key购买 nike

目前我正在尝试设置一个应用程序让两个设备通过蓝牙进行通信。

我有一个显示单个 Button 的屏幕。单击此按钮将使设备可发现并禁用该按钮。当设备不再可被发现时,该按钮将再次启用。

就像 Dev Guide 中的建议一样我注册了一个 BroadcastReceiver在可发现性结束时得到通知

问题:

有时,当设备不再可被发现时,我没有收到任何广播。另一方面,进入可发现性时,我通常会收到 2 个广播。可发现性工作正常,LogCat 和设备看到我的手机 (HTC Desire HD) 120 秒证明了这一点。

这是来自 LogCat 的记录,显示在开始可发现性后立即接收到 2 个广播:

03-25 23:01:47.557: INFO/System.out(16905): --------broadcast received-------------
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): current scan mode: 21
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): previous scan mode: 23
03-25 23:01:47.557: INFO/System.out(16905): --------broadcast received-------------
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): current scan mode: 23
03-25 23:01:47.557: DEBUG/MuliplayerServerActivity(16905): previous scan mode: 21

我启动可发现性的代码如下:

private void becomeVisible() {

Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(discoverableIntent,
CODE_REQUEST_MAKE_DISCOVERABLE);

}

我的 BroadcastReceiver 看起来像这样:

private final BroadcastReceiver discoverableModeChangedReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {

System.out.println("--------broadcast received-------------");
int scanMode = intent.getIntExtra(BluetoothAdapter.EXTRA_SCAN_MODE,
0);
int scanModePrevious = intent.getIntExtra(
BluetoothAdapter.EXTRA_PREVIOUS_SCAN_MODE, 0);
Log.d(TAG, "current scan mode: " + scanMode);
Log.d(TAG, "previous scan mode: " + scanModePrevious);

if (scanMode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
// show button
findViewById(R.id.btn_become_visible).setEnabled(false);
} else {
// hide button
findViewById(R.id.btn_become_visible).setEnabled(true);
}
}
};

最佳答案

您必须先注册操作:

IntentFilter intent = new IntentFilter();
intent.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
intent.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
intent.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
registerReceiver(discoverableModeChangedReceiver, intent);

关于android - 更改蓝牙可发现性时未发送广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864135/

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