Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?

Posted

技术标签:

【中文标题】Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?【英文标题】:Android: How can I get Battery Icon Resource ID or full file path/name in Status Bar? 【发布时间】:2012-03-09 07:12:04 【问题描述】:

我想检查状态栏中的电池图标和级别是否正确更改,因此我想获取电池图标资源ID或状态栏中的完整文件路径/名称。

我尝试使用电池管理器获取图标的资源 ID:

intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, 0)

但是,我遇到了和作者一样的问题: android: access "system"-drawables

我得到相同的图标,其路径是/res/drawable/stat_sys_battery.xml,无论级别是什么。我很想知道为什么这个图标和状态栏的图标不一样?我的目标是获取状态栏的图标。

我已经搜索了很长一段时间的答案,但是关于这个主题的大多数帖子都与更改状态栏中的电池图标有关,而我的问题是关于如何获取状态栏的状态和图标,即我不想要修改图标。

请帮帮我!提前致谢。

【问题讨论】:

【参考方案1】:

我很想知道为什么这个图标和状态栏的图标不一样。

和状态栏的图标一样,因为是状态栏的图标。电池电量是在该资源中实现的LevelListDrawable

除非您正在构建自己的自定义固件,否则您无法访问实际的 LevelListDrawable 对象,因此您无法检查它。

【讨论】:

非常感谢!我没有注意到这个图标是一个LevelListDrawable!我得到与状态栏不同的图标的原因是因为我得到的是默认图标。见developer.android.com/reference/android/graphics/drawable/… 对我来说它看起来仍然不同——状态栏的图标是深灰色-闪电-白色-深-灰色-电池,我得到的图标是白色-闪电-灰色-和深灰色的电池。知道为什么吗? @DonHatch:在 Android 5.0+ 上,状态栏图标应该是纯 alpha 通道,因此它们可以根据状态栏的颜色调整为黑色或白色(因为应用影响状态栏颜色)。我无法解释为什么你会看到其他颜色。 @CommonsWare 你有关于纯阿尔法和适应不同颜色背景的参考吗?我观察到当电池电量足够低时,我的应用程序和状态栏(奥利奥)中的电池图标底部都有一点红色 - 你也看到了吗?所以它有红色和灰色阴影;这不可能只是一个纯粹的 alpha 图像,不是吗? @DonHatch:见developer.android.com/guide/practices/ui_guidelines/…

以上是关于Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FUSED LOCATION API 优化电池 - Android

如何使定位服务图标从状态栏中消失?

如何在android系统状态栏中显示文本

iPhone在状态栏中添加图标(la Battery Indicator)

如何在 Linux 终端下检查笔记本电池状态

为啥我的 phongap 应用程序在 android 状态栏中显示一个汉堡包图标?