如何在不使用RAMBT的情况下让Sunmi V2 Pro本地应用直接打印?
Sunmi V2 Pro 应用内直接打印(无需RAMBT)解决方案
你查阅的应该是通用打印SDK,Sunmi V2 Pro自带内置热敏打印模块,要实现应用内直接打印,必须使用Sunmi官方的设备专属SDK,而非仅支持蓝牙/WiFi的通用版本。
核心实现步骤:
- 集成专属SDK:在项目依赖中添加Sunmi Device SDK(针对V2 Pro的适配版本),比如在Gradle中引入:
implementation 'com.sunmi:sunmi-printer:1.0.0' - 配置权限:在
AndroidManifest.xml中添加打印相关权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="com.sunmi.permission.PRINT_SERVICE" /> - 绑定打印服务:通过绑定系统内置的
SunmiPrinterService获取打印实例,无需额外蓝牙/WiFi配对 - 调用打印API:直接使用SDK提供的方法发送打印指令,无需依赖RAMBT中转
- 集成专属SDK:在项目依赖中添加Sunmi Device SDK(针对V2 Pro的适配版本),比如在Gradle中引入:
关键代码示例:
private ServiceConnection printServiceConn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { SunmiPrinterService printerService = SunmiPrinterService.Stub.asInterface(iBinder); try { // 打印文本内容 printerService.printText("订单编号:20240520001\n", null); printerService.printText("商品名称:测试商品\n", null); // 执行走纸操作 printerService.lineWrap(2); // 切纸(V2 Pro支持自动切纸) printerService.cutPaper(); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName componentName) {} }; // 在Activity启动时绑定服务 @Override protected void onResume() { super.onResume(); Intent intent = new Intent(); intent.setComponent(new ComponentName("com.sunmi.printer", "com.sunmi.printer.service.SunmiPrinterService")); bindService(intent, printServiceConn, BIND_AUTO_CREATE); } // 在Activity销毁时解绑服务 @Override protected void onPause() { super.onPause(); unbindService(printServiceConn); }额外注意事项:
- 动态申请必要权限,避免因权限不足导致打印失败
- 混淆规则中需排除打印SDK相关类,在
proguard-rules.pro添加:-keep class com.sunmi.printer.** { *; } -keep interface com.sunmi.printer.** { *; } - 必须在Sunmi V2 Pro真机上测试,模拟器无法模拟内置打印硬件
内容的提问来源于stack exchange,提问作者Mazco
相关产品推荐
相关产品推荐

