2013-08-22 41 views
4

我怎样才能得到带有十进制的电池温度?其实我可以如何用小数获得电池温度?

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

但这种方式的结果将是例如36 °C计算的话..我想要的东西,告诉我36.4 °C我该怎么办?

回答

13

谷歌表示here

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

返回的值是一个int值,例如,27.5℃代表“275”,所以它精确到十分之一摄氏度。只需10

施放此为float和鸿沟使用你的例子:

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

OR

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

您不必担心10因为INT只有一个操作数需要成为浮点数才能使结果成为一个操作数。

+0

类似'float temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)/ 10;'?准确地说是 –

+0

。 android只是使用int来节省一些内存,因为电池通常不会超过43亿度。 –

+0

看起来不错。随着你的解决方案的工作..但现在它卡住“35.0°C”..我试图等待,看看是否有变化 –

1

这是我知道你可以得到电池温度的唯一方法,并且总是一个整数。

根据文档:

公共静态最终字符串EXTRA_TEMPERATURE

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

但是你可以用10.0f除以得到一位小数。

float ftemp = temp/10.0f;

+0

感谢您的重播..有什么办法来转换整数?这个应用程序例如有小数https://lh4.ggpht.com/yoR8kC9GTLEyKbFFYKohbW1P8z1L00_wYJjKykAIqhhbVMAFxbwiA02s4m9aTSwxBQ=h900-rw –

+0

是可能的做一些事情:'int i = 56472201; float e =((float)i)/1000000.0 double e = i/1000000.0;'? –

+0

你知道温度是否始终以.0°结尾?如果是这样,你可以改变你的int像这样的一个浮点数:temp/10.0f –

1
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"; 
    }