999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于android的旅行軟件的設計與實現

2018-01-20 06:42:04賀惠萍榮彥康浩張蘭
電腦知識與技術 2018年31期

賀惠萍 榮彥 康浩 張蘭

摘要:Android是一種以Linux為基礎的開源代碼操作系統,主要應用于智能手機、平板電腦等移動設備,因其良好的人機交互能力和能夠安裝使用眾多功能各異的應用軟件而深受人們喜愛。根據當下人們的使用習慣和實際需求,設計并實現了擁有定位、路線規劃、拍照攝影、天氣預報查詢、微博分享等功能的綜合型旅行軟件。測試結果表明,該軟件能方便人們的出游,給人們提供快捷的出行工具。

關鍵詞:Android;旅行軟件;路線規劃;微博分享

中圖分類號:TP393? ?文獻標志碼:A? ? ?文章編號:1009-3044(2018)31-0067-04

Design and Implementation of a Travel Software Based on Android

HE Hui-ping, RONG Yan, KANG Hao, ZHANG Lan

(School of mechanics and Engineering Science, Zhengzhou University, Zhengzhou 450001, China)

Abstract: Android is an open source code operating system based on Linux. It is mainly used in smart phone. It is very popular because of its good human-machine interaction ability and the ability to install and use many different applications with different functions. A travel software? was designed and implemented with the functions of positioning, route planning, photo photography, weather forecast inquiries and micro-blog sharing, according to people's use and practical needs. The test results show that the software can facilitate people's outbound travel and provide quick travel tools for people.

Key words: Android; travel software; route planning; micro-blog share

1 背景

Android是一種基于Linux的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,因其良好的人機交互能力和能夠安裝使用眾多功能各異的應用軟件而深受人們喜愛。隨著技術的發展,智能手機已經可以實現很多各式各樣的功能。以前需要依賴專業儀器才能實現的功能,比如攝像拍照,手機已經可以輕松實現。動輒300-500萬像素,高則上千萬像素的攝像頭,不但能拍攝效果不錯的照片,甚至可以拍攝高清視頻,在很多時候,都不需要特別帶相機出門,一部手機足以。智能手機大多都配有GPS芯片,再裝上靈圖天行者,凱立德等GPS軟件,既能導航定位,又能記錄行蹤,暢游天下也不怕[1-2]。

雖然目前很多手機已經可以實現各式各樣的功能,但還沒有一款實用型強的綜合型旅行軟件。為了給旅友提供方便快捷的出行工具,該文提出了基于Android的旅行軟件,可以幫助人們很好地管理旅游途中的各種信息。該軟件擁有定位、路線規劃、休閑娛樂查詢、拍照、攝影、小助手、個人中心、天氣預報等功能。可以幫助把出行的路線記錄下來,并且還能把在各個景點拍的照片,標記在上面。這樣,不但能看到當時的照片,更能體驗當時的情形,還能給每段旅程或每個地方配上小小的游記心得。而且可以查詢旅游景點的天氣來制定出游計劃,快捷方便。還可以方便地與別人分享、查找信息。可以很大程度的減少喜歡旅游的朋友們的工作量,提高出行效率[3-4]。

2 Android的架構概述

Android是一個包括操作系統,中間件以及一些重要應用程序的專門針對移動設備的層次結構的軟件集[5-6]。其軟件層次結構自下而上分為以下幾個層次:

第一層:Linux操作系統和驅動(Linux kernel),由C語言實現。包括Android核心系統服務所依賴的Linux2.6內核,以及內核的驅動程序。

第二層:本地框架和Java運行環境(LIBRARIES 和 ANDROID RUNTIME)由C/C++實現。包含C/C++庫,被Android系統中不同組件使用,它們通過Android應用程序框架為開發者進行服務。

第三層:Android應用框架(ANDROIDFRAMEWORK)。在Android系統中,開發人員也可以完全訪問核心應用程序所使用的API框架。

第四層:Android應用程序(APPLICATIONS)。Android應用程序都是有Java語言編寫的。用戶開發的Android應用程序和Android的核心應用程序是同一層次的,它們都是基于Android的系統API構建的。

3 系統設計與實現

旅行軟件總的分為五個功能模塊,每個模塊下有相應的子功能。五個功能模塊分別為地圖、相機、天氣預報、個人中心和小助手。相機提供了拍照、攝影功能;地圖提供了公交、休閑娛樂等信息查詢,天氣預報提供天氣的查詢,根據這些查詢結果旅友可以準備出行裝備;個人中心可以使旅友進行微博分享和記錄日記;小助手則提供了文字手冊提供給旅友參考。項目功能結構圖如圖1:

3.1 地圖模塊

在地圖模塊下有四個子功能模塊如圖1所示,任何用戶在打開地圖的時候,可以進行定位、路線查詢、餐飲娛樂休閑信息查詢。

3.1.1 定位

定位模塊能快速定位用戶的當前位置,它由LocationOverlayDemo.java類提供,并繼承MapViewactivity。因為是對百度地圖操作,其實質是重寫它原有的Activity。使用百度地圖SDK前需先初始化地圖管理者。地圖管理者是一個BMapManager類,地圖定位、搜索功能都需要BMapManager來管理[7]。BMapManager提供四個接口:init, start, stop, destroy。在Application里生成BMapManager對象并初始化,在程序退出時調用destory,在需要使用sdk功能的activity的onCreate里調用start, onDestroy調用stop,或者onResume/onPause分別調用start和stop。在調用百度地圖SDK時要在Manifest.xml文件中配置權限代碼如下:

<uses-permission android: name="android. Permission. ACCESS NETWORK STATE"/>

<uses-permission android: name="android. Permission. ACCESS FINE LOCATION"/>

<uses-permission android: name="android. permission. INTERNET"/>

<uses-permission android: name="android. permission. WRITE EXTERNAL STORAGE"/>

<uses-permission android: name="android. Permission. ACCESS WIFI STATE"/>

<uses-permission android: name="android. Permission. CHANGE WIFI STATE/>

<uses-permission android: name="android. permission. READ PHONE STATE"/>

由于調用了百度地圖功能,所以需要申請一個百度地圖SDK的一個Key值。此key需要實現生命才可以獲取授權使用地圖功能[8]。用戶從主界面登錄,開啟定位功能,即可得到所在位置。用戶從主界面登錄進入點擊進入定位按鈕開啟定位功能,藍色圖標為當前位置,本人所在位置為鄭州市金水區文化路97號。如圖2:

3.1.2 路線查詢

路徑查詢是一種特殊的檢索服務。因此,在使用路徑規劃服之前首先要對檢索相關的方法進行初始化。在使用檢索服務時,需要明確唯一的起點和終點,否則將不能搜到所需結果;當起點或終點信息不唯一時,SDK會返回一個起點/終點列表,可通過選擇列表中的信息來完成起點/終點的唯一選擇,然后再進行路徑搜索。路線查詢模塊包括自駕路線查詢、公交路線查詢和步行路線查詢等功能。

自駕路線通過drivingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end)來實現[9]。同時還提供了帶有途經點功能的駕車路線檢索接口drivingSearch(String startCity, MKPlanNode start, String endCity, MKPlanNode end, ArrayList<MKWpNode> wpNodes)。獲取結果并展示時,需要開發者實現MKSearchListener接口中的onGetDrivingRouteResult方法。實現代碼如下:

public void onGetDrivingRouteResult (MKDrivingRouteResult result, int iError) {

If (result == null) {

return;

}

RouteOverlay routeOverlay = new RoutOverlay (MyMapActivity.this, mMapView);

routeOverLay. setData (result . getPlan (0).getRoute (0) );

mMapView.getOverlays ( ) . add(routeOverlay);

mmMapView.refresh ( );

公交路線查詢是百度地圖SDK集成的搜索服務,通過初始化MKSearch類,注冊搜索結果的監聽對象MKSearchListener,實現異步搜索服務。搜索的方法為transitSearch(String city, MKPlanNode start, MKPlanNode end)。city:為待查公交線路所在城市,start和end分別是起點和終點。獲取結果的方法改為重寫onGetTransitRouteResult方法。

步行路線搜索與駕車路線搜索類似,只需將mMKSearch.drivingSearch(null,? ? ?start, null, end)修改為mMKSearch.walkingSearch(null, start, null, end),獲取結果的方法改為重寫onGetWalkingRouteResult即可。點擊路線規劃,輸入起點和終點,選擇步行搜索,結果如下圖所示:

3.1.3 休閑、娛樂查詢

休閑、娛樂查詢主要涉及城市檢索功能,即在某一城市內搜索興趣點信息。所使用的方searchInterest (String city, String key)。當使用各種檢索服務完成檢索功能后,用戶需要針對相應的檢索執行銷毀操作,從而實現釋放內存等資源釋放資源的代碼為mSearch.destory()。點擊休閑娛樂查詢按鈕,輸入所要查找城市及檢索關鍵詞,例:鄭州,餐廳。實現效果圖如圖4:

3.2 相機模塊

相機模塊下有三個功能按鈕分別是瀏覽圖片、拍照/錄像、瀏覽視頻。SurfaceView用于設置相機的預覽效果, 由 surfaceHolder來控制[10]。surfaceHolder是系統提供用來設置surfaceView的一個對象,通過surfaceView.getHolder()這個方法來獲得。Camera類提供setPreviewDisplay(SurfaceHolder)的方法來連接surfaceHolder,提供startPreview()和stopPreview()來開啟和關閉預覽。 SurfaceHolder.Callback是個holder,用來顯示surfaceView 數據的接口。 surfaceHolder必須設定一個setType()方法,這樣拍完照后就可以在onActivityResult(int requestCode, int resultCode, Intent data)中獲取到Bitmap對象。其關鍵代碼如下:

Bitmap bitmap = (Bitmap) data.getExtras().get("data");

//將圖像存儲到sd卡之前,先檢查一下sd卡是否可用。

String sdStatus = Environment.getExternalStorageState();

if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {

Log.v("TestFile","SD card is not avaiable/writeable right now.");

return;

}

3.3 天氣預報模塊

天氣預報模塊包括氣溫、風力、空氣質量、紫外線的天氣情況的查詢。可以根據輸入城市名稱來查詢天氣,操作簡潔。天氣預報模塊用到WebService接口來獲取數據。WebService是一種基于SOAP協議的遠程調用標準,通過webservice可以將不同操作系統平臺、不同語言、不同技術整合到一塊[11]。在Android SDK中沒有提供調用WebService的庫。因此,需要使用第三方的SDK來調用WebService。適合手機的WebService客戶端的SDK比較常用的是Ksoap2。可以將其從網上進行下載,并將jar包加入libs目錄下。接下來調用WebService接口。可以從http://www.webxml.com.cn/WebServices/WeatherWebService.asmx獲取免費的天氣預報接口。通過調用里面的callWebService(String url, final String methodName,HashMap<String, String> properties,final WebServiceCallBack webServiceCallBack)就可以來獲取想要的數據。

具體實現:首先創建HttpTransportsSE對象。通過HttpTransportsSE類的構造方法可以指定WebService的WSDL文檔的URL;然后創建SoapObject對象,里面的參數分別是WebService的命名空間和調用方法名,設置調用方法的參數值,如果沒有參數,就不設置,有參數的話調用SoapObject對象的addProperty(String name, Object value)方法將參數加入到SoapObject,對象中實例化SoapSerializationEnvelope,傳入WebService的SOAP協議的版本號,將上面的SoapObject對象通過setOutputSoapObject(Object soapObject)設置到里面,并設置是否調用的是.Net開發的WebService和是否debug等信息。因為涉及到網絡操作,所以使用了線程池來異步操作調用WebService接口,在線程中調用HttpTransportsSE對象的call(String soapAction, SoapEnvelope envelope)方法就能實現對WebService的調用,并且通過soapEnvelope.bodyIn獲取WebService返回的信息,但是返回的信息是在子線程中,需要利用Handler來實現子線程與主線程進行轉換,然后在Handler的handleMessage(Message msg)中將結果回調到callBack的參數中。輸入查詢城市然后效果圖如圖6:

3.4 個人中心模塊

3.4.1 微博分享

用戶在注冊、登陸后可已將旅行心得、照片和視頻分享到微博上。分享功能調用了shareSDK。為了集成ShareSDK,需要到ShareSDK官網注冊并創建應用,獲得ShareSDK的APPkey,然后下載壓縮包。然后通過導入的方式導入到項目中[12-13]。

分享功能實質就是Onekeyshare方法的調用,這里通過oks對象可以輸出提示信息。其關鍵代碼如下:

public void onClick(View v){

//TODO 自動生成的方法存根

OnekeyShare oks = new? OnekeyShare( );

}

滑動九宮格點擊新浪微博,登錄成功后點擊分享圖標即可,如圖7:

3.4.2 日記本

日記本模塊可以記錄用戶的個人日記,需要使用Android自帶了SQLite數據庫。SQLite是一款輕型的數據庫,占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合。SQLite處理速速很快,同時它是無類型的。用戶可以保存任何類型的數據到所想要保存的任何表的任何列中。由于記事本功能依賴于SQLite數據庫增刪改查,所以需要一個數據庫管理者。DatabaseHelper繼承于SQLiteOpenHelper,旗下的onCreate方法用于生成數據庫,onUpdate用于更新數據庫。使用ListViewAdapter來管理記錄條目,使用Intent方法來傳值。其關鍵代碼如下:

Intent intent = new Intent();

intent . putExtra ( "id" , cursor.getString(cursor. getColumnIndex( "_id " ) ) ) ;

intent . putExtra( "state" , ALERT_STATE) ;

// intent . putExtra( "state" , EDIT_STATE) ;

intent . putExtra ( "title" , cursor.getString( cursor. getColumnIndex( "title" ) ) ) ;

intent . putExtra ( "time" , cursor.getstring(cursor. getColumnlndex( "time" ) ) ) ;

intent . putExtra( "content " , cursor.getString(cursor . getColumnIndex( " content " ) ) ) ;

3.5 小助手模塊

小助手模塊由出行裝備、旅行保健、安全常識、購物常識、權益保護、自駕知識、戶外運動、攝影常識八個按鈕功能組成的,主要提供給旅友一些常識。顯示的txt格式文本信息使用setContentView(R.layout.xx)關聯相應的xml文件實現。如圖8:

4 結束語

該文基于android操作系統平臺設計并實現了一種擁有定位、路線規劃、拍照攝影、天氣預報查詢、微博分享等功能的綜合型旅行軟件。本軟件的綜合性能比單一的工具軟件要出色,是基于android平臺的精巧設計,其特點是:操作方便,界面簡潔,實用性強。測試結果表明,該軟件能方便人們的出游體驗,給旅游者提供快捷的出行工具。

參考文獻:

[1] 任克強, 李曉亮, 謝斌. 基于Android的手機導航系統設計與實驗[J]. 實驗技術與管理, 2014, 31(5): 131-135.

[2] 譚立興, 吳亮, 張煒. 基于Android平臺泰科教務軟件的設計與實現[J]. 軟件工程, 2016 19(9): 23-26.

[3] 許浩海, 牛亞峰, 杜宣成, 等. 基于安卓平臺的旅游社交軟件的設計與開發[J]. 電腦知識與技術, 2014, 10(10): 2273-2276.

[4] 遲玉梁, 甘新玲, 李永. 基于Android平臺的多人實時定位與交流系統的設計與實現[J]. 實驗技術與管理, 2015, 32(9): 160-162.

[5] 余志龍. Android SDK開發范例大全[M]. 北京: 人民郵電出版社, 2010.

[6] 郭宏志. Android應用開發詳解[M]. 北京: 電子工業出版社, 2010.

[7] 張國海. 基于Android SDK離線地圖功能的實現[J]. 電腦知識與技術, 2014, 10(18): 4172-4174.

[8] 時光, 馬維華, 魏金文. 基于Android4.4和百度地圖的遠程定位系統設計[J]. 單片機與嵌入式系統應用, 2014, 14(11): 39-41.

[9] 王亞州. 基于Android平臺的景區路線查詢系統設計[J]. 電子技術與軟件工程, 2016(16): 70, 96.

[10] 牛軍偉. 基于Android手機系統的攝像頭圖像高動態范圍增強[D]. 景德鎮: 景德鎮陶瓷學院, 2010.

[11] 潘穎輝. 基于Android和嵌入式Web技術的智能家居系統設計[J]. 東北師大學報: 自然科學版, 2015, 47(1): 71-76.

[12] 劉寶. Android平臺旅行記錄和分享應用的設計與實現[D]. 北京: 北京交通大學, 2015.

[13] 肖楷樂. 基于Android系統的新聞客戶端的設計與實現[D]. 北京: 北京郵電大學, 2017.

主站蜘蛛池模板: 国产精品无码一二三视频| 色哟哟国产精品| 97国内精品久久久久不卡| 亚洲码一区二区三区| 国产呦视频免费视频在线观看| 国产激情无码一区二区APP | 亚洲第一页在线观看| 9丨情侣偷在线精品国产| 久久无码高潮喷水| 国产第一页免费浮力影院| www.av男人.com| Jizz国产色系免费| 少妇被粗大的猛烈进出免费视频| 国产精品污污在线观看网站| 国内自拍久第一页| 成人噜噜噜视频在线观看| 欧美精品成人| 丁香亚洲综合五月天婷婷| 99热这里只有精品5| 国产一级α片| 久久semm亚洲国产| 精品国产女同疯狂摩擦2| 尤物国产在线| 九九精品在线观看| 国产成人精品第一区二区| 99久久精品视香蕉蕉| 国产精品自拍露脸视频| 国产十八禁在线观看免费| 欧美国产精品拍自| 色偷偷av男人的天堂不卡| 97视频精品全国免费观看| 国产哺乳奶水91在线播放| 精品人妻AV区| 伊人精品视频免费在线| 亚洲水蜜桃久久综合网站 | 999在线免费视频| 日本精品视频一区二区| 伊人色天堂| 久久久久亚洲AV成人人电影软件| 色婷婷啪啪| 在线色综合| 国内精品视频| 国产精品浪潮Av| 久久国产精品77777| 国产亚洲精久久久久久久91| 97在线碰| 一级毛片免费观看久| 欧美成人a∨视频免费观看| 久久久受www免费人成| 亚洲日本中文字幕乱码中文| 国产成人精品免费av| 99久久无色码中文字幕| 精品91视频| 欧美一区二区精品久久久| 亚洲综合中文字幕国产精品欧美| 欧美综合一区二区三区| 被公侵犯人妻少妇一区二区三区| 欧美色视频日本| 久久网欧美| 成人av手机在线观看| 亚洲精品视频免费| 中文字幕欧美日韩| 浮力影院国产第一页| 东京热高清无码精品| 高清欧美性猛交XXXX黑人猛交| 国产麻豆永久视频| 成人一级免费视频| 成人午夜视频在线| 中文成人在线| 国产网站一区二区三区| 成人另类稀缺在线观看| 中文成人在线| 亚洲精品国产精品乱码不卞| 亚洲国产日韩在线观看| 中文字幕亚洲第一| 欧美一级大片在线观看| 青草视频免费在线观看| 国产乱码精品一区二区三区中文| 亚洲伊人久久精品影院| 亚洲一区二区三区国产精华液| 国产91麻豆视频| 精品综合久久久久久97超人|