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

完结!!!!

相关推荐
没有故事、有酒7 分钟前
Ajax介绍
前端·ajax·okhttp
朝新_11 分钟前
【SpringMVC】详解用户登录前后端交互流程:AJAX 异步通信与 Session 机制实战
前端·笔记·spring·ajax·交互·javaee
裴嘉靖13 分钟前
Vue 生成 PDF 完整教程
前端·vue.js·pdf
毕设小屋vx ylw28242616 分钟前
Java开发、Java Web应用、前端技术及Vue项目
java·前端·vue.js
冴羽1 小时前
今日苹果 App Store 前端源码泄露,赶紧 fork 一份看看
前端·javascript·typescript
蒜香拿铁1 小时前
Angular【router路由】
前端·javascript·angular.js
brzhang2 小时前
读懂 MiniMax Agent 的设计逻辑,然后我复刻了一个MiniMax Agent
前端·后端·架构
西洼工作室2 小时前
高效管理搜索历史:Vue持久化实践
前端·javascript·vue.js
广州华水科技2 小时前
北斗形变监测传感器在水库安全中的应用及技术优势分析
前端
开发者如是说2 小时前
Compose 开发桌面程序的一些问题
前端·架构