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