Android開發之關機廣播

之前測試Android續航的時候,需要自動計算開始跑測試到低電關機的續航時長,這時候就要用到關機廣播了。主要的思路是,開始測試時,記錄開始測試的時間點t0,在收到關機廣播的時候,記錄時間t1,計算t1-t0後,得出續航時長。

這個時候,就需要用到關機廣播了。

1、首先,需要在AndroidMenifest.xml文件中給apk添加監聽廣播的權限

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

2、隨後,需要在AndroidMenifest.xml文件中註冊一下監聽器

<receiver android:name="com.meitutest.testrom.broadcast.ShutdownBroadcast">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_SHUTDOWN" />
            </intent-filter>
</receiver>

3、最後,編寫一個繼承BroadcastReceiver的類,接收系統的關閉廣播,並在方法中寫我們要做的事情。

package com.meitutest.testrom.broadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import com.meitutest.testrom.auto.TestReport;

import java.text.SimpleDateFormat;

public class ShutdownBroadcast extends BroadcastReceiver {
    public static String xsl_path="";
    public static int sumSleeptime=0;
    public static long startTime=0;
    public static String current_item_string="";
    private SimpleDateFormat sDateFormat = new SimpleDateFormat("HH:mm:ss");

    @Override
    public void onReceive(Context context, Intent intent) {
        //接收到廣播後,需要做的事情
        String timeValue=getDatePoor(startTime,System.currentTimeMillis());
        TestReport.i("ShutdownBroadcast",timeValue+"(含休眠"+sumSleeptime+"min)");
        ExcelUtil.writeSheetAndCellContent(xsl_path,new String[]{
                sDateFormat.format(new java.util.Date()),
                current_item_string+"(自動關機)",
                "續航:",
                timeValue+"(含休眠"+sumSleeptime+"min)"});
    }
    private  String getDatePoor(long startDate, long nowDate) {
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        long ns = 1000;
        // 獲得兩個時間的毫秒時間差異
        long diff = nowDate - startDate;
//        long diff = startDate - nowDate;
        // 計算差多少天
        long day = diff / nd;
        // 計算差多少小時
        long hour = diff % nd / nh;
        // 計算差多少分鐘
        long min = diff % nd % nh / nm;
        // 計算差多少秒//輸出結果
        long sec = diff % nd % nh % nm / ns;
//        return day + "天" + hour + "小時" + min + "分鐘"+sec+"秒";
        String hourString = "",minString = "",secString = "";
        if (hour<10){
            hourString="0"+hour;
        }else{
            hourString=""+hour;
        }
        if (min<10){
            minString="0"+min;
        }else{
            minString=""+min;
        }
        if (sec<10){
            secString="0"+sec;
        }else{
            secString=""+sec;
        }
        return  hourString + ":" + minString + ":"+secString+"";
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章