A API Ambient permite que seu aplicativo conecte dispositivos ambient à conta do Google Fotos de um usuário e mostre as fotos selecionadas.
Fluxo da API Ambient
Confira como a API Ambient funciona para conectar um dispositivo e, em seguida, extrair e exibir itens de mídia:
Verificar se o dispositivo já existe (recomendado): antes de criar um novo dispositivo, é recomendado verificar se um dispositivo para o usuário atual já existe. Seu aplicativo precisa manter um mapeamento entre o usuário interno e o
deviceIdfornecido pelo Google para todos os dispositivos criados pelo usuário no app. Se umdeviceIdfor encontrado para o usuário, você poderá atualizar o token de autorização dele (se necessário).Iniciar a autorização do OAuth 2.0 (e, opcionalmente, criar o dispositivo): inicie o fluxo do OAuth 2.0 para TV e dispositivos de entrada limitada solicitando um código de autorização.
Criar um novo dispositivo: o app cria um dispositivo na conta do Google Fotos de um usuário chamando
CreateDevicee fornecendo um UUID v4 válido.Após a criação do dispositivo, a API vai retornar um objeto
AmbientDeviceque contém umdeviceIdatribuído pelo Google. É crucial que o aplicativo armazene essedeviceIde o associe aos usuários.Mostrar o
settingsUri: um objetoAmbientDeviceinclui umsettingsUri. Apresente esse URI ao usuário, normalmente como um código QR, que pode ser digitalizado pelo dispositivo móvel. Esse URI direciona o usuário ao app Google Fotos, onde ele pode configurar as fontes de mídia (por exemplo, álbuns) que quer exibir no dispositivo ambiente.Pesquisar
mediaSourcesSet: o app precisa chamar periodicamente o métodoGetDevice, fornecendo odeviceId, para verificar o status do dispositivo ambiente. Monitore o campomediaSourcesSetna respostaAmbientDevice. Inicialmente, ele será falso.Depois que o usuário selecionar as fontes de mídia no app Google Fotos, esse campo será alterado para "true".
A resposta
AmbientDeviceinclui umpollingConfigcom umpollIntervalque você deve usar como orientação para a frequência de pesquisa.Recuperar itens de mídia: quando
mediaSourcesSetretornar "true", seu app poderá começar a buscar os itens de mídia selecionados pelo usuário.Chame o método
ListMediaItems, fornecendo odeviceId. A API vai retornar umListMediaItemsResponsecontendo uma lista de objetosAmbientMediaItem. CadaAmbientMediaIteminclui detalhes como umid,createTimee um objetoMediaFilecom metadados adicionais. OMediaFilecontém umbaseUrlque pode ser usado para buscar os bytes reais de um item de mídia. Consulte o guia Listar e recuperar itens de mídia para saber mais sobre outros parâmetrosbaseUrl.Mostrar itens de mídia: use o
baseUrldoMediaFilepara fazer o download e mostrar o conteúdo de mídia no dispositivo ambiente.
Considerações importantes
Limite e gerenciamento de dispositivos:
- Limites de dispositivo: há um limite de 100 dispositivos por usuário do seu app.
- Atividade e tokens do dispositivo: você precisa gerenciar o ciclo de vida dos dispositivos e dos tokens de autorização do usuário. Considere o tempo que os dispositivos permanecem ativos e como você vai lidar com as atualizações ou reautorizações de token se um dispositivo ficar inativo ou se o token expirar.
O guia Criar e gerenciar dispositivos tem mais detalhes.
Como trabalhar com itens de mídia:
- Uso do item de mídia: entenda como buscar e processar corretamente o conteúdo do item de mídia
usando o
baseUrl, incluindo qualquer autenticação ou parâmetro necessário. - Processamento de erros: implemente um processamento de erros robusto para chamadas de API, incluindo
cenários como
NOT_FOUNDpara dispositivos,FAILED_PRECONDITIONse as fontes de mídia não estiverem definidas eRESOURCE_EXHAUSTEDse os limites do dispositivo forem atingidos.
O guia Listar e recuperar itens de mídia tem mais detalhes.
Próximas etapas
- Configurar o aplicativo:verifique se você tem as credenciais necessárias e se configurou o aplicativo para o OAuth 2.0 para TV e dispositivos de entrada limitada.
- Consulte a documentação de referência da API Ambient:confira a documentação de referência detalhada para todos os métodos, parâmetros de solicitação e resposta e códigos de erro disponíveis.