android中屏幕亮度相关设置
16lz
2022-07-25
测试Activity:
[java] view plain copy- packagecom.home.screenbrightness;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.provider.Settings;
- importandroid.widget.SeekBar;
- importandroid.widget.SeekBar.OnSeekBarChangeListener;
- publicclassTestScreenBrightnessActivityextendsActivity{
- privateintbrightness;
- privateSeekBarseekbar;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- seekbar=(SeekBar)findViewById(R.id.main_sb);
- initBrightness();
- seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){
- @Override
- publicvoidonStopTrackingTouch(SeekBarseekBar){
- brightness=seekBar.getProgress();
- seekBar.setProgress(brightness);
- SetAndGetDataUtil.SetData(getApplicationContext(),"test",
- "light",brightness+"");
- }
- @Override
- publicvoidonStartTrackingTouch(SeekBarseekBar){
- }
- @Override
- publicvoidonProgressChanged(SeekBarseekBar,intprogress,
- booleanfromUser){
- intcurProgress=seekBar.getProgress();//得到当前进度值
- //当进度小于70时,设置成70,防止太黑看不见的情况。
- if(curProgress<70){
- curProgress=70;
- }
- //根据当前进度改变屏幕亮度
- Settings.System.putInt(getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS,curProgress);
- curProgress=Settings.System.getInt(getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS,-1);
- BrightnessUtil.setBrightness(TestScreenBrightnessActivity.this,
- curProgress);
- //BrightnessUtil.saveBrightness(TestScreenBrightnessActivity.this,
- //curProgress);
- }
- });
- }
- /**
- *初始化屏幕亮度值
- */
- privatevoidinitBrightness(){
- //如果开启了自动亮度调节,则关闭之
- if(BrightnessUtil.isAutoBrightness(this)){
- BrightnessUtil.stopAutoBrightness(this);
- }
- //读取文件中设置的亮度值
- Stringlight=SetAndGetDataUtil.GetData(this,"test","light");
- if(!"".equals(light)){
- brightness=Integer.valueOf(light);
- }else{
- brightness=BrightnessUtil.getScreenBrightness(this);
- }
- BrightnessUtil.setBrightness(this,brightness);
- seekbar.setProgress(brightness);
- }
- }
存取数据工具类:SetAndGetDataUtil
[java] view plain copy- packagecom.home.screenbrightness;
- importandroid.content.Context;
- importandroid.content.SharedPreferences;
- importandroid.content.SharedPreferences.Editor;
- /**
- *保存数据的工具类
- *
- *@authorAdministrator
- *
- */
- publicclassSetAndGetDataUtil{
- privatestaticSharedPreferencessp;
- @SuppressWarnings("static-access")
- publicstaticvoidSetData(Contextcontext,Stringfilename,Stringkey,
- Stringvalue){
- sp=context.getSharedPreferences(filename,context.MODE_PRIVATE);
- Editoreditor=sp.edit();
- editor.putString(key,value);
- editor.commit();
- }
- @SuppressWarnings("static-access")
- publicstaticStringGetData(Contextcontext,Stringfilename,Stringkey){
- Stringvalue="";
- sp=context.getSharedPreferences(filename,context.MODE_PRIVATE);
- value=sp.getString(key,"");
- returnvalue;
- }
- }
屏幕亮度处理工具类:
[java] view plain copy- packagecom.home.screenbrightness;
- importandroid.app.Activity;
- importandroid.content.ContentResolver;
- importandroid.net.Uri;
- importandroid.provider.Settings;
- importandroid.provider.Settings.SettingNotFoundException;
- importandroid.view.WindowManager;
- /**
- *处理屏幕亮度的工具类
- *
- *@authorAdministrator
- *
- */
- publicclassBrightnessUtil{
- /**
- *判断是否开启了自动亮度调节
- *
- *@paramactivity
- *@return
- */
- publicstaticbooleanisAutoBrightness(Activityactivity){
- booleanisAutoAdjustBright=false;
- try{
- isAutoAdjustBright=Settings.System.getInt(
- activity.getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS_MODE)==Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
- }catch(SettingNotFoundExceptione){
- e.printStackTrace();
- }
- returnisAutoAdjustBright;
- }
- /**
- *获取屏幕的亮度
- *
- *@paramactivity
- *@return
- */
- publicstaticintgetScreenBrightness(Activityactivity){
- intbrightnessValue=0;
- try{
- brightnessValue=android.provider.Settings.System.getInt(
- activity.getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS);
- }catch(Exceptione){
- e.printStackTrace();
- }
- returnbrightnessValue;
- }
- /**
- *设置屏幕亮度
- *
- *@paramactivity
- *@parambrightness
- */
- publicstaticvoidsetBrightness(Activityactivity,intbrightness){
- WindowManager.LayoutParamslp=activity.getWindow().getAttributes();
- lp.screenBrightness=Float.valueOf(brightness)*(1f/255f);
- activity.getWindow().setAttributes(lp);
- }
- /**
- *关闭亮度自动调节
- *
- *@paramactivity
- */
- publicstaticvoidstopAutoBrightness(Activityactivity){
- Settings.System.putInt(activity.getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS_MODE,
- Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
- }
- /**
- *开启亮度自动调节
- *
- *@paramactivity
- */
- publicstaticvoidstartAutoBrightness(Activityactivity){
- Settings.System.putInt(activity.getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS_MODE,
- Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
- }
- /**
- *保存亮度设置状态
- *
- *@paramactivity
- *@parambrightness
- */
- publicstaticvoidsaveBrightness(Activityactivity,intbrightness){
- Uriuri=android.provider.Settings.System
- .getUriFor("screen_brightness");
- ContentResolverresolver=activity.getContentResolver();
- android.provider.Settings.System.putInt(resolver,"screen_brightness",
- brightness);
- resolver.notifyChange(uri,null);
- }
- }
布局文件:
[html] view plain copy- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:orientation="vertical">
- <SeekBar
- android:id="@+id/main_sb"
- style="@android:style/Widget.ProgressBar.Horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:max="255"/>
- </LinearLayout>
记得加上权限:
- <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>
更多学习资料
更多相关文章
- Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
- Android系统配置数据库注释(settings.db)
- android 分辨率及密度详细
- Android屏幕常亮
- Android(安卓)屏幕设置
- android调用setRequestedOrientation之后
- android支持多行的radiogroup
- 实习杂记(27):android中关于横竖屏切换的那些事
- Android获取屏幕大小