uniapp调安卓原生功能实现蓝牙通信

138 篇文章 0 订阅
138 篇文章 0 订阅

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.jsonApp模块权限勾选Bluetooth

App原生插件配置找到本地插件选进来,这样后面代码中才能使用这个插件

基础配置中设置应用版本名称和应用版本号,注意每次生成基座应用都需要修改这两个版本号。什么是基座应用呢,因为uniapp写的代码本质上还是js代码,基座应用就是原生app框架,所以如果修改原生插件代码都需要重新制作基座应用,在Hbuilder顶部运行中可以制作自定义调试基座

第三步调用原生aar包导出的函数

在我们vue页面中 uni.requireNativePlugin 初始化使用上面插件package.json中定义的唯一id,后面如调用 connectBt 接口,通常会传入一个 UniJSCallback 参数提供回调

第四步制作基座自定义调试基座和发布

采用云端证书,直接打包即可,等待几分钟完成

注意每次如果修改过原生插件代码,都需要重新制作基座,并且要修改上面两个地方的版本号

基座完成后,就可以数据线插上电脑,手机开始真机调试

选择自己手机,选基座运行

或者发行发布apk文件即可

原文链接:https://juejin.cn/post/7412893752090558474

uniApp集成安卓原生插件实现动态更换应用图标通常涉及到跨平台混合开发框架(如uni-app),它允许你在单个代码库上构建同时兼容Android和iOS的应用。为了动态改变应用图标,你需要在安卓环境中利用原生插件来处理。 在uniApp中,这可以通过以下步骤完成: 1. **创建原生插件**: 首先,在Android项目中创建一个新的模块,比如`DynamicIconModule`,负责处理图标更新操作。这个模块会暴露一些API供前端调用。 ```java // AndroidPlugin.java (假设是MainActivity) public class DynamicIconModule extends UniModule { @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { //... @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // 更新图标逻辑在这里 } //... }); } //暴露出接口给uniapp调用,更新图标 public void updateAppIcon(String iconName) { // 实现图标切换逻辑 } } ``` 2. **调用插件**: 在uniApp的JavaScript部分,通过`$unplugin`或`uni.invokeMethod` API 来触发插件提供的更新图标方法,并传递所需的新图标名称。 ```javascript // main.js 或者某个页面文件 import { uniApp } from '@dcloudio/uni-app' uniApp.$onReady(() => { uniApp.invokeMethod('DynamicIconModule.updateAppIcon', 'new_icon_name'); }); ``` 3. **图标资源管理**: 确保你的项目中包含不同状态下的图标资源文件(例如drawable-mdpi、hdpi等),并在插件中根据设备配置选择合适的图标显示。 **注意事项:** - 安卓系统对动态改变主图标有安全限制,可能需要特殊权限(比如`android.permission.REQUEST_INSTALL_PACKAGES`)。 - 根据实际需求,可能还需要处理不同场景下图标变化,比如启动时、收到通知等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值