uni-app调用android方法,uni-app 调用 jar 包
官方文档及资源
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 包相关推荐
- android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件
Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...
- 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...
- unity3d调用android方法,Unity3D 调用Android原生方法2
原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅Unity3D引擎技术交流QQ群:[119706192]本文链接地址:Unity3D 调用Android原生方法2 记一次Unity通过An ...
- android 引用非 android 工程,Unity3D调用android方法(非插件方式)
关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: android与Unity3D ...
- Unity3D调用android方法(非插件方式)
关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...
- js调android方法失败,安卓开发学习之解决JS不能调用Android方法
背景 这两天在做划词搜索时,需要让前端的js调用后端的Android方法,但总是调不成,经过搜索,问题解决,现记录成文. 解决方案 1.确定调用了webView.addJavascriptInterf ...
- unity无法调用android,Unity3D调用android方法(非插件方式)
关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: 下面,我们来说说本博客的终端, ...
- android app冷启动,Android冷启动实现APP秒开
在阅读这篇文章之前,首先需要理解几个东西: 1.什么是Android的冷启动时间? 冷启动时间是指用户从手机桌面点击APP的那一刻起到启动页面的Activity调用onCreate()方法之间的这个时 ...
- android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...
android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...
最新文章
- 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!
- python数据文件读写
- 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
- mac基础操作:在Mac上怎么使用夜览
- SpringBoot的Bean之基本定义与使用
- linux开机黑屏时间长,Linux 开机进入紧急模式,出现黑屏 grub 的参考解决方案
- 【笔试/面试】—— 有向无环图(DAG)的最短路径问题(动态规划)
- 无标题自用临时文档.C# | python交互
- sony手机刷linux,索尼Z3 Z3C 5.0系统刷recovery教程_Sony Z3第三方recovery
- project甘特图导出图片_Project2013教程-常见视图-甘特图
- 机械键盘无冲测试软件,全键无冲/六键无冲可切换 键盘测试_狼派 X09暗影机械键盘_键鼠评测-中关村在线...
- 简支梁挠度计算公式推导_简支梁的最大挠度计算公式 l.ppt
- 动态规划-击爆气球 Burst Balloons
- 金融素养提升活动 | 第八届东方财富杯全国大学生金融挑战赛启动
- 正文 第二章 通背拳
- 上市公司融资约束SA测算以及结果(2000-2019)
- Exception的处理
- python for循环语句1到100_python——循环语句
- Java switch和break用法
- 组合问题,用1元纸币兑换1分,2分和5分硬币,要求兑换总数为50枚,问组合方式多少种?
热门文章
- 固态硬盘是什么接口_笔记本固态硬盘的接口有哪些?来学习下笔记本SSD小知识...
- tensorflow模型量化篇(1)量化方法及动态范围量化
- java输出精度到0.1_【java】浮点数精度问题,为什么0.1===0.1 5+0.1 = 5.1?
- 网络打印机计算机服务,在Windows7中添加网络打印机的解决方案提示“本地打印机后台处理程序服务未运行”...
- 深入浅出MMC子系统
- 计算机R3处理器,电脑r3处理器好不好
- 气血瘀滞热入血室闭经案
- 51单片机延时程序的延时时间计算
- RF天线设计的一些概念
- 今日分享——《青春》(李大钊)