[{"data":1,"prerenderedAt":381},["ShallowReactive",2],{"blog-alternates-\u002Fplayer-confiavel-android-navegador":3,"blog-nav-facets-pt":6,"blog-post-pt-player-confiavel-android-navegador":13},{"pt":4,"en":5},"\u002Fplayer-confiavel-android-navegador","\u002Fen\u002Freliable-player-android-browser",{"populatedCategories":7,"authorCount":12},[8,9,10,11],"operacao","produto","dooh","engenharia",1,{"post":14,"authorIndex":294,"counterpartSlug":300,"related":301,"adjacent":350},{"id":15,"title":16,"authors":17,"body":19,"category":11,"cover":273,"description":277,"discussionUrl":278,"draft":279,"extension":280,"featured":279,"highlights":278,"meta":281,"navigation":282,"ogImage":274,"path":283,"publishedAt":284,"seo":285,"slug":286,"sourceHash":278,"stem":287,"tags":288,"translate":282,"translatedFrom":278,"translationKey":286,"translationStatus":278,"updatedAt":278,"__hash__":293},"posts_pt\u002Fpt\u002Fposts\u002Fplayer-confiavel-android-navegador.md","Como construímos um player confiável para Android e navegador",[18],"paulo-ramires",{"type":20,"value":21,"toc":263},"minimark",[22,26,29,32,40,45,48,51,54,57,61,64,67,70,73,80,84,87,136,139,142,153,156,160,166,175,178,181,184,187,190,194,197,200,207,211,214,217,233,241,247],[23,24,25],"p",{},"Em uma rede de telas, uma interrupção pode exigir que alguém vá até a loja para reiniciar um equipamento. Uma conexão instável pode atrasar a programação. Uma atualização pode corrigir a reprodução e, ao mesmo tempo, introduzir uma incompatibilidade com o aplicativo instalado.",[23,27,28],{},"É nesse cenário que desenvolvemos o Player da Lucimark. O objetivo é manter a programação em exibição, reduzir interrupções visíveis e recuperar a operação automaticamente sempre que as condições do dispositivo permitirem.",[23,30,31],{},"O Player tem como base uma aplicação web, compartilhada entre a versão para navegador e o aplicativo Android. Essa escolha permite reutilizar a lógica de reprodução. Também exige cuidado: armazenamento, atualização e acesso ao hardware têm capacidades diferentes em cada ambiente.",[23,33,34,35,39],{},"Para orientar essas decisões, trabalhamos com um ",[36,37,38],"strong",{},"contrato de reprodução",": executar a programação recebida, preparar o próximo conteúdo, retomar a operação após interrupções e fornecer sinais que ajudem a entender uma falha. Esse contrato guia o comportamento esperado nas duas plataformas, respeitando os limites de cada uma.",[41,42,44],"h2",{"id":43},"um-núcleo-compartilhado-capacidades-diferentes","Um núcleo compartilhado, capacidades diferentes",[23,46,47],{},"Manter versões independentes do player significaria evoluir duas implementações da sequência de reprodução, do cache e da recuperação de falhas. Com o núcleo compartilhado, essas regras podem ser desenvolvidas e verificadas em conjunto.",[23,49,50],{},"Uma camada de integração adapta o armazenamento, a identificação do dispositivo e as atualizações a cada ambiente. No Android, ela também permite acessar recursos do equipamento que ajudam a controlar sua operação.",[23,52,53],{},"Compartilhar a mesma base, porém, não torna as capacidades equivalentes. O aplicativo Android integra recursos do sistema para manter a tela ativa. No navegador, o Player também tenta manter a tela ligada quando está em tela cheia ou instalado como aplicativo web, se o navegador oferecer esse recurso; fora dessas condições, a página precisa permanecer visível.",[23,55,56],{},"Essa distinção precisa fazer parte do projeto: uma capacidade indisponível deve ter um comportamento previsto. Para o operador, importa saber quais condições são necessárias para manter aquela tela em funcionamento.",[41,58,60],{"id":59},"a-sequência-de-reprodução-e-o-que-aparece-na-tela","A sequência de reprodução e o que aparece na tela",[23,62,63],{},"Durante a reprodução, o player precisa decidir qual conteúdo está ativo e preparar o seguinte. Na Lucimark, essa sequência é organizada por uma lógica compartilhada entre as duas plataformas.",[23,65,66],{},"O player mantém o conteúdo atual e prepara o próximo. Na troca, atualiza em conjunto o conteúdo e a indicação do que deve estar visível. Essa coordenação evita que a tela exiba um item diferente do previsto para aquele momento.",[23,68,69],{},"Também precisamos cuidar da medição do tempo. O player acompanha a duração da reprodução de forma independente dos ajustes no horário do dispositivo. Assim, uma correção no relógio não altera a sequência em andamento.",[23,71,72],{},"Quando a página fica oculta, o player adapta a forma de acompanhar a sequência. Ao voltar a ficar visível, reajusta o estado da reprodução. Esse mecanismo ajuda a recuperar o estado após limitações de execução em segundo plano. Para a operação contínua, o equipamento precisa manter o player ativo e visível.",[23,74,75,76,79],{},"Há ainda uma diferença entre ",[36,77,78],{},"selecionar o próximo conteúdo e ter esse conteúdo pronto para aparecer",". Um vídeo pode precisar de tempo para apresentar a primeira imagem. Por isso, a camada de apresentação também tem mecanismos para manter temporariamente o conteúdo anterior enquanto o seguinte fica pronto, com limites de espera. Essas medidas reduzem interrupções visíveis durante as transições e precisam ser verificadas nas condições reais de uso do equipamento.",[41,81,83],{"id":82},"uma-atualização-também-precisa-de-um-caminho-de-volta","Uma atualização também precisa de um caminho de volta",[23,85,86],{},"No Android, separamos as atualizações em dois caminhos:",[88,89,90,106],"table",{},[91,92,93],"thead",{},[94,95,96,100,103],"tr",{},[97,98,99],"th",{},"Caminho",[97,101,102],{},"O que muda",[97,104,105],{},"Quando é necessário",[107,108,109,123],"tbody",{},[94,110,111,117,120],{},[112,113,114],"td",{},[36,115,116],{},"Atualização da aplicação web",[112,118,119],{},"A lógica de reprodução e a interface",[112,121,122],{},"Correções e melhorias compatíveis com o aplicativo instalado",[94,124,125,130,133],{},[112,126,127],{},[36,128,129],{},"Atualização do aplicativo Android",[112,131,132],{},"O aplicativo instalado no equipamento",[112,134,135],{},"Mudanças na integração com o sistema e nos recursos do dispositivo",[23,137,138],{},"Essa separação permite atualizar a aplicação web remotamente sem substituir todo o aplicativo Android a cada alteração. Precisamos, porém, preservar a compatibilidade: uma nova versão não pode exigir um recurso que o aplicativo instalado ainda não oferece. Da mesma forma, voltar a uma versão anterior exige considerar as duas partes.",[23,140,141],{},"Durante o desenvolvimento das atualizações remotas, encontramos um problema no retorno à versão incluída no aplicativo. O player mantinha uma indicação antiga de atualização mesmo depois de o servidor orientar a reversão.",[23,143,144,145,148,149,152],{},"A origem estava em uma distinção importante: ",[36,146,147],{},"não receber uma nova orientação"," é diferente de ",[36,150,151],{},"receber uma orientação para voltar à versão original",". Ajustamos essa interpretação e a recarga da aplicação, que também podia reutilizar uma cópia antiga da página.",[23,154,155],{},"Esse caso reforçou um critério de desenvolvimento: verificar uma atualização inclui testar o caminho de volta e confirmar qual versão o equipamento está executando.",[41,157,159],{"id":158},"offline-começa-antes-de-a-conexão-cair","Offline começa antes de a conexão cair",[23,161,162,163],{},"O player só consegue continuar com os recursos que já recebeu. ",[36,164,165],{},"Retomar a reprodução sem rede depende de ter a programação e as mídias necessárias armazenadas no dispositivo.",[167,168],"blog-figure",{":height":169,":n":170,":width":171,"alt":172,"caption":173,"src":174},"941","1","1672","Ilustração de uma tela ligada ao lado de um reprodutor de mídia e cartões que representam conteúdos armazenados localmente.","A reprodução sem rede começa com a programação e as mídias já armazenadas no dispositivo. Ilustração conceitual.","\u002Fimg\u002Fposts\u002Fplayer-confiavel-android-navegador\u002Fconteudo-local-offline.webp",[23,176,177],{},"Armazenamos no dispositivo os dados de registro, a programação e as mídias. Na inicialização, esse estado local permite recuperar o que já estava disponível. Arquivos em cache considerados saudáveis podem ser reaproveitados sem bloquear a abertura com uma consulta de validação para cada mídia. Quando a revalidação falha, o arquivo local pode continuar servindo à reprodução.",[23,179,180],{},"A política de limpeza também precisa respeitar a programação: remover uma mídia apenas por sua idade pode apagar um arquivo que a tela ainda precisa exibir. Por isso, as referências da programação atual protegem os arquivos contra essa remoção.",[23,182,183],{},"No Android, vídeos compatíveis podem usar diretamente o armazenamento de arquivos do equipamento, conforme os recursos da versão instalada. Se um arquivo deixa de existir, o player precisa reconhecer essa ausência e obtê-lo novamente quando houver conexão.",[23,185,186],{},"Limitamos a quantidade de downloads simultâneos e espaçamos as novas tentativas quando há falhas. Isso ajuda a controlar a carga quando vários equipamentos voltam a funcionar ao mesmo tempo, como após uma queda de energia.",[23,188,189],{},"O alcance do offline também depende do conteúdo. Vídeos e imagens já armazenados têm condições diferentes de conteúdos que consultam dados externos, transmissões ao vivo e notícias atualizadas pela internet. A programação precisa considerar essas dependências para que o operador saiba o que continuará disponível durante uma interrupção de rede.",[41,191,193],{"id":192},"entender-a-interrupção-faz-parte-da-recuperação","Entender a interrupção faz parte da recuperação",[23,195,196],{},"Quando uma tela aparece como offline, a causa ainda pode estar em aberto. Rede indisponível, encerramento do aplicativo e perda de energia exigem respostas diferentes da operação.",[23,198,199],{},"No navegador, um registro local ajuda a identificar um encerramento inesperado. No Android, a integração com o equipamento acrescenta sinais de inicialização, bateria baixa e desconexão de energia.",[23,201,202,203,206],{},"Esses dados ajudam a identificar a ",[36,204,205],{},"causa provável"," da interrupção. Um corte brusco pode impedir o registro do evento, e os sinais disponíveis variam entre equipamentos. Parte da informação só chega quando o player volta a se comunicar. Por isso, o diagnóstico orienta a investigação e ajuda a operação a decidir o próximo passo.",[41,208,210],{"id":209},"confiabilidade-como-critério-de-desenvolvimento","Confiabilidade como critério de desenvolvimento",[23,212,213],{},"O núcleo compartilhado permite verificar regras de reprodução no navegador e reaproveitá-las no Android. As integrações nativas, por sua vez, exigem verificações no equipamento: o navegador não reproduz todas as condições de inicialização, armazenamento e vídeo de uma instalação real.",[23,215,216],{},"Ao avaliar uma mudança no player, voltamos a perguntas práticas:",[218,219,220,224,227,230],"ul",{},[221,222,223],"li",{},"A sequência continua correta durante a troca de conteúdo?",[221,225,226],{},"A programação já armazenada pode ser recuperada após um reinício sem rede?",[221,228,229],{},"A atualização é compatível com o aplicativo instalado e tem um caminho de reversão?",[221,231,232],{},"Os sinais disponíveis ajudam a investigar uma interrupção e deixam claros seus limites?",[23,234,235,236,240],{},"É assim que traduzimos ",[237,238,239],"em",{},"Telas que nunca param"," em trabalho de engenharia: preparar a continuidade, reduzir a necessidade de intervenção e tornar as falhas mais compreensíveis quando acontecem.",[23,242,243,244],{},"Para quem opera uma rede de telas, vale começar por um cenário concreto: ",[36,245,246],{},"se a energia cair e o dispositivo reiniciar antes de a internet voltar, o que ele conseguirá exibir — e como você saberá o que aconteceu?",[23,248,249,250,257,258,262],{},"Quem for montar ou avaliar o equipamento pode cruzar esse critério com os ",[251,252,256],"a",{"href":253,"rel":254},"https:\u002F\u002Flucimark.com\u002Fplayer-requirements",[255],"nofollow","requisitos do player"," e o guia de ",[251,259,261],{"href":260},"\u002Fcomo-colocar-primeira-tela-lucimark","como colocar a primeira tela no ar",".",{"title":264,"searchDepth":265,"depth":265,"links":266},"",2,[267,268,269,270,271,272],{"id":43,"depth":265,"text":44},{"id":59,"depth":265,"text":60},{"id":82,"depth":265,"text":83},{"id":158,"depth":265,"text":159},{"id":192,"depth":265,"text":193},{"id":209,"depth":265,"text":210},{"src":274,"alt":275,"credit":276},"\u002Fimg\u002Fposts\u002Fplayer-confiavel-android-navegador\u002Fplayer-confiavel-android-navegador-cover.webp","Ilustração de uma loja com uma tela horizontal na parede e um totem vertical exibindo composições em laranja e creme.","Uma base compartilhada para diferentes formatos de tela. Ilustração conceitual.","Como a Lucimark desenvolve um player para Android e navegador, com reprodução consistente, atualizações reversíveis e conteúdo disponível sem rede.",null,false,"md",{},true,"\u002Fpt\u002Fposts\u002Fplayer-confiavel-android-navegador","2026-09-07",{"title":16,"description":277},"player-confiavel-android-navegador","pt\u002Fposts\u002Fplayer-confiavel-android-navegador",[289,290,291,292],"player","android","offline","confiabilidade","fKN9465N1X7J6uQw-dOKaRnaBZle-WGmVrjwKSe1GPE",{"paulo-ramires":295},{"handle":18,"name":296,"role":297,"avatar":298,"description":299},"Paulo R.","Fundador e CTO","\u002Fimg\u002Fauthors\u002Fpaulo-ramires.jpg","Fundador da Lucimark. Constrói a plataforma de ponta a ponta — do player Android na tela até os Workers que servem a API.","reliable-player-android-browser",[302,320,336],{"path":303,"title":304,"description":305,"slug":306,"translationKey":306,"category":9,"tags":307,"authors":312,"publishedAt":313,"updatedAt":278,"draft":279,"featured":282,"cover":314,"ogImage":317,"discussionUrl":318,"translationStatus":278,"readingMinutes":319},"\u002Fpt\u002Fposts\u002Flucimark-para-operadores-de-redes-dooh","Lucimark para operadores de redes DOOH — o que exigir do software da sua operação","Para quem vende telas e conteúdo a outras empresas — o que exigir do software da operação, como a Lucimark responde, quanto custa cada tela e onde ela ainda não chega.","lucimark-para-operadores-de-redes-dooh",[10,308,309,310,311],"rede-dooh","operadores","preco-por-tela","software",[18],"2026-10-13",{"src":315,"alt":316},"\u002Fimg\u002Fposts\u002Flucimark-para-operadores-de-redes-dooh\u002Flucimark-para-operadores-de-redes-dooh-cover.webp","Rua molhada à noite com uma tela acesa em laranja na vitrine de uma padaria e, ao longo da calçada, telas de outros comércios acesas com o mesmo conteúdo, ligadas por linhas de luz até uma fileira de telas ao fundo.","\u002Fimg\u002Fposts\u002Flucimark-para-operadores-de-redes-dooh\u002Flucimark-para-operadores-de-redes-dooh-og.jpg","https:\u002F\u002Fwww.linkedin.com\u002Ffeed\u002Fupdate\u002Furn:li:activity:7515758540381413376\u002F",7,{"path":321,"title":322,"description":323,"slug":324,"translationKey":324,"category":10,"tags":325,"authors":329,"publishedAt":330,"updatedAt":278,"draft":279,"featured":279,"cover":331,"ogImage":332,"discussionUrl":278,"translationStatus":278,"readingMinutes":335},"\u002Fpt\u002Fposts\u002Fprova-de-veiculacao-rede-telas","Prova de veiculação: como valorizar a entrega da sua rede de telas","Veja como a Lucimark ajuda a organizar mídias por anunciante, registrar reproduções e gerar relatórios de prova de veiculação para prestar contas e apoiar renovações.","prova-de-veiculacao-rede-telas",[10,326,327,328],"prova-de-veiculacao","relatorios","anunciantes",[18],"2026-09-11",{"src":332,"alt":333,"credit":334},"\u002Fimg\u002Fposts\u002Fprova-de-veiculacao-rede-telas\u002Fprova-de-veiculacao-rede-telas-cover.png","Prova de veiculação ilustrada por telas digitais, mapa de calor geográfico e matriz de tempo no ar por dia e horário.","A prova de veiculação ajuda a visualizar onde e quando os anúncios foram reproduzidos. Ilustração demonstrativa.",4,{"path":337,"title":338,"description":339,"slug":340,"translationKey":340,"category":9,"tags":341,"authors":345,"publishedAt":346,"updatedAt":278,"draft":279,"featured":279,"cover":347,"ogImage":348,"discussionUrl":278,"translationStatus":278,"readingMinutes":335},"\u002Fpt\u002Fposts\u002Fcomo-usar-studio-midias-playlists-telas","Da primeira mídia à tela: como começar a usar a Lucimark","Aprenda a enviar mídias, montar playlists, registrar o player e atribuir conteúdo às telas no Lucimark Studio.","como-usar-studio-midias-playlists-telas",[342,343,344],"studio","playlists","primeira-tela",[18],"2026-09-08",{"src":348,"alt":349},"\u002Fimg\u002Fposts\u002Fcomo-usar-studio-midias-playlists-telas\u002Fcomo-usar-studio-midias-playlists-telas-cover.png","Fluxo Lucimark Studio em três telas — Mídias, Playlist e Tela — com o título Mídias → Playlist → Tela.",{"newer":351,"older":365},{"path":352,"title":353,"description":354,"slug":355,"translationKey":355,"category":9,"tags":356,"authors":359,"publishedAt":346,"updatedAt":278,"draft":279,"featured":279,"cover":360,"ogImage":278,"discussionUrl":278,"translationStatus":278,"readingMinutes":364},"\u002Fpt\u002Fposts\u002Fgrade-programacao-telas-padaria","Do forno à vitrine: uma grade de programação para a padaria","Do café ao almoço e à jantinha: organize a tela pelos eventos da padaria. Um exemplo fictício com poucas peças e uma grade para preencher.","grade-programacao-telas-padaria",[357,358,343],"padaria","programacao",[18],{"src":361,"alt":362,"credit":363},"\u002Fimg\u002Fposts\u002Fgrade-programacao-telas-padaria\u002Fpadaria-cafe.jpg","Padaria fictícia com vitrine de pães e doces e tela anunciando café com pão na chapa.","Cena ilustrativa gerada por IA. Estabelecimento, pessoas e preços são fictícios.",15,{"path":366,"title":367,"description":368,"slug":369,"translationKey":369,"category":8,"tags":370,"authors":373,"publishedAt":374,"updatedAt":278,"draft":279,"featured":279,"cover":375,"ogImage":379,"discussionUrl":278,"translationStatus":278,"readingMinutes":380},"\u002Fpt\u002Fposts\u002Fseguranca-privacidade-rede-telas","Segurança e privacidade: confiança para sua rede de telas","Entenda como organizar acessos, proteger dados e prestar contas das campanhas para operar uma rede de telas com mais confiança.","seguranca-privacidade-rede-telas",[371,372,308,8],"seguranca","privacidade",[18],"2026-09-06",{"src":376,"alt":377,"credit":378},"\u002Fimg\u002Fposts\u002Fseguranca-privacidade-rede-telas\u002Fconversa-no-estabelecimento.webp","Responsável por uma padaria e instalador conversam ao lado de uma tela com anúncio de café e pães.","Cena ilustrativa gerada por IA.","\u002Fimg\u002Fposts\u002Fseguranca-privacidade-rede-telas\u002Fconversa-no-estabelecimento-og.jpg",6,1791980473373]