如何获取带小数的电池温度?

8

如何获取带小数的电池温度?实际上,我可以使用以下方法进行计算:

int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);

但是按照这种方式,结果可能是36 °C。我希望能显示36.4 °C。该怎么做?

3个回答

22

谷歌表示here

ACTION_BATTERY_CHANGED的额外信息:包含当前电池温度的整数

返回值是一个int,例如,27.5摄氏度表示为“275”,因此精确到十分之一摄氏度。只需将其转换为浮点数并除以10即可。

使用您的示例:

int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);
float tempTwo = ((float) temp) / 10;

或者

float temp = ((float) intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0) / 10;

你不需要担心10是整数,因为只要一个操作数是浮点数,结果也会是浮点数。


类似这样的编程语句:float temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)/10; - David_D
Android只是使用int来节省一些内存,因为电池很少会达到43亿度以上。 - M.Bennett
看起来不错。你的解决方案有效。但现在它卡在“35.0°C”上了。我会等一下,看看是否会有变化。 - David_D
使用您的示例:int returnedValue = 270; float castedValue = ((float) returnedValue) / 10; 我需要在 "int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);" 后编写它吗? - David_D
我不明白你在这里放置了温度意图int returnedValue = 270; float castedValue = ((float) returnedValue) / 10;,我错过了什么。 - David_D

3
    public static String batteryTemperature(Context context)
    {
        Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));    
        float  temp   = ((float) intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)) / 10;
        return String.valueOf(temp) + "*C";
    }

1
这是我知道获取电池温度的唯一方法,并且始终为整数。根据文档:ACTION_BATTERY_CHANGED的EXTRA_TEMPERATURE字段是包含当前电池温度的整数。但您可以除以10.0f得到一个小数。可使用以下代码:float ftemp = temp/10.0f;

谢谢回复。有没有办法将整数转换?例如,此应用程序具有小数 https://lh4.ggpht.com/yoR8kC9GTLEyKbFFYKohbW1P8z1L00_wYJjKykAIqhhbVMAFxbwiA02s4m9aTSwxBQ=h900-rw - David_D
能否像这样做:`int i = 56472201;float e = ((float) i)/1000000.0double e = i / 1000000.0;`? - David_D
1
你知道温度是否总是以.0°结尾吗?如果是,你可以将int更改为float,如下所示:temp/10.0f - Raúl Juárez
“如果温度总是以.0°结尾,这是什么意思?” - David_D
抱歉,我以为这个应用程序只是故意添加了0,但你得到的数字可以被10.0f整除,像这样:temp/10.0f,以获得1个小数值。 - Raúl Juárez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接