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

完结!!!!

相关推荐
DanCheOo4 分钟前
AI 应用的安全架构:Prompt 注入、数据泄露、权限边界
前端·人工智能·prompt·安全架构
We་ct1 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
weixin_427771611 小时前
前端调试隐藏元素
前端
爱上好庆祝2 小时前
学习js的第五天
前端·css·学习·html·css3·js
C澒3 小时前
IntelliPro 产研协作平台:基于 AI Agent 的低代码智能化配置方案设计与实现
前端·低代码·ai编程
一袋米扛几楼983 小时前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue
网络点点滴3 小时前
前端与后端的区别与联系
前端
EnCi Zheng3 小时前
M5-markconv自定义CSS样式指南 [特殊字符]
前端·css·python
kyriewen3 小时前
你的网页慢,用户不说直接走——前端性能监控教你“读心术”
前端·性能优化·监控
广州华水科技4 小时前
北斗GNSS变形监测在大坝安全监测中的应用与优势分析
前端