昨天參加 Gordon 大師主講之「Delphi XE5 深入技術研討會」,果然一如過往收穫良多。尤其在上一篇文章中提到, Gordon 大師應該會提出更好的 Barcode solution,而大師也沒漏氣,直指上篇文章所使用之偵測剪貼簿的作法不夠穩定,但大師提出的 solution 果然是「神人」級的,非常人所能想像,不但要寫一些 java code,還要透過 classes.dex 銜接,讓 java 的程式可以在完成後呼叫 delphi 的 onActivityResult 等方式,遠遠超乎我們這些平凡的死老百姓可以做到的,畢竟我們沒有大師的三頭六臂,既會 delphi,又會 java,還精通 c++,就算將來拿的到 code,也只有望 code 嘆氣的份...

不過大師在講解如何自行封裝 Android(iOS) API 的部分,就平易近人多啦,之前雖然有看 FMX 的 source code,但不知其所以然,只會依樣畫葫蘆,在大師講解後,整個觀念與想法頓時就清晰了許多。簡單來說,就是這個架構

 

JxxxClass = interface(JObjectClass)
end;

Jxxx = interface(JObject)
end;


TJxxx = class(TJavaGenericImport<JxxxClass, Jxxx>) end;

 

就可以搞定了,相關國外原始網站可以參閱 http://www.pclviewer.com/android/,不過說實在的,要不是大師講解,真的是有看沒有懂啊...

話說回來,大師提供的 Barcode solution 真的是太難了,但之前透過 timer 偵測剪貼簿的方法又不夠好,在這邊提供一個取巧的方式,透過 Handle  Application Event(aeBecameActive),你可以明確掌握 Google ZXing 結束的時間點,這樣就可以準確抓取到剪貼簿中內容,而不需要透過 Timer 一直偵測啦...

Application Event 的工作原理,可以參閱官網說明

http://blogs.embarcadero.com/pawelglowacki/2013/09/30/40067

這部分也已經有人實際撰寫出來並提供相關 source code

http://blog.csdn.net/flcop/article/details/13018911

筆者有實際測試過,這部分確實可以執行沒有問題

以上研討會後心得分享

 

    縹緲 發表在 痞客邦 留言(0) 人氣()