UniApp调用SDK原生接口

简介: UniApp调用SDK原生接口

有uniapp开发网友问我,因为公司业务需要调用原生SDK才能实现的功能,因为没有去了解Android原生的这方面知识,接下来带大家一起了解一下uniapp调用;

一,准备工作

  1. uniapp调用插件开发文档:https://nativesupport.dcloud.net.cn/NativePlugin/README
    先了解uniapp调用插件的大概意思,不然会碰到很多问题

2.下载App离线SDK及demo导入

https://nativesupport.dcloud.net.cn/AppDocs/download/android

UniPlugin-Hello-AS导入到Android Studio 中;

这个主要是用到了一个获取识别RFID的功能,插件准备做的功能是将手持设备实现一个多标签回调给UniApp;

3,新建一个Android 依赖包 命名uhfg

4.在build.gradle文件需要引用一下uinapp库


二,编写代码

编写工具类,提供数据

继承UniModule,提供uinapp调用

    /**
     * ========================
     * 描述:提供uinapp调用方法
     * @Data : 2022/9/8
     * @auther: qiuxianfu
     * ========================
     **/
    public class RFIDModule extends UniModule {
        private static final String TAG = "RFIDModule";
        /**
         * 获取单个标签
         * @param callback
         * @throws JSONException
         */
        @UniJSMethod(uiThread = false)
        public void getSingleRFID(UniJSCallback callback)  {
            if(callback != null) {
                String rfid = "";
                JSONObject data = new JSONObject();
                try {
                   RFIDInfo rfidInfo = RfidManage.getInstance().readRFID();
                   if (rfidInfo!= null) {
                       Gson gson = new Gson();
                       String json = gson.toJson(rfidInfo,new TypeToken<RFIDInfo>() {
                       }.getType());
                       data.put("code", "200");
                       data.put("data", json);
                       callback.invokeAndKeepAlive(data);
                       callback.invoke(data);
                   }
                }catch (Exception e){
                    try {
                        data.put("code", "400");
                        data.put("msg","异常"+e.getMessage());
                        callback.invokeAndKeepAlive(data);
                    } catch (JSONException ex) {
                        ex.printStackTrace();
                    }
                }
            }else {
                Log.i(TAG,"未传回调函数");
            }
        }
        @UniJSMethod(uiThread = false)
        public JSONObject getSingleRFID() {
            String rfid = "";
            JSONObject data = new JSONObject();        try {
                RFIDInfo rfidInfo = RfidManage.getInstance().readRFID();
                if (rfidInfo != null) {
                    Gson gson = new Gson();
                    String json = gson.toJson(rfidInfo, new TypeToken<RFIDInfo>() {
                    }.getType());
                    data.put("code", "200");
                    data.put("data", json);
                }
            } catch (Exception e) {
                e.printStackTrace();
    );
            }
        return data;
        }
        @UniJSMethod(uiThread = false)
        public void asyncGetMultipleRfid(UniJSCallback callback) {
            if(callback != null) {
                String rfid = "";
                JSONObject data = new JSONObject();
                try {
                    RfidManage until = RfidManage.getInstance();
                    until.startReadRFID(new RFIDUtilListener() {
                        @Override
                        public void callBackResult(RFIDInfo rfidInfo) {
    //                        isCounting = false;
                            Gson gson = new Gson();
                            String json = gson.toJson(rfidInfo,new TypeToken<RFIDInfo>() {
                            }.getType());
                            try {
                                data.put("code", "200");
                                data.put("msg","获取数据成功");
                                data.put("data",json);
                                callback.invokeAndKeepAlive(data);
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    });
                }catch (Exception e){
                    try {
                        data.put("code", "400");
                        data.put("msg","异常"+e.getMessage());
                        callback.invokeAndKeepAlive(data);
                    } catch (JSONException ex) {
                        ex.printStackTrace();
                    }
                }
            }else {
                Log.i(TAG,"未传回调函数");
            }
        }
        /**
         * 获取当前功率
         * @return
         * @throws JSONException
         */
        @UniJSMethod(uiThread = false)
        public JSONObject getPower(UniJSCallback callback) {
            int res = RfidManage.getInstance().getPower();
            JSONObject data = new JSONObject();
            try {
                data.put("code", "200");
                data.put("data", res);
                callback.invokeAndKeepAlive(data);
            }catch (Exception e){
                e.printStackTrace();
            }
            return data;
        }
        /**
         * 获取当前功率
         * @return
         * @throws JSONException
         */
        @UniJSMethod(uiThread = true)
        public boolean setPower(int power)  {
            boolean res = RfidManage.getInstance().setPower(power);
            return res;
        }
        /**
         * 自动设置功率
         * @return
         * @throws JSONException
         */
        @UniJSMethod(uiThread = true)
        public int setPowerAutomatic() {
            int res = RfidManage.getInstance().setAutoPower();
            return res;
        }
    }

    三,打包aar包

    如果Android studio 中 gradle task显示不全,则需要在setting

    勾选之后

    再点files 同步一下gradle文件即可

    点击其中一个就可以构建aar

    四,uinapp引用插件

    在项目下创建目录 nativeplugins 将插件包放在该目录下,插件结构如下。

    特别提醒:名字需要一直,否则一直失败

    然后在manifest.json引用即可

    制作自定义基座,选择自定义基座运行即可;

    相关文章
    |
    9月前
    |
    开发者 iOS开发
    UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“
    UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“
    269 3
    |
    2月前
    |
    监控 开发工具 Android开发
    ARMS 用户体验监控正式发布原生鸿蒙应用 SDK
    阿里云 ARMS 用户体验监控(RUM)推出了针对原生鸿蒙应用的 SDK。SDK 使用 ArkTS 语言开发,支持页面采集、资源加载采集、异常采集及自定义采集等功能,能够全面监控鸿蒙应用的表现。集成简单,只需几步即可将 SDK 接入项目中,为鸿蒙应用的开发者提供了强有力的支持。
    170 15
    |
    4月前
    |
    JSON 前端开发 API
    使用微信JS-SDK调用发票接口的完整开发指南
    本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
    138 2
    |
    7月前
    uniapp 打包成 apk(原生APP-云打包)免费
    uniapp 打包成 apk(原生APP-云打包)免费
    483 1
    |
    9月前
    |
    Android开发 UED 开发者
    【Uniapp 专栏】比较 Uniapp 与原生开发的差异与适用场景
    【5月更文挑战第15天】UniApp与原生开发各有千秋。UniApp以高效跨平台著称,一套代码覆盖多平台,降低开发成本,适合快速开发简单应用。原生开发则提供优秀性能和用户体验,适合对性能要求高的复杂应用。两者在功能实现和维护上各有优势,开发者需根据项目需求权衡选择。随着技术进步,两者都在不断优化,为移动应用开发带来新机遇。
    396 1
    【Uniapp 专栏】比较 Uniapp 与原生开发的差异与适用场景
    |
    8月前
    |
    API 开发工具
    企业微信SDK接口API调用-触发推送企业微信微信好友
    企业微信SDK接口API调用-触发推送企业微信微信好友
    |
    8月前
    |
    开发工具
    抖音sdk接口,抖音上线下线
    抖音sdk接口,抖音上线下线
    |
    8月前
    |
    开发工具
    抖音sdk接口,抖音粉丝或好友收发消息
    抖音sdk接口,抖音粉丝或好友收发消息
    |
    8月前
    |
    开发工具
    抖音sdk接口,关注与取消关注抖音号
    抖音sdk接口,关注与取消关注抖音号
    |
    8月前
    |
    开发工具
    抖音sdk接口,同步抖音推荐的好友
    抖音sdk接口,同步抖音推荐的好友

    热门文章

    最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
  • 4
    基于Uniapp+php校园小程序,校园圈子论坛系统功能,校园跑腿二手交流功能设计
  • 5
    uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
  • 6
    圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
  • 7
    大开眼界!uniapp秀操作,陪玩系统新功能,陪玩app源码,可实时互动随心优化!
  • 8
    如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
  • 9
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
  • 10
    全新uniapp小说漫画APP小说源码/会员阅读/月票功能