uniapp Native.js 调用安卓arr原生service

server/2024/12/21 9:06:12/
最近搞了个uni小项目,一个定制的小平板,带一个nfc设备,厂家只给了一套安卓原生demo,头一次玩原生安卓,废了好半天劲打出来arr包,想镶进uniapp里,网上查了好久,都是错的,要么无法运行,要么运行了没反应,要么编译都过不去。。。官网给的示例更是没有示例,主打一个用法全靠猜。。。

服务

厂家给了个NfcService 里面是继承自标准android.app.Service另一部分是个androidx.appcompat.app.AppCompatActivity页面,里面启动,调用的NfcService

java部分NfcService核心代码

private val connection = object : ServiceConnection {override fun onServiceConnected(p0: ComponentName?, p1: IBinder?) {Log.e(TAG, "onServiceConnected: ")nfcBinder = p1 as NfcService.MyBindernfcBinder?.openPort(model)}override fun onServiceDisconnected(p0: ComponentName?) {Log.e(TAG, "onServiceDisconnected: ")nfcBinder = null}
}override fun onCreate(savedInstanceState: Bundle?) {//无关代码太多,就不粘了//绑定服务bindService(Intent(this, NfcService::class.java), connection, Context.BIND_AUTO_CREATE)//一定条件后,解绑服务unbindService(connection)
}

从没接触过安卓原生,一下子就麻了,不知道在uni那边怎么用,找了半天找到了这个

uniapp的一个页面

//开启服务(无回值启动)
startAppService(){const mainActivity = plus.android.runtimeMainActivity();const Context = plus.android.importClass('android.content.Context');const Intent = plus.android.importClass('android.content.Intent');const intent = new Intent();intent.setClassName(mainActivity, 'com.rt.lib_nfc.NfcService');const Bundle = plus.android.importClass('android.os.Bundle');var bundle = new Bundle();intent.putExtras(bundle);mainActivity.startForegroundService(intent)
},
//绑定服务(有回值启动)
bindAppService(){const main = plus.android.runtimeMainActivity();const Context = plus.android.importClass('android.content.Context');const Service = plus.android.importClass('android.app.Service');const Intent = plus.android.importClass('android.content.Intent');let serviceConnectionFunc = {onServiceConnected: function(name, service) {console.log("服务已连接", name, service);//service.openPort('READ');this.nfcService = service;},onServiceDisconnected: function(name) {console.log("服务已断开", name);this.nfcService = null;}};let serviceConnection = plus.android.implements('android.content.ServiceConnection', serviceConnectionFunc);const intent = new Intent();intent.setClassName(main, 'com.rt.lib_nfc.NfcService');main.bindService(intent, serviceConnection, Service.BIND_AUTO_CREATE);
},
//最终使用
testService(){let res = this.nfcService?.openPort('get');console.log('res ->', res);
}

http://www.ppmy.cn/server/151908.html

相关文章

113.PyQt5_QtPrintSupport_打印操作

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :&#x1…

关于IP代理API,我应该了解哪些功能特性?以及如何安全有效地使用它来隐藏我的网络位置?

IP代理API是一种服务,允许用户通过访问经过中间服务器的网络连接来改变其公开的互联网协议地址(IP),从而达到隐藏真实地理位置的效果。以下是您在选择和使用IP代理API时应关注的一些功能和安全性考虑: 匿名度&#xff…

第3节 测试套件数据驱动

创建Excel、 CSV测试数据 1. 从主菜单中选择 File > New > Test Data。将显示新的测试数据对话框。输入测试数据的名称并选择数据类型作为Excel File/ CSV File 。单击OK。 2. 浏览到要导入Katalon Studio的Excel File, 选择Excel中的sheetName,或者CSV文件…

在 Windows 系统上怎么看sqlserver的驱动版本呢

在 Windows 系统上,可以通过以下几种方法查看已安装的 SQL Server ODBC 驱动版本: 方法 1:通过 ODBC 数据源管理器 打开 ODBC 数据源管理器: 按下 Win S,搜索 ODBC 数据源管理器(32位或64位,根…

Json 序列化一 —— 基础篇

1、简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它的作用是数据标记,存储,传输,具有读写速度快、解析简单、轻量级、独立于语言和平台、具有自我描述性等特点。 像 gson、fastjson、…

PT中的report_timing的计算--实例

目录 1.建立时间与保持时间2.输入延迟和输出延时3.时序计算实战3.1.输入延时:最大输入延时3. 2.输入延迟:最小输入延迟3.3.输出延迟:最大输出延迟3.4.输出延迟:最小输出延迟3.5.建立时间/保持时间和输入延时/输出延时之间的关系 1…

【漏洞复现】CVE-2023-29944 Expression Injection

漏洞信息 NVD - cve-2023-29944 Metersphere v1.20.20-lts-79d354a6 is vulnerable to Remote Command Execution. The system command reverse-shell can be executed at the custom code snippet function of the metersphere system workbench. 背景介绍 MeterSphere is…

[Unity Shader] 【图形渲染】Unity Shader的种类1-深入理解表面着色器(Surface Shader)

在 Unity 中,Shader 是图形渲染管线的核心部分,而表面着色器(Surface Shader)是一种高级抽象形式的着色器,使得编写和管理着色器变得更加简便。尽管表面着色器背后实际上是使用顶点/片元着色器(Vertex/Fragment Shader)进行渲染,但表面着色器的编写方式大大减少了开发者…