【问题标题】:Turn off/on android screen关闭/打开安卓屏幕
【发布时间】:2012-05-06 09:31:37
【问题描述】:

我正在尝试关闭 Android 屏幕,然后在几秒钟后再次打开。 “关闭”部分有效,使用以下代码:

WindowManager.LayoutParams layoutParam = getWindow().getAttributes();
oldBrightness = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS)/255f;
layoutParam.screenBrightness = 0; 
layoutParam.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(layoutParam);

但是,当我尝试再次打开屏幕时,它不适用于此代码:

WindowManager.LayoutParams layoutParam = getWindow().getAttributes();
layoutParam.screenBrightness = oldBrightness;
layoutParam.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(layoutParam);

有什么办法解决这个问题吗?

谢谢

【问题讨论】:

  • 什么时候,调试,你检查oldBrightness的值了吗?

标签: android screen brightness


【解决方案1】:

我想你可以试试 Powermanager WakeLock 也许它会起作用。我在我的应用程序中使用此代码。它运作良好。 :)

你还需要在清单中设置权限。

<uses-permission android:name="android.permission.WAKE_LOCK"/> // Manifest Permission

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
                WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                                                 | PowerManager.ACQUIRE_CAUSES_WAKEUP
                                                 | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
                wakeLock.acquire();

【讨论】:

    【解决方案2】:

    首先,您确定这一行中的“/255f”:

    oldBrightness = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS)/255f;
    

    获取/设置“oldBrightness”时的值是多少?

    也许你可以试试这个:

    PowerManager.WakeLock lck = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
    lck.acquire();
    

    普通唤醒锁不会打开屏幕,而是在用户启动时使其保持打开状态。但是这个标志会强制屏幕立即打开。它需要“android.permission.WAKE_LOCK”。

    更多信息:

    http://developer.android.com/reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK

    以及屏幕属性(开、关、亮、暗等):

    http://developer.android.com/reference/android/os/PowerManager.html

    【讨论】:

    • android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN... 返回一个 0 到 255 之间的值,layoutParam.screenBrightness 等待 0 和1.使用您的代码,只有当我手动关闭屏幕时才会打开屏幕,而不是使用我的代码。所以我尝试使用唤醒锁也关闭,但它不会像这样关闭:PowerManager pm =(PowerManager ) SecureStopwatchExecActivity.this.getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "tag"); wl.acquire(); wl.release();
    猜你喜欢
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2020-04-12
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多