兒童游玩智能助手設(shè)計(jì)和實(shí)現(xiàn) 信息管理與信息系統(tǒng)專業(yè)_第1頁(yè)
兒童游玩智能助手設(shè)計(jì)和實(shí)現(xiàn) 信息管理與信息系統(tǒng)專業(yè)_第2頁(yè)
兒童游玩智能助手設(shè)計(jì)和實(shí)現(xiàn) 信息管理與信息系統(tǒng)專業(yè)_第3頁(yè)
兒童游玩智能助手設(shè)計(jì)和實(shí)現(xiàn) 信息管理與信息系統(tǒng)專業(yè)_第4頁(yè)
兒童游玩智能助手設(shè)計(jì)和實(shí)現(xiàn) 信息管理與信息系統(tǒng)專業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄前言 3第1章 緒論 41.1相關(guān)研究背景 41.1.1智能手機(jī)的影響 41.1.2Android平臺(tái)優(yōu)勢(shì) 41.2兒童游玩隱患 51.2.1自然因素 51.2.2社會(huì)因素 61.3研究意義 71.4論文研究結(jié)構(gòu)及內(nèi)容 7第2章 相關(guān)技術(shù)及框架 92.1開發(fā)工具及相關(guān)技術(shù) 92.1.1AndroidStudio工具 92.1.2SQLite數(shù)據(jù)庫(kù) 102.1.3Android平臺(tái)架構(gòu) 102.2MVC分層設(shè)計(jì)架構(gòu) 122.2.1MVC架構(gòu)的構(gòu)成 122.2.2MVC架構(gòu)的優(yōu)勢(shì) 122.3本章小結(jié) 13第3章 兒童游玩智能助手設(shè)計(jì) 143.1需求分析 143.1.1系統(tǒng)需求 143.1.2功能需求 153.2可行性分析 173.3本章小結(jié) 17第4章 兒童游玩智能助手實(shí)現(xiàn) 184.1通用功能 184.1.1歡迎和導(dǎo)航 184.1.2注冊(cè) 184.1.3登陸 194.1.4判斷是否聯(lián)網(wǎng)功能 194.1.5將地址轉(zhuǎn)化為經(jīng)緯度 204.2天氣預(yù)測(cè) 214.3推薦游玩地點(diǎn) 234.3.1獲取用戶出行信息 244.3.2推薦結(jié)果陳列 244.3.3路線規(guī)劃 254.4個(gè)人中心 274.4.1上傳頭像 274.4.2填寫信息 284.4.3查看歷史 294.4.4修改密碼 304.4.5設(shè)置 314.5本章小結(jié) 32第5章 結(jié)論與展望 335.1研究結(jié)論 335.2研究展望 33參考文獻(xiàn) 35致謝 37

摘要隨著科技的發(fā)展,智能手機(jī)不再是奢侈品而是人們必不可少的日常用品,其中的應(yīng)用程序在人們生活中的應(yīng)用也越來越頻繁。兒童在外出游玩時(shí)的安全問題一直是社會(huì)的關(guān)注點(diǎn),因?yàn)閮和拇嗳?、安全意識(shí)不強(qiáng)、對(duì)周邊的事物記憶不深刻等特性,使得兒童游玩時(shí)自發(fā)或被動(dòng)地處于危險(xiǎn)之中。文章從自然因素和社會(huì)因素兩方面提出了兒童游玩面臨的隱患,進(jìn)而設(shè)計(jì)一個(gè)兒童游玩智能助手,用于保障兒童游玩安全,將危及兒童人身安全的因素考慮在內(nèi),為兒童推薦較為安全的游玩場(chǎng)所,使家長(zhǎng)更加放心。本文的內(nèi)容將涉及到基于安卓的兒童游玩智能助手的設(shè)計(jì)和實(shí)現(xiàn),該應(yīng)用程序嚴(yán)格根據(jù)需求分析和可行性分析,利用分層模式的開發(fā)框架,結(jié)合合適的開發(fā)技術(shù)和API,通過調(diào)查兒童游玩隱患的自然因素和社會(huì)因素,將可控制和預(yù)測(cè)的因素監(jiān)控起來,達(dá)到保障兒童安全的目的。文章清晰地描述了開發(fā)理念,在保證應(yīng)用程序性能的同時(shí),盡可能地提高用戶體驗(yàn)和滿意程度,使得應(yīng)用程序具備更高的綜合性和應(yīng)用能力。關(guān)鍵詞:兒童游玩;Android平臺(tái);危險(xiǎn)因素;API

AbstractWiththedevelopmentofscienceandtechnology,smartphonesarenolongeraluxurybutanindispensabledailynecessitiesforpeople.Applicationsoftheseappsarealsobecomingmoreandmorefrequentinpeople'slives.Thesafetyproblemofchildrenwhentheygoouttoplayhasalwaysbeentheconcernofthesociety,becausechildren'svulnerability,lackofsafetyawareness,andthelackofdeepmemoryofthesurroundingthings,makechildrenplayspontaneouslyorpassivelyindanger.Thispaperputsforwardthehiddendangersofchildren'splayfromtheaspectsofnaturalandsocialfactors,andthendesignsachildren'splayintelligentassistant,whichcanbeusedtoguaranteethesafetyofchildren'splay,andtotakeintoaccountthefactorsthatendangerthesafetyofchildren,soastorecommendsaferplacesforchildrentoplay,soastomakeparentsmorecomfortable.Thecontentofthisarticlewillinvolvethedesignandimplementationoftheintelligentassistantforchildren'splaybasedontheandroid.Theapplicationisstrictlybasedontherequirementsanalysisandfeasibilityanalysis,usingthedevelopmentframeworkofthehierarchicalmodel,combiningwiththeappropriatedevelopmenttechnologyandAPI,andbyinvestigatingthenaturalandsocialfactorsofthehiddendangersofchildren,thecontrolandpredictionfactorscanbemonitoredtoachievethegoalofensuringthesafetyofchildren.Thearticleclearlydescribestheconceptofdevelopment,whileensuringtheperformanceoftheapplication,itcanimprovetheuserexperienceandsatisfactiondegreeasmuchaspossible,sothattheapplicationhasahighercomprehensiveandapplicationcapability.Keywords:childrenplay;Androidplatform;dangerousfactors;API

前言兒童是社會(huì)中脆弱而又重要的群體,他們身上擔(dān)負(fù)著家庭和社會(huì)的未來,因此兒童的成長(zhǎng)和發(fā)展尤其重要。游戲是兒童的天性,在幼年兒童通過游戲來接觸社會(huì),認(rèn)識(shí)世界,兒童的游玩行為是自發(fā)的,也是在成長(zhǎng)中舉足輕重的存在。但不恰當(dāng)?shù)挠瓮鎴?chǎng)所會(huì)給兒童帶來傷害,因此兒童游玩時(shí)需要選擇一個(gè)既能帶給兒童游玩樂趣又能保障兒童安全的地點(diǎn)。兒童游玩智能助手在家長(zhǎng)或兒童選擇游玩地點(diǎn)時(shí)給出建議,最終結(jié)果還是由用戶決定,用戶在兒童游玩地點(diǎn)選擇中占據(jù)絕對(duì)地位,因此在應(yīng)用程序中需要將一些安全隱患展示給用戶,使用戶意識(shí)到選擇某一個(gè)游玩地點(diǎn)是對(duì)兒童安全有威脅的,這樣才能讓應(yīng)用程序推薦給用戶的結(jié)果站住腳,增加用戶的信任和好感。伴隨著科技的進(jìn)步,開發(fā)工具和框架越來越多樣化,在開發(fā)一個(gè)應(yīng)用程序時(shí)首先要考慮到的就是使用什么工具,只有選擇合適的開發(fā)技術(shù)和框架才能使開發(fā)過程事半功倍。本文首先講述了課題的研究背景和意義,之后介紹了開發(fā)的技術(shù)與框架,分析用戶需求和應(yīng)用程序可行性,并利用掌握的技術(shù)設(shè)計(jì)并實(shí)現(xiàn)一個(gè)兒童游玩智能助手。本文完成的主要工作有:(1)構(gòu)建應(yīng)用程序的開發(fā)模塊,并將每個(gè)模塊劃分為子模塊,分析各個(gè)子模塊的行為與操作,實(shí)現(xiàn)子模塊并將其整合起來。(2)繪制用戶界面,為各個(gè)模塊設(shè)計(jì)樣式,并展現(xiàn)給用戶。(3)實(shí)現(xiàn)各個(gè)界面之間的數(shù)據(jù)傳遞,創(chuàng)建數(shù)據(jù)庫(kù)和多個(gè)數(shù)據(jù)表用于存儲(chǔ)數(shù)據(jù)。(4)進(jìn)行數(shù)據(jù)處理,利用相關(guān)的API獲取必要的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行篩選,將符合用戶需求的結(jié)果呈現(xiàn)給用戶。

緒論本章首先闡述了相關(guān)研究背景,然后提出了兒童在日常游玩過程中面臨的來自自然與社會(huì)的隱患,繼而說明了文章的研究意義,最后系統(tǒng)給出了論文的研究結(jié)構(gòu)以及內(nèi)容。1.1相關(guān)研究背景1.1.1智能手機(jī)的影響隨著科學(xué)技術(shù)的不斷發(fā)展,通訊方式從過去的老式手機(jī)到現(xiàn)在的智能手機(jī),越來越便捷。智能手機(jī)是當(dāng)代社會(huì)中一項(xiàng)重大的科技成果,其功能與時(shí)俱進(jìn)地升級(jí)與完善,它在當(dāng)代人的生活中已經(jīng)不僅僅是通訊工具的存在,更是成為現(xiàn)代人日常生活必不可少的工具。除了最基本的通訊功能,智能手機(jī)還在不斷地?cái)U(kuò)充其他功能,如娛樂、支付、購(gòu)物、出行、檢索等,這些功能使得智能手機(jī)在人們?nèi)粘I钪姓紦?jù)越來越重要的地位,同時(shí)給人們帶來了各個(gè)方面的便利,因此為滿足人們?nèi)找嬖鲩L(zhǎng)的需求,智能手機(jī)中的應(yīng)用程序也層出不窮。智能手機(jī)由于其方便攜帶的特性為人們所喜愛,并且不斷參與到人們的行為與決策中,一定程度上潛移默化地改變?nèi)藗兊男袨榉绞胶退季S方式[1]。在互聯(lián)網(wǎng)時(shí)代,手機(jī)更是為人與人之間的交流創(chuàng)造了新的方式,走在街道上幾乎每個(gè)人手中都有一部智能手機(jī),人們利用智能手機(jī)上提供的各類應(yīng)用獲取有用的信息,達(dá)到自己的目的。軟硬件技術(shù)的發(fā)展使智能手機(jī)具有更加靈活開放的應(yīng)用開發(fā)平臺(tái),具有更長(zhǎng)的使用時(shí)間,更為寬廣的移動(dòng)互聯(lián)網(wǎng)使用體驗(yàn)[2],用戶使用智能手機(jī)越來越得心應(yīng)手,對(duì)智能手機(jī)的期望也越來越大,故而在智能手機(jī)上開發(fā)滿足用戶需求的應(yīng)用已經(jīng)成為大勢(shì)所趨。1.1.2Android平臺(tái)優(yōu)勢(shì)Android是基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)[3],自誕生到被Google收購(gòu)再到投入到手機(jī)生產(chǎn)中,經(jīng)歷了多個(gè)歲月,但在這些個(gè)歲月中它迅速占領(lǐng)了全球智能手機(jī)市場(chǎng)。Android平臺(tái)之所以能夠迅速發(fā)展并占領(lǐng)市場(chǎng),是因?yàn)樗哂絮r明的平臺(tái)優(yōu)勢(shì)和特征。Android平臺(tái)具有開放性。開放的Android平臺(tái)導(dǎo)致其使用者數(shù)量不斷增加,內(nèi)置應(yīng)用程序也日漸豐富,具備短時(shí)間內(nèi)走向成熟的條件。消費(fèi)者能夠使用Android平臺(tái)提供的豐富的軟件資源,而Android平臺(tái)的開放性使得以此平臺(tái)為基礎(chǔ)的安卓手機(jī)品牌眾多,數(shù)量龐大,因此消費(fèi)者能在這些廠商的競(jìng)爭(zhēng)中買到心儀的手機(jī),Android平臺(tái)也因此在消費(fèi)者和廠商群體中逐漸形成了極高的人氣。Android平臺(tái)具有豐富的硬件。Android的開放性使眾多廠商推出的產(chǎn)品呈現(xiàn)出多元化和豐富化的局面,同時(shí)數(shù)據(jù)同步,軟件兼容問題也能得到及時(shí)解決,個(gè)人資料也方便轉(zhuǎn)移。Android平臺(tái)便于開發(fā)。第三方開發(fā)商可以自由地在Android平臺(tái)進(jìn)行開發(fā),生產(chǎn)屬于自己的產(chǎn)品,進(jìn)而催生了一系列別致的軟件。Android在Google的攙扶下走過了10年左右的歲月,Google為他提供了自己擁有的諸多服務(wù),便于它連接用戶和互聯(lián)網(wǎng),這為開發(fā)者提供了便利。除了上述的Android平臺(tái)的優(yōu)勢(shì),它還將網(wǎng)絡(luò)化演繹到了極致,它支持網(wǎng)絡(luò)服務(wù)使Android手機(jī)可以看作是移動(dòng)接入因特網(wǎng)終端。而開源的Android系統(tǒng)具有定制化的ROM,集成的瀏覽器和強(qiáng)大的開發(fā)環(huán)境,它還支持藍(lán)牙、WIFI、GPS等常用應(yīng)用[4]。1.2兒童游玩隱患兒童是社會(huì)中較為脆弱的一類群體,他們往往具有較為薄弱的安全意識(shí),但卻面臨著更多的安全隱患。兒童在游玩時(shí)面臨的安全隱患可以大致有以下兩類因素引起,即自然因素與社會(huì)因素。1.2.1自然因素自然因素對(duì)兒童游玩帶來的隱患問題是人為不能控制的,人們所能做的就是規(guī)避危險(xiǎn)。在自然因素中最常見的、會(huì)影響到兒童出行游玩的主要是天氣情況與空氣質(zhì)量。經(jīng)調(diào)查發(fā)現(xiàn),兒童最喜歡在晴天到戶外活動(dòng);陰天但并不冷時(shí)兒童在戶外依舊比較活躍,甚至下雪天到戶外活動(dòng)的也不少,其中尤以年紀(jì)稍大的孩子居多,但是在霧霾天氣出來玩耍的孩子很少[5]。由此可見,空氣質(zhì)量比之天氣情況對(duì)兒童游玩造成的隱患更大。伴隨著我國(guó)經(jīng)濟(jì)發(fā)展和城鎮(zhèn)水平的不斷提升,許多的城鎮(zhèn)化地區(qū)的生態(tài)環(huán)境遭到了巨大的破壞,空氣質(zhì)量受到了極大的影響。霧霾天氣頻繁出現(xiàn),2013年更是遭遇了有觀測(cè)記錄以來最為嚴(yán)重的污染天氣[6],而PM2.5是導(dǎo)致霧霾的根本原因,它對(duì)人體健康有一定不良影響,兒童作為免疫系統(tǒng)較為薄弱的群體,對(duì)霧霾異常敏感[7]。因此,家長(zhǎng)帶兒童外出游玩時(shí)應(yīng)當(dāng)要格外注重空氣質(zhì)量給兒童帶來的隱患,盡量避免在霧霾天氣帶兒童在戶外場(chǎng)地活動(dòng)。1.2.2社會(huì)因素社會(huì)因素給兒童帶來的隱患更為多樣,如游戲場(chǎng)所設(shè)備的安全性問題,游玩場(chǎng)所的交通情況以及不法人員的犯罪企圖等等,這些隱患一旦發(fā)生就會(huì)對(duì)兒童及其家庭產(chǎn)生不可挽回的傷害。顯而易見,無論兒童在哪里玩耍都會(huì)存在一定的危險(xiǎn),區(qū)別僅僅是安全系數(shù)的高低。兒童日常游戲場(chǎng)所集中在附近的街道、公園、廣場(chǎng)、社區(qū)或者是一些室內(nèi)的游樂場(chǎng)[8],除了室內(nèi)游樂場(chǎng),其他的場(chǎng)地都有一個(gè)共同的特性,他們都是公共開放的,而且平時(shí)的人流量較大。公園等開放場(chǎng)所容易受到犯罪活動(dòng)的消極影響[9]。近年來,兒童拐賣的話題熱度居高不下,尤其是年齡小的兒童不具備防備意識(shí),一旦離開家長(zhǎng)的視線,很容易受到欺騙或是走丟。從家庭和兒童的角度來看,拐賣兒童犯罪的原因是家庭的防范意識(shí)不足,兒童的自我保護(hù)能力差[10],而開放的公共區(qū)域魚龍混雜,監(jiān)控系統(tǒng)也不完善,這無疑是雪上加霜,兒童的安全更加不可控。對(duì)于兒童來說,這些地點(diǎn)是一個(gè)日常游玩比較方便的地方,同時(shí)也是隱患較大的地方。人流量大加上區(qū)域開放,通常四周環(huán)繞著街道,因此車來車往,而兒童的玩耍通常比較隨性,想到什么就做些什么,很少會(huì)有觀察自身周邊交通情況的意識(shí)。所以,兒童在街道的出現(xiàn)就具有突發(fā)性,街道中駕駛者極有可能無法預(yù)料到有兒童的出現(xiàn),這種情形下兒童也極易遇到危險(xiǎn)。家長(zhǎng)不可能時(shí)時(shí)刻刻陪伴著兒童,而這些安全隱患難以預(yù)測(cè),甚至連家長(zhǎng)都沒有意識(shí)到這些危險(xiǎn)的存在,故而社會(huì)因素給兒童帶來的隱患不僅需要在游戲場(chǎng)地的設(shè)計(jì)等方面進(jìn)行完善,更是要提高家長(zhǎng)和兒童對(duì)這些危險(xiǎn)的認(rèn)識(shí),這樣才能減少兒童受到的傷害。1.3研究意義兒童是社會(huì)文化承載者和家庭生命延續(xù)者,他們是這個(gè)社會(huì)中不可忽略的、具有生命能量的存在,他們的健康成長(zhǎng)不僅僅是家庭的期望,也關(guān)系著祖國(guó)的前途命運(yùn),是人類未來發(fā)展的先決條件[11]。游戲是兒童的天性和權(quán)力,兒童根據(jù)自身需求自發(fā)產(chǎn)生游戲行為,他們通過游戲來體驗(yàn)平等的人際關(guān)系,從而獲得探索自發(fā)創(chuàng)造的勇氣和能力[12],游戲在兒童的生活中起著特殊而重要的作用,對(duì)兒童的成長(zhǎng)也起著特殊而重要的作用。兒童游玩場(chǎng)所是兒童除學(xué)校與家庭以外最為重要的成長(zhǎng)地點(diǎn),兒童有權(quán)選擇自己喜歡的游玩地點(diǎn)。隨著科技的不斷進(jìn)步,兒童游玩的場(chǎng)所越來越多樣化[13],家庭的出行方式越來越便捷,兒童外出游玩的選擇也越來越多。與此同時(shí),由于兒童本身的安全意識(shí)不成熟,容易忽略一些隱藏的危險(xiǎn),所以游玩的危險(xiǎn)也隨之而來,而家長(zhǎng)雖然關(guān)注兒童的人身安全,卻不能時(shí)時(shí)刻刻陪伴在兒童身邊。為減少兒童游玩危險(xiǎn),保障兒童安全,兒童游玩智能助手就有了存在的價(jià)值。兒童游玩智能助手所要做的工作就是盡量減少這些意外傷害,根據(jù)影響兒童游玩場(chǎng)所的主客觀因素,判斷是否適宜兒童出行,在最大程度確保兒童安全的基礎(chǔ)上給出游玩地點(diǎn)的推薦,將家長(zhǎng)和兒童忽略的危險(xiǎn)排除在外,讓兒童在健康而安全的環(huán)境下成長(zhǎng)。1.4論文研究結(jié)構(gòu)及內(nèi)容第一章是緒論部分,闡述了智能手機(jī)在當(dāng)代社會(huì)的影響和Android平臺(tái)的優(yōu)勢(shì),并以此為背景,結(jié)合兒童游玩過程中面臨的自然與社會(huì)的雙重隱患,表明了本文的研究意義。第二章是對(duì)開發(fā)所使用的相關(guān)技術(shù)與框架進(jìn)行了介紹,包括開發(fā)工具、數(shù)據(jù)庫(kù)、平臺(tái)架構(gòu)和設(shè)計(jì)框架。第三章是兒童游玩智能助手的前期設(shè)計(jì),包括需求分析與可行性分析。第四章是根據(jù)需求分析來實(shí)現(xiàn)兒童游玩智能助手的細(xì)節(jié),詳細(xì)介紹了開發(fā)過程以及功能實(shí)現(xiàn)的具體步驟與部分重要代碼,以及實(shí)現(xiàn)的效果。第五章是對(duì)研究的總結(jié)和對(duì)未來的展望。

相關(guān)技術(shù)及框架本章首先介紹了開發(fā)所用到的工具和相關(guān)技術(shù),包括開發(fā)工具AndroidStudio、SQLite數(shù)據(jù)庫(kù),Android平臺(tái)架構(gòu)。接著給出了開發(fā)所用到的分層設(shè)計(jì)的架構(gòu),展示了MVC結(jié)構(gòu)的構(gòu)成與優(yōu)勢(shì)。2.1開發(fā)工具及相關(guān)技術(shù)2.1.1AndroidStudio工具AndroidStudio是一個(gè)Android集成開發(fā)工具,可以用于開發(fā)和調(diào)試[14]。它允許開發(fā)者一邊編寫視圖代碼,一邊查看應(yīng)用在不同尺寸屏幕下的樣子,有效解決了開發(fā)過程中遇到的多分辨率的問題。(1)AndroidStudio的功能開發(fā)者控制臺(tái)新增了五個(gè)功能。首先,開發(fā)者控制臺(tái)創(chuàng)建了一個(gè)優(yōu)化小貼士,這個(gè)小貼士在打開主體中的應(yīng)用時(shí)會(huì)提示開發(fā)者為應(yīng)用開發(fā)一個(gè)平板電腦版本。其次,開發(fā)者控制臺(tái)為開發(fā)者提供了一個(gè)應(yīng)用翻譯服務(wù),為開發(fā)者提供專業(yè)的翻譯服務(wù)。接著,開發(fā)者控制臺(tái)使用了推薦跟蹤,推薦跟蹤對(duì)開發(fā)者分析用戶行為做出了卓越的貢獻(xiàn),可以在眾多廣告中找到最有效的一條。之后,開發(fā)者控制臺(tái)給出了營(yíng)收曲線圖,可以使開發(fā)者對(duì)自己開發(fā)的應(yīng)用的營(yíng)收有一個(gè)把握。最后,開發(fā)者平臺(tái)進(jìn)行了用版測(cè)試和階段性展示。開發(fā)者在發(fā)布應(yīng)用之前可以對(duì)應(yīng)用測(cè)試,或者將應(yīng)用推送給部分用戶,由用戶進(jìn)行測(cè)試,所有的測(cè)試結(jié)果都不會(huì)向外部公布。當(dāng)版本測(cè)試結(jié)束且達(dá)到預(yù)期就可以一定量將應(yīng)用推出給用戶使用。(2)AndroidStudio的優(yōu)勢(shì)AndroidStudio相比于國(guó)內(nèi)大多數(shù)開發(fā)者使用的Eclipse,AndroidStudio的啟動(dòng)速度、響應(yīng)速度、內(nèi)存占用都較為領(lǐng)先,它還與Gradle構(gòu)建工具相結(jié)合,在配置、編譯、打包方面都具有一定的優(yōu)勢(shì)。除此以外,強(qiáng)大的UI編輯器為開發(fā)者創(chuàng)建視圖文件提供了便利,完善的插件系統(tǒng)在編程過程中提供輔助,內(nèi)置的終端使開發(fā)者能快速有效地進(jìn)行終端操作。2.1.2SQLite數(shù)據(jù)庫(kù)SQLite是一款以嵌入式為設(shè)計(jì)目標(biāo)的輕型的、關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由于其在嵌入式設(shè)備中占用的資源較少,所以目前已經(jīng)應(yīng)用于很多嵌入式產(chǎn)品中。SQLite數(shù)據(jù)庫(kù)是在Android操作系統(tǒng)中集成的,Android應(yīng)用程序本質(zhì)上是Java程序,但在連接數(shù)據(jù)的方式上兩者截然不同,Android提供了一些新的API來操作SQLite數(shù)據(jù)庫(kù)[15],而Java程序是利用傳統(tǒng)的JDBC來連接數(shù)據(jù)庫(kù),由此可以看出,在開發(fā)過程中開發(fā)者操作SQLite數(shù)據(jù)庫(kù)會(huì)更加便捷。SQLite中的事務(wù)滿足傳統(tǒng)數(shù)據(jù)庫(kù)中事務(wù)的特性,即ACID,SQLite在安裝AndroidStudio時(shí)就已經(jīng)默認(rèn)存在了,它不需要單獨(dú)進(jìn)行安裝和配置。SQLite存儲(chǔ)在單一文件磁盤中,體積較小,因此操作數(shù)據(jù)庫(kù)和數(shù)據(jù)表的速度要快于現(xiàn)下使用較多的數(shù)據(jù)庫(kù)。2.1.3Android平臺(tái)架構(gòu)Android平臺(tái)是基于Linux的操作系統(tǒng),它的系統(tǒng)架構(gòu)和操作系統(tǒng)都使用了分層架構(gòu),被分為四個(gè)層次,即應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行層以及Linux內(nèi)核層。圖2.1Android結(jié)構(gòu)最低層是Linux內(nèi)核層,從圖2.1中可以看出,在這個(gè)LinuxKernel中大多都是驅(qū)動(dòng)程序,它提供了操作系統(tǒng)所具有的最基本的核心功能。在Linux內(nèi)核層之上的是系統(tǒng)運(yùn)行層,該層包括常用類庫(kù)和一些包,在AndroidRuntime中又包括核心包和虛擬機(jī)。由于在Android平臺(tái)上通常使用JAVA語(yǔ)言進(jìn)行編程,所以在Android平臺(tái)上Google為編程語(yǔ)言定制了一個(gè)虛擬機(jī),并開發(fā)了一個(gè)核心包,這個(gè)核心包就類似于在JAVA中使用的JDK的核心包。類庫(kù)提供用戶常用功能。應(yīng)用程序框架層是Android為開發(fā)者提供的框架,有了應(yīng)用程序框架,開發(fā)者只需要在框架中填入所需要的代碼實(shí)現(xiàn)應(yīng)用程序的功能,該層次使得開發(fā)簡(jiǎn)單化。在應(yīng)用程序框架之上開發(fā)應(yīng)用程序,不僅提高了開發(fā)者的開發(fā)效率,還保證了代碼質(zhì)量,這是開發(fā)者需要重點(diǎn)認(rèn)識(shí)的層次。最高層是應(yīng)用程序?qū)樱@一層次中是開發(fā)者所編寫的代碼,開發(fā)者在這里使用應(yīng)用程序框架來開發(fā)應(yīng)用程序。2.2MVC分層設(shè)計(jì)架構(gòu)2.2.1MVC架構(gòu)的構(gòu)成MVC(Model-View-Controller)是一種混合設(shè)計(jì)模式,是軟件工程中一種軟件架構(gòu)模式,強(qiáng)制性地使應(yīng)用程序的輸出、處理和輸入分開[16]。MVC架構(gòu)能夠?qū)崿F(xiàn)動(dòng)態(tài)地進(jìn)行程序設(shè)計(jì),并能夠保障在后續(xù)對(duì)程序進(jìn)行修改、擴(kuò)展、維護(hù)時(shí)不需要大量修改代碼,MVC框架能夠充分利用程序中的部分代碼,使代碼具有可移植性,同時(shí)使程序結(jié)構(gòu)更加直觀。Android應(yīng)用設(shè)計(jì)基礎(chǔ)就是MVC架構(gòu),AndroidStudio默認(rèn)的框架也是MVC架構(gòu)。模型是應(yīng)用程序的主題部分,該層負(fù)責(zé)實(shí)現(xiàn)所有的業(yè)務(wù)邏輯,這些業(yè)務(wù)邏輯主要包括對(duì)數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)以及計(jì)算的操作。模型是獨(dú)立的,它與視圖和控制器無關(guān)。視圖是實(shí)現(xiàn)用戶所看到的界面部分,可以用于接收用戶輸入,也可以將模型中數(shù)據(jù)處理后的結(jié)果呈現(xiàn)在界面上顯示給用戶,這一類的文件通常是xml文件,在使用時(shí)可以方便的引入。視圖中的代碼不具備數(shù)據(jù)或業(yè)務(wù)邏輯,只需要在使用時(shí)先進(jìn)行注冊(cè),將數(shù)據(jù)與控件綁定??刂破髟讷@取到用戶輸入后,在用戶界面顯示數(shù)據(jù)并更新模式對(duì)象的狀態(tài)部分。Android中,Activity中一般編寫的是控制器代碼,控制器連接不同層次,控制應(yīng)用程序的流程,可以處理事件并做出響應(yīng)。2.2.2MVC架構(gòu)的優(yōu)勢(shì)MVC模式將模型和視圖分離以提高系統(tǒng)的靈活性和復(fù)用性,它具有以下優(yōu)勢(shì)。第一,耦合性低,可維護(hù)性高。一個(gè)模型可以對(duì)應(yīng)多個(gè)視圖,為模型創(chuàng)建視圖而無需修改模型。而模型中的數(shù)據(jù)發(fā)生變化時(shí),模型傳遞消息到與自己相關(guān)的視圖,視圖不需要修改,只需要刷新一下即可。視圖層與業(yè)務(wù)層分離,視圖的變化和更改不會(huì)影響到相關(guān)的模型和控制器代碼,而更改業(yè)務(wù)流程或規(guī)則時(shí)視圖也不會(huì)受到影響,這也就為應(yīng)用程序的維護(hù)提供了捷徑。第二,模型可復(fù)用。獨(dú)立于視圖的模型具有強(qiáng)大的可移植性,在一個(gè)新的平臺(tái)上可以只將一個(gè)模型單獨(dú)地移植過來,不必涉及其他部分。第三,提高了開發(fā)效率。在編寫視圖代碼時(shí)開發(fā)者只需要專注地創(chuàng)建一個(gè)良好的用戶界面而不需要考慮如何實(shí)現(xiàn)這些視圖中組件觸發(fā)的行為;而編寫模型代碼時(shí)開發(fā)者只需要考慮業(yè)務(wù)邏輯和數(shù)據(jù)維護(hù),這樣在每一個(gè)部分開發(fā)者只需要專注于做這一部分的事情,能有效提高開發(fā)效率。第四,有利于軟件工程化管理。每一層做好自己該做的工作,分工合作有利于管理程序代碼??刂破魇悄P秃鸵晥D之間的橋梁,它可以將不同的模型和視圖連接起來達(dá)到用戶的需求,所以模型和視圖可以各自修改而互不影響,在修改完畢后再使用控制器連接即可。2.3本章小結(jié)由于在Android平臺(tái)分層架構(gòu)上AndroidStudio和SQLite數(shù)據(jù)庫(kù)的優(yōu)勢(shì)和良好表現(xiàn),在開發(fā)基于Android應(yīng)用程序時(shí)本文選用這兩個(gè)工具,并利用Java編程語(yǔ)言設(shè)計(jì)兒童游玩智能助手,同時(shí)使用MVC框架將代碼組織起來,使模型、視圖、控制器各司其職,將結(jié)果展現(xiàn)給用戶。本章主要介紹了開發(fā)應(yīng)用程序所使用到的開發(fā)工具和技術(shù),并對(duì)MVC做了簡(jiǎn)要介紹。

兒童游玩智能助手設(shè)計(jì)本章節(jié)主要從需求分析和可行性分析兩個(gè)方面,分析了兒童游玩智能助手的設(shè)計(jì)細(xì)節(jié),包括系統(tǒng)需求和功能需求,并從技術(shù)、社會(huì)環(huán)境以及人員等方面表明本系統(tǒng)是完全可行的。3.1需求分析需求分析是軟件定義期的最后階段,是軟件系統(tǒng)成功構(gòu)造的關(guān)鍵。軟件需求是用戶對(duì)目標(biāo)軟件系統(tǒng)在功能、性能、行為、設(shè)計(jì)約束等方面的期望[17-19]。需求分析要指明系統(tǒng)必須要做些什么,在具體情境下應(yīng)該有哪些行為等等。3.1.1系統(tǒng)需求(1)操作簡(jiǎn)易。兒童游玩智能助手面向的群體不僅僅是操作智能手機(jī)能力良好的兒童的父母親,還有平時(shí)帶兒童外出游玩的爺爺奶奶。面對(duì)這些對(duì)智能手機(jī)操作不熟練的用戶,應(yīng)用程序在開發(fā)過程中必須考慮到操作的簡(jiǎn)易性,以最簡(jiǎn)潔易操作的界面實(shí)現(xiàn)用戶所需要的功能。(2)用戶友好。兒童游玩智能助手要根據(jù)用戶提供的信息對(duì)結(jié)果進(jìn)行篩選,不能忽視用戶感受,在系統(tǒng)沒有出現(xiàn)用戶期望的內(nèi)容時(shí)要給出提示,使用戶知道應(yīng)該做出怎樣的回應(yīng),保障用戶感受良好。(3)反應(yīng)迅速。在界面簡(jiǎn)潔操作簡(jiǎn)單的情況下,要回饋用戶以同等的反應(yīng)能力,后臺(tái)根據(jù)用戶輸入以及默認(rèn)獲取的位置和天氣數(shù)據(jù)對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理,這個(gè)過程要求反應(yīng)速度快,用最簡(jiǎn)單最迅速的處理給出用戶較為滿意的結(jié)果,即用較少的成本得到較滿意的回報(bào)。(4)錯(cuò)誤預(yù)防。沒有一個(gè)應(yīng)用程序可以避免錯(cuò)誤,只能盡可能地減少錯(cuò)誤,將錯(cuò)誤控制在可接受范圍內(nèi)。應(yīng)用程序在開發(fā)過程中應(yīng)該考慮到對(duì)錯(cuò)誤的發(fā)生時(shí)的處理,沒有考慮到的問題需要在測(cè)試階段進(jìn)一步探索,最后將能糾正的錯(cuò)誤進(jìn)行修正,不能糾正的錯(cuò)誤給出警告或者提示對(duì)話框?qū)㈠e(cuò)誤掩飾起來,從而增強(qiáng)用戶體驗(yàn)。(5)保守預(yù)測(cè)。由于本應(yīng)用程序的開發(fā)是為了減少兒童出行游玩過程中遇到的危險(xiǎn),所以當(dāng)用戶沒有提供數(shù)據(jù)處理所需要的信息時(shí),為了保障用戶體驗(yàn),還是應(yīng)當(dāng)給用戶反饋檢索結(jié)果,此事的反饋結(jié)果應(yīng)該做好最壞的打算,這種操作一定程度上會(huì)減少用戶的滿意度,但保障了兒童的安全。3.1.2功能需求(1)系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)圖將一個(gè)系統(tǒng)或者一個(gè)功能分解成多個(gè)子系統(tǒng)或子功能,刻畫了系統(tǒng)或者功能的層次分解關(guān)系。從系統(tǒng)結(jié)構(gòu)圖中能夠清晰地看出模塊之間是如何調(diào)用的,在調(diào)用時(shí),相關(guān)數(shù)據(jù)又是如何傳遞的,因此,它主要是用于描述系統(tǒng)的物理結(jié)構(gòu)。結(jié)構(gòu)圖最能清晰、完整、直觀地反映出整個(gè)即將建立的系統(tǒng)、子系統(tǒng)或者模塊的全部功能,是程序設(shè)計(jì)的重要依據(jù)[20]。兒童游玩智能助手的系統(tǒng)結(jié)構(gòu)圖如圖3.1所示。兒童游玩智能助手兒童游玩智能助手登陸注冊(cè)模塊主模塊天氣預(yù)報(bào)地點(diǎn)推薦個(gè)人中心信息填寫修改密碼查看歷史天氣情況空氣質(zhì)量圖3.1系統(tǒng)結(jié)構(gòu)圖歡迎導(dǎo)航登錄注冊(cè)路線規(guī)劃設(shè)置結(jié)果陳列(2)控制流程圖控制流圖將一個(gè)過程或者程序抽象表示出來,展現(xiàn)程序在執(zhí)行過程中遍歷的所有路徑以及過程中基本塊執(zhí)行的可能流向,將程序?qū)崟r(shí)執(zhí)行過程刻畫出來??刂屏鲌D可以表示為一個(gè)靜態(tài)結(jié)構(gòu)圖或者一個(gè)動(dòng)態(tài)顯示圖,它可以用于瀏覽語(yǔ)句表,也可以用于統(tǒng)計(jì)信息[21]。兒童游玩智能助手的控制流程圖如圖3.2所示。開始開始是否注冊(cè)是登陸注冊(cè)否是否聯(lián)網(wǎng)是否查看過天氣是設(shè)置網(wǎng)絡(luò)否獲取天氣和空氣質(zhì)量將天氣設(shè)為雨天檢索信息是否填寫是否獲取地址和出行方式默認(rèn)使用當(dāng)前位置和步行方式推薦地點(diǎn)列出結(jié)果個(gè)人中心修改密碼點(diǎn)擊地點(diǎn)加入歷史查看歷史圖3.2控制流程圖點(diǎn)擊地點(diǎn)路線規(guī)劃設(shè)置是否3.2可行性分析(1)技術(shù)可行性。利用個(gè)人掌握的技術(shù),本應(yīng)用程序的基本功能實(shí)現(xiàn)是完全可行的,需要攻克的部分難題也可以通過學(xué)習(xí)和實(shí)踐來解決,因此能在規(guī)定的時(shí)間內(nèi)基本實(shí)現(xiàn)需求中所需要的功能。此外,在本應(yīng)用程序中使用的數(shù)據(jù)都是真實(shí)可靠的。開發(fā)過程中所用到的數(shù)據(jù)信息都是經(jīng)過統(tǒng)計(jì)得到的可靠數(shù)據(jù),具備通用性,這使得推薦給用戶的選項(xiàng)真實(shí)可靠并且能夠滿足用戶需求。(2)社會(huì)環(huán)境可行性。社會(huì)環(huán)境的可行性至少包括兩種因素,即市場(chǎng)和政策[22]。兒童人身安全問題在當(dāng)今社會(huì)一直深受重視,本應(yīng)用程序以保障兒童安全為宗旨,完全符合社會(huì)要求。同時(shí),兒童游玩智能助手面向的使用群體很廣泛。只要家庭中有適齡兒童就有機(jī)會(huì)使用到本應(yīng)用程序,兒童各個(gè)年齡階段的親屬只要想要帶兒童出行游玩就可以使用本應(yīng)用程序得到合理推薦。因此,軟件具有足夠的市場(chǎng),也在社會(huì)環(huán)境中具備可行性。(3)人員可行性。整個(gè)開發(fā)過程中用到的編程工具與技術(shù)是程序員必須掌握的知識(shí)與技能,作為即將畢業(yè)的本科生,是具備一定的專業(yè)功底并且能夠進(jìn)行這樣一個(gè)應(yīng)用程序開發(fā)的。3.3本章小結(jié)本章節(jié)首先從系統(tǒng)需求和功能需求兩方面分析了兒童游玩智能助手的需求。系統(tǒng)需求要求操作簡(jiǎn)易、用戶友好、反應(yīng)迅速、錯(cuò)誤預(yù)防、保守預(yù)測(cè),保證用戶快速上手,對(duì)應(yīng)用程序有一定的滿意度和好感度。功能需求從系統(tǒng)結(jié)構(gòu)圖和控制流程圖入手,畫出兒童游玩智能助手的層次分解關(guān)系以及應(yīng)用程序的執(zhí)行過程。接著,本章對(duì)應(yīng)用程序的可行性進(jìn)行了分析,其中包括技術(shù)可行性、社會(huì)可行性、人員可行性得出兒童游玩智能助手是完全能夠定期實(shí)現(xiàn)的。

兒童游玩智能助手實(shí)現(xiàn)本章節(jié)主要根據(jù)第三章的需求分析對(duì)兒童游玩智能助手進(jìn)行通用功能和主要功能的實(shí)現(xiàn),其中包括歡迎和導(dǎo)航功能,登錄注冊(cè)功能,以及登陸后主頁(yè)面的天氣預(yù)報(bào)、推薦地點(diǎn)和路線規(guī)劃功能、個(gè)人中心修改密碼,查看歷史和設(shè)置的功能。4.1通用功能4.1.1歡迎和導(dǎo)航在用戶首次下載并安裝應(yīng)用程序或更新過應(yīng)用程序后首次打開時(shí),應(yīng)用程序的歡迎頁(yè)和導(dǎo)航頁(yè)會(huì)對(duì)本應(yīng)用程序有一個(gè)簡(jiǎn)短的介紹,使用戶對(duì)應(yīng)用程序有個(gè)大概的了解,這是一個(gè)應(yīng)用程序必不可少的界面,輕觸導(dǎo)航頁(yè)的最后一個(gè)頁(yè)面就跳轉(zhuǎn)到登陸界面。當(dāng)用戶下載并使用過該應(yīng)用程序后,用戶再次打開應(yīng)用程序就只向用戶顯示歡迎頁(yè)面,而不必再將導(dǎo)航頁(yè)面顯示出來,減少老用戶進(jìn)入應(yīng)用程序的時(shí)間,給用戶更好的體驗(yàn)和好感。歡迎和導(dǎo)航頁(yè)通常情況下由多個(gè)圖片組成,這些圖片中通常會(huì)含有與應(yīng)用程序功能或目標(biāo)相關(guān)的文字提示。本應(yīng)用程序利用PS對(duì)圖片進(jìn)行簡(jiǎn)單處理后,將處理好的圖片放到一個(gè)數(shù)組中,利用自定義的Adapter將圖片顯示在導(dǎo)航頁(yè)上,并對(duì)圖片底端的點(diǎn)進(jìn)行設(shè)置,當(dāng)處于導(dǎo)航頁(yè)的某一頁(yè)面時(shí),對(duì)應(yīng)的點(diǎn)會(huì)改變狀態(tài),表現(xiàn)成選中的狀態(tài)。4.1.2注冊(cè)注冊(cè)是用戶使用應(yīng)用程序時(shí)的第一個(gè)行為,在注冊(cè)時(shí)建立一個(gè)數(shù)據(jù)庫(kù)和一個(gè)數(shù)據(jù)表將用戶的注冊(cè)信息存儲(chǔ)起來以便之后能利用這些信息做數(shù)據(jù)處理。在本應(yīng)用程序中,注冊(cè)界面需要用戶填寫用戶名和密碼,點(diǎn)擊注冊(cè)按鈕將用戶名和密碼存入到數(shù)據(jù)表中。注冊(cè)界面利用SQLite創(chuàng)建了一個(gè)名為user的數(shù)據(jù)庫(kù),當(dāng)點(diǎn)擊注冊(cè)按鈕時(shí)會(huì)對(duì)用戶填入的數(shù)據(jù)進(jìn)行表單驗(yàn)證。表單驗(yàn)證包括:用戶名與密碼不為空,用戶名不可重復(fù),用戶名長(zhǎng)度控制在1-20個(gè)字符,密碼以字母數(shù)字或下劃線開始長(zhǎng)度控制在1-20個(gè)字符中。如果數(shù)據(jù)通過表單驗(yàn)證就插入到數(shù)據(jù)庫(kù)表中,表名為login,表字段、類型及約束如表4.1所示。表4.1login(登陸)表字段名字段類型字段長(zhǎng)度Id(主鍵)IntAutoincrementUsernameVarchar50PasswordVarchar50完成注冊(cè)界面的數(shù)據(jù)庫(kù)操作后關(guān)閉數(shù)據(jù)庫(kù)防止臟數(shù)據(jù)的產(chǎn)生。4.1.3登陸登陸界面是用戶使用應(yīng)用程序最先看到的界面,它與其他的幾個(gè)界面密切相關(guān),該界面有三個(gè)跳轉(zhuǎn)方向。如果用戶尚未注冊(cè)可以點(diǎn)擊注冊(cè)按鈕先注冊(cè)再登陸;如果用戶已注冊(cè)且用戶名和密碼輸入正確就可以進(jìn)入應(yīng)用程序的主功能界面;如果用戶輸入相關(guān)信息后,發(fā)現(xiàn)信息填寫錯(cuò)誤可以選擇取消按鈕,則登陸頁(yè)面恢復(fù)到剛打開應(yīng)用程序時(shí)的狀態(tài)。與注冊(cè)界面一樣,登錄界面也有表單驗(yàn)證。該表單驗(yàn)證包括用戶名和密碼不為空,用戶已注冊(cè),用戶名和密碼正確。此處用到注冊(cè)時(shí)創(chuàng)建的數(shù)據(jù)表login,但是當(dāng)應(yīng)用程序遇到第一個(gè)用戶,而該用戶恰好沒有注冊(cè)就嘗試登陸時(shí),后臺(tái)應(yīng)該捕獲到異常,創(chuàng)建一個(gè)數(shù)據(jù)表,但不向數(shù)據(jù)表中插入數(shù)據(jù),將界面跳轉(zhuǎn)到注冊(cè)界面,示意用戶先注冊(cè)再登陸,結(jié)束時(shí)關(guān)閉數(shù)據(jù)庫(kù)。在登陸界面還需要將登錄時(shí)用戶名傳到主功能界面中的個(gè)人中心,在個(gè)人中心實(shí)現(xiàn)用戶登錄個(gè)人中心就會(huì)顯示該用戶的用戶名,表明用戶身份。4.1.4判斷是否聯(lián)網(wǎng)功能在本應(yīng)用程序中,獲取天氣數(shù)據(jù),空氣質(zhì)量數(shù)據(jù),用戶位置數(shù)據(jù),地圖數(shù)據(jù)都需要在聯(lián)網(wǎng)條件下才能夠獲得,用戶沒有聯(lián)網(wǎng)的情況下查看相關(guān)界面可能會(huì)出現(xiàn)不可預(yù)料的錯(cuò)誤,因此判斷用戶是否聯(lián)網(wǎng)在整個(gè)引用程序中占據(jù)重要的地位??梢园l(fā)現(xiàn)在應(yīng)用程序的多個(gè)界面都需要判斷是否聯(lián)網(wǎng),因此將聯(lián)網(wǎng)判斷寫成一個(gè)類封裝起來,判斷用戶尚未聯(lián)網(wǎng)時(shí)彈出警告對(duì)話框,繼而跳出智能手機(jī)中設(shè)置網(wǎng)絡(luò)的界面,提示用戶去設(shè)置網(wǎng)絡(luò)。這是一個(gè)簡(jiǎn)單的設(shè)置,代碼如下。publicvoidOpenNetworkSetting(finalContextcontext){publicvoidOpenNetworkSetting(finalContextcontext){ConnectivityManagerconnectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfoactiveNetworkInfo=connectivityManager.getActiveNetworkInfo();if(activeNetworkInfo==null){AlertDialog.Builderdialog=newAlertDialog.Builder(context);dialog.setMessage("親,現(xiàn)在你沒網(wǎng)");dialog.setPositiveButton("打開",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,intwhich){intandroidVersion=android.os.Build.VERSION.SDK_INT;if(androidVersion>=10){//打開系統(tǒng)自帶的網(wǎng)絡(luò)設(shè)置界面Intentintent=newIntent(vider.Settings.ACTION_WIRELESS_SETTINGS);context.startActivity(intent);}}});dialog.show();}}4.1.5將地址轉(zhuǎn)化為經(jīng)緯度在應(yīng)用程序中多處用到定位,尤其在進(jìn)行地點(diǎn)推薦時(shí)使用的POI周邊搜索,需要利用經(jīng)緯度來構(gòu)建center作為周邊搜索的中心。在默認(rèn)情況下,直接利用地圖的location可以獲取經(jīng)緯度,但是在用戶輸入出發(fā)地點(diǎn)時(shí),應(yīng)用程序需要根據(jù)用戶輸入的地點(diǎn)進(jìn)行周邊搜索,此時(shí)需要將地址轉(zhuǎn)化為經(jīng)緯度,自己構(gòu)建一個(gè)center進(jìn)行檢索。4.2天氣預(yù)測(cè)天氣預(yù)測(cè)界面是主界面功能中的一項(xiàng),與地點(diǎn)推薦界面,個(gè)人中心界面都是Fragment,同屬于一個(gè)Activity,在主界面的底部有三個(gè)圖標(biāo),用戶通過點(diǎn)擊不同的圖標(biāo)切換界面。天氣界面主要包括兩個(gè)方面的指標(biāo),一個(gè)是天氣情況,一個(gè)是空氣質(zhì)量。天氣預(yù)測(cè)功能與用戶定位相關(guān),本應(yīng)用中通過定位用戶所在的區(qū)域,調(diào)用聚合數(shù)據(jù)的天氣預(yù)報(bào)和空氣質(zhì)量?jī)蓚€(gè)API獲取到天氣情況和空氣質(zhì)量數(shù)據(jù),此時(shí)需要將json數(shù)據(jù)進(jìn)行結(jié)合,構(gòu)建開發(fā)需要的json對(duì)象,再?gòu)膉son對(duì)象中獲取到我們想要的日期、星期、天氣、溫度、穿衣指數(shù)、紫外線指數(shù)、出行指數(shù)、濕度、風(fēng)力風(fēng)向、空氣質(zhì)量指數(shù)、空氣質(zhì)量情況等數(shù)據(jù)。獲取并拼接json數(shù)據(jù)的代碼如下。try{try{//獲取到的天氣預(yù)報(bào)的json對(duì)象,取其中今天的天氣情況JSONObjectjsonObject1=newJSONObject(weather);JSONObjectjsonResult1=jsonObject1.getJSONObject("result");//獲取到的空氣質(zhì)量的json對(duì)象,取其中今天的空氣質(zhì)量JSONObjectjsonObject2=newJSONObject(air);JSONObjectjsonResult2=jsonObject2.getJSONArray("result").getJSONObject(0).getJSONObject("citynow");//重構(gòu)json對(duì)象JSONObjectWeather_air=newJSONObject();JSONObjectnode1=newJSONObject();node1.put("forecast",jsonResult1);//第一個(gè)對(duì)象是天氣預(yù)報(bào)json對(duì)象JSONObjectnode2=newJSONObject();node2.put("air",jsonResult2);//第二個(gè)對(duì)象是空氣質(zhì)量json對(duì)象//將子對(duì)象放入大對(duì)象中Weather_air.put("node1",node1);Weather_air.put("node2",node2);result=Weather_air.toString();}catch(JSONExceptionex){thrownewRuntimeException(ex);}天氣預(yù)測(cè)的功能不是核心功能,而是重要的輔助功能,幫助應(yīng)用程序在檢索游玩地點(diǎn)時(shí)做出判斷,不適宜外出的天氣就優(yōu)先向用戶推薦室內(nèi)的游玩場(chǎng)所。所以在這里需要將相關(guān)數(shù)據(jù)傳遞到查詢地點(diǎn)的界面,所以定義一個(gè)回調(diào)接口,利用這個(gè)回調(diào)接口將數(shù)據(jù)傳遞給幾個(gè)Fragment公用的Activity,再?gòu)腁ctivity傳給查詢地點(diǎn)所屬的Fragment。最后,本應(yīng)用程序在天氣預(yù)測(cè)界面優(yōu)化了UI,為不同的天氣添加不同的背景和圖標(biāo),使得界面更加美觀,同時(shí)將獲取到的信息以列表的形式陳列出來,如圖4.1。圖4.1天氣預(yù)測(cè)界面圖4.2地點(diǎn)推薦界面4.3推薦游玩地點(diǎn)查詢地點(diǎn)功能是整個(gè)應(yīng)用程序的核心功能,這個(gè)功能將直接根據(jù)天氣情況、空氣質(zhì)量、個(gè)人信息中的兒童年齡、用戶在查詢界面填寫的查詢要求將結(jié)果以地圖和列表結(jié)合的形式陳列在界面上。填寫用戶查詢需求的界面是一個(gè)Fragment,與天氣預(yù)測(cè)和個(gè)人中心共享一個(gè)Activity,點(diǎn)擊查詢按鈕后將跳轉(zhuǎn)到另一個(gè)Activity用于展示查詢結(jié)果。4.3.1獲取用戶出行信息在這個(gè)界面里,用戶可以選擇出行日期、出行時(shí)間、出行地點(diǎn)、出行工具,這些信息將用于過濾初始檢索出來的不合適游玩的地點(diǎn)。如果家長(zhǎng)帶兒童去室內(nèi)游樂場(chǎng)游玩那么要考慮到該游樂場(chǎng)的開放時(shí)間,如果出行工具是步行那么只能考慮周邊的公園、廣場(chǎng)、超市、街道等場(chǎng)所。此外,這個(gè)界面中接收從天氣預(yù)測(cè)和個(gè)人中心傳過來的天氣情況、空氣質(zhì)量、個(gè)人信息等數(shù)據(jù),從而能傳給結(jié)果陳列的界面,對(duì)檢索結(jié)果做進(jìn)一步的篩選??梢娺@個(gè)界面中包含著多個(gè)不同界面中傳遞過來的數(shù)據(jù),但實(shí)際上我們是無法預(yù)見用戶查看頁(yè)面的順序,如果用戶直接查看了本界面而沒有瀏覽天氣預(yù)測(cè)和個(gè)人中心的頁(yè)面也就意味著那些數(shù)據(jù)是無法傳遞到這里來的,而此處等待接收數(shù)據(jù)就會(huì)出現(xiàn)空指針的錯(cuò)誤。面對(duì)這種情況,我們必須做好錯(cuò)誤處理和防范。根據(jù)需求分析中系統(tǒng)需求的保守預(yù)測(cè)的要求,我們應(yīng)當(dāng)對(duì)這些無法預(yù)料的錯(cuò)誤作最壞的打算,即假設(shè)所有數(shù)據(jù)都沒有傳遞過來,那么篩選的時(shí)候?yàn)榱吮M可能地保障兒童安全,設(shè)置一組默認(rèn)值,天氣設(shè)置為大雨,空氣質(zhì)量設(shè)置為差,兒童年齡設(shè)置為5歲。這時(shí)候當(dāng)值沒有全部傳過來的時(shí)候,篩選出的結(jié)果雖然犧牲了用戶的滿意程度,但卻提高了兒童的安全保障。另一種人為可能觸發(fā)的錯(cuò)誤就是用戶不填寫查詢要求,直接點(diǎn)擊查詢按鈕,這種情況可以有兩種反應(yīng)。第一種就是直接提示用戶完備查詢信息,在信息完備之前不允許用戶查詢;第二種是默認(rèn)設(shè)置出行時(shí)間是當(dāng)前時(shí)間,出行方式是個(gè)人中心用戶填寫的出行工具,出行地點(diǎn)是當(dāng)前位置,這里需要使用到定位獲取用戶的位置,再得到所有默認(rèn)值后直接將以默認(rèn)值進(jìn)行查詢的結(jié)果反饋給用戶。本應(yīng)用程序中采用了第二種方案,原因如下。首先,通常情況下用戶會(huì)在準(zhǔn)備帶兒童游玩時(shí)進(jìn)行查詢,因此默認(rèn)值設(shè)置較為合理,與用戶自己填寫的結(jié)果基本吻合,其次,如果系統(tǒng)一直提示用戶進(jìn)行填寫而用戶本身卻不想花這個(gè)時(shí)間去完善出行要求,在拉鋸戰(zhàn)中會(huì)使得用戶的滿意度和體驗(yàn)大幅度的下降,最終停止使用這個(gè)應(yīng)用程序。最后,在接收數(shù)據(jù)部分對(duì)數(shù)據(jù)的處理在一定程度上會(huì)使得用戶對(duì)結(jié)果不滿意,在此處再一次降低用戶體驗(yàn)勢(shì)必會(huì)使得應(yīng)用程序逐漸失去用戶。4.3.2推薦結(jié)果陳列填寫用戶出行信息的部分主要功能是獲取篩選所需數(shù)據(jù)或者設(shè)置出錯(cuò)時(shí)的默認(rèn)設(shè)置,而這部分主要是對(duì)數(shù)據(jù)進(jìn)行處理,然后將結(jié)果返回給用戶。結(jié)果陳列的界面有兩個(gè)部分構(gòu)成。上半部分是地圖,并在地圖上標(biāo)注出查詢結(jié)果的具體位置,點(diǎn)擊圖中的標(biāo)注圖標(biāo)會(huì)顯示出該地點(diǎn)的地址;下半部分是列表,列表中陳列出查詢結(jié)果的前十條結(jié)果,點(diǎn)擊其中的列表項(xiàng)將會(huì)將該列表項(xiàng)添加到歷史記錄表中,并轉(zhuǎn)到路線規(guī)劃頁(yè)面,如圖4.2。這里再一次使用到數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)user中建立一張history表,其中存放著用戶在查詢結(jié)果中點(diǎn)擊查看的項(xiàng)的歷史記錄,方便用戶查閱。表的結(jié)構(gòu)如表4.2所示。表4.2history(歷史記錄)表字段名字段類型字段長(zhǎng)度Id(主鍵)IntAutoincrementHistoryVarchar1004.3.3路線規(guī)劃當(dāng)用戶點(diǎn)擊推薦列表中的某一個(gè)地點(diǎn)時(shí),后臺(tái)會(huì)將用戶的當(dāng)前地址和用戶選擇的地址傳到路線規(guī)劃界面。在用戶規(guī)劃界面,用戶可以選擇駕車、公交、步行、騎行四個(gè)選項(xiàng)進(jìn)行路線規(guī)劃,當(dāng)?shù)貓D中無法判別出沿途的結(jié)點(diǎn)信息或者沒有查詢到路線時(shí)會(huì)給出提示。駕車、公交、步行、騎行分別對(duì)應(yīng)一個(gè)類,每個(gè)類中都對(duì)應(yīng)繪制相應(yīng)的行進(jìn)路線。獲取了起點(diǎn)和終點(diǎn)后,路線規(guī)劃界面會(huì)給用戶列出多個(gè)路線,當(dāng)用戶選擇其中一條路線后會(huì)在地圖上顯示該路線,路線中會(huì)在每個(gè)標(biāo)志性地點(diǎn)設(shè)置一個(gè)節(jié)點(diǎn),點(diǎn)擊該節(jié)點(diǎn)會(huì)顯示到下一個(gè)結(jié)點(diǎn)的導(dǎo)航信息。如圖4.3和圖4.4所示。圖4.3路線選擇 圖4.4路線導(dǎo)航4.4個(gè)人中心個(gè)人中心是Fragment,與天氣預(yù)測(cè)、地點(diǎn)推薦公用一個(gè)Activity,其中主要包含上傳頭像,填寫用戶信息,查看歷史記錄,修改密碼,設(shè)置。個(gè)人中心界面與地點(diǎn)查詢、登陸界面有交互,在登陸成功后個(gè)人中心就會(huì)接收到從登錄界面?zhèn)鬟^來的用戶名信息,并顯示出來,而修改密碼部分也是使用到了login表。這里填寫的用戶信息會(huì)傳送到地點(diǎn)推薦界面,同時(shí)查詢結(jié)果陳列界面點(diǎn)擊的item會(huì)在查看歷史的功能里看到。4.4.1上傳頭像用戶可以在個(gè)人中心設(shè)置用戶的頭像,使界面更加美觀符合用戶審美。用戶進(jìn)入個(gè)人中心后,可以看到默認(rèn)的頭像,用戶點(diǎn)擊默認(rèn)圖片會(huì)跳出對(duì)話框提供選擇本地圖片和拍照兩個(gè)選項(xiàng),使用戶能夠設(shè)置頭像,頭像最終會(huì)默認(rèn)裁剪為圓形并顯示在個(gè)人中心界面上。未上傳頭像的界面如圖4.5,上傳后如圖4.6。圖4.5未上傳頭像時(shí)圖4.6頭像上傳后的界面4.4.2填寫信息用戶在個(gè)人中心可以選擇性的填寫家庭地址、出行工具、兒童年齡,在user數(shù)據(jù)庫(kù)中建立一張userInfo的數(shù)據(jù)表,將用戶填寫的信息存放到數(shù)據(jù)表中。用戶信息需要傳遞到地點(diǎn)推薦界面,在這里建一張用戶信息表便于在地點(diǎn)推薦界面查詢數(shù)據(jù)表就能獲取信息,但在實(shí)際應(yīng)用中是直接將數(shù)據(jù)存放在數(shù)組中,將數(shù)組傳遞到地點(diǎn)推薦界面,因?yàn)橹苯觽鬟f數(shù)據(jù)在數(shù)據(jù)表中數(shù)據(jù)較多時(shí)效率更好。用戶在填寫信息時(shí),點(diǎn)擊要填寫的字段彈出一個(gè)對(duì)話框,在對(duì)話框中填寫完信息存入數(shù)據(jù)表,用戶可以隨時(shí)修改數(shù)據(jù)表中的信息,用戶登錄進(jìn)入個(gè)人中心界面就能看到用戶最新的信息,因此這里的用戶信息表主要用于維護(hù)用戶信息。userInfo數(shù)據(jù)表的結(jié)構(gòu)如表4.3所示。表4.3userInfo(用戶信息)表字段名字段類型字段長(zhǎng)度Id(主鍵)IntAutoincrementUsernameVarchar50AddressVarchar100VerticalVarchar100AgeInt44.4.3查看歷史查看歷史的功能與查詢地點(diǎn)功能緊密相連,在推薦結(jié)果顯示中點(diǎn)擊過的結(jié)果條目會(huì)被存儲(chǔ)在history表中,在查看歷史的界面中查詢history表,將所有的歷史顯示給用戶。具體的做法是遍歷數(shù)據(jù)表,將表中的history字段的信息存放進(jìn)數(shù)組,最后使用list將數(shù)組中的信息陳列出來,如果用戶沒有查詢過地點(diǎn)那么提示用戶還沒有歷史記錄,代碼如下。privatevoidgetHistoryArray(){privatevoidgetHistoryArray(){inti=0;db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/user.db3",null);Cursorcursor=db.rawQuery("select*fromhistory",null);String[]hisArr=newString[cursor.getCount()];while(cursor.moveToNext()){ hisArr[i]=cursor.getString(cursor.getColumnIndex("history")); i++;}List<String>list=newArrayList<String>();for(intj=0;j<hisArr.length;j++){list.add(j,hisArr[j]);}ArrayAdapter<String>adapter=newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);tvList=(ListView)findViewById(R.id.history_list);tvList.setAdapter(adapter);}在上述的推薦地點(diǎn)功能中提到,用戶點(diǎn)擊結(jié)果中某一項(xiàng)后創(chuàng)建一個(gè)history表,并將該項(xiàng)插入到數(shù)據(jù)表中,但在用戶尚未查詢時(shí)直接查看歷史會(huì)出現(xiàn)表不存在的錯(cuò)誤,因此需要捕獲異常,如果history表不存在則在此處創(chuàng)建一個(gè)數(shù)據(jù)表,如圖4.7。圖4.7歷史記錄界面圖4.8修改密碼界面4.4.4修改密碼在個(gè)人中心點(diǎn)擊修改密碼條目,跳轉(zhuǎn)到修改密碼的Activity,修改密碼需要進(jìn)行表單驗(yàn)證。首先,用戶填寫的初始密碼必須與當(dāng)前登錄的用戶的密碼相同,具體操作是通過用戶名查詢login數(shù)據(jù)表,找到當(dāng)前用戶的密碼與用戶填入的初試密碼相比較,不一致則報(bào)錯(cuò),修改密碼失敗。其次,新密碼必須符合注冊(cè)時(shí)的密碼規(guī)范。最后,用戶設(shè)置完新密碼并輸入確認(rèn)密碼時(shí),兩者務(wù)必一致,防止用戶手誤導(dǎo)致之后無法登陸的問題。如果驗(yàn)證都通過則彈出消息,表明密碼修改成功并更新數(shù)據(jù)表login中的用戶密碼,界面如圖4.8。4.4.5設(shè)置本應(yīng)程序的設(shè)置界面主要包括通知和數(shù)據(jù)同步兩個(gè)模塊,如圖4.9。圖4.9設(shè)置界面 圖4.10通知模塊通知模塊是對(duì)消息的設(shè)置,可以設(shè)置有新消息來時(shí)是否接收通知,如果設(shè)置新消息不通知,則無法繼續(xù)設(shè)置通知方式。如果接收新消息通知,則可以設(shè)置新消息來時(shí)是否使用鈴聲,鈴聲可以自定義,以及接收新消息時(shí)是否振動(dòng),如圖4.10。數(shù)據(jù)同步模塊主要設(shè)置數(shù)據(jù)同步的頻率和同步賬戶,如圖4.11、4.12。圖4.11數(shù)據(jù)同步模塊圖4.12同步頻率選擇4.5本章小結(jié)本章詳細(xì)介紹了兒童游玩智能助手的功能和具體實(shí)現(xiàn)。兒童游玩智能助手主要分為四個(gè)模塊,分別為通用模塊、天氣預(yù)測(cè)模塊、地點(diǎn)推薦模塊、個(gè)人中心模塊。通用模塊主要包括歡迎導(dǎo)航和登陸注冊(cè)頁(yè)面以及一些在整個(gè)應(yīng)用程序中常用的類。天氣預(yù)測(cè)模塊主要包括對(duì)天氣情況、生活指數(shù)和空氣質(zhì)量的數(shù)據(jù)顯示,向用戶展示天氣和空氣質(zhì)量。地點(diǎn)推薦模塊包括用戶輸入出行信息、推薦結(jié)果陳列、路線規(guī)劃,當(dāng)用戶輸入出行信息時(shí)根據(jù)用戶的輸入信息進(jìn)行地點(diǎn)推薦,當(dāng)用戶沒有輸入出行數(shù)據(jù)時(shí),根據(jù)設(shè)定的默認(rèn)值推薦地點(diǎn)。當(dāng)用戶選擇了推薦地點(diǎn)中的某一個(gè)后,為用戶提供路線規(guī)劃和導(dǎo)航。個(gè)人中心包括上傳頭像、填寫個(gè)人信息、查看歷史、修改密碼、設(shè)置這五個(gè)子功能。

結(jié)論與展望5.1研究結(jié)論隨著智能手機(jī)地不斷完善和開發(fā)技術(shù)的日漸成熟,開發(fā)一個(gè)與人們?nèi)粘I钕⑾⑾嚓P(guān)的應(yīng)用程序已經(jīng)不再是一件難事。兒童作為社會(huì)中弱勢(shì)群體中的一個(gè)小群體面臨著許多危險(xiǎn),尤其在脫離家長(zhǎng)視線時(shí)更容易受到傷害,但是想要使得兒童始終處于家長(zhǎng)的視線中存在一定難度,兒童游玩智能助手在這種情況下為兒童外出游玩提供一定的保障,給家長(zhǎng)帶來更多的放心。兒童游玩智能助手集合了天氣預(yù)報(bào)和百度地圖的部分功能,使得用戶在一個(gè)應(yīng)用程序中獲取到需要的信息,而不用為了兒童的出行查看多個(gè)應(yīng)用程序,也避免了用戶思慮不周的情況,給兒童游玩帶來了便利。同時(shí)用戶通過檢索地點(diǎn)的反饋結(jié)果,可以對(duì)這個(gè)區(qū)域的游玩地點(diǎn)有一個(gè)大致的概念和掌握,就有更多的選擇,而不是反復(fù)地去同一個(gè)地點(diǎn),這樣既可以提高兒童游玩的趣味性和多樣性,也能夠在一定程度上保障兒童的安全,一舉兩得。值得一提地是,文章提出的需求分析中的系統(tǒng)需求符合以較少的成本得到較滿意的回報(bào)的理念,并且文章

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論