电池温度返回 null

Posted

技术标签:

【中文标题】电池温度返回 null【英文标题】:battery temperature returns null 【发布时间】:2012-07-09 17:52:19 【问题描述】:

我有问题。 :) 它很小,但如果有人能提供帮助,我们将不胜感激!

问题是我想要获取 android 设备的电池信息,但它返回 null。我已经做了所有正确的事情,但无法找出错误。 :(

protected void onCreate(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.resources_battery);

    BroadcastReceiver batteryData = new BroadcastReceiver() 
        String tech,temp;
        int level;
        @Override
        public void onReceive(Context context, Intent intent) 
            // TODO Auto-generated method stub
            tech = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
            temp = intent.getStringExtra(BatteryManager.EXTRA_TEMPERATURE);

            TextView technology = (TextView) findViewById(R.id.Appres_BatType);
            technology.setText("Current Technology : " + tech);
            TextView Tempreture = (TextView) findViewById(R.id.Appres_Battemp);
            Tempreture.setText("Current Battery Tempreature : " +temp);
        
    ;

    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryData, filter);

上面是我编写的用于获取 temp 的代码,但它返回 null! 请帮忙!

我将代码更改为这个 bt 仍然返回零!

temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

【问题讨论】:

【参考方案1】:

temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

是获取温度的正确方法。

这对我有用:

protected void onCreate(Bundle savedInstanceState) 
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.resources_battery);

BroadcastReceiver batteryData = new BroadcastReceiver() 
    String tech;
    int level,temp;
    @Override
    public void onReceive(Context context, Intent intent) 
        // TODO Auto-generated method stub
        tech = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
        level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
        temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

        TextView technology = (TextView) findViewById(R.id.Appres_BatType);
        technology.setText("Current Technology : " + tech);
        TextView Tempreture = (TextView) findViewById(R.id.Appres_Battemp);
        Tempreture.setText("Current Battery Tempreature : " +temp);
    
;

IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryData, filter);

也许您的设备不能正确报告电池温度?我的设备 (Galaxy Nexus) 报告:330(1/10 摄氏度,请参阅this 问题)。

【讨论】:

我正在 AVD 上测试应用程序。我是 android 开发新手,希望 AVD 包含电池信息! AVD 将返回 0(而不是 Null,如果您使用上述代码)。真实设备将返回实际值(例如我手机上的 330)。 谢谢老兄!如果我敢问这个,我会一直在想如何解决这个问题! :) 再次感谢! 这很有用!一个小问题:-1 是一个相当糟糕的默认值,因为它代表 -0.1 摄氏度。最好使用更难以置信的值,例如 -999。【参考方案2】:

您只需将 temp 更改为 int 并使用您编写的最后一行

protected void onCreate(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.resources_battery);

    BroadcastReceiver batteryData = new BroadcastReceiver() 
    String tech;
    int level,temp;
        @Override
        public void onReceive(Context context, Intent intent) 
            // TODO Auto-generated method stub
            tech = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
            level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
            temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,-1);

            TextView technology = (TextView) findViewById(R.id.Appres_BatType);
            technology.setText("Current Technology : " + tech);
            TextView Tempreture = (TextView) findViewById(R.id.Appres_Battemp);
            Tempreture.setText("Current Battery Tempreature : " +temp);
        
    ;

    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryData, filter);

【讨论】:

我还不能评论其他帖子 :( 但是在 AVD 上它将显示 0,而不是 null。因此,如果您的 TextView 显示 0,它应该可以在真实设备上工作我正在测试的设备on (one x) 返回 305 到 330

以上是关于电池温度返回 null的主要内容,如果未能解决你的问题,请参考以下文章

Android 电池温度正确数据

当电池温度超过限制时通知用户

电池中的NTC电阻是啥电阻

基于Android 9.0 电池温度异常提醒

电池NTC(温度过高或者过低停止充电)

如何在 iOS 中获取电池温度详细信息?