版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件開(kāi)發(fā)與項(xiàng)目管理課程案例校園外賣(mài)系統(tǒng)中客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)一、項(xiàng)目簡(jiǎn)介1.1 選題背景每一個(gè)時(shí)代都會(huì)催生新的理念,每一個(gè)理念又會(huì)引領(lǐng)新的潮流,每一個(gè)潮流又注定會(huì)沖破原有的桎梏,“創(chuàng)新”是時(shí)代的特征,更是IT業(yè)的標(biāo)志,IT界唯一的不變就是不斷的創(chuàng)新??萍几淖兩?,短短百年間,世界發(fā)生了天翻地覆的變化。手機(jī)也讓生活更加多彩,在通信、辦公、科研、民生等領(lǐng)域發(fā)揮著巨大的作用。所以我們團(tuán)隊(duì)選擇以手機(jī)為平臺(tái),開(kāi)發(fā)一個(gè)便利在校學(xué)生的外賣(mài)系統(tǒng)。移動(dòng)終端的系統(tǒng)類(lèi)型繁多,回首2005年,那時(shí)還是Symbian系統(tǒng)統(tǒng)治手機(jī)市場(chǎng),然而短短的四年內(nèi),整個(gè)市場(chǎng)就被Google的Android以及蘋(píng)果公司的IOS占領(lǐng)。而A
2、ndroid憑借開(kāi)源的系統(tǒng),贏得了遠(yuǎn)超IOS的市場(chǎng)占有率。因此,我們選擇Android平臺(tái)開(kāi)發(fā)校園外賣(mài)軟件。本軟件擁有與時(shí)俱進(jìn)的扁平化UI設(shè)計(jì)以及創(chuàng)新全面的功能,校園周?chē)碳铱梢垣@得一個(gè)良好的商品展示平臺(tái)、實(shí)力競(jìng)爭(zhēng)平臺(tái),帶動(dòng)商業(yè)效益。在校學(xué)生可以擁有一個(gè)方便快捷的訂外賣(mài)渠道,提升生活水平。二、開(kāi)發(fā)技術(shù) 基于HTTP協(xié)議的WebService通信簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)是W3C組織的一個(gè)Note, 它描述了一種在分散的或分布式的環(huán)境中如何交換信息的輕量級(jí)協(xié)議。SOAP是一個(gè)基于XML的協(xié)議,它包括三個(gè)部分:SOAP封裝(Envelop),封裝定義了一個(gè)描述消息中的內(nèi)容是什么,是誰(shuí)發(fā)送的,誰(shuí)應(yīng)
3、當(dāng)接受并處理它以及如何處理它們的框架;SOAP編碼規(guī)則(Encoding Rules),用于表示應(yīng)用程序需要使用的數(shù)據(jù)類(lèi)型的實(shí)例;SOAP RPC表示(RPC Representation),表示遠(yuǎn)程過(guò)程調(diào)用和應(yīng)答的協(xié)定;SOAP可以和多種傳輸協(xié)議綁定(Binding),使用底層協(xié)議交換信息。在這個(gè)文檔中,目前只定義了SOAP如何和HTTP以及HTTP擴(kuò)展進(jìn)行綁定的框架。SOAP是個(gè)通信協(xié)議, SOAP在HTTP協(xié)議的基礎(chǔ)上,把編寫(xiě)成XML的REQUEST參數(shù), 放在HTTP BODY上提交到WEB SERVICE服務(wù)器, 處理完成后,結(jié)果也寫(xiě)成XML作為RESPONSE送回用戶(hù)端, 為了使用
4、戶(hù)端和WEB SERVICE可以相互對(duì)應(yīng),可以使用WSDL作為這種通信方式的描述文件,利用WSDL工具可以自動(dòng)生成WS和用戶(hù)端的框架文件,SOAP具備把復(fù)雜對(duì)象序列化捆綁到XML里去的能力。SOAP的前身是RPC, 就是遠(yuǎn)程呼叫處理的協(xié)議,這個(gè)協(xié)議安全性不是很好,多數(shù)防火墻都會(huì)阻擋RPC的通信包,而SOAP則使用HTTP協(xié)議作為基本的協(xié)議,使用端口80使得SOAP可以透過(guò)防火墻,完成RPC的功能。SOAP協(xié)議和HTTP協(xié)議一樣,都是底層的通信協(xié)議,只是請(qǐng)求包的格式不同而已,SOAP包是XML格式的,現(xiàn)在我們編寫(xiě)WEB SERVICE不需要深入理解SOAP也沒(méi)關(guān)系。如果SERVICE和CLIEN
5、T在同樣的環(huán)境下使用SOAP,由于一般情況下都有自動(dòng)生成SOAP程序框架的工具,因此不知道細(xì)節(jié)也沒(méi)關(guān)系. 可是, 如果CLIENT和SERVICE的環(huán)境不同,比如說(shuō)JAVA的Client和.NET的SERVICE進(jìn)行通信,或者是VB CLIENT和TOMCAT下的JAVA SERVICE通信,還是要知道一點(diǎn)細(xì)節(jié)為好. 特別是, WSDL或者UDDI都不是標(biāo)準(zhǔn),如果不讓用就只好手工配制SOAP MESSAGE。2.2 開(kāi)發(fā)語(yǔ)言Java是一種計(jì)算機(jī)編程語(yǔ)言,擁有跨平臺(tái)、面向?qū)ο?、泛型編程的特性,廣泛應(yīng)用于企業(yè)級(jí)Web應(yīng)用開(kāi)發(fā)和移動(dòng)應(yīng)用開(kāi)發(fā)。Java編程語(yǔ)言的風(fēng)格十分接近C+語(yǔ)言。繼承了C+語(yǔ)言面向
6、對(duì)象技術(shù)的核心,Java舍棄了C+語(yǔ)言中容易引起錯(cuò)誤的指針,改以引用取代,同時(shí)移除原C+與原來(lái)運(yùn)算符重載,也移除多重繼承特性,改用接口取代,增加垃圾回收器泛型編程、類(lèi)型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱特性。太陽(yáng)微系統(tǒng)對(duì)Java語(yǔ)言的解釋是:“Java編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、健壯、安全與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言”Java不同于一般的編譯語(yǔ)言和直譯語(yǔ)言。它首先將源代碼編譯成字節(jié)碼,然后依賴(lài)各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了“一次編寫(xiě),到處運(yùn)行”的跨平臺(tái)特性。在早期JVM中,這在一定程度上降低了Java程序的運(yùn)行效率。但在J2SE1.4.2
7、發(fā)布后,Java的運(yùn)行速度有了大幅提升。Java之所以被開(kāi)發(fā),是要達(dá)到以下五個(gè)目的:1. 應(yīng)當(dāng)使用面向?qū)ο蟪绦蛟O(shè)計(jì)方法學(xué)2. 應(yīng)當(dāng)允許同一程序在不同的計(jì)算機(jī)平臺(tái)執(zhí)行3. 應(yīng)當(dāng)包括內(nèi)建的對(duì)計(jì)算機(jī)網(wǎng)絡(luò)的支持4. 應(yīng)當(dāng)被設(shè)計(jì)成安全地執(zhí)行遠(yuǎn)端代碼5. 應(yīng)當(dāng)易于使用,并借鑒以前那些面向?qū)ο笳Z(yǔ)言(如C+)的長(zhǎng)處。2.3 數(shù)據(jù)傳輸網(wǎng)絡(luò)軟件,離不開(kāi)數(shù)據(jù)傳輸,在這里,我們采用JSON格式作為數(shù)據(jù)傳輸協(xié)議。JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,這種純文本的數(shù)據(jù)格式不依賴(lài)于系統(tǒng),更能夠滿(mǎn)足各種主流編程語(yǔ)言的需求。 JSON 可以將 JavaScript 對(duì)象中表
8、示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后只需在函數(shù)之間傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶(hù)機(jī)傳遞給服務(wù)器端程序,得到數(shù)據(jù)后程序可以很容易的進(jìn)行解析。這個(gè)字符串如果站在開(kāi)發(fā)者角度理解起來(lái)不是很直觀,他不像XML一樣結(jié)構(gòu)清晰標(biāo)簽明確,但是 JavaScript 很容易解釋它,消耗資源更少,而且因?yàn)榻Y(jié)構(gòu)精簡(jiǎn),他的體積也是適中的,在網(wǎng)絡(luò)數(shù)據(jù)傳輸上有著極大的優(yōu)勢(shì)。 JSON雖然結(jié)構(gòu)精簡(jiǎn)但他卻可以表示比鍵、值對(duì)更復(fù)雜的結(jié)構(gòu)。它可以表示數(shù)組和復(fù)雜的對(duì)象,而不僅僅是鍵和值的簡(jiǎn)單列表。因此JSON 作為傳輸數(shù)據(jù)庫(kù)的記錄類(lèi)型得到廣泛的應(yīng)用,在本次項(xiàng)目中自然而然的采用了。下圖為直接返回 JSON 運(yùn)行
9、模式。圖2-1 JSON格式數(shù)據(jù)生成與解析示意圖目前作為移動(dòng)終端,采用這種輕量級(jí)的文本格式進(jìn)行數(shù)據(jù)傳輸,在傳輸速率和消耗資源上都比其他文本格式有優(yōu)勢(shì)。在這里有一點(diǎn)需要說(shuō)明,考慮到數(shù)據(jù)輕量以及安全性,還應(yīng)當(dāng)對(duì)數(shù)據(jù)進(jìn)行加密壓縮等處理,在本項(xiàng)目中,因?yàn)闀r(shí)間和技術(shù)上的原因,暫時(shí)沒(méi)有做上述處理,這方面還有待加強(qiáng)。2.4 Android開(kāi)發(fā)在Google及其開(kāi)放手機(jī)聯(lián)盟推出基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)Android之后,Google又不惜重金舉辦了Android開(kāi)發(fā)者大賽,吸引了眾多開(kāi)發(fā)者。Android功能強(qiáng)大,最主要的是其開(kāi)放性,開(kāi)發(fā)商可以方便的進(jìn)行定制開(kāi)發(fā)并且不用付出高額的版權(quán)費(fèi)用,這對(duì)于開(kāi)
10、發(fā)上來(lái)說(shuō)很有吸引力。全球范圍內(nèi)的電信行業(yè)、手機(jī)制造商因此毫不猶豫地加入到Android開(kāi)放手機(jī)聯(lián)盟中來(lái)。更多的移動(dòng)設(shè)備廠商看到了Android的光明前景,并紛紛加入其中,Android甚至已經(jīng)涉足上網(wǎng)本市場(chǎng)。Android端(客戶(hù)端)的主要功能是數(shù)據(jù)的展示,其中需要從服務(wù)器端下載數(shù)據(jù)到本地,本地經(jīng)過(guò)數(shù)據(jù)分析后進(jìn)行業(yè)務(wù)處理,最后按照一定的呈現(xiàn)方式綁定到UI界面上。2.5 定位技術(shù)軟件使用了高德定位SDK,所以運(yùn)用了兩種定位方式(GPS定位和基站定位)。2.5.1 GPS定位GPS(Global Positioning System)即全球定位系統(tǒng),是美國(guó)研制的衛(wèi)星導(dǎo)航定位系統(tǒng),今采用wgs84坐
11、標(biāo)系統(tǒng)。因地球在天球空間中的位置是不穩(wěn)定的,故協(xié)議用wgs84某一刻的北極點(diǎn)指向位置。主要目的是為陸海空三大領(lǐng)域提供實(shí)時(shí)、全天候和全球性的導(dǎo)航服務(wù),并用于情報(bào)收集、核爆監(jiān)測(cè)和應(yīng)急通訊等一些軍事目的,經(jīng)過(guò)20余年的研究實(shí)驗(yàn),耗資300億美元,到1994年,全球覆蓋率高達(dá)98%的24顆GPS衛(wèi)星星座己布設(shè)完成。在機(jī)械領(lǐng)域GPS則有另外一種含義:產(chǎn)品幾何技術(shù)規(guī)范(Geometrical Product Specifications)-簡(jiǎn)稱(chēng)GPS。另外一種解釋為G/s(GB per s)2.5.2 基站定位基站定位的 大致原理為:移動(dòng)電話測(cè)量不同基站的下行導(dǎo)頻信號(hào),得到不同基站下行導(dǎo)頻的TO
12、A(Time of Arrival,到達(dá)時(shí)刻)或TDOA(Time Difference of Arrival,到達(dá)時(shí)間差),根據(jù)該測(cè)量結(jié)果并結(jié)合基站的坐標(biāo),一般采用三角公式估計(jì)算法,就能夠計(jì)算出移動(dòng)電話的位置。實(shí)際的位置估計(jì)算法需要考慮多基站(3個(gè)或3個(gè)以上)定位的情況,因此算法要復(fù)雜很多。一般而言,移動(dòng)臺(tái)測(cè)量的基站數(shù)目越多,測(cè)量精度越高,定位性能改善越明顯。手機(jī)定位是指通過(guò)特定的定位技術(shù)來(lái)獲取移動(dòng)手機(jī)或終端用戶(hù)的位置信息(經(jīng)緯度坐標(biāo)),在電子地圖上標(biāo)出被定位對(duì)象的位置的技術(shù)或服務(wù)。定位技術(shù)有兩種,一種是基于GPS的定位,一種是基于移動(dòng)運(yùn)營(yíng)網(wǎng)的基站的定位?;贕PS的定位方式是利用手機(jī)上的G
13、PS定位模塊將自己的位置信號(hào)發(fā)送到定位后臺(tái)來(lái)實(shí)現(xiàn)手機(jī)定位的?;径ㄎ粍t是利用基站對(duì)手機(jī)的距離的測(cè)算距離來(lái)確定手機(jī)位置的。后者不需要手機(jī)具有GPS定位能力,但是精度很大程度依賴(lài)于基站的分布及覆蓋范圍的大小,有時(shí)誤差會(huì)超過(guò)一公里。前者定位精度較高。此外還有利用Wifi在小范圍內(nèi)定位的方式。三、功能設(shè)計(jì)為了使軟件的功能劃分更明確,我們定義了很多的工具,囊括了圖片、網(wǎng)絡(luò)、短信、電話、存儲(chǔ)、定位等。工具(英語(yǔ):Tool)或裝備、器材(英語(yǔ):Equipment)是指能夠方便人們完成工作的器具。3.1 圖片工具圖片工具包括calculateInSampleSize(計(jì)算圖片的縮放值)、bitmapToStr
14、ing(通過(guò)filePath獲得圖片轉(zhuǎn)換成String)、getImage(把String轉(zhuǎn)換成bitmap)等。 calculateInSampleSize將圖片bitmap直接轉(zhuǎn)化為String流時(shí),我們發(fā)現(xiàn)直接將String發(fā)送給服務(wù)器,或服務(wù)器將String返回給客戶(hù)端時(shí),對(duì)網(wǎng)絡(luò)、服務(wù)器、客戶(hù)端的壓力很大。經(jīng)過(guò)討論我們采用的壓縮圖片的方式(計(jì)算終端的屏幕進(jìn)行等比壓縮,壓縮比例好高的壓縮方式)以減輕這方面的壓力,使用該算法,就可動(dòng)態(tài)計(jì)算出圖片的inSampleSize。以下為核心代碼:final int heightRatio=Math.round(float)height/(float
15、)reqHeight);final int widthRatio=Math.round(float)width/(float)reqWidth);inSampleSize=heightRatio<widthRatio?heightRatio:widthRatio; bitmapToString我們采用了WebService式的服務(wù)器,所以圖片以String的形式傳輸?shù)摹?首先我們新建的BitmapFactory.Options對(duì)象options,然后將options.inJustDecodeBounds設(shè)為true,它僅僅會(huì)把它的寬,高取回來(lái)給你,這樣就不會(huì)占用太多的內(nèi)存,也就不會(huì)那么頻
16、繁的發(fā)生OOM (Out Of Memory)了,有了寬,高的信息,我們?cè)鯓釉趫D片不變形的情況下獲取到圖片指定大小的縮略圖呢?這就用到上面講的calculateInSampleSize方法,將此方法的返回值賦值給options.inSampleSize,將options.inJustDecodeBounds設(shè)為false,通過(guò)BitmapFactory.decodeFile方法即可獲得bitmap圖片數(shù)據(jù),;然后把bmp圖片壓縮成jpg格式的,再使用Base64編碼后傳出。如下代碼:final BitmapFactory.Options options = new BitmapFactory.
17、Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(filePath, options);options.inSampleSize = calculateInSampleSize(options, 480, 800);options.inJustDecodeBounds = false;Bitmap bm = BitmapFactory.decodeFile(filePath, options);ByteArrayOutputStream baos = new ByteArrayOutputStream();
18、press(Bitmap.CompressFormat.JPEG, 60, baos);String uploadBuffer = new String(Base64.encode(baos.toByteArray();3.1.3 getImage接收是一個(gè)簡(jiǎn)單的過(guò)程只需要將從服務(wù)器獲得的數(shù)據(jù)用Base64解碼(BitmapFactory.decodeByteArray)就可以得到圖片bitmap。如下代碼:byte bytes = new BASE64Decoder().decodeBuffer(image);return BitmapFactory.decodeByteArray(byte
19、s, 0, bytes.length); 3.2 網(wǎng)絡(luò)工具因?yàn)橛玫腤ebService服務(wù)器,所以我們使用SOAP協(xié)議編寫(xiě)了網(wǎng)絡(luò)工具。注:使用SOAP協(xié)議的前提是必須下載KSOAP包的。 第一步:實(shí)例化SoapObject對(duì)象,涉及到serviceNameSpace 命令空間和methodName 調(diào)用方法。第二步:如果有入?yún)⒌脑挘瑒t要設(shè)置調(diào)用參數(shù)第三步:設(shè)置SOAP請(qǐng)求信息(參數(shù)部分為SOAP協(xié)議版本號(hào),與你要調(diào)用的WebService中版本號(hào)一致)第四步:創(chuàng)建HttpTransportSE對(duì)象。通過(guò)HttpTransportSE類(lèi)的構(gòu)造方法可以指定WebService的WSDL文檔的URL
20、第五步:使用call方法調(diào)用WebService方法第六步:使用bodyIn方法獲得WebService方法的返回結(jié)果。如下代碼:SoapObject rpc=new SoapObject(namespace,methodName);rpc.addProperty("參數(shù)名稱(chēng)","參數(shù)值");SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);HttpTransportSE ht=new HttpTransportSE(endPoint)
21、;ht.call(soapAction, envelope);SoapObject object=(SoapObject) envelope.bodyIn;3.3 短信、電話工具3.3.1 短信工具我們調(diào)用了SmsManager.getDefault()方法,獲得了一個(gè)SmsManager對(duì)象,通過(guò)sendTextMessage方法就可實(shí)現(xiàn)發(fā)短息功能。如下代碼:smsManager.sendTextMessage(phone_number, null, sms, null, null);3.3.2 電話工具因?yàn)锳ndroid的便捷性,Android系統(tǒng)內(nèi)以為我們集成了相應(yīng)的方法,在這里我們只是
22、做了重新的封裝。如下代碼:Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ strMobile);context.startActivity(intent);3.4 存儲(chǔ)工具客戶(hù)端和服務(wù)器通信,是一個(gè)耗時(shí)的過(guò)程,即使是使用了異步加載同樣是很耗時(shí)的,這會(huì)嚴(yán)重影響用戶(hù)的使用,所以作為客戶(hù)端不能所有的數(shù)據(jù)到從服務(wù)器端獲取。我們使用了SharedPreferences:SharedPreferences是Android平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類(lèi),用來(lái)保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Act
23、ivity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再?gòu)腟haredPreferences中將值取出。SharedPreferences提供了java常規(guī)的Long、Int、String等類(lèi)型數(shù)據(jù)的保存接口。SharedPreferences類(lèi)似過(guò)去Windows系統(tǒng)上的ini配置文件,但是它分為多種權(quán)限,可以全局共享訪問(wèn)。SharedPreferences最終是以xml方式來(lái)保存,整體效率來(lái)看不是特別的高,對(duì)于常規(guī)的輕量級(jí)而言比SQLite要好不少,如果真的存儲(chǔ)量不大可以考慮自
24、己定義文件格式。xml處理時(shí)Dalvik會(huì)通過(guò)自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對(duì)于內(nèi)存資源占用比較好。3.4.1 SetInfo(存入)首先建立了一個(gè)SharedPreferences的對(duì)象sp,將對(duì)象sp實(shí)例化,然后通過(guò)sp對(duì)象獲得preferences的editor,進(jìn)而進(jìn)行編輯,修改后,通過(guò)commit()將修改值保存。如下代碼:public static void SetInfo(String tag,String pi,Context context) SharedPreferences sp;sp = context.getSharedPrefe
25、rences("infos", Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();editor.putString(tag, pi);mit();3.4.2 GetInfo(讀出)首先建立了一個(gè)SharedPreferences的對(duì)象sp,將對(duì)象sp實(shí)例化,然后通過(guò)sp對(duì)象獲得preferences的editor,進(jìn)而進(jìn)行編輯,修改后,通過(guò)commit()后,使用sp.getString方法讀出數(shù)據(jù)。如下代碼:public static String GetInfo(String tag,Co
26、ntext context) SharedPreferences sp = context.getSharedPreferences("infos", Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();return sp.getString(tag, null);注:一定要commit,否則無(wú)法讀取。3.5 定位工具本軟件采用了高德LBS開(kāi)發(fā)平臺(tái)的定位 SDK,通過(guò)高德提供的Android定位SDK,我們可以迅速為軟件添加定位功能。高德 Android 定位 SDK 采取混合定位(wifi+G
27、PS)技術(shù),可以智能判斷用戶(hù)所在的場(chǎng)景,以達(dá)到快速定位、省電省流量的目的。它是國(guó)內(nèi)最好用的最方便定位SDK之一。它有以下幾方面優(yōu)勢(shì):體積更?。罕雀?jìng)品定位SDK體積小51Kb。更省電:比競(jìng)品定位SDK省電15%。數(shù)據(jù)更全:獨(dú)家支持全球定位。獨(dú)立性:無(wú)需任何第三方類(lèi)庫(kù),即可獨(dú)立運(yùn)行。3.5.1 配置工程使用定位 SDK要配置一些信息:第一步:網(wǎng)站下載并解壓得到定位包“。然后在開(kāi)發(fā)工程中新建“l(fā)ibs”文件夾,將在下載好的定位包拷貝到 libs 的根目錄下??截愅瓿珊蟮墓こ棠夸?。如圖3-4所示:圖3-4 libs文件夾第二步:添加用戶(hù)的Key。在工程的“”文件如下代碼中添加您的用戶(hù)Key。如圖3-5
28、所示:圖3-5 AndroidManifest 配置第三步:添加權(quán)限。在工程的“”文件中進(jìn)行添加。如圖3-6所示:圖3-6 AndroidManifest 配置第四步:.clean 工程,結(jié)束配置。3.5.2 定位實(shí)現(xiàn)因?yàn)楸拒浖男枨笠约肮俜酱a的完整,我只是將從高德官網(wǎng)下載的示例代碼刪除了不需要的部分,修改了onLocationChanged方法即可獲得定位信息。如圖3-7所示:圖3-7 onLocationChanged方法我們將獲取的定位信息存入本地,以方便后期的快速調(diào)用。四、軟件實(shí)現(xiàn)過(guò)程4.1 開(kāi)發(fā)平臺(tái)由于系統(tǒng)采用目前比較流行的工具開(kāi)發(fā),所以整個(gè)軟件的技術(shù)比較先進(jìn)。針對(duì)目前,整個(gè)軟件開(kāi)
29、發(fā)所需的環(huán)境如下:操作系統(tǒng):windows2003及更高版本開(kāi)發(fā)工具:Visual Studio 2012(Visual C#)及更高版本、Photoshop數(shù)據(jù)庫(kù):SQL Server 2012及更高版本客戶(hù)端:Eclipse4.2 軟件框架1、客戶(hù)端:圖4-1 客戶(hù)端模塊圖主要模塊說(shuō)明:(1)、AboutActivity.java關(guān)于頁(yè)面。(2)、FavouriteActivity.java收藏頁(yè)面。(3)、FeedBackActivity.java反饋?lái)?yè)面。(4)、FoodinfoActivity.java食品詳情頁(yè)。(5)、FoodManageActivity.java食物管理列表頁(yè)。
30、(6)、FoodModifyActivity.java食品信息修改頁(yè)(7)、GradeView.java首頁(yè)內(nèi)容界面類(lèi)(8)、HistoryActivity.java食品交易待確認(rèn)頁(yè)(9)、HistoryActivity1.java食品歷史交易信息(10)、Key0Activity.java客戶(hù)注冊(cè)頁(yè)(11)、Key1Activity.java商家注冊(cè)頁(yè)圖4-2 客戶(hù)端模塊圖(12)、LoadingActivity.java系統(tǒng)載入頁(yè)(13)、LoginActivity.java登錄頁(yè)(14)、MainActivity.java主頁(yè)面,內(nèi)有三個(gè)Activity(15)、PersonInfoAc
31、tivity.java個(gè)人信息頁(yè)(16)、SalesVolumeView.java出售頁(yè)面(17)、SearchActivity.java搜索頁(yè)(18)、SettingActivity.java設(shè)置頁(yè)(19)、ShopInfoActivity.java圖4-3 客戶(hù)端模塊圖商家信息頁(yè)(20)、ShowShopFoodActivity.java商家食品暫時(shí)頁(yè)(21)、TransactionActivity.java信息修改頁(yè)(22)、TransactionActivity2.java信息修改頁(yè)(23)、TransactionActivity3.java信息修改頁(yè)(23)、Adapter包用于實(shí)現(xiàn)
32、列表與頁(yè)面的信息處理,接收網(wǎng)絡(luò)信息異步加載等(24)、BagFragment.java主頁(yè)的購(gòu)物車(chē)卡片頁(yè)(23)、HomePageFragment.java主頁(yè)的首頁(yè)卡片頁(yè)圖4-4 客戶(hù)端模塊圖(24)、PersonFragment.java主頁(yè)的個(gè)人卡片頁(yè)(25)、Resource.包封裝的資源類(lèi):商品,個(gè)人信息,頁(yè)面信息,(26)、SharedPreferencesInfo.java本地存儲(chǔ)緩存信息等。(27)、HttpUtil.java聯(lián)網(wǎng)工具類(lèi)(28)、MyAsyncTask.java異步加載模版類(lèi)(29)、ServerInfo.java服務(wù)信息類(lèi)(30)、WebserviceProv
33、ider.java聯(lián)網(wǎng)獨(dú)立出來(lái)的框架類(lèi)(31)、CheckBagChangeService.java檢測(cè)購(gòu)物車(chē)變化的后臺(tái)服務(wù),用來(lái)向商家推送消息的。(32)widget 包一些工具類(lèi):如圖片的轉(zhuǎn)碼,壓縮。圖片的透明化處理,文本框的設(shè)計(jì),等等4.3 軟件實(shí)現(xiàn)4.3.1 軟件的UI實(shí)現(xiàn)理念一個(gè)好的交互設(shè)計(jì)對(duì)產(chǎn)品的成功起著很關(guān)鍵的作用。UI所做的就是用戶(hù)最先接觸到的東西,也是一般性的用戶(hù)唯一接觸到的東西。用戶(hù)對(duì)于界面視覺(jué)效果和軟件操作方式的易用性的關(guān)心,要遠(yuǎn)遠(yuǎn)大于他對(duì)底層到底用什么樣的代碼去實(shí)現(xiàn)的關(guān)心。軟件設(shè)計(jì)運(yùn)用了扁平化的風(fēng)格,ActionBar經(jīng)過(guò)了重新的設(shè)計(jì)與定義,融合安卓的holo風(fēng)格,將功能模塊集合到上面
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)庫(kù)擴(kuò)大補(bǔ)充協(xié)議書(shū)
- 第9課-2023-2024學(xué)年初中信息技術(shù)七年級(jí)上冊(cè)(人教版)-說(shuō)課稿-制作電子表格
- 變更扶養(yǎng)協(xié)議書(shū)
- 北京房屋租賃合同2008
- 防火應(yīng)急疏散演練幼兒園
- 天津市南開(kāi)區(qū)2024-2025學(xué)年高一上學(xué)期11月期中考試語(yǔ)文試題(含答案)
- 遼寧省錦州市某校2024-2025學(xué)年高二上學(xué)期期中質(zhì)量檢測(cè)英語(yǔ)試卷(無(wú)答案)
- 糖尿病的演講
- 《纖維繩索彎曲疲勞試驗(yàn)方法》
- 飼料級(jí)磷酸鹽相關(guān)項(xiàng)目投資計(jì)劃書(shū)范本
- 維吾爾族的傳統(tǒng)文化課件
- 工藝驗(yàn)證基礎(chǔ)知識(shí)
- 船舶工程設(shè)計(jì)資質(zhì)分級(jí)標(biāo)準(zhǔn)
- 異物管控記錄表
- 內(nèi)蒙古自治區(qū)通遼市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- 小學(xué)安全課件《按章行路才安全》
- 《游子吟》教學(xué)反思
- 轉(zhuǎn)爐熱試方案
- 幼兒園繪本:《小蛇散步》 課件
- DBJ∕T 15-104-2015 預(yù)拌砂漿混凝土及制品企業(yè)試驗(yàn)室管理規(guī)范
- 固定資產(chǎn)明細(xì)賬
評(píng)論
0/150
提交評(píng)論