freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的3g手機(jī)天氣預(yù)報系統(tǒng)設(shè)計(編輯修改稿)

2025-02-12 13:33 本頁面
 

【文章內(nèi)容簡介】 取的字節(jié)流數(shù)據(jù)進(jìn)行解析,并且將解析結(jié)果保存在WidgetEntity對象中。 時間管理AppWidget一啟動就會啟動DataTimeService這個后臺服務(wù),此服務(wù)設(shè)置了每隔20秒刷新一次時間,“顯示頁面”通過這個后臺服務(wù)獲取系統(tǒng)時間從而顯示。核心代碼如下:AlarmManager alarmManager = (AlarmManager)getSystemService()。(, now + updateMilis, pendingIntent)。至此,后臺服務(wù)介紹完畢。service android:name=ForecastService/serviceservice android:name=ForecastTimeService/service 頁面現(xiàn)實布局管理根據(jù)需求分析可以知道,應(yīng)用程序應(yīng)包含三個主要的用戶界面,這里需要進(jìn)一步分析每個用戶界面中應(yīng)該包括哪些顯示內(nèi)容。在“設(shè)置頁面”中,需要對要顯示天氣預(yù)報的城市及更新頻率進(jìn)行設(shè)置。在“顯示頁面”中,顯示當(dāng)前的天氣狀況,包括城市名稱、溫度、濕度、風(fēng)向、雨雪情況和獲取數(shù)據(jù)時間等信息。在“詳細(xì)頁面”動態(tài)顯示當(dāng)前天氣情況,還要顯示未來四天的天氣情況。根據(jù)對用戶界面顯示內(nèi)容的分析,繪制出用戶界面的草圖,如圖5所示。圖45 用戶界面草圖 后臺服務(wù)后臺服務(wù)是ChinaWeather工程的核心模塊,在用戶啟動后持續(xù)在后臺運(yùn)行,直到用戶停止服務(wù)。后臺服務(wù)主要有三個功能,一是周期性的獲取Google的天氣數(shù)據(jù)并存儲到SQLite,二是從SQLite讀取出要顯示的數(shù)據(jù),三是定時更新“顯示頁面”的時間。 App Widget啟動Android開發(fā)應(yīng)用除了程序應(yīng)用,還有App Widget應(yīng)用。先簡單說說App Widget的原理。App Widget是在桌面上的一塊顯示信息的東西,通過單擊App Widget跳轉(zhuǎn)到程序入口類。而系統(tǒng)自帶的程序,典型的App Widget是music,這個Android內(nèi)置的音樂播放小程序。這個是典型的App Widget+app應(yīng)用。就是一個程序既可以通過App Widget啟動,也可以通過App啟動。App Widget就是一個AppWidgetProvider+一個UI界面顯示(預(yù)先綁定了好多Intent),界面上的信息可以通過程序控制而改變,單擊Widget上的控件只能激發(fā)發(fā)送一個Intent,或發(fā)出一個Service的啟動通知。而AppWidgetProvider可以攔截這個Intent,而進(jìn)行相應(yīng)的處理。WeatherWidget在設(shè)計上采用了AppWidget框架結(jié)構(gòu),AppWidget就是HomeScreen上顯示的小部件,通過在HomeScreen空白處長按,在彈出的對話框中選擇Widget部件來進(jìn)行創(chuàng)建。此外,長按部件后并拖動到垃圾箱里進(jìn)行刪除。創(chuàng)建AppWidget需要以下四個步驟:定義Widget布局文件,此文件是res/layout/,采用AbsoluteLayout方式進(jìn)行布局需要注意的是在這個文件中所使用的組件必須是RemoteViews所支持的。定義Widget的基本屬性文件,此文件是/res/xml/。代碼如下:?xml version= encoding=utf8?appwidgetprovider xmlns:android= android:initialLayout=@layout/weatherwidget android:configure= android:minWidth=292dip android:minHeight=144dip android:updatePeriodMillis=0效果如圖6所示: 圖46 桌面顯示圖/appwidgetprovider,此類繼承自AppWidgetProvider,主要的功能有:獲取需要更新的桌面小控件;啟動時間信息的服務(wù);啟動獲取天氣預(yù)報信息的服務(wù);更新時間信息;更新桌面小控件顯示內(nèi)容。核心代碼如下:public class WeatherWidget extends AppWidgetProvider { @Overridepublic void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { (context, appWidgetManager, appWidgetIds)。 // 獲取需要更新的桌面小控件 (appWidgetIds)。 // 啟動獲取天氣預(yù)報信息的服務(wù)(new Intent(context, ))。 // 啟動時間信息的服務(wù)(new Intent(context, ))。 } //更新桌面小控件顯示內(nèi)容public static RemoteViews updateViews(Context context, Uri uri) { } //更新時間信息 public static RemoteViews updateTime(Context context) { }AppWidgetProvider對應(yīng)一個receiver屬性。代碼如下:!intentfilter說明appWidget可以接受下面的廣播事件— intentfilter action android:name=/action /intentfilter !metadata指明屬性文件— metadata android:name= android:resource=@xml/weatherwidget/metadata /receiver效果如圖7所示:圖47 關(guān)閉系統(tǒng)圖 數(shù)據(jù)庫設(shè)計與實現(xiàn)數(shù)據(jù)提供者DataForecastService繼承ContentProvider,是在應(yīng)用程序間共享數(shù)據(jù)的一種接口機(jī)制。應(yīng)用程序在不同的進(jìn)程中運(yùn)行,因此,數(shù)據(jù)和文件在不同的應(yīng)用程序之間是不能夠直接進(jìn)行訪問的。而CotentProvider為程序員提供了較高級的數(shù)據(jù)共享方法,應(yīng)用程序可以指定需要共享的數(shù)據(jù),而其他應(yīng)用程序則可以在不知數(shù)據(jù)來源、路徑的情況下,對共享數(shù)據(jù)進(jìn)行查詢、添加、刪除和更新等操作。 在介紹DataForecastService的核心代碼前,(當(dāng)前天氣信息的類)(未來天氣信息的類)。:public class WidgetEntity { private ArrayListDetailDateWidget details = new ArrayListDetailDateWidget()。 //DetailDateWidget對象private Integer id。 //編號 private Integer updateMilis。 //更新頻率 private String city。 //城市 private String postalCode。 //城市標(biāo)記 private Long forecastDate。 //預(yù)報時間 private String condition。 //天氣情況 private Integer tempF。 //華氏溫度 private Integer tempC。 //攝氏溫度 private String humidity。 //濕度 private String icon。 //天氣圖標(biāo) private String windCondition。 //風(fēng)力風(fēng)向 private Long lastUpdateTime。 //最后更新時間 private Integer isConfigured。 //是否已設(shè)置 ......}從代碼中可以看出,除DetailDateWidget 的對象details, WidgetEntity類中有以上公有靜態(tài)屬性id、updateMilis 、updateMilis、postalCode、forecastDate、condition、tempF、tempC、humidity、icon、windCondition、lastUpdateTime、isConfigured,完全對應(yīng)數(shù)據(jù)庫中weather_widget的表。:public class DetailDateWidget { private Integer id。 //編號 private String dayOfWeek。 //星期 private Integer low。 //最低溫度 private Integer hight。 //最高溫度 private String icon。 //天氣圖標(biāo) private String condition。 //天氣情況 private Integer widgetId。 //組件id從代碼中可以看出,WidgetEntity類中有以上公有靜態(tài)屬性id、dayOfWeek、low、hight、icon、condition、widgetId,完全對應(yīng)數(shù)據(jù)庫中weather_forcast的表。在創(chuàng)建ForecastProvider時,首先需要使用數(shù)據(jù)庫、文件系統(tǒng)或網(wǎng)絡(luò)實現(xiàn)底層存儲功能,這里我們采用數(shù)據(jù)庫建立了數(shù)據(jù)庫設(shè)計中的兩張表,從而實現(xiàn)了底層存儲功能。然后在繼承ContentProvider的類中實現(xiàn)基本數(shù)據(jù)操作的接口函數(shù),包括添加、刪除、查找和更新等功能。下面就核心代碼進(jìn)行分析。 創(chuàng)建數(shù)據(jù)庫:DatabaseHelper類繼承SQLiteOpenHelper,SQLiteOpenHelper這個類可以輔助建立、更新和打開數(shù)據(jù)庫。DatabaseHelper在建立數(shù)據(jù)庫時,同時建立了兩個數(shù)據(jù)庫表weather_widget和weather_forcast,并對保存配置信息的表進(jìn)行了初始化。 URI設(shè)置:ContentProvider可以提供多個數(shù)據(jù)集,調(diào)用者使用URI(通用資源標(biāo)識符)對不同的數(shù)據(jù)集的數(shù)據(jù)進(jìn)行操作。URI用來地位任何遠(yuǎn)程或本地的可用資源。ContentProvider使用的URI語法結(jié)構(gòu)content://authority/data_path/id。因此,我們就需要先來對URI進(jìn)行設(shè)置。查詢功能:首先我們先了解一下SQLiteQueryBuilder的query()方法。query(SQLiteDatabase db, String[] projectionIn, String selection, String[] selectionArgs, String groupBy, String having, String sortOrder, String limit),參數(shù)說明如表1: 表41 數(shù)據(jù)庫參數(shù)表參 數(shù)說 明SQLiteDatabase db要查詢的數(shù)據(jù)庫實例String[] projectionIn是一個字符串?dāng)?shù)組,里邊的每一項代表了需要返回的列名String selection相當(dāng)于SQL語句中的where部分String[] selectionArgs是一個字符串?dāng)?shù)組,里邊的每一項依次替代在第三個參數(shù)中出現(xiàn)的問號(?)String groupBy相當(dāng)于SQL語句當(dāng)中的groupby部分String having相當(dāng)于SQL語句當(dāng)中的having部分String sortOrder描述是怎么進(jìn)行排序String limit相當(dāng)于SQL當(dāng)中的limit部分,控制返回的數(shù)據(jù)的個數(shù)添加、刪除、更新功能由于核心代碼類似,此處不一一贅述。添加功能:public Uri insert(Uri uri, ContentValues values) {} 刪除功能:public int delete(Uri uri, String selection, String[] selectionArgs) {}更新功能:public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {}類型匹配:增刪改查通過switch判斷,進(jìn)行不同的操作,因而還需要對關(guān)鍵字進(jìn)行類型匹配。核心代碼如下:/*getType()函數(shù)用來返回指定URI的MIME數(shù)據(jù)類型 * CONTENT_TYPE表示URI是多條數(shù)據(jù) * CONTENT_ITEM_TYPE表示是單條數(shù)據(jù) */ @Override public String getType(Uri uri) { // TODO Autogenerated method stub switch ((uri)) { case WIDGETS: return 。 case WIDGETS_ID: return 。 case WIDGETS_FORECASTS: return 。 case FORECASTS: return 。 case FORECASTS_ID: return 。 } throw new IllegalStateException()。 }//構(gòu)造無匹配方式的uriMatcher private static final UriMatcher uriMatcher = new UriMatcher( )。 //聲明了uriMatcher的匹配方式和
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1