[手机] 2025-05-03 圈点513
摘要:现在的手机一按侧键就关闭屏幕,系统就进入了休眠状态,一点都没有展现出应该有的高大尚!然后永不关闭屏幕(黑屏)的安卓手机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
上一篇[手机]手机微信占用存储空间大小的小测试
下一篇[手机]手机屏幕失灵怎么办?