Skip to content

Instantly share code, notes, and snippets.

@codingwithsara
Created September 20, 2020 05:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codingwithsara/0cfa1ceced14a2449a4010fde01c6406 to your computer and use it in GitHub Desktop.
Save codingwithsara/0cfa1ceced14a2449a4010fde01c6406 to your computer and use it in GitHub Desktop.
Java (Android Studio) Tutorial - Battery Checker -
package com.codingwithsara.batterychecker;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.BatteryManager;
import android.widget.ImageView;
import android.widget.TextView;
public class BatteryReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TextView statusLabel = ((MainActivity)context).findViewById(R.id.statusLabel);
TextView percentageLabel = ((MainActivity)context).findViewById(R.id.percentageLabel);
ImageView batteryImage = ((MainActivity)context).findViewById(R.id.batteryImage);
String action = intent.getAction();
if (action != null && action.equals(Intent.ACTION_BATTERY_CHANGED)) {
// Status
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
String message = "";
switch (status) {
case BatteryManager.BATTERY_STATUS_FULL:
message = "Full";
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
message = "Charging";
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
message = "Discharging";
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
message = "Not charging";
break;
case BatteryManager.BATTERY_STATUS_UNKNOWN:
message = "Unknown";
break;
}
statusLabel.setText(message);
// Percentage
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
int percentage = level * 100 / scale;
percentageLabel.setText(percentage + "%");
// Image
Resources res = context.getResources();
if (percentage >= 90) {
batteryImage.setImageDrawable(res.getDrawable(R.drawable.b100));
} else if (90 > percentage && percentage >= 65) {
batteryImage.setImageDrawable(res.getDrawable(R.drawable.b75));
} else if (65 > percentage && percentage >= 40) {
batteryImage.setImageDrawable(res.getDrawable(R.drawable.b50));
} else if (40 > percentage && percentage >= 15) {
batteryImage.setImageDrawable(res.getDrawable(R.drawable.b25));
} else {
batteryImage.setImageDrawable(res.getDrawable(R.drawable.b0));
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment