防止Android屏幕在特定屏幕上进入睡眠状态(LibGDX)



我正在使用LibGDX为Android创建游戏。在我的一种游戏模式下,用户使用加速度计移动播放器,但是,由于用户没有触摸屏幕,屏幕将变暗并进入睡眠状态。

我知道我可以添加和清除标志,以防止屏幕在整个应用程序期间进入睡眠状态:

// Add flags
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// Clear flags
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

使用它来保持应用程序唤醒工作正常,但我无法弄清楚如何仅为特定屏幕(使用加速计)打开(和关闭)它,因为您必须在 onCreate() 方法中添加标志。否则,当用户不在使用加速度计的游戏模式下(例如在主菜单上......


基本上,我希望能够以编程方式打开和关闭该功能以防止屏幕进入睡眠状态。 感谢您的任何回答!

注意:我真的不想使用唤醒锁,因为它需要特殊权限并且可能很危险(不释放它)


编辑:我正在使用libGDX和屏幕界面为我的各种屏幕(例如菜单,选项,游戏...据我所知,这只是一个安卓视图。我希望能够在我的一个屏幕而不是整个应用程序中将"keep_Screen_on"设置为 true。

您可以使用接口来实现相同的目的。

core模块内创建接口

public interface Service {
void keepScreenOn(boolean isOn);
}

在安卓模块中实现此接口

public class AndroidLauncher extends AndroidApplication implements Service {
View gameView;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gameView=initializeForView(new Main(this), config);
setContentView(gameView);
}
@Override
public void keepScreenOn(final boolean isOn) {
runOnUiThread(new Runnable() { 
@Override 
public void run() { 
gameView.setKeepScreenOn(isOn); 
} 
});
}
} 

核心模块内的主/应用程序侦听器类

public class Main extends ApplicationAdapter {
Service service;
public Main(Service service){
this.service=service;
}
}

你有Service的参考,当你移动到特定的屏幕时,可以调用keepScreenOn()的服务接口。

我还没有测试过这个,但它应该可以工作。

相关内容

  • 没有找到相关文章

最新更新