在我的活动中有一个VideoView,我仅将其用作背景,并循环播放视频。
屏幕不会自动进入睡眠模式。我尝试手动计算自上次用户交互以来的秒数,但仍无法强制关闭屏幕。
我尝试使用PowerManager、获取锁和goToSleep()函数,但我仍然没有成功关闭屏幕。
在我的活动中有一个VideoView,我仅将其用作背景,并循环播放视频。
屏幕不会自动进入睡眠模式。我尝试手动计算自上次用户交互以来的秒数,但仍无法强制关闭屏幕。
我尝试使用PowerManager、获取锁和goToSleep()函数,但我仍然没有成功关闭屏幕。
我知道这是一个古老的问题,但我还是想写一个答案,因为这个页面会出现在谷歌搜索结果中。
我使用以下代码解决了同样的问题:
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setScreenOnWhilePlaying(false);
}
});
试试这个:
DevicePolicyManager mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mDPM.lockNow();
这将锁定您的手机(与按下电源/锁定按钮相同),从而关闭屏幕。
我用以下代码解决了同样的问题:
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setScreenOnWhilePlaying(true);
}
});
我遇到了同样的问题。以下代码解决了我的问题,希望它能帮到你。
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setScreenOnWhilePlaying(false);
}
});
已解决 在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);
VideoView
导致了屏幕不关闭的问题。VideoView
->com.android.server.wm.Session.relayout()
->com.android.server.wm.RootWindowContainer.handleNotObscuredLocked()
-> 在包含VideoView
的窗口中添加KEEP_SCREEN_ON
标志 ->system_server
获取了一个类型为SCREEN_BRIGHT_WAKE_LOCK
的WakeLock
。 - Weekend