Невозможно выключить экран во время воспроизведения видео

У меня есть VideoView в моей деятельности, которую я использую только в качестве фона, с видео в режиме цикла.

Экран не переходит в спящий режим автоматически. Я попытался вручную отсчитать секунды с момента последнего взаимодействия с пользователем, но мне все равно не удалось заставить экран выключиться.

Я попробовал PowerManager, получил блокировки и функцию goToSleep (), но мне все еще не удалось выключить экран.


person radu122    schedule 11.02.2014    source источник


Ответы (5)


Я знаю, что это древний вопрос, но я подумал, что все равно напишу ответ, поскольку эта страница появляется в поиске Google.

Я решил ту же проблему, используя этот код:

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        mediaPlayer.setScreenOnWhilePlaying(false);
    }
});
person Johan Levin    schedule 23.07.2014
comment
Спасибо, поэтому именно VideoView вызывает проблему с отключением экрана. VideoView - ›com.android.server.wm.Session.relayout() -› com.android.server.wm.RootWindowContainer.handleNotObscuredLocked() - ›добавить флаг KEEP_SCREEN_ON в окно, содержащее VideoView -› system_server получить WakeLock типа SCREEN_BRIGHT_WAKE_LOCK - person Weekend; 08.04.2021

Попробуй это:

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

Это заблокирует ваш телефон (так же, как нажатие кнопки питания / блокировки) и, таким образом, выключит экран.

person gilonm    schedule 11.02.2014
comment
Я получаю java.lang.SecurityException: нет активного администратора, принадлежащего uid 10087 для политики №3. Нужно ли мне заранее установить какие-то права администратора? - person radu122; 11.02.2014
comment
О решении этой проблемы читайте здесь: developer.android.com/guide/topics /admin/device-admin.html - person gilonm; 11.02.2014

Я решил ту же проблему, используя этот код:

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

});

person kailash barochiya    schedule 04.01.2017
comment
mediaPlayer.setScreenOnWhilePlaying (true); - person kailash barochiya; 04.01.2017

Я встретил ту же проблему. Следующий код решил мою проблему. Надеюсь, это поможет тебе.

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

Решено Добавьте одну строку кода после setContentView () в onCreate ()

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);
person Keshav Gera    schedule 13.08.2019