【问题标题】:Android How to put Battery information?Android 如何放置电池信息?
【发布时间】:2014-03-17 10:37:21
【问题描述】:

如何在android中将手机的电池电量显示为文本视图?

【问题讨论】:

    标签: java android battery


    【解决方案1】:

    在问任何问题之前,请使用谷歌。顺便点击Here 希望对你有帮助。

    【讨论】:

      【解决方案2】:

      如果您只是想以百分比显示当前电池电量,则无需注册接收器等。这样就可以了:

      IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
      Intent batteryStatus = getActivity().registerReceiver(null, ifilter);
      int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
      int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
      
      float batteryPct = level / (float)scale;
      

      我设备的电池电量目前为 94% - batteryPct 的值为 0.94。

      然后可以像这样在 TextView 中显示:

      textView.setText(Float.toString(batteryPct * 100) + "%"); // Displays '94.0%' using my example value
      

      见:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

      【讨论】:

        【解决方案3】:

        你可以有教程检查here

        【讨论】:

          【解决方案4】:

          教程是Here。特别是:

          int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
          int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
          
          float batteryPct = level / (float)scale;
          

          【讨论】:

            【解决方案5】:

            最好的方法是使用广播接收器,因为每次电池状态发生变化时都会触发 onRecieve,因此当电量下降时,您的值将始终准确。

            在您的活动的 onCreate 中,您需要为电池状态注册一个广播接收器:

                IntentFilter filter = new IntentFilter();
                filter.addAction(Intent.ACTION_POWER_CONNECTED);
                filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
                filter.addAction(Intent.ACTION_BATTERY_CHANGED);
            
            
                batteryMonitor = new batteryChargeMonitor();
                getActivity().registerReceiver(batteryMonitor, filter);
            

            batteryMonitor 类如下所示:

            private class batteryChargeMonitor extends BroadcastReceiver{
            
                public void onReceive(Context context, Intent intent)
                {
                    int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
                    int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
                    int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
            
                    if(status > -1 && scale > -1 && level > -1)
                    {           
            
                               float charge = (level/(float)scale) * 1oo; 
                               Toast.makeText(context, "Battery Charge: " + charge + "%" Toast.LENGTH_LONG).show();
            
                           boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING
                                        || status == BatteryManager.BATTERY_STATUS_FULL;
            
                    }
                }
            }
            

            【讨论】:

              【解决方案6】:

              来自这里的链接link
              接收者

              public class PowerConnectionReceiver extends BroadcastReceiver {
              @Override
              public void onReceive(Context context, Intent intent) { 
                  int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
                  boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                                      status == BatteryManager.BATTERY_STATUS_FULL;
              
                  int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
                  boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
                  boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
              }
              }
              

              AndroidManifest.xml 添加如下

              代码更改

              IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
                Intent batteryStatus = context.registerReceiver(null, ifilter);
              // Are we charging / charged?
              int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
              boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                               status == BatteryManager.BATTERY_STATUS_FULL;
              

              // 我们如何收费?

              int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
              boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
              boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-03-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多