当前位置: 首页 > news >正文

反编译华为-研究功耗联网监控日志

摘要

待机功耗中联网目前已知的盲点:App自己都不知道的push类型的被动联网、app下载场景所需时长、组播联网、路由器打醒AP。

竞品

策略

华为

灭屏使用handler定时检测(若灭屏30分钟内则周期1分钟,否则为2分钟),检测应用流量的大小变化(UidTxBytes+UidRxBytes),当检测到应用流量速率大于8kb/s && 非下载场景则计为1次后台联网, 若灭屏检测到联网次数大于30次,则上报联网异常大数据

备注:也是无法知道联网事件的时间和次数分布

xxx公司

1.基于AppProcessWakeup进行统计待机唤醒Ap的应用次数, 超过9次上报联网大数据和统计到日志文件中

2.在电池电量变化或待机场景,统计uid对应的数据和wifi流量的上传和下载大小到本地日志文件中

3.WiFi模块:设备休眠时kernel添加监控唤醒AP的联网日志

备注:如果是wifi联网可以使用WiFi模块提供的工具分析发生时的时间和次数情况,可以解决上述盲点,但是数据联网就没有单独工具了哈。

源码流程图

// 加载 powergenie_native3.so    static {        NativeAdapter.mNativeAvailabe = true;        try {            System.loadLibrary("powergenie_native3");        }        catch(UnsatisfiedLinkError v0) {            System.err.println("WARNING: Could not load libpowergenie_native3.so");            NativeAdapter.mNativeAvailabe = false;        }    }            /**    *   获取进程上传和下载的流量数据    *  v1.mUidBytes.put(v5_1, Long.valueOf(v14_1));        if(this.isDownloadStateDbg()) {        v1.mUidTxBytes.put(v5_1, Long.valueOf(v68));        v1.mUidRxBytes.put(v5_1, Long.valueOf(v66));        v1.mUidTxPackets.put(v5_1, Long.valueOf(v64));        v1.mUidRxPackets.put(v5_1, Long.valueOf(v62));    }    */    public static long[] updateTrafficStats() {        if(NativeAdapter.mNativeAvailabe) {            return NativeAdapter.nativeUpdateTrafficStats();        }        return null;    }            /* 流量大于8 kb/s,记一次联网次数 */    public void updateDlUlNetTrafficCount(long j, long j2, int i) {        if (j > 0 && j2 > 0 && i > 0) {            long j3 = (j2 * 1000) / j;            if (j3 >= 8192) {                this.mTotalDlUlTrafficCount += i;                Log.i("AppPowerRecord", this.mAppName + " dl or upload speed: " + j3 + "bytes/s, traffic count:" + i + ", duration:" + (j / 1000));            }        }    }       // type 9 流量次数:3次, 30次,60次   static {        mAppPowerTable = new int[]{40, 20, 4};        mCurrentLevelTable = new int[]{100, 50, 5};        mPowerTypeCurrent = new PowerTypeCurrent();        mPowerLevelTable = new int[][]{                new int[]{POWER_TYPE_ALARM, 3, 12, 40}, // type 1                new int[]{POWER_TYPE_GPS, 10, 300, 600}, // type 2                new int[]{POWER_TYPE_SENSOR, 10, 300, 600}, // type 3                new int[]{POWER_TYPE_WAKELOCK, 10, 300, 600}, // type 4                new int[]{POWER_TYPE_AUTOSTART, 3, 20, 40}, // type 6                new int[]{POWER_TYPE_WIFI_SCAN, 10, 180, 360}, // type 7                new int[]{POWER_TYPE_BT_SCAN, 10, 300, 600}, // type 8                new int[]{POWER_TYPE_NET_TRAFFIC, 3, 30, 60}, // type 9                 new int[]{POWER_TYPE_CPU_HIGH_LOAD, 0, 300, 600}, // type 10                new int[]{POWER_TYPE_BLOCK_SCREEN_TIMEOUT, 0, 180, 600}, // type 11, 超时0秒,超时180秒,,超时600秒                new int[]{POWER_TYPE_NET_LOCATION, 180, 1800, 3600}// type 12        };    }

http://www.lryc.cn/news/468822.html

相关文章:

  • 线程池——Java
  • java 17天 TreeSet以及Collections
  • JavaScript 第27章:构建工具与自动化
  • Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
  • 如何实现网页上的闪烁效果
  • 事件总线—Event Bus 使用及讲解
  • 信息安全工程师(67)网络流量清洗技术与应用
  • 【项目】论坛系统测试
  • XJ02、消费金融|消费金融业务模式中的主要主体
  • 基于神经网络的农业病虫害损失预测
  • 【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO
  • Web应用框架-Django应用基础
  • qt QMainWindow详解
  • 第二单元历年真题整理
  • Ubuntu下载protobuf
  • 【算法优化】混合策略改进的蝴蝶优化算法
  • 什么是标准差?详解
  • C++20中头文件syncstream的使用
  • 判断特定时间点开仓的函数(编程技巧)
  • 如何新建一个React Native的项目
  • 学习--图像信噪比
  • 【2024CANN训练营第二季】使用华为云体验AscendC_Sample仓算子运行
  • 使用 NumPy 和 Matplotlib 实现交互式数据可视化
  • TCP 攻击为何在 DDoS 攻击中如此常见
  • 未来汽车驾驶还会有趣吗?车辆动力学系统简史
  • LCD手机屏幕高精度贴合
  • 15_卸载操作
  • ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化等更新
  • redis的string是怎么实现的
  • 基于STM32设计的智能婴儿床(华为云IOT)(244)