Em vez do prefácio
Boa tarde, colegas! Meu nome é Aleksey e estou envolvido em TVs, a saber, o desenvolvimento de aplicativos para Smart TV ("
vamos dar um tapinha em Aleksey ").
Mas o que é uma TV inteligente? O que é um aplicativo esférico de Smart TV no vácuo?
Não vou incomodá-lo com a expectativa: basicamente esses tipos de aplicativos são projetados para exibir conteúdo de vídeo. Em qualquer variação. Gravado, transmissão ao vivo, programas de televisão, filmes, desenhos animados, comerciais, e assim por diante ... e assim por diante ... Milhares deles!
Mas a Smart TV é apenas para isso?

Sim, é claro, a TV mostra o melhor conteúdo de vídeo, e lida bem com isso, mas é apenas para isso que podemos usá-lo?
(
Agora, todos os felizes proprietários de consoles e cabos HDMI jogarão seus tomates podres em mim, diga "Cancelar inscrição!". E os felizes sairão e continuaremos .)
De fato, a grande maioria dos aplicativos que tivemos que desenvolver é destinada principalmente à exibição de vídeos, mas houve algumas exceções notáveis entre eles. Além disso, sofrendo da conhecida doença "Furador em um local logo abaixo das costas", eu queria espremer algo mais nas TVs do que todo mundo espera delas.
Minhas (e não apenas) tentativas modestas serão discutidas abaixo.
TV - jogo?
De fato, a primeira coisa que vem à mente é o jogo! A tela grande, a possibilidade de solicitações entre domínios (já que o aplicativo Smart TV é de fato uma página HTML local) e, no mínimo, o controle padrão (controle remoto) nos permite implementar um cenário de jogo.
Na maior parte, são jogos casuais como "1024" ou variações sobre o tema "Tower Defense". Não é grosso. Infelizmente, encerrar o super 3D com sombreadores, sombras e iluminação dinâmica só funcionará nos modelos mais recentes ... no próximo ano. Para a TV, geralmente não é a versão mais avançada do navegador e, o pior de tudo, é raramente atualizada ou não é atualizada. Além disso, a diferença entre o poder de uma TV, mesmo do ano passado e a atual, pode ser múltipla.
Portanto, se você deseja cobrir o número máximo de modelos, prepare-se para a otimização sangrenta de tudo e de tudo. Um Canvas limpo e nativo será seu melhor amigo. Os invólucros trabalham nele, mas é extremamente guloso. O trabalho insatisfatório dos métodos de rotação e transformação é especialmente deprimente, portanto, planeje a animação do sprite e implemente as curvas do sprite apenas nos casos mais extremos.
Uma vez fizemos um jogo na noite da carreira. Ela conseguiu ir a colegas maravilhosos do Web Standarts Days e fazer uma apresentação.
Visualmente, o jogo é um campo de jogo, cabe no tamanho da tela, sem rolagem, sem barreiras. O fundo é dividido em várias camadas para realizar o efeito 3d. No palco, alvos voadores (patos) são gerados, nos quais o usuário pode atirar.

Fig. 1. Visão geral do aplicativo.A principal tarefa era dar a oportunidade de jogar o jogo para qualquer pessoa, o que excluía imediatamente a interação com o controle remoto. O console é um, mas há muitos jogadores. O gerenciamento foi implementado usando o telefone e, para uma cobertura máxima de dispositivos móveis, foi decidido implementar o cliente na forma de um site adaptável. Nós o implementamos no WebSockets e adicionamos um gerenciamento de chip alterando a posição do telefone.
Surgiram então muitos recursos interessantes, sensores de orientação de baixa qualidade e outras falhas. Tivemos que aplicar algoritmos de redução de ruído, caso contrário, a "visão" do player na tela da TV sofreu um tremor terrível. Também se descobriu que o jogo “sopra o vento”: um erro acumulado nos cálculos nos telefones e as vistas gradualmente “desapareceram” em uma direção, o que forçou os jogadores a girar gradualmente. Alguns brincavam de costas para a TV.
Moral : use os sensores de orientação nos navegadores de telefone o mínimo possível.
Fig. 2. Assassinos de pato no trabalhoO aplicativo usa animação substituindo sprites. Este método foi bastante produtivo. Testamos o aplicativo com centenas ou mais patos voadores. Na realidade, havia apenas dez no jogo, e os problemas de desempenho surgiram quando o designer entrou e gritou: "Quero que o planeta gire"!
Torcer o sprite não foi um problema. O problema aconteceu quando lançamos o aplicativo em uma TV relativamente antiga. Aconteceu que ele não realizou uma rotação de sprite de 900 × 900 pixels um pouco mais do que nada. Como resultado, o usuário mais atento pode perceber que o planeta no fundo é dividido em 9 partes que giram em torno de um centro. Isso resolveu o problema de desempenho.
Daí outra moral : não gire grandes sprites.
Outra característica do projeto era que a lógica do jogo é calculada ... na TV. Nesse caso, o servidor atua simplesmente como um transmissor de dados entre os clientes e a TV. Fizemos isso para que, mesmo em caso de perda de conexão, os patos continuassem voando pela tela e, após restaurar a Internet, não fosse necessário reiniciar o aplicativo. Um caso curioso, mas ainda opcional.
Tela de TV?
Parece que isso já é comum, mas não. Como sempre, tudo está oculto nos detalhes. Tela para quê? Que função ele carrega? Para que serve?
Vou dar apenas alguns exemplos.
ParabénsUm dia, decidimos no Dia dos Namorados reduzir um parabéns online na empresa e usar as TVs disponíveis como tradutores de parabéns. O aplicativo foi implementado em uma versão minimalista, com uma solicitação ao servidor retornando uma lista de parabéns. O principal problema foi o recurso desagradável das TVs para entrar no modo de suspensão. Se a Samsung permitir que você desabilite esse recurso usando o método setScreenSaver, outras plataformas não o permitirão. Como alternativa, você pode executar em segundo plano qualquer vídeo em loop - a TV no modo de exibição de vídeo é desligada com muito menos frequência. Como resultado, o aplicativo cumpriu sua função: em todas as partes do escritório em vários andares, os parabéns dos funcionários foram transmitidos on-line.
MapaPara ser completamente preciso - um mapa de combate com uma lista dos melhores jogadores.
Novamente fizemos o jogo no Career Night e desta vez decidimos combinar TVs, telefones e VR. O ponto principal é que o jogador no capacete VR voa sobre o dragão e atira nas princesas, que são controladas pelos jogadores pelos telefones. Quem matou o dragão coloca um capacete. E assim em um círculo. Eu modesto observo que o aplicativo lidou com sua função (coletar o número máximo de pessoas em nosso estande e mantê-las o maior tempo possível). Saiba mais sobre dragões destruindo princesas
aqui .

Fig. 3. Visão geral do estandeO aplicativo de TV forneceu uma demonstração do cenário geral da batalha para todos os participantes.
Neste projeto, fomos confrontados com a necessidade de otimizar códigos anteriormente estáveis e em bom funcionamento. Com um aumento no número de players, os indicadores de desempenho dos aplicativos pioraram acentuadamente. Identificamos as principais formas de otimização:
- reduzir a quantidade de informações transmitidas do servidor para os clientes e dos clientes para o servidor;
- minimizar a criação de novos objetos no aplicativo.
A criação de cada nova instância da classe é perceptível aos olhos, portanto, todas as instâncias devem ser criadas com antecedência e mostradas ao usuário conforme necessário.
Na TV à esquerda está uma visão dos óculos VR, na TV no centro há um mapa de cena.
Fig. 4. A jogabilidade. Na TV à esquerda - vista dos óculos VR, na TV no centro - mapa de cenaFundo interativoVocê pode perguntar, com razão: "Você trabalha lá, não é?!" Ao qual responderei com uma sincera falta de sono no rosto: "Claro, eu trabalho!" Mas mais sobre isso mais tarde. Enquanto isso, não nos recostamos e queríamos implementar um plano de fundo interativo para o quadrocóptero. Mais detalhes sobre o projeto podem ser encontrados
aqui .
A idéia era mostrar na televisão a propriedade do Papai Noel, que responderia à partida / chegada do quadrocóptero.
O principal interesse era "esticar" a imagem em três TVs. Fabricantes diferentes.
Fizemos isso dividindo toda a cena em "salas". Cada TV mostrou uma "sala" com seu número. Os números das "salas" poderiam ser alterados, para que as TVs, em princípio, pudessem mostrar as mesmas partes de uma cena, mas mostramos a cena inteira em sequência. Comandos para mover o ambiente das cenas (animais, movimento da lua e fumaça das chaminés) foram transmitidos do servidor por meio de seus WebSockets favoritos.

Fig. 5. Uma cena estendida por três TVsComo sabíamos a hora de chegada / partida do quadrocóptero, surgiu a idéia de fazer um “vento” nas televisões que “sopravam” a fumaça dos canos com a operação apertada dos parafusos.
Novamente, o comando para decolar do quadrocopter através do servidor desceu para os clientes.
E aqui também tivemos dificuldades com o desempenho. O “velho” webOS de 2013 extremamente difícil renderizou uma imagem grande (5760 × 1080). Eu tive que cortar o pano de fundo para o tamanho da tela especificamente para ele e substituí-lo estritamente.
Moral : Não tente desenhar imagens substancialmente maiores que a tela da TV. Ele não vai sobreviver a isso.
No entanto, implementamos com sucesso tudo relacionado à Smart TV e ao back-end.
TV - Guarda?No entanto, o projeto mais interessante era completamente não-ficção, e não importa o que fosse útil.
O aplicativo estava envolvido em segurança doméstica. Sim, é TV. Sim, foi guardado.
A essência do aplicativo é que a câmera existente pega tudo o que acontece à sua frente e, no caso de uma mudança acentuada na imagem, executa ações para escolher:
- gritando alto;
- envia SMS para o usuário;
- escreve uma carta com fotos em anexo do incidente;
- escreve uma mensagem para FB também com imagens;
- faz tudo isso de uma vez ou em qualquer variação.
A TV em si neste momento está fingindo ser uma bota de feltro e não está funcionando. No aplicativo, foram tratados casos de desligar a TV da Internet ou simplesmente da energia. O aplicativo suportava o multilinguismo.
Dezenas de milhares de pessoas o instalaram por si mesmas.
Mas aqui não foi tudo simples.
Quando você conecta a câmera e tenta obter um fluxo no navegador a partir dela, como você sabe, o pop-up do sistema cai com a confirmação da ação. A peculiaridade é que as TVs bloqueiam todos os pop-ups. Portanto, nosso aplicativo foi implementado apenas na plataforma Samsung, usando a câmera de TV embutida ou uma câmera especial fornecida pela mesma Samsung.
Outro ponto negativo foi, novamente, o desempenho da TV. Em TVs relativamente antigas (2013), pode-se passar pela câmera e a TV “bata” nesse momento.
Mas, no geral, a ideia é simplesmente brilhante.
Conclusão
Há muito que as TVs superam sua função principal - mostrar uma imagem de um canal, mostrar vidosiki ou ser um segundo monitor.
Seus recursos e desempenho estão em constante crescimento e o escopo de aplicação é limitado apenas pela sua imaginação. Qualquer tarefa pode ser resolvida com a devida consideração da idéia e a implementação apropriada. Ouse e tenha sucesso!
Todos televisão!
Z.Y. Talvez você, leitor, tenha realizado tarefas incomuns para a TV inteligente, quando teve que usar a TV em um papel incomum para isso? Compartilhe! Diga-me!