关于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

完结!!!!

相关推荐
用户51681661458414 分钟前
[微前端 qiankun] 加载报错:Target container with #child-container not existed while devi
前端
东北南西15 分钟前
设计模式-工厂模式
前端·设计模式
HANK21 分钟前
ECharts高效实现复杂图表指南
前端·vue.js
入秋24 分钟前
Linux服务器安装部署 Nginx、Redis、PostgreSQL、Docker
linux·前端
acocosum26 分钟前
毫米波雷达基础知识学习报告
前端
程序员鱼皮27 分钟前
这套 Java 监控系统太香了!我连夜给项目加上了
java·前端·ai·程序员·开发·软件开发
Juchecar30 分钟前
Vue3 响应式 ref 和 reactive 原理详解及选择建议
前端·vue.js
拾光拾趣录33 分钟前
JavaScript 究竟怎么跑
前端·javascript
Aotman_35 分钟前
el-input 重写带图标密码框(点击小眼睛显示、隐藏密码)
前端·javascript·vue.js
itpretty35 分钟前
纯前端用 Next.js 本地实现 SSE 流式传输
前端·next.js