我正在使用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()
的服务接口。
我还没有测试过这个,但它应该可以工作。