`

Android與GAE的完美結合

阅读更多

http://www.geo.com.tw/geolab/Lbsfields/2/10122502.htm

 

以點位為基礎的服務 (Location Based Services)方式,已日趨至成熟階段,不管是硬軟體商、平台商、電信業者、市場接受度,皆是處於爆炸的階段,使得在固有產業的結構中,常有異軍突起的勢力加入,在產業龍頭激烈競爭中角逐一席。在手機市場裡,先是蘋果電腦出的iPhone這支空降奇機,一上市就響應空前,有如七級大地震般,震醒了手機產業,讓手機老大哥們知道,趨勢正在劇烈變動,舊有的想法與襲斷市場的手腕不再有用,消費者也越來越聰明,一個願打一個願挨的情景已不復見。

LBS盛行,但行動裝置的規格皆不相同,且電信業者稀少,造成大半市場掌握在少數業者手中的情形;多半的行動裝置平台多屬封閉式,不但開發上費時費力,也沒有辦法做跨平台的移植,實質浪費了大量的開發時間與人力成本,因此Google 順著開源的風氣,適時的在07年底公佈了開放式的平台”Android”,並號召成立了開放手機聯盟(Open Handset Alliance),由此聯盟接手繼續接手開發維護Android平台。

資訊爆炸的時代裡,如何找到所需的資料已經是稀鬆平常的事了,但要如何處理這龐大的資料才是眼前最大的課題,目前因硬體上的限制,單核心的運算效能已不敷使用,需利用平行化的概念來達到更高運算效能的目的,就衍生出了多核心同時運算的現況。利用分散式運算為概念所發展出的運算平台且運用網路來傳遞資料的整體,統稱為雲端(Cloud)。各家廠商所用的技術不盡相同,但都是以同樣的平行化概念去處理龐大的資料,其中以Google所開發的GAE(Google App Engine),有免費的使用額度且具有高效能的運算和大量的儲存空間,可提供政府、企業甚至個人一個良好的開發空間,能減少硬體維護和建置的成本,且具有快速完成開發的能力。

結合上述時空背景,一個好的LBS須具備跨平台之延展性和即時回傳的運算效能且須具備高機動性,Android手機平台與GAE雲端運算就能互補其機動性與運算能力之不足,再加上無線網路傳輸技術大幅提升,即時回傳資料快速。因此本篇將以 Android做為開發行動裝置的平台,結合GAE的空間運算能力,使其達到完美結合,創造出無限的可能。

第一章 誰是 Android &GAE ?

第1節 GAE

(取自:http://code.google.com/intl/zh-TW/appengine/)

GAE是由Google自行研發的三大核心技術組成:GFS(Google File System)、MapReduce和Big table所組成,就概略來說:MapReduce會將資料做正規化的動作並拆解成數份,GFS將數筆簡化的指令分派給大量的電腦去做處理,各電腦再依需求去Big table裡去讀取資料,再由MapReduce整合後傳回,並提供足量的免費使用額度,和宣稱一般企業的服務很少會超過使用限制,即便超過也代表此服務具有一定的獲利模式,可以負擔其運作的費用,而超過額度是按照用多少付多少的機制給付,使中小企業也可以擁有自有雲的可能。

在一般中小科技業中,產業規模也許不算大,但是所提供的服務其背後的運算量可能是很驚人的,且優值的服務與運算資源是有一定的正向關係,但是規模不大的公司常會因為成本上的因素無法添購足夠的設備來支援更好的服務,因此運算的需求便有此而生;在以前的做法是以租用實體主機的方式來達成,但費用與成本較大且不固定,因此促使運算外包的需求,於是各科技大廠就想到我的運算資源這麼多我也用不完,為何不分給大家使用!只要建立一個平台做為溝通的管道就能輕易滿足龐大產業的運算需求。

然而目前市場上擁有雲端技術的並不只有Google,Amazon、IBM、 Microsoft、Saleforce、Novell、Rackspace……等等的科技大廠都競相參與了這場科技的盛會,也相繼提供了相似或是不同需求的雲端技術,以下將概略簡介三家公司的雲端產品(如表1)、和比較表(如表2),以一般中小企業需求來看、具有免費額度的機制最有誘因,其他條件則常由開發者吸收,但時間成本在科技業裡是非常重視的,只有輸與贏的分別,即便是輸那一分鐘!也許獲利就會直接大打5折、甚至更低,固對於能快速開發完成服務的機制就更能突顯其重要了,在表2中可以看出,對於一般企業較有利的機制與能輔助開發者快速開發的角度來看,GAE平台服務在此得到一個較好的抉擇。但是 GAE並不是對於所有一般中小企業都適用,不同的需求往往導致不同的決策,則必須再考慮自身公司的需求來源,然後審慎的評估。

表1 三家公司雲端產品的簡介

表2 三家公司雲端產品的比較表

第2節 Android

(取自:http://androidhk.com/)

以Linux為基礎的Android,係Google在2007年年底所公佈的手機系統平台,此一平台最大的特點是開放,藉以Open Source方式釋出開發元件(Android Software Development Kit, SDK),讓各大手機廠商及一般使用者有最大自由,此舉給予傳統封閉式行動裝置作業系統一擊當頭棒喝,打醒各大手機製造廠商對手機平台的刻板印象,造就開放手機聯盟 (Open Handset Alliance, OHA)成立;除此之外,Android也跨足各大行動裝置系統,甚至連系統內應用程式都能夠任意替換與擴充,破除以往單一軟體僅能在專屬手機上使用,讓未來開發者僅需投注在設計一套應用功能,就能擴充到大多數的行動裝置;免費是大多數人最愛,簡單的說就是不需要花費任何代價就可以得到,目前各大行動裝置上所加載的作業系統,大部分都需要支付額外費用,但不同於以往的Android系統平台,是完全免費提供大眾使用,故此,該優點也是因應著開放概念所延伸而出。

上面所描述Android優點,是由於Android環境本身就架構在開放基礎上,採用軟體堆疊方式進行建構,如圖2所示,由下至上主要可分為三個階層,首先是Android最重要的核心基礎,即Linux Kernel,該系統主要是做為軟體與硬體之間的抽象層,用來相互溝通之用;中間層是由Android Runtime和libraries兩部分所搭建,Android Runtime內部有一個虛擬機器,這個類似java的虛擬機器稱為Dalvik virtual machine,其特色是在於執行小部分程式時,僅需花費部分硬體資源,就能達到行動資源應用最佳化可能,並且在該層的Libraries也提供許多 C/C++和java函式庫,易於開發者透過Application Framework間接的使用;Application Framework是最主要的開發使用工具,透過Java程式語言,針對Android所定義的API進行開發,給予開發者能藉由低門檻的直譯式語言進行軟體功能設計,而Application則是使用者介面端,即使用者在一開始就可以藉由這些基本功能操作手機。

(取自於:http://developer.android.com/)

圖2 Android架構圖

行動裝置平台,除了Google Android以外,尚有幾家所推出的平台同樣也是最為常見的,如Apple iPhone以及Windows Mobile等,由於這三個平台,是來自於不同開發廠商,因此各家所採用的元件不盡相同,但是策略卻是如出一轍,以下本篇將針對Android、 iPhone及Windows Mobile進行比較。如表3所示, 從系統層面看來,Android具有高相容性,可跨平台進行開發,而且透過Java語言能夠讓初學者易於進入開發行列中,除此之外,從軟體層面看來,此三個平台內雖然都具備有軟體平台,但是各家的費率及策略卻有所不同,Android的費用為最低,僅需在註冊時繳交,且未來開發軟體傳至平台上時,並不用另外繳費,其次在軟體銷售拆帳上,雖然每家都是37分帳,但是Android卻是將30%所得回饋給電信業者,也就是說讓電信業者能夠積極推銷支持 Android平台。因此整體而言,Android不論是在硬體部分或是軟體部分皆為最大勝出者。

表3 行動裝置平台比較表

(參考:軟體商怎選Apple iPhone與Google Android,http://www.zdnet.com.tw)

如以上所述,在雲端資料庫的環境當中,這些線上平台的競爭確實是非常激烈,藉由一系列的比較過程,就以GAE提供的免費額度使用稍稍勝出;此外,手機平台數以千計,近期LBS發展盛行促使手機業者紛紛加入到這新的戰局,從iPhone、 Windows Mobiles、Android….等多樣平台,然而在這些平台內仍是以開放、容易駕輕就熟的Android勝出,所以將本篇嘗試設計應用軟體,組合這兩種不同的平台,為市場提供新的創意,讓LBS產業能夠更加活絡。

第二章 LBS軟體開發歷程

第1節 Android結合GAE

如果要以最簡單的方式說明Android與GAE的關係,那便是桌上型電腦,即電腦螢幕與主機的組合。Android類似電腦螢幕,是用來展示、進行簡單的運算及儲存;GAE則像是電腦主機,用來處理大量運算、儲存資料。本篇是透過Java程式開發 Android與GAE(以下將以GAE/J簡稱),兩者間資料傳輸方式,首先由Android進行資料請求,藉以自訂的Java Adapter發送已編譯後的XML格式資料給予相關服務,然後由GAE內所自訂的Web Service接收需求及解譯XML,並且依據該需求進行搜尋相關資料後,將結果以原有自訂的Web Service再度編譯成XML格式資料進行回傳,在Android內所自訂Java Adapter則負責接收/解析該筆資料,並且藉由Android介面顯示處理結果,如圖3、圖4所示。

圖3 Android與GAE結合系統架構圖-1

圖4 Android與GAE結合系統架構圖-2

第2節 軟體開發問題

基本上不論在開發任一軟體或程式,必定都會遭受到困難,何況是初步階段的測試,必定是寸步難行。而本篇在LBS軟體開發,係結合Android與GAE,雖然兩者皆同時掛在Google大廠之下,卻仍然存在著一些問題,將可歸類成三個部分來探討:開發環境問題、資料庫問題及軟體使用問題。

首先,在開發環境所遭遇到的問題,可分為環境本身與開發語言等兩部份。針對環境本身而言,在開發任一軟體功能時,勢必需要進行版本更新及修正,但隨著程式功能精進,資料夾內也累積越多修改後資料,這時管理儼然成了最重要的角色,因此在本篇當中也嘗試著將版控帶入Eclipse開發環境,但由於使用版控軟體的不同,發生Eclipse無法認同.ssc檔、至在進行版控時,檔案會直接轉變成唯讀狀態,導致部份檔案無法編寫等情形;除此之外,在環境開發時,環境文字編碼為UTF-8,但是在編譯時卻是以ANSI來進行,因此造成錯誤情形發生。目前,針對版控部分問題,皆僅能透過手動修改和刪除方式,進行更新/修改;而文字編碼,則可透過文字編譯器,另存為UTF-8檔即可。

其次,在開發此LBS軟體所使用的程式語言上,Google Android僅提供部分java程式元件,讓開發者無法完整使用,導致許多功能必須從基礎的研發設計開始,且由於本篇LBS軟體是由多人一起組織而成,所以在過程當中,不但發現開發者使用版本不盡相同,而且對於GAE/J之間的溝通,並無現成的SOAP元件可以使用。目前針對GAE/J的問題,本篇是透過自訂Web Server來處理,並且在架構設計上,多新增一層Adapter來處理Web Service,因應未來可使用SOAP時,能以簡便方式做轉換。

表4 開發環境問題彙整

由於本篇採用GAE作為資料儲存使用,而GAE資料庫與一般資料庫最大的不同是在資料形式,物件導向資料庫是GAE主要儲存形式,因此在系統設計和使用上難免與一般關聯式資料有所差異,譬如在物件導向資料庫內進行搜尋,在條件式上,僅能針對一個欄位進行不等式查詢,而這只是不同之處內其中的一項,因此本篇為能夠提升在資料庫內搜尋資料的能力,將以加入索引值方式進行,提高執行效率。

此外,為瞭解本篇所開發之LBS軟體適用性,將同時安裝在HTC Magic與HTC Hero當中,卻意外發現在影像攝影功能的呈現,兩行動裝置大不相同,首先在一般攝影模式,Magic顯示時將自動轉成90度,而Hero方位正常但是有些微的影像變形;其次在全螢幕模式時,兩者攝影皆處於正常狀態;另外從拍攝後照片來觀察,不論是Magic或是Hero,照片同時皆會轉向90度,如圖 5~圖7所示。針對以上攝影功能呈現的不同,本篇進一步探究後發現,其實僅需在程式參數中進行設定,即可解決此兩行動裝置上攝影的差異。

圖5 一般攝影模式(左為Magic,右為Hero)

圖6 全螢幕攝影模式(左為Magic,右為Hero)

圖7 拍攝照片(左為Magic,右為Hero)

第三章 成果展示

第1節 系統設計

本篇所開發的LBS應用程式主要是由二大部分所組成(圖8)。首先前端的主體框架,是由 Android SDK進行使用者操作介面設計與應用模組開發,使用者得以經由選擇主頁面六大功能操作行動裝置,此六大功能分別為MySpace、影像地標搜尋、聯絡人資訊、地標索引、新聞搜尋及基本設定,而應用模組則是透過Java程式語言,針對Android所定義的API進行開發,此模組主要是因應操作功能而生,用來與Web Service進行接收、傳送、解析XML格式訊息使用。

圖8 系統設計架構圖

其次後端的環境,則是藉由GAE的雲端進行一系列的資料儲存/運算分析及服務建置,在LBS應用程式所使用到的資訊,皆是儲存於GAE平台的資料庫當中,同時也藉由GAE的管控服務,降低維護的成本與人力,而身處雲端內的Web Service,則是用來接收前端所提出的需求,並且將適當的資訊回傳,該服務主要有整合性位置中介模組、地理編碼運算模組、空間運算查詢分析模組、行動定位服務營運管理模組、服務商家資訊提供模組、行動服務需求分析模組等,除此之外,GAE雲端分散式處理能力亦是相當強大,因此LBS軟體上相關空間分析的運算,皆是透過此即時的資料計算處理能力來進行。

整體而言,Android與GAE的結合,不論是前端或者是後端,兩者皆補足了對方的不足,以Android在前端作為操作展示使用,並經由network傳遞相關資訊,給予後端GAE進行儲存、運算、管理之用,透過這樣一個完備的循環機制,將大大提升LBS軟體運作。

第2節 應用軟體功能

該LBS軟體主要是由地標索引、影像地標索引、聯絡人資訊、MySpace、新聞搜尋、基本設定及即時資訊等七大功能所建構而成,其次,MySpace功能又可分為照片資訊、我的最愛、我的足跡及路徑管理,主要是用來管理個人相關資訊,而即時資訊功能是傳送給予使用者目前所在周遭的訊息,該功能又以地圖展示、定位資訊及好康消息等,傳送不同的資訊。

圖9 應用軟體功能架構圖

第1項 地標索引

提供使用者可於平台內進行地標搜尋,透過輸入關鍵字或點選分類階層後,將出現相關地標清單及距離,並且點擊任一地標點,即顯示地標詳細資訊。其次,使用者也可將喜好地標點加入至我的最愛清單中,建置個人地標捷徑,方便瀏覽,並且藉由將地標點標註在地圖上的呈現方式,讓使用者能夠簡單的找到鄰近的地標點位置。

圖10 地標索引功能畫面

第2項 影像地標探索

提供使用者藉由行動裝置原有的拍攝功能和定向功能,對周遭的點位資訊進行特定的探索,並且隨著鏡頭方向的移動,定位資訊也會跟著進行更新。其次,藉由點擊地標,將可進一步獲取其詳細資料,且除了能把地標加入我的最愛中,以便搜尋外,尚可將地標置入地圖內,讓使用者清楚知道地標所在之處。

圖11 擴充實境功能畫面

第3項 聯絡人資訊

提供使用者管理聯絡人資訊,藉由聯絡人資訊列表中,可查詢聯絡人詳細基本資料以及距離遠近,並且透過GO TO功能按鈕,系統將自動規劃到達該聯絡人之間的路徑,經由地圖平台呈現,方便使用者能夠清楚的找尋。

圖12 聯絡人資訊功能畫面

第4項 新聞搜尋

提供使用者可即時查詢新聞,以關鍵字及分類方式進行搜尋後,將出現相關新聞列表,使用者可選擇相關或喜好新聞標題,進一步瀏覽詳細新聞內容,並且透過地圖,可讓使用者瞭解該新聞發放地點或發生處以及目前距離遠近。

圖13 新聞搜尋功能畫面

第5項 MySpace

提供使用者具有個人客製化使用空間,藉由此空間介面操作可進行照片資訊、定位資訊、我的最愛及路徑管理等功能應用,透過照片資訊功能,可直接針對拍攝照片進行簡易資訊編修及圖像定位顯示;而我的最愛,即可記錄相關點位訊息、地圖展示等應用;其次,我的足跡功能不僅能讓使用者紀錄所在位置的點位資訊,亦能顯示目前與該點位之距離,予以顯示在地圖上;此外,路徑管理則是提供記錄Tracking的過程,使用者可自行管理已記錄的路徑及其資訊,並可將此路徑顯示在地圖中。

圖14 MySpace功能畫面

第6項 基本設定

提供使用者能夠針對相關功能進行基本功能設定,包含定位服務開啟、帳戶登入、軟體登入等,透過該項設定以達到個人化管理。

圖15 基本設定功能畫面

第7項 即時資訊

提供使用者能夠獲取在地資訊消息,透過原有手機定位功能,標示目前所在位置於地圖上,並且透過儲存/編輯功能,可記錄該點位置及相關訊息於MySpace內,亦能透過查詢功能,尋找相關地標資訊,除此之外,最特別的是能夠即時獲取目前周遭方圓幾百公尺的好康資訊,透過網友評價結果,使用者可依據自己的喜好選擇,藉由地圖指引,到達目的地。

圖 16即時資訊功能畫面

第四章 結論

創新,很意外的,讓一般人很難聯想的到會將兩個完全不相干或稀疏平常的東西結合在一起,但也因為結合而創造了新的商機與市場,像是會彎取的吸管、鉛筆後端的小擦子、可換筆芯的原子筆……等皆屬此類,而Android與GAE兩平台的結合,是否也能撞出新的契機呢?這答案是肯定的!Android提供前端硬體的展示平台,而GAE則有著高運算能力與巨大儲存空間,兩者相互補足對方的不足,同時這樣的模式不僅能降低開發LBS軟體的時效與成本,亦能夠獲得同樣、甚至倍數成長的效能,使得行動裝置能以更簡單和更輕盈的方式呈現;相反地,LBS軟體運作的重責大任則落在後端的處理上。有鑒於此,網際網路為前端與後端溝統的重要媒介,因此網際網路將成為營運行動定位服務的最大關鍵因素。

參考文獻:
1. Mr./Ms. Days (MMDays) – 網路, 資訊, 觀察, 生活..
2. http://developer.android.com
3. Google App Engine,http://code.google.com/intl/zh-TW/appengine/
4. Wiki,http://zh.wikipedia.org/zh-tw/GAE
5. 張銘峰、許閔雄、陳桂慧,雲端運算平台Google App Engine簡介,電腦與通訊電子期刊
6. 王穎杰、周錦彥、黃禮俊,MapReduce and Bigtable
7. 陳冠廷,6月 30th, 2008,Web 2.0 技術文章 - Google App Engine 介紹
8. 軟體商怎選Apple iPhone與Google Android,http://www.zdnet.com.tw
9. 吳思蔚、李佩君,3月25th, 2009,Windows Mobile

 

 

 

分享到:
评论

相关推荐

    從Android端呼叫GAE雲服務.doc

    将这两者结合,开发者可以构建能够在移动设备上运行并与云端进行交互的应用。 首先,GAE上的应用已经建立,名为"misooplaza",其URL为http://misooplaza.appspot.com/。在Eclipse环境中,创建了一个名为"misooGAE...

    基于GAE的Demo

    【基于GAE的Demo】是一个使用Eclipse集成开发环境构建的项目,主要展示了如何在Google App Engine(GAE)平台上整合Struts2、Spring和Tiles框架。GAE是Google提供的一个云计算平台,允许开发者在Google的基础设施上...

    基于GAE平台与GWT框架的Android技术应用研究.pdf

    【基于GAE平台与GWT框架的Android技术应用研究】 本文主要探讨了如何结合Google App Engine (GAE) 平台和Google Web Toolkit (GWT) 框架,在Android客户端进行应用开发。Google App Engine是一种云计算服务平台,...

    gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_

    提到的"vgae"可能是指论文“Variational Graph Autoencoders”(张量产品变分自编码器),这是GAE的一种变体,该论文提出了一种结合图卷积网络(GCN)和变分自编码器(VAE)的方法,用于生成图结构的概率分布。...

    GAE使用规则

    GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则

    spring+gae

    2. **数据存储**:Spring与GAE的数据存储API(如JDO或JPA)结合,可以提供一个统一的数据访问层,简化对Google Datastore的操作。 3. **调度任务**:Spring的TaskExecution和TaskScheduler模块可以与GAE的后台任务...

    Google的技术文档:GAE,ANDROID, API

    GAE: Apress.-.Beginning Java Google App Engine (2009).pdf O'Reilly.-.Programming Google App Engine (2010).pdf O'Reilly.-.Using Google App Engine (2009).pdf Packtpub.-.Google App Engine Java and GWT ...

    GAE入门教程

    pass之GAE入门教程, 学习GAE

    gae_in_pytorch-master_GAE_

    图形自动编码器(Graph Autoencoder, GAE)是一种应用于图数据的深度学习模型,它结合了自动编码器(Autoencoder)的思想与图神经网络(Graph Neural Network, GNN)的特性。GAE的目标是学习到图的低维表示,即节点...

    GAE之webapp框架

    通过上述示例,我们可以看到`webapp`框架不仅能够简化基础的HTTP请求处理,还能方便地与GAE提供的服务相结合,实现更复杂的功能。 #### 六、总结 `webapp`框架为开发者提供了快速构建Web应用的基础工具。通过掌握...

    GAE包(以配置好,解压可用)

    2. Python解释器:GAE通常使用的Python版本,可能已经配置好与GAE兼容的环境。 3. 一个名为SDU的文件夹,其中包含一个exe文件,这可能是自定义的管理工具或者GAE的启动程序。 4. localproxy文件夹:内含proxy.py,如...

    关于GAE的教程、工具与文档(建站)

    12. **云服务集成**:GAE可以与其他Google Cloud Platform服务无缝集成,如Cloud Storage、Cloud SQL、Cloud Firestore等,扩大应用的功能范围。 总的来说,GAE为开发者提供了一个强大的平台,用于快速构建可伸缩的...

    GAE blog安装

    1. **Google App Engine环境设置**:首先,你需要在本地机器上安装Google Cloud SDK,这是一个包含所有必要的工具来与GAE交互的软件开发套件。通过SDK,你可以使用命令行工具`gcloud`进行项目创建、部署和管理。 2....

    GAE和SAE的比较

    云计算下的PaaS中的GAE和SAE平台

    GAE read rss send to 腾讯微博

    标题“GAE read rss send to 腾讯...总的来说,这个项目结合了Web服务交互、RSS解析、API调用以及GAE的特性,为自动发布RSS内容提供了一种解决方案。对于想学习如何构建类似工具的开发者来说,这是一个很好的实践案例。

    让gae支持php的方法

    在提供的压缩包文件中,`readme.txt`可能包含有关如何配置和使用Quercus在GAE上运行PHP的详细指南,而`phpwithjava`可能是示例代码或者项目结构,帮助用户理解如何将PHP代码与Java环境集成。 总的来说,使用Quercus...

    GAE编程指南

    《GAE编程指南》是一种云计算服务,跟其他的同类产品不同,它提供了一种简单的应用程序构建模型,通过这种模型,你可以轻松地构建出能够容纳数百万用户的应用程序。《GAE编程指南》是介绍使用这个强大平台的专家级...

    GAE上可以用的JAVA 博客源代码

    GAE上可以用的JAVA Blog源代码 可以在GAE上直接使用,支持图片上传等。 源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留 最新版本请去主页下载 http://redpower1998.appspot.com 主页包括...

Global site tag (gtag.js) - Google Analytics