Android智能手機天氣預報系統設計_第1頁
Android智能手機天氣預報系統設計_第2頁
Android智能手機天氣預報系統設計_第3頁
Android智能手機天氣預報系統設計_第4頁
Android智能手機天氣預報系統設計_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2.1 Android 平臺的用戶界面實現1.2 Intent ReceiverAndroid 智能手機天氣預報系統設計Android 智能手機天氣預報系統設計摘要:在分析討論Android 應用系統設計原理的基礎上,提出了 Android 智能手機天氣實況預報系統用戶界面以及獲取并解析城市列表數據的設計方法,給出了在用戶界面上呈現列表數據的設計過程,實現了一個簡單的 Android 智能手機城市天氣實況預報系統。系統在模擬器上通過調試并正常運行。0 引言 為了讓智能手機用戶能夠隨時隨地查詢互聯網所提供的服務,一種高效的辦法就是將應用系統的功能拓展到手機終端,讓手機能通過移動網和互聯網訪問 W

2、eb 網站并處理各項業務。 Android 系統是 Google 公司開發的一個開源手機操作系統,它包括了操作系統、用戶界面和應用程序,即智能手機工作所需的全部軟件。 Android 的最大特點是它的開放性體系架構,不僅具有非常好的開發、調試環境,而且還具有各種可擴展的設施,包括豐富的圖形組件、多媒體支持功能和強大的瀏覽器,而且已有許多比較成熟的應用案例。本文提出了智能手機天氣實況預報系統的一種設計實現方法,供開發者參考。Android 應用程序設計原理一個 Android 應用程序,通常由 AcTIvity 、 Intent Receiver 、 Service 、 CONtent Prov

3、ider 四種功能組件構成。但是,并不是每一個Android 應用程序都需要用到這四種功能組件,而是只需上述四種功能組件的某些組合。ActivityActivity 是最基本的 Android 應用程序組件。大多數應用由多個屏幕組成,一個 Activity 通常則是一個單獨的屏幕。每一個Activity 都被實現為一個獨立的類,并且從 Activity 基類中繼承而來。 Activity 類將會顯示由視圖控件組成的用戶接口,并對事件做出響應。 Android 使用 Intent 這個特殊類,實現在屏幕與屏幕之間移動。通過解析各種 Intent ,從一個屏幕導航到另一個屏幕是很簡單的。當向前導航

4、時, Activity 將會調用 STartActivity ( Intent myIntent )方法,然后,系統會在所有安裝的應用程序中所定義的 IntentFilter 中查找,找到最匹配myIntent 的和 Intent 對應的 Activity. 新的 Activity 接收到 myIntent 的通知后,開始運行。當 startActivity 方法被調用時將觸發解析 myIntent 的動作。這個機制具有兩點優勢:一是能夠重復利用從其他組件中以Intent 形式產生的一個請求;二是Activity 可以在任何時候被一個具有相同IntentFilter 的新 Activity 取

5、代。通過 Intent Receiver實現的應用能夠對一個外部的事件作出響應。IntentReceiver 在 AndroidManifest.xml 中注冊,也可以在代碼中使用Context.registerReceiver ()進行注冊。當一個IntentReceiver 被觸發時,應用不必對請求調用 Intent Receiver ,系統會在需要的時候啟動應用。各種應用還可以通過使用 Context.brOAdcastIntent ()將它們自己的 Intent Receiver 廣播給其他應用程序。ServiceService 是一段長生命周期的、沒有用戶界面的程序。例如媒體播放器這

6、個Activity 會使用 Context.startService ()來啟動一個Service ,從而可以在后臺播放音樂。同時,系統也將保持這個Service 一直執行,直到 Service 運行結束。系統可通過使用 Context.bindService ()方法,連接到一個Service 上(如果這個Service 還沒有運行將啟動它)。當連接到一個Service 之后,還可以利用 Service 提供的接口與它通信。就媒體播放器來說,還可以進行暫停、重播等操作。Content ProviderAndroid應用程序能夠將它們的數據保存到文件、SQL數據庫,甚至是任何有效的設備中。 C

7、ontent Provider 實現了應用數據與其他的應用程序的共享。 Content Provider 類實現一組標準的方法,能夠讓其他應用程序保存或讀取此ContentProvider處理的各種類型數據。在Android 中,默認使用 SQLite 作為系統數據庫,但使用方法略有不同。 Android 中每一個應用程序都運行在各自的進程中,當訪問其他應用程序的數據時,需要在不同的虛擬機之間傳遞數據,這樣操作起來會有些困難(正常情況下,不能讀取其他應用程序的數據庫文件)。 ContentProvider 正是解決不同的應用包共享數據的工具。天氣實況預報系統的具體實現基于 Android 平臺

8、的智能手機訪問服務器的主要技術是數據交互方法?;贏ndroid 操作系統的天氣實況預報系統設計的核心是通過調用通信協議SOAP( SimpleObject AccessProtocol )的接口,從Web Service 提供商中提取天氣預報的數據信息,為客戶端服務。其基本功能是當用戶運行天氣預報系統程序時,在手機屏幕上顯示出中國的城市名稱,用戶單擊任意一個城市名,可獲得該城市的天氣實況預報信息。用戶也可以輸入城市名稱,點擊查詢獲得天氣預報信息。 CitiesWeather-Forecast 工程目錄結構及其源代碼文件。Android提供的可變化的用戶界面(UI)開發模塊是基于 XML文件的

9、。這些XML文件放在工程/res/layout 下面。這個目錄可包含所有應用程序所需的非碼部分,比如圖片、字符串、 xml 文件。當要使用到這些資源時,在代碼目錄中打開R.java 文件即可。在XML文件里編輯界面的代碼,實現起來不僅方便,使用時也會更加靈活。在 Android 程序設計中要用到一些基本的 Android UI 元素,通過使用 Views 、View Groups 和 layouts 可為 Activity 創建功能性的、富有直觀力的 UI. 通常是使用Android SDK 中提供的一些控件,進行布局、擴展和定制這些控件,并使用 ViewGroups 去組合 Views ,創

10、建由相互作用的子控件組成的原子的、重復利用的 UI 元素。也可以創建自己的Views ,來實現顯示數據和與用戶交互的新途徑;或使用一些繼承自 View Group 的 Layout 管理器來組織Android UI 中的單個元素到屏幕上。在一個 Android 應用中,用戶界面由 View 和 View Group 對象構建。 View 與View Group 有很多種類,而它們都是View 類的子類。 View 對象是 Android 平臺中用戶界面的基本單元。 View 類是 widgets (工具)類的父類,它們提供了諸如文本輸入框和按鈕之類的 UI 對象的完整實現。 View Grou

11、p 類是 Layouts (布局)類的父類,它們提供了諸如流式布局、表格布局以及相對布局之類的布局架構。View 對象是一個數據體,它的屬性存儲了用于屏幕上一塊矩形區域的布局參數及內容。并負責它所轄的這個矩形區域之中所有測量、布局、焦點轉換、卷動以及按鍵 /觸摸手勢的處理。作為一個用戶界面對象, View 同時也擔任著用戶交互關鍵點以及交互事件接受者的角色。天氣實況預報系統程序功能比較單一,其UI 也相對比較簡單,只要有一個輸入框、一個查詢按鈕以及一個顯示所有中國城市信息的列表即可。為了建立Android 平臺的用戶界面,首先要在Package Explorer 窗口中展開Layout 后新建

12、。 xml文件,用來對窗口界面進行布局,主要有系統運行的主配置文件main.xml 和 result.xml.Layout 是一類特殊的 ViewGroup 控件,它們本身沒有任何可顯示內容,存在的惟一原因就是其中的內部結構,能夠更好地擺放它的子控件。比如 Linearlayout ,可將子控件按水平或垂直方向按順序排列下去; Tablelayout ,可以將子控件按照表格的形式,一枚枚放置好; Relativelayout 更靈活,可以設定各個控件之間的對齊和排列關系,適合定制復雜的界面。有了 Layout 的存在,控件和控件之間不再是割裂地存在,而是更有機地結合在一起,設定起來也更為方便。

13、在本實例的 main.xml 文件中主要是添加一些界面的布局設置,例如如下代碼:android:orientation= “ horizontal ”android:layout_width=“fill_parent”android:layout_height=“wrap_content ”android:layout_width=“wrap_content android:layout_height= “wrap_content android:text= “ string/cityText ” / android:layout_widt h=“wrap_content android:la

14、yout_height= “wrap_content android:text= “ string/searchBtn ” /上述代碼生成了一個Linearlayout ,定義了一個EditText 和 Button ,并且設置了相關的參數。在Android 中,控件最重要的大小屬性是width/height ,開發者可以指明控件的大小,控件的寬、高以及在屏幕中的顯示位置等,可以設定成為fill_parent 和 wrap_content. 另外,還可以設置相應的文本信息,并可通過 android:text= “string/cityText ” / 進行引用( string 文件存放在工程的

15、 res/values 中)。按照這種方法,還可以依據需要定義相應的布局控件,譬如定義用來呈現天氣實況 信息的 UI 等。創建中國城市列表數據根據天氣預報系統功能需求分析,系統啟動后,應在主界面上呈現出中國國內所有城市的列表數據,因此需要創建中國城市列表數據,包括獲取、解析城市列表數據,并在用戶界面上呈現出來。為此,需要解決的問題是手機終端從Web服務器獲取了所有類型的數據之后,將這些數據進一步交給Android 手機終端 View 組件 4,在手機界面上顯示給用戶。 獲取城市列表數據Android 沒有提供 Web Service的組件庫,但可以通過修改在PC或J2ME上使用的開源 Web

16、Service Java 庫作為 AndroidWeb Servic 庫使用。 kSOAP2( /p/ksoap2- android/ )可用在Android 平臺上實現輕量級的 SOAP庫,即使用ksoap2-android 的 API 來調用遠端Web Service 的服務。因此需要在CitiesWeatherForecast.java 的 onCreate ()中進行數據獲取的初始化工作。通過定義一個方法public ListgetAllCitiesNAMEs ()可獲得中國城市名稱列表。也就是說,采用它提供的獲得全球各個國家城市的方法GetCitiesByCountry ,通過/gl

17、obalweather.asmx 上的 WebService 可提供天氣預報服務。譬如,通過Constant.java 中的 public class Constant ,設置 SOAP Action 要調用的方法名、命 名空間以及Web Service URL 值,其源代碼為:public static final String SOAP_ACTION= “/globalweather.asmx;然后在 WebServiceCaller.java 中實例化一個SoapSerializationEnvelope 對象,設置 SoapObject 的命名空間、方法名、參數等;并通過實例化一個An

18、droidHttpTransport 對象來調用 WebService ,并獲得 xml 字符串數據,其代碼段如下:AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport( Constant.URL );try androidHttpTransport.call( soapAction , envelope );Object result=envelope.getResponse ();xmlStr=result.toString (); catch ( Exception e ) e.printStackTrace

19、 (); 解析數據列表Android 操作系統對 xml 字符串數據的操作功能很強,提供了dom、 sax 以及xmlpul 3 種方式。 Android SDK 提供了 android.sax 包以方便 SAX Handler 的開發,可用來解析 xml 結果字符串。在本設計實例的 CitiesWeatherForecast.java 文件中,解析xml 數據時,先通過 RootElement root=new RootElement ( NewDataSet )獲得 xml數據的根節點;然后再尋找其子節點直到找到 City 子節點,并設置一個監聽器setEndTextElementList

20、ener ()來獲得 City子節點的值;最后使用 org.xml.sax 的 SAXParser 來解析 xml 數據,把數據存入 List 并 返回:SAXParserFactory factory=SAXParserFactory.newInstance ();SAXParser parser=factory.newSAXParser ();XMLReader xmlreader=parser.getXMLReader ();xmlreader.setContentHandler ( root.getContentHandler ();InputSource is=new InputSourcexmlStr );( new StringBufferInputStreamxmlreader.parse ( is ); 在 UI 上呈現城市列表數據 當獲得 List 類型的數據之后,就可以把它綁定到 main.xml 定義的 ListView 組件上,然后使用 ListActivity 呈現列表數據。在 CitiesWeatherForecast.java

溫馨提示

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

最新文檔

評論

0/150

提交評論