酷炫网站推荐,专门搜索知乎内容的搜索引擎,网站开发论坛,做视频网站如何赚钱注意点一#xff1a;一开始必须申请权限#xff0c;否则后面根本无法成功。
注意点二#xff1a;BLE使用向某个特征写入来发送数据#xff0c;写入一次默认长度是23字节#xff0c;必须向蓝牙设备申请更大字节的写入才能发送更多字节。#xff08;23字节是BLE通信的最小…注意点一一开始必须申请权限否则后面根本无法成功。
注意点二BLE使用向某个特征写入来发送数据写入一次默认长度是23字节必须向蓝牙设备申请更大字节的写入才能发送更多字节。23字节是BLE通信的最小MTU大小。能申请多大还得看蓝牙服务器情况。
注意点三比如操作申请更大MTU时候必须等待申请结果回来之后才能继续执行接下来的蓝牙操作比如说发现服务。申请结果在回调函数里面。如果还没等申请结果出来马上执行发现服务那么可能两个都要失败。以此类推蓝牙操作需要一个一个来。猜测是正在进行空中通信需要时间。 第一步申请蓝牙权限非常重要否则后面没法成功。
1首先在AndroidManifest.xml这个文件里面加上权限请求。 权限代码 !-- 请求蓝牙权限 --uses-permission android:nameandroid.permission.BLUETOOTH/ !-- 请求蓝牙权限 --uses-permission android:nameandroid.permission.BLUETOOTH_ADMIN/ !-- 请求蓝牙管理权限 --uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION/ !-- 请求精细位置权限用于BLE扫描 (API 23) --uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION/ !-- 请求粗略位置权限用于BLE扫描 (API 23) --uses-permission android:nameandroid.permission.BLUETOOTH_CONNECT/ !-- 请求连接已配对蓝牙设备的权限 (API 31) --uses-permission android:nameandroid.permission.BLUETOOTH_SCAN/ !-- 请求扫描附近蓝牙设备的权限 (API 31) --uses-permission android:nameandroid.permission.BLUETOOTH /uses-permission android:nameandroid.permission.BLUETOOTH_ADMIN /uses-permission android:nameandroid.permission.BLUETOOTH_CONNECT /uses-permission android:nameandroid.permission.BLUETOOTH_SCAN /uses-permission android:nameandroid.permission.BLUETOOTH_ADVERTISE /uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION / 2还需要在在activity里面继续申请一次。会有一些包文件要求导入按照提示导入
//先设置一个申请权限结果的回调函数// 动态请求权限注册ActivityResultLauncher来处理权限请求的结果 请求权限之后的回调函数 判断请求到了什么权限permissionLauncher activity. registerForActivityResult( //这是个请求权限之后的回调函数new ActivityResultContracts.RequestMultiplePermissions(),permissions - {StringBuilder deniedPermissions new StringBuilder();// 构建一个字符串用于记录未授权的权限boolean allGranted true;// 初始化一个布尔值用于判断所有权限是否都被授权// 遍历权限映射检查是否有任何权限未被授予for (String key : permissions.keySet()) {// 如果当前权限未被授予则将所有权限标记为非全部授予if (!permissions.get(key)) {allGranted false;deniedPermissions.append(key).append(, ); // 将未授予的权限键添加到拒绝权限列表中}}// 如果存在被拒绝的权限则移除最后一个 逗号 和 空格 以确保格式正确if (deniedPermissions.length() 0) {deniedPermissions.setLength(deniedPermissions.length() - 2);}// 如果所有权限都被授予则执行以下操作if (allGranted) {//这里就是全都成功了可以添加自己的程序//ble_status_callback. Permission_requests_all_successful();//处理权限请求成功回调函数} else {ble_status_callback. Permission_request_failed();//处理权限请求失败回调函数}});
////这里开始正式申请权限// 定义应用所需权限数组String[] permissions {// 请求蓝牙权限包括蓝牙连接和精确位置访问Manifest.permission.BLUETOOTH, // 允许应用程序连接到已配对的蓝牙设备Manifest.permission.BLUETOOTH_ADMIN, // 允许应用程序发现和配对蓝牙设备Manifest.permission.BLUETOOTH_CONNECT, // 从Android 12开始允许应用程序连接到蓝牙设备Manifest.permission.BLUETOOTH_SCAN, // 从Android 12开始允许应用程序扫描蓝牙LE设备和服务Manifest.permission.ACCESS_FINE_LOCATION // 从Android 6.0开始蓝牙扫描需要位置权限};permissionLauncher.launch(permissions);// 使用permissionLauncher发起权限请求
//
到这里就才算申请成功才可以继续接下来的蓝牙相关的操作 到这里简略说一下接下来的流程。---扫描BLE设备---选择想要的BLE设备连接---查找这个设备下面有什么服务---查找每个服务下有什么特征---查找每个特征都有什么权限