关于uniapp开发安卓sdk的aar,用来控制pda的rfid的扫描

首先你的询问sdk商家给的aar包是不是支持uniapp

如果他写的方法里面使用了uniapp的 @UniJSMethod(uiThread = true) 里面暴露的方法如 @UniJSMethod(uiThread = true) public void getCode() { } 那么这个aar的包只需要放在nativeplugins建立文件夹放在android里,然后package.json配置好就可以使用,如图

然后在自定义基座里打包,在页面里使用下面代码,需要根据你的上面图片的name里的名称填写,然后使用对应的里面的方法。

ini 复制代码
`
const ble = uni.requireNativePlugin('ScanModule');
const init = () => {
	ble.init({}, result => {
		const msg = JSON.stringify(result);
		msgs.value = msg
		console.log(msg);
	});
}

--------------------------------------分割线----------------------------------------

然后第二种方法,就是aar的包厂家给的aar是原声的没有暴露,那么你就有两种方法解决,

一种你使用android studio,在开发一个使用@UniJSMethod(uiThread = true)然后引用你需要的api方法的把厂家给的aar里的方法在暴露出去,然后按照👆上面配置就可以使用。。。。。。这种我研究了一下,但我kotlin和android开发水平不行搞了三天成功了一半。

然后我就用了uniapp的uts方法成功了。下面是教程 在uni_modules里面新建uni_modules插件,选择uts插件(名字你随便起) 把厂家给的aar文件放到libs里面 如图(我的是三个)

然后重点来了! 查看api文档,看看你需要的api文档,然后他的方法来自哪个类

找不到类的找厂家给的demo或者aar(我记得好像可以(用android studio打开解压的aar))全局搜索api查看类, 然后在index.uts里面,引入他,在注入uts的实例

ini 复制代码
  import ReaderCtrlManager from "com.olc.reader.ReaderCtrlManager"

  const context = UTSAndroid.getAppContext()

   const readerCtrlManager = ReaderCtrlManager.getInstance(context);

然后下面就可以使用ReaderCtrlManager里面的方法了, 注意有的aar文件他的实例他的返回方法是类下面的方法,但uts没有这个方法,就只能引入他的方法

import Stub from 'com.olc.reader.service.IInitCallback.Stub';

然后创建一个回调扩展这个方法

scala 复制代码
       class initCallback extends Stub {
                  constructor() {
	        super();
           }
          override  result(success : boolean) : void {
	  console.log(success);
       }

然后就封装个方法,里面可以直接使用这个方法

javascript 复制代码
       export function ContinueInventoryR2000(options : MyApiStatus) {
       readerCtrlManager.InitUHF(new initCallback(), true)
       }

如果触发api会调用initCallback里的方法,那么上面的 override result()会接收到消息,然后返回信息的方法就在InitUHF对应的initCallback方法里面,比如上面的result里面就可以这样写

arduino 复制代码
             override  result(success : boolean) : void {
	
       
                 const res : MyApiResult = {
			type: 1,
			code: true,
		  	msg: success
		    };
	     }

然后页面里就这样接收

javascript 复制代码
import {  ContinueInventoryR2000 }  from '@/uni_modules/rfid-plugin';


const huoqu = () => {
	ContinueInventoryR2000({
		result: (res) => {	
			console.log(res);
		}

	})
}
           

这样就可以在页面里面拿到sdk的api对应触发的返回值了,如果是每触发就返回一次可以在方法上加上 @UTSJS.keepAlive

完结!!!!

相关推荐
格子软件8 小时前
2026年GEO优化系统源码级状态机与多模型调度拆解
java·前端·vue.js·人工智能·vue·geo
HUMHSX9 小时前
Vue 项目启动全流程解析:从入口文件到全局指令注册与页面渲染
前端·javascript·vue.js
有颜有货9 小时前
PMC生产排产的4种算法,一次讲清
java·服务器·前端
小虎牙0079 小时前
Android kotlin图片库Coil源码详解
android·前端
随风一样自由9 小时前
【前端领域】前端开发核心应用场景与落地实践
前端·前端框架
an317429 小时前
弹窗数据流设计的两种高阶架构实践
前端·vue.js·架构
谢尔登10 小时前
【React】 状态管理方案
前端·react.js·前端框架
用户21366100357210 小时前
Vue商品详情与放大镜组件
前端·javascript
半个落月10 小时前
从Tapas小Demo理清localStorage、事件与this
前端·javascript
李明卫杭州10 小时前
Vue2 中 v-model 处理不同数据结构的技巧
前端·javascript·vue.js