当视频正在播放时无法关闭屏幕

7

在我的活动中有一个VideoView,我仅将其用作背景,并循环播放视频。

屏幕不会自动进入睡眠模式。我尝试手动计算自上次用户交互以来的秒数,但仍无法强制关闭屏幕。

我尝试使用PowerManager、获取锁和goToSleep()函数,但我仍然没有成功关闭屏幕。

5个回答

11

我知道这是一个古老的问题,但我还是想写一个答案,因为这个页面会出现在谷歌搜索结果中。

我使用以下代码解决了同样的问题:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        mediaPlayer.setScreenOnWhilePlaying(false);
    }
});

谢谢,所以是VideoView导致了屏幕不关闭的问题。VideoView -> com.android.server.wm.Session.relayout() -> com.android.server.wm.RootWindowContainer.handleNotObscuredLocked() -> 在包含VideoView的窗口中添加KEEP_SCREEN_ON标志 -> system_server获取了一个类型为SCREEN_BRIGHT_WAKE_LOCKWakeLock - Weekend

0

试试这个:

DevicePolicyManager mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mDPM.lockNow();

这将锁定您的手机(与按下电源/锁定按钮相同),从而关闭屏幕。


我收到了“java.lang.SecurityException: No active admin owned by uid 10087 for policy #3”的错误信息。我需要事先设置一些管理员权限吗? - radu122
在这里阅读有关解决此问题的内容: http://developer.android.com/guide/topics/admin/device-admin.html - gilonm

0

我用以下代码解决了同样的问题:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
    mediaPlayer.setScreenOnWhilePlaying(true);
}

});


mediaPlayer.setScreenOnWhilePlaying(true); - kailash barochiya

0

我遇到了同样的问题。以下代码解决了我的问题,希望它能帮到你。

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
    mediaPlayer.setScreenOnWhilePlaying(false);
}
});

-1

已解决 在onCreate()中的setContentView()后添加一行代码。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_flag);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

在片段中

        getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接