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

下載本文檔

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

文檔簡(jiǎn)介

任務(wù)十九廣播接收程序第1頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月本章相關(guān)詞匯(藍(lán)色為關(guān)鍵字)單詞說(shuō)明broadcast廣播receive接收第2頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月目標(biāo)掌握發(fā)送和接收廣播消息的方法第3頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月什么是廣播?第4頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月每個(gè)廣播電臺(tái)播放的內(nèi)容都不相同。接受廣播時(shí)廣播(發(fā)送方)并不在意我們(接收方)接收到廣播時(shí)如何處理。好比我們收聽(tīng)交通電臺(tái)的廣播,電臺(tái)中告訴我們現(xiàn)在在交通狀況如何,但它并不關(guān)心我們接收到廣播時(shí)做如何做出處理,這不是廣播應(yīng)該關(guān)心的問(wèn)題。第5頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息廣播消息Intent的另一種用途是發(fā)送廣播消息應(yīng)用程序和Android系統(tǒng)都可以使用Intent發(fā)送廣播消息廣播消息的內(nèi)容可以是與應(yīng)用程序密切相關(guān)的數(shù)據(jù)信息,也可以是Android的系統(tǒng)信息,例如網(wǎng)絡(luò)連接變化、電池電量變化、接收到短信和系統(tǒng)設(shè)置變化等等如果應(yīng)用程序注冊(cè)了BroadcastReceiver,則可以接收到指定的廣播消息第6頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息廣播信息的使用方法創(chuàng)建一個(gè)Intent注意:在構(gòu)造Intent時(shí)必須用一個(gè)全局唯一的字符串標(biāo)識(shí)其要執(zhí)行的動(dòng)作,通常使用應(yīng)用程序包的名稱(chēng)調(diào)用sendBroadcast()函數(shù),就可把Intent攜帶的消息廣播出去如果要在Intent傳遞額外數(shù)據(jù),可以用Intent的putExtra()方法第7頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息利用Intent發(fā)送廣播消息,并添加了額外的數(shù)據(jù),然后調(diào)用sendBroadcast()發(fā)生了廣播消息的代碼StringUNIQUE_STRING=“com.newer.BroadcastReceiverDemo";Intentintent=newIntent(UNIQUE_STRING);intent.putExtra("key1","value1");intent.putExtra("key2","value2");sendBroadcast(intent);第8頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息BroadcastReceiverBroadcastReceiver用于監(jiān)聽(tīng)廣播消息可以在AndroidManifest.xml文件或在代碼中注冊(cè)一個(gè)BroadcastReceiver,并在其中使用Intent過(guò)濾器指定要處理的廣播消息創(chuàng)建BroadcastReceiver需繼承BroadcastReceiver類(lèi),并重載onReceive()方法。代碼如下publicclassMyBroadcastReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ //TODO:ReacttotheIntentreceived. }}第9頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息BroadcastReceiver的應(yīng)用程序不需要一直運(yùn)行,當(dāng)Android系統(tǒng)接收到與之匹配的廣播消息時(shí),會(huì)自動(dòng)啟動(dòng)此BroadcastReceiver基于以上的特征,BroadcastReceiver適合做一些資源管理的工作在BroadcastReceiver接收到與之匹配的廣播消息后,onReceive()方法會(huì)被調(diào)用onReceive()方法必須要在5秒鐘執(zhí)行完畢,否則Android系統(tǒng)會(huì)認(rèn)為該組件失去響應(yīng),并提示用戶強(qiáng)行關(guān)閉該組件第10頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息BroadcastReceiverDemo示例說(shuō)明了如何在應(yīng)用程序中注冊(cè)BroadcastReceiver,并接收指定類(lèi)型的廣播消息在點(diǎn)擊“發(fā)生廣播消息”按鈕后,EditText控件中內(nèi)容將以廣播消息的形式發(fā)送出去,示例內(nèi)部的BroadcastReceiver將接收這個(gè)廣播消息,并顯示在用戶界面的下方第11頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息BroadcastReceiverDemo.java文件中包含發(fā)送廣播消息的代碼,其關(guān)鍵代碼如下第3行代碼創(chuàng)建Intent,將com.newer.BroadcastReceiverDem作為識(shí)別廣播消息的字符串標(biāo)識(shí)第4行代碼添加了額外信息第5行代碼調(diào)用sendBroadcast()函數(shù)發(fā)送廣播消息button.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewview){ Intentintent=newIntent(“com.newer.BroadcastReceiverDemo"); intent.putExtra("message",entryText.getText().toString()); sendBroadcast(intent); }});第12頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息為了能夠使應(yīng)用程序中的BroadcastReceiver接收指定的廣播消息,首先要在AndroidManifest.xml文件中添加Intent過(guò)濾器,聲明BroadcastReceiver可以接收的廣播消息AndroidManifest.xml文件的完整代碼如下<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"

package="edu.hrbeu.BroadcastReceiverDemo"

android:versionCode="1"

android:versionName="1.0">

<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">

<activityandroid:name=".BroadcastReceiverDemo" android:label="@string/app_name"> <intent-filter>

<actionandroid:name="ent.action.MAIN"/>

<categoryandroid:name="ent.category.LAUNCHER"/>

</intent-filter>第13頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息第14行代碼中創(chuàng)建了一個(gè)<receiver>節(jié)點(diǎn)在第15行中聲明了Intent過(guò)濾器的動(dòng)作為“com.newer.BroadcastReceiverDemo”,這與BroadcastReceiverDemo.java文件中Intent的動(dòng)作相一致,表明這個(gè)BroadcastReceiver可以接收動(dòng)作為“com.newer.BroadcastReceiverDemo”的廣播消息13.

</activity>14. <receiverandroid:name=".MyBroadcastReceiver">15. <intent-filter>16. <actionandroid:name=com.newer.BroadcastReceiverDemo"/>17. </intent-filter>18. </receiver>19. </application>20. <uses-sdkandroid:minSdkVersion="3"/>21.</manifest>第14頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息MyBroadcastReceiver.java文件創(chuàng)建了一個(gè)自定義的BroadcastReceiver,其核心代碼如下第1行代碼首先繼承了BroadcastReceiver類(lèi)第3行代碼重載了onReveive()函數(shù)。當(dāng)接收到AndroidManifest.xml文件定義的廣播消息后,程序?qū)⒆詣?dòng)調(diào)用onReveive()函數(shù)publicclassMyBroadcastReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ Stringmsg=intent.getStringExtra("message"); Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); }}第15頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月1.1

廣播消息第4行代碼通過(guò)調(diào)用getStringExtra()函數(shù),從Intent中獲取標(biāo)識(shí)為message的字符串?dāng)?shù)據(jù),并使用Toast將信息顯示在屏幕上第5行代碼的Toast是一個(gè)顯示提示信息的類(lèi),調(diào)用makeText()函數(shù)可將提示信息短時(shí)間的浮現(xiàn)在用戶界面之上makeText()函數(shù)的第1個(gè)參數(shù)是上下文信息第2個(gè)參數(shù)是需要顯示的提示信息第3個(gè)參數(shù)是顯示的時(shí)間,Toast.LENGTH_SHORT表示短時(shí)間顯示,Toast.LENGTH_LONG表示長(zhǎng)時(shí)間顯示;最后調(diào)用show()方法將提示信息實(shí)際顯示在界面之上第16頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月系統(tǒng)廣播接收器android.os.BatteryManager第17頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月registerReceiver()方法。

第1個(gè)參數(shù),設(shè)置BroadcastReceiver實(shí)例

第2個(gè)參數(shù),設(shè)置注冊(cè)Intent.ACTION_BATTERY_CHANGED處理的IntentFilter實(shí)例。第18頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月在BroadcastReceiver的onReceive()事件,接收到電池信息Intent.ACTION_BATTERY_CHANGED,包括下面的信息。

“status”(int類(lèi)型)…狀態(tài),定義值是第19頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月BatteryManager.BATTERY_STATUS_XXX。

“health”(int類(lèi)型)…健康,定義值是BatteryManager.BATTERY_HEALTH_XXX。

“present”(boolean類(lèi)型)

“l(fā)evel”(int類(lèi)型)…電池剩余容量

“scale”(int類(lèi)型)…電池最大值。通常為100。

“icon-small”(int類(lèi)型)…圖標(biāo)ID。

“plugged”(int類(lèi)型)…連接的電源插座,定義值是BatteryManager.BATTERY_PLUGGED_XXX。

“voltage”(int類(lèi)型)…mV。

“temperature”(int類(lèi)型)…溫度,0.1度單位。例如表示197的時(shí)候,意思為19.7度。

“technology”(String類(lèi)型)…電池類(lèi)型,例如,Li-ion等等。第20頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月系統(tǒng)廣播可以捕捉系統(tǒng)發(fā)出的行為有:

1.“vider.Telephony.SMS_RECEIVED”收到短信

2.Intent.ACTION_BATTERY_CHANGED剩余的手機(jī)電池量

3.Intent.ACTION_MEDIA_MOUNTEDSD卡成功掛載

第21頁(yè),課件共23頁(yè),創(chuàng)作于2023年2月4.Intent.ACTION_MEDIA_UNMOUNTEDSD卡未掛載

5.Intent.ACTION_NEW_OUTGOING_CALL撥打電話

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論