【问题标题】:Air for Android app is keeping screen awake when not in appAir for Android 应用程序在不在应用程序中时保持屏幕唤醒
【发布时间】:2013-10-02 19:04:54
【问题描述】:

我有一个适用于 ACTIVATE 和 DEACTIVATE 事件侦听器的 Android 应用程序,在激活时我告诉屏幕保持清醒,在停用时我告诉它恢复正常,如下所示:

stage.addEventListener(Event.DEACTIVATE, deactivateHandler);
stage.addEventListener(Event.ACTIVATE, activateHandler);

protected function deactivateHandler(event:Event):void{
    SFX.disableSound();
    NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.NORMAL;
}

protected function activateHandler(event:Event):void{
    NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
}

但是,即使在 Android 主屏幕上,屏幕也会一直保持唤醒状态,除非您强制关闭应用程序...有什么想法吗?

谢谢

【问题讨论】:

    标签: android air


    【解决方案1】:

    我遇到了这个确切的问题。我的应用程序能够通过将 systemIdleMode 设置为 SystemIdleMode.KEEP_AWAKE 来保持屏幕打开,并且它会强制屏幕保持打开状态。但是,当应用程序尝试将 systemIdleMode 设置回 SystemIdleMode.NORMAL 时,屏幕可能会关闭,但屏幕仍然保持打开状态。

    在我的情况下,问题是缺少 android 权限。我已经将此权限添加到我的应用 XML 文件中,以便我可以使用 keep-alive 功能:
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    原来这不是您需要的唯一权限。我也添加了这个权限:
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

    突然间,我的应用能够再次关闭屏幕。

    【讨论】:

      【解决方案2】:

      您可以尝试在您的 java 代码中使用它:

      // Gets one of the views visible on the screen and sets keepScreenOn to true.
      // This means the screen will stay on as long as the specified view is visible.
      this.findViewById(R.id.viewId).setKeepScreenOn(true);
      

      或者您可以将android:keepScreenOn="true" 放在您的布局中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多