Android开发之关机广播

本文介绍如何在Android应用中通过监听关机广播来自动计算设备从开始测试到低电量关机的续航时间。文章详细解释了在AndroidManifest.xml中添加监听广播权限和注册监听器的过程,以及如何编写BroadcastReceiver子类来接收并处理关机广播。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前测试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+"";
    }
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值