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(真)
在我的应用程序代码的每一点上,以及每次我需要启用或禁用节能时?在显示表单之前是否需要调用它?据我所知,应该可以在任何地方调用它。没有与当前表单显示相关的限制。