任務(wù)十九、廣播接收程序_第1頁
任務(wù)十九、廣播接收程序_第2頁
任務(wù)十九、廣播接收程序_第3頁
任務(wù)十九、廣播接收程序_第4頁
任務(wù)十九、廣播接收程序_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、任務(wù)十九、廣播接收程序任務(wù)十九、廣播接收程序本章任務(wù)本章任務(wù)本章相關(guān)詞匯(藍(lán)色為關(guān)鍵字)本章相關(guān)詞匯(藍(lán)色為關(guān)鍵字)單 詞說 明broadcast廣播receive接收目標(biāo)l掌握發(fā)送和接收廣播消息的方法什么是廣播?什么是廣播?l每個(gè)廣播電臺(tái)播放的內(nèi)容都不相同。接受廣播時(shí)廣播(發(fā)送方)并不在意我們(接收方)接收到廣播時(shí)如何處理。l好比我們收聽交通電臺(tái)的廣播,電臺(tái)中告訴我們現(xiàn)在在交通狀況如何,但它并不關(guān)心我們接收到廣播時(shí)做如何做出處理,這不是廣播應(yīng)該關(guān)心的問題。1.1 廣播消息廣播消息l廣播消息lIntent的另一種用途是發(fā)送廣播消息l應(yīng)用程序和Android系統(tǒng)都可以使用Intent發(fā)送廣播消息

2、l廣播消息的內(nèi)容可以是與應(yīng)用程序密切相關(guān)的數(shù)據(jù)信息,也可以是Android的系統(tǒng)信息,例如網(wǎng)絡(luò)連接變化、電池電量變化、接收到短信和系統(tǒng)設(shè)置變化等等l如果應(yīng)用程序注冊了BroadcastReceiver,則可以接收到指定的廣播消息1.1 廣播消息廣播消息l廣播信息的使用方法l創(chuàng)建一個(gè)Intentl注意:在構(gòu)造Intent時(shí)必須用一個(gè)全局唯一的字符串標(biāo)識(shí)其要執(zhí)行的動(dòng)作,通常使用應(yīng)用程序包的名稱l調(diào)用sendBroadcast()函數(shù),就可把Intent攜帶的消息廣播出去l如果要在Intent傳遞額外數(shù)據(jù),可以用Intent的putExtra()方法1.1 廣播消息廣播消息l利用Intent發(fā)送廣播

3、消息,并添加了額外的數(shù)據(jù),然后調(diào)用sendBroadcast()發(fā)生了廣播消息的代碼1.String UNIQUE_STRING = “com.newer.BroadcastReceiverDemo;2.Intent intent = new Intent(UNIQUE_STRING);3.intent.putExtra(key1, value1);4.intent.putExtra(key2, value2);5.sendBroadcast(intent);1.1 廣播消息廣播消息lBroadcastReceiverlBroadcastReceiver用于監(jiān)聽廣播消息l可以在AndroidM

4、anifest.xml文件或在代碼中注冊一個(gè)BroadcastReceiver,并在其中使用Intent 過濾器指定要處理的廣播消息l創(chuàng)建BroadcastReceiver需繼承BroadcastReceiver類,并重載onReceive()方法。代碼如下1.public class MyBroadcastReceiver extends BroadcastReceiver 2.Override3.public void onReceive(Context context, Intent intent) 4./TODO: React to the Intent received.5.6.1.

5、1 廣播消息廣播消息lBroadcastReceiver的應(yīng)用程序不需要一直運(yùn)行,當(dāng)Android系統(tǒng)接收到與之匹配的廣播消息時(shí),會(huì)自動(dòng)啟動(dòng)此BroadcastReceiverl基于以上的特征,BroadcastReceiver適合做一些資源管理的工作l在BroadcastReceiver接收到與之匹配的廣播消息后,onReceive()方法會(huì)被調(diào)用lonReceive()方法必須要在5秒鐘執(zhí)行完畢,否則Android系統(tǒng)會(huì)認(rèn)為該組件失去響應(yīng),并提示用戶強(qiáng)行關(guān)閉該組件1.1 廣播消息1.BroadcastReceiverDemo示例說明了如何在應(yīng)用程序中注冊BroadcastReceiver,

6、并接收指定類型的廣播消息 在點(diǎn)擊“發(fā)生廣播消息”按鈕后,EditText控件中內(nèi)容將以廣播消息的形式發(fā)送出去, 示例內(nèi)部的BroadcastReceiver將接收這個(gè)廣播消息,并顯示在用戶界面的下方1.1 廣播消息廣播消息lBroadcastReceiverDemo.java文件中包含發(fā)送廣播消息的代碼,其關(guān)鍵代碼如下l第3行代碼創(chuàng)建Intent,將com.newer.BroadcastReceiverDem作為識(shí)別廣播消息的字符串標(biāo)識(shí)l第4行代碼添加了額外信息l第5行代碼調(diào)用sendBroadcast()函數(shù)發(fā)送廣播消息1.button.setOnClickListener(new OnCl

7、ickListener()2.public void onClick(View view)3.Intent intent = new Intent(“com.newer.BroadcastReceiverDemo);4.intent.putExtra(message, entryText.getText().toString();5.sendBroadcast(intent);6.7.);1.1 廣播消息廣播消息l為了能夠使應(yīng)用程序中的BroadcastReceiver接收指定的廣播消息,首先要在AndroidManifest.xml文件中添加Intent過濾器,聲明BroadcastRece

8、iver可以接收的廣播消息lAndroidManifest.xml文件的完整代碼如下.2.1.1 廣播消息廣播消息l第14行代碼中創(chuàng)建了一個(gè)節(jié)點(diǎn)l在第15行中聲明了Intent過濾器的動(dòng)作為“com.newer.BroadcastReceiverDemo”,這與BroadcastReceiverDemo.java文件中Intent的動(dòng)作相一致,表明這個(gè)BroadcastReceiver可以接收動(dòng)作為“com.newer.BroadcastReceiverDemo”的廣播消息13. 14.15. 16.17. 18. 19. 20. 21. 1.1 廣播消息廣播消

9、息lMyBroadcastReceiver.java文件創(chuàng)建了一個(gè)自定義的BroadcastReceiver,其核心代碼如下l第1行代碼首先繼承了BroadcastReceiver類l第3行代碼重載了onReveive()函數(shù)。當(dāng)接收到AndroidManifest.xml文件定義的廣播消息后,程序?qū)⒆詣?dòng)調(diào)用onReveive()函數(shù)1.public class MyBroadcastReceiver extends BroadcastReceiver 2.Override3.public void onReceive(Context context, Intent intent) 4.Str

10、ing msg = intent.getStringExtra(message);5.Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 廣播消息廣播消息l第4行代碼通過調(diào)用getStringExtra()函數(shù),從Intent中獲取標(biāo)識(shí)為message的字符串?dāng)?shù)據(jù),并使用Toast將信息顯示在屏幕上l第5行代碼的Toast是一個(gè)顯示提示信息的類,調(diào)用makeText()函數(shù)可將提示信息短時(shí)間的浮現(xiàn)在用戶界面之上makeText()函數(shù)的第1個(gè)參數(shù)是上下文信息第2個(gè)參數(shù)是需要顯示的提示信息第3個(gè)參數(shù)是顯示的時(shí)間,Toas

11、t.LENGTH_SHORT表示短時(shí)間顯示,Toast.LENGTH_LONG表示長時(shí)間顯示;最后調(diào)用show()方法將提示信息實(shí)際顯示在界面之上系統(tǒng)廣播接收器系統(tǒng)廣播接收器landroid.os.BatteryManagerlregisterReceiver()方法。第1個(gè)參數(shù),設(shè)置BroadcastReceiver實(shí)例第2個(gè)參數(shù),設(shè)置注冊Intent.ACTION_BATTERY_CHANGED處理的IntentFilter實(shí)例。l在BroadcastReceiver的onReceive()事件,接收到電池信息lIntent.ACTION_BATTERY_CHANGED,包括下面的信息?!?/p>

12、status”(int類型)狀態(tài),定義值是BatteryManager.BATTERY_STATUS_XXX?!癶ealth”(int類型)健康,定義值是BatteryManager.BATTERY_HEALTH_XXX。“present”(boolean類型)“l(fā)evel”(int類型)電池剩余容量“scale”(int類型)電池最大值。通常為100。“icon-small”(int類型)圖標(biāo)ID?!皃lugged”(int類型)連接的電源插座,定義值是BatteryManager.BATTERY_PLUGGED_XXX?!皏oltage”(int類型)mV?!皌emperature”(in

13、t類型)溫度,0.1度單位。例如 表示197的時(shí)候,意思為19.7度。 “technology”(String類型)電池類型,例如,Li-ion等等。l系統(tǒng)廣播可以捕捉系統(tǒng)發(fā)出的行為有: 1.“vider.Telephony.SMS_RECEIVED” 收到短信 l2. Intent.ACTION_BATTERY_CHANGED 剩余的手機(jī)電池量 l3. Intent.ACTION_MEDIA_MOUNTED SD卡成功掛載 l4. Intent.ACTION_MEDIA_UNMOUNTED SD卡未掛載 l5. Intent.ACTION_NEW_OUTGOING_CA

14、LL撥打電話 l6. Intent.ACTION_PACKAGE_ADDED執(zhí)行安裝l 7. Intent.ACTION_PACKAGE_REMOVED 執(zhí)行卸載 提問提問lReceiver是接收誰發(fā)出的消息?lReceiver對(duì)象接收的消息本質(zhì)上是Intent,系統(tǒng)內(nèi)部已經(jīng)定義了很多廣播消息類型,例如電池電量低、屏幕開啟或者關(guān)閉、系統(tǒng)引導(dǎo)完成等,系統(tǒng)內(nèi)部廣播這些消息使用的也是sendBroadcast()。l多數(shù)應(yīng)用中,Receiver接收的是系統(tǒng)發(fā)出的消息。l如何發(fā)送廣播消息啟動(dòng)相應(yīng)的Receiver對(duì)象l如第一個(gè)問題所述,系統(tǒng)使用sendBroadcast()發(fā)送廣播,應(yīng)用程序也可以使用該方法發(fā)送廣播。當(dāng)系統(tǒng)發(fā)送這些廣播后,同樣經(jīng)過Intent匹配找到相應(yīng)的Receiver對(duì)象并啟動(dòng)。這與Activity或者Servcie一樣。l如何得知系統(tǒng)都有哪些內(nèi)置的廣播消息類型?l系統(tǒng)內(nèi)部定義的廣播消息,可以查閱官方文檔:lC:

溫馨提示

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

評(píng)論

0/150

提交評(píng)論