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;
}
}
全站熱搜
留言列表