緣由
最近公司上了新的項目,需求大概就是你出去吃飯買單的時候,收銀妹紙會在平板上操作來進行收銀并打印小票,這個客戶端目前大多都是Android系統(tǒng),那么其中就要用到Android平板連接打印機來進行通訊了。這個項目(以下簡稱收銀平板)之前是有另外一個團隊(以下簡稱CS)開發(fā)的,目前是要重構(gòu)并升級到2.0版本。但是前幾天CS反饋說是最近遇見bug,打印機和平板會莫名斷開連接,其中實現(xiàn)的重連機制也不好使。由于即將進行2.0的開發(fā)工作,也是為了進一步熟悉當中的業(yè)務,然后跟CS要來代碼,研究了一通,發(fā)現(xiàn)之前的1.0代碼寫得...可能是接手人員比較多,也有可能開發(fā)周期的問題吧。
環(huán)境
我現(xiàn)在的環(huán)境是AS2.0,佳博5890XIII打印機,端口是wifi連接,該款打印機也支持藍牙和USB,GprinterSDKV2.1,如果是其他型號可以去佳博官網(wǎng)下載對應sdk。將拷來的代碼在這個環(huán)境跑了多次,模擬了兩種常見的情景:斷網(wǎng),斷電確實出現(xiàn)過連接丟失的情況。首先是檢查相關(guān)代碼的邏輯,由于年代比較久遠,接手人員較多等原因,加之注釋也很稀缺,在這塊寫了很多flag之類的標識,判斷條件之多至少令我咋舌,只有邊看邊猜。原來以為是重連機制部分邏輯有誤,嘗試修改了部分代碼,經(jīng)測無效。后來發(fā)現(xiàn)sdk中自帶的用于監(jiān)聽打印機連接狀態(tài)變更的廣播會在一段時間之后歇菜。那這個是不是sdk的問題?遂找到佳博技術(shù)支持,那哥們?nèi)瞬诲e,也跟我吐槽之前的代碼不知道誰寫的,一大堆廣播,還阻塞UI,太爛了,改不了。然后自己嘗試寫了一個新版的,發(fā)給我,那哥們簡稱JBSDK,以下就是根據(jù)新版SDK的隨意寫了個sample。
1.新建項目,導入jar包--->jbsdk.jar
2.在manifest注冊打印服務,同時別忘了添加網(wǎng)絡(luò)和wifi相關(guān)的權(quán)限哦~

3.在MainActivity中綁定服務,

同時將打印機連接狀態(tài)變更和查詢打印機實時狀態(tài)的回調(diào)一起注冊了

4.服務所提供的接口

分別對應“正在連接”,“斷開連接”,“已連接”三種狀態(tài)


5.使用服務





打開連接之后,之前的打印機狀態(tài)變更的回調(diào)就派上用場了



還有打印標簽和票據(jù)的例子就不再一一展示了,可以酌情增減。
好了基本就是這么多,有什么問題可以和我聯(lián)系噠!
