休眠时间,屏幕亮度,battery相关
修改系统属性,首先需要如下的权限
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
休眠时间
/**
* The screen backlight brightness between 0 and 255.
*/
public static final String SCREEN_BRIGHTNESS = "screen_brightness";
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 5000);
充电相关
// values for "status" field in the ACTION_BATTERY_CHANGED Intent
public static final int BATTERY_STATUS_UNKNOWN = 1;
public static final int BATTERY_STATUS_CHARGING = 2;
public static final int BATTERY_STATUS_DISCHARGING = 3;//
public static final int BATTERY_STATUS_NOT_CHARGING = 4;
public static final int BATTERY_STATUS_FULL = 5;
// values of the "plugged" field in the ACTION_BATTERY_CHANGED intent.
// These must be powers of 2.【2的幂】交流电,usb,无线充电
/** Power source is an AC charger. */
public static final int BATTERY_PLUGGED_AC = 1;
/** Power source is a USB port. */
public static final int BATTERY_PLUGGED_USB = 2;
/** Power source is wireless. */
public static final int BATTERY_PLUGGED_WIRELESS = 4;
// values for "health" field in the ACTION_BATTERY_CHANGED Intent
//电池健康状态,过冷,过热,未知异常,电压过高等
public static final int BATTERY_HEALTH_UNKNOWN = 1;
public static final int BATTERY_HEALTH_GOOD = 2;
public static final int BATTERY_HEALTH_OVERHEAT = 3;
public static final int BATTERY_HEALTH_DEAD = 4;
public static final int BATTERY_HEALTH_OVER_VOLTAGE = 5;
public static final int BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6;
public static final int BATTERY_HEALTH_COLD = 7;
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the current status constant.
*/
public static final String EXTRA_STATUS = "status";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the current health constant.
*/
public static final String EXTRA_HEALTH = "health";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* boolean indicating whether a battery is present.
*/
public static final String EXTRA_PRESENT = "present";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer field containing the current battery level, from 0 to
* {@link #EXTRA_SCALE}.
*/
public static final String EXTRA_LEVEL = "level";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the maximum battery level.
*/
public static final String EXTRA_SCALE = "scale";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the resource ID of a small status bar icon
* indicating the current battery state.
*/
public static final String EXTRA_ICON_SMALL = "icon-small";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer indicating whether the device is plugged in to a power
* source; 0 means it is on battery, other constants are different
* types of power sources.默认0表示用的是电池,其他的就是上边的1,2,4的充电方式了
*/
public static final String EXTRA_PLUGGED = "plugged";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the current battery voltage level.
*/
public static final String EXTRA_VOLTAGE = "voltage";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* integer containing the current battery temperature.
*/
public static final String EXTRA_TEMPERATURE = "temperature";
/**
* Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
* String describing the technology of the current battery.
*/
public static final String EXTRA_TECHNOLOGY = "technology";
电池的打印结果如下,没搞懂,那个status一直都是3,也就是BATTERY_STATUS_DISCHARGING,我电量100是这个,我拔掉电源电量掉到97还是,完事插上电源还是3.。搞不懂
BroadcastReceiver betteryReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int status=intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
int health=intent.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
boolean present=intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false);
int level=intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale=intent.getIntExtra(BatteryManager.EXTRA_SCALE, 1);
int icon_small=intent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL, 0);
int plugged=intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
int voltage=intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0);
int temperature=intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0);
String technology=intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
System.err.println("status=="+status+" health=="+health
+" present=="+present+" level=="+level
+" scale=="+scale+" icon_small=="+icon_small
+" plugged=="+plugged+" voltage=="+voltage
+" temperature=="+temperature+" technology=="+technology);
//status==3 health==2 present==true level==100 scale==100 icon_small==17303430 plugged==2 voltage==4311 temperature==271 technology==Li-ion
}};
@Override
protected void onStart() {
registerReceiver(betteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
super.onStart();
}
@Override
protected void onStop() {
unregisterReceiver(betteryReceiver);
super.onStop();
}
修改屏幕亮度
第一种,修改当前页面的亮度,离开此页面立马回复为系统的
public void changeCurrentBrightnessByWindow(View view) {
WindowManager.LayoutParams params=getWindow().getAttributes();
params.screenBrightness=0.8f;
getWindow().setAttributes(params);
}
public void resetCurrentBrightnessByWindow(View view) {
WindowManager.LayoutParams params=getWindow().getAttributes();
params.screenBrightness=WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;
getWindow().setAttributes(params);
}
BRIGHTNESS_OVERRIDE_NONE的作用就是还原成系统的亮度。
第一种设置完,你会发现当前系统这个亮度设置就不可用了
第二种,修改系统的亮度
android.provider.Settings.System.putInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, 50);
android.provider.Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 5000);