Android中的StatsLog

在看NFC代码时,有一个直接找找不到的类叫NfcStatsLog,查看Android.bp发现有这么一段:
genrule {
    name: "statslog-Nfc-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module nfc --javaPackage com.android.nfc"
        + " --javaClass NfcStatsLog",
    out: ["com/android/nfc/NfcStatsLog.java"],
}
显然这个类就是编译过程中按照这个规则生成的,经过查找源代码,这个工具的位置为:
frameworks\base\tools\stats_log_api_gen
而具体的标签内容存放在
frameworks\base\cmds\statsd\src\atoms.proto
例如其中有这样的配置
message Atom {
    ......
    NfcTagOccurred nfc_tag_occurred = 138 [(module) = "nfc"];
    ......
}
......
/**
 * Logs when a NFC Tag event occurred.
 * Logged from:
 *     packages/apps/Nfc/src/com/android/nfc/NfcDispatcher.java
 */
message NfcTagOccurred {
    enum Type {
        UNKNOWN = 0;
        URL = 1;
        BT_PAIRING = 2;
        PROVISION = 3;
        WIFI_CONNECT = 4;
        APP_LAUNCH = 5;
        OTHERS = 6;
    }
    optional Type type = 1;
}
......
注释中已经写明了是在NfcDispatcher.java中用到的,查看NfcDispatcher.java代码可以看到有如下log语句:
NfcStatsLog.write(NfcStatsLog.NFC_TAG_OCCURRED, NfcStatsLog.NFC_TAG_OCCURRED__TYPE__BT_PAIRING);
可以看出这里的NFC_TAG_OCCURRED是在message Atom{}中定义的,编译时message NfcTagOccurred{}中定义的所有Type都可以组合使用,格式为:
NFC_TAG_OCCURRED__TYPE__XX[_XX]
因为同在com.android.nfc,所以NfcDispatcher不需要import,而在AidRoutingManager中就需要import com.android.nfc.NfcStatsLog;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Android 11 ,Google 对 StatsLog 进行了更新和改进。现在,您可以使用 StatsLog API 记录和查看更多的信息。下面是在 Android 11 使用 StatsLog 的步骤: 1. 导入依赖 在应用程序的 build.gradle 文件添加以下依赖项: ``` implementation 'androidx.core:core-stats:1.5.0-alpha01' ``` 2. 记录信息 使用 StatsLog API 记录信息。例如,您可以使用以下代码记录应用程序的网络活动: ``` StatsLog.write(StatsLog.NETWORK_ACTIVITY_INFO, uid, NetworkActivityInfo.NETWORK_MOBILE_RX_BYTES, mobileRxBytes, NetworkActivityInfo.NETWORK_MOBILE_TX_BYTES, mobileTxBytes, NetworkActivityInfo.NETWORK_WIFI_RX_BYTES, wifiRxBytes, NetworkActivityInfo.NETWORK_WIFI_TX_BYTES, wifiTxBytes); ``` 上面的代码将记录应用程序的移动数据和 Wi-Fi 数据的接收和发送字节数。 3. 查看信息 可以使用 adb shell dumpsys stats 命令查看记录的信息。例如,您可以使用以下命令查看应用程序的网络活动信息: ``` adb shell dumpsys stats --proto | grep "network_activity_info" | grep "PACKAGE_NAME" ``` 其,PACKAGE_NAME 是应用程序的包名。 请注意,在 Android 11 StatsLog 仅在设备上启用特殊权限后才能使用。您可以使用以下命令在设备上启用权限: ``` adb shell cmd stats enable ``` 以上是在 Android 11 使用 StatsLog 的基本步骤。StatsLog 可以帮助您收集和记录各种系统和应用程序的信息,以便于进行性能调优和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值