Skip to content

Most visited

Recently visited

navigation

Gravação para TV

Serviços de entrada de TV permitem que o usuário pause e retome a reprodução do canal por meio de APIs de time-shifting. O Android N expande o time-shifting ao permitir que o usuário salve várias sessões gravadas.

Os usuários podem programar gravações antecipadamente ou iniciar uma gravação enquanto assistem a um programa. Quando o sistema salvar a gravação, o usuário poderá procurar, gerenciar e reproduzir a gravação usando o aplicativo de TV do sistema.

Se quiser fornecer recursos de gravação para seu serviço de entrada de TV, indique para o sistema que o aplicativo oferece suporte a gravação, implemente a capacidade de gravar programas, solucione e comunique erros ocorridos durante a gravação e gerencie as sessões gravadas.

Observação: O aplicativo Live Channels ainda não oferece aos usuários uma forma de criar ou acessar gravações. Enquanto o aplicativo Live Channels não sofrer alterações, será difícil testar toda a experiência de gravação de seu serviço de entrada de TV.

Indicar suporte para gravação

Para informar ao sistema que seu serviço de entrada de TV oferece suporte a gravação, defina o atributo android:canRecord no arquivo XML de metadados do serviço como true:

<tv-input xmlns:android="http://schemas.android.com/apk/res/android"
  android:canRecord="true"
  android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" />

Para obter mais informações sobre o arquivo de metadados do serviço, consulte Declarar seu serviço de entrada de TV no manifesto (em inglês).

Como alternativa, você pode indicar suporte a gravação em seu código usando estas etapas:

  1. No método TvInputService.onCreate(), crie um novo objeto TvInputInfo usando a classe TvInputInfo.Builder .
  2. Ao criar o novo objeto TvInputInfo, chame setCanRecord(true) antes de chamar build() para indicar que seu serviço oferece suporte a gravação.
  3. Registre seu objeto TvInputInfo com o sistema chamando TvInputManager.updateTvInputInfo().

Gravar uma sessão

Depois que o serviço de entrada de TV registrar que oferece suporte ao recurso de gravação, o sistema chamará seu TvInputService.onCreateRecordingSession() quando precisar acessar a implementação de gravação do seu aplicativo. Implemente sua própria subclasse TvInputService.RecordingSession e retorne-a quando o retorno de chamada onCreateRecordingSession() for acionado. Essa subclasse é responsável por alternar para os dados de canal corretos, gravando os dados solicitados e comunicando o status de gravação e os erros ao sistema.

Quando o sistema chamar RecordingSession.onTune(), passando um URI de canal, acesse o canal especificado pelo URI. Notifique o sistema de que seu aplicativo acessou o canal desejado ao chamar notifyTuned() ou, se o aplicativo não conseguiu acessar o canal correto, chame notifyError().

Em seguida, o sistema invoca o retorno de chamada RecordingSession.onStartRecording() . O aplicativo deve iniciar a gravação imediatamente. Quando o sistema invoca esse retorno de chamada, ele pode fornecer um URI que contenha informações sobre o programa que será gravado. Quando a gravação for concluída, você deverá copiar esses dados para a tabela de dados RecordedPrograms.

Por fim, o sistema chama RecordingSession.onStopRecording(). Nesse momento, o aplicativo deve interromper a gravação imediatamente. Também é preciso criar uma entrada na tabela RecordedPrograms. Essa entrada deve incluir o URI dos dados da sessão gravada na coluna RecordedPrograms.COLUMN_RECORDING_DATA_URI e qualquer informação sobre o programa fornecida pelo sistema na chamada inicial em onStartRecording().

Para saber mais sobre como acessar a tabela RecordedPrograms, consulte Gerenciar sessões gravadas.

Solucionar erros de gravação

Se um erro ocorrer durante a gravação, inutilizando os dados gravados, notifique o sistema chamando RecordingSession.notifyError(). Também é possível chamar notifyError() depois que uma sessão de gravação é criada para informar ao sistema que seu aplicativo não pode mais gravar sessões.

Se um erro ocorrer durante a gravação, mas você quiser fornecer uma gravação parcial que pode ser usada pelos usuários para reprodução, chame RecordingSession.notifyRecordingStopped() para permitir que o sistema use a sessão parcial.

Gerenciar sessões gravadas

O sistema mantém as informações de todas as sessões gravadas de todos os aplicativos de canais com recursos de gravação na tabela de provedor de conteúdo TvContract.RecordedPrograms . Essas informações podem ser acessadas pelo URI de conteúdo RecordedPrograms.Uri. Use APIs de provedores de conteúdo para ler, adicionar e excluir entradas dessa tabela.

Para saber mais sobre como trabalhar com dados de provedores de conteúdo, consulte Fundamentos do provedor de conteúdo .

Práticas recomendadas

Dispositivos de TV podem ter armazenamento limitado, então tenha bom senso ao alocar armazenamento para salvar sessões gravadas. Use RecordingCallback.onError(RECORDING_ERROR_INSUFFICIENT_SPACE) quando não houver espaço suficiente para salvar uma sessão gravada.

Quando o usuário iniciar a gravação, comece a gravar os dados assim que possível. Para facilitar esse processo, realize qualquer tarefa demorada imediatamente, como acessar e alocar o espaço de armazenamento, quando o sistema invocar o retorno de chamada onCreateRecordingSession(). Isso permite que você comece a gravar imediatamente após o acionamento do retorno de chamada onStartRecording() .

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Siga o Google Developers no WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)