Um usuário assistindo conteúdo em um dispositivo de TV pode decidir mudar para a tela de início da TV a qualquer momento. Se o usuário alternar para a tela de início enquanto estiver usando um app de reprodução de TV, por padrão, o app será pausado. Como o usuário não solicitou explicitamente a pausa na reprodução, o comportamento padrão pode parecer abrupto e inesperado. Esta lição descreve como habilitar a reprodução em segundo plano no seu app, o que proporciona uma melhor experiência ao usuário.
O método requestVisibleBehind()
foi suspenso na API de nível 26.
Ele será removido em uma versão futura. A funcionalidade descrita nesta página não é compatível com o Android 8.0 e versões mais recentes.
Solicitar reprodução em segundo plano
Normalmente, quando o usuário clica em Início para exibir a tela de início da TV, a atividade é pausada. No entanto, seu app pode solicitar a reprodução em segundo plano, em que a atividade continua sendo reproduzida atrás da tela de início da TV.
Para solicitar a reprodução em segundo plano, chame requestVisibleBehind()
.
É necessário limpar os recursos de mídia se a atividade não estiver mais visível. Por exemplo, libere recursos de mídia se requestVisibleBehind()
retornar false
para indicar que a solicitação falhou ou se o sistema chamar sua modificação de onVisibleBehindCanceled()
.
Kotlin
override fun onPause() { super.onPause() if (videoView?.isPlaying == true) { // Argument equals true to notify the system that the activity // wishes to be visible behind other translucent activities if (!requestVisibleBehind(true)) { // App-specific method to stop playback and release resources // because call to requestVisibleBehind(true) failed stopPlayback() } } else { // Argument equals false because the activity is not playing requestVisibleBehind(false) } } override fun onVisibleBehindCanceled() { // App-specific method to stop playback and release resources stopPlayback() super.onVisibleBehindCanceled() }
Java
@Override public void onPause() { super.onPause(); if (videoView.isPlaying()) { // Argument equals true to notify the system that the activity // wishes to be visible behind other translucent activities if (! requestVisibleBehind(true)) { // App-specific method to stop playback and release resources // because call to requestVisibleBehind(true) failed stopPlayback(); } } else { // Argument equals false because the activity is not playing requestVisibleBehind(false); } } @Override public void onVisibleBehindCanceled() { // App-specific method to stop playback and release resources stopPlayback(); super.onVisibleBehindCanceled(); }