How to Check the Type of Charging (USB/AC) in Android Programmatically?
When altering the frequency of the background updates to scale back the effect of these updates on battery life, checking the present battery level and charging state is a superb place to start. The battery-life impact of performing application updates depends on the battery level and charging state of the device. The effect of performing updates while the device is charging over AC is negligible, so in most cases, maximize the refresh rate whenever the device is connected to a wall charger. Conversely, if the device is discharging, reducing the update rate helps prolong the battery life. Similarly, you’ll check the battery charge level, potentially reducing the frequency of—or even stopping—the updates when the battery charge is almost exhausted. There are 2 types of charging in any smartphone:
- USB Charging: Universal Serial Bus Charging: Charging from USB outlets such as USB port of a Laptop: 500 milliamps max.
- AC Charging: Alternating Current Charging: Charging from a wall charger: 2 amps max.
A sample GIF is given below to get an idea about what we are going to do in this article. Note that we are going to implement this project using the Kotlin language.
Approach
Step 1: Create a New Project
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Kotlin as the programming language.
Step 2: Working with the activity_main.xml file
Go to the activity_main.xml file, which represents the UI of the project. Add a Button, so whenever the user will click on the Button a Toast message with types of battery charging will be popped up on the screen. Below is the code for the activity_main.xml file.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > < Button android:id = "@+id/btn" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_centerInParent = "true" android:text = "Click" /> </ RelativeLayout > |
Step 3: Working with the MainActivity.kt file
Finally, go to the MainActivity.kt file, and refer the following code. Below is the code for the MainActivity.kt file. Comments are added inside the code to understand the code in more detail.
Kotlin
import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Button onclick will display the type of charging val btn = findViewById<Button>(R.id.btn) btn.setOnClickListener { // Intent to check the actions on battery val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter -> applicationContext.registerReceiver( null , ifilter) } // isCharging if true indicates charging is ongoing and vice-versa val status: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, - 1 ) ?: - 1 val isCharging: Boolean = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL // usbCharge is true when connected to usb port and same with the ac wall charger val chargePlug: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_PLUGGED, - 1 ) ?: - 1 val usbCharge: Boolean = chargePlug == BatteryManager.BATTERY_PLUGGED_USB val acCharge: Boolean = chargePlug == BatteryManager.BATTERY_PLUGGED_AC // Display whatever the state in the form of a Toast when { usbCharge -> { Toast.makeText(applicationContext, "USB Charging" , Toast.LENGTH_LONG).show() } acCharge -> { Toast.makeText(applicationContext, "AC Charging" , Toast.LENGTH_LONG).show() } else -> { Toast.makeText(applicationContext, "Not Charging" , Toast.LENGTH_LONG).show() } } } } } |
Output: Run on Physical Device
Keep an eye on the battery status in the status bar. The sequence of actions:
- Initially not connected.
- Connected to the USB port of the laptop.
- Disconnected.
- Connected to AC wall charger.
- Disconnected.
Contact Us