Quest:程序无法搜索到蓝牙设备(但是设置里面可以搜索到蓝牙)的解决办法

目录

一、问题描述

二、排查过程

1.电脑端的安卓开发版本

2.设备的安卓版本

三、问题分析 

四、解决办法

1.换用Android5.0的设备

2. 加几行权限申请代码。

1.首先在AndroidManifest.xml里面加以下权限代码。

2.其次在程序的主入口添加如下代码,用以询问用户是否开启定位权限。

​五、Result


一、问题描述

    公司的源代码编译install到设备后,在蓝牙搜索列表找不到节点的名称信息,进而无法进行后续的温湿度测量、光照测量等操作。

    公司给的代码可以在Android5.0直接运行。但是更高的版本则无法运行。 

二、排查过程

1.电脑端的安卓开发版本

经过排查,与电脑端的安卓Sdk版本关系不大,只要不是太老的Sdk版本即可。(PS:本人电脑的Sdk版本为AndroidAPI32)

2.设备的安卓版本

只需满足:手机或Pad的安卓版本对应的API版本不能比 bulid.gradle下的miSdk限制更小。(如下图所示)

三、问题分析 

   蓝牙分为经典蓝牙和低功耗蓝牙,我们需要开发的是低功耗蓝牙。

   通过查阅官方API,发现Android6.0以上版本低功耗蓝牙BluetoothGATT发生了一些区别,加入了距离检测的功能,也就是使用的时候需要手动开启定位权限。

四、解决办法

1.换用Android5.0的设备

公司给的代码可以直接在Android5.0上运行。因此可以换相应的设备。

2. 加几行权限申请代码。

以下方法仅在Android7.0设备上进行调试无误。

1.首先在AndroidManifest.xml里面加以下权限代码。

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- ACCESS_FINE_LOCATION:允许一个程序访问精确位置(如GPS) -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- ACCESS_COARSE_LOCATION:允许一个程序访问CellID或WiFi热点来获取大致的位置 -->

2.其次在程序的主入口添加如下代码,用以询问用户是否开启定位权限。

除了把报红的地方的class导入,还要设置一个常量值。(效果如下图)

   //添加如下代码,并且为 PERMISSIONS_REQUEST_CODE_ACCESS常量赋值1
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.CAMERA,}, PERMISSIONS_REQUEST_CODE_ACCESS);
        }

3.第三期培训视频

第三期培训视频里面说将targetAPI改成22什么的,没试过,不知道是否可行。

五、Result

程序需要手动开启定位权限。

搜索到了蓝牙设备名称,且功能正常。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ad_m1n

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

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

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

打赏作者

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

抵扣说明:

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

余额充值