javafx android标志\u保持屏幕\u打开

javafx android标志\u保持屏幕\u打开,android,gluon,javafxports,Android,Gluon,Javafxports,在我的应用程序中,我需要确保当用户单击按钮时,android设备的屏幕保持打开状态。当用户点击另一个按钮时,我想让屏幕在正常情况下关闭。为此,我需要打电话: getWindow().addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开) android文档说明这个调用必须通过活动进行,这就是我所做的。以下是我的代码片段: public class AndroidDataProvider implements DataProvider { @Ov

在我的应用程序中,我需要确保当用户单击按钮时,android设备的屏幕保持打开状态。当用户点击另一个按钮时,我想让屏幕在正常情况下关闭。为此,我需要打电话:
getWindow().addFlags(WindowManager.LayoutParams.FLAG\u保持屏幕打开)

android文档说明这个调用必须通过活动进行,这就是我所做的。以下是我的代码片段:

public class AndroidDataProvider implements DataProvider {
    @Override
    public void keepScreenOn(boolean flag) {
        if(flag) {
            Window window = FXActivity.getInstance().getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
        else {
            Window window = FXActivity.getInstance().getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
    }
}
当我在三星Galaxy S5和S6上运行此代码时,我得到一个异常。
当我在androidstudio中本机运行屏幕时,保持屏幕打开的代码可以工作,所以这不是问题所在。你知道如何让这个功能发挥作用吗?唤醒锁定无法工作,因为我需要根据UI事件启用和禁用此功能。

如果您检查异常(
/adb logcat-v threadtime
):

消息
只有创建视图层次结构的原始线程才能接触其视图
将为您提供足够的信息。如果选中此项,则只需将代码移动到主线程:

    FXActivity.getInstance().runOnUiThread(() -> {
        Window window = FXActivity.getInstance().getWindow();
        if (flag) {
            window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        } else {
            window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
    });

如果检查异常(
/adb logcat-v threadtime
):

消息
只有创建视图层次结构的原始线程才能接触其视图
将为您提供足够的信息。如果选中此项,则只需将代码移动到主线程:

    FXActivity.getInstance().runOnUiThread(() -> {
        Window window = FXActivity.getInstance().getWindow();
        if (flag) {
            window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        } else {
            window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        }
    });

谢谢你,何塞。代码运行正常,但我必须用旧式方法替换lambda。这不应该是必需的。。。正如Retro一样,Lambda也应用于Android软件包。代码运行正常,但我必须用旧式方法替换lambda。这不应该是必需的。。。正如Retro一样,Lambda也适用于Android软件包