周賢領(lǐng)+白磊
摘要:基于位置的服務(wù)可讓用戶便捷地檢索自己附近的興趣點(diǎn),而全景展示技術(shù)讓用戶更直觀地查看興趣點(diǎn)周邊的實景?!笆成猩睢盇PP是一個專注于向用戶推薦吃、喝、玩、樂好去處的Android應(yīng)用程序,它很好地結(jié)合了以上兩項技術(shù),向用戶推薦其附近的商家,同時配合360度實景展示技術(shù),讓用戶獲得身臨其境的感受,從而提升商家的業(yè)務(wù)量。
關(guān)鍵詞:Android;LBS;全景展示;移動互聯(lián)網(wǎng);餐飲娛樂
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)29-0039-03
1 概述
生活在變,世界在變。移動互聯(lián)網(wǎng)讓互聯(lián)網(wǎng)的觸角延伸到世界的每一個角落,成為真正的“泛在網(wǎng)絡(luò)”。
隨著科技的不斷發(fā)展,計算機(jī)與軟件的進(jìn)步,新一代的移動智能終端針對應(yīng)用軟件的可操作性以及軟件操作的舒適性等方面提出了更高的要求[1]。自從2007年iPhone、Android發(fā)布以來,智能手機(jī)的使用量迅速上升,隨著智能手機(jī)的逐步普及,手機(jī)端上網(wǎng)的用戶群已不可小視。
Android作為一款新型智能手機(jī)操作系統(tǒng),由于其開源性而迅速搶占智能手機(jī)市場,開發(fā)基于Android平臺的手機(jī)用戶軟件,具有強(qiáng)大的應(yīng)用潛力[2]。
在今天,我們?nèi)サ揭粋€陌生的地方,不再用為了吃、住、玩、樂,找不到地方而發(fā)愁。因為移動互聯(lián)網(wǎng)為我們提供了便利,我們只要通過移動終端的網(wǎng)絡(luò)打開地圖應(yīng)用,就可以查到美食店、旅館、交通路線等信息,省去了很多麻煩和勞累。對于去旅游和出差的人們來說,有更多時間去享受生活,而不是把時間浪費(fèi)在其他繁瑣的地方。手機(jī)已經(jīng)不僅是一個打電話、寫短信的工具,而是轉(zhuǎn)變?yōu)橐环N為人們提供了娛樂和信息的手段[3]。隨著手機(jī)互聯(lián)網(wǎng)的不斷普及,手機(jī)已經(jīng)成為繼報紙、廣播、電視、互聯(lián)網(wǎng)之后的“第五媒體”[4]。
食尚生活A(yù)PP服務(wù)的是人們的生活,通過手機(jī)可讓用戶方便地搜索到周邊吃、喝、玩、樂的好去處,更能360度全景查看興趣點(diǎn)的實景,同時也為商家爭取更多的客源提供了一個良好的渠道。
2 開發(fā)環(huán)境介紹
2.1 Android系統(tǒng)
Android是基于Linux的自由及開放源代碼的操作系統(tǒng),運(yùn)用于移動終端,例如:手機(jī)、平板電腦。是由Google公司和開放手機(jī)聯(lián)盟合作起來領(lǐng)導(dǎo)及開發(fā)的。Android系統(tǒng)具有開放性、豐富的硬件支持、方便開發(fā)、與谷歌的無縫連接等優(yōu)點(diǎn)[5]。
2.2 MySQL數(shù)據(jù)庫
MySQL由瑞典MySQL AB公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品,是目前應(yīng)用廣泛的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。
2.3 Tomcat
Apache Tomcat是目前較流行的Web 應(yīng)用服務(wù)器之一,其性能穩(wěn)定,深受Java 開發(fā)者的喜愛并且獲得了大部分軟件開發(fā)商的認(rèn)可和肯定。
3 應(yīng)用分析與設(shè)計
3.1 系統(tǒng)設(shè)計
3.1.1 首頁菜單
首頁本著界面簡潔的理念,用新聞列表的形式,展示出相關(guān)吃、喝、玩、樂等信息的優(yōu)惠資訊,把比較受歡迎的相關(guān)消費(fèi)信息展示在首頁,讓用戶在打開軟件的時候就能在看到比較好的消費(fèi)信息。
3.1.2 專題菜單
專題頁面設(shè)置為4個頁面分別對應(yīng)吃、喝、玩、樂的詳細(xì)信息,在頁面開始以輪播圖的形式展現(xiàn)出比較受歡迎的消費(fèi)信息的圖片,然后以新聞列表的形式展示出具體對應(yīng)的信息。讓用戶在不知道選擇消費(fèi)什么的時候可以在對應(yīng)的頁面觀看然后選擇。
3.1.3 周邊菜單
周邊頁面主要以百度地圖展示在頁面上,我們可以在主頁和專題頁面選擇要去的消費(fèi)地點(diǎn)以后,只要點(diǎn)擊在對應(yīng)頁面的去這里的按鈕就可以調(diào)到地圖頁面導(dǎo)航,還可以點(diǎn)擊地圖上面的在我的位置搜索周邊按鈕,然后輸出要搜索的信息,在地圖上展示出來,用戶點(diǎn)擊展示出來的地點(diǎn),彈出對應(yīng)的信息。
3.1.4 我的菜單
我的頁面主要呈現(xiàn),用戶模塊,足跡模塊,系統(tǒng)模塊,生活助手模塊。用戶模塊:實現(xiàn)用戶的注冊、登錄、個人資料上傳修改、頭像上傳。論壇模塊:登錄后的用戶可以在足跡模塊中發(fā)表狀態(tài),然后大家可以在里面相互交流,點(diǎn)贊,分享美食。系統(tǒng)模塊:關(guān)于軟件,軟件反饋,系統(tǒng)通知,退出軟件。生活助手模塊:天氣預(yù)報,通過定位城市,然后實時更新天氣預(yù)報,健康助手,給大家不定時更新相關(guān)的健康信息。
3.1.5 特色功能
360全景圖展示,在主頁面,專題頁面,地圖頁面,我設(shè)置了對應(yīng)的全景圖按鈕,在我們點(diǎn)擊進(jìn)入詳情頁面的時候,只要點(diǎn)擊這個按鈕,就可以把消費(fèi)場所的全景圖展示出來,用戶可以用手滑動,旋轉(zhuǎn)然后瀏覽全景圖。
3.1.6 系統(tǒng)功能結(jié)構(gòu)
3.2 相關(guān)技術(shù)框架
3.2.1 xUtils
xUtils包含了很多實用的Android工具,xUtils最初源于Afinal框架,進(jìn)行了大量重構(gòu),xUtils支持大文件上傳擁有全面的http請求協(xié)議支持、擁有靈活的ORM和事件注解支持并且不受混淆影響,xUtils最低兼容Android2.2。
DbUtils模塊:android中的orm框架,每行代碼就可以進(jìn)行增刪改查。支持事務(wù),默認(rèn)關(guān)閉??赏ㄟ^注解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請注解表名和列名)。支持綁定外鍵,保存實體時外鍵關(guān)聯(lián)實體自動保存或更新。自動加載外鍵關(guān)聯(lián)實體,支持延時加載。支持鏈?zhǔn)奖磉_(dá)查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。
ViewUtils模塊:android中的ioc框架,完全注解方式就可以進(jìn)行UI,資源和事件綁定。新的事件綁定方式,使用混淆工具混淆后仍可正常工作。目前支持常用的20種事件綁定。endprint
HttpUtils模塊:支持同步,異步方式的請求。支持大文件上傳,上傳大文件不會oom。支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求。下載支持301/302重定向,支持設(shè)置是否根據(jù)Content-Disposition重命名下載的文件。返回文本內(nèi)容的請求(默認(rèn)只啟用了GET請求)支持緩存,可設(shè)置默認(rèn)過期時間和針對當(dāng)前請求的過期時間。
BitmapUtils模塊:加載bitmap的時候無需考慮bitmap加載過程中出現(xiàn)的oom和android容器快速滑動時候出現(xiàn)的圖片錯位等現(xiàn)象。支持加載網(wǎng)絡(luò)圖片和本地圖片。內(nèi)存管理使用lru算法,更好的管理bitmap內(nèi)存??膳渲镁€程加載線程數(shù)量,緩存大小,緩存路徑,加載顯示動畫等。
3.2.2 ViewPagerIndicator
分頁指示部件兼容:viewpage的Android支持庫和ActionBarSherlock。最初基于Patrik Akerfeldt ViewFlow。
當(dāng)使用viewpage小部件并不總是顯而易見的用戶,有他們可以導(dǎo)航到相鄰的看法。通過實現(xiàn)你這個小部件提供一個明確的指標(biāo),存在額外的內(nèi)容,他們可以點(diǎn)擊或滑動。
用ViewPageIndicator實現(xiàn)Tab標(biāo)簽很容易,而且ViewPageIndicator里面還有各種的指示器,相對于用ActionBarSherlock來實現(xiàn),ViewPageIndicator更加靈活,而且修改ActionBarSherlock的樣式比較復(fù)雜,如果你的項目中有用到ActionBarSherlock這個庫,你可以使用來實現(xiàn)Tab分頁,如果Tab上面還加導(dǎo)航條,ActionBarSherlock只能使用ActionBar來實現(xiàn)咯,而使用ViewPageIndicator我們可以更加靈活的使用自己的布局。
3.2.3 Share SDK
ShareSDK是一種社會化分享組件,為iOS、Android、WP8 的應(yīng)用程序提供社會化功能,并且ShareSDK集成了很多常用的類庫和接口,大大縮短了應(yīng)用開發(fā)者的開發(fā)時間,并且提供了社會化統(tǒng)計分析管理后臺。
3.2.4 SimpleCropView
一個圖片裁減庫,可以自定義UI,非常不錯。
3.2.5 ImageSelector
實現(xiàn)多圖選擇,支持單選和多選兩種模式。
3.2.6 Android地圖SDK
基于Android 2.1及以上版本設(shè)備的應(yīng)用程序接口。開發(fā)適用于Android平臺開發(fā)的移動終端的地圖應(yīng)用。只需要調(diào)用地圖的SDK接口,開發(fā)者就可以輕松的訪問到百度地圖提供的服務(wù)和數(shù)據(jù),然后構(gòu)建功能豐富和交互性強(qiáng)的地圖類功能APP。
3.3 技術(shù)難點(diǎn)(360全景圖)
3.3.1 在android中使用OpenGL ES需要三個步驟
第一步創(chuàng)建GLSurfaceView組件,使Activity來顯示GLSurfaceView組件。
第二步創(chuàng)建GLSurfaceView.Renderer實例,實現(xiàn)接口里的方法,如下:abstract void onDrawFrame(GL10 gl),Called to draw the current frame.
abstract void onSurfaceChanged(GL10 gl, int width, int height):Called when the surface changed size.
abstract void onSurfaceCreated(GL10 gl, EGLConfig config):Called when the surface is created or recreated.
第三步調(diào)用GLSurfaceView組建的setRenderer (GLSurfaceView.Renderer renderer) 方法并且指定Renderer對象,然后由Renderer對象完成GLSurfaceView里3D圖形的繪制。
3.3.2 運(yùn)行機(jī)制
程序開始:onSurfaceCreated —> onSurfaceChanged —> onDrawFrame —> onDrawFrame —> onDrawFrame。
程序后臺喚醒:onSurfaceChanged—> onDrawFrame—>onSurfaceChanged —> onDrawFrame —> onDrawFrame。
onDrawFrame()在每幀中會被調(diào)用,用它來描述一個時時繪制的場景。還可以調(diào)用glclear去清空幀的緩沖,然后通過其他OpenGl ES的調(diào)用去繪制當(dāng)前需要繪制的場景。
onSurfaceChanged()在surface的尺寸大小改變的時候會被調(diào)用,主要用來設(shè)置openGL的觀察點(diǎn)并且你也可以在這里設(shè)置固定的Camera。
onSurfaceCreated()在你開始渲染的時候被調(diào)用,OpenGL ES在繪制上下文的時時候都會被重建(Activity暫停和恢復(fù),繪制的上下文也會隨之丟失和重建)。
onSurfaceCreated()用于創(chuàng)建持久的OpenGL資源。
3.4 頁面效果
3.4.1 首頁
首頁的效果圖包括:主頁條目菜單頁面,條目詳情頁面,和分享頁面。
3.4.2 專題
專題菜單下面的四個子頁面效果。
3.4.3 周邊
周邊菜單下面的地圖頁面,搜索頁面,導(dǎo)航頁面,詳情頁面。
3.4.4 我的
我的菜單下面的頁面,包括了用戶模塊相關(guān)頁面,足跡,生活助手。
4 結(jié)論
該應(yīng)用程序基本實現(xiàn)了設(shè)計目標(biāo)和要求的功能,為用戶提供了一個比較真實,可靠,豐富,參考價值比較高的消費(fèi)信息。來幫助用戶選擇周邊的相關(guān)的吃喝玩樂服務(wù),合理的安排自己的休息時間,享受生活。
參考文獻(xiàn):
[1] 孫曉宇. Android手機(jī)界面管理系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京: 北京郵電大學(xué),2010.
[2] 劉黨偉. Android手機(jī)用戶定位系統(tǒng)的設(shè)計與實現(xiàn)[D]. 廈門:廈門大學(xué), 2014.
[3] Nisarg, Gandhewar, Rahila Sheikh. Google Android An Emerging Software Platform For Mobile Devices[J]. International Journal on Computer Science and Engineering, 2010,12(2):2-7.
[4] 范麗娜. 中國手機(jī)市場移動互聯(lián)網(wǎng)盈利模式探討[D]. 北京: 北京郵電大學(xué), 2009.
[5] 明日科技. Android從入門到精通(2012年版)[M]. 北京: 清華大學(xué)出版社, 2012, 4-10.endprint