永不关闭屏幕(黑屏)的安卓手机APP

[手机] 2024-03-29 圈点679

摘要:现在的手机一按侧键就关闭屏幕,系统就进入了休眠状态,一点都没有展现出应该有的高大尚!然后永不关闭屏幕(黑屏)的安卓手机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


关闭屏幕  

感谢反馈,已提交成功,审核后即会显示