精华内容
下载资源
问答
  • 屏幕点击次数统计
    2021-06-02 20:47:10

    long[] mHits = new long[3];

    long[] mHits5 = new long[5];

    @Override

    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {

    if (preference.getKey().equals(KEY_SERIAL_NUMBER)) {

    Log.e(LOG_TAG, "zhanbing.li");

    System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);

    mHits[mHits.length-1] = SystemClock.uptimeMillis();

    if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {

    ComponentName toActivity = new ComponentName("com.test.pcbatest","com.test.pcbatest.PcbaTestActivity");

    Intent intent = new Intent(Intent.ACTION_MAIN);

    intent.setComponent(toActivity);

    intent.setAction("android.intent.action.VIEW");

    try {

    startActivity(intent);

    } catch (Exception e) {

    Log.e(LOG_TAG, "Unable to start activity " + intent.toString());

    }

    }

    } else if (preference.getKey().equals(KEY_GAUGE_VERSION)) {

    Log.e(LOG_TAG, "zhanbing.li Gauge three clicks");

    System.arraycopy(mHits5, 1, mHits5, 0, mHits5.length-1);

    mHits5[mHits5.length-1] = SystemClock.uptimeMillis();

    if (mHits5[0] >= (SystemClock.uptimeMillis()-1000)) {

    if (!mBatteryCharging) {

    File writeGaugeFile = new File("/sys/power/wakeups/needtoreset_gauge");

    FileWriter fr;

    int reboot_flag = 0;

    try{

    fr = new FileWriter(writeGaugeFile);

    fr.write("1");

    Log.e(LOG_TAG, "/************************* reset gauge write success ***************************/\n");

    fr.close();

    reboot_flag = 1;

    } catch (IOException e) {

    e.printStackTrace();

    }

    if (reboot_flag == 1){

    Toast.makeText(Status.this, "Reset gauge sucess, system will restart", Toast.LENGTH_LONG).show();

    Log.e(LOG_TAG, "/***********************start to reboot ***************************/\n");

    Intent intent = new Intent(Intent.ACTION_REBOOT);

    intent.putExtra("nowait", 1);

    intent.putExtra("interval", 1);

    intent.putExtra("window", 0);

    sendBroadcast(intent);

    } else {

    Log.e(LOG_TAG, "fail to reset gauge\n");

    }

    } else {

    Toast.makeText(Status.this, "Please remove your DC or Usb first!", Toast.LENGTH_SHORT).show();

    }

    }

    }

    return super.onPreferenceTreeClick(preferenceScreen, preference);

    }

    

    更多相关内容
  • 屏幕点击计数

    2014-08-31 17:41:29
    这个是一个屏幕点击计数的程序,里面用到了移动开发的各项计数,包括点击事件,声音播放,图片切换等等,是个很好的入门例子。 可以下载看一看,如果觉得里面的技术有用,但是又不会实现的话,需要源码的可以联系我...
  • 有没有什么办法能够获得安卓手机的屏幕点击次数,就是不管处于哪个应用,只要开始统计,就会统计一定时间内点击屏幕的总次数
  • //点击次数 int count = 0; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_fast_click); Text text = findComponentById...

    布局

    <?xml version="1.0" encoding="utf-8"?>
    <DirectionalLayout
        xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:alignment="center"
        ohos:orientation="vertical">
    
        <Text
            ohos:id="$+id:text1"
            ohos:height="match_content"
            ohos:width="match_content"
            ohos:background_element="$graphic:background_ability_fast_click"
            ohos:layout_alignment="horizontal_center"
            ohos:text="$string:fastclickability_HelloWorld"
            ohos:text_size="40vp"
            />
    
        <Button
            ohos:id="$+id:btn1"
            ohos:height="match_content"
            ohos:width="match_content"
            ohos:background_element="red"
            ohos:text="开始"
            ohos:text_size="40vp"
            />
    
    
    </DirectionalLayout>

    代码

    package com.example.helloworld.slice;
    
    import com.example.helloworld.ResourceTable;
    import ohos.aafwk.ability.AbilitySlice;
    import ohos.aafwk.content.Intent;
    import ohos.agp.components.Button;
    import ohos.agp.components.Component;
    import ohos.agp.components.Text;
    
    public class FastClickAbilitySlice extends AbilitySlice {
        //是否第一次点击
        boolean isFirstClick = true;
        //开始时间
        long startTime = 0;
        //点击次数
        int count = 0;
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            super.setUIContent(ResourceTable.Layout_ability_fast_click);
    
            Text text = findComponentById(ResourceTable.Id_text1);
            Button btn1 = findComponentById(ResourceTable.Id_btn1);
    
            btn1.setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component component) {
                    count++;
                    //统计10秒安乐多少次
                    if (isFirstClick) {
                        startTime = System.currentTimeMillis();
                        btn1.setText("请疯狂点我");
                        isFirstClick = false;
                    } else {
                        if (System.currentTimeMillis() - startTime <= 1000 * 10) {
                            text.setText(count + "");
                        } else {
                            btn1.setText("结束");
                            //取消按钮的点击时间
                            btn1.setClickable(false);
                        }
                    }
    
                }
            });
        }
    
        @Override
        public void onActive() {
            super.onActive();
        }
    
        @Override
        public void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    

     

     

     

    展开全文
  • 关键字: 应用统计 Android源码 应用使用时长 应用使用次数最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一天的使用情况,统计内容包括:...

    关键字: 应用统计 Android源码 应用使用时长 应用使用次数

    最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一天的使用情况,统计内容包括:应用打开次数,应用合计使用时长等。

    在所搜寻的方案中,大致有如下两种:

    方案一:自行记录每次activity的打开和关闭,根据这些数据进行统计。

    方案二:使用系统自行记录的每次activity的打开和关闭数据,进行统计。

    以下方案采用两个方案并行,主要是以系统数据统计结果为主,以自行记录的数据作为参照,用以对比两组数据,以保证数据统计结果的有效性和稳定性。

    系统数据

    在Android中,系统会自行记录应用的打开次数和使用时间,且提供了相关api于开发者,但是每一次版本提升都可能会对api带来相当大的改变,这一块也不例外。但是始终没有变化的就是在拨号键盘输入* # * #4636# * #*,进入工程模式,点击“使用情况统计数据”,你就可以看到统计界面了。由于各个版本之间差异比较大,而且相关的资料也比较少,本次使用的api以及相关的说明都是以Android-5.1为基础。在某些版本中,应用统计api,存在不少缺陷以及避坑的地方,尤其是手机厂家修改过源码之后,所以对于某些品牌的测试机器,程序的运行结果会有一点不一样,请各位读者有所注意。

    如何获取系统数据

    第一步:获取权限

    在manifest文件中注册该权限

    在系统setting应用中打开相应开关,准许demo应用获取数据。如果不执行这一步的话,demo将无法读取系统数据。

    测试机 : 小米4C。

    打开目录 : 设置 -〉其他高级设置 -〉安全和隐私 -〉有权查看使用情况的应用。界面如下图:

    第二步:获取数据

    获取系统统计信息:

    @SuppressWarnings("ResourceType")

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)

    public static ArrayList getUsageList(Context context, long startTime, long endTime) {

    Log.i(TAG," EventUtils-getUsageList() Range start:" + startTime);

    Log.i(TAG," EventUtils-getUsageList() Range end:" + endTime);

    Log.i(TAG," EventUtils-getUsageList() Range start:" + dateFormat.format(startTime));

    Log.i(TAG," EventUtils-getUsageList() Range end:" + dateFormat.format(endTime));

    ArrayList list = new ArrayList<>();

    UsageStatsManager mUsmManager = (UsageStatsManager) context.getSystemService("usagestats");

    Map map = mUsmManager.queryAndAggregateUsageStats(startTime, endTime);

    for (Map.Entry entry : map.entrySet()) {

    UsageStats stats = entry.getValue();

    if(stats.getTotalTimeInForeground() > 0){

    list.add(stats);

    Log.i(TAG," EventUtils-getUsageList() stats:" + stats.getPackageName() + " TotalTimeInForeground = " + stats.getTotalTimeInForeground());

    }

    }

    return list;

    }

    获取系统记录的详细的各个activity的使用情况:

    @SuppressWarnings("ResourceType")

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)

    public static ArrayList getEventList(Context context, long startTime, long endTime){

    ArrayList mEventList = new ArrayList<>();

    Log.i(TAG," EventUtils-getEventList() Range start:" + startTime);

    Log.i(TAG," EventUtils-getEventList() Range end:" +endTime);

    Log.i(TAG," EventUtils-getEventList() Range start:" + dateFormat.format(startTime));

    Log.i(TAG," EventUtils-getEventList() Range end:" + dateFormat.format(endTime));

    UsageStatsManager mUsmManager = (UsageStatsManager) context.getSystemService("usagestats");

    UsageEvents events = mUsmManager.queryEvents(startTime, endTime);

    while (events.hasNextEvent()) {

    UsageEvents.Event e = new UsageEvents.Event();

    events.getNextEvent(e);

    if (e != null && (e.getEventType() == 1 || e.getEventType() == 2)) {

    Log.i(TAG," EventUtils-getEventList() "+e.getTimeStamp()+" event:" + e.getClassName() + " type = " + e.getEventType());

    mEventList.add(e);

    }

    }

    return mEventList;

    }

    获取系统记录的各个应用的使用次数:

    由于该字段不能通过api拿到,故而采取反射的形式,拿到该字段。(注:其实该字段的统计数据并不可靠,一旦强行关机,比如拔电池,就可能失去数据,所以在系统代码中该字段是被隐藏的。当然关于数据的可靠性,在接下来的文章中会有更详细的说明)

    private int getLaunchCount(UsageStats usageStats) throws IllegalAccessException {

    Field field = null;

    try {

    field = usageStats.getClass().getDeclaredField("mLaunchCount");

    } catch (NoSuchFieldException e) {

    e.printStackTrace();

    }

    return (int) field.get(usageStats);

    }

    结语:

    本文主要介绍了关于Android系统中统计各个app的使用情况的解决方案,以及获取相关数据的方法。关于系统记录的数据的原理以及在该原理的逻辑下可能出现的bug,将会在接下来的文章中详细阐述。

    转载请注明出处。

    展开全文
  • 看手工耿突发奇想,自己是否也能搞个有意义的脑残程序,于是想到自己能否也统计一下自己敲击键盘的内容?其实一直都有这个想法,今天终于实现这个小心思。网上搜了下已经有别人做过了。于是乎,借鉴了一些别人的程序...

    看手工耿突发奇想,自己是否也能搞个有意义的脑残程序,于是想到自己能否也统计一下自己敲击键盘的内容?其实一直都有这个想法,今天终于实现这个小心思。网上搜了下已经有别人做过了。于是乎,借鉴了一些别人的程序,然后进行改造。最终大功告成。

    task is cheap,

    全部代码如下,可以直接复制粘贴跑起来:

    # coding:utf-8

    import datetime

    import pyHook

    import pythoncom

    from time import *

    result = ''

    # 一个字典存取所有键值和按键的次数。

    keyDict = {}

    strDate = datetime.datetime.now().strftime('%y-%m-%d')

    print(strDate)

    def onMouseEvent(event):

    # 监听鼠标

    # 需要注意的是返回True,以便将事件传给其他的处理程序,如果返回False的话,鼠标事件在这里就会被拦截,即鼠标会僵在此处失去响应

    return True

    def onKeyboardEvent(event):

    # 监听键盘事件

    # 同鼠标事件监听函数的返回值

    # 写一个保存到本地文件的方法,而且应该以写二进制的方式来写入,设置result为全局的,避免文件被覆盖

    global result

    # 以每天的日期为文件名称。

    file = open(r'D:/{}.txt'.format(strDate), 'wb')

    key = str(event.Key)

    result = result + "Time : " + str(asctime())+"|:"+"WindowName:"+str( event.WindowName)+"|"+"Key:"+key+"|"+"MessageName:"+str( event.MessageName)

    if key not in keyDict:

    keyDict[key] = 1

    else:

    keyDict[key] = keyDict[key]+1

    file.writelines(result)

    if event.Key == "Escape":

    file.close()

    print('统计结果是 {}'.format(keyDict))

    exit("统计结束!")

    return True

    def main():

    # 设置为全局变量,以便存取按键及次数

    global keyDict

    # 创建一个:钩子“管理对象

    hm = pyHook.HookManager()

    # 监听所有的键盘事件

    hm.KeyDown = onKeyboardEvent

    #设置键盘”钩子“

    hm.HookKeyboard()

    # 监听鼠标事件

    hm.mouseAll = onMouseEvent

    # 设置鼠标钩子

    hm.HookMouse()

    # 进入循环侦听,需要手动进行关闭,否则程序将一直处于监听的状态。可以直接设置而空而使用默认值

    pythoncom.PumpMessages()

    if __name__ == "__main__":

    main()

    python 文件名.py

    按Esc键会自动退出程序。

    结果如下:

    计结果是 {'A': 1, 'D': 1, 'F': 1, 'S': 9, 'Lshift': 1, 'Escape': 1}

    统计结束!

    可以看到S键敲击了9次,A键敲击了1次。 Esc键按了1次。

    Over

    展开全文
  • //利用计时器计时 jButton.addActionListener(e -> {//为按钮添加事件 if (time > 0) {//剩余时间大于0才触发事件 jLabel1.setText("点击次数:" + ++click); timer.schedule(new TimerTask() { @Override public ...
  • 监听用户点击屏幕次数,由于单独监听某个控件的话,一来控件很多容易遗漏,二来用户不确定点击那个位置,复杂度较高而且容易出错,因此决定统计点击整个屏幕次数。 如果某个用户连续点击 N 次,并且这 N 次当...
  • OffScreen - 屏幕时间统计 介绍OffScreen - 屏幕时间统计日常生活中,大多数人有轻微甚至严重的「手机依赖症」,我们无时无刻盯着手机,不断地一边走路一边刷着朋友圈微博和抖音,没日没夜打游戏,通宵追着各种电视...
  • Unity获取鼠标点击次数

    千次阅读 2021-04-28 08:27:05
    using UnityEngine; using UnityEngine.UI; public class MouseClick: ...//初始点击次数 // Start is called before the first frame update void Start() { txt = GameObject.Find(“Text”).GetComponent(); }
  • 执行点击操作 result.innerHTML = " 您点击了: " +(count++)+ " 次 " ; }, 100 ); }; btn.click(); } } window.onload = counter; " btn " disabled= " disabled " >倒计时10秒 " result " >...
  • 2、模拟规定次数点击事件或模拟规定时间内的点击事件;三、code1、模拟规定时间内的点击事件#!/usr/bin/env python3# coding=utf-8import subprocessimport timedef loop_click_for_android(run_time=5...
  • 近期pm提出需要统计首页商品的曝光亮,由于我们的首页是用的recylerview实现的,这里就来讲下如何使用监听recylerview的滚动事件来实现子view的曝光量统计,我们这里说的view都是列表中的子item条目(子view) ...
  • 近期pm提出需要统计首页商品的曝光亮,由于我们的首页是用的recylerview实现的,这里就来讲下如何使用监听recylerview的滚动事件来实现子view的曝光量统计,我们这里说的view都是列表中的子item条目(子view) ...
  • ,周统计报表 ,月统计报表 ,年统计报表 ,客户端情况统计 ,用户操作系统统计 ,用户浏览器统计 ,屏幕分辨率统计 ,访问者地区统计 ,访问统计分析 ,访问者来路统计 ,搜索引擎统计 ,搜索关键字统计 ,访问者访次统计 ,C段IP...
  • SmartStat 对客户端信息的统计相当完善,提供了对客户端操作系统、浏览器、屏幕大小及色彩、语言、时区、Alexa工具条(v2.2)、IP地址和地区、省份的统计。 通过对客户端UserAgent的详尽分析,SmartStat对客户端操作...
  • 程序员是不是手速越快,工作效率越高?...不同颜色代表不同的键盘敲击次数: 比如作为一个程序员,我的空格键敲击居然是最多的,这是因为 Google 输入法输入中文后,需要用空格键确认。 输入频率第二
  • 调用MapReduce对文件中各个单词出现次数进行统计 要求 一、安装Ubuntu 二、准备工作 1.创建Hadoop账户 2.设置hadoop密码 : 3.为hadoop用户增加管理员权限: 4.更新 apt 5.安装vim 6.配置SSH 三.安装Java环境 1.安装...
  • 在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中。 cd /usr/local/hadoop mkdir ./input cp ....
  • Google等)上搜索进入您网站情况,对每个访问者的访问次数进行分析排序,列出当天的全部访问用户,当前在线用户,最近的50-100位访问用户等,还将统计出每位访问者使用的操作系统,浏览器以及屏幕分辨率等,并对这些...
  • 基于Ubuntu在Hadoop的环境下调用MapReduce对文件中各个单词出现次数进行统计 目录一、安装配置操作系统二、安装Hadoop(伪分布模式)二、二、调用MapReduce执行WordCount对单词进行计数 一、安装配置操作系统   ...
  • 把本地文件系统的“/home/hadoop/word.txt”上传到HDFS中的当前用户... 当运行顺利结束时,屏幕上会显示类似如下的信息:词频统计结果已经被写入了HDFS的“/user/hadoop/output”。 把统计结果下载保存到output文件夹。
  • Hadoop综合大作业:调用MapReduce对文件中各个单词出现次数进行统计 实验配置:系统:Ubuntu Kylin | 环境:Hadoop | 软件:Eclipse 文章目录一、作业要求二、安装VirtualBox虚拟机软件,在VirtualBox中安装Ubuntu三...
  • mapreduce程序 统计文件中每个单词出现次数调用MapReduce对文件中各个单词出现次数进行统计一、安装环境二、准备工作1.创建Hadoop账户2.更新 apt3.安装vim4.配置SSH、配置SSH无密码登陆三.安装Java环境1.安装JDK2....
  • 如题 转载于:https://www.cnblogs.com/u3shadow/p/4218175.html
  • 这里简化成点击一次加1分。 好开森,点击计数的功能终于搞定了。 非常简单的代码,不过对于初学者来说,找出这行代码也不太容易,我的方法就是拿过来一个觉得应该有这个功能的程序源码,一点点把无关

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,541
精华内容 3,416
热门标签
关键字:

屏幕点击次数统计