我正在使用LibGDX为Android创建游戏。在我的一种游戏模式中,用户使用加速计来移动播放器,但是由于用户没有触摸屏幕,屏幕将变暗并进入睡眠状态。
我知道我可以添加和清除标记,以防止屏幕在整个应用程序中进入睡眠状态:
// Add flags
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// Clear flags
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).
使用that保持应用程序唤醒工作正常但我无法解决如何仅为特定屏幕(使用加速度计)打开(和关闭)因为您必须在onCreate中添加标志() 方法。否则当用户不在使用加速度计的游戏模式时(例如在主菜单上......),屏幕将不进入睡眠状态。
基本上,我希望能够以编程方式打开和关闭该功能,以防止屏幕睡眠。 谢谢你的回答!
注意:我真的不想使用唤醒锁,因为它需要特殊许可,并且可能有危险(不发布)
编辑:我在各种屏幕上使用libGDX和screen Interface(例如菜单,选项,游戏......)。据我所知,这只是一个Android视图。我希望能够设置" keep_Screen_on"仅在我的一个屏幕而不是整个应用程序中为true。
答案 0 :(得分:1)
您可以使用相同的接口。
在core
模块
public interface Service {
void keepScreenOn(boolean isOn);
}
在android模块中实现此接口
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);
}
});
}
}
核心模块中的Main / ApplicationListener类
public class Main extends ApplicationAdapter {
Service service;
public Main(Service service){
this.service=service;
}
}
您已Service
的引用,当您转到特定屏幕时,可以调用服务界面的keepScreenOn()
。
我没有对此进行测试,但它应该有效。