当前位置:   article > 正文

高通平台 android7.1 蓝牙的可见性设置

高通平台 android7.1 蓝牙的可见性设置

1、情景

        本机设备只打开蓝牙开关,但不停留在设置里面蓝牙页面时,其他设备扫描不到本机设备。

2、Android7.1中,默认的行为是,只有在设置里面的蓝牙页面,才会开启蓝牙的可见性;如果只是打开下拉栏的蓝牙快捷开关,是不会开启蓝牙可见性的。

3、需求:

        (1)打开蓝牙时,直接打开蓝牙可见性

        (2)不停留在设置里面蓝牙页面时,要扫描到本机设备

4、需求一的解决方案:

        打开蓝牙时,直接打开蓝牙可见性。如下:

路径:****/packages/apps/Bluetooth/src/com/android/bluetooth/btservice/AdapterProperties.java

  1. void onBluetoothReady() {
  2. Log.d(TAG, "ScanMode = " + mScanMode );
  3. Log.d(TAG, "State = " + getState() );
  4. // When BT is being turned on, all adapter properties will be sent in 1
  5. // callback. At this stage, set the scan mode.
  6. synchronized (mObject) {
  7. if (getState() == BluetoothAdapter.STATE_TURNING_ON &&
  8. mScanMode == BluetoothAdapter.SCAN_MODE_NONE) {
  9. /* mDiscoverableTimeout is part of the
  10. adapterPropertyChangedCallback received before
  11. onBluetoothReady */
  12. if (mDiscoverableTimeout != 0)
  13. //setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE);
  14. setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
  15. else /* if timeout == never (0) at startup */
  16. setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);
  17. /* though not always required, this keeps NV up-to date on first-boot after flash */
  18. setDiscoverableTimeout(mDiscoverableTimeout);
  19. }
  20. }
  21. }

    如上图:    将  setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE);  改为

        setScanMode(AbstractionLayer.BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE);即可。

5、需求二的解决方案,如下:

路径:******/packages/apps/Settings/src/com/android/settings/bluetooth/BluetoothSettings.java

  1. @Override
  2. public void onPause() {
  3. super.onPause();
  4. if (mBluetoothEnabler != null) {
  5. mBluetoothEnabler.pause();
  6. }
  7. // Make the device only visible to connected devices.
  8. //mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
  9. if (isUiRestricted()) {
  10. return;
  11. }
  12. getActivity().unregisterReceiver(mReceiver);
  13. }

如上图,在onPause()方法中将mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);注释掉即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/810585
推荐阅读
相关标签
  

闽ICP备14008679号