Android屏幕亮度实现

来源:互联网 发布:杭州汉聚网络招聘 编辑:程序博客网 时间:2024/06/06 05:09

1.前几天刚好某某人说屏幕太刺眼,最暗还是不行,我就自己动手给她做一个吧(虽然没有起作用,惭愧)

2.懒得说废话,直接看效果吧

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

3.总的来说,就是修改设为手动调节亮度后,再调节系统的亮度,亮度的值为1-255

4.直接看代码,用到了一个开源库,后面会有说明

package com.xugongming38.light4zyj;import android.Manifest;import android.content.ContentResolver;import android.content.Intent;import android.content.pm.PackageManager;import android.graphics.Color;import android.net.Uri;import android.provider.Settings;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;import com.sdsmdg.harjot.crollerTest.Croller;import org.w3c.dom.Text;public class MainActivity extends AppCompatActivity {    //private static final int  MY_PERMISSIONS_REQUEST =1;    ContentResolver contentResolver;    TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //testPermission();        CheckPermission();        setScrennManualMode();        init();    }    private void CheckPermission() {        if (!Settings.System.canWrite(this)) {            Toast.makeText(this,"请在该设置页面勾选,才可以使用!",Toast.LENGTH_SHORT).show();            Uri selfPackageUri = Uri.parse("package:"                    + this.getPackageName());            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,                    selfPackageUri);            startActivity(intent);        }    }    /*public void testPermission()    {        if (ContextCompat.checkSelfPermission(this,                Manifest.permission.WRITE_SETTINGS)                != PackageManager.PERMISSION_GRANTED)        {            Toast.makeText(this,"给个权限!",Toast.LENGTH_SHORT).show();            ActivityCompat.requestPermissions(this,                    new String[]{Manifest.permission.WRITE_SETTINGS},                    MY_PERMISSIONS_REQUEST);        }    }*/    public void setScrennManualMode() {//设为手动调节         contentResolver = getContentResolver();        try {            int mode = Settings.System.getInt(contentResolver,                    Settings.System.SCREEN_BRIGHTNESS_MODE);            if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {                Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE,                        Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);            }        } catch (Settings.SettingNotFoundException e) {            e.printStackTrace();        }    }    private int getScreenBrightness() {        int defVal = 255;        defVal=Settings.System.getInt(contentResolver,                Settings.System.SCREEN_BRIGHTNESS, defVal);        return defVal;    }    private void init() {        int t=getScreenBrightness();        tv=(TextView) findViewById(R.id.ls);        tv.setText(t+"");        Croller croller = (Croller) findViewById(R.id.croller);        croller.setIndicatorWidth(10);        croller.setBackCircleColor(Color.parseColor("#EDEDED"));        croller.setMainCircleColor(Color.WHITE);        croller.setMax(255);        croller.setStartOffset(45);        croller.setProgress(t);        croller.setProgressPrimaryStrokeWidth((float)20.0);        croller.setProgressSecondaryStrokeWidth((float)20.0);        croller.setIsContinuous(false);        croller.setLabelColor(Color.BLACK);        croller.setProgressPrimaryColor(Color.parseColor("#0B3C49"));        croller.setIndicatorColor(Color.parseColor("#0B3C49"));        croller.setProgressSecondaryColor(Color.parseColor("#EEEEEE"));        croller.setOnProgressChangedListener(new Croller.onProgressChangedListener() {            @Override            public void onProgressChanged(int progress) {                if(progress<0) progress=0;                if(progress>255) progress=255;                tv.setText(progress+"");                try{                    Settings.System.putInt(contentResolver,                            Settings.System.SCREEN_BRIGHTNESS, progress);                }                catch (Exception localException){                    localException.printStackTrace();                    Toast.makeText(MainActivity.this,localException.toString(),Toast.LENGTH_LONG).show();                }        }});    }    /*    @Override    public void onRequestPermissionsResult(int requestCode,                                           String permissions[], int[] grantResults) {        switch (requestCode) {            case MY_PERMISSIONS_REQUEST: {                // If request is cancelled, the result arrays are empty.                if (grantResults.length > 0                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    // permission was granted, yay! Do the                    // contacts-related task you need to do.                } else {                    Toast.makeText(this,"为什么不给权限!!!",Toast.LENGTH_SHORT).show();                }                return;            }        }    }*/}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.xugongming38.light4zyj.MainActivity">    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center_horizontal"        android:layout_gravity="center"        android:text="---专属" />    <com.sdsmdg.harjot.crollerTest.Croller        android:id="@+id/croller"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_centerInParent="true"        app:back_circle_color="#EDEDED"        app:indicator_color="#0B3C49"        app:indicator_width="10"        app:is_continuous="true"        app:label_color="#000000"        app:main_circle_color="#FFFFFF"        app:max="1000"        app:label="亮度"        app:progress_primary_color="#0B3C49"        app:progress_secondary_color="#EEEEEE"        app:start_offset="45" />    <TextView        android:id="@+id/ls"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center_horizontal"        android:layout_centerInParent="true"        android:layout_gravity="center"        android:text="0" /></RelativeLayout>

5.里面用的一个很好看环形进度条的github链接在这我知道你是不会想去看的,里面说了所有用法,不得不说,通过这个,我写个好看的计步器的兴趣又来了,扯远了

6.最后吐槽一下android6.0还是有好多不一样(坑)请求权限问题让我修改了好久,为了借鉴,以前的不管用的请求权限过程代码还是留在注释中。遇到问题就直接问我吧!

1 0
原创粉丝点击