【问题标题】:How get battery temperature with decimal?如何用小数获取电池温度?
【发布时间】:2013-08-22 14:40:16
【问题描述】:

如何获取带小数的电池温度?其实我可以用

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

但是通过这种方式,结果将是例如 36 °C.. 我想要一些可以告诉我的东西 36.4 °C 我该怎么做?

【问题讨论】:

    标签: android android-intent battery temperature


    【解决方案1】:

    谷歌说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 作为 int,因为只有一个操作数需要是浮点数,结果也是一个。

    【讨论】:

    • 类似float temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)/10;?
    • 完全正确。 android 只是使用 int 来节省一些内存,因为电池不会经常超过 43 亿度。
    • 看起来不错。随着你的解决方案的工作..但现在它卡在“35.0°C”..我试着等待,看看是否有什么变化
    • Using your example: int returnedValue = 270; float castedValue = ((float) returnedValue) / 10; 要我写在int temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);之后吗?
    • 我不明白你把温度的意图放在哪里int returnedValue = 270; float castedValue = ((float) returnedValue) / 10;我错过了一些东西
    【解决方案2】:
        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";
        }
    

    【讨论】:

      【解决方案3】:

      这是我知道您可以获取电池温度的唯一方法,并且始终是 int。

      根据文档:

      公共静态最终字符串EXTRA_TEMPERATURE

      ACTION_BATTERY_CHANGED 的附加值:整数 包含当前电池 温度。

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

      float ftemp = temp/10.0f;

      【讨论】:

      • 感谢重播。有没有办法转换整数?例如,此应用程序有小数 lh4.ggpht.com/…
      • 可以做类似的事情:int i = 56472201; float e = ((float) i)/1000000.0 double e = i / 1000000.0; ?
      • 你知道温度是否总是以0.0°结尾吗?如果是这样,您可以将 int 更改为这样的浮点数: temp/10.0f
      • 在什么意义上“如果温度总是以 0.0° 结尾?”
      • 对不起,我以为应用程序只是故意添加了 0,但你得到的数字可以除以 10.0f,如下所示:temp/10.0f 得到 1 个十进制值
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多