计步类软件或者摇一摇统计次数软件或小程序全是通过传感器的回调方法来统计步数的,我们只需要在传感器回调应用实现的接口前修改传递的数据即可。

方法位于frameworks/base/core/java/android/hardware/SystemSensorManager.java类中,有个内部类SensorEventQueue,修改如下:

private static int i = 1;
private static long currentTime = 0;
private static long lastTime = 0;
static final class SensorEventQueue extends BaseEventQueue {private final SensorEventListener mListener;private final SparseArray<SensorEvent> mSensorsEvents = new SparseArray<SensorEvent>();public SensorEventQueue(SensorEventListener listener, Looper looper,SystemSensorManager manager, String packageName) {super(looper, manager, OPERATING_MODE_NORMAL, packageName);mListener = listener;}@Overridepublic void addSensorEvent(Sensor sensor) {SensorEvent t = new SensorEvent(Sensor.getMaxLengthValuesArray(sensor,mManager.mTargetSdkLevel));synchronized (mSensorsEvents) {mSensorsEvents.put(sensor.getHandle(), t);}}@Overridepublic void removeSensorEvent(Sensor sensor) {synchronized (mSensorsEvents) {mSensorsEvents.delete(sensor.getHandle());}}// Called from native code.@SuppressWarnings("unused")@Overrideprotected void dispatchSensorEvent(int handle, float[] values, int inAccuracy,long timestamp) {final Sensor sensor = mManager.mHandleToSensor.get(handle);if (sensor == null) {// sensor disconnectedreturn;}SensorEvent t = null;synchronized (mSensorsEvents) {t = mSensorsEvents.get(handle);}if (t == null) {// This may happen if the client has unregistered and there are pending events in// the queue waiting to be delivered. Ignore.return;}System.out.println("dispatchSensorEvent before values[0]: " + values[0] + " , i : " + i);currentTime = System.currentTimeMillis() / 1000 % 10000000;if (currentTime == lastTime) {return;}values[0] = currentTime + 2 * i;// Copy from the values array.System.arraycopy(values, 0, t.values, 0, t.values.length);i++;lastTime = currentTime;System.out.println("dispatchSensorEvent after values[0]: " + values[0] + " , i : " + i);t.timestamp = timestamp;t.accuracy = inAccuracy;t.sensor = sensor;// call onAccuracyChanged() only if the value changesfinal int accuracy = mSensorAccuracies.get(handle);if ((t.accuracy >= 0) && (accuracy != t.accuracy)) {mSensorAccuracies.put(handle, t.accuracy);mListener.onAccuracyChanged(t.sensor, t.accuracy);}mListener.onSensorChanged(t);}// Called from native code.@SuppressWarnings("unused")@Overrideprotected void dispatchFlushCompleteEvent(int handle) {if (mListener instanceof SensorEventListener2) {final Sensor sensor = mManager.mHandleToSensor.get(handle);if (sensor == null) {// sensor disconnectedreturn;}((SensorEventListener2) mListener).onFlushCompleted(sensor);}return;}// Called from native code.@SuppressWarnings("unused")@Overrideprotected void dispatchAdditionalInfoEvent(int handle, int type, int serial, float[] floatValues, int[] intValues) {if (mListener instanceof SensorEventCallback) {final Sensor sensor = mManager.mHandleToSensor.get(handle);if (sensor == null) {// sensor disconnectedreturn;}SensorAdditionalInfo info =new SensorAdditionalInfo(sensor, type, serial, intValues, floatValues);((SensorEventCallback) mListener).onSensorAdditionalInfo(info);}}
}

上面的修改是每秒钟刷2步,如果要刷更多的步,则把2修改为每秒要刷的任意步数即可。上面取模运算只是为了让数字小一点,模10000000是因为1年=3600*24*365=31536000,即8位。另外,有些应用是有加过滤判断是,比如每秒不可能跑100步或者摇100下,若修改太大就会导致修改无效。

修改源码刷步数、年会摇一摇数据相关推荐

  1. android修改原生代码,【ROM教程】安卓原生ROM修改源码消除WIFI叹号教程

    [ROM教程]安卓原生ROM修改源码消除WIFI叹号教程.Android为了对网络状态进行检测,采用了一种叫做captive detection的方式进行网络状态检测.其实说起来很简单,每当连接到一个 ...

  2. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

  3. mybatis-generator修改源码2

    参考: MyBatis Generator系列(三)----修改源码实现中文注释 (包括java.net.MalformedURLException at java.net.URL.<init& ...

  4. android注入 定位,[原创]修改源码实现全局(无需root)注入躲开注入检测

    看这篇文章需要的技能 1.会编译android源码(如果你不愿意编译源码,还有另外一种办法,下面我会提供) 2.会使用substrate或者xposed 以上2个网上资料很多我就不啰嗦了 一.市面上目 ...

  5. Python 技术篇 - 修改源码解决中文主机名导致的flask、socket服务起不来问题: ‘utf-8‘ codec can‘t decode byte 0xc0 in position...

    由于主机名为中文导致的 flask 服务起不来,报错如下: File "D:\work\python3.9_64\lib\socket.py", line 791, in getf ...

  6. Jar包反编译后修改源码再编译

    Jar包反编译后修改源码再编译 文章目录 Jar包反编译后修改源码再编译 1. 场景 2. 详细步骤 2.1 查看源码 2.2 生成源文件 2.3 构建项目 2.4 编译成jar包 3. 参考链接 1 ...

  7. layui 鼠标移入变为小手_如何在 LayUI 数据表格的列元素上,鼠标悬浮,显示所有文字内容(修改源码)...

    文中使用的LayUI版本:layui-v2.5.5 问题描述: 最近参与开发了 问题分析: 要实现鼠标悬浮显示所有内容,一般采用的都是给对应元素上添加 title 属性,这样当鼠标悬浮在对应列的时候, ...

  8. FFmpeg修改源码支持H265

    文章目录 一. 安装FFmpeg 二. 下载源码 三. 修改源码 四. 重新编译 五.执行 一. 安装FFmpeg 如果已经安装,建议先卸载. brew uninstall ffmpeg 然后用以下命 ...

  9. caffe实现多label输入(修改源码版)

    在我的上一篇博客中caffe实现多标签输入中,介绍了用把图像和label分来,各自做成lmdb,最后把label的lmdb用slice层分开,这篇博客介绍另一种修改源码的方法实现多label,比其他博 ...

最新文章

  1. python编程爱心-python画一个玫瑰和一个爱心
  2. python4delphi 设置syspath
  3. python pyside简单布局_python – pyside显示/隐藏布局
  4. why my SAP UI5 filter by titleID does not work
  5. SpringBoot + Dubbo + Zookeeper搭建一个简单的分布式服务
  6. github连接出现Bad file number问题
  7. Python 程序员如何防止数据被修改?
  8. python中求众数_Python实现求众数的三种方法
  9. FreeSwitch之拨号计划~简单例子(二)
  10. Java数据库连接详解
  11. 数据挖掘学习之路一:数据挖掘认识
  12. tensorflow-serving源码阅读1
  13. 一点资讯推出“长风计划”
  14. xilinx Edition arm M3 使用笔记
  15. 20189220 余超《Linux内核原理与分析》第八周作业
  16. 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)
  17. macos 中先安装了pyqt5再安装opencv出现的QtCore冲突问题
  18. HTTP协议协议报文结构请求响应数据报分析
  19. C语言学习笔记:算法
  20. axure原型:APP版高保真聊天对话界面(中继器导入即可)

热门文章

  1. JavaScript基础 | Day02 JavaScript的运算符、语句、综合案例
  2. 持续集成服务 Travis CI 教程
  3. sapjco3的安装
  4. shiro使用Md5加密
  5. C# 打印调试信息到DebugView
  6. 每周一书《用户故事地图》分享!设计、产品、开发必读!
  7. InnerHTML、InnerText、outerHTML的用法与区别
  8. 现代循环神经网络 - 序列到序列学习
  9. VIA和PAD的用法区分
  10. python requests常见用法总结