Android 一体机研发之修改系统设置————自动锁屏

在这里插入图片描述
Android 一体机研发之修改系统设置————屏幕亮度

Android 一体机研发之修改系统设置————声音

Android 一体机研发之修改系统设置————自动锁屏

修改系统设置系列篇章马上开张了! 本章将为大家细节讲解自动锁屏。

自动锁屏功能,这个可以根据用户的需求,为了减少一体机耗电以及性能,可以设置具体的锁屏时间或者设置永不锁屏等。

自动锁屏

自动锁屏,即是设置背光时间,以毫秒为单位进行设置。

1= 601= 1000毫秒

//15秒   15000
//30秒   30000
//1分钟  60000
//2分钟  120000
//3分钟  180000
//4分钟  240000
//5分钟  300000
//6分钟  360000
//7分钟  420000
//8分钟  480000
//9分钟  540000
//10分钟 600000
//永不  2147483647 = 35791分 = 24天

设计思路

  1. AndroidManifest设置权限;

  2. 获取系统锁屏时间;

  3. 修改系统Settings 中背光时间;

    3.1 判断权限

    3.2 有则修改背光时间

    3.3 无则引导用户授权

具体实现

AndroidManifest设置权限
	<!-- 修改系统设置 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.HARDWARE_TEST" />

获取系统锁屏时间
	int screenOffTime = getScreenOffTime();
    Log.e("当前锁屏时间 >>>", "init: " + screenOffTime);
    if (screenOffTime < 50000) {
    
    
            String second = AppUtils.msToS(screenOffTime);
            timeTxt.setText(second + "秒");
    } else {
    
    
        String minute = AppUtils.msToM(screenOffTime);
        if (minute.equals("35791")) {
    
    
            timeTxt.setText("永不");
       } else {
    
    
            timeTxt.setText(minute + "分");
      }
   }
	/**
     * 获得锁屏时间  毫秒
     */
    private int getScreenOffTime() {
    
    
        int screenOffTime = 0;
        try {
    
    
            screenOffTime = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);
        } catch (Exception localException) {
    
    
        }
        return screenOffTime;
    }
	/**
     * 毫秒转秒
     * @param ms
     * @return
     */
    public static String msToS(int ms) {
    
    
        int seconds = ms / 1000;
        seconds = seconds % 60;

        String s = null;

        if (seconds == 0)
            seconds = 1;

        if (seconds < 10)
            s = "" + seconds;
        else
            s = "" + seconds;

        return s;
    }

    /**
     * 毫秒转分
     * @param ms
     * @return
     */
    public static String msToM(int ms) {
    
    
        int seconds = ms / 1000;
        int minutes = seconds / 60;
        seconds = seconds % 60;

        String m = null;

        if (minutes == 0 && seconds == 0)
            seconds = 1;

        if (minutes < 10)
            m = "" + minutes;
        else
            m = "" + minutes;

        return m;
    }

修改系统Settings 中背光时间
	/**
     * 非系统签名应用,引导用户手动授权修改Settings 权限
     **/
    private int dousingCode = 2;
    
	rela.setOnClickListener(new View.OnClickListener() {
    
    
            (api = Build.VERSION_CODES.M)
            
            public void onClick(View v) {
    
    
                if (Settings.System.canWrite(SoundAndBrightActivity.this)) {
    
    
                    //设置背光时间
                    showDousingTime();
                } else {
    
    
                    Toast.makeText(SoundAndBrightActivity.this, "没有修改权限", Toast.LENGTH_SHORT).show();

                    // 打开允许修改Setting 权限的界面
                    Intent intent = new Intent(
                            Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri
                            .parse("package:"
                                    + getPackageName()));
                    startActivityForResult(intent,
                            dousingCode);
                }
            }
        });
    }

用户已授权

	/**
     * 设置背光时间  毫秒
     */
    private void setScreenOffTime(int paramInt) {
    
    
        try {
    
    
            Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, paramInt);
        } catch (Exception localException) {
    
    
            localException.printStackTrace();
        }
    }

用户未授权

未授权的情况下,引导用户去授权

Toast.makeText(SoundAndBrightActivity.this, "没有修改权限", Toast.LENGTH_SHORT).show();

// 打开允许修改Setting 权限的界面
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri
                            .parse("package:"
                                    + getPackageName()));
                    startActivityForResult(intent,
                            dousingCode);

同时,检测返回结果并处理即可。

	(api = Build.VERSION_CODES.M)
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
    
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == dousingCode) {
    
    
            if (Settings.System.canWrite((Context) SoundAndBrightActivity.this)) {
    
    
                 //设置背光时间
                showSelectTime();
            } else {
    
    
                Toast.makeText((Context) this, "您已拒绝修系统Setting的自动熄屏权限", Toast.LENGTH_SHORT).show();
            }
        }
    }


最近忙里偷闲,↓↓↓↓【谁家de码农陈先生】↓↓↓↓,里面定时给大家分享技术博文、前方高能资讯内容!欢迎各位老板点赞关注,你们就是我的动力源泉!

猜你喜欢

转载自blog.csdn.net/chen_md/article/details/129007320
今日推荐