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

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

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

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

【问题讨论】:

    标签: android screen android-videoview


    【解决方案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();
    

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

    【讨论】:

    【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        • 2015-05-20
        • 2022-11-11
        • 2019-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多