[手机] 2025-12-07 圈点856
摘要:现在的手机一按侧键就关闭屏幕,系统就进入了休眠状态,一点都没有展现出应该有的高大尚!然后永不关闭屏幕(黑屏)的安卓手机APP就问世了。
现在的手机一按侧键就关闭屏幕,系统就进入了休眠状态,一点都没有展现出应该有的高大尚!然后永不关闭屏幕(黑屏)的安卓手机APP就问世了。
手机系统版本:
android 9.
level 28.
开发工具:
android studio
功能目的:
打开此app就设置屏幕用较低的亮度值,实际是一直亮着,退出app就恢复自动亮度。
代码级逻辑具体:
1,设置系统永不休眠;
2,打开APP的时候,设置屏幕永远亮,且划动和按键无效。(实际上音响键和屏幕下方键都无效,但电源键和屏幕圆点辅助有效)
3,关闭APP的时候,让屏幕恢复自动亮度
代码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
* 屏幕常亮需要 申请屏幕 WAKE_LOCK 唤醒锁 权限
* <uses-permission android:name="android.permission.WAKE_LOCK" />
*/
getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//保持屏幕常亮
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);//禁用触摸
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);//禁用Home等键,但会与其发生冲突,会导致程序无响应,待解决
getWindow().setColorMode(ActivityInfo.COLOR_MODE_DEFAULT);//设置颜色模式,测试失败
//申请权限
if (!Settings.System.canWrite(getApplicationContext())) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 2);
}
//亮度设置成手动,且设置较低亮度值5;当停止/取消后亮度设置成自动
customScreenBrightness();
}
/* */
protected void onStop() {
super.onStop();
try{
int screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
if (screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) {
setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
}catch (Exception localException){
localException.printStackTrace();
}
}
protected void onDestroy() {
super.onDestroy();
try{
int screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
if (screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) {
setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
}catch (Exception localException){
localException.printStackTrace();
}
}
private void customScreenBrightness() {
try {
/**
* * 获得当前屏幕亮度的模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*
*/
int screenMode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
// 获得当前屏幕亮度值 0--255
int screenBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
if (screenMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
setScreenMode(Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
setScreenBrightness(5);//手动设置的亮度值
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
}
/**
* 设置屏幕亮度模式
* SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度
* SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度
*
* @param value
*/
private void setScreenMode(int value) {
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, value);
}
/**
* 设置屏幕亮度
*
* @param value
*/
private void setScreenBrightness(float value) {
Window mWindow = getWindow();
WindowManager.LayoutParams params = mWindow.getAttributes();
float f = value / 255.0f;
params.screenBrightness = f;
mWindow.setAttributes(params);
// 保存设置的屏幕亮度值
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, (int) value);
}然后在manifest配置文件中添加如下内容:
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
真实情况:
制作了一个永不关闭屏幕的APP,其实是源于实际需要。制作这款永不关闭屏幕APP是因为手机出了点问题,屏幕一黑或者休眠状态就自动重启。所以就想了一个办法,干脆做一个简单的APP,让手机永不关闭屏幕就可以啦。
缺点:
原来的屏保需要关闭,没有结合原来安全方面的屏幕保护功能。需要打开辅助按扭方便退出APP。耗电有增加,只是用于临时使用解决实际问题。
参考:代码参考了如下链接内容:
blog.csdn.net/xgxmwang/article/details/83621364
上一篇[手机]手机微信占用存储空间大小的小测试
下一篇[手机]手机屏幕失灵怎么办?