uniapp调用芯烨xprinter打印机安卓sdk

news/2024/10/18 5:57:41/

因为xprinter的安卓sdk需要在安卓项目里配置service,但是uniapp里云打包无法配置service,所以只能用原生插件离线打包的形式开发。https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android

UniPlugin-Hello-AS安卓项目引入 PosPrinterSDK.jar

1.android自定义插件代码

package com.yf.xprinter;import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;import com.taobao.weex.annotation.JSMethod;import net.posprinter.posprinterface.IMyBinder;
import net.posprinter.posprinterface.ProcessData;
import net.posprinter.posprinterface.TaskCallback;
import net.posprinter.service.PosprinterService;
import net.posprinter.utils.PosPrinterDev;
import net.posprinter.utils.StringUtils;import java.util.HashMap;
import java.util.List;import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;public class print extends UniModule {@JSMethod(uiThread = false)public String getVersion() {return "V20210622";}private static IMyBinder myBinder;private static ServiceConnection mSerconnection;@JSMethod(uiThread = false)public boolean serviceConnection(final UniJSCallback callback) {mSerconnection= new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {myBinder= (IMyBinder) service;callback.invokeAndKeepAlive("connect");}@Overridepublic void onServiceDisconnected(ComponentName name) {callback.invokeAndKeepAlive("disconnect");}};//bind service,get imyBinderIntent intent =new Intent(mWXSDKInstance.getContext(), PosprinterService.class);Activity activity = (Activity )mWXSDKInstance.getContext();activity.bindService(intent,mSerconnection,Activity.BIND_AUTO_CREATE);return true;}@JSMethod(uiThread = false)public List<String> getUsbPathNames() {return PosPrinterDev.GetUsbPathNames(mWXSDKInstance.getContext());}@JSMethod(uiThread = false)public boolean connectUsbPort(String usbAddress,final UniJSCallback callback) {myBinder.ConnectUsbPort(mWXSDKInstance.getContext(),usbAddress, new TaskCallback() {@Overridepublic void OnSucceed() {callback.invoke("succeed");}@Overridepublic void OnFailed() {callback.invoke("failed");}});return true;}@JSMethod(uiThread = false)public boolean testWrite(final UniJSCallback callback) {byte[] bytes= StringUtils.strTobytes("1234567890qwertyuiopakjbdscm nkjdv mcdskjb");myBinder.Write(bytes, new TaskCallback() {@Overridepublic void OnSucceed() {callback.invoke("succeed");}@Overridepublic void OnFailed() {callback.invoke("failed");}});return true;}@JSMethod(uiThread = false)public boolean write(byte[] bytes,final UniJSCallback callback) {myBinder.Write(bytes, new TaskCallback() {@Overridepublic void OnSucceed() {callback.invoke("succeed");}@Overridepublic void OnFailed() {callback.invoke("failed");}});return true;}@JSMethod(uiThread = false)public boolean writeSendData(final List<byte[]> byteList, final UniJSCallback callback) {myBinder.WriteSendData(new TaskCallback() {@Overridepublic void OnSucceed() {callback.invoke("succeed");}@Overridepublic void OnFailed() {callback.invoke("failed");}}, new ProcessData() {@Overridepublic List<byte[]> processDataBeforeSend() {return byteList;}});return true;}}

2.uniapp页面代码

<template><view><view><button @click="getversion()">getversion</button><button @click="serviceConnection()">serviceConnection</button><input style="width: 100%;" v-model="usbport"/><button @click="getUsbPathNames()">getUsbPathNames</button><button @click="connectUsbPort()">connectUsbPort</button><button @click="testWrite()">testWrite</button><button @click="printText()">printText</button></view><text v-for="(item,index) in msglist">{{item}}\n</text></view>
</template>
<script>const xprinter = uni.requireNativePlugin('zzzili-xprinter');export default {data() {return {msglist: [],usbport:'/dev/bus/usb/002/008'}},onLoad() {this.msglist.push('start test print')},methods: {getversion: function() {this.msglist.push(xprinter.getVersion());				},serviceConnection: function() {var that = this;var result = xprinter.serviceConnection(function(res){console.log(res);that.msglist.push(res);});				this.msglist.push(JSON.stringify(result));},getUsbPathNames: function() {var that = this;var result = xprinter.getUsbPathNames();		this.msglist.push(JSON.stringify(result));	},connectUsbPort: function() {var that = this;var result = xprinter.connectUsbPort(this.usbport,function(res){console.log(res);that.msglist.push(res);});		this.msglist.push(result);	},printText: function() {var that = this;var str = "123456789zbc";var result = xprinter.write(str.getBytes(),function(res){console.log(res);that.msglist.push(res);});		this.msglist.push(result);	},testWrite: function() {var that = this;var result = xprinter.testWrite(function(res){console.log(res);that.msglist.push(res);});		this.msglist.push(result);	},}}
</script>
<style>
</style>

3.安卓项目AndroidManifest.xml文件中增加配置

<service android:name="net.posprinter.service.PosprinterService" />


http://www.ppmy.cn/news/338934.html

相关文章

Android Studio 使用夜神模拟器查看apk打印日志

Android Studio 使用夜神模拟器查看apk打印日志步骤&#xff1a; 1、打开Android Studio 创建 一个新的Android 项目。 此时点击运行&#xff0c;查看模拟器可知没有夜神模拟器设备 2、打开夜神模拟器 3、使用adb命令连接夜神模拟器 adb connect 127.0.0.1:62001 4、再次点击…

Android之USB打印

文章目录 前言一、效果图二、使用步骤1.UsbPrinter类2.ESCUtil类3.BytesUtil工具类4.Activity使用 前言 最近公司需要连接芯烨云的串口打印机&#xff0c;因为云打印有很多弊端&#xff0c;这个大家都懂&#xff0c;费什么话&#xff0c;上菜&#xff01; 一、效果图 常规出牌…

技术分享 | app测试中常用的Android模拟器

测试 Android app 的时候&#xff0c;Android 模拟器是经常会用到的工具。模拟器可以轻松的模拟不同的品牌、分辨率和 Android 系统版本。可以让兼容测试做起来更容易。 下面就来看看目前常用的 Android 模拟器都有哪些。 Emulator Emualor 是 Android Studio 自带的模拟器&…

Android系统上部署usb打印机

Android系统上部署usb打印机 一、综述 android系统现多用于手持设备&#xff0c;为手机等设备应用提供了很好的系统级支持。但对于PC机常用的打印功能&#xff0c;android到目前并不支持&#xff0c;也没有打印机厂家专门为android设备做打印机驱动。因此在android上实现usb打…

Android 蓝牙连接打印机打印网络图片

实现蓝牙连接打印机打印网络图片 经过自己一下午加一个小时的时间整理出来&#xff0c;希望能帮助到各位码兄弟&#xff01;主要分为以下几步&#xff1a; 将网络图片URL转为bitmap &#xff1a;其中需要进行网络请求&#xff0c;不可在主线程中进行&#xff0c;需另起一个线程…

android 通过wifi调用打印机

android是可以通过wifi调用打印机打印图片或者文档的&#xff0c;在API19之前&#xff0c;调用打印机是通过Socket通信然后打印东西的&#xff0c;Socket是比较原始的通信模式&#xff0c;也是相对比较底层的&#xff0c;一般通过端口连接是可以连接任意两台机器进行数据传输并…

Android连接USB打印机

项目中需要用到android设备通过USB连接热敏打印机打印图文混排的小条&#xff0c;总结一下。 外部主要是用这个方法来打印&#xff1a; /*** 打印核验小条* 子线程中运行*/private static int times 0;public void printVerifyData(String tmpName,String tmpIdNo,String cur…

Android蓝牙打印机,带你真正了解各种打印格式

本文主要讲解蓝牙打印机在打印小票的过程中&#xff0c;如何打印各种常见格式。由于之前需要调试打印格式&#xff0c;但是苦于网上没有详细的讲解教程&#xff0c;无奈只能自给自足&#xff0c;自己封装了一个。如果各位盆友正在或者曾经苦恼蓝牙打印机的打印格式&#xff0c;…