Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android學習指南之二十一:Broadcast Receiver 的使用

Android學習指南之二十一:Broadcast Receiver 的使用

編輯:關於android開發

       如果說Activity和服務都是實干派,那麼將Broadcast Receiver廣播接收器組件定義為傾聽者的角色是再恰當不過了。在Android平台中,廣播接收器組件用於接收和響應系統廣播的消息。與服務組件一樣,廣播接收器組件也需要通過Activity組件與用戶進行交互。

       一、Broadcast Receiver簡介

       Android中的四大組件是Activity、Service、Broadcast Receiver和Content Provider。而Intent是一個對動作和行為的抽象描述,負責組件之間程序之間進行消息傳遞。那麼Broadcast Receiver組件就提供了一種把Intent作為一個消息廣播出去,由所有對其感興趣的程序對其作出反應的機制。

       二、Broadcast Receiver接收系統自帶的廣播

       我們做一個例子,功能是在系統啟動時播放一首音樂。

       1、建立一個項目Lesson21_BroadcastReceiver,拷貝一首音樂進res/raw目錄。

       2、建立HelloBroadcastReceiver.java 內容如下:

Java代碼
  1. package android.basic.lesson21;   
  2.   
  3. import android.content.BroadcastReceiver;   
  4. import android.content.Context;   
  5. import android.content.Intent;   
  6. import android.media.MediaPlayer;   
  7. import android.util.Log;   
  8.   
  9. public class HelloBroadReciever extends BroadcastReceiver {   
  10.   
  11.         //如果接收的事件發生   
  12.         @Override  
  13.         public void onReceive(Context context, Intent intent) {   
  14.                 //則輸出日志   
  15.                 Log.e("HelloBroadReciever", "BOOT_COMPLETED!!!!!!!!!!!!!!!!!!!!!!!!!");   
  16.                 Log.e("HelloBroadReciever", ""+intent.getAction());   
  17.   
  18.                 //則播放一首音樂   
  19.                 MediaPlayer.create(context, R.raw.babayetu).start();   
  20.         }   
  21. }  

       3、在AndroidManifest.xml中注冊此Receiver:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionname="1.0" android:versioncode="1" package="android.basic.lesson21">  
  3.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  4.         <activity android:label="@string/app_name" android:name=".MainBroadcastReceiver">  
  5.             <intent -filter="">  
  6.                 <action android:name="android.intent.action.MAIN">  
  7.                 <category android:name="android.intent.category.LAUNCHER">  
  8.             </category></action></intent>  
  9.         </activity>  
  10.     <!-- 定義Broadcast Receiver 指定監聽的Action -->  
  11.     <receiver android:name="HelloBroadReciever">  
  12.                       <intent -filter="">  
  13.                 <action android:name="android.intent.action.BOOT_COMPLETED">  
  14.             </action></intent>  
  15.     </receiver>  
  16. </application>
  17. </manifest>  

       4、發布程序,啟動模擬器,可以在Logcat中看到:

Android學習指南之二十一:Broadcast Receiver 的使用

       同時能聽到音樂播放的聲音。說明我們確實接收到了系統啟動的廣播事件,並做出了響應。

Android學習指南之二十一:Broadcast Receiver 的使用

       三、自定義廣播

       下面我們學習自己制作一個廣播。我們接著剛才的例子,繼續寫下去。

       5、在MainBroadcastReceiver.java中填寫如下代碼:

Java代碼
  1. package android.basic.lesson21;   
  2.   
  3. import android.app.Activity;   
  4. import android.content.Intent;   
  5. import android.os.Bundle;   
  6. import android.view.View;   
  7. import android.widget.Button;   
  8.   
  9. public class MainBroadcastReceiver extends Activity {   
  10.         /** Called when the activity is first created. */  
  11.         @Override  
  12.         public void onCreate(Bundle savedInstanceState) {   
  13.                 super.onCreate(savedInstanceState);   
  14.                 setContentView(R.layout.main);   
  15.   
  16.                 Button b1 = (Button) findViewById(R.id.Button01);   
  17.   
  18.                 b1.setOnClickListener(new View.OnClickListener() {   
  19.   
  20.                         @Override  
  21.                         public void onClick(View v) {   
  22.                                 //定義一個intent   
  23.                                 Intent intent = new Intent().setAction(   
  24.                                                 "android.basic.lesson21.Hello").putExtra("yaoyao",   
  25.                                                 "yaoyao is 189 days old ,27 weeks -- 2010-08-10");   
  26.                                 //廣播出去   
  27.                                 sendBroadcast(intent);   
  28.                         }   
  29.                 });   
  30.         }   
  31. }  

       6、更改HelloBroadReceiver.java內容如下:

Java代碼
  1. package android.basic.lesson21;   
  2.   
  3. import android.content.BroadcastReceiver;   
  4. import android.content.Context;   
  5. import android.content.Intent;   
  6. import android.media.MediaPlayer;   
  7. import android.util.Log;   
  8.   
  9. public class HelloBroadReciever extends BroadcastReceiver {   
  10.   
  11.         //如果接收的事件發生   
  12.         @Override  
  13.         public void onReceive(Context context, Intent intent) {   
  14.                 //對比Action決定輸出什麼信息   
  15.                 if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){   
  16.                         Log.e("HelloBroadReciever", "BOOT_COMPLETED !!!!!!!!!!!!!!!!!!!!!!!!!");   
  17.                 }   
  18.   
  19.                 if(intent.getAction().equals("android.basic.lesson21.Hello")){   
  20.                         Log.e("HelloBroadReciever", "Say Hello to Yaoyao !!!!!!!!!!!!!!!!!!!!!!!!!");   
  21.                         Log.e("HelloBroadReciever", intent.getStringExtra("yaoyao"));   
  22.                 }   
  23.   
  24.                 //播放一首音樂   
  25.                 MediaPlayer.create(context, R.raw.babayetu).start();   
  26.         }   
  27. }  

       7、更改AndroidManifest.xml內容如下:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.basic.lesson21" android:versionname="1.0" android:versioncode="1">  
  3.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  4.         <activity android:label="@string/app_name" android:name=".MainBroadcastReceiver">  
  5.             <intent -filter="">  
  6.                 <action android:name="android.intent.action.MAIN">  
  7.                 <category android:name="android.intent.category.LAUNCHER">  
  8.             </category></action></intent>  
  9.         </activity>  
  10.     <!-- 定義Broadcast Receiver 指定監聽的Action 這裡我們的接收器,接收了2個Action,一個系統的一個我們自定義的  -->  
  11.     <receiver android:name="HelloBroadReciever">  
  12.                       <intent -filter="">  
  13.                 <action android:name="android.intent.action.BOOT_COMPLETED">  
  14.             </action></intent>  
  15.             <intent -filter="">  
  16.                 <action android:name="android.basic.lesson21.HelloYaoYao">  
  17.             </action></intent>  
  18.   
  19.     </receiver>  
  20. </application>  
  21. <uses -sdk="" android:minsdkversion="8">  
  22. </uses>
  23. </manifest>   

       8、運行程序,點擊按鈕,查看LogCat,聽聽聲音。

Android學習指南之二十一:Broadcast Receiver 的使用

Android學習指南之二十一:Broadcast Receiver 的使用

       好了,關於Broadcast Receiver的內容就講到這裡了,希望大家能學習鞏固好。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved