USB热敏打印机(佳博)
最近公司對(duì)接好多打印機(jī),最后找到佳博。對(duì)接的時(shí)候有很多的坑,在沒有技術(shù)對(duì)接的情況下我只能一個(gè)一個(gè)坑的探
首先有必要講明一下必須完成和注重的地方
準(zhǔn)備工作(必要)
主要是文檔上說的,看文檔真的很有必要。
1-sdk大致分為兩部分,打印機(jī)與客顯,不使用客顯可以不添加so。如果只考慮打印就只把libs文件的jar拷貝的自己的項(xiàng)目
同樣這也是我要實(shí)現(xiàn)的部分。
2-注冊(cè)服務(wù)和權(quán)限
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.sample"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="22" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.hardware.usb.accessory" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-feature android:name="android.hardware.usb.host" /><applicationandroid:allowBackup="true"android:icon="@drawable/launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><serviceandroid:name="com.gprinter.service.GpPrintService"android:enabled="true"android:exported="true"android:label="GpPrintService" ><intent-filter><action android:name="com.gprinter.aidl.GpPrintService" /></intent-filter></service><service android:name="com.gprinter.service.AllService" ></service></application></manifest>3-添加aidl 文件
其內(nèi)容大致為
package com.gprinter.aidl;interface GpService{int openPort(int PrinterId,int PortType,String DeviceName,int PortNumber);void closePort(int PrinterId);int getPrinterConnectStatus(int PrinterId);int printeTestPage(int PrinterId);void queryPrinterStatus(int PrinterId,int Timesout,int requestCode);int getPrinterCommandType(int PrinterId);int sendEscCommand(int PrinterId, String b64);int sendLabelCommand(int PrinterId, String b64);void isUserExperience(boolean userExperience);String getClientID();int setServerIP(String ip, int port); }4-啟動(dòng)并綁定PrinterPrintService 服務(wù)
private PrinterServiceConnection conn = null;class PrinterServiceConnection implements ServiceConnection {@Overridepublic void onServiceDisconnected(ComponentName name) {Log.i("ServiceConnection", "onServiceDisconnected() called");mGpService = null;}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mGpService = GpService.Stub.asInterface(service);}}@Overridepublic void onCreate(Bundle savedInstanceState) {conn = new PrinterServiceConnection();Intent intent = new Intent(this, GpPrintService.class);bindService(intent, conn, Context.BIND_AUTO_CREATE); // bindService}5-使用打印服務(wù)
到了這一步我就開始跳坑了,一步兩步似魔鬼的步伐,我就開始一步一步把自己遇到的坑的解決方法貼出來
1、USB打印調(diào)用int openPort(int PrinterId,int PortType,String DeviceName,int PortNumber);
該接口的作用主要是打開客戶端打開客戶端與打印機(jī)通訊端口,該接口會(huì)通過廣播返回PrinterId的打印機(jī)的連接狀態(tài)。這就是我遇到的第一個(gè)坑,如果仔細(xì)看文檔的朋友可以看到‘DeviceName’該字段需要獲取USB鏈接設(shè)備的名字的
我該怎么獲得呢,靜下心深挖以后,終于找到了方法。
鏈接打印機(jī)
class PrinterServiceConnection implements ServiceConnection {
@Override
public void onServiceDisconnected(ComponentName name) {
這樣基本上就已經(jīng)鏈接上打印設(shè)備了你就可以調(diào)用打印設(shè)備了。這些方法基本上我都卸載 PrinterUtils中,有什么的不明白的可以下載下來dome看一下
dome地址
總結(jié)
以上是生活随笔為你收集整理的USB热敏打印机(佳博)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机毕业设计springboot+vu
- 下一篇: accp