chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Android開發(fā)平臺的智能手機天氣實況預報系統(tǒng)的實現(xiàn)

電子設計 ? 作者:電子設計 ? 2018-11-15 12:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

為了讓智能手機用戶能夠隨時隨地查詢互聯(lián)網(wǎng)所提供的服務,一種高效的辦法就是將應用系統(tǒng)的功能拓展到手機終端,讓手機能通過移動網(wǎng)和互聯(lián)網(wǎng)訪問Web 網(wǎng)站并處理各項業(yè)務。Android 系統(tǒng)是Google 公司開發(fā)的一個開源手機操作系統(tǒng),它包括了操作系統(tǒng)、用戶界面和應用程序,即智能手機工作所需的全部軟件。Android 的最大特點是它的開放性體系架構,不僅具有非常好的開發(fā)、調試環(huán)境,而且還具有各種可擴展的設施,包括豐富的圖形組件、多媒體支持功能和強大的瀏覽器,而且已有許多比較成熟的應用案例。

1 Android應用程序設計原理

一個Android 應用程序,通常由Activity、Intent Receiver、Service、Content Provider 四種功能組件構成。但是,并不是每一個Android 應用程序都需要用到這四種功能組件,而是只需上述四種功能組件的某些組合。

1.1 Activity

Activity 是最基本的Android 應用程序組件。大多數(shù)應用由多個屏幕組成,一個Activity 通常則是一個單獨的屏幕。每一個Activity 都被實現(xiàn)為一個獨立的類,并且從Activity 基類中繼承而來。Activity 類將會顯示由視圖控件組成的用戶接口,并對事件做出響應。Android 使用Intent 這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。通過解析各種Intent,從一個屏幕導航到另一個屏幕是很簡單的。當向前導航時,Activity 將會調用startActivity(Intent myIntent)方法,然后,系統(tǒng)會在所有安裝的應用程序中所定義的IntentFilter 中查找,找到最匹配myIntent的和Intent 對應的Activity.新的Activity 接收到myIntent 的通知后,開始運行。當startActivity 方法被調用時將觸發(fā)解析myIntent 的動作。這個機制具有兩點優(yōu)勢:一是能夠重復利用從其他組件中以Intent 形式產生的一個請求;二是Activity 可以在任何時候被一個具有相同IntentFilter 的新Activity 取代。

1.2 Intent Receiver

通過Intent Receiver 實現(xiàn)的應用能夠對一個外部的事件作出響應。Intent Receiver 在AndroidManifest.xml 中注冊,也可以在代碼中使用Context.registerReceiver()進行注冊。當一個IntentReceiver 被觸發(fā)時,應用不必對請求調用Intent Receiver,系統(tǒng)會在需要的時候啟動應用。各種應用還可以通過使用Context.

broadcastIntent()將它們自己的Intent Receiver廣播給其他應用程序。

1.3 Service

Service 是一段長生命周期的、沒有用戶界面的程序。例如媒體播放器這個Activity 會使用Context.startService()來啟動一個Service,從而可以在后臺播放音樂。同時,系統(tǒng)也將保持這個Service 一直執(zhí)行,直到Service 運行結束。系統(tǒng)可通過使用Context.bindService()方法,連接到一個Service 上(如果這個Service 還沒有運行將啟動它)。當連接到一個Service 之后,還可以利用Service 提供的接口與它通信。就媒體播放器來說,還可以進行暫停、重播等操作。

1.4 Content Provider

Android 應用程序能夠將它們的數(shù)據(jù)保存到文件、SQL 數(shù)據(jù)庫,甚至是任何有效的設備中。Content Provider 實現(xiàn)了應用數(shù)據(jù)與其他的應用程序的共享。Content Provider 類實現(xiàn)一組標準的方法,能夠讓其他應用程序保存或讀取此ContentProvider處理的各種類型數(shù)據(jù)。在Android 中,默認使用SQLite 作為系統(tǒng)數(shù)據(jù)庫,但使用方法略有不同。Android 中每一個應用程序都運行在各自的進程中,當訪問其他應用程序的數(shù)據(jù)時,需要在不同的虛擬機之間傳遞數(shù)據(jù),這樣操作起來會有些困難(正常情況下,不能讀取其他應用程序的數(shù)據(jù)庫文件)。ContentProvider 正是解決不同的應用包共享數(shù)據(jù)的工具。

2 天氣實況預報系統(tǒng)的具體實現(xiàn)

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

基于Android開發(fā)平臺的智能手機天氣實況預報系統(tǒng)的實現(xiàn)

2.1 Android平臺的用戶界面實現(xiàn)

Android 提供的可變化的用戶界面(UI)開發(fā)模塊是基于XML 文件的。這些XML 文件放在工程/res/layout 下面。這個目錄可包含所有應用程序所需的非碼部分,比如圖片、字符串、xml 文件。當要使用到這些資源時,在代碼目錄中打開R.java文件即可。在XML 文件里編輯界面的代碼,實現(xiàn)起來不僅方便,使用時也會更加靈活。

在Android 程序設計中要用到一些基本的Android UI 元素,通過使用Views、View Groups 和layouts 可為Activity 創(chuàng)建功能性的、富有直觀力的UI.通常是使用Android SDK 中提供的一些控件,進行布局、擴展和定制這些控件,并使用ViewGroups 去組合Views,創(chuàng)建由相互作用的子控件組成的原子的、重復利用的UI 元素。也可以創(chuàng)建自己的Views,來實現(xiàn)顯示數(shù)據(jù)和與用戶交互的新途徑;或使用一些繼承自View Group 的Layout 管理器來組織Android UI中的單個元素到屏幕上。

在一個Android 應用中,用戶界面由View 和View Group對象構建。View 與View Group 有很多種類,而它們都是View類的子類。View 對象是Android 平臺中用戶界面的基本單元。View 類是widgets(工具)類的父類,它們提供了諸如文本輸入框和按鈕之類的UI 對象的完整實現(xiàn)。View Group 類是Layouts(布局)類的父類,它們提供了諸如流式布局、表格布局以及相對布局之類的布局架構。

View 對象是一個數(shù)據(jù)體,它的屬性存儲了用于屏幕上一塊矩形區(qū)域的布局參數(shù)及內容。并負責它所轄的這個矩形區(qū)域之中所有測量、布局、焦點轉換、卷動以及按鍵/觸摸手勢的處理。作為一個用戶界面對象,View 同時也擔任著用戶交互關鍵點以及交互事件接受者的角色。天氣實況預報系統(tǒng)程序功能比較單一,其UI 也相對比較簡單,只要有一個輸入框、一個查詢按鈕以及一個顯示所有中國城市信息的列表即可。為了建立Android 平臺的用戶界面,首先要在Package Explorer 窗口中展開Layout 后新建。xml 文件,用來對窗口界面進行布局,主要有系統(tǒng)運行的主配置文件main.xml 和result.xml.

Layout 是一類特殊的ViewGroup 控件,它們本身沒有任何可顯示內容,存在的惟一原因就是其中的內部結構,能夠更好地擺放它的子控件。比如Linearlayout,可將子控件按水平或垂直方向按順序排列下去;Tablelayout,可以將子控件按照表格的形式,一枚枚放置好;Relativelayout 更靈活,可以設定各個控件之間的對齊和排列關系,適合定制復雜的界面。有了Layout 的存在,控件和控件之間不再是割裂地存在,而是更有機地結合在一起,設定起來也更為方便。在本實例的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_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/searchBtn"/>

上述代碼生成了一個Linearlayout,定義了一個EditText 和Button,并且設置了相關的參數(shù)。在Android 中,控件最重要的大小屬性是width/height,開發(fā)者可以指明控件的大小,控件的寬、高以及在屏幕中的顯示位置等,可以設定成為fill_parent 和wrap_content.另外,還可以設置相應的文本信息,并可通過android:text="@string/cityText"/>進行引用(string 文件存放在工程的res/values 中)。按照這種方法,還可以依據(jù)需要定義相應的布局控件,譬如定義用來呈現(xiàn)天氣實況信息的UI等。

2.2 創(chuàng)建中國城市列表數(shù)據(jù)

根據(jù)天氣預報系統(tǒng)功能需求分析,系統(tǒng)啟動后,應在主界面上呈現(xiàn)出中國國內所有城市的列表數(shù)據(jù),因此需要創(chuàng)建中國城市列表數(shù)據(jù),包括獲取、解析城市列表數(shù)據(jù),并在用戶界面上呈現(xiàn)出來。為此,需要解決的問題是手機終端從Web 服務器獲取了所有類型的數(shù)據(jù)之后,將這些數(shù)據(jù)進一步交給Android 手機終端View 組件[4],在手機界面上顯示給用戶。

⑴ 獲取城市列表數(shù)據(jù)

Android 沒有提供Web Service 的組件庫,但可以通過修改在PC 或J2ME 上使用的開源Web Service Java 庫作為AndroidWeb Servic 庫使用。kSOAP2(http://ksoap2.sourceforge.net)是一個在智能手機上的SOAP Web Service 客戶端包,可用于資源受限制的Java 環(huán)境如Applets 或J2ME 應用程序。在GoogleCode 上有一個項目ksoap2-android(http://code.google.com/p/ksoap2-android/)可用在Android 平臺上實現(xiàn)輕量級的SOAP 庫,即使用ksoap2-android 的API 來調用遠端Web Service 的服務。

因此需要在CitiesWeatherForecast.java 的onCreate()中進行數(shù)據(jù)獲取的初始化工作。通過定義一個方法public ListgetAllCitiesNames()可獲得中國城市名稱列表。也就是說,采用它提供的獲得全球各個國家城市的方法GetCitiesByCountry,通過http://www.webservicex.net/globalweather.asmx 上的WebService 可提供天氣預報服務。譬如,通過Constant.java 中的public class Constant{},設置SOAP Action 要調用的方法名、命名空間以及Web Service URL值,其源代碼為:

public static final String SOAP_ACTION=

"http://www.webserviceX.NET/GetCitiesByCountry";

public static final String METHOD_NAME=

"GetCitiesByCountry";

public static final String SOAP_ACTION2=

"http://www.webserviceX.NET/GetWeather";

public static final String METHOD_NAME2="GetWeather";

public static final String NAMESPACE=

"http://www.webserviceX.NET";

public static final String URL=

http://www.webservicex.net/globalweather.asmx;

然后在WebServiceCaller.java 中實例化一個SoapSerializationEnvelope對象,設置SoapObject 的命名空間、方法名、參數(shù)等;并通過實例化一個AndroidHttpTransport 對象來調用WebService,并獲得xml 字符串數(shù)據(jù),其代碼段如下:

AndroidHttpTransport androidHttpTransport=

new AndroidHttpTransport (Constant.URL);

try {

androidHttpTransport.call(soapAction, envelope);

Object result=envelope.getResponse();

xmlStr=result.toString();

} catch(Exception e) {

e.printStackTrace();

}

⑵ 解析數(shù)據(jù)列表

Android 操作系統(tǒng)對xml 字符串數(shù)據(jù)的操作功能很強,提供了dom、sax 以及xmlpul 3 種方式。Android SDK 提供了android.sax 包以方便SAX Handler 的開發(fā),可用來解析xml 結果字符串。在本設計實例的CitiesWeatherForecast.java 文件中,解析xml 數(shù)據(jù)時,先通過RootElement root=new RootElement("NewDataSet")獲得xml 數(shù)據(jù)的根節(jié)點;然后再尋找其子節(jié)點直到找到City 子節(jié)點,并設置一個監(jiān)聽器setEndTextElementListener()來獲得City 子節(jié)點的值;最后使用org.xml.sax 的SAXParser 來解析xml 數(shù)據(jù),把數(shù)據(jù)存入List并返回:

SAXParserFactory factory=SAXParserFactory.newInstance();

SAXParser parser=factory.newSAXParser();

XMLReader xmlreader=parser.getXMLReader();

xmlreader.setContentHandler(root.getContentHandler());

InputSource is=new InputSource

(new StringBufferInputStream(xmlStr));

xmlreader.parse(is);

⑶ 在UI上呈現(xiàn)城市列表數(shù)據(jù)

當獲得List類型的數(shù)據(jù)之后,就可以把它綁定到main.xml 定義的ListView 組件上,然后使用ListActivity 呈現(xiàn)列表數(shù)據(jù)。在CitiesWeatherForecast.java 中的代碼段為:

List cityList=getAllCitiesNames();

setListAdapter(new ArrayAdapter(this,

android.R.layout.simple_list_item_1, cityList));

即使用方法setListAdapter()把一個ListActivity 填充進去。

2.3 城市天氣實況預報系統(tǒng)的調試

城市天氣實況預報系統(tǒng)的測試結果如下。在Eclipse 的Package Explorer 窗口中用鼠標右鍵選擇CitiesWeatherForecast工程名,在彈出的窗口中選擇"Run As"→"Android Application"安裝該應用程序到Android 模擬器并啟動它。然后單擊所要查詢的城市名稱列表項,稍等片刻便會顯示出該城市的天氣實況信息。也可以在文本框中直接輸入所要查詢的城市名稱,單擊"Search"同樣會獲得相應城市的天氣預報信息。

3 結束語

Android 平臺具有極大的開放性和兼容性,并且本身大量使用了開源代碼庫,深為開發(fā)人員所喜愛。Android 智能手機應用程序的開發(fā)涉及了它的整個體系結構,是一項非常復雜的工程。本文在介紹基于Android 平臺的應用程序設計原理的基礎上,提出了Android 用戶界面設計、獲取并解析城市列表數(shù)據(jù)的一種方法,給出了在用戶界面上呈現(xiàn)數(shù)據(jù)的原理與設計過程,最后通過模擬器進行了應用程序的調試。當然,基于Android 平臺的開發(fā)技術還需要進一步完善,需要在日后的工作中不斷探索、研究,以建立實用的城市天氣實況預報系統(tǒng)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 智能手機
    +關注

    關注

    66

    文章

    18656

    瀏覽量

    185239
  • Android
    +關注

    關注

    12

    文章

    3980

    瀏覽量

    132344
  • 互聯(lián)網(wǎng)

    關注

    55

    文章

    11288

    瀏覽量

    108252
  • 操作系統(tǒng)

    關注

    37

    文章

    7258

    瀏覽量

    127869
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于IMS的雙模智能手機系統(tǒng)的設計

    基于IMS的雙模智能手機系統(tǒng)的設計
    發(fā)表于 08-20 13:11

    君正100美金低成本3G智能手機解決方案詳解

    最高、功耗最低的低成本智能手機平臺。該方案支持TD – SCDMA、EVDO、EDGE、GPRS 和 GSM,采用最新的Android 4.0冰激凌三明治系統(tǒng)。JZ4770
    發(fā)表于 12-19 11:13

    Windows Phone智能手機Android更讓人滿意

    國外調研公司ChangeWave的最新調查數(shù)據(jù)顯示,Windows Phone的用戶對自己的智能手機的滿意度比Android手機用戶要高。ChangeWave對一些智能手機的用戶進行了
    發(fā)表于 01-21 16:08

    【轉】智能手機如何“越獄”和ROOT?

    update from sdcard,按HOME鍵確認。系統(tǒng)更新完成后,將光標放在reboot system now上,再按HOME鍵,手機自動重啟,ROOT完成。特別提示:智能手機越獄或ROOT后
    發(fā)表于 06-08 14:48

    基于NFC技術的智能手機設計

    定制化Nexperia智能手機系統(tǒng)方案,以開發(fā)出功能強大的多媒體手機產品。而采用飛利浦內建NFC功能的系統(tǒng)方案,則可讓現(xiàn)在的
    發(fā)表于 06-19 06:30

    智能手機自動化測試技術

    近年來,隨著Android智能手機操作系統(tǒng)的快速發(fā)展,越來越多的手機廠商及應用提供商專注于Android
    發(fā)表于 07-22 08:04

    基于Linux平臺上的智能手機的解決方案

    每個系統(tǒng)要正常運行都有賴于CPU 的性能, 系統(tǒng)軟件, 中間件一集各種系統(tǒng)策略等等, 智能手機也是一樣。這篇文章主要探討了給智能手機選擇合適
    發(fā)表于 07-26 08:22

    智能手機怎么才能更加智能?

    很明顯,智能手機不僅融入了我們的日常商業(yè)活動,而且融入了我們的日常生活。過去,智能手機被定義為采用專用操作系統(tǒng)(OS)的蜂窩電話。這意味著智能手機可以增加或安裝/刪除應用軟件,雖然這種
    發(fā)表于 08-20 08:32

    如何設計智能手機省電系統(tǒng)?

    智能手機中包含了很多耗能設備, 諸如MP3、MPEG- 4、Wi-Fi、數(shù)碼相機、3D 游戲等等。在手機電池容量還沒有實現(xiàn)質的飛躍的前提下, 我們不得不考慮手機電源節(jié)能的問題。我主要通
    發(fā)表于 11-05 08:03

    紫光展銳宣布六款智能手機芯片已完成對Android 11的部署

    近日,紫光展銳發(fā)布的一則消息吸引了業(yè)界的關注。該公司表示,通過同步參與Android 11的開發(fā),其六款智能手機芯片已完成對Android 11的部署。在Google發(fā)布
    發(fā)表于 02-01 06:24

    請問如何去設計一種智能手機系統(tǒng)?

    智能手機系統(tǒng)的硬件設計智能手機系統(tǒng)的軟件設計基于嵌入式Linux的智能手機系統(tǒng)設計
    發(fā)表于 04-25 07:00

    如何用智能手機模擬15693標簽的源代碼?

    大家好。我有一個基于 ST25R3911B 的 NFC 標簽閱讀器,我目前正在使用它來讀取“真正的”NFC-V 15693 標簽。我想制作“虛擬”標簽,可能是通過智能手機,并使它們可從 NFC
    發(fā)表于 12-28 12:58

    Android智能手機天氣預報系統(tǒng)設計及實現(xiàn)

    Android智能手機天氣預報系統(tǒng)設計及實現(xiàn)
    發(fā)表于 01-14 11:22 ?23次下載

    基于Android 智能手機平臺實現(xiàn)了車載監(jiān)控管理系統(tǒng)的設計方案

    的基于單機應用向基于互聯(lián)網(wǎng)應用做轉變。隨著智能手機的迅猛發(fā)展,智能手機平臺將成為GIS技術互聯(lián)網(wǎng)應用新的應用平臺。 2 Android
    發(fā)表于 10-26 11:09 ?0次下載
    基于<b class='flag-5'>Android</b> <b class='flag-5'>智能手機</b><b class='flag-5'>平臺</b><b class='flag-5'>實現(xiàn)</b>了車載監(jiān)控管理<b class='flag-5'>系統(tǒng)</b>的設計方案

    Android智能手機木馬實現(xiàn)

    隨著Android智能操作系統(tǒng)的發(fā)展,基于該平臺智能手機與各類平板電腦已經(jīng)成為人們日常生活中不可分割的一部。而與此同時針對該
    發(fā)表于 11-06 16:25 ?6次下載
    <b class='flag-5'>Android</b><b class='flag-5'>智能手機</b>木馬<b class='flag-5'>實現(xiàn)</b>