Android 获取应用运行时长

 做了一个应用运行时间接口,首先将自己的service定义完成,自定义service流程在前面的文章里,方法实现是在

frameworks/base/services/core/java/com/android/server/customized/CustomizedService.java里,代码如下:

import android.app.usage.UsageStats;
import android.app.usage.UsageStatsManager;
import java.util.Map;
import java.lang.System;
import java.util.Calendar;
import java.text.DateFormat;
import android.text.format.DateUtils;

    
    private UsageStatsManager mUsm;
    private static final long USAGE_STATS_PERIOD = 1000 * 60 * 60 * 24 * 14;
    private List mStats;


     mUsm = (UsageStatsManager) mContext.getSystemService(Context.USAGE_STATS_SERVICE); //初始化UsageStatsManager 

 /*
  *  获取所有应用运行时间
  */
    public String getAppTimeUsageInfo(){
        long jh = Binder.clearCallingIdentity();
        JSONArray json=new JSONArray();
        mStats = getUsageList();
        if(mStats.size()!=0 && mStats!=null){
            for(int i=0;i getUsageList() {
        long jh = Binder.clearCallingIdentity();
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_YEAR, -5);
        final List stats =mUsm.queryUsageStats(UsageStatsManager.INTERVAL_BEST,
        calendar.getTimeInMillis(), System.currentTimeMillis());
        Binder.restoreCallingIdentity(jh);
        return stats;
    }

这个方法获取的是系统所有应用的运行信息,如果需要单个应用的,可以通过包名进行过滤,

你可能感兴趣的:(Android 获取应用运行时长)