緣由
最近公司上了新的項(xiàng)目,需求大概就是你出去吃飯買單的時候群井,收銀妹紙會在平板上操作來進(jìn)行收銀并打印小票,這個客戶端目前大多都是Android系統(tǒng),那么其中就要用到Android平板連接打印機(jī)來進(jìn)行通訊了晤郑。這個項(xiàng)目(以下簡稱收銀平板)之前是有另外一個團(tuán)隊(duì)(以下簡稱CS)開發(fā)的,目前是要重構(gòu)并升級到2.0版本贸宏。但是前幾天CS反饋說是最近遇見bug造寝,打印機(jī)和平板會莫名斷開連接,其中實(shí)現(xiàn)的重連機(jī)制也不好使吭练。由于即將進(jìn)行2.0的開發(fā)工作诫龙,也是為了進(jìn)一步熟悉當(dāng)中的業(yè)務(wù),然后跟CS要來代碼鲫咽,研究了一通签赃,發(fā)現(xiàn)之前的1.0代碼寫得...可能是接手人員比較多,也有可能開發(fā)周期的問題吧浑侥。
環(huán)境
我現(xiàn)在的環(huán)境是AS2.0姊舵,佳博5890XIII打印機(jī),端口是wifi連接寓落,該款打印機(jī)也支持藍(lán)牙和USB括丁,GprinterSDKV2.1,如果是其他型號可以去佳博官網(wǎng)下載對應(yīng)sdk伶选。將拷來的代碼在這個環(huán)境跑了多次史飞,模擬了兩種常見的情景:斷網(wǎng),斷電確實(shí)出現(xiàn)過連接丟失的情況仰税。首先是檢查相關(guān)代碼的邏輯构资,由于年代比較久遠(yuǎn),接手人員較多等原因陨簇,加之注釋也很稀缺吐绵,在這塊寫了很多flag之類的標(biāo)識,判斷條件之多至少令我咋舌河绽,只有邊看邊猜己单。原來以為是重連機(jī)制部分邏輯有誤,嘗試修改了部分代碼耙饰,經(jīng)測無效纹笼。后來發(fā)現(xiàn)sdk中自帶的用于監(jiān)聽打印機(jī)連接狀態(tài)變更的廣播會在一段時間之后歇菜。那這個是不是sdk的問題苟跪?遂找到佳博技術(shù)支持廷痘,那哥們?nèi)瞬诲e蔓涧,也跟我吐槽之前的代碼不知道誰寫的,一大堆廣播笋额,還阻塞UI元暴,太爛了,改不了鳞陨。然后自己嘗試寫了一個新版的昨寞,發(fā)給我瞻惋,那哥們簡稱JBSDK厦滤,以下就是根據(jù)新版SDK的隨意寫了個sample。
1.新建項(xiàng)目歼狼,導(dǎo)入jar包--->jbsdk.jar
2.在manifest注冊打印服務(wù)掏导,同時別忘了添加網(wǎng)絡(luò)和wifi相關(guān)的權(quán)限哦~
3.在MainActivity中綁定服務(wù),
同時將打印機(jī)連接狀態(tài)變更和查詢打印機(jī)實(shí)時狀態(tài)的回調(diào)一起注冊了
4.服務(wù)所提供的接口
分別對應(yīng)“正在連接”羽峰,“斷開連接”趟咆,“已連接”三種狀態(tài)
5.使用服務(wù)
打開連接之后,之前的打印機(jī)狀態(tài)變更的回調(diào)就派上用場了
還有打印標(biāo)簽和票據(jù)的例子就不再一一展示了梅屉,可以酌情增減值纱。
好了基本就是這么多,有什么問題可以和我聯(lián)系噠坯汤!