最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

安卓APP源碼和設(shè)計報告——導(dǎo)航系統(tǒng)

2022-12-11 01:07 作者:ChatGPT云炬學(xué)長  | 我要投稿

演示答辯發(fā)言稿:

注意:1.在mainfest.xml文檔中添加訪問權(quán)限即一系列<uses-permission>元素使用Android中提供的權(quán)限。比如百度地圖的使用聯(lián)網(wǎng)的情況下需要網(wǎng)絡(luò)功能權(quán)限。

2.在Stings.xml中添加一些字符串數(shù)組,離線數(shù)據(jù)管理、簡體繁體切換信息,存放字符串信息

麥當勞類目錄:

Mc_DBUtil

McAddressInfo

MainActivity

McAdView

McContant

MainActivity這個類起一個在MVC模型中的Controller的功能,生成軟件界面,是View層的內(nèi)容并且也從Model層取出數(shù)據(jù)通過它自身的控制,將信息顯示在View層上。。

MainActivity與BNavigatorActivity這兩個Controller分別控制主界面以及地圖界面,兩者有著關(guān)聯(lián)的關(guān)系,MainActivity可以控制主界面經(jīng)過一些觸發(fā)事件調(diào)用MainActivity中的LaunchNavigator()方法跳轉(zhuǎn)到地圖界面。即運行界面右上角的三角按鈕。

各類的作用簡介:

BNavigatorActivity類主要控制地圖界面,創(chuàng)建Mapview,導(dǎo)航視圖,設(shè)置語音播放,以及對導(dǎo)航過程中來電話的處理。

MainActivity則是對主界面進行控制的,其中包含許多自定義方法:其中最主要的便是gotoMainView()方法即主界面控制。首先初始化導(dǎo)航引擎,再自定義3個radioButton的監(jiān)聽器回調(diào)函數(shù)。從而實現(xiàn)按下3個按鈕后的對應(yīng)功能。還有初始化地址的方法,創(chuàng)建對話框方法、動態(tài)更新對話框內(nèi)容方法、為下拉框配置監(jiān)聽器方法、計算路徑距離方法、發(fā)布導(dǎo)航消息方法、獲得sd卡路徑方法,調(diào)用GPS方法、獲得位置方法、初始化店名、區(qū)名列表方法。位置改變觸發(fā)方法。導(dǎo)航的起點終點設(shè)置在此類中完成。用不同的state值表示按了不同的RadioButton,就是主界面的控制。

Mc_DBUtil即SQLite數(shù)據(jù)庫的創(chuàng)建,注意數(shù)據(jù)庫信息放入data/data/包名下面。正如sharedPerence中所提及的查看file Explore可以查看數(shù)據(jù)。對數(shù)據(jù)庫的增刪關(guān)閉操作。類中有初始化數(shù)據(jù)方法,通過sql語句獲取城市名列表、獲取區(qū)名列表、獲取店名列表、獲取確定了的店名列表、獲取店名、所有地址的經(jīng)緯度列表。

McADDressInfo類主要存放麥當勞店經(jīng)緯度信息,列表信息等。

McAdView是麥當勞廣告界面繼承view 類,使用圖片數(shù)組,利用線程實現(xiàn)圖片的更新,這里就放了3張圖片。如上機中曾分析的例子Handler利用線程控制圖片的更新展示。最主要的是將代碼作為了main.xml中的元素使得主界面中能夠出現(xiàn)廣告圖片。

McConstant則是存放一些常數(shù)如:MapView的尺寸信息、邊界寬度、Toast消息編號等。

運行效果:


課程名稱:

班 級:

學(xué) 號:

姓 名:

任課教師:

導(dǎo)航程序分析與改造

一、程序功能和環(huán)境:

  1. 程序功能:

通過三種選擇方式:列表選擇、自己填寫地址、根據(jù)距離最近查詢來查詢南京市各個麥當勞的地址,用百度地圖即手機自帶的GPS顯示麥當勞位置,并依據(jù)路徑語音導(dǎo)航。

2.開發(fā)環(huán)境:

ADT:基于Eclipse的Android開發(fā)工具擴充套件(Android Development Tools plugin)

安卓手機一部

3.程序所必須的配置,設(shè)計:

百度地圖API:即armabi文件夾將其添加到libs文件夾下

在AndroidManifest.xml中添加權(quán)限:

a.SDK1.5需要android.permission.GET_TASKS權(quán)限判斷本程是否為當前運行的應(yīng)用

b.來電消音權(quán)限

c.使用網(wǎng)絡(luò)功能所需權(quán)限

d.使用wifi所需權(quán)限

e連接GPS所需權(quán)限

f.訪問百度地圖服務(wù)位置所需權(quán)限

在res values文件夾下的strings.xml中添加與百度地圖使用相關(guān)的資源信息。

g.在百度API中申請key,申請地址lbsyun.baidu.com/apicon,進入如下界面:

選擇創(chuàng)建應(yīng)用:

開始配置應(yīng)用,我們需要配置我們應(yīng)用的安全碼(形式為:輸入“安全碼”。安全碼的組成規(guī)則為:Android簽名證書的sha1值+“;”+packagename(即:數(shù)字簽名+分號+包名))安全碼的獲取方式如下:我們這邊使用Eclipse直接查看: winows -> preferance-> android -> build:

在之前的步驟中輸入安全碼,sha1值+我創(chuàng)建的應(yīng)用的包名,點擊確認如下圖:

這樣key的配置完成。

在AndroidManifest.xml中添加以下內(nèi)容:

然后點擊保存。

自動生成的keystore文件用于存放存放私鑰和證書信息,程序運行時可依據(jù)key值是否合法,如果是合法的才可以用百度地圖。

Key校驗的結(jié)果顯示到主界面上通過以下代碼,調(diào)用toast顯示瞬間信息:

二、MVC架構(gòu)用例、結(jié)構(gòu)分析、類圖:

1.主界面的controller與主界面相關(guān)類之間的關(guān)系圖:

MVC結(jié)構(gòu)分析:

MainActivity這個類起一個在MVC模型中的Controller的功能,生成軟件界面,是View層的內(nèi)容并且也從Model層取出數(shù)據(jù)通過它自身的控制,將信息顯示在View層上。這里Mc_DBUtil屬于Model層,存放了程序所需的數(shù)據(jù),包含了對數(shù)據(jù)庫的操作方法。McConstant類存放了一些與距離、界面、尺寸相關(guān)的常數(shù)。McADDressInfo類主要存放麥當勞店經(jīng)緯度信息,列表信息等。MainActivity使用了Mc_DBUtil、McConstant、McADDressInfo幾個類中的屬性及方法。McAdView屬于View層它繼承了View類,包含了MainActivity類型的屬性,用于顯示界面的廣告部分。

2.兩個controller:主界面controller與地圖controller之間的關(guān)系圖:

結(jié)構(gòu)分析:

MainActivity與BNavigatorActivity這兩個Controller分別控制主界面以及地圖界面,兩者有著關(guān)聯(lián)的關(guān)系,MainActivity控制主界面經(jīng)過一些觸發(fā)事件后調(diào)用其中的LaunchNavigator()回調(diào)方法重寫onJumptoNavigator()跳轉(zhuǎn)到地圖界面。

3.程序中各類的簡介及作用:

BNavigatorActivity:主要控制地圖界面,創(chuàng)建Mapview,導(dǎo)航視圖,設(shè)置語音播放,以及對導(dǎo)航過程中來電話的處理。

MainActivity:對主界面進行控制,其中包含許多自定義方法:其中最主要的便是gotoMainView()方法即主界面控制。首先初始化導(dǎo)航引擎,再自定義3個radioButton的監(jiān)聽器回調(diào)函數(shù)。從而實現(xiàn)按下3個按鈕后的對應(yīng)功能。還有初始化地址的方法,創(chuàng)建對話框方法、動態(tài)更新對話框內(nèi)容方法、為下拉框配置監(jiān)聽器方法、計算路徑距離方法、發(fā)布導(dǎo)航消息方法、獲得sd卡路徑方法,調(diào)用GPS方法、獲得位置方法、初始化店名、區(qū)名列表方法。位置改變觸發(fā)方法。導(dǎo)航的起點終點設(shè)置在此類中完成。用不同的state值表示按了不同的RadioButton,就是主界面的控制。

Mc_DBUtil:SQLite數(shù)據(jù)庫的創(chuàng)建,注意數(shù)據(jù)庫信息放入data/data/包名下面。正如sharedPerence中所提及的查看file Explore可以查看數(shù)據(jù)。對數(shù)據(jù)庫的增刪關(guān)閉操作。類中有初始化數(shù)據(jù)方法,通過sql語句獲取城市名列表、獲取區(qū)名列表、獲取店名列表、獲取確定了的店名列表、獲取店名、所有地址的經(jīng)緯度列表。

McADDressInfo:主要存放麥當勞店經(jīng)緯度信息,列表信息等。

McAdView:麥當勞廣告界面繼承view 類,使用圖片數(shù)組,利用線程實現(xiàn)圖片的更新,這里就放了3張圖片。如上機中曾分析的例子Handler利用線程控制圖片的更新展示。最主要的是將代碼作為了main.xml中的元素使得主界面中能夠出現(xiàn)廣告圖片。

McConstant:存放一些常數(shù)如:MapView的尺寸信息、邊界寬度、Toast消息編號等。

主要代碼分析:

BNavigatorActivity.java的地圖界面創(chuàng)建主要依靠以下代碼:

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

//創(chuàng)建NmapView

if (Build.VERSION.SDK_INT < 14) {

BaiduNaviManager.getInstance().destroyNMapView();

}

MapGLSurfaceView nMapView = BaiduNaviManager.getInstance().createNMapView(this);

//創(chuàng)建導(dǎo)航視圖

View navigatorView = BNavigator.getInstance().init(BNavigatorActivity.this, getIntent().getExtras(), nMapView);

//填充視圖

setContentView(navigatorView);

BNavigator.getInstance().setListener(mBNavigatorListener);

BNavigator.getInstance().startNav();

// 初始化TTS. 開發(fā)者也可以使用獨立TTS模塊,不用使用導(dǎo)航SDK提供的TTS

BNTTSPlayer.initPlayer();

//設(shè)置TTS播放回調(diào)

BNavigatorTTSPlayer.setTTSPlayerListener(new IBNTTSPlayerListener() {

}

}

  1. 數(shù)據(jù)庫設(shè)計:
    我用的是Android系統(tǒng)自帶的SQLite數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫。將創(chuàng)建的數(shù)據(jù)庫放在“/data/data/com.example.mcnavigation3/sd.db”此路徑下。在創(chuàng)建數(shù)據(jù)庫前要判斷是否存在這個數(shù)據(jù)庫,數(shù)據(jù)庫若存在則打開數(shù)據(jù)庫,若不存在則自己創(chuàng)建數(shù)據(jù)庫。數(shù)據(jù)庫打開或創(chuàng)建好后建立數(shù)據(jù)表
    建表語句:
    create table if not exists sminfo
    (infoid INTEGER(5),
    city varchar(20),
    csmc varchar2(40),
    dm varchar2(80),
    dz varchar2(100),
    jd varchar2(20),
    wd varchar2(20));
    注意要有數(shù)據(jù)庫關(guān)閉操作,數(shù)據(jù)的一些操作必須調(diào)用這個方法,以防一個操作后數(shù)據(jù)庫發(fā)生改變影響其余操作。對數(shù)據(jù)的增刪改查都是用sql語句實現(xiàn)的。該程序數(shù)據(jù)庫的設(shè)計依靠的是Mc_DBUtil類。
    對數(shù)據(jù)庫的增刪改查的操作由以下代碼實現(xiàn):


此程序的數(shù)據(jù)都由以上代碼存儲實現(xiàn)。

  1. 運行邏輯:

1.從數(shù)據(jù)庫中讀取內(nèi)容的時序圖:

2.根據(jù)用戶輸入地點查詢地圖時序圖:

  1. 運行界面:

主界面的顯示主要依靠main.xml以及MainActivity的控制,主界面所需的圖片拷貝到工程的res文件夾下的drawable文件夾下。

界面下方的圖片作為麥當勞導(dǎo)航的廣告部分,其顯示主要依靠以下代碼:

Main.xml中:

正如此段代碼所寫此部分要結(jié)合McAdView這個類

此部分圖片的動態(tài)主要依賴圖片數(shù)組以及線程控制。數(shù)組用于存放與麥當勞有關(guān)的3張圖片,重寫線程中的run()方法實現(xiàn)圖片的切換顯示,定切換周期。實現(xiàn)代碼如下:

數(shù)組存儲圖片代碼:

調(diào)用線程代碼:

圖片的動態(tài)顯示即圖片的重畫,這段代碼的作用是每隔3000ms重畫一張圖片,從而動態(tài)地顯示圖片起到做廣告的作用。并依據(jù)圖片的張數(shù)循環(huán)顯示所有圖片。

界面廣告區(qū)域加載圖片的方法代碼如下:

  1. 程序的測試:

  2. 功能測試:
    用ADT編譯代碼在手機上安裝程序并運行
    a.點開程序,選擇列表選擇按鈕;選擇相應(yīng)的南京區(qū)名,再選擇相應(yīng)的店名,會自動填寫地址。如圖:


還可以選擇其余兩個按鈕,自己填寫按鈕是自己填寫目的地地址;點最近查詢按鈕可以選擇距離找出此距離內(nèi)最近的目的地。此程序的起點是手機GPS檢測到的你所在的地點的經(jīng)緯度。
b.選好目的地后,點擊右上角的三角按鈕進入地圖界面:



導(dǎo)航過程中有語音提示,告訴你行駛路線距離等
C.從地圖界面回到主界面按返回按鈕如下圖所示:


還有“導(dǎo)航結(jié)束”的語音提示。這個測試屬于黑盒測試。

  1. monKey測試:

  2. 通過eclipse啟動一個Android的emulator

  3. 進入SDK路徑即:在ADT安裝中的SDK里的platform-tools處用dos窗口打開

在其中輸入:

adb devices測試連接情況如圖:

先輸入adb shell:

再輸入 monkey -p com.example.mcnavigation3 -v 20

此命令的作用為啟動指定的應(yīng)用程序,并向其發(fā)送20個偽隨機事件。運行結(jié)果如下:


六、程序的不足與改進:

1.程序的不足:我參照楊帆同學(xué)的代碼進行改進但是沒能實現(xiàn)歡迎界面跳轉(zhuǎn)到導(dǎo)航界面,據(jù)我分析是A A的掌握有所欠缺,沒能很好地運用,地圖的顯示也有所欠缺,無法顯示店名只能顯示店附近的地名或飯店。

2改進的可能性:

  1. 能把麥當勞的標志顯示在地圖上

  2. 增加交通方式的選擇規(guī)劃最優(yōu)方式,這都是百度導(dǎo)航做到的因此我還需對百度導(dǎo)航有進一步地了解。

總結(jié):我還需要對百度導(dǎo)航進一步了解,了解其中組件如何設(shè)置實現(xiàn),百度地圖設(shè)計與調(diào)用這一塊知識還是比較模糊的,在同學(xué)的幫助下,我順利地實現(xiàn)了麥當勞導(dǎo)航,在不明白的時候一定要與同學(xué)或經(jīng)驗人士多多探討,這也加快了對程序的理解,防止走錯路。這一實訓(xùn)讓我對安卓程序有了進一步的了解。也了解了安卓的基本設(shè)計思路,弄清了安卓程序的結(jié)構(gòu)。


安卓APP源碼和設(shè)計報告——導(dǎo)航系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
玉屏| 石阡县| 大关县| 同仁县| 乌什县| 冀州市| 江城| 启东市| 临澧县| 德格县| 龙江县| 西贡区| 于田县| 北海市| 新巴尔虎左旗| 望江县| 礼泉县| 青浦区| 阳曲县| 宁阳县| 黄梅县| 大余县| 无锡市| 揭西县| 腾冲县| 瓦房店市| 奉贤区| 琼海市| 枞阳县| 板桥市| 红桥区| 张家港市| 宜君县| 文昌市| 通辽市| 开鲁县| 明星| 葫芦岛市| 普兰店市| 漯河市| 临清市|