修改系统设置系列篇章马上开张了! 本章将为大家细节讲解自动锁屏。
自动锁屏功能,这个可以根据用户的需求,为了减少一体机耗电以及性能,可以设置具体的锁屏时间或者设置永不锁屏
等。
自动锁屏
自动锁屏,即是设置背光时间,以毫秒
为单位进行设置。
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() {
(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码农陈先生】↓↓↓↓,里面定时给大家分享技术博文、前方高能资讯内容!欢迎各位老板点赞关注,你们就是我的动力源泉!