系统设置[休眠时间,屏幕亮度,battery相关]

休眠时间,屏幕亮度,battery相关

修改系统属性,首先需要如下的权限

休眠时间

 /**
         * 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);
image.png

充电相关

 // 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的作用就是还原成系统的亮度。
第一种设置完,你会发现当前系统这个亮度设置就不可用了


image.png

第二种,修改系统的亮度

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);

你可能感兴趣的:(系统设置[休眠时间,屏幕亮度,battery相关])