android中屏幕亮度相关设置
16lz
2021-01-23
测试Activity:
package com.home.screenbrightness;import android.app.Activity;import android.os.Bundle;import android.provider.Settings;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;public class TestScreenBrightnessActivity extends Activity {private int brightness;private SeekBar seekbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);seekbar = (SeekBar) findViewById(R.id.main_sb);initBrightness();seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {brightness = seekBar.getProgress();seekBar.setProgress(brightness);SetAndGetDataUtil.SetData(getApplicationContext(), "test","light", brightness + "");}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {int curProgress = 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);}});}/** * 初始化屏幕亮度值 */private void initBrightness() {// 如果开启了自动亮度调节,则关闭之if (BrightnessUtil.isAutoBrightness(this)) {BrightnessUtil.stopAutoBrightness(this);}// 读取文件中设置的亮度值String light = 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
package com.home.screenbrightness;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;/** * 保存数据的工具类 * * @author Administrator * */public class SetAndGetDataUtil {private static SharedPreferences sp;@SuppressWarnings("static-access")public static void SetData(Context context, String filename, String key,String value) {sp = context.getSharedPreferences(filename, context.MODE_PRIVATE);Editor editor = sp.edit();editor.putString(key, value);editor.commit();}@SuppressWarnings("static-access")public static String GetData(Context context, String filename, String key) {String value = "";sp = context.getSharedPreferences(filename, context.MODE_PRIVATE);value = sp.getString(key, "");return value;}}
屏幕亮度处理工具类:
package com.home.screenbrightness;import android.app.Activity;import android.content.ContentResolver;import android.net.Uri;import android.provider.Settings;import android.provider.Settings.SettingNotFoundException;import android.view.WindowManager;/** * 处理屏幕亮度的工具类 * * @author Administrator * */public class BrightnessUtil {/** * 判断是否开启了自动亮度调节 * * @param activity * @return */public static boolean isAutoBrightness(Activity activity) {boolean isAutoAdjustBright = false;try {isAutoAdjustBright = Settings.System.getInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;} catch (SettingNotFoundException e) {e.printStackTrace();}return isAutoAdjustBright;}/** * 获取屏幕的亮度 * * @param activity * @return */public static int getScreenBrightness(Activity activity) {int brightnessValue = 0;try {brightnessValue = android.provider.Settings.System.getInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);} catch (Exception e) {e.printStackTrace();}return brightnessValue;}/** * 设置屏幕亮度 * * @param activity * @param brightness */public static void setBrightness(Activity activity, int brightness) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);activity.getWindow().setAttributes(lp);}/** * 关闭亮度自动调节 * * @param activity */public static void stopAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);}/** * 开启亮度自动调节 * * @param activity */public static void startAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);}/** * 保存亮度设置状态 * * @param activity * @param brightness */public static void saveBrightness(Activity activity, int brightness) {Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");ContentResolver resolver = activity.getContentResolver();android.provider.Settings.System.putInt(resolver, "screen_brightness",brightness);resolver.notifyChange(uri, null);}}
布局文件:
<LinearLayout xmlns: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-permission android:name="android.permission.WRITE_SETTINGS" />
更多相关文章
- android判断屏幕为横屏还是竖屏
- android 获得屏幕宽和高
- Android在屏幕任意位置显示对话框
- 【Android】报表、线图、饼图、柱状图 (工具整理) .
- 设置屏幕显示模式ScreenOrientation.
- Android获得屏幕高度和状态栏高度
- Android getDecorView用途——屏幕截图
- 屏幕切换,保存内容
- 2011.07.20——— android 获得当前view在屏幕的坐标