首页 > 解决方案 > Android以编程方式关闭蓝牙无法按预期工作

问题描述

我正在研究 Silicon labs MCU + BLE113 和 android app 之间的蓝牙通信。我想以编程方式从 android 端禁用蓝牙。网上有一些例子我觉得很有帮助。我的代码如下:

private void showWifiSet() {
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        new MaterialDialog.Builder(SendWifiBLEActivity.this)
                .content(R.string.wifi_set)
                .positiveText(android.R.string.ok)
                .onPositive(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                        if (bluetoothAdapter.isEnabled()) {
                            bluetoothAdapter.disable();
                        }
                        finish();
                    }
                })
                .show();
    }
});

}

现在我的问题是,当此代码运行时,Android 手机上的蓝牙显示为禁用,并且 BluetoothAdapter.STATE_OFF 被捕获。但我无法在 MCU 上获得 ble_evt_connection_disconnected 事件,无论是 android 中的 onConnectionStateChange。我的 MCU 仍然显示通过蓝牙与安卓手机连接。我发现断开MCU和android应用程序的方式是1,关闭应用程序,2,在android studio上停止调试模式,或者3,在android手机系统设置中手动禁用蓝牙。

有人可以帮我吗?谢谢你。

标签: androidbluetooth

解决方案


推荐阅读