gpt4 book ai didi

java - 防止 Android 屏幕在特定屏幕上进入 hibernate 状态 (LibGDX)

转载 作者:行者123 更新时间:2023-12-02 13:05:54 24 4
gpt4 key购买 nike

我正在使用 LibGDX 创建 Android 游戏。在我的一种游戏模式下,用户使用加速计来移动玩家,但是,由于用户没有触摸屏幕,屏幕会变暗并进入休眠状态。

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

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

使用that保持应用程序唤醒工作正常,但我无法弄清楚如何仅针对特定屏幕(使用加速计)打开(和关闭)它,因为您必须在 onCreate() 方法中添加标志。否则,当用户未处于使用加速计的游戏模式时(例如在主菜单上...),屏幕将不会进入休眠状态。

<小时/>

基本上,我希望能够以编程方式打开和关闭该功能以防止屏幕 hibernate 。感谢您的回答!

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

<小时/>

编辑:我正在使用 libGDX 和 screen Interface适用于我的各种屏幕(例如菜单、选项、游戏...)。据我所知,这一切都在一个 Android View 中。我希望能够仅在一个屏幕而不是整个应用程序中将“keep_Screen_on”设置为 true。

最佳答案

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

核心模块内创建一个接口(interface)

public interface Service {

void keepScreenOn(boolean isOn);
}

在android模块中实现该接口(interface)

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,当您移动到特定屏幕时可以调用Service接口(interface)的keepScreenOn()

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

关于java - 防止 Android 屏幕在特定屏幕上进入 hibernate 状态 (LibGDX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44149979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com