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

本文介绍了在Android一体机研发中如何修改系统设置,特别是自动锁屏功能。通过设置不同的背光时间来实现节能,详细讲解了获取当前锁屏时间、转换时间单位以及如何判断和修改系统设置的权限。如果无权限,则引导用户授权。
摘要由CSDN通过智能技术生成

在这里插入图片描述
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码农陈先生】↓↓↓↓,里面定时给大家分享技术博文、前方高能资讯内容!欢迎各位老板点赞关注,你们就是我的动力源泉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉莫帅

你的鼓励将是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值