蓝牙扫描仪未发现设备

Posted

技术标签:

【中文标题】蓝牙扫描仪未发现设备【英文标题】:Bluetooth scanner not discovering devices 【发布时间】:2020-12-02 10:01:23 【问题描述】:

我正在创建蓝牙扫描仪应用并尝试查找可用的设备进行配对。我有一个蓝牙耳机,我试图在 android 10 上运行该应用程序。

权限在清单中设置

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

应用程序包含一个简单的按钮,单击该按钮我开始发现蓝牙设备

val bluetoothManager = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
val bluetoothAdapter = bluetoothManager.adapter
if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled) 
    val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)

val bluetoothLeScanner = BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner
scanBluettoth.setOnClickListener(
    bluetoothLeScanner.startScan(leScanCallback)
)

发现回调

val leScanCallback: ScanCallback = object : ScanCallback() 
    override fun onScanResult(callbackType: Int, result: ScanResult) 
        super.onScanResult(callbackType, result)
        Log.e("device ", "D ".plus(result.device.name))
    

如果我在这里遗漏了什么,有人可以帮助我吗?

【问题讨论】:

您是否已授予位置权限??从设置 【参考方案1】:

设备上的位置信息是否已关闭? 必须为 Android 10 启用位置信息才能获得扫描结果。

还要记得请求许可

if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)) 
   requestPermissions(new String[]android.Manifest.permission.ACCESS_FINE_LOCATION, PERM);

【讨论】:

以上是关于蓝牙扫描仪未发现设备的主要内容,如果未能解决你的问题,请参考以下文章

重启蓝牙后重新连接时应用程序未发现服务

当后台应用程序扫描蓝牙连接的外围设备时

Android 10 扫描蓝牙失败问题

Android 6.0 扫描不到 Ble 设备需开启位置权限

使用核心蓝牙 ios 扫描外围设备时如何更改特征顺序

低功耗蓝牙Ble的详细使用流程