Android6.0調節屏幕亮度顯示

package com.example.ScreenBrightnessTool;


import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.Window;
import android.view.WindowManager;


public class ScreenBrightnessTool
{
    /**
     * Activty自動調節亮度模式
     */
    public static final int ACTIVITY_BRIGHTNESS_AUTOMATIC = -1;
    /**
     * 自動調節模式
     */
    public static final int SCREEN_BRIGHTNESS_MODE_AUTOMATIC = Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
    /**
     * 手動調節模式
     */
    public static final int SCREEN_BRIGHTNESS_MODE_MANUAL = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
    /**
     * 默認亮度
     */
    public static final int SCREEN_BRIGHTNESS_DEFAULT = 75;
    /**
     * 最大亮度
     */
    public static final int MAX_BRIGHTNESS = 100;
    /**
     * 最小亮度
     */
    public static final int MIN_BRIGHTNESS = 0;


    private static final int mMaxBrighrness = 500;
    private static final int mMinBrighrness = 20;


    // 當前系統調節模式
    private boolean sysAutomaticMode;
    // 當前系統亮度值
    private int sysBrightness;


    private Context context;


    //構造函數
    public ScreenBrightnessTool(Context context, int sysBrightness,
            boolean sysAutomaticMode)
    {
        this.context = context;
        this.sysBrightness = sysBrightness;
        this.sysAutomaticMode = sysAutomaticMode;
    }


    /**
     * 創建屏幕亮度工具
     * 
     * @param context
     * @return
     */
    public static ScreenBrightnessTool Builder(Context context)
    {
        int brightness;
        boolean automaticMode;
        try
        {
            // 獲取當前系統亮度值
            brightness = Settings.System.getInt(context.getContentResolver(),
                    Settings.System.SCREEN_BRIGHTNESS);
            // 獲取當前系統調節模式
            automaticMode = Settings.System.getInt(
                    context.getContentResolver(),
                    Settings.System.SCREEN_BRIGHTNESS_MODE) == SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
        }
        catch (SettingNotFoundException e)
        {
            return null;
        }


        return new ScreenBrightnessTool(context, brightness, automaticMode);
    }


    /**
     * 返回當前系統亮度調節模式
     * 
     * @return
     */
    public boolean getSystemAutomaticMode()
    {
        return sysAutomaticMode;
    }


    /**
     * 返回當前系統亮度值
     * 
     * @return
     */
    public int getSystemBrightness()
    {
        return sysBrightness;
    }


    /**
     * 設置調節模式
     * 
     * @param mode
     *            調節模式
     */
    public void setMode(int mode)
    {
        if (mode != SCREEN_BRIGHTNESS_MODE_AUTOMATIC
                && mode != SCREEN_BRIGHTNESS_MODE_MANUAL)
            return;


        sysAutomaticMode = mode == SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
        Settings.System.putInt(context.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE, mode);
    }


    /**
     * 設置屏幕亮度
     * 
     * @param brightness
     *            亮度值,值爲0至100
     */
    public void setBrightness(int brightness)
    {
        int mid = mMaxBrighrness - mMinBrighrness;
        int bri = (int) (mMinBrighrness + mid * ((float) brightness)
                / MAX_BRIGHTNESS);


        ContentResolver resolver = context.getContentResolver();
//        Settings.System
//                .putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, bri);
    }
    
    /**
     * 亮度預覽
     * 
     * @param activity
     *            預覽activity
     * @param brightness
     *            亮度值(0.47~1)
     */


    public static void brightnessPreview(Activity activity, float brightness)
    {
        Window window = activity.getWindow();
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.screenBrightness = brightness;
        window.setAttributes(lp);
    }
    
    /**
     * 亮度預覽
     * 
     * @param activity
     *            預覽activity
     * @param percent
     *            百分比(0.0~1.00)
     */
    public static void brightnessPreviewFromPercent(Activity activity,
            float percent)
    {
        float brightness = percent + (1.0f - percent)
                * (((float) mMinBrighrness) / mMaxBrighrness);
        brightnessPreview(activity, brightness);
    }


}


資源下載鏈接:http://download.csdn.net/detail/qitehuanjue/9686882

發佈了17 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章