获取 Android 手机的电池电流值

2023-11-26

我正在尝试收集 Android G1 手机的电量使用统计数据。我有兴趣了解电压和电流的值,然后能够收集本报告中报告的统计数据PDF.

我可以通过注册意向接收器来接收 ACTION_BATTERY_CHANGED 的广播来获取电池电压的值。但问题是Android并没有通过这个SDK接口公开电流的值。

我尝试的一种方法是通过 sysfs 界面,我可以使用以下命令从 adb shell 查看电池电流值

$cat /sys/class/power_supply/battery/batt_current
449 

但这也仅适用于通过 USB 接口连接手机的情况。如果我断开电话,我会看到 batt_current 的值为“0”。我不确定为什么报告的电流值为零。它应该大于零,对吧?

对于获取电池电流值有什么建议/指示吗?如果我错了,还请纠正我。


您只需查看当前小部件的源代码即可。它具有某些平台存储当前值的硬编码路径。

/*
 *  Copyright (c) 2010-2011 Ran Manor
 *  
 *  This file is part of CurrentWidget.
 *    
 *  CurrentWidget is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  CurrentWidget is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with CurrentWidget.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.manor.currentwidget.library;

import java.io.File;

import android.os.Build;
import android.util.Log;

public class CurrentReaderFactory {

    static public Long getValue() {

        File f = null;      

        // htc desire hd / desire z / inspire?
        if (Build.MODEL.toLowerCase().contains("desire hd") ||
                Build.MODEL.toLowerCase().contains("desire z") ||
                Build.MODEL.toLowerCase().contains("inspire")) {

            f = new File("/sys/class/power_supply/battery/batt_current");
            if (f.exists()) {
                return OneLineReader.getValue(f, false);
            }
        }

        // nexus one cyangoenmod
        f = new File("/sys/devices/platform/ds2784-battery/getcurrent");
        if (f.exists()) {
            return OneLineReader.getValue(f, true);
        }

        // sony ericsson xperia x1
        f = new File("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/power_supply/ds2746-battery/current_now");
        if (f.exists()) {
            return OneLineReader.getValue(f, false);
        }

        // xdandroid
        /*if (Build.MODEL.equalsIgnoreCase("MSM")) {*/
            f = new File("/sys/devices/platform/i2c-adapter/i2c-0/0-0036/power_supply/battery/current_now");
            if (f.exists()) {
                return OneLineReader.getValue(f, false);
            }
        /*}*/

        // droid eris
        f = new File("/sys/class/power_supply/battery/smem_text");      
        if (f.exists()) {
            Long value = SMemTextReader.getValue();
            if (value != null)
                return value;
        }

        // htc sensation / evo 3d
        f = new File("/sys/class/power_supply/battery/batt_attr_text");
        if (f.exists())
        {
            Long value = BattAttrTextReader.getValue();
            if (value != null)
                return value;
        }

        // some htc devices
        f = new File("/sys/class/power_supply/battery/batt_current");
        if (f.exists())
            return OneLineReader.getValue(f, false);

        // nexus one
        f = new File("/sys/class/power_supply/battery/current_now");
        if (f.exists())
            return OneLineReader.getValue(f, true);

        // samsung galaxy vibrant       
        f = new File("/sys/class/power_supply/battery/batt_chg_current");
        if (f.exists())
            return OneLineReader.getValue(f, false);

        // sony ericsson x10
        f = new File("/sys/class/power_supply/battery/charger_current");
        if (f.exists())
            return OneLineReader.getValue(f, false);

        // Nook Color
        f = new File("/sys/class/power_supply/max17042-0/current_now");
        if (f.exists())
            return OneLineReader.getValue(f, false);

        return null;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Android 手机的电池电流值 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef

随机推荐

  • 如何实现“编辑”菜单的“撤消”、“剪切”、“粘贴”和“复制”功能?

    问候 对于我的一个应用程序 我正在尝试实现一个 编辑 菜单 该菜单通常有标准条目Undo Cut Copy and Paste 默认情况下不存在此菜单 用户似乎期望它尤其是在 Mac OS X 上 有没有一种更简单的方法来实现这一点 而无需
  • 发布带有不安全代码的 Web 应用程序

    我正在尝试发布一个 Web 应用程序 使用 VS2012 Web 我需要在其中运行 vb 脚本 该脚本当前无法正确运行 可能是因为缺乏权限 我目前正在尝试以用户身份运行它并提供一些凭据 我必须提供的密码必须位于System Security
  • 在 C 中“声明”字符串的最佳方法

    我是 C 世界的新手 来自 PHP 我正在玩字符串 我知道没有这种类型的数据 我的问题是 声明 字符串的最佳方式是什么 经过一些研究 我得出了这一点 char str 40 Here is my text char str Here is
  • C++ 中的 Mixins、可变参数模板和 CRTP

    场景如下 我想要一个可以有可变数量的 mixin 的主机类 对于可变参数模板来说并不是太难 例如参见http citeseerx ist psu edu viewdoc summary doi 10 1 1 103 144 但是 我还希望
  • IllegalStateException:适配器的内容已更改但ListView未收到通知

    我使用自定义 ArrayAdapter 在 AutocompleteTextView 上设置适配器 AddressAdapter 扩展 ArrayAdapter public class AutoCompleteAdapter extend
  • C# 在内存中表示负整数并将其强制转换的方式

    C 有多种值类型 每种类型都有自己的用途 Int32 的范围从 0x7FFFFFFF 1 到 0x7FFFFFFF 并且从我运行过的每台机器来看 似乎 unchecked int 0xFFFFFFFF 总是得到 1 的结果值 情况总是如此吗
  • `form_for` 正在绕过模型访问器。怎样才能让它停止呢? (或者:如何制作自定义属性序列化器?)

    我将这些方法设置为自动加密值 class User lt ApplicationRecord def name val super val encrypt end def name super decrypt end 当我尝试提交表格并出现
  • 是否可以获取Python中的关键字列表?

    我想获取所有 Python 关键字作为字符串的列表 如果我能为内置函数做类似的事情 那就太好了 像这样的东西 import syntax print syntax keywords prints print if for etc 它们都列在
  • 以编程方式设置 Android 手机的背景

    我想允许用户从图像列表中选择背景 用户单击其中一张图像 该图像将用作他的手机的背景 我的应用程序应该只是 Android 默认图库的另一个版本 是否可以通过编程方式设置手机壁纸 首先 您需要在您的中设置权限Manifest xml file
  • 从 docker 容器内结构化日志记录到日志

    从 docker 容器内将结构化日志写入日志的最佳方法是什么 例如 我有一个使用以下方式编写的应用程序sd journal 发送我没有尝试更改应用程序 而是尝试通过 v var log systemd journal var log sys
  • 6NF和历史属性数据

    当使用根据6NF原则规范化的数据库时 您将如何存储历史属性数据 比方说我们采取这个例子来自 PerformanceDBA 但有以下额外要求 我们需要存储所有产品的历史数据 我们应该 能够只输入一个日期并获得属性的快照 那个特定时间的产品 一
  • CSVWriter 在写入数据时不将数据保存到文件中

    Python 新手对 csv 模块感到有点沮丧 按照这个速度 如果我自己编写文件解析器会更容易 但我想以 Pythonic 的方式做事 我写了一个小 python 脚本 应该将我的数据保存到 CSV 文件中 这是我的代码片段 import
  • C# 列表到 ICollection

    这很奇怪 我试图在构造函数中使用 List 初始化 ICollection 但会发生这种情况 Schedules new List
  • 从 char* 移动 std::string 的构造函数

    我有一个函数f返回一个char 函数文档说 The user must delete returned string 我想构建一个std string从中 要做的琐碎事情是 char cstring f std string s cstri
  • 将许多文本文件批量上传到 MediaWiki

    我有很多文本文件想要上传到运行 MediaWiki 的 wiki 我什至不知道这是否真的可能 但我想尝试一下 每个文本文件的名称将是 wiki 页面的标题 一个文件对应一个 wiki 页面 我想上传程序所在文件夹中的所有文本文件 也许要求你
  • sqlite3.OperationalError:无法识别的标记:“01T00”Python日期戳

    我在将值插入 SQLite 数据库时遇到问题 我从挪威议会网站 data stortinget no 下载的数据 我得到的错误是 sqlite3 OperationalError 无法识别的令牌 01T00 这是发生错误的方法 我知道此摘录
  • XDocument.Load() 错误

    我有一些代码 WebRequest request HttpWebRequest Create url WebResponse response request GetResponse using System IO StreamReade
  • 如何缓存表格视图的某些内容?

    我有一个表格视图 其中包含填充单元格的大图像 并且行高是根据图像大小设置的 不幸的是 当滚动到下一个单元格时 表格会严重抖动 有人告诉我 如果我在将行高和图像加载到表中之前对其进行缓存 那么我的表视图将滚动得更顺畅 我的所有数据都存储在 p
  • 如何在 Swift 中调用 Objective-C 类别方法

    在 Swift 中如何调用这样的 Objective C 类别方法 UIColor colorWithHexString NSString hex alpha float alpha 编译器会自动查找常见的 ObjC 命名模式并用 Swif
  • 获取 Android 手机的电池电流值

    我正在尝试收集 Android G1 手机的电量使用统计数据 我有兴趣了解电压和电流的值 然后能够收集本报告中报告的统计数据PDF 我可以通过注册意向接收器来接收 ACTION BATTERY CHANGED 的广播来获取电池电压的值 但问