android 开发注册蓝牙广播BluetoothDevice.ACTION_FOUND查找周围设备,没有接收到发现广播的解决方法

            文章链接:https://blog.csdn.net/weixin_42433094/article/details/112472606

 

        我需要开发一个发现附近蓝牙设备的需求,然而注册了BluetoothDevice.ACTION_FIND广播之后且开启了一个蓝牙设备,但却接收不到这个广播,经过查询和搜索了资料发现,在Android 6之后需要在配置文件添加两个新的权限,且在代码里需要动态请求权限:

   步骤如下:

1.在Manifest配置文件中添加以下两个权限:

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

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

2.

1)在代码里动态请求以下权限:

if (Build.VERSION.SDK_INT >= 6.0) {
     ActivityCompat.requestPermissions(this, new String[]{
               Manifest.permission.ACCESS_FINE_LOCATION},1);
 }

 2)请求结果的回调:

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
 
        switch (requestCode) {
            case 1: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                   Log.i(TAG, "获取蓝牙权限成功");
                }
                return;
            }
        }
    } 

 

      接下来就可以正常发现蓝牙设备了

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
代码中没有明确指定 `BleReceiver` 是什么类,需要先定义 `BleReceiver` 类。另外,需要在不使用时注销广播接收器,否则可能导致内存泄漏。 下面是修改后的代码: ```java // 定义 BleReceiver 类 private class BleReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { // 找到设备 } else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) { // 设备绑定状态变化 } else if (BluetoothDevice.ACTION_PAIRING_REQUEST.equals(action)) { // 设备绑定状态变化 } else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) { // 开始搜索 } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { // 搜索结束 } } } // 监听广播action:搜寻到蓝牙 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(BluetoothDevice.ACTION_FOUND); // 找到设备 intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); // 设备绑定状态变化 intentFilter.addAction(BluetoothDevice.ACTION_PAIRING_REQUEST); // 设备绑定状态变化 intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); // 开始搜索 intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); // 搜索结束 Log.d(TAG, "onStart: 监听搜寻到蓝牙广播"); discoveryReceiver = new BleReceiver(); registerReceiver(discoveryReceiver, intentFilter); // 在不使用时注销广播接收器 unregisterReceiver(discoveryReceiver); ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值