nowindxdw
11/2/2017 - 7:44 AM

android 调节屏幕亮度

/*
 *
 *   Copyright © 2014 Chengdu WeShare Technology
 *   All rights reserved.
 *
 *   Filename:
 *   -----------------------------------------------------------------
 *   YYYY-mm-dd  ticket#XXX
 *
 *
 */

package im.weshare.widgets;

import android.app.DialogFragment;
import android.content.ContentResolver;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.TextView;

import tv.lesee.R;

/**
 * Created by dawei on 2015/6/11.
 * this file should be used with layout_brightness.xml
 */
public class BrightnessDialog extends DialogFragment{

    private SeekBar brightbar;

    private int brightness;

    private ContentResolver cResolver;

    private Window window;

    TextView txtPerc;



    public View onCreateView(LayoutInflater inflater, ViewGroup container,

                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.layout_brightness, null);

        getDialog().setTitle("Slide To Change Brightness");

        brightbar = (SeekBar) view.findViewById(R.id.brightbar);

        txtPerc = (TextView) view.findViewById(R.id.txt_percentage);

        cResolver = getActivity().getContentResolver();

        window = getActivity().getWindow();

        brightbar.setMax(255);

        brightbar.setKeyProgressIncrement(1);

        try {

            brightness = android.provider.Settings.System.getInt(cResolver,

                    android.provider.Settings.System.SCREEN_BRIGHTNESS);

        } catch (Settings.SettingNotFoundException e) {

// TODO Auto-generated catch block

            Log.e("Error", "cannot access system brightness");
            e.printStackTrace();

        }

        brightbar.setProgress(brightness);

        brightbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                    @Override
                    public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

                        if (i <= 20) {

                            brightness=20;

                        }

                        else brightness=i;



                        float perc = (brightness/(float)255)*100;



                        txtPerc.setText((int)perc+"%");
                    }

                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {

                    }

                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                        android.provider.Settings.System

                                .putInt(cResolver,

                                        android.provider.Settings.System.SCREEN_BRIGHTNESS,

                                        brightness);



                        WindowManager.LayoutParams layoutpars = window.getAttributes();

                        layoutpars.screenBrightness = brightness / (float) 255;

                        window.setAttributes(layoutpars);
                    }
                });

        return view;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~
  ~   Copyright © 2014 Chengdu WeShare Technology
  ~   All rights reserved.
  ~
  ~   Filename:
  ~   layout_brightness
  ~   YYYY-mm-dd  ticket#XXX
  ~
  ~
  -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <SeekBar
        android:id="@+id/brightbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"/>
    <TextView
        android:id="@+id/txt_percentage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textAppearance="?android:textAppearanceLarge"
        android:text="0%"
        />

</LinearLayout>
通过弹出dialogfragment方式调节亮度