USB热敏打印机(佳博)
生活随笔
收集整理的這篇文章主要介紹了
USB热敏打印机(佳博)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近公司對接好多打印機,最后找到佳博。對接的時候有很多的坑,在沒有技術對接的情況下我只能一個一個坑的探
首先有必要講明一下必須完成和注重的地方
準備工作(必要)
主要是文檔上說的,看文檔真的很有必要。
1-sdk大致分為兩部分,打印機與客顯,不使用客顯可以不添加so。如果只考慮打印就只把libs文件的jar拷貝的自己的項目
同樣這也是我要實現的部分。
2-注冊服務和權限
<?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 文件
其內容大致為
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-啟動并綁定PrinterPrintService 服務
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-使用打印服務
到了這一步我就開始跳坑了,一步兩步似魔鬼的步伐,我就開始一步一步把自己遇到的坑的解決方法貼出來
1、USB打印調用int openPort(int PrinterId,int PortType,String DeviceName,int PortNumber);
該接口的作用主要是打開客戶端打開客戶端與打印機通訊端口,該接口會通過廣播返回PrinterId的打印機的連接狀態。這就是我遇到的第一個坑,如果仔細看文檔的朋友可以看到‘DeviceName’該字段需要獲取USB鏈接設備的名字的
我該怎么獲得呢,靜下心深挖以后,終于找到了方法。
鏈接打印機
class PrinterServiceConnection implements ServiceConnection {
@Override
public void onServiceDisconnected(ComponentName name) {
這樣基本上就已經鏈接上打印設備了你就可以調用打印設備了。這些方法基本上我都卸載 PrinterUtils中,有什么的不明白的可以下載下來dome看一下
dome地址
總結
以上是生活随笔為你收集整理的USB热敏打印机(佳博)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机毕业设计springboot+vu
- 下一篇: accp