慢吞云雾缓吐愁 发表于 2024-6-22 01:33:59

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

https://img-blog.csdnimg.cn/20a67d10c13248d48622971a7d42c487.png#pic_center
Android 一体机研发之修改体系设置————屏幕亮度
Android 一体机研发之修改体系设置————声音
Android 一体机研发之修改体系设置————主动锁屏
修改体系设置系列篇章立刻开张了! 本章将为大家细节解说主动锁屏。
主动锁屏功能,这个可以根据用户的需求,为了减少一体机耗电以及性能,可以设置具体的锁屏时间大概设置永不锁屏等。
   https://img-blog.csdnimg.cn/43f898a02c37498cad73ebd4fa0ca103.gif主动锁屏

主动锁屏,即是设置背光时间,以毫秒为单位举行设置。
1分 = 60秒
1秒 = 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天
设计思路


[*] AndroidManifest设置权限;
[*] 获取体系锁屏时间;
[*] 修改体系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() {
            @RequiresApi(api = Build.VERSION_CODES.M)
            @Override
            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);
同时,检测返回结果并处理即可。
        @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    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码农陈先生】↓↓↓↓,里面定时给大家分享技能博文、火线高能资讯内容!欢迎各位老板点赞关注,你们就是我的动力源泉!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Android 一体机研发之修改体系设置————主动锁屏