Air app for Android应用程序在不在应用程序时保持屏幕清醒

时间:2011-08-07 23:21:34

标签: android air

我有一个Android应用程序的空气,它有ACTIVATE和DEACTIVATE的事件监听器,在激活内我告诉屏幕保持清醒,在停用时我告诉它恢复正常如此:

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主屏幕上,除非你强行关闭应用程序...任何想法?

由于

2 个答案:

答案 0 :(得分:2)

我遇到了这个问题。我的应用程序能够通过将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"/>

突然我的应用程序能够让屏幕再次关闭。

答案 1 :(得分:0)

您可以尝试在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"放在您的布局中。