2020年1月27日 星期一

外行人寫手機小程式 Part.7 - 統一發票對獎

很久很久以前寫過一篇 紙本電子發票的亂象,之後好像也沒亂多久,大概半年左右就統一成現在的樣子
在寫這篇時再估狗了一下,發現了不少我原本不知道的事,例如電子載具沒想到早在2012年就已經有了
另外一點是雖然大多數國家都有收據或發票,但是發票可以拿來兌獎的國家找不到幾個的樣子 XD


不過早在icash剛推出的時候,也有一股聲音說到電子消費紀錄對於消費行為在大數據上的隱私疑慮
到了電子載具普及化的時候,反倒這種聲音就沒再出現過了,甚至之前還有段時間,一堆帶風向的說台灣沒有支付寶比中國還落後
要知道雖然公家的載具資料是到財政部那去,比較沒有讓財團企業做為大數據拿去分析消費模式的可能性,但也不是完全沒有

這還是其次,繞遠一點舉例樂透好了,所有簽號碼都是上傳到台灣彩券,也就是說本期有那些組合號有多少人簽或沒有人簽
這些早在開獎前一刻電腦按一按就會知道,所以買的人就只能相信這是國家辦的不會作弊

相同來說載具也有類似之處,每個月一定會有兩張特獎特別獎,但是傳統上來說頂多只能預先知道是什麼地方開出的
不會知道誰得獎或有沒有人出來領獎;但是載具,可以做到「開獎前我就能知道哪個號碼在誰的戶頭裡」
所以我到現在還是沒有去辦什麼載具,反正我也只有一隻沒有聯網的手機,就算辦了也沒法用 (誤

說了這麼多廢話,發票還是要對的,上面也提到了載具資料是到財政部那裏去,所以財政部也做了官版的APP
不過財政部的版本最低需求是android 5.0以上,所以我只能用模擬器來裝看看,但裝進去啟動後就跳了個需要驗證碼畫面
而且是沒有驗證碼就進不去,後面的功能怎麼樣我也無法得知,照play的介紹頁來看主功能就5個
既然沒打算申請驗證碼那麼就卸載,卸載前看了一下,安裝檔要61MB,安裝進去後使用141MB,這種APP得做到這麼肥嗎?

他會需要驗證碼大概是因為有領獎跟捐贈轉帳的功能所以需要,而除了官版的以外民間版的也有好幾個
還多了記帳集點會員卡以及帳單繳費等功能,而且需求android 4.x以上、安裝檔也才2xMB,想當然的財政部官版的play評價很慘
不過都裝起來試試那就免了,因為這些功能大概也都是需要手機驗證碼才能動作

廢話了這麼多,其實主要的原因是,自己寫的統一發票對獎APP實在是沒啥內容好講的 (炸
在類似的play商店APP中有看過這樣的留言,說這種只能對獎的APP根本就過時了,以客觀的角度來說的確
時代在進步東西也在不斷進步....有嗎好像有些東西的進步就只是個噱頭,像是3DVRAI,手機電腦也都家電化了
做這些玩意就只有兩個理由,一是無聊的自我滿足,二是老子不忙著賺錢太閒 XD

下圖就是APP畫面,整個程式就只有一個畫面,而且號碼清除是多餘的,只是為了測試方便給加上去而已
下載本期號碼是由直接從財政部抓取,那個xml很長一頁,我是用了偷雞的方法只提取我要的號碼
當期下載的號碼會先存在左側欄位,而下期公布時下載會將上一期的挪到右側再填入左側,也就是說會保留2期的號碼
這樣萬一有上期沒對到的漏網發票也可以直接對,不過APP並沒有做自動辨別發票月份的功能
因為實際上不管是掃描兌獎或者是手動輸入兌獎,基本上發票都還是要經過人眼跟整理
如果是做成掃描器來全自動處理的話,那麼辨別發票月份的功能就一定需要了,這部分也不是多難做


手動輸入部分就很基礎的,3碼3碼一直輸就行,有中獎的會有音效跟中哪一組的號碼顯示
不過這部分手機螢幕鍵盤是沒有實體鍵盤九宮鍵手感來的好啦個人覺得....
QR掃描的部分應該是本次的重點,但是其實app inventor的BarcodeScanner實際上只是個Hook而已
如果沒有勾選external的話,還是要額外安裝Zxing的條碼掃描APP,勾選的話則是呼叫系統預設的條碼掃描器
聽說手機有裝LINE就可以掃QRcode了,不過雖然說我的手機還勉強可以裝,但是好像只能裝Lite版以外
內存只有512MB,很久以前裝過一次,裝下去開起來手機就跟死掉差不多了,運行空間剩不到幾MB可用

而且還好掃描這部分不是自己寫,因為就算同樣功能的APP,運行起來的辨識速度有的是天差地遠
這也可能跟手機相機本身的性能有關係,理論上如果是像下面影片中的使用自己搭的固定架來掃描的話
有定焦或者手動對焦的話,可能速度會很快,自動對焦也不是不行,現在很多手機都是0.x秒對焦的
我這隻骨董手機能有這樣速度我就已經很偷笑了w

另外發票本身也有問題點在,有些時候有些發票等你掏出來的時候已經不知道折了幾折,這都要整理
另外也有一些他發票機有問題,印出來的QR很明顯眼睛看就有地方糊掉,這種的也很難辨識出來
但結論上來說,對照PLAY商店裡其他發票兌獎APP裡面放的掃描速度展示影片來說,我的版本好像也差不多快