uniapp开发的APP要接入三方厂商SDK功能,通过蓝牙连接控制手持设备。
我采用uniapp调用原生aar包接口的方式。
方式一是调用uni接口
我们看官网是有提供API uniapp.dcloud.net.cn/api/system/…
使用例子很多,如blog.csdn.net/weixin_4710…
markdown
代码解读
复制代码
**初始化蓝牙设备 | | 提醒用户打开蓝牙设备** uni.openBluetoothAdapter **搜索周边设备** uni.startBluetoothDevicesDiscovery **获取搜索到的设备信息** uni.getBluetoothDevices **当用户点击某个设备时将deviceId进行蓝牙连接** uni.createBLEConnection **连接上需要的蓝牙设备之后,获取这个蓝牙设备的服务uuid** uni.getBLEDeviceServices **如果一个蓝牙设备需要进行数据的写入以及数据传输,就必须具有某些特征值,所以通过上面步骤获取的id可以查看当前蓝牙设备的特征值** uni.getBLEDeviceCharacteristics **将从后台服务获取的指令写入到蓝牙设备当中** uni.writeBLECharacteristicValue **创建链接,发送指令启用notify 功能接收设备返回的数据** uni.notifyBLECharacteristicValueChange
方式二调用aar包
在uniapp官网有讲开发原生SDK插件,在uniapp项目中调用插件功能,nativesupport.dcloud.net.cn/NativePlugi…
过程是:
- 制作Android原生代码插件后导出aar包
- 将aar包放到uniapp项目根目录nativeplugins中,配置插件相关文件
- 在页面中调用
uni.requireNativePlugin
获取插件抛出的api接口 - 生成基座应用可以用于本地调试和云打包正式版
第一步制作原生插件aar包
我安卓导出aar项目源码:gitee.com/rootegg/202…
在官网中有个模板项目,按照官网指导开发即可
nativesupport.dcloud.net.cn/AppDocs/dow…
开发插件都在 UniPlugin-Hello-AS 项目中,如果是开发界面组件那用uniplugin_component
,如果是无界面API用uniplugin_module
,可以参考例子uniplugin_richalert
Android Studio 是2024年最新版,安装环境可以看上一篇一次接手远古Android项目终于运行起来了在Gradle中执行assembleRelease导出aar发布版即可
我这个API导出插件关键在两点:
-
继承
UniModule
-
函数头增加
UniJSMethod
-
函数参数
UniJSCallback
接收js页面回调传参
第二步uniapp项目添加插件
uniapp前端源码: gitee.com/rootegg/202…
在uniapp项目中添加nativeplugins
,把上面的aar包放到android文件夹下即可不管名字,增加package.json
配置文件
项目配置蓝牙模块,点击 manifest.json
,App模块权限
勾选Bluetooth
App原生插件配置
找到本地插件选进来,这样后面代码中才能使用这个插件
基础配置
中设置应用版本名称和应用版本号,注意每次生成基座应用都需要修改这两个版本号。什么是基座应用呢,因为uniapp写的代码本质上还是js代码,基座应用就是原生app框架,所以如果修改原生插件代码都需要重新制作基座应用,在Hbuilder顶部运行中可以制作自定义调试基座
。
第三步调用原生aar包导出的函数
在我们vue页面中 uni.requireNativePlugin
初始化使用上面插件package.json中定义的唯一id,后面如调用 connectBt
接口,通常会传入一个 UniJSCallback
参数提供回调
第四步制作基座自定义调试基座和发布
采用云端证书,直接打包即可,等待几分钟完成
注意每次如果修改过原生插件代码,都需要重新制作基座,并且要修改上面两个地方的版本号
基座完成后,就可以数据线插上电脑,手机开始真机调试
选择自己手机,选基座运行
或者发行发布apk文件即可
标签:uniapp,插件,基座,蓝牙,调安卓,aar,uni From: https://blog.csdn.net/weixin_47588164/article/details/142134554原文链接:https://juejin.cn/post/7412893752090558474