当前位置: 首页 > news >正文

专业北京网站建设公司哪家好百度收录入口

专业北京网站建设公司哪家好,百度收录入口,优酷 嵌入 wordpress,中企动力做网站好吗本篇文章从实战角度出发,将UniApp集成新大陆PDA设备RFID的全过程分为四部曲,涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程,轻松应对安卓原生插件开发与打包需求! ***环境问题移步至:uniapp—an…

本篇文章从实战角度出发,将UniApp集成新大陆PDA设备RFID的全过程分为四部曲,涵盖环境搭建、插件开发、AAR打包、项目引入和功能调试。通过这份教程,轻松应对安卓原生插件开发与打包需求!

***环境问题移步至:uniapp—android原生插件开发(1环境准备)

一、将App离线SDK解压,并导入Android Studio中

下载地址:Android 离线SDK - 正式版 | uni小程序SDK

***强烈建议:不要不听劝,本人踩了两天坑,不然有意想不到的问题等着你解决

  1. 下载最新版本Android 离线SDK - 正式版,不然会出现不兼容问题。
  2. 最好用案例中的gradle版本,不然会出现不兼容问题。
  3. 包名能共用一个就共用一个,不然难的去找问题。
  • 解压App离线SDK、并将UniPlugin-Hello-AS项目导入Android Studio中

           

  • 等待编译完成,需要较长的时间(15分钟左右,根据电脑性能、网速决定)

二、新建自定义模块(uniplugin_rfid)

***强烈建议:不要不听劝,本人踩了两天坑,不然有意想不到的问题等着你解决

  1. 把模块名定义好。
  2. 把事先定义好的包名直接拿过来用(事先生成的appKey中填写的包名,此处用之前定义好的包名),当然也可以重新定义新的包名,然后再去改appKey中的包名,再重新生成appKey即可。
  • 新建模块,

  • 定义模块名、定义包名,生成模块

  • 中途可能会因为build.gradle编译报错,直接将uniplugin_module模块下的build.gradle覆盖刚生成模块下的build.gradle,然后点击Try Again或者Sync Now

  • 覆盖AndroidManifest.xml文件,并修改配置,此处会报错,会提示你新建一个java类,直接创建,然后UniModule类(必须继承UniModule,必须@UniJSMethod注解),此时AndroidManifest.xml还会报错,按照提示修复即可变成同样的结构。

  • 创建RfidModule类,如果上一步已创建则忽略此步骤

注意:必须继承UniModule,必须@UniJSMethod注解

  • 添加测试方法:
package com.recognition.uniplugin_rfid;import android.content.Context;
import android.util.Log;import com.alibaba.fastjson.JSONObject;
import com.nlscan.uhf.lib.UHFReader;import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;public class RfidModule extends UniModule {// 使用UniJSMethod注解,才能使用js调用@UniJSMethod(uiThread = false)public void  add(JSONObject json, UniJSCallback callback) {final int a = json.getInteger("a");final int b = json.getInteger("b");callback.invoke(new JSONObject() {{put("code", 0);put("result", a + b);}});}private MyUhfManager uhfManager;// 初始化UHF设备@UniJSMethod(uiThread = false)public void initialize(Context context) {if (context != null) {uhfManager = uhfManager.getInstance(context.getApplicationContext());} else {Log.e("UHFPlugin", "Context is null, using application context instead.");uhfManager = uhfManager.getInstance(context.getApplicationContext());}}// 连接UHF设备@UniJSMethod(uiThread = false)public boolean connect() {if (uhfManager != null) {final CountDownLatch latch = new CountDownLatch(1);final boolean[] isConnected = {false};uhfManager.powerOn(result -> {isConnected[0] = result;latch.countDown(); // 回调完成时释放锁});try {// 等待回调完成(设定超时以防止无尽等待)latch.await(5, TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();}return isConnected[0];}return false;}// 断开连接@UniJSMethod(uiThread = false)public boolean disconnect() {if (uhfManager != null && uhfManager.isPowerOn()) {// 假设调用 stopInventory 后达到断开效果UHFReader.READER_STATE stopInventoryState = uhfManager.stopInventory();// 如果有设置功率的方法,也可以尝试将功率设为零来模拟断开uhfManager.setReadPower(0, result -> {// 此处 result 用于表示功率设为0是否成功});// 检查 stopInventory 的状态是否成功return stopInventoryState == UHFReader.READER_STATE.OK_ERR;}return false;}// 启动盘点@UniJSMethod(uiThread = false)public boolean startInventory() {if (uhfManager != null) {UHFReader.READER_STATE state = uhfManager.startInventory();return state == UHFReader.READER_STATE.OK_ERR;}return false;}// 停止盘点@UniJSMethod(uiThread = false)public boolean stopInventory() {if (uhfManager != null) {UHFReader.READER_STATE state = uhfManager.stopInventory();return state == UHFReader.READER_STATE.OK_ERR;}return false;}// 读取标签数据@UniJSMethod(uiThread = false)public String readTagData(int bank, int address, int blkcnt, String accessPassword) {if (uhfManager != null) {byte[] data = uhfManager.getDataByArea(bank, accessPassword, blkcnt);return data != null ? UHFReader.bytes_Hexstr(data) : null;}return null;}// 写入标签数据到EPC区@UniJSMethod(uiThread = false)public boolean writeTagDataToEPC(String data, String accessPassword) {if (uhfManager != null) {final CountDownLatch latch = new CountDownLatch(1);final boolean[] writeSuccess = {false};uhfManager.writeDataToEPC(data, accessPassword, (result, state) -> {writeSuccess[0] = result;  // 将回调结果存储到数组中latch.countDown();         // 回调完成时释放锁});try {// 等待回调完成(设置超时防止阻塞)latch.await(5, TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();}return writeSuccess[0];  // 返回写入操作的结果}return false;}// 写入标签数据到用户区@UniJSMethod(uiThread = false)public boolean writeTagDataToUser(String data, String accessPassword) {if (uhfManager != null) {final CountDownLatch latch = new CountDownLatch(1);final boolean[] writeSuccess = {false};uhfManager.writeDataToUser(data, accessPassword, (result, state) -> {writeSuccess[0] = result;  // 将回调结果存储到数组中latch.countDown();         // 回调完成时释放锁});try {// 等待回调完成(设置超时防止阻塞)latch.await(5, TimeUnit.SECONDS);} catch (InterruptedException e) {e.printStackTrace();}return writeSuccess[0];  // 返回写入操作的结果}return false;}}

三、将自定义插件添加到unapp插件中

  • 在app中的build.gradle中添加自定义插件模块

  • 在app中的dcloud_uniplugin.json添加自定义插件暴露的方法

编译通过即可,下一步进行真机调试。

快速通道:

uniapp—android原生插件开发(1环境准备)

uniapp—android原生插件开发(3Android真机调试)

http://www.dt0577.cn/news/30443.html

相关文章:

  • 海南网站建设监理小程序怎么开发
  • wordpress 排除置顶免费下优化大师
  • 类似wordpress北京seo网站管理
  • 苹果浏览器怎么信任网站设置在百度上怎么打广告
  • wordpress 注册连接网站搜索引擎优化
  • 株洲做网站公司2023年7 8月十大新闻
  • 网站源码怎么弄西安网站建设公司排行榜
  • 网上做网站手机网站模板下载
  • 深圳建网站服务公司推广咨询
  • 做药物分析必须知道的网站企业推广是什么意思
  • 做二手车网站需要什么手续费最新网站发布
  • 网站制作完成需要进行哪些测试seo有哪些经典的案例
  • wordpress主题DUX大前端怎么做网站关键词优化
  • wordpress 报表图形国家优化防控措施
  • 上海营销型网站标准有趣的软文
  • 沈阳微信网站制作成品短视频app下载有哪些
  • 网站后台插件下载杭州seo
  • 长沙科技网站设计哪家专业谷歌搜索排名
  • 做网站什么是三网合一网络营销策略方案
  • 德州营销型网站网络推广外包流程
  • 最牛黑客做的白粉交易网站杭州网站推广优化
  • 网页设计师招聘条件天津债务优化公司
  • 金湖网站建设免费做网页的网站
  • 免费咨询合同模板seo和sem的关系
  • 常用动态网站开发技术有哪些免费建立一个网站
  • 广州做外贸网站公司厦门网站推广优化哪家好
  • 上虞网站设计百度网盘搜索引擎入口在哪里
  • 外贸网站建设知识 列表推广哪个app最挣钱
  • 网站权重高+做别的关键词湖南网络推广机构
  • 做h5哪个网站好用国内真正的永久免费砖石