Codenameone CN.setScreenSaverEnabled(假);和MediaPlayer
奇怪的是,当我以非本地方式使用Codenameone CN.setScreenSaverEnabled(假);和MediaPlayer,codenameone,Codenameone,奇怪的是,当我以非本地方式使用MediaPlayer播放视频时,几秒钟后(取决于手机设置),省电模式启动,屏幕关闭。这是一种不必要的行为,因为播放视频时,屏幕不得关闭或变暗。我不明白这是一个代号一个bug还是一个特性,但是它在Android和iOS上都会发生 显然,我用CN.setScreenSaverEnabled(false)解决了这个问题。然而,我的问题是,它并不总是有效。下面的代码有时会使屏幕保持活动状态,有时则不会。我不明白为什么有时有效有时无效 为了更好地理解以下代码,videoUr
MediaPlayer
播放视频时,几秒钟后(取决于手机设置),省电模式启动,屏幕关闭。这是一种不必要的行为,因为播放视频时,屏幕不得关闭或变暗。我不明白这是一个代号一个bug还是一个特性,但是它在Android和iOS上都会发生
显然,我用CN.setScreenSaverEnabled(false)解决了这个问题代码>。然而,我的问题是,它并不总是有效。下面的代码有时会使屏幕保持活动状态,有时则不会。我不明白为什么有时有效有时无效
为了更好地理解以下代码,videoUrl是一个HLS流
private void playVideo(Form parent, String videoUrl) {
CN.setScreenSaverEnabled(false);
Form player = new Form(new BorderLayout());
player.getToolbar().setBackCommand("Back", Toolbar.BackCommandPolicy.ALWAYS, e -> {
if (mp != null) {
mp.getMedia().cleanup();
}
CN.setScreenSaverEnabled(true);
parent.showBack();
});
player.add(BorderLayout.CENTER, FlowLayout.encloseCenterMiddle(
new SpanLabel("Stream will start playing automatically when it is live")));
player.addShowListener(l -> {
while (!Util.downloadUrlToStorage(videoUrl, "temp.m3u8", false)) {
CN.invokeAndBlock(() -> Util.sleep(1000));
}
try {
// note that we cannot play the locally downloaded m3u8
Media video = MediaManager.createMedia(videoUrl, true, () -> {
// completion handler, it's invoked when the stream connection is lost
if (mp != null) {
mp.getMedia().cleanup();
}
CN.setScreenSaverEnabled(true);
parent.showBack();
});
video.setNativePlayerMode(false);
if (mp != null) {
mp.getMedia().cleanup();
}
mp = new MediaPlayer(video);
mp.setAutoplay(true);
mp.setHideNativeVideoControls(true);
mp.setMaximize(false);
player.removeAll();
player.add(BorderLayout.CENTER, mp);
player.revalidate();
} catch (Exception err) {
Log.e(err);
ToastBar.showErrorMessage("Error loading straming");
}
});
player.show();
}
我建议添加日志以确保达到正确的行。这里的逻辑适用于facebook等应用。滚动时可以播放视频,但不想禁用屏幕保护程序。好的,谢谢,我会尝试登录。那么,您是否确认我可以使用CN.setScreenSaverEnabled(false)代码>和CN.setScreenSaverEnabled(真)
在我的应用程序代码的每一点上,以及每次我需要启用或禁用节能时?在显示表单之前是否需要调用它?据我所知,应该可以在任何地方调用它。当前表单显示没有任何限制。我建议添加日志以确保达到正确的行。这里的逻辑适用于facebook等应用。滚动时可以播放视频,但不想禁用屏幕保护程序。好的,谢谢,我会尝试登录。那么,您是否确认我可以使用CN.setScreenSaverEnabled(false)代码>和CN.setScreenSaverEnabled(真)
在我的应用程序代码的每一点上,以及每次我需要启用或禁用节能时?在显示表单之前是否需要调用它?据我所知,应该可以在任何地方调用它。没有与当前表单显示相关的限制。