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

完结!!!!

相关推荐
东风西巷5 分钟前
K-Lite Mega/FULL Codec Pack(视频解码器)
前端·电脑·音视频·软件需求
超级大只老咪1 小时前
何为“类”?(Java基础语法)
java·开发语言·前端
你的人类朋友3 小时前
快速搭建redis环境并使用redis客户端进行连接测试
前端·redis·后端
深蓝电商API4 小时前
实战破解前端渲染:当 Requests 无法获取数据时(Selenium/Playwright 入门)
前端·python·selenium·playwright
bestcxx5 小时前
(二十七)、k8s 部署前端项目
前端·容器·kubernetes
鲸落落丶5 小时前
webpack学习
前端·学习·webpack
excel5 小时前
深入理解 3D 火焰着色器:从 Shadertoy 到 Three.js 的完整实现解析
前端
光影少年6 小时前
vue打包优化方案都有哪些?
前端·javascript·vue.js
硅谷工具人6 小时前
vue3边学边做系列(3)-路由缓存接口封装
前端·缓存·前端框架·vue