.NET MAUI Android 對(duì)接商米移動(dòng)手持終端打印JAVA SDK
一、前言(整個(gè)流程除了調(diào)整打印模板位子,操作下來(lái)還是挺快的 幾分鐘就搞定,文章圖片比較多大家可能感覺(jué)操作比較麻煩,其實(shí)挺簡(jiǎn)單的)
因甲方需求,需要對(duì)現(xiàn)項(xiàng)目進(jìn)行升級(jí),需要增加移動(dòng)手持終端進(jìn)行巡檢,巡檢時(shí)還需要對(duì)商品進(jìn)行抽檢并打印熱敏不干膠標(biāo)簽進(jìn)行貼到抽樣樣品上。在這樣的背景下便在JD進(jìn)行了采樣,進(jìn)行技術(shù)性研究。本文章將一步一步教大家如何使用.NET MAUI 來(lái)集成java printerx 來(lái)實(shí)現(xiàn)使用MAUI 在移動(dòng)終端上進(jìn)行標(biāo)簽打印。 下方是采購(gòu)的移動(dòng)終端設(shè)備。

二、下載AAR 開(kāi)發(fā)SDK
通過(guò)官方文檔我們得知 設(shè)備的打印SDK包是 printerx,開(kāi)發(fā)包是JAVA開(kāi)發(fā)的,這種情況如何使用MAUI進(jìn)行對(duì)接呢?這難不倒我們,我們今天就用.NET MAUI 來(lái)進(jìn)行集成 printerx

1、打開(kāi)https://mvnrepository.com 網(wǎng)站,搜索 printerx
https://mvnrepository.com/search?q=printerx

2、點(diǎn)擊 printerx 進(jìn)去后,我們選擇最新版 “1.0.14”

3、然后點(diǎn)擊 View All ,將看到如下界面。

4、第一個(gè) printerx-1.0.14.aar 是我們需要下載的文件,點(diǎn)擊將來(lái)文件下載到本地桌面。

三、在MAUI中集成AAR SDK
1、是用VS2022 新建MAUI項(xiàng)目(.NET 7),然后添加新項(xiàng)目“Android 綁定庫(kù)(Xmarin)”,沒(méi)有“Android 綁定庫(kù)(Xmarin)”的在installer中選擇安裝 Xmarin。


2、打開(kāi)“Android 綁定庫(kù)(Xmarin)”項(xiàng)目,打開(kāi) Jars文件夾,將之前下載的 printerx-1.0.14.aar 拷貝進(jìn)文件夾內(nèi)。

3、右擊 printerx-1.0.14.aar 選擇屬性,將生成操作選擇 “LibraryProjectZip”。

4、查看項(xiàng)目屬性,和我的保持一致。

5、將MAUI項(xiàng)目中 安卓端引用 “Android 綁定庫(kù)(Xmarin)”項(xiàng)目。

6、應(yīng)為前幾次測(cè)試的時(shí)候,WIndows、IOS端有報(bào)錯(cuò)提示不兼容發(fā)生,我將其他端都刪掉了,只保留了安卓端。
四、調(diào)試移動(dòng)終端
1、為了方便測(cè)試 我把代碼寫到了"MainPage.xaml.cs",MAUI自動(dòng)生成的代碼沒(méi)有刪除,也再文件中。以下是完整代碼,應(yīng)為是技術(shù)性測(cè)試所以代碼寫的不是很規(guī)范,打印標(biāo)簽的位子也是寫的很隨意,正式放到項(xiàng)目中將優(yōu)化。
using Android.Icu.Text;
using Com.Sunmi.Printerx;
using Java.Interop;
using Java.Util;
namespace MauiApp1
{
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
}
public Com.Sunmi.Printerx.PrinterSdk.Printer Printer;
private void OnCounterClicked(object sender, EventArgs e)
{
var listen = new PrinterListen();
Com.Sunmi.Printerx.PrinterSdk.Instance.GetPrinter(
Android.App.Application.Context, listen
);
count++;
if (count == 1)
CounterBtn.Text = $"Clicked {count} time";
else
CounterBtn.Text = $"Clicked {count} times";
SemanticScreenReader.Announce(CounterBtn.Text);
}
public class PrintResult2 : Com.Sunmi.Printerx.Api.PrintResult
{
public override void OnResult(int p0, string p1)
{
}
}
//獲取打印機(jī)監(jiān)
public class PrinterListen : Java.Lang.Object, Com.Sunmi.Printerx.PrinterSdk.IPrinterListen
{
public Com.Sunmi.Printerx.PrinterSdk.Printer Printer;
public void OnDefPrinter(PrinterSdk.Printer p0)
{
this.Printer = p0;//獲取到打印機(jī)
var api = Printer.CanvasApi();
api.InitCanvas(Com.Sunmi.Printerx.Style.BaseStyle.Style.SetWidth(52*8).SetHeight(35*8));//初始化
api.RenderArea(Com.Sunmi.Printerx.Style.AreaStyle.Style.SetWidth(49*8).SetHeight(33*8)//設(shè)置打印區(qū)域
.SetStyle(Com.Sunmi.Printerx.Enums.Shape.RectWhite)
.SetPosX(0).SetPosY(0));
api.RenderText("標(biāo)題", //打印字符串
Com.Sunmi.Printerx.Style.TextStyle.Style
.SetAlign(Com.Sunmi.Printerx.Enums.Align.Center)
.SetTextSize(32)
.SetPosX(208).SetPosY(16)
);
api.RenderText("商品名稱(車牌號(hào))",
Com.Sunmi.Printerx.Style.TextStyle.Style
.SetAlign(Com.Sunmi.Printerx.Enums.Align.Center)
.SetTextSize(30)
.SetPosX(208).SetPosY(40 + 10)
.EnableBold(true)
);
api.RenderBarCode("2311202003400013",//打印條形碼
Com.Sunmi.Printerx.Style.BarcodeStyle.Style
.SetAlign(Com.Sunmi.Printerx.Enums.Align.Center)
.SetPosX(208).SetPosY(38+12+30)
.SetBarHeight(80).SetDotWidth(3)
.SetWidth(350)
);
api.RenderText("2311202003400013",
Com.Sunmi.Printerx.Style.TextStyle.Style
.SetAlign(Com.Sunmi.Printerx.Enums.Align.Center)
// .SetTextSize(24)
.SetPosX(208).SetPosY(38+32+95)
);
api.RenderText("商戶姓名:姓名007",
Com.Sunmi.Printerx.Style.TextStyle.Style
// .SetAlign(Com.Sunmi.Printerx.Enums.Align.Center)
// .SetTextSize(20)
.EnableBold(true)
.SetPosX(30).SetPosY(38 + 32 + 100 +23)
);
api.RenderText("抽樣時(shí)間:2023-11-02 13:00",
Com.Sunmi.Printerx.Style.TextStyle.Style
.EnableBold(true)
.SetPosX(30).SetPosY(38 + 32 + 100 +25+25)
);
var printReuslt = new PrintResult2();
api.PrintCanvas(1, printReuslt);
}
public void OnPrinters(IList<PrinterSdk.Printer> p0)
{
this.Printer.Dispose();
}
}
}
}
五、完成對(duì)接
通過(guò)以上操作便可以打印出標(biāo)簽了,以下是測(cè)試效果。


浙公網(wǎng)安備 33010602011771號(hào)