【andrroid】android12 蓝牙开关设置、可连接和可被发现、自动连接设置

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<bool name="def_bluetooth_on">false</bool>

将 def_bluetooth_on 的值设为true,打开蓝牙

adb动态设置

adb shell settings put global bluetooth_on 0 #关闭
adb shell settings put global bluetooth_on 1 #打开
adb shell settings get global bluetooth_on #查询

打开蓝牙

am start -a android.bluetooth.adapter.action.REQUEST_ENABLE

查看蓝牙状态

service list | grep bluetooth
dumpsys package com.android.bluetooth | grep "version"
dumpsys bluetooth_manager
logcat -s BluetoothManager

问题:为什么Settings界面的打开蓝牙图标,测试机不能Scan到对端设备?
Android默认的行为是:只有在setting->bluetooth界面,才会开启蓝牙的可见性。
只在 status bar打开BT的话,是不会开启蓝牙可见性的。还需要可见性设置,确保已经将可见性设置为“可被发现”或“可连接和可被发现”

打开bluetooth可见性,设置为可连接和可被发现

android12/packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java

    void onBluetoothReady() {
        debugLog("onBluetoothReady, state=" + BluetoothAdapter.nameForState(getState())
                + ", ScanMode=" + mScanMode);

        synchronized (mObject) {
            // Reset adapter and profile connection states
            setConnectionState(BluetoothAdapter.STATE_DISCONNECTED);
            mProfileConnectionState.clear();
            invalidateGetProfileConnectionStateCache();
            mProfilesConnected = 0;
            mProfilesConnecting = 0;
            mProfilesDisconnecting = 0;
            // adapterPropertyChangedCallback has already been received.  Set the scan mode.
            // setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE);/*可连接*/
            setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE); /*可连接和可被发现*/
            // This keeps NV up-to date on first-boot after flash.
            setDiscoverableTimeout(mDiscoverableTimeout);
        }
    }

蓝牙匹配自动连接

自动配对过程
android12/packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
在这里插入图片描述

参考:
https://blog.csdn.net/weixin_40537714/article/details/107668527?
https://www.cnblogs.com/doubleWin/p/10330686.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yengi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值