官方文档及资源

App 离线 SDK 下载解压后,使用 Android Studio 打开UniPlugin-Hello-AS 工程,删除自带的三个模块:

uniplugin_component

uniplugin_module

uniplugin_richalert添加模块,将需要调用的 jar 包拷贝到新增模块的 libs文件夹下,并添加依赖:

编写 js 与 jar包相互调用的中间件:package com.example.handheld;

import android.util.Log;

import com.alibaba.fastjson.JSONObject;

import com.cmcid.lib.Common;

import com.cmcid.lib.Device;

import com.cmcid.lib.OnHandleListener;

import com.cmcid.lib.Power;

import com.taobao.weex.annotation.JSMethod;

import com.taobao.weex.bridge.JSCallback;

import com.taobao.weex.common.WXModule;

public class HandheldModule extends WXModule {

private Device device;

private Beep beep;

public static final String TAG = "Lu Chang li";

private JSCallback handleCallback;

OnHandleListener onHandleListener = new OnHandleListener() {

@Override

public void onDown() {

if (handleCallback == null) return;

mWXSDKInstance.runOnUiThread(new Runnable() {

@Override

public void run() {

JSONObject data = new JSONObject();

data.put("code", "down");

// invokeAndKeepAlive 可以持续回调, invoke只能回调一次

handleCallback.invokeAndKeepAlive(data);

}

});

}

@Override

public void onUp() {

if (handleCallback == null) return;

mWXSDKInstance.runOnUiThread(new Runnable() {

@Override

public void run() {

JSONObject data = new JSONObject();

data.put("code", "up");

handleCallback.invokeAndKeepAlive(data);

}

});

}

};

/**

* 初始化

*/

@JSMethod

public void initHandheld(JSCallback callback) {

device = Device.getInstance(mWXSDKInstance.getContext());

device.setOnHandleListener(onHandleListener);

JSONObject result = new JSONObject();

if (device.connect()) {

result.put("code", "success");

} else {

result.put("code", "failure");

}

callback.invoke(result);

beep = new Beep(mWXSDKInstance.getContext());

}

/**

* 设置监听器

*/

@JSMethod

public void setOnHandleListener(JSCallback callback) {

this.handleCallback = callback;

}

/*

* 设置功率

*/

@JSMethod

public void setPower(JSONObject option, JSCallback callback) {

Power power = JSONObject.parseObject(option.toJSONString(), Power.class);

JSONObject result = new JSONObject();

try {

device.setPower(power);

result.put("code", "success");

beep.playOk();

} catch (Exception e) {

e.printStackTrace();

result.put("code", "failure");

beep.playError();

}

callback.invoke(result);

}

}

注册中间件:

在 app/assets/dcloud_uniplugins.json文件中添加:"plugins": [

{

"type": "module",

"name": "HandheldModule",

"class": "com.example.handheld.HandheldModule"

}

]

在 vue 中调用 jar 包中的方法:

var handheld = uni.requireNativePlugin("HandheldModule")

const defaultPower = {

db: 28,

dwell: 200,

idle: 50

}

export default {

data () {

return {

power: Object.assign({}, defaultPower),

}

},

mounted() {

handheld.setOnHandleListener(this.onHandler);

},

methods: {

onHandler: function(e) {

if (e.code === 'up') {

} else if (e.code === 'down') {

}

},

setPowerClick: function(e) {

handheld.setPower(this.power, (res)=> {

})

}

}

}

使用 HBuilder 生成本地打包App资源 拷贝到 app 资源文件夹下。

来源:oschina

链接:https://my.oschina.net/u/4347922/blog/4667272

uni-app调用android方法,uni-app 调用 jar 包相关推荐

  1. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  2. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  3. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  4. unity3d调用android方法,Unity3D 调用Android原生方法2

    原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅Unity3D引擎技术交流QQ群:[119706192]本文链接地址:Unity3D 调用Android原生方法2 记一次Unity通过An ...

  5. android 引用非 android 工程,Unity3D调用android方法(非插件方式)

    关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: android与Unity3D ...

  6. Unity3D调用android方法(非插件方式)

    关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...

  7. js调android方法失败,安卓开发学习之解决JS不能调用Android方法

    背景 这两天在做划词搜索时,需要让前端的js调用后端的Android方法,但总是调不成,经过搜索,问题解决,现记录成文. 解决方案 1.确定调用了webView.addJavascriptInterf ...

  8. unity无法调用android,Unity3D调用android方法(非插件方式)

    关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: 下面,我们来说说本博客的终端, ...

  9. android app冷启动,Android冷启动实现APP秒开

    在阅读这篇文章之前,首先需要理解几个东西: 1.什么是Android的冷启动时间? 冷启动时间是指用户从手机桌面点击APP的那一刻起到启动页面的Activity调用onCreate()方法之间的这个时 ...

  10. android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...

    android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...

最新文章

  1. 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!
  2. python数据文件读写
  3. 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
  4. mac基础操作:在Mac上怎么使用夜览
  5. SpringBoot的Bean之基本定义与使用
  6. linux开机黑屏时间长,Linux 开机进入紧急模式,出现黑屏 grub 的参考解决方案
  7. 【笔试/面试】—— 有向无环图(DAG)的最短路径问题(动态规划)
  8. 无标题自用临时文档.C# | python交互
  9. sony手机刷linux,索尼Z3 Z3C 5.0系统刷recovery教程_Sony Z3第三方recovery
  10. project甘特图导出图片_Project2013教程-常见视图-甘特图
  11. 机械键盘无冲测试软件,全键无冲/六键无冲可切换 键盘测试_狼派 X09暗影机械键盘_键鼠评测-中关村在线...
  12. 简支梁挠度计算公式推导_简支梁的最大挠度计算公式 l.ppt
  13. 动态规划-击爆气球 Burst Balloons
  14. 金融素养提升活动 | 第八届东方财富杯全国大学生金融挑战赛启动
  15. 正文 第二章 通背拳
  16. 上市公司融资约束SA测算以及结果(2000-2019)
  17. Exception的处理
  18. python for循环语句1到100_python——循环语句
  19. Java switch和break用法
  20. 组合问题,用1元纸币兑换1分,2分和5分硬币,要求兑换总数为50枚,问组合方式多少种?

热门文章

  1. 固态硬盘是什么接口_笔记本固态硬盘的接口有哪些?来学习下笔记本SSD小知识...
  2. tensorflow模型量化篇(1)量化方法及动态范围量化
  3. java输出精度到0.1_【java】浮点数精度问题,为什么0.1===0.1 5+0.1 = 5.1?
  4. 网络打印机计算机服务,在Windows7中添加网络打印机的解决方案提示“本地打印机后台处理程序服务未运行”...
  5. 深入浅出MMC子系统
  6. 计算机R3处理器,电脑r3处理器好不好
  7. 气血瘀滞热入血室闭经案
  8. 51单片机延时程序的延时时间计算
  9. RF天线设计的一些概念
  10. 今日分享——《青春》(李大钊)