Thursday, 6 September 2012

Android Battery Level.

The simple application helps to find the followings of the battery from your Android phone.
  • Battery Level
  • Technology
  • plugin 
  • Health
  • Status


img.i

Design The .xml page like the following 

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_margin="10dip"
    android:id="@+id/batterylevel_text"
    android:textStyle="bold"
    android:text="batterylevel_info"/>
</LinearLayout>

The source -> MainActivity.java


package com.samples.batteryinfo;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends Activity {
TextView textBatteryLevel = null;
String batteryLevelInfo = "Battery Level";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        textBatteryLevel = (TextView)findViewById(R.id.batterylevel_text);
        
        registerBatteryLevelReceiver();
    }

@Override
protected void onDestroy()
{
unregisterReceiver(battery_receiver);

super.onDestroy();
}

private BroadcastReceiver battery_receiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
boolean isPresent = intent.getBooleanExtra("present", false);
String technology = intent.getStringExtra("technology");
int plugged = intent.getIntExtra("plugged", -1);
int scale = intent.getIntExtra("scale", -1);
int health = intent.getIntExtra("health", 0);
int status = intent.getIntExtra("status", 0);
int rawlevel = intent.getIntExtra("level", -1);
            int level = 0;
            
            Bundle bundle = intent.getExtras();
            
            Log.i("BatteryLevel", bundle.toString());
            
            if(isPresent)
            {
           if (rawlevel >= 0 && scale > 0) {
               level = (rawlevel * 100) / scale;
           }
           
           String info = "Battery Level: " + level + "%\n";
           
           info += ("Technology: " + technology + "\n");
           info += ("Plugged: " + getPlugTypeString(plugged) + "\n");
           info += ("Health: " + getHealthString(health) + "\n");
           info += ("Status: " + getStatusString(status) + "\n");
           
           //setBatteryLevelText(info + "\n\n" + bundle.toString());
           setBatteryLevelText(info + "\n\n");

            }
            else
            {
            setBatteryLevelText("Battery not present!!!");
            }
}
};
private String getPlugTypeString(int plugged){
String plugType = "Unknown";
switch(plugged)
{
case BatteryManager.BATTERY_PLUGGED_AC: plugType = "AC"; break;
case BatteryManager.BATTERY_PLUGGED_USB: plugType = "USB"; break;
}
return plugType;
}
private String getHealthString(int health)
{
String healthString = "Unknown";
switch(health)
{
case BatteryManager.BATTERY_HEALTH_DEAD: healthString = "Dead"; break;
case BatteryManager.BATTERY_HEALTH_GOOD: healthString = "Good"; break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: healthString = "Over Voltage"; break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT: healthString = "Over Heat"; break;
case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: healthString = "Failure"; break;
}
return healthString;
}
private String getStatusString(int status)
{
String statusString = "Unknown";
switch(status)
{
case BatteryManager.BATTERY_STATUS_CHARGING: statusString = "Charging"; break;
case BatteryManager.BATTERY_STATUS_DISCHARGING: statusString = "Discharging"; break;
case BatteryManager.BATTERY_STATUS_FULL: statusString = "Full"; break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING: statusString = "Not Charging"; break;
}
return statusString;
}
private void setBatteryLevelText(String text){
textBatteryLevel.setText(text);
}
private void registerBatteryLevelReceiver(){
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(battery_receiver, filter);
}
}

The AndroidManifest.xml look like :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.samples.batteryinfo"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="3" />

</manifest> 



Note: Modify the above code as you requirements.


No comments:

Post a Comment