【问题标题】:Change image on battery level Android在电池电量 Android 上更改图像
【发布时间】:2013-06-30 13:22:22
【问题描述】:

我的应用程序显示电池电量。我有三个电池图像;一绿一黄一红。我想在电池电量变化时将这些图像放在图像视图中。例如:当电池电量为 100% 时,将有绿色电池,当 50% 为黄色时,20% 为红色。我该怎么做?现在我在列表视图中有一个静态图像,就像这样:

            <ImageView
                android:id="@+id/BatteryInfoimage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="image"
                android:adjustViewBounds="true"
                android:src="@drawable/battery"
            />

谢谢

【问题讨论】:

    标签: android android-imageview battery batterylevel


    【解决方案1】:

    您可以使用BatteryManager 获取电池电量。见文档here

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

    现在从代码中根据batterPct设置具体的图片

    要监控更改,请使用以下内容

    声明一个广播接收器

    <receiver android:name=".PowerConnectionReceiver">
      <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
      </intent-filter>
    </receiver>
    

    在关联的 BroadcastReceiver 实现中,您可以提取当前的充电状态和方法,如上一步所述。

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

    【讨论】:

    • 是的,但是当batteryPct达到那个水平时,如何插入图像并更改它? (100%、50% 和 20%)?我认为都是 java 的。
    • 谢谢,要插入图片吗?
    • 只需设置背景..setBackGroundResource
    • 但是,我需要做类似的事情吗:if (level&lt;100) ImageView i = (ImageView) findViewById( R.id.BatteryInfoimage ); i.setImageResource(R.drawable.battery);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多