日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丁香婷婷一区二区三区 | 欧美日韩黄色一级片 | 影音先锋男人站 | 波多野吉衣av无码 | 日本中文字幕在线看 | 秋霞视频在线 | 91射区| 二区免费视频 | 一区二区中文 | 欧美女优在线 | 四虎影院在线视频 | 亚洲精品一区二区三区蜜桃久 | 亚洲高清色图 | 中文字幕一区二区久久人妻网站 | 久久成人18免费观看 | 高清一区二区 | 欧美爽爽爽| a级在线观看网站 | www.com捏胸挤出奶 | 2019天天干| 欲色影音 | 秋霞午夜伦理 | 看片久久 | 美女被男生免费视频 | 黄色a一级片 | 国产亚洲一区在线 | 一区二区高清视频 | 大粗鳮巴久久久久久久久 | 草久久免费视频 | 3d动漫啪啪精品一区二区中文字幕 | 狠狠操中文字幕 | 亚洲精品国产精品乱码不卡√香蕉 | 欧美少妇bbw | 亚洲精品系列 | 久久久综合精品 | 亚洲91久久 | 涩天堂 | 色婷婷一区二区三区四区 | 五月婷婷狠狠爱 | 韩国精品视频在线观看 | 欧美一区三区二区在线观看 | 激情视频免费在线观看 | 成人一级片在线观看 | 日韩欧美黄色网址 | 永久久久久久 | 国产一区h| 性做久久久久久久 | 久久理论视频 | 欧美熟妇精品黑人巨大一二三区 | 日韩色图视频 | www.97av.com| 亚洲911精品成人18网站 | 男人日女人b视频 | 午夜爱爱网站 | 国产精品一国产精品 | 国产一区二区三区四区五区 | 综合色导航 | 精品久久久久久久中文字幕 | 五月在线视频 | 日本肉体xxxx裸体137大胆图 | 日韩在线视频免费播放 | 久久精品23 | 2021国产精品视频 | 丝袜美腿av在线 | www国产视频 | 国产精品视频免费在线观看 | 成人精品一区日本无码网 | 999精品在线观看 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 欧美图片自拍偷拍 | 久久天天干 | 欧美色图五月天 | 天堂一区在线观看 | 精品视频一二三 | 自拍视频在线 | 日本在线播放视频 | 影音先锋黄色网址 | 日韩精品aaa | 91精品久久久久久久99蜜桃 | 亚洲欧美日韩在线一区二区 | 国产一级淫 | 精品人妻伦一二三区免费 | 国产一区视频观看 | 国产激情91 | 日本xxxx在线观看 | 自拍偷拍亚洲图片 | 国产精品天美传媒入口 | 中文字幕永久视频 | 这里只有精品免费视频 | 91久久精品在线 | 与子敌伦刺激对白播放的优点 | 可以免费观看的毛片 | 3d动漫精品啪啪一区二区竹菊 | 亚洲国产综合av | 欧美午夜精品久久久久免费视 | 殴美一区二区 | 亚洲精品视频导航 | 一区二区三区国产在线观看 | 欧美日本在线视频 |