Participe do evento ⁠#Android11: apresentação de lançamento da versão Beta no dia 3 de junho.

Permitir reprodução em segundo plano

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();
    }