1. 程式人生 > >Android如何監聽開機廣播和關機廣播

Android如何監聽開機廣播和關機廣播

專案背景:在錄影過程中,遇到關機事件,想要監聽關機操作,從而停止錄影,退出程式。

一、監聽開機廣播

Android系統啟動完成後會發出啟動完成廣播(android.intent.action.BOOT_COMPLETED),所有註冊了接收啟動完成廣播的接收器(BroadcastReceiver)都會收到此廣播。

 1、在AndroidManifest.xml檔案裡新增授予應用程式訪問系統開機事件的許可權

  1. <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

 2、編寫系統發出的開機啟動完成廣播的接收器。自定類繼承BroadcastReceiver類,程式碼如下:

  1. publicclass BootBroadcastReceiver extends BroadcastReceiver {  
  2.     privatestaticfinal String TAG = "BootBroadcastReceiver";   
  3.     privatestaticfinal String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";    
  4.     @Override
  5.     publicvoid onReceive(Context context, Intent intent) {    
  6.         if
     (intent.getAction().equals(ACTION_BOOT)) { //開機啟動完成後,要做的事情 
  7.             Log.i(TAG, "BootBroadcastReceiver onReceive(), Do thing!");  
  8.         }  
  9.     }  
 3、在AndroidManifest.xml檔案裡註冊廣播接收器
  1. <receiverandroid:name="com.android.test.BootBroadcastReceiver">
  2.          <intent-filter>
  3.              <
    actionandroid:name="android.intent.action.BOOT_COMPLETED"/>
  4.              <categoryandroid:name="android.intent.category.HOME"/>
  5.          </intent-filter>
  6.      </receiver>

二、監聽關機廣播

    Android系統提供了與開機廣播對應的關機廣播,在系統即將關閉時發出此廣播。

       1、編寫在系統即將關閉時發出的廣播的接收器。自定類繼承BroadcastReceiver類,程式碼如下:

  1. publicclass ShutdownBroadcastReceiver extends BroadcastReceiver {  
  2.     privatestaticfinal String TAG = "ShutdownBroadcastReceiver";       
  3.     privatestaticfinal String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";  
  4.     @Override
  5.     publicvoid onReceive(Context context, Intent intent) {  //即將關機時,要做的事情          
  6.         if (intent.getAction().equals(ACTION_SHUTDOWN)) {  
  7.             Log.i(TAG, "ShutdownBroadcastReceiver onReceive(), Do thing!");  
  8.         }  
  9.     }  
 2、在AndroidManifest.xml檔案裡註冊廣播接收器
  1. <receiverandroid:name="com.android.test.ShutdownBroadcastReceiver">
  2.          <intent-filter>
  3.              <actionandroid:name="android.intent.action.ACTION_SHUTDOWN"/>
  4.              <categoryandroid:name="android.intent.category.HOME"/>
  5.          </intent-filter>
  6.      </receiver>
注:開機關機操作有三種方式:

1、重新啟動,關閉後立刻又開機。

     開機啟動完成和即將關機時發出的廣播,都可以接收到。

2、單純關機操作

     即將關機時發出的廣播接收不到。

3、單純開機操作

     開機啟動完成發出的廣播時可以接收到的。