如果前面一個階段,您已經順利完成的話,那麼接下來我們就準備進入 Server 端發送訊息的部分…

這部分並不困難,首先在畫面的部分,大概是長這樣

主要是使用 Indy 的 IdHttp 元件,透過 https(google 要求)將你想發送的訊息以及給哪一個設備,告知 Google 的 GCM Server,訊息格式也是要比照 Google 的要求,以 json 的格式來傳送。

在上述畫面中 registration_ids 後面接的 APA91bEs74xboNq1....,指的就是你要將訊息傳遞給那個設備,而如何指定是那個設備,就是前一篇文章中所提到的 regID (目前長度為 162 位元)。另外在 data 的部分,就是指要傳遞什麼訊息給這個設備,上述畫面中只是舉例,你也可以傳遞更多訊息(欄位),只要不脫離 json 格式即可。

文章標籤

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

關於 GCM 運作原理更多的資訊,其實很多網友都已經有分享了,小弟就不多著墨在這部分,如果想瞭解推薦可參考以下網址

http://nkeegamedev.blogspot.tw/2013/01/gcm.html

在正式開始進入程式撰寫的部分,你也需要先跟 Google 申請相關的服務,才有辦法繼續進行,同樣的申請步驟也有很多網友分享,同樣推薦參考網址如下

http://nkeegamedev.blogspot.tw/2013/01/gcm-gcm-api-key.html

如果接下來您想要一步一步跟著實做 GCM 的部分,上述申請的步驟一定要先完成,主要就是

文章標籤

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

Google 雲端通訊(GCM),英文名稱為 Google Gloud Messaging,至於 GCM 的用途,主要就是「開發人員可透過此服務將自己伺服器中的資料傳送給 Android 應用程式使用」,較為細節的說明則可以參考以下 Google 中文官網說明

https://support.google.com/googleplay/android-developer/answer/2663268?hl=zh-Hant

這個功能,筆者認為在實務上可以用於很多方面,雖然官方說並不保證設備端一定可以收到訊息,但是看在「免費」的份上,應該也沒什麼好挑剔的了吧…既然想用,勢必就得瞭解 GCM 的來龍去脈,沒想到栽進去之後,才發現不但 XE5 目前尚不直接支援,就連 Google 大師也找不到任何有關 XE5 與 GCM 的 solution,找得到的訊息就是也有人在問,但是沒有一個直接的解答... like this

https://forums.embarcadero.com/thread.jspa?threadID=93361

http://stackoverflow.com/questions/18891486/broadcast-receivers-in-delphi-xe5-android

文章標籤

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

用 XE5 撰寫的 App,啟動時間大約都需要 3~4 秒才能看到畫面,按照研討會 Gordon 大師的說法,其實不只是 XE5 寫的 app,用 Java 寫的也是一樣,主要是 VM 載入跟啟動都需要時間,因此有所謂的「黑屏」,也就是使用者啟動 app 到看到第一個畫面中間,螢幕都是黑壓壓的一片,有人會感覺這樣的 app 很不優,所以要用 Splash Screen 來做一個畫面上的喬接或轉場…

在研討會中,Gordon 大師除了說明 app 啟動方式與運作流程的原理,也有說明如何撰寫 Splash Screen 結合 app,並當場展示使用 Splash Screen 的效果,的確很不錯,大概不需要 1 秒就可以看到畫面(Splash Screen),然後才進入 app 主畫面,問題是...研討會聽完之後,QCom 網站也有放上了 source code,但不禁想問問大夥,有多少人可以依樣畫葫蘆弄出來?

至少筆者我就是在研討會中有聽..且好像有聽懂,但是要筆者自己做,卻不知道該如何下手的那位…就算下載了 QCom 上的 source code,也就是 source code,該怎麼弄進自己的 app 呢?完全沒個頭緒,你呢?

不是說師傅領進門,修行在個人嗎?大師都指點迷津過了,也不能太漏氣吧,最近花粉多時研究 GCM 已經沒有個著落非常鬱悶了,只好先來玩玩 Splash Screen,看看能不能獲得一點點小確幸

首先我們先查看一下在 Java 的世界 Splash Screen 該如何做呢?在 Google 搜尋了很多文章後,覺得以下這篇條理較為清晰,比較有參考價值

文章標籤

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

昨天參加 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;

文章標籤

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

Read Barcode 有粉多種方法,趕在明天上 Gordon 大師的技術研討會前,先這次介紹其中比較簡單使用的一種(也許並非最好的,相信 Gordon 大師會有更好的分享)。

在 Read Barcode 時,真正讀取的部分都是運用現成、別人寫好的東西,不管是透過呼叫 apk 或是 java class 的方式都一樣,否則要重頭到尾自己把解析 barcode 這段邏輯搞出來,就已經可以搞到退休了,畢竟 barcode 那麼多種,解析影像或是圖片的方式,也不是常人可以理解的(包含筆者我啦)。這次要運用的,是一個很多手機出廠時就會預先安裝的 app,名稱為「條碼掃描器」

所以在完成後續這個 app 之前,一定要先確認有安裝「條碼掃描器」這個 app,否則是沒辦法執行正確的…

接下來就在主 Form 上各擺一個 TMemo、TButton、TTimer,不囉唆,直接把 code 完整 port 上

文章標籤

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

如果你已經通過上一關的考驗,那麼接下來這最後的部分,應該就不會太難了。

在 Android 的環境中,其實跟在 Windows 中的環境差不多,如果作業系統已經知道該檔案(副檔名)的關連性的話,要開啟那個檔案,作業系統會自動依據該副檔名以相對應的軟體來開啟,比如我們在 Windows 環境中,如果要開啟一個 url,比如 http://www.google.com,你會怎麼做?

是不是用 ShellExecute 呢?像這樣

  ShellExecute(0, 'open', 'www.google.com', nil, nil, SW_MAXIMIZE);

文章標籤

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

既然已經確定 Server 端有比較新的版本了,那麼該如下載呢?筆者直覺想到的方法有幾種,比如透過 HTTP、FTP 等,不過且慢,真的要實做的時候,才會發現如果要透過 HTTP,那麼不是得在 App 專案上置放 Indy 元件才有辦法?那麼已經有點大的 apk 又要增胖了...不好不好,那改用 FTP 的話呢?更慘,不但 Indy 元件跑不掉,而且 Server 端還得多開 Port 21 與實做 FTP Server 的功能...還有沒有其他方法呢?

其實是有的!仔細想想你現在不是在用 DataSnap Server & Clinet 嗎?難道不能用現成的 DataSnap 機制來傳輸檔案嗎?答案是可以的,實做也並不困難,在 Server 端實做一個 function,回傳值為 TStream,Client 端負責把 TStream 接下來然後轉存為檔案即可,Port 也不用多開,真是一舉數得…不過話說回來,用「講」的比較快啦,實做起來的難度,跟之前其他篇比較來,還是稍微硬一點點。接下來就讓我們開始吧...

首先要新增一個 DataSnap Server 與 DataSnap Client 的專案,如果不知道怎麼新增,請參閱之前快快樂樂系列的文章

 

快快樂樂學習 delphi XE5 for Android app(三)(a)建立 DataSnap Server

快快樂樂學習 delphi XE5 for Android app(三)(b)在 App 顯示後端資料庫的資料 with DataSnap Client

 

文章標籤

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