日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

USB热敏打印机(佳博)

發(fā)布時(shí)間:2024/1/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB热敏打印机(佳博) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近公司對(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è)備的名字的
我該怎么獲得呢,靜下心深挖以后,終于找到了方法。

/*** 獲取USB打印機(jī)的名字** @return 返回的打印設(shè)備的名字, noDevices:沒有獲取到任何打印設(shè)備*/private String getUsbDevices() {String usbname = "";UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE);HashMap<String, UsbDevice> devices = manager.getDeviceList();Iterator<UsbDevice> deviceIterator = devices.values().iterator();int count = devices.size();Log.d(DEBUG_TAG, "count " + count);if (count > 0) {while (deviceIterator.hasNext()) {UsbDevice device = deviceIterator.next();String devicename = device.getDeviceName();if (checkUsbDevicePidVid(device)) {Log.e(DEBUG_TAG, "DevicesName " + devicename);usbname = devicename;}}} else {Log.e(DEBUG_TAG, "noDevices ");usbname = "noDevices";}return usbname;}/*** 判斷是否是USB打印機(jī)** @param dev* @return*/private boolean checkUsbDevicePidVid(UsbDevice dev) {int pid = dev.getProductId();int vid = dev.getVendorId();boolean rel = false;if ((vid == 34918 && pid == 256) || (vid == 1137 && pid == 85) || (vid == 6790 && pid == 30084) || (vid == 26728 && pid == 256) || (vid == 26728 && pid == 512) || (vid == 26728 && pid == 256) || (vid == 26728 && pid == 768) || (vid == 26728 && pid == 1024) || (vid == 26728 && pid == 1280) || (vid == 26728 && pid == 1536)) {rel = true;}ret

鏈接打印機(jī)

class PrinterServiceConnection implements ServiceConnection {
@Override
public void onServiceDisconnected(ComponentName name) {

Log.i(DEBUG_TAG, "onServiceDisconnected() called");mGpService = null;}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mGpService = GpService.Stub.asInterface(service);initUSBDevices();}}/*** 啟動(dòng)打印服務(wù)*/public void connection() {conn = new PrinterServiceConnection();Log.i(DEBUG_TAG, "connection");Intent intent = new Intent(context, GpPrintService.class);context.bindService(intent, conn, Context.BIND_AUTO_CREATE); // bindService}/*** 鏈接USB打印設(shè)備*/private void initUSBDevices() {int rel = 0;if (TextUtils.isEmpty(DeviceName)) {if (DeviceName.equals("noDevices")) showToast("請(qǐng)檢查打印機(jī)設(shè)備是否連接");return;}try {rel = mGpService.openPort(PrinterId, PortParameters.USB, DeviceName, 0);GpCom.ERROR_CODE r = GpCom.ERROR_CODE.values()[rel];switch (r) {case SUCCESS://正常Log.e(DEBUG_TAG, "正常");break;case FAILED://失敗Log.e(DEBUG_TAG, "失敗");break;case TIMEOUT:// 超時(shí)Log.e(DEBUG_TAG, "超時(shí)");break;case INVALID_DEVICE_PARAMETERS://無效的參數(shù)Log.e(DEBUG_TAG, "無效的參數(shù)");break;case DEVICE_ALREADY_OPEN://端口已經(jīng)打開Log.e(DEBUG_TAG, "端口已經(jīng)打開");break;case INVALID_PORT_NUMBER://無效的端口號(hào)Log.e(DEBUG_TAG, "無效的端口號(hào)");break;case INVALID_IP_ADDRESS://無效的 ip 地址Log.e(DEBUG_TAG, "無效的 ip 地址");break;case INVALID_CALLBACK_OBJECT://無效的回調(diào)Log.e(DEBUG_TAG, "無效的回調(diào)");break;case BLUETOOTH_IS_NOT_SUPPORT://設(shè)備不支持藍(lán)牙Log.e(DEBUG_TAG, "設(shè)備不支持藍(lán)牙");break;case OPEN_BLUETOOTH: //請(qǐng)打開藍(lán)牙Log.e(DEBUG_TAG, "請(qǐng)打開藍(lán)牙");break;case PORT_IS_NOT_OPEN://端口未打開Log.e(DEBUG_TAG, "端口未打開");break;case INVALID_BLUETOOTH_ADDRESS://無效的藍(lán)牙地址Log.e(DEBUG_TAG, "無效的藍(lán)牙地址");break;case PORT_IS_DISCONNECT://端口連接斷開Log.e(DEBUG_TAG, "端口連接斷開");break;}} catch (RemoteException e) {e.printStackTrace();}}

這樣基本上就已經(jīng)鏈接上打印設(shè)備了你就可以調(diào)用打印設(shè)備了。這些方法基本上我都卸載 PrinterUtils中,有什么的不明白的可以下載下來dome看一下

dome地址

總結(jié)

以上是生活随笔為你收集整理的USB热敏打印机(佳博)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产激情 | 久久视频免费在线观看 | 成人综合站 | 久久精品99 | 丰满少妇被猛烈进入 | 99涩涩 | 顶级黄色片 | 琪琪免费视频 | 国产超级av | 永久视频在线观看 | 污视频网站在线观看 | 国产精品国产精品国产专区不片 | 黄色片视频 | 精品一区二区三区在线观看视频 | 插我一区二区在线观看 | 亚洲码视频 | 无码人妻丰满熟妇啪啪欧美 | 久久久青青草 | 亚洲欧美精品一区二区 | 亚洲精品视频一二三区 | 欧美欧美欧美欧美 | 大胸美女无遮挡 | av福利在线免费观看 | 日韩精品――中文字幕 | 久久久在线观看 | 成人看片黄a免费看视频 | 成人国产精品久久久网站 | 免费成人美女在线观看. | 欧美精品一区二区免费看 | 免费色av | 人妻少妇精品无码专区二区 | 国产亚洲综合在线 | 免费一级肉体全黄毛片 | 一区二区三区国产精品 | 日韩图片一区 | 欧美日在线 | 亚洲欧美日韩精品在线 | 毛片链接| 欧美另类xxxxx | 色九九视频 | 色吧视频 | 男人操女人动态图 | 欧美激情一区二区在线 | 日韩有码视频在线 | 国产欧美日韩中文字幕 | 一区二区三区精品 | 国产东北真实交换多p免视频 | 亚洲国产视频网站 | 国产3页| 精品久久久视频 | 中文字幕精品一区二区三区精品 | 另类专区欧美 | 欧美精品性视频 | 国产精品亲子伦对白 | 亚洲激情网址 | 免费jizz| 催眠调教艳妇成肉便小说 | 国产精品999在线观看 | 欧美一区二区三区成人 | 在线激情网 | 久久国内免费视频 | 精品人妻一区二区免费视频 | 毛片在线看片 | 国产女人18水真多18精品一级做 | 一色屋免费视频 | 国产老女人乱淫免费可以 | 在线观看免费视频一区 | 亚洲人吸女人奶水 | 亚洲天堂av一区 | 色婷婷97 | 国产成人亚洲欧洲在线 | 三区在线 | 中文有码在线播放 | 国产精品久久久久久久久免费相片 | 91蜜臀精品国产自偷在线 | 国产精品一区二区在线看 | 一区二区三区视频在线免费观看 | 国产a级黄色片 | 黑森林av| 91导航 | 无码人妻精品一区二区三区在线 | 最新色站 | 又嫩又硬又黄又爽的视频 | 天操夜夜操 | 99在线免费视频 | 爱就操| 青青在线 | 不卡久久| a级一片| 四虎毛片 | 蜜臀aⅴ免费一区二区 | 欧美天堂一区 | 日本va欧美va国产激情 | 天天操天天插 | 日韩免费一二三区 | 欧美色图五月天 | av成人在线电影 | 午夜一区二区三区免费 | 美女被捅个不停 |