精华内容
下载资源
问答
  • 日常生活中,大多数人有轻微甚至严重的「手机依赖症」,我们无时无刻...盘哥今天就为小伙伴们分享一款可以统计手机使用的各项数据,还可以强制锁定手机的软件,让我们不再做手机控。 OffScreen 安卓/iOS/iPad/watch

    日常生活中,大多数人有轻微甚至严重的「手机依赖症」,我们无时无刻盯着手机,不断地一边走路一边刷着朋友圈微博和抖音等,没日没夜打游戏,通宵追着各种电视剧,被各种消息通知频繁地干扰,从早上睁开眼关掉闹钟开始,到晚上放下手机关掉台灯,在手机上我们花了太多时间,甚至有时候即使我们没有收到消息,也会时不时看下手机。你有没有算过每天花在手机上的时间?

    盘哥今天就为小伙伴们分享一款可以统计手机使用的各项数据,还可以强制锁定手机的软件,让我们不再做手机控。

    OffScreen

    安卓/iOS/iPad/watch

    OffScreen 是一个可以从人性化的维度来分析手机的使用时间,通过专注工具来帮助集中注意力,防止沉迷手机,不做手机控。软件支持安卓、iOS、iPad、Apple Watch。为了方便介绍演示,盘哥这里以手机端为例。

    图片

    1、权限设置

    在第一次使用前,我们需要对软件进行一些基本的授权,授予使用情况数据、在其他应用上层显示、保持后台等。

    图片

    2、手机使用数据统计

    授权完成后,我们就能够查看手机的各项使用数据了,可以清晰的看到,盘哥今天已经使用了4小时手机了,而且拿起了53次,看到这个数字的时候,真的惊到我了,最长使用1小时2分钟,昨晚2点才放下手机,今天8点又拿起了手机。这些数据,不看的时候不觉得有什么,突然统计一看,还是觉得很惊讶的。从这些数据,我们就可以针对性的改正作息和手机使用时间了。同时软件支持设置一个额度,比如拿起最大次数、使用最长时间。当达到这个额度就会自动锁定屏幕。

    图片

    我们还可以点击每一个数据板块,查看详情,比如盘哥查看拿起放下的时间,精确的记录到了多少秒,不得不佩服。记得有小伙伴问过盘哥,有没有可以查看手机上某个软件的使用时间?以后就可以用它查看了,盘哥昨晚2点才睡的原因就是在看一个比赛。

    图片

    3、专注模式

    现在这个社会,能够影响我们的因素太多了,手机能够占大部分。很难能够安安静静的专注去做一件事。那么可以在这里添加专注的一件事儿,然后设置时长,就可以专注的去做一件事儿不会被打扰了,你也可以设置喜欢的白噪音,让你更能够沉浸在做事中。

    图片

    当然,肯定会有那么一两个消息是你不能不回的,比如领导的消息、女朋友的消息,可以将需要提醒的应用添加到白名单,有消息就会提醒啦。同时,如果你的自控能力真的很弱,真的很难管住自己。那么就把专注模式设置成严格,这个时候,软件会一直保持在专注界面,只允许你翻转手机,其他啥也干不了。

    图片

    软件还有很多比较实用的功能,盘哥这里就不一一介绍了,需要的可以慢慢研究。有时候我们真的得逼着自己做某件事,否则就是既没做好事又没玩儿好。

    文章首发于公众H:软件盘点,发送【手机控】下载软件

    展开全文
  • UseTimeStatisticAndroid 系统中统计各个app的使用时长以及使用次数Demo说明主体部分主界面为列表,显示的是按天查询的各个app的使用情况。列表上可以选择日期,但仅可以选择最近7天,因为系统提供的可查询数据只有...

    UseTimeStatistic

    Android 系统中统计各个app的使用时长以及使用次数

    32da9dcf6bbb3c43aa253b772bdfd916.png

    Demo说明

    主体部分

    主界面为列表,显示的是按天查询的各个app的使用情况。列表上可以选择日期,但仅可以选择最近7天,因为系统提供的可查询数据只有最近7天。

    列表按照app的使用时长进行排序,每一列表项分别显示的是:

    1.根据系统记录的数据自行统计的app使用次数

    2.系统统计的app使用时长

    3.根据系统记录的数据自行统计的app使用时长

    头部分

    此demo提供的一些辅助功能,包括这三个按钮,从左到右依次是,数据写入按钮,全部详情按钮,设置按钮。

    1.设置按钮

    获取系统记录的app使用信息需要一定权限,此按钮可进入权限设置界面,进行权限设置。

    2.全部详情按钮

    列表中记录的主要是按照app分类之后的使用详情,此按钮显示当天按照时间顺序,app的使用情况。

    3.数据写入按钮

    此功能用于进行数据对比,验证误差。

    CSDN-具体可参考系列文章:

    简书-具体可参考系列文章:

    展开全文
  • 先看效果图应用使用时长统计截图源码地址Step1 授权必须确保设备的Android版本>=Android5.1(v22),少部分Android5.0(v21)可以使用UsageStatsManager在AndroidManifest.xml文件中添加权限说明,这是一个system级别...

    先看效果图

    2a3321280735

    应用使用时长统计截图

    源码地址

    Step1 授权

    必须确保设备的Android版本>=Android5.1(v22),少部分Android5.0(v21)可以使用UsageStatsManager

    在AndroidManifest.xml文件中添加权限说明,这是一个system级别的权限,加上tools:ignore="ProtectedPermissions"可以屏蔽调AS的红线(强逼症作怪)

    android:name="android.permission.PACKAGE_USAGE_STATS"

    tools:ignore="ProtectedPermissions" />

    判断是否可以使用AppUsage功能

    public static boolean hasAppUsagePermission(Context context) {

    UsageStatsManager usageStatsManager = null;

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {

    usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);

    }

    if (usageStatsManager == null) {

    return false;

    }

    long currentTime = System.currentTimeMillis();

    // try to get app usage state in last 2 min

    List stats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, currentTime - 2 * 60 * 1000, currentTime);

    return JListKit.isNotEmpty(stats);

    }

    打开授权页面

    public static void requestAppUsagePermission(Context context) {

    Intent intent = new Intent(android.provider.Settings.ACTION_USAGE_ACCESS_SETTINGS);

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    try {

    context.startActivity(intent);

    } catch (ActivityNotFoundException e) {

    Log.i(TAG, "Start usage access settings activity fail!");

    }

    }

    Step2 根据获取APP使用情况列表

    根据时间范围获取应用使用情况

    private void getAppUsage(long beginTime, long endTime) {

    String fmt = "yyyy-MM-dd HH:mm:ss";

    mHolder.tvTimeRange.setText(String.format("(%s - %s)",

    JDateKit.timeToDate(fmt, beginTime),

    JDateKit.timeToDate(fmt, endTime)));

    // setTitle("数据分析中...");

    showLoading("数据分析中...");

    // a task can be executed only once,init is required every time

    mLoadAppUsageTask = new LoadAppUsageTask(beginTime, endTime, list -> {

    mItems = list;

    initAdapter();

    });

    mLoadAppUsageTask.execute();

    }

    LoadAppUsageTask

    /**

    * Created by ZengCS on 2019/5/30.

    * E-mail:zengcs@vip.qq.com

    * Add:成都市天府软件园E3

    * 加载应用使用情况 Task

    */

    public class LoadAppUsageTask extends AsyncTask> {

    private static final String TAG = "LoadAppUsageTask";

    private Callback mCallback;

    private long beginTime, endTime;

    public LoadAppUsageTask(long beginTime, long endTime, Callback mCallback) {

    this.beginTime = beginTime;

    this.endTime = endTime;

    this.mCallback = mCallback;

    mPackageManager = BaseApplication.getApplication().getPackageManager();

    }

    // 方法1:onPreExecute()

    // 作用:执行 线程任务前的操作

    @Override

    protected void onPreExecute() {

    // 执行前显示提示

    Log.d(TAG, "********** 开始获取应用使用情况 **********");

    }

    // 方法2:doInBackground()

    // 作用:接收输入参数、执行任务中的耗时操作、返回 线程任务执行的结果

    // 此处通过计算从而模拟“加载进度”的情况

    @Override

    protected ArrayList doInBackground(Void... voids) {

    return readAppUsageList();

    }

    private ArrayList readAppUsageList() {

    ArrayList mItems = JListKit.newArrayList();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {

    UsageStatsManager usage = (UsageStatsManager) BaseApplication.getApplication().getSystemService(Context.USAGE_STATS_SERVICE);

    if (usage == null) return mItems;

    // 查询并按包名进行聚合操作

    Map statsMap = usage.queryAndAggregateUsageStats(beginTime, endTime);

    Set keySet = statsMap.keySet();

    for (String packageName : keySet) {

    UsageStats usageStats = statsMap.get(packageName);

    if (usageStats == null) continue;

    long totalTimeInForeground = usageStats.getTotalTimeInForeground();

    if (totalTimeInForeground <= 0) continue;// 小于1秒的都按照没有打开过处理

    AppUsageBean appUsageBean = new AppUsageBean(packageName, usageStats);

    ApplicationInfo info = getAppInfo(packageName);

    appUsageBean.setAppInfo(info);

    if (info != null) {

    // 获取应用名称

    String label = (String) info.loadLabel(mPackageManager);

    Drawable icon = info.loadIcon(mPackageManager);

    appUsageBean.setAppName(label);

    appUsageBean.setAppIcon(icon);

    } else {

    appUsageBean.setAppName("应用已卸载");

    // Log.e(TAG, "已经找不到包名为[" + packageName + "]的应用");

    }

    mItems.add(appUsageBean);

    // 打印日志

    if (BuildConfig.DEBUG) {

    Log.d("UsageStats", "**********************************************");

    Log.d("UsageStats", packageName);

    // Log.d("UsageStats", "运行时长:" + JDateKit.timeToStringChineChinese(totalTimeInForeground));

    Log.d("UsageStats", String.format("运行时长:%s (%sms)", JDateKit.timeToStringChineChinese(totalTimeInForeground), totalTimeInForeground));

    String fmt = "yyyy-MM-dd HH:mm:ss.SSS";

    Log.d("UsageStats", "开始启动:" + JDateKit.timeToDate(fmt, usageStats.getFirstTimeStamp()));

    Log.d("UsageStats", "最后启动:" + JDateKit.timeToDate(fmt, usageStats.getLastTimeStamp()));

    Log.d("UsageStats", "最近使用:" + JDateKit.timeToDate(fmt, usageStats.getLastTimeUsed()));

    }

    }

    }

    return mItems;

    }

    private PackageManager mPackageManager;

    private ApplicationInfo getAppInfo(String pkgName) {

    try {

    // ApplicationInfo info = mPackageManager.getApplicationInfo(pkgName, PackageManager.GET_ACTIVITIES);

    return mPackageManager.getApplicationInfo(pkgName, 0);

    } catch (PackageManager.NameNotFoundException e) {

    // e.printStackTrace();

    Log.e(TAG, "已经找不到包名为[" + pkgName + "]的应用");

    }

    return null;

    }

    // 方法3:onPostExecute()

    // 作用:接收线程任务执行结果、将执行结果显示到UI组件

    @Override

    protected void onPostExecute(ArrayList list) {

    Log.d(TAG, "共获取到[" + list.size() + "]个系统应用。");

    if (mCallback != null)

    mCallback.onPostExecute(list);

    }

    public interface Callback {

    void onPostExecute(ArrayList list);

    }

    }

    Step3 根据packageName获取APP的图标和名称

    ApplicationInfo info = getAppInfo(packageName);

    if (info != null) {

    // 获取应用名称

    String label = (String) info.loadLabel(mPackageManager);

    Drawable icon = info.loadIcon(mPackageManager);

    appUsageBean.setAppName(label);

    appUsageBean.setAppIcon(icon);

    } else {

    appUsageBean.setAppName("应用已卸载");

    // Log.e(TAG, "已经找不到包名为[" + packageName + "]的应用");

    }

    private ApplicationInfo getAppInfo(String pkgName) {

    try {

    // ApplicationInfo info = mPackageManager.getApplicationInfo(pkgName, PackageManager.GET_ACTIVITIES);

    return mPackageManager.getApplicationInfo(pkgName, 0);

    } catch (PackageManager.NameNotFoundException e) {

    // e.printStackTrace();

    Log.e(TAG, "已经找不到包名为[" + pkgName + "]的应用");

    }

    return null;

    }

    Step4 设置统计规则(多种)

    获取今日零点的时间戳

    /**

    * @return 今日零点的时间

    */

    private long getTodayTime0() {

    // 获取今天凌晨0点0分0秒的time

    Calendar calendar = Calendar.getInstance();

    calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),

    0, 0, 0);

    return calendar.getTimeInMillis();

    }

    Tab点击时,动态刷新数据

    public void onTabClick(int position) {

    Log.d(TAG, "onTabClick() called with: position = [" + position + "]");

    setTitle(TAB_NAMES[position]);

    long currTime = System.currentTimeMillis();

    switch (position) {

    case 0:// 今天的数据 00:00 到 现在

    getAppUsage(getTodayTime0(), currTime);

    break;

    case 1:// 昨天的数据 昨天00:00 - 今天00:00

    long todayTime0 = getTodayTime0();

    getAppUsage(todayTime0 - DateUtils.DAY_IN_MILLIS, todayTime0);

    break;

    case 2:// 最近7天数据

    getAppUsage(currTime - DateUtils.WEEK_IN_MILLIS, currTime);

    break;

    case 3:// 最近30天数据

    getAppUsage(currTime - DateUtils.DAY_IN_MILLIS * 30, currTime);

    break;

    case 4:// 最近一年的数据

    getAppUsage(currTime - DateUtils.DAY_IN_MILLIS * 365, currTime);

    break;

    }

    }

    Step5 将数据展示在RecyclerView

    private long maxTime;// 当前列表中 使用最久的APP时间 用于计算进度条百分比

    private void initAdapter() {

    if (JListKit.isNotEmpty(mItems)) {

    Collections.sort(mItems);// 按使用时长排序

    maxTime = mItems.get(0).getTotalTimeInForeground();

    } else {

    maxTime = 1;

    }

    setTitle(String.format("%s (共%s条)", getTitle(), mItems.size()));

    if (mAdapter == null) {

    String fmt = "yyyy-MM-dd HH:mm:ss";

    mAdapter = new CommonRecyclerAdapter(R.layout.item_app_usage, mItems) {

    @Override

    protected void convert(@NonNull BaseViewHolder helper, AppUsageBean item) {

    helper.setText(R.id.id_tv_app_name, String.format("%s(%s)", item.getAppName(), item.getPackageName()));

    Drawable appIcon = item.getAppIcon();

    if (appIcon != null) {

    helper.setImageDrawable(R.id.id_iv_app_icon, appIcon);

    } else {

    helper.setImageResource(R.id.id_iv_app_icon, R.mipmap.ic_launcher);

    }

    long totalTimeInForeground = item.getTotalTimeInForeground();

    helper.setText(R.id.id_tv_time_in_foreground, String.format("使用时长:%s (%sms)", JDateKit.timeToStringChineChinese(totalTimeInForeground), totalTimeInForeground));

    helper.setText(R.id.id_tv_last_usage, String.format("上次使用:%s", JDateKit.timeToDate(fmt, item.getLastTimeUsed())));

    // 计算进度条百分比

    float percent = (float) item.getTotalTimeInForeground() / maxTime;

    Guideline guideline = helper.getView(R.id.guideline);

    guideline.setGuidelinePercent(percent);

    }

    };

    mHolder.rvAppUsage.setAdapter(mAdapter);

    mHolder.rvAppUsage.setLayoutManager(new LinearLayoutManager(this));

    } else {

    mAdapter.setNewInstance(mItems);

    }

    hideLoading();

    }

    源码地址

    展开全文
  • 获取android手机的电量WiFi运营商的信息,目前只有这些功能,其他的暂时没想到
  • 软件名称:应用统计软件版本:v1.0软件简介:应用统计是一个记录用户手机使用记录的软件,通过它,你可以了解每天手机使用时间,APP使用时间和次数。当你想控制某个软件使用时间的时候,可以设置时间限额,当...

    软件名称:应用统计

    软件版本:v1.0

    软件简介:

    应用统计是一个记录用户手机使用记录的软件,通过它,你可以了解每天手机使用的时间,APP使用的时间和次数。

    当你想控制某个软件使用时间的时候,可以设置时间限额,当使用时间超标的时候,软件会提示用户关闭软件,提醒功能需要软件在后台工作,请不要在后台杀掉APP,否则这个提醒功能就不能正常工作了。

    软件特色:

    1、记录用户手机每天使用的总时长;

    2、记录每个应用的使用时长和使用次数,平均每天使用时间,最近使用的时间;

    3、记录手机开机后启动的APP记录和使用时间;

    4、图表显示每个软件使用时间占用的百分比;

    5、应用使用过量提醒,可以设置每个应用每天的使用时间限额,当使用超过这个时间后,软件会提醒用户使用时间过长,帮助用户逐步戒掉沉迷某个应用的习惯。

    测试机型:小米6( Android 2.2+ )

    软件大小:4.58M

    资源下载:

    应用统计APP(安卓):

    提取密码:2ydu

    温馨提示:

    资源发布时都是最新版,若后续该资源失效了,请在本页面下方留言,小编看到后会及时更新;

    展开全文
  • android统计手机应用使用时长以及开启次数

    万次阅读 热门讨论 2018-12-27 17:36:32
    今天遇到一个需求,需要将手机里面的应用启动次数以及使用时长给统计出来。首先想到的就是需要开启“允许查看应用的使用情况”这个权限。具体在“设置--安全--有权查看使用情况的应用”。废话不多说,开始撸码。 ...
  • 也就呵呵了) ,我们所做的只是说大概的估算时间想计算电池的剩余使用时间,就得得到电池的单位时间的消耗,即(硬件消耗+软件消耗)首先是硬件消耗,这个很简单(不一定准确,但是也找不到其他方...
  • OffScreen - 屏幕时间统计 介绍OffScreen - 屏幕时间统计日常生活中,大多数人有轻微甚至严重的「手机依赖症」,我们无时无刻盯着手机,不断地一边走路一边刷着朋友圈微博和抖音,没日没夜打游戏,通宵追着各种电视...
  • Android 获取应用流量的使用情况有两种方法TrafficStatsNetworkStatsManager 是Android 6.0(API23)中新增加的类这次我们使用的是第二种方法,记录一下实现过程首先说明NetworkStatsManager能提供哪些功能区分 Wifi ...
  • 原标题:android如何获取系统里各个应用的使用时间比如24pi和offtime这两个软件APP,它们都可以统计Android手机上所有应用的使用时间,当然这个不是自己的而是那些厂商的。那么android如何获取系统里各个应用的使用...
  • 图片发自简书App最近发现苹果手机的设置里面多了一个屏幕使用时间,它可以统计你每天使用手机时间。真是不看不知道,一看吓一跳。之前一直觉得自己玩手机的频率还不算太高,但是从屏幕使用时间显示的数据来看,一...
  • 关键字: 应用统计 &...最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一天的使用情况,统计内容包括:应用打开次数,应用合计
  • 通话时间统计安卓

    2020-12-22 13:23:45
    通话时间统计是一款通话软件,帮助大家管理自己的手机时间,但也有日历等相关功能,综合用途十分强大吧。应用简介:用途:本程序用于通话记录时间、时长、周几、日期、农历等显示,并有分号、分段统计等参考.特别...
  • 通话时间统计是一款综合功能软件,让大家可以快速纪录自己所有的通话记录时间,还可以进行备忘之用,了解日期与相关节日。应用简介:用途:本程序用于通话记录时间、时长、周几、日期、农历等显示,并有分号、分段...
  • 能够绘制样式复杂、丰富的各种统计图表,如一般常见的折线图、饼状图、柱状图、散点图、金融股票中使用的的“蜡烛”图、“泡泡”统计图、雷达状统计饼状图等等。简言之。AndroidMPChart基本上能够满足日常在Android...
  • 手机通话时间统计软件下载

    千次阅读 2020-12-31 04:49:31
    安卓通话时间统计用途本程序用于通话记录、时长显示、分类统计、时段统计等参考。想知道最近你跟某人通了多长时间电话吗?或者想看看近期哪个家伙骚扰电话最多?“通话时间统计”来帮你.另外也特别适用于一...
  • UseTimeStatisticAndroid 系统中统计各个app的使用时长以及使用次数Demo说明主体部分主界面为列表,显示的是按天查询的各个app的使用情况。列表上可以选择日期,但仅可以选择最近7天,因为系统提供的可查询数据只有...
  • 软件介绍通话时间统计app是一款手机通话时间记录软件。通话时间统计软件用于通话记录时间、时长、周几、日期、农历等显示,并有分号、分时统计等功能。特别适用于一些无通话时长记录的定制机和想要星期、农历的朋友...
  • 通话时间统计

    2020-12-22 09:07:00
    “通话时间统计”来帮您。还有您手机系统默认的通话记录是不是只能保存有限的几百条?看看更早的记录是不是消失了?本APP也可长久保存过往通话记录。另外也特别适用于一些无通话时长记录的定制机。权限与隐私:程序...
  • App usage statistics API允许应用程序开发人员收集与应用程序使用情况相关的统计信息.与不推荐使用的getRecentTasks()方法相比,此API提供了更详细的使用信息.要使用此API,您必须首先在清单中声明android.permission...
  • Android冷启动耗时统计

    2021-10-20 10:28:21
    系统日志统计Android 4.4(API 级别 19)及更高版本中,logcat 包含一个输出行,其中包含名为 Displayed 的值。此值代表从启动进程到在屏幕上完成对应 Activity 的绘制所用的时间 ActivityManager: Displayed ...
  • 原标题:原来手机还自带监控功能,手机使用记录一清二楚,赖也赖不掉现如今,手机已经变成我们生活的必需品之一了,每天花在手机上的时间也越来越多,自己都不知道时间花去哪儿了。有的时候借了手机给朋友用,是否也...
  • Android电量统计

    千次阅读 2018-06-25 22:01:46
    Android电量统计 前言 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;在维护电量管家应用以及学习处理一些功耗问题的时候,经常会接触电量统计相关的知识,抽空总结下这块知识,方便自己以及他人的...
  • Android app 页面加载统计工具

    千次阅读 2019-10-30 17:44:24
    1.app启动:命令执行的时候开始统计到图片数据匹配到的时候就是启动时间; 2.按钮点击:按钮点击后开始统计到图片数据匹配到的时候就是页面加载时间;采用图像识别统计理由: 1.识别速度因为同样条件,appium识别一...
  • 通话时间统计是一款可以为我们提供便捷服务的生活app,通过这款软件,用户可以更加清晰的了解自己每天的通话内容以及通话时间,从而可以了解我们每一天的生活状态,便于用户调整改善自己的生活节奏,是一款非常实用...
  • Android之App启动时间统计方法

    千次阅读 2017-03-13 19:37:59
    “怎么计算apk的启动时间?” : 利用python或者直接用adb命令怎么计算apk的启动时间呢?就是计算从点击图标到apk完全启动所花费的时间。比如,对游戏来说就是点击游戏图标到进入到登录界面的这段时间。已知的两...
  • 通话时间统计是一款用于记录通话信息的软件,该应用的功能广泛,其中包含了来电时间、日期、通话时长等信息,这样就能清楚看到详细的通话内容了,便于用户查询记录,了解通话时长最长的用户,查看联系人通讯的通话个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,933
精华内容 12,373
关键字:

安卓手机使用时间统计