import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
public class BatteryActivity extends Activity {
/** Called when the activity is first created. */
private IntentFilter mIntentFilter;
private TextView mHealth;
private TextView mLevel;
private TextView mVoltage;
private TextView mTemperature;
private ImageView image;
private ToggleButton btn_save,btn_sleep;
private final static String ShareState="ModeState";
private SharedPreferences sp ;
private boolean mode_flag=false;
private WifiManager mWifiManager;
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED))
{
int scale = intent.getIntExtra("scale", 100);
int level=intent.getIntExtra("level", 0);
if(level<10)
{
image.setImageResource(R.drawable.battery_00);
}else if(level>=10&&level<20)
{
image.setImageResource(R.drawable.battery_10);
}
else if(level>=20&&level<30)
{
image.setImageResource(R.drawable.battery_20);
}
else if(level>=30&&level<40)
{
image.setImageResource(R.drawable.battery_30);
}
else if(level>=40&&level<50)
{
image.setImageResource(R.drawable.battery_40);
}
else if(level>=50&&level<60)
{
image.setImageResource(R.drawable.battery_50);
}
else if(level>=60&&level<70)
{
image.setImageResource(R.drawable.battery_60);
}
else if(level>=70&&level<80)
{
image.setImageResource(R.drawable.battery_70);
}
else if(level>=80&&level<90)
{
image.setImageResource(R.drawable.battery_80);
}
else if(level>=90&&level<100)
{
image.setImageResource(R.drawable.battery_90);
}
else
image.setImageResource(R.drawable.battery_100);
mLevel.setText("剩余电量:" + String.valueOf(level * 100 / scale) + "%");
mVoltage.setText("电池电压:" + intent.getIntExtra("voltage", 0) +"mV");
mTemperature.setText("电池温度 :" +tenthsToFixedString((intent.getIntExtra("temperature", 0))));
int health = intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN);
String healthString;
if (health == BatteryManager.BATTERY_HEALTH_GOOD) {
healthString = "非常健康";
} else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT) {
healthString = "BATTERY_HEALTH_OVERHEAT";
} else if (health == BatteryManager.BATTERY_HEALTH_DEAD) {
healthString = "BATTERY_HEALTH_DEAD";
} else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE) {
healthString = "BATTERY_HEALTH_OVER_VOLTAGE";
} else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE) {
healthString = "BATTERY_HEALTH_UNSPECIFIED_FAILURE";
} else {
healthString = "不清楚";
}
mHealth.setText("健康状态 :"+healthString);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.battery);
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
sp= getSharedPreferences(ShareState, MODE_PRIVATE);
mWifiManager=(WifiManager) this.getSystemService(Context.WIFI_SERVICE);
mLevel=(TextView) findViewById(R.id.level);
mHealth=(TextView) findViewById(R.id.health);
mTemperature=(TextView) findViewById(R.id.temperature);
mVoltage=(TextView) findViewById(R.id.voltage);
image=(ImageView) findViewById(R.id.pleve);
btn_save=(ToggleButton) findViewById(R.id.save);
btn_sleep=(ToggleButton) findViewById(R.id.sleep);
mode_flag=sp.getBoolean("Save_KEY", true);
if(mode_flag)
btn_save.setChecked(true);
else
btn_save.setChecked(false);
mode_flag=sp.getBoolean("Sleep_KEY", true);
if(mode_flag)
btn_sleep.setChecked(true);
else
btn_sleep.setChecked(false);
registerReceiver(mIntentReceiver, mIntentFilter);
btn_save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//存入数据
Editor editor = sp.edit();
if(btn_save.isChecked())
{
Toast.makeText(BatteryActivity.this, "touch in", 1000).show();
stopAutoBrightness(BatteryActivity.this);
setBrightness(BatteryActivity.this, 65);
if(mWifiManager.isWifiEnabled())
mWifiManager.setWifiEnabled(false);
editor.putBoolean("Save_KEY", true);
editor.commit();
}
else
{
Toast.makeText(BatteryActivity.this, "touch out", 1000).show();
setBrightness(BatteryActivity.this, 125);
mWifiManager.setWifiEnabled(true);
startAutoBrightness(BatteryActivity.this) ;
editor.putBoolean("Save_KEY", false);
editor.commit();
}
}
});
btn_sleep.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//存入数据
Editor editor = sp.edit();
if(btn_sleep.isChecked())
{
setAirplaneModeOn(BatteryActivity.this,true);
editor.putBoolean("Sleep_KEY", true);
editor.commit();
}
else
{
setAirplaneModeOn(BatteryActivity.this,false);
editor.putBoolean("Sleep_KEY", false);
editor.commit();
}
if(getAirplaneMode(BatteryActivity.this))
{
Toast.makeText(BatteryActivity.this, "AirMode", 1000).show();
}
else
Toast.makeText(BatteryActivity.this, "NotAirMode", 1000).show();
}
});
}
private String tenthsToFixedString(int x) {
int tens = x / 10;
return Integer.toString(tens) + "." + (x - 10 * tens);
}
/*
* 判断手机是否是飞行模式
* @param context
* @return
*/
public static boolean getAirplaneMode(Context context){
int isAirplaneMode = Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) ;
return (isAirplaneMode == 1)?true:false;
}
/**
* 设置手机飞行模式
* @param context
* @param enabling true:设置为飞行模式 false:取消飞行模式
*/
public static void setAirplaneModeOn(Context context,boolean enabling) {
Settings.System.putInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON,enabling ? 1 : 0);
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", enabling);
context.sendBroadcast(intent);
}
//------------省电亮度调节-------------------
public static void setBrightness(Activity activity, int brightness) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
// Log.d("lxy", "set lp.screenBrightness == " + lp.screenBrightness);
activity.getWindow().setAttributes(lp);
//save
ContentResolver resolver = activity.getContentResolver();
saveBrightness( resolver, brightness);
}
public static void saveBrightness(ContentResolver resolver, int brightness) {
Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(resolver, "screen_brightness", brightness);
resolver.notifyChange(uri, null);
}
public static int getScreenBrightness(Activity activity) {
int nowBrightnessValue = 0;
ContentResolver resolver = activity.getContentResolver();
try{
nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
}
catch(Exception e) {
e.printStackTrace();
}
return nowBrightnessValue;
}
/** * 停止自动亮度调节 */
public static void stopAutoBrightness(Activity activity) {
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
/** * 开启亮度自动调节 *
* @param activity */
public static void startAutoBrightness(Activity activity) {
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
/** * 判断是否开启了自动亮度调节 */
public static boolean isAutoBrightness(ContentResolver aContentResolver) {
boolean automicBrightness = false;
try{
automicBrightness = Settings.System.getInt(aContentResolver,
Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
}
catch(SettingNotFoundException e)
{
e.printStackTrace();
}
return automicBrightness;
}
}
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
public class BatteryActivity extends Activity {
/** Called when the activity is first created. */
private IntentFilter mIntentFilter;
private TextView mHealth;
private TextView mLevel;
private TextView mVoltage;
private TextView mTemperature;
private ImageView image;
private ToggleButton btn_save,btn_sleep;
private final static String ShareState="ModeState";
private SharedPreferences sp ;
private boolean mode_flag=false;
private WifiManager mWifiManager;
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED))
{
int scale = intent.getIntExtra("scale", 100);
int level=intent.getIntExtra("level", 0);
if(level<10)
{
image.setImageResource(R.drawable.battery_00);
}else if(level>=10&&level<20)
{
image.setImageResource(R.drawable.battery_10);
}
else if(level>=20&&level<30)
{
image.setImageResource(R.drawable.battery_20);
}
else if(level>=30&&level<40)
{
image.setImageResource(R.drawable.battery_30);
}
else if(level>=40&&level<50)
{
image.setImageResource(R.drawable.battery_40);
}
else if(level>=50&&level<60)
{
image.setImageResource(R.drawable.battery_50);
}
else if(level>=60&&level<70)
{
image.setImageResource(R.drawable.battery_60);
}
else if(level>=70&&level<80)
{
image.setImageResource(R.drawable.battery_70);
}
else if(level>=80&&level<90)
{
image.setImageResource(R.drawable.battery_80);
}
else if(level>=90&&level<100)
{
image.setImageResource(R.drawable.battery_90);
}
else
image.setImageResource(R.drawable.battery_100);
mLevel.setText("剩余电量:" + String.valueOf(level * 100 / scale) + "%");
mVoltage.setText("电池电压:" + intent.getIntExtra("voltage", 0) +"mV");
mTemperature.setText("电池温度 :" +tenthsToFixedString((intent.getIntExtra("temperature", 0))));
int health = intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN);
String healthString;
if (health == BatteryManager.BATTERY_HEALTH_GOOD) {
healthString = "非常健康";
} else if (health == BatteryManager.BATTERY_HEALTH_OVERHEAT) {
healthString = "BATTERY_HEALTH_OVERHEAT";
} else if (health == BatteryManager.BATTERY_HEALTH_DEAD) {
healthString = "BATTERY_HEALTH_DEAD";
} else if (health == BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE) {
healthString = "BATTERY_HEALTH_OVER_VOLTAGE";
} else if (health == BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE) {
healthString = "BATTERY_HEALTH_UNSPECIFIED_FAILURE";
} else {
healthString = "不清楚";
}
mHealth.setText("健康状态 :"+healthString);
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.battery);
mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
sp= getSharedPreferences(ShareState, MODE_PRIVATE);
mWifiManager=(WifiManager) this.getSystemService(Context.WIFI_SERVICE);
mLevel=(TextView) findViewById(R.id.level);
mHealth=(TextView) findViewById(R.id.health);
mTemperature=(TextView) findViewById(R.id.temperature);
mVoltage=(TextView) findViewById(R.id.voltage);
image=(ImageView) findViewById(R.id.pleve);
btn_save=(ToggleButton) findViewById(R.id.save);
btn_sleep=(ToggleButton) findViewById(R.id.sleep);
mode_flag=sp.getBoolean("Save_KEY", true);
if(mode_flag)
btn_save.setChecked(true);
else
btn_save.setChecked(false);
mode_flag=sp.getBoolean("Sleep_KEY", true);
if(mode_flag)
btn_sleep.setChecked(true);
else
btn_sleep.setChecked(false);
registerReceiver(mIntentReceiver, mIntentFilter);
btn_save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//存入数据
Editor editor = sp.edit();
if(btn_save.isChecked())
{
Toast.makeText(BatteryActivity.this, "touch in", 1000).show();
stopAutoBrightness(BatteryActivity.this);
setBrightness(BatteryActivity.this, 65);
if(mWifiManager.isWifiEnabled())
mWifiManager.setWifiEnabled(false);
editor.putBoolean("Save_KEY", true);
editor.commit();
}
else
{
Toast.makeText(BatteryActivity.this, "touch out", 1000).show();
setBrightness(BatteryActivity.this, 125);
mWifiManager.setWifiEnabled(true);
startAutoBrightness(BatteryActivity.this) ;
editor.putBoolean("Save_KEY", false);
editor.commit();
}
}
});
btn_sleep.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//存入数据
Editor editor = sp.edit();
if(btn_sleep.isChecked())
{
setAirplaneModeOn(BatteryActivity.this,true);
editor.putBoolean("Sleep_KEY", true);
editor.commit();
}
else
{
setAirplaneModeOn(BatteryActivity.this,false);
editor.putBoolean("Sleep_KEY", false);
editor.commit();
}
if(getAirplaneMode(BatteryActivity.this))
{
Toast.makeText(BatteryActivity.this, "AirMode", 1000).show();
}
else
Toast.makeText(BatteryActivity.this, "NotAirMode", 1000).show();
}
});
}
private String tenthsToFixedString(int x) {
int tens = x / 10;
return Integer.toString(tens) + "." + (x - 10 * tens);
}
/*
* 判断手机是否是飞行模式
* @param context
* @return
*/
public static boolean getAirplaneMode(Context context){
int isAirplaneMode = Settings.System.getInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) ;
return (isAirplaneMode == 1)?true:false;
}
/**
* 设置手机飞行模式
* @param context
* @param enabling true:设置为飞行模式 false:取消飞行模式
*/
public static void setAirplaneModeOn(Context context,boolean enabling) {
Settings.System.putInt(context.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON,enabling ? 1 : 0);
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", enabling);
context.sendBroadcast(intent);
}
//------------省电亮度调节-------------------
public static void setBrightness(Activity activity, int brightness) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
// Log.d("lxy", "set lp.screenBrightness == " + lp.screenBrightness);
activity.getWindow().setAttributes(lp);
//save
ContentResolver resolver = activity.getContentResolver();
saveBrightness( resolver, brightness);
}
public static void saveBrightness(ContentResolver resolver, int brightness) {
Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(resolver, "screen_brightness", brightness);
resolver.notifyChange(uri, null);
}
public static int getScreenBrightness(Activity activity) {
int nowBrightnessValue = 0;
ContentResolver resolver = activity.getContentResolver();
try{
nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);
}
catch(Exception e) {
e.printStackTrace();
}
return nowBrightnessValue;
}
/** * 停止自动亮度调节 */
public static void stopAutoBrightness(Activity activity) {
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
/** * 开启亮度自动调节 *
* @param activity */
public static void startAutoBrightness(Activity activity) {
Settings.System.putInt(activity.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
/** * 判断是否开启了自动亮度调节 */
public static boolean isAutoBrightness(ContentResolver aContentResolver) {
boolean automicBrightness = false;
try{
automicBrightness = Settings.System.getInt(aContentResolver,
Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
}
catch(SettingNotFoundException e)
{
e.printStackTrace();
}
return automicBrightness;
}
}