视频播放时无法关闭屏幕

Posted

技术标签:

【中文标题】视频播放时无法关闭屏幕【英文标题】:Cannot turn the screen off while video is playing 【发布时间】:2014-02-11 12:03:37 【问题描述】:

我的活动中有一个 VideoView,仅用作背景,视频处于循环模式。

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

我尝试过 PowerManager、获取锁和 goToSleep() 函数,但我仍然无法关闭屏幕。

【问题讨论】:

【参考方案1】:

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

我用这段代码解决了同样的问题:

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 获取 WakeLock 类型为 SCREEN_BRIGHT_WAKE_LOCK【参考方案2】:

试试这个:

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

这将锁定您的手机(与按下电源/锁定按钮相同)并因此转动屏幕。

【讨论】:

我得到“java.lang.SecurityException: No active admin'owned by uid 10087 for policy #3”。我必须事先设置一些管理员权限吗? 在此处阅读有关解决此问题的信息:developer.android.com/guide/topics/admin/device-admin.html【参考方案3】:

我用这段代码解决了同样的问题:

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

);

【讨论】:

mediaPlayer.setScreenOnWhilePlaying(true);【参考方案4】:

我遇到了同样的问题。下面的代码解决了我的问题。希望对你有帮助。

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

);

【讨论】:

【参考方案5】:

已解决在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);

【讨论】:

以上是关于视频播放时无法关闭屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中保持屏幕关闭的视频播放?

视频无法在 android 中播放

无法检测到 MPMoviePlayerDidExitFullscreenNotification

播放器控制器在 tvOS 中按下菜单按钮时关闭

视频在移动数据下自动播放怎么取消?

手机app的视频都不能全屏播放了,怎么解决?