BR112021009629A2 - método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória - Google Patents

método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória Download PDF

Info

Publication number
BR112021009629A2
BR112021009629A2 BR112021009629-9A BR112021009629A BR112021009629A2 BR 112021009629 A2 BR112021009629 A2 BR 112021009629A2 BR 112021009629 A BR112021009629 A BR 112021009629A BR 112021009629 A2 BR112021009629 A2 BR 112021009629A2
Authority
BR
Brazil
Prior art keywords
interface
user interface
application
client device
event
Prior art date
Application number
BR112021009629-9A
Other languages
English (en)
Inventor
Hongliang Li
Alain Delpuch
Original Assignee
Nagravision S.A.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nagravision S.A. filed Critical Nagravision S.A.
Publication of BR112021009629A2 publication Critical patent/BR112021009629A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4821End-user interface for program selection using a grid, e.g. sorted out by channel and broadcast time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4825End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

MÉTODO DE PROCESSAMENTO DO CONTEÚDO DA INTERFACE DE USUÁRIO, SISTEMA, E, MÍDIA LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIA. Técnicas e sistemas são providos para processamento do conteúdo da interface de usuário. Por exemplo, um computador servidor pode receber um evento da interface de usuário correspondente a uma interface de usuário de um dispositivo (por exemplo, um dispositivo cliente, um outro computador servidor, ou outro dispositivo). Uma aplicação associada com o evento da interface de usuário pode ser determinada, e um modelo de interface 5 pode ser gerado usando a aplicação associada com o evento da interface de usuário. O modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário. A informação de estado resulta a partir do evento da interface de usuário. O computador servidor pode enviar o modelo de interface para o dispositivo, que habilita o dispositivo a renderizar a interface de usuário.

Description

1 / 81
MÉTODO DE PROCESSAMENTO DO CONTEÚDO DA INTERFACE DE USUÁRIO, SISTEMA, E, MÍDIA LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIA
[001] Este pedido reivindica o benefício do Pedido de Patente US 62/770.973, depositado em 23 de novembro de 2018, que é aqui incorporado pela referência em sua íntegra e para todos os propósitos. Campo Técnico
[002] A presente descrição, no geral, se refere a técnicas e sistemas para gerenciar a geração e a renderização de interfaces de usuário, e, mais especificamente, à melhoria da eficiência para gerar e renderizar interfaces de usuário usando um sistema com base em servidor. Sumário
[003] Em alguns exemplos, técnicas e sistemas são aqui descritos para implementar uma interface de usuário, para a qual geração e renderização são gerenciadas por um sistema de computador centralizado ou com base em servidor (por exemplo, um sistema de servidor com base em nuvem, um sistema de computador distribuído, ou outro sistema com base em computador remoto) que fica remoto de um dispositivo cliente. O sistema com base em servidor pode implementar técnicas para gerenciar interfaces de usuário através de múltiplos dispositivos, desse modo, melhorando a eficiência pela qual uma interface de usuário comum é gerenciada através de sistemas com muitos dispositivos clientes. As interfaces de usuário podem incluir qualquer tipo adequado de interface de usuário física ou virtual capaz de facilitar a recepção de entrada por meio de um dispositivo de entrada, tais como qualquer tipo de interface de usuário gráfica (GUI), um guia de programação eletrônico (EPG) ou guia de conteúdo para acessar conteúdo de mídia, uma interface de usuário para uma aplicação de jogo, e/ou qualquer outro tipo adequado de interface de usuário. Em alguns casos, uma interface de usuário pode ser gerada para cada aplicação em um dispositivo cliente. Por
2 / 81 exemplo, um dispositivo cliente pode exibir uma primeira interface de usuário para uma primeira aplicação, uma segunda interface de usuário para uma segunda aplicação, uma terceira interface de usuário para uma terceira aplicação, e assim por diante.
[004] A interface de usuário com base em servidor pode ser implementada e/ou gerenciada parcialmente por um sistema de servidor e parcialmente por um dispositivo cliente, ou combinações dos mesmos, para renderização da interface de usuário. Por exemplo, o sistema de servidor pode determinar elementos gráficos (também referidos como objetos gráficos) para exibição, onde e como exibir os diferentes elementos gráficos, como reagir aos eventos da interface de usuário (também referidos como eventos de interface), entre outras ações da interface de usuário. O dispositivo cliente pode retransmitir eventos de interface para o sistema de servidor e pode renderizar os elementos gráficos para a interface de usuário com base na informação do plano de localização da interface de usuário e outros atributos associados com a interface de usuário (por exemplo, um modelo de interface, da forma aqui descrita) recebida a partir do sistema de servidor. O sistema de servidor pode incluir um ou mais computadores servidores. Em alguns exemplos, o sistema de servidor pode incluir um sistema de computador com base em nuvem. O dispositivo cliente pode incluir qualquer dispositivo adequado, tais como um dispositivo de mídia (por exemplo, um caixa de topo de aparelho ou outro dispositivo de console), uma televisão conectada na Internet, um dispositivo móvel (por exemplo, telefone celular, laptop, computador tipo tablet, dispositivo vestível ou outro dispositivo móvel). O dispositivo cliente pode ser conectado no sistema de servidor do computador usando uma rede com fios ou sem fio.
[005] O dispositivo cliente pode enviar eventos de interface para o sistema de servidor para processamento. Os eventos de interface podem ser gerados pelo dispositivo cliente com base em entrada de usuário recebida
3 / 81 através da interface de usuário (por exemplo, um evento específico da aplicação à qual a interface de usuário se aplica), com base em eventos no nível do sistema (por exemplo, um evento relacionado a uma interface de usuário no dispositivo cliente, tais como um ajuste de volume ou uma mudança em uma interface dinâmica), e/ou com base em eventos no nível da aplicação. O sistema de servidor pode identificar uma aplicação e/ou um sistema (por exemplo, para eventos no nível do sistema) nos quais um evento da interface de usuário recebido se aplica, e pode determinar quaisquer mudanças na interface de usuário para esta aplicação e/ou este sistema com base no evento de interface recebido.
[006] Em alguns exemplos, o sistema de servidor pode gerar um modelo da interface de usuário (também aqui referido como um modelo de interface) que descreve como a interface de usuário deve parecer em qualquer momento. Por exemplo, um modelo de interface pode ser gerado com base em eventos da interface de usuário recebidos, tais como um ou mais pressionamentos de tecla, movimentos de dedo, orientações e/ou posições do dispositivo, entre outros. Em alguns casos, um modelo de interface pode ser com base em outros eventos, tais como outros eventos de cliente remoto ou eventos recebidos a partir de um dispositivo ou sistema diferente de um dispositivo cliente. Por exemplo, outros eventos podem ser com base no vídeo ser iniciado ou terminado, controle de acesso ao vídeo ser negado, um telefone tocando, um correio eletrônico ou outra mensagem ser recebida, entre outros eventos. Em alguns casos, o sistema de servidor pode gerar um modelo de interface que define informação de estado para um ou mais objetos gráficos da interface de usuário (por exemplo, um plano de localização da interface de usuário e/ou outros atributos dos um ou mais objetos gráficos). Em algumas implementações, o modelo de interface pode ser definido, integralmente ou parcialmente, por uma estrutura ou sintaxe, que pode definir ou representar a estrutura lógica de um documento (por exemplo, uma
4 / 81 estrutura de uma interface de usuário de uma aplicação), e a maneira que o documento é acessado, gerado, renderizado e/ou manipulado. Por exemplo, um modelo de interface pode incluir um Modelo de Objeto do Documento (DOM) que define a estrutura para apresentar componentes que compreendem uma interface de usuário.
[007] Em alguns casos, o sistema de servidor pode melhorar a eficiência pela qual uma interface de usuário é gerada e renderizada em um dispositivo cliente. Em pelo menos uma modalidade, o sistema de servidor pode otimizar o modelo de interface antes de enviar o modelo de interface para o dispositivo cliente. Por exemplo, o sistema de servidor pode determinar uma diferença entre uma interface de usuário atual (por exemplo, informação de estado atual da interface de usuário, tais como uma interface de usuário atual, atributos atuais de elementos gráficos, entre outras informações de estado) e uma interface de usuário anterior (por exemplo, informação de estado anterior gerada antes da informação de estado atual da interface de usuário atual), e pode gerar um modelo de interface intermediário (também aqui referido como “um modelo de interface delta”) indicando a diferença, ou delta, entre a interface de usuário atual e a interface de usuário anterior. O sistema de servidor pode enviar um modelo de interface delta para o dispositivo cliente indicando apenas a diferença, em vez de a íntegra do modelo de interface que descreve informação de estado para a íntegra da interface de usuário.
[008] O modelo de interface, ou um modelo de interface delta, pode ser enviado do sistema de servidor para o dispositivo cliente. Um motor de renderização de elementos gráficos do dispositivo cliente pode renderizar a interface de usuário com base no modelo de interface recebido. Por exemplo, o dispositivo cliente pode ler um modelo de interface recebido para uma dada interface de usuário, e pode renderizar a interface definida pelo modelo de interface. O dispositivo cliente pode atualizar a interface de usuário com base
5 / 81 no delta indicando as propriedades e/ou as funções da interface de usuário que mudaram. Em alguns casos, o modelo de interface pode indicar propriedades e/ou funções da interface de usuário que podem ser reusadas se a interface de usuário mudar em uma certa quantidade (por exemplo, uma mudança completa na interface de usuário). O uso do modelo de interface habilita o dispositivo cliente a evitar o processamento para determinar informação de estado para uma interface de usuário (por exemplo, um plano de localização entre outros atributos) ou mudanças na informação de estado, tal como realização da computação do plano de localização. Por exemplo, o sistema de servidor pode pré-computar as propriedades de elemento gráfico (por exemplo, as posições, os tamanhos, as cores e/ou outras propriedades do elemento gráfico), que são representadas pelo modelo de interface, de forma que não haja necessidade de que o dispositivo cliente determine informação de estado da interface de usuário (por exemplo, realiza uma computação do plano de localização, computação de atributo gráfico, etc.), entre outros processamentos exigidos para determinar as propriedades da interface de usuário. Em vez disto, o modelo de interface é comunicado para o dispositivo cliente, e o dispositivo cliente pode implementar rotinas (por exemplo, rotinas gráficas) para gerar a interface de usuário com base no modelo de interface. Por exemplo, usando o modelo de interface, o cliente pode converter uma árvore de objetos gráficos do modelo de interface para uma lista de chamadas de rotina gráfica.
[009] [0001] De acordo com pelo menos um exemplo, um método de processamento do conteúdo da interface de usuário é provido. O método inclui receber, por um computador servidor, um evento da interface de usuário. O evento da interface de usuário corresponde a uma interface de usuário de um dispositivo cliente. O método inclui adicionalmente determinar uma aplicação associada com o evento da interface de usuário e gerar um modelo de interface usando a aplicação associada com o evento da interface
6 / 81 de usuário. O modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário. A informação de estado resulta a partir do evento da interface de usuário. O método inclui adicionalmente enviar, pelo computador servidor, o modelo de interface para o dispositivo cliente. O modelo de interface habilita o dispositivo cliente a renderizar a interface de usuário.
[0010] Em um outro exemplo, um sistema é provido para processamento do conteúdo da interface de usuário. O sistema inclui um ou mais processadores e uma memória acessível aos um ou mais processadores e armazenando instruções que, mediante execução pelos um ou mais processadores, fazem com que os um ou mais processadores: recebam um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinem uma aplicação associada com o evento da interface de usuário; gerem um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário, a informação de estado resultando a partir do evento da interface de usuário; e enviem o modelo de interface para o dispositivo cliente, o modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
[0011] Em um outro exemplo, uma mídia legível por computador não transitória de um computador servidor que tem, armazenadas na mesma, instruções que, quando executadas por um ou mais processadores, fazem com que os um ou mais processadores: recebam um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinem uma aplicação associada com o evento da interface de usuário; gerem um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de
7 / 81 usuário, a informação de estado resultando a partir do evento da interface de usuário; e enviem o modelo de interface para o dispositivo cliente, o modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
[0012] Em alguns aspectos, os métodos, aparelhos, e mídia legível por computador supradescritos podem compreender adicionalmente comprimir o modelo de interface. O modelo de interface enviado para o dispositivo cliente é o modelo de interface comprimido.
[0013] Em alguns aspectos, o modelo de interface é um primeiro modelo de interface e comprimir o modelo de interface inclui: determinar uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos; e gerar um segundo modelo de interface incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia.
[0014] Em alguns casos, gerar o modelo de interface inclui gerar uma parte do modelo de interface. A parte do modelo de interface é associada com uma parte da interface de usuário.
[0015] Em alguns aspectos, os métodos, aparelhos, e mídia legível por computador supradescritos podem compreender adicionalmente: determinar que uma aplicação é disparada pelo dispositivo cliente; determinar que a aplicação não está executando no computador servidor; e adicionar a aplicação em uma lista de aplicações acessíveis por uma pluralidade de dispositivos clientes usando o computador servidor.
[0016] De acordo com pelo menos um outro exemplo, um método de processamento do conteúdo da interface de usuário é provido. O método inclui receber, por um computador servidor, um evento da interface de usuário. O evento da interface de usuário corresponde a uma interface de usuário de um dispositivo cliente. O método inclui adicionalmente determinar
8 / 81 uma aplicação associada com o evento da interface de usuário e gerar um modelo de interface usando a aplicação associada com o evento da interface de usuário. O modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário. A informação de estado resulta a partir do evento da interface de usuário. O método inclui adicionalmente determinar uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos. O método inclui adicionalmente gerar um segundo modelo incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia. O método inclui adicionalmente enviar, pelo computador servidor, o segundo modelo de interface para o dispositivo cliente. O segundo modelo de interface habilita o dispositivo cliente a renderizar a interface de usuário.
[0017] Em um outro exemplo, um sistema é provido para processamento do conteúdo da interface de usuário. O sistema inclui um ou mais processadores e uma memória acessível aos um ou mais processadores e armazenando instruções que, mediante execução pelos um ou mais processadores, fazem com que os um ou mais processadores: recebam um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinem uma aplicação associada com o evento da interface de usuário; gerem um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário, a informação de estado resultando a partir do evento da interface de usuário; determinem uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos; gerem um segundo modelo incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de
9 / 81 estado prévia; e enviem o segundo modelo de interface para o dispositivo cliente, o segundo modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
[0018] Em um outro exemplo, uma mídia legível por computador não transitória de um computador servidor tem, armazenadas na mesma, instruções que, quando executadas por um ou mais processadores, fazem com que os um ou mais processadores: recebam um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinem uma aplicação associada com o evento da interface de usuário; gerem um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário, a informação de estado resultando a partir do evento da interface de usuário; determinem uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos; gerem um segundo modelo incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia; e enviem o segundo modelo de interface para o dispositivo cliente, o segundo modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
[0019] Em alguns aspectos de qualquer um dos exemplos expostos, o modelo de interface (e/ou o segundo modelo de interface) inclui uma estrutura de dados hierárquica que tem os um ou mais objetos gráficos. Cada objeto gráfico dos um ou mais objetos gráficos pode ter um ou mais atributos definidos pela informação de estado. Em alguns aspectos, os um ou mais objetos gráficos incluem pelo menos um de uma caixa, uma linha, uma imagem, um ícone, um texto, e um item de conteúdo a ser exibido na interface de usuário. Em alguns aspectos, cada objeto gráfico dos um ou mais objetos gráficos inclui um ou mais atributos definidos pela informação de estado. Os
10 / 81 um ou mais atributos dos um ou mais objetos gráficos podem incluir pelo menos uma de uma posição, uma forma, e uma cor de um objeto gráfico.
[0020] Em alguns aspectos de qualquer um dos exemplos expostos, os métodos, aparelhos, e mídia legível por computador supradescritos podem compreender adicionalmente determinar a informação de estado com base pelo menos no evento da interface de usuário.
[0021] Em alguns aspectos de qualquer um dos exemplos expostos, a aplicação associada com o evento da interface de usuário é determinada com base em uma conexão entre o computador servidor e o dispositivo cliente.
[0022] Em alguns aspectos de qualquer um dos exemplos expostos, o dispositivo cliente inclui um dispositivo de mídia, e em que a interface de usuário inclui um guia do conteúdo de mídia.
[0023] Os exemplos aqui descritos em relação aos métodos, aparelhos, e mídia legível por computador de exemplo podem ser implementados individualmente ou em qualquer combinação.
[0024] Não pretende-se que este sumário identifique recursos chaves ou essenciais da matéria reivindicada, nem pretende-se que seja usado em isolamento para determinar o escopo da matéria reivindicada. A matéria deve ser entendida pela referência às partes apropriadas da íntegra da especificação desta patente, qualquer um ou todos os desenhos, e cada reivindicação.
[0025] O exposto, juntamente com outras características e modalidades, ficará mais aparente mediante referência aos seguintes especificação, reivindicações e desenhos anexos. Breve Descrição dos Desenhos
[0026] Modalidades ilustrativas do presente pedido são descritas com detalhes a seguir em relação às seguintes figuras: a figura 1 é um diagrama de blocos que ilustra um exemplo de um ambiente de rede, de acordo com algumas modalidades; a figura 2 é um diagrama de blocos que ilustra um exemplo de
11 / 81 um sistema de servidor e um dispositivo cliente, de acordo com algumas modalidades; a figura 3 é um diagrama que ilustra um exemplo de um fluxo de mensagens entre um sistema de servidor e um dispositivo cliente, de acordo com algumas modalidades; a figura 4 é um diagrama que ilustra um exemplo de um modelo de interface, de acordo com algumas modalidades; a figura 5 é um diagrama que ilustra um outro exemplo de um modelo de interface, de acordo com algumas modalidades; a figura 6 é um diagrama que ilustra um exemplo de um modelo de interface delta, de acordo com algumas modalidades; a figura 7 é um diagrama que ilustra um exemplo de uma mudança em uma interface de usuário com base em um modelo de interface delta, de acordo com algumas modalidades; a figura 8 é um fluxograma que ilustra um exemplo de um processo de gerar um modelo de interface delta, de acordo com algumas modalidades; a figura 9 é um fluxograma que ilustra um exemplo de um processo de processamento do conteúdo da interface de usuário, de acordo com algumas modalidades; a figura 10 é um fluxograma que ilustra um outro exemplo de um processo de processamento do conteúdo da interface de usuário, de acordo com algumas modalidades; e a figura 11 é um diagrama de blocos que ilustra um exemplo de uma arquitetura de sistema de computação, de acordo com algumas modalidades. Descrição Detalhada
[0027] Certos aspectos e modalidades desta descrição são providos a seguir. Alguns destes aspectos e modalidades podem ser aplicados
12 / 81 independentemente e alguns dos mesmos podem ser aplicados em combinação, como será aparente aos versados na técnica. Na seguinte descrição, com os propósitos de explicação, detalhes específicos são apresentados a fim de prover um criterioso entendimento das modalidades do pedido. Entretanto, será aparente que várias modalidades podem ser praticadas sem estes detalhes específicos. Não pretende-se que as figuras e a descrição sejam restritivas.
[0028] A subsequente descrição provê modalidades exemplares apenas, e não pretende-se que limite o escopo, a aplicabilidade ou a configuração da descrição. Em vez disto, a subsequente descrição das modalidades exemplares irá prover aos versados na técnica uma descrição habilitadora para implementar uma modalidade exemplar. Entende-se que várias mudanças podem ser feitas na função e no arranjo dos elementos sem fugir do espírito e do escopo do pedido apresentados nas reivindicações anexas.
[0029] Detalhes específicos são dados na seguinte descrição para prover um criterioso entendimento das modalidades. Entretanto, será entendido pelos versados na técnica que as modalidades podem ser praticadas sem estes detalhes específicos. Por exemplo, circuitos, sistemas, redes, processos e outros componentes podem ser mostrados como componentes na forma de diagrama de blocos a fim de não obscurecer as modalidades em detalhe desnecessário. Em outras instâncias, bem conhecidos circuitos, processos, algoritmos, estruturas, e técnicas podem ser mostrados sem detalhe desnecessário a fim de evitar obscurecer as modalidades.
[0030] Também, nota-se que modalidades individuais podem ser descritas como um processo que é representado como um gráfico de fluxos, um fluxograma, um fluxograma de dados, um diagrama de estrutura ou um diagrama de blocos. Embora um fluxograma possa descrever as operações como um processo sequencial, muitas das operações podem ser realizadas em
13 / 81 paralelo ou concorrentemente. Além do mais, a ordem das operações pode ser rearranjada. Um processo é terminado quando suas operações forem completadas, mas pode ter etapas adicionais não incluídas em uma figura. Um processo pode corresponder a um método, uma função, um procedimento, uma sub-rotina, um subprograma, etc. Quando um processo corresponder a uma função, seu término pode corresponder a um retorno da função à função de chamada ou à função principal.
[0031] O termo “mídia legível por computador” inclui, mas sem limitações, dispositivos de armazenamento portáteis ou não portáteis, dispositivos de armazenamento óptico, e várias outras mídias capazes de armazenar, conter ou conduzir instrução(ões) e/ou dados. Uma mídia legível por computador pode incluir uma mídia não transitória na qual dados podem ser armazenados e que não inclui ondas portadoras e/ou sinais eletrônicos transitórios que propagam sem fio ou através de conexões com fios. Exemplos de uma mídia não transitória podem incluir, mas sem limitações, um disco ou fita magnética, mídia de armazenamento óptico, tais como disco compacto (CD) ou disco versátil digital (DVD), memória flash, memória ou dispositivos de memória. Uma mídia legível por computador pode ter, armazenados na mesma, código e/ou instruções executáveis por máquina que podem representar um procedimento, uma função, um subprograma, um programa, uma rotina, uma sub-rotina, um módulo, um pacote de software, uma classe, ou qualquer combinação de instruções, estruturas de dados, ou declarações de programa. Um segmento de código pode ser acoplado em um outro segmento de código ou um circuito de hardware pela passagem e/ou recepção de informação, dados, argumentos, parâmetros, ou conteúdos de memória. Informação, argumentos, parâmetros, dados, etc. podem ser passados, encaminhados ou transmitidos por meio de quaisquer meios adequados, incluindo compartilhamento de memória, passagem de mensagem, passagem de token, transmissão em rede ou similares.
14 / 81
[0032] Além do mais, modalidades podem ser implementadas por hardware, software, software embarcado, middleware, microcódigo, linguagens de descrição de hardware, ou qualquer combinação dos mesmos. Quando implementado em software, software embarcado, middleware ou microcódigo, o código de programa ou os segmentos de código para realizar as tarefas necessárias (por exemplo, um produto de programa de computador) podem ser armazenados em uma mídia legível por computador ou legível por máquina. Um(ns) processador(es) pode(m) realizar as tarefas necessárias.
[0033] Uma interface de usuário pode ser exibida por um dispositivo e pode permitir que um usuário interaja com o dispositivo e/ou uma aplicação em software (também aqui referida como uma aplicação) executada pelo dispositivo pela interação com elementos gráficos da interface de usuário. Por exemplo, um usuário pode prover entrada para manipular, controlar, selecionar e/ou interagir com diferentes elementos gráficos da interface de usuário através de uma ou mais entradas providas por meio de um dispositivo capaz de receber entrada a partir do usuário. Entradas podem incluir, por exemplo, entradas por toque, entradas por gesto, entradas auxiliadas por dispositivo, e/ou entradas por voz, entre outras. As interfaces de usuário podem ser usadas com vários propósitos. Por exemplo, um usuário pode obter um serviço ou um item (por exemplo, obter um artigo de notícias, pedir um filme ou espetáculo pela interação com uma aplicação, pedir comida pela interação com uma aplicação, entre outros) usando uma interface de usuário. Em um outro exemplo, um usuário pode interagir com um jogo pela interação com uma interface de usuário de uma aplicação de jogo.
[0034] Em alguns casos, interfaces de usuário podem ser geradas, renderizadas ou uma combinação das mesmas, em um dispositivo cliente. Um dispositivo cliente pode incluir qualquer dispositivo conectado em uma rede com fios e/ou sem fio, tais como um caixa de topo de aparelho, uma televisão conectada na Internet, um dispositivo móvel (por exemplo, telefone celular,
15 / 81 laptop, tablet ou outro dispositivo móvel), um computador de mesa, um dispositivo vestível (por exemplo, um relógio inteligente, um monitor de atividade física, um óculos de realidade virtual, um óculos de realidade aumentada, ou outro dispositivo vestível), ou outro dispositivo. Por exemplo, uma solução de interface de usuário implementada no dispositivo cliente pode ser implementada pela execução de código de interface de usuário de cliente no dispositivo cliente (por exemplo, como uma aplicação nativa ou usando HTML/JavaScript), em que o código da interface de usuário gera e renderiza uma interface de usuário. Em uma implementação como esta, o código de interface de usuário de cliente precisa realizar computações do plano de localização e outras computações para a interface de usuário, exigindo que o dispositivo cliente processe todos os eventos da interface de usuário e determine planos de localização da interface de usuário e outros atributos da interface de usuário (por exemplo, cor de objetos gráficos, informação de borda para objetos gráficos, velocidade de um vídeo a ser reproduzido em uma interface de usuário, entre outros) com base nos eventos. Em alguns casos, o dispositivo cliente pode interagir com um servidor de apoio para processamento de dados e para acesso à base de dados (por exemplo, para dados de programação, dados de vídeo sob demanda, etc.).
[0035] Entretanto, em alguns casos, uma implementação de dispositivo cliente como esta pode levar a interfaces de usuário com fracas características de desempenho. Em alguns exemplos, o fraco desempenho pode ser devido à comunicação do dispositivo cliente com o servidor para informação e/ou conteúdo. Por exemplo, pode haver atrasos no início da interface de usuário e/ou durante a implementação da interface de usuário. Em um exemplo, no geral, pode levar uma grande quantidade de tempo para iniciar (por exemplo, carregar, compilar JavaScript, entre outras tarefas) o próprio código da interface de usuário. Em um outro exemplo, também pode tomar uma grande quantidade de tempo para que o código da interface de
16 / 81 usuário fique pronto para uso. Em alguns casos, o código da interface de usuário também pode precisar pré-buscar uma grande quantidade de dados (por exemplo, a fim de que a aplicação seja mais rápida quando em uso).
[0036] Um outro problema com soluções de interface de usuário existentes é a utilização da largura de banda. Por exemplo, soluções existentes exigem uma grande quantidade de largura de banda para gerenciamento da interface de usuário, o que é oneroso em relação a recursos de rede, e ainda mais em sistemas que têm muitos usuários. Em um exemplo ilustrativo, o tempo de carregamento de uma aplicação depende da largura de banda, que pode ser limitada quando redes lentas forem usadas (por exemplo, uma rede da Linha de Assinante Digital Assimétrica (ADSL), uma rede 3G, ou outra rede). Atraso da largura de banda leva ao reduzido desempenho para geração e/ou renderização de interfaces de usuário. Largura de banda pode ser onerosa devido ao custo exigido quando paga pela quantidade usada (por exemplo, uma certa quantidade de dólares por Gigabyte). Em alguns casos, para compensar o custo da largura de banda, uma solução é usar mais memória para melhor submeter a cache código e dados, o que também pode ser uma solução onerosa. As técnicas aqui descritas podem reduzir a largura de banda exigida. Tal redução na comunicação para escala irá melhorar a eficiência pela qual as interfaces de usuário são gerenciadas, desse modo, melhorando o tempo de execução e reduzindo os recursos necessários para gerenciar interfaces de usuário.
[0037] Tais problemas podem ser adicionalmente exacerbados pelos sistemas com muitos dispositivos clientes, em que cada dispositivo cliente está gerenciando sua própria interface e precisa manter comunicação com o servidor para dados relacionados à aplicação, entre outra informação. Os problemas podem se tornar ainda mais problemáticos quando as interfaces de usuário mudarem rapidamente, exigindo muitas atualizações e frequentes comunicações com um ou mais servidores.
17 / 81
[0038] Outros problemas também podem surgir a partir de uma implementação de interface de usuário com base em dispositivo cliente. Por exemplo, mais recursos de computação podem ser necessários para desenvolver um recurso em múltiplos dispositivos clientes do que o necessário para desenvolver um recurso em um sistema de servidor. Por exemplo, vários dispositivos clientes (por exemplo, caixas de topo de aparelho, televisões inteligentes, dispositivos móveis, etc.) podem não ter a capacidade de compartilhar recursos uns com os outros. Em um exemplo ilustrativo, se um provedor do conteúdo de mídia precisar de 1 Gigabyte de armazenamento por dispositivo cliente, e houver um milhão de usuários (e, assim, pelo menos um milhão de dispositivos clientes), a quantidade de armazenamento exigida será pelo menos um petabyte. Adicionalmente, diferentes limitações de dispositivo, plataformas, versões de código suportadas, versões de interfaces de usuário, entre outros fatores, tornam difícil gerenciar interfaces de usuário no lado do cliente.
[0039] Em alguns casos, interfaces de usuário podem ser implementadas por um ou mais computadores servidores (também aqui referidos como servidores). Por exemplo, um sistema com base em nuvem pode incluir um ou mais computadores servidores que geram e renderizam uma interface de usuário, que é, então, enviada para um dispositivo cliente. Para aplicações com base em mídia (por exemplo, aplicações de televisão, aplicações de mídia em transmissão contínua, aplicações de jogos em transmissão contínua, entre outras), a interface de usuário pode ser enviada juntamente com ou separada de um fluxo contínuo de conteúdo (por exemplo, um fluxo contínuo de mídia). O sistema com base em nuvem pode implementar a interface de usuário completa, incluindo a lógica, renderizações de elementos gráficos, conversão de vídeo, etc. Uma solução como esta pode permitir que haja menos software instalado no dispositivo cliente (também exigindo menos atualizações de software), e pode exigir
18 / 81 menos teste, o que ajuda com o tempo até a comercialização. Entretanto, mover o processamento da interface de usuário (por exemplo, visualização, controlador, etc.) para um sistema com base em nuvem pode ser desafiador por vários motivos. Por exemplo, para cada dispositivo cliente ativo, um computador servidor pode precisar ter memória para seus elementos gráficos, potência de processamento para renderizar os elementos gráficos, e potência de processamento para comprimir os elementos gráficos (por exemplo, para comprimir vídeo, imagens, e/ou quaisquer outro esquema de compressão de elementos gráficos). Uma solução como esta pode ser aproximadamente 50- 100 vezes mais intensa para o hardware do que o próprio código ‘lógico’ da aplicação real. Uma solução como esta também pode usar uma grande quantidade de largura de banda proveniente dos um ou mais computadores servidores. Adicionalmente, pode ser desejável manter a interação de usuário próxima de tempo real (por exemplo, a exibição segue a entrada de usuário em menos do que 20 milissegundos (ms), 50 ms, 100 ms, ou outra duração de tempo mínima), o que é difícil com um sistema com base em nuvem. Um sistema com base em nuvem também pode ser difícil de alcançar (especialmente em tempo real), e ainda mais difícil de escalar para implementações maiores, sem usar uma grande quantidade de recursos de unidade central de processamento (CPU) e de largura de banda para realizar as funções desejadas (por exemplo, gerenciar eventos interativos através de uma interface de usuário). A quantidade de CPU e de largura de banda exigida para implementar um sistema como este (ainda mais em tempo real) pode ser proibitivamente onerosa. Também pode ser difícil, no lado do servidor, enviar periodicamente múltiplas diferentes interfaces de usuário e mudanças de interface de usuário.
[0040] Sistemas, métodos, e mídia legível por computador são aqui descritos para implementar uma interface de usuário, para a qual geração e renderização são gerenciadas por um sistema de computador centralizado ou
19 / 81 com base em servidor (por exemplo, um sistema de servidor com base em nuvem, um sistema de computador distribuído, ou outro sistema com base em computador remoto) que inclui um ou mais computadores servidores e é remoto de um dispositivo cliente.
O sistema com base em servidor pode implementar técnicas para gerenciar interfaces de usuário através de múltiplos dispositivos, desse modo, melhorando a eficiência pela qual uma interface de usuário comum é gerenciada através de sistemas com muitos dispositivos clientes.
A interface de usuário com base em servidor aqui descrita pode ser implementada e/ou gerenciada parcialmente por um sistema de servidor (incluindo um ou mais computadores servidores) e parcialmente por um dispositivo cliente, ou combinações dos mesmos, para renderização da interface de usuário.
Por exemplo, um dispositivo cliente pode gerar eventos da interface de usuário (por exemplo, com base em entrada de usuário recebida através da interface de usuário, com base em eventos no nível do sistema, e/ou com base em eventos no nível da aplicação) e pode enviar os eventos de interface para o sistema de servidor.
O sistema de servidor pode identificar uma aplicação e/ou um sistema (por exemplo, para eventos no nível do sistema) nos quais um evento de interface deve ser aplicado, e pode determinar informação de estado para a interface de usuário (por exemplo, realizar a implementação do plano de localização necessária para determinar o plano de localização da interface de usuário, determinar outras características dos objetos gráficos da interface, etc.) que resulta a partir de quaisquer eventos de interface aplicáveis.
A implementação do plano de localização pode incluir computação do plano de localização, entre outras funções.
Em alguns casos, o sistema de servidor pode gerar um modelo de interface que define estruturalmente a informação de estado da interface de usuário, e pode enviar o modelo de interface (ou uma versão comprimida do modelo de interface) para o dispositivo cliente.
O dispositivo cliente pode, então, ler o modelo de interface e pode renderizar a interface definida pelo modelo de
20 / 81 interface.
[0041] A informação de estado da interface de usuário pode incluir informação de estado para um ou mais objetos (por exemplo, objetos gráficos e quaisquer outros objetos) da interface de usuário. A informação de estado pode definir o plano de localização dos objetos gráficos (por exemplo, posição, orientação, etc. de cada objeto gráfico) na interface de usuário e atributos ou propriedades dos objetos gráficos (por exemplo, cor, fonte, imagem, vídeo usado, etc.). Atributos ou propriedades também podem ser usadas para mudar o estado de um objeto. Em um exemplo ilustrativo usando um objeto de vídeo como um exemplo de um objeto gráfico, um atributo ou propriedade ‘speed’ no modelo do objeto pode controlar a velocidade de reprodução de um vídeo (por exemplo, um valor de 1 é normal, 0 é pausa, etc.). Em um outro exemplo, uma propriedade ‘onSpeedChange’ no modelo do objeto pode indicar para o dispositivo cliente que o sistema de servidor está interessado em eventos de vídeo, tais como vídeo iniciado, vídeo terminado, vídeo falho, entre outros.
[0042] A interface de usuário gerada usando o sistema com base em servidor aqui descrito pode incluir qualquer tipo adequado de interface de usuário física ou virtual capaz de facilitar a recepção da entrada por meio de um dispositivo de entrada. Exemplos ilustrativos das interfaces de usuário incluem qualquer tipo de interface de usuário gráfica (GUI), um guia de programação eletrônico (EPG) ou um guia de conteúdo para acessar conteúdo de mídia, uma interface de usuário para uma aplicação de jogo, uma interface de usuário para uma aplicação de banco, e/ou qualquer outro tipo adequado de interface de usuário. Em alguns casos, um dispositivo cliente pode ter, armazenadas no mesmo, múltiplas aplicações. Cada uma das aplicações pode ter uma interface de usuário separada que permite que um usuário interaja com a aplicação. Por exemplo, uma televisão inteligente ou um caixa de topo de aparelho pode incluir uma primeira aplicação para um primeiro serviço de
21 / 81 transmissão contínua, uma segunda aplicação para um segundo serviço de transmissão contínua, e uma terceira aplicação que permite que um usuário espelhe conteúdo exibido em um dispositivo móvel para a televisão. Em um exemplo como este, a primeira aplicação pode ter uma primeira interface de usuário, a segunda aplicação pode ter uma segunda interface de usuário, e a terceira aplicação pode ter uma terceira interface de usuário.
[0043] A interface de usuário com base em sistema de servidor aqui descrita pode ser usada em qualquer tipo de sistema que inclui um primeiro dispositivo (por exemplo, que age como um computador servidor) e um segundo dispositivo (por exemplo, um dispositivo cliente), tal como um sistema cliente-servidor, em que o primeiro dispositivo gera e/ou gerencia um modelo de interface e comunica (por exemplo, envia ou transmite) o modelo de interface (ou uma versão comprimida do modelo de interface) ou provê acesso ao modelo de interface ou versão comprimida do modelo de interface (por exemplo, pelo envio de um enlace que referencia um local a partir do qual o modelo de interface pode ser acessado) ao segundo dispositivo, de forma que o segundo dispositivo possa apresentar (por exemplo, por renderização e/ou exibição) uma interface de usuário definida pelo modelo de interface. Exemplos de sistemas para os quais a interface de usuário com base em servidor pode ser implementada incluem sistemas de mídia em que um provedor de conteúdo provê um guia de conteúdo (por exemplo, um guia de programação eletrônico e/ou outra interface de usuário para interagir com conteúdo de mídia, tal como conteúdo de vídeo (conteúdo de vídeo sob demanda, conteúdo de vídeo em transmissão contínua, e/ou outro conteúdo de vídeo), conteúdo de áudio (conteúdo de áudio sob demanda, conteúdo de áudio em transmissão contínua, e/ou outro conteúdo de áudio), conteúdo de realidade aumentada, conteúdo de realidade virtual, e/ou outra mídia) para assinantes do sistema de mídia, provedores de serviço de base de dados que proveem uma interface de usuário para assinantes para gerenciar bases de
22 / 81 dados mantidas pelo provedor do serviço de dados, sistemas de gerenciamento de registro que proveem uma interface de usuário para assinantes para interagir com e revisar registros mantidos pelo sistema de gerenciamento de registro, sistemas de gerenciamento de segurança que proveem interfaces de gerenciamento de segurança, sistemas que proveem interfaces para dispositivos de realidade aumentada e/ou de realidade virtual, dispositivos da Internet das Coisas (IoT), dispositivos de rede, e/ou outros dispositivos, qualquer outro tipo de interface que provê uma visualização de cliente, entre outros.
[0044] A figura 1 é um diagrama de blocos que ilustra um exemplo de um ambiente de rede 100. O ambiente de rede 100 inclui um sistema de servidor 101 e dispositivos clientes 110a, 110b, até 110n. O sistema de servidor 101 pode incluir um ou mais computadores servidores que podem processar interface de usuário e/ou outros dados para gerar dados da interface de usuário. O dispositivo cliente 110a, 110b, até 110n pode incluir qualquer número adequado de dispositivos clientes que são conectados (por exemplo, através de uma rede com fios ou sem fio) no sistema de servidor 101, tais como um ou mais dispositivos clientes. Detalhes adicionais de um sistema de servidor 201 e um dispositivo cliente 210 de exemplo são descritos a seguir em relação à figura 2.
[0045] Em alguns casos, o sistema de servidor 101 pode incluir um sistema de infraestrutura em nuvem (também referido como uma rede em nuvem) que provê serviços em nuvem para os um ou mais dispositivos clientes (por exemplo, dispositivos clientes 110a-110n). Em alguns casos, o sistema de servidor 101 pode incluir um sistema configurado para prover software como um serviço (SaaS) ou pode ficar em comunicação com um ou mais serviços SaaS providos por servidores. Em sistemas com base em SaaS, um provedor de terceiros pode hospedar aplicações e tornar as mesmas disponíveis para usuários através de uma rede. Por exemplo, da forma
23 / 81 mostrada na figura 1, o sistema de servidor 101 pode comunicar (por exemplo, receber eventos de interface 147 e enviar modelos de interface 149, da forma aqui descrita com mais detalhes) com um ou mais computadores servidores 140 através de uma rede 136.
[0046] O sistema de servidor 101 pode ter acesso aos dados da interface de usuário específicos da aplicação e/ou da página da Internet. A aplicação e/ou página da Internet pode acessar serviços (por exemplo, serviços em nuvem, serviços SaaS, entre outros) providos pelo sistema de servidor 101 através de uma rede de comunicações (por exemplo, a Internet, uma rede WiFi, uma rede celular, e/ou usando uma outra rede de comunicação adequada). Em certas modalidades, os serviços providos pelo sistema de servidor 101 podem incluir um hospedeiro de serviços que são disponibilizados aos usuários da infraestrutura do sistema de servidor sob demanda. Serviços providos pelo sistema de servidor 101 podem escalar dinamicamente para satisfazer as necessidades de seus usuários. A rede do sistema de servidor 101 pode compreender os um ou mais computadores servidores e/ou outros dispositivos e/ou sistemas. Em alguns casos, os um ou mais computadores servidores e/ou outros dispositivos e/ou sistemas que constituem a rede são diferentes de computadores nas dependências, computadores servidores, e/ou outros dispositivos e/ou sistemas que podem estar localizados em um local (por exemplo, uma residência de usuário, um local de trabalho, um local que hospeda um evento, ou outro local). Em alguns casos, um ou mais computadores servidores e/ou outros dispositivos e/ou sistemas que constituem a rede do sistema de servidor 101 podem ser providos em um sistema empresarial. Em alguns casos, uma única entidade (por exemplo, um provedor em nuvem, um provedor SaaS, ou similares) pode implementar o sistema de servidor 101, e os serviços podem ser providos por uma entidade diferente que tem contas (por exemplo, uma conta em nuvem, uma conta SaaS, ou similares) com múltiplos usuários que acessam os
24 / 81 serviços por meio de dispositivos clientes.
[0047] Os um ou mais computadores servidores do sistema de servidor 101 podem ficar em comunicação com os um ou mais dispositivos clientes 110a-110n usando uma rede 134, tais como uma rede sem fio, uma rede com fios, ou uma combinação de uma rede com fios e uma rede sem fio. Uma rede sem fio pode incluir qualquer interface sem fio ou combinação de interfaces sem fio (por exemplo, a Internet, celular, tais como 3G, Evolução de Longo Prazo (LTE), ou 5G, uma combinação das mesmas, e/ou outra rede sem fio adequada). Uma rede com fios pode incluir qualquer interface com fios (por exemplo, fibra, ethernet, ethernet powerline, ethernet sobre cabo coaxial, linha de sinal digital (DSL), ou outra rede com fios adequada). As redes com fios e/ou sem fio podem ser implementadas usando vários roteadores, pontos de acesso, pontes, portas de conexão, ou similares, que podem conectar o sistema de servidor 101 e os dispositivos clientes 110a- 110n na rede.
[0048] Os um ou mais dispositivos clientes 110a-110n podem incluir qualquer dispositivo que pode conectar em uma rede com fios e/ou sem fio, tais como uma caixa de topo de aparelho, uma televisão conectada na Internet, um dispositivo móvel (por exemplo, telefone celular, computador tipo laptop ou notebook, computador tipo tablet, ou outro dispositivo móvel), um computador de mesa, um dispositivo vestível (por exemplo, um relógio inteligente, um monitor de atividade física, um óculos de realidade virtual, um óculos de realidade aumentada, ou outro dispositivo vestível), uma câmera (por exemplo, uma câmera digital, uma câmera de IP, uma câmera de vídeo, um telefone com câmera, um telefone com vídeo, ou outro dispositivo de captura adequado), um reprodutor de mídia digital, um console de jogos em vídeo, um dispositivo de transmissão contínua de vídeo, outros dispositivos de mídia, e/ou qualquer outro tipo adequado de dispositivo. Em alguns casos, os um ou mais dispositivos clientes 110a-110n podem ser configurados para
25 / 81 obter ou capturar dados de mídia. Os dados de mídia podem incluir vídeo, áudio, imagens, qualquer combinação dos mesmos, e/ou qualquer outro tipo de mídia. Os um ou mais dispositivos clientes 110a-110n podem incluir geradores de interface local 112a, 112b, até 111n e dispositivos de exibição 130a, 130b, até 130n. Os dispositivos de exibição 130a, 130b, até 130n podem exibir interfaces de usuário com base em servidor 132a, 132b, até 132n.
[0049] Da forma notada anteriormente, uma interface de usuário com base em servidor pode ser gerada parcialmente pelo sistema de servidor 101 e parcialmente por um dispositivo cliente (por exemplo, um dos dispositivos clientes 110a-110n) que irá, em última análise, exibir a interface de usuário ou prover a interface de usuário para exibição por um outro dispositivo. Por exemplo, um gerador de interface 102 do sistema de servidor 101 pode receber eventos de interface (por exemplo, um ou mais dos eventos de interface 107a, 107b, até 107n) a partir de um gerador de interface local (por exemplo, um ou mais de gerador de interface local 112a, gerador de interface local 112b, até gerador de interface local 112n) do dispositivo cliente (por exemplo, qualquer um ou mais de dispositivo cliente 110a, 110b, através 110n). Por exemplo, os eventos de interface podem ser gerados pelo dispositivo cliente com base em entrada de usuário recebida através da interface de usuário (por exemplo, um evento específico da aplicação à qual a interface de usuário se aplica), com base em eventos no nível do sistema (por exemplo, um evento aplicando no dispositivo cliente como um todo, tal como um ajuste de volume), e/ou com base em eventos no nível da aplicação. O sistema de servidor pode identificar uma aplicação e/ou um sistema (por exemplo, para eventos no nível do sistema) nos quais um evento da interface de usuário recebido se aplica, e pode determinar elementos gráficos para exibição, onde e como exibir os diferentes elementos gráficos, como reagir aos eventos da interface de usuário (por exemplo, determinar quaisquer
26 / 81 mudanças na interface de usuário para esta aplicação com base no evento de interface recebido), entre outras ações da interface de usuário. Mediante recepção da informação da interface de usuário a partir do sistema de servidor 101 (por exemplo, modelo de interface 109a, modelo de interface 109b, até modelo de interface 109n, da forma descrita com mais detalhes a seguir), o dispositivo cliente pode gerar e renderizar a interface de usuário com base na informação da interface de usuário. A interface de usuário pode ser renderizada na aplicação na qual eventos da interface de usuário são identificados.
[0050] Em algumas implementações, um objeto de sistema ‘global’ pode ser mantido pelo sistema de servidor 101 para diferentes tipos de dispositivos. O objeto de sistema global para um dispositivo pode ser consultado por aplicações para determinar a informação para o dispositivo. O objeto de sistema ‘global’ pode prover informação sobre o estado estático e dinâmico de um dispositivo para a aplicação. Em alguns casos, partes da ou toda a informação de estado estático e/ou dinâmico pode ser submetida a cache pelo sistema de servidor. O sistema de servidor pode enviar uma solicitação pela informação ao dispositivo cliente, e o dispositivo cliente pode responder com a informação de estado em resposta à solicitação. Em alguns casos, partes da informação de estado podem ser enviadas proativamente para o sistema de servidor como eventos (por exemplo, um cartão inteligente foi removido, etc.). Para diferenças em dispositivos (por exemplo, tamanho da tela, tipo do dispositivo, etc.), uma aplicação pode gerar diferentes propriedades de interface de usuário (por exemplo, planos de localização entre outros atributos) com base na informação do dispositivo (por exemplo, tamanho da tela, tipo do dispositivo, etc.) que chega a partir do objeto de sistema ‘global’.
[0051] Em alguns exemplos, uma interface de usuário com base em servidor pode ser gerada parcialmente pelo sistema de servidor 101 e
27 / 81 parcialmente por um outro sistema de servidor (incluindo um ou mais computadores servidores). Em algumas implementações, o outro sistema de servidor pode incluir um sistema SaaS que hospeda uma ou mais aplicações que são disponibilizadas para um ou mais usuários.
O outro sistema de servidor pode prover uma interface de usuário com base em servidor associada com uma aplicação para um dispositivo cliente para exibição pelo dispositivo cliente ou por um outro dispositivo (por exemplo, um visor) em comunicação com o dispositivo cliente.
Por exemplo, da forma notada anteriormente e da forma mostrada na figura 1, o sistema de servidor 101 pode comunicar com um ou mais computadores servidores 140 através de uma rede 136. Por exemplo, o gerador de interface 102 do sistema de servidor 101 pode receber eventos de interface (por exemplo, um ou mais dos eventos de interface 147) a partir de um gerador de interface local (não mostrado) de um computador servidor a partir de um ou mais computadores servidores 140. Os eventos de interface são similares àqueles supradescritos em relação a dispositivos clientes 110a, 110b, até 110n.
O sistema de servidor pode identificar uma aplicação e/ou um sistema (por exemplo, para eventos no nível do sistema) no qual um evento da interface de usuário recebido se aplica, e pode determinar elementos gráficos para exibição, onde e como exibir os diferentes elementos gráficos, como reagir a eventos da interface de usuário (por exemplo, determinar quaisquer mudanças na interface de usuário para esta aplicação com base no evento de interface recebido), entre outras ações da interface de usuário.
O sistema de servidor 101 pode, então, prover informação da interface de usuário para um computador servidor (proveniente dos um ou mais computadores servidores 140), e o computador servidor pode gerar e renderizar a interface de usuário com base na informação da interface de usuário (por exemplo, um modelo de interface, da forma descrita com mais detalhes a seguir). Embora vários exemplos sejam aqui descritos que discutem as comunicações entre um sistema de servidor (por exemplo, sistemas de
28 / 81 servidor 101 e/ou 201) e um dispositivo cliente (por exemplo, dispositivos clientes 110a, 110b, 110c, e/ou 210), os mesmos conceitos se aplicam às comunicações entre múltiplos sistemas de servidor (por exemplo, entre o sistema de servidor 101 e um ou mais computadores servidores 140).
[0052] Em alguns exemplos, o sistema de servidor 101 pode gerar um modelo de interface que descreve como a interface de usuário deve parecer. Da forma mostrada na figura 1, o sistema de servidor 101 pode gerar e enviar um modelo de interface 109a para o dispositivo cliente 110a, um modelo de interface 109b para o dispositivo cliente 110b, através de um modelo de interface 109n para o dispositivo cliente 110n. Por exemplo, um modelo de interface pode ser gerado com base em eventos da interface de usuário recebidos, tais como um ou mais pressionamentos de tecla, movimentos de dedo, orientações e/ou posições do dispositivo, entre outros. Em alguns casos, um modelo de interface também pode ser com base em outros eventos, tais como outros eventos de cliente remoto que podem não ser com base em entrada de usuário explícita ou eventos recebidos a partir de um dispositivo ou sistema diferente de um dispositivo cliente. Exemplos de outros eventos podem ser com base em um vídeo que é iniciado ou terminado, controle de acesso ao vídeo ser negado, um telefone tocando, um correio eletrônico ou outra mensagem ser recebida, entre outros eventos. Em alguns casos, o sistema de servidor pode gerar um modelo de interface que define logicamente um ou mais estados de uma interface de usuário de uma maneira estrutural (por exemplo, estados para um ou mais objetos gráficos da interface de usuário). Em algumas implementações, o modelo de interface pode ser definido, integralmente ou parcialmente, por uma estrutura ou sintaxe, que pode definir ou representar a estrutura lógica de um documento (por exemplo, uma estrutura de uma interface de usuário de uma aplicação), e a maneira que o documento é acessado, gerado, renderizado e/ou manipulado. Por exemplo, um modelo de interface pode incluir um Modelo de Objeto do Documento
29 / 81 (DOM) que define a estrutura para apresentar componentes que compreendem uma interface de usuário.
[0053] Em alguns casos, o sistema de servidor pode melhorar a eficiência pela qual uma interface de usuário é gerada e renderizada em um dispositivo cliente. Em pelo menos uma modalidade, o sistema de servidor pode otimizar o modelo de interface antes de enviar o modelo de interface para o dispositivo cliente. Por exemplo, o sistema de servidor 101 pode gerar um modelo de interface intermediário (também aqui referido como um “modelo de interface delta”) indicando a diferença, ou delta, entre uma interface de usuário atual (por exemplo, informação de estado atual para um ou mais objetos gráficos da interface de usuário atual) determinada pelo sistema de servidor 101 e uma interface de usuário anterior (por exemplo, informação de estado anterior para um ou mais objetos gráficos de uma interface de usuário previamente gerada). O sistema de servidor pode enviar um modelo de interface delta para o dispositivo cliente indicando apenas a diferença, em vez de a íntegra do modelo de interface que descreve a íntegra da interface de usuário.
[0054] O sistema de servidor 101 pode enviar o modelo de interface, ou um modelo de interface delta com mudanças ou diferenças a partir de um modelo de interface prévio, para o dispositivo cliente. O dispositivo cliente pode renderizar a interface de usuário com base no modelo de interface recebido. Em alguns casos, um motor de renderização de elementos gráficos no gerador de interface local do dispositivo cliente pode ler um modelo de interface recebido para uma interface de usuário de um dado aplicação, e pode renderizar a interface definida pelo modelo de interface. Por exemplo, usando o modelo de interface, o motor de renderização de elementos gráficos pode converter uma árvore de objetos gráficos do modelo de interface para uma lista de chamadas de rotina gráfica. Quando um modelo de interface delta for implementado, o dispositivo cliente pode atualizar a interface de usuário com
30 / 81 base no delta indicando as propriedades e/ou funções da interface de usuário que mudaram. Em alguns casos, o modelo de interface pode indicar propriedades e/ou funções da interface de usuário que podem ser reusadas se a interface de usuário mudar em uma certa quantidade (por exemplo, uma mudança completa na interface de usuário).
[0055] A figura 2 é um diagrama que ilustra um exemplo de um sistema de servidor 201 em comunicação com um dispositivo cliente 210. O sistema de servidor 101 inclui vários componentes, incluindo um motor do servidor da interface de usuário 204, um motor da interface de usuário da aplicação 206, um armazenamento 203, e uma unidade central de processamento (CPU) 205. O motor da interface de usuário da aplicação 206 fica em comunicação com um motor do domínio de aplicação 208. O dispositivo cliente 210 também inclui vários componentes, incluindo um motor de cliente da interface de usuário 214, um motor da entrada de usuário 216, um motor de renderização de elementos gráficos 218, um motor de composição de mídia 220, um motor de criptografia 222, e um motor de decodificação 224. Em alguns casos, o motor de composição de mídia 220, o motor de criptografia 222, e o motor de decodificação 224 são componentes opcionais que podem ser usados apenas quando necessário. Por exemplo, algumas interfaces de usuário não incluem mídia, em cujo caso, o motor de composição de mídia 220, o motor de criptografia 222, e/ou o motor de decodificação 224 podem não ser usados. Em alguns casos, da forma mostrada na figura 2, a saída do motor de renderização de elementos gráficos 218 pode ser provida diretamente para o visor 215, tal como quando a interface de usuário implementada pelo motor de renderização de elementos gráficos 218 não incluir nenhuma mídia. Em alguns casos, um dispositivo cliente pode não incluir um motor de composição de mídia 220, um motor de criptografia 222, e/ou um motor de decodificação 224. Em algumas implementações, dependendo de qual tipo de dispositivo, o dispositivo cliente
31 / 81 210 também pode incluir um dispositivo de entrada de usuário 213 e/ou um visor 215 (a natureza opcional destes componentes é ilustrada pelo contorno pontilhado das caixas que representam estes componentes). Por exemplo, um dispositivo móvel e uma televisão conectada em rede podem incluir um visor, ao mesmo tempo em que uma caixa de topo de aparelho pode não incluir um visor.
[0056] Os componentes do sistema de servidor 201 e do dispositivo cliente 210 podem incluir e/ou podem ser implementados usando circuitos eletrônicos ou outro hardware eletrônico, que podem incluir um ou mais circuitos eletrônicos programáveis (por exemplo, microprocessadores, unidades de processamento de elementos gráficos (GPUs), processadores de sinal digital (DSPs), unidades centrais de processamento (CPUs), e/ou outros circuitos eletrônicos adequados), e/ou podem incluir e/ou podem ser implementados usando software de computador, software embarcado, ou qualquer combinação dos mesmos, para realizar as várias operações aqui descritas. Embora o sistema de servidor 201 e o dispositivo cliente 210 sejam mostrados incluindo certos componentes, os versados na técnica irão perceber que o sistema de servidor 201 e/ou o dispositivo cliente 210 podem incluir mais ou menos componentes do que aqueles mostrados na figura 2. Por exemplo, o sistema de servidor 201 e/ou o dispositivo cliente 210 também podem incluir, em algumas instâncias, um ou mais dispositivos de memória (por exemplo, RAM, ROM, cache, armazenamento temporário, e/ou similares), dispositivos de processamento, um ou mais barramentos, e/ou outros dispositivos que não são mostrados na figura 2.
[0057] O sistema de servidor 201 é similar ao, e pode realizar as mesmas ou similares funções do, sistema de servidor 101 da figura 1. Similarmente, o dispositivo cliente 210 é similar aos, e pode realizar as mesmas ou similares funções dos, dispositivos clientes 110a-110n da figura 1. Da forma supradescrita em relação à figura 1, a interface de usuário com base
32 / 81 em servidor pode ser gerada pelo sistema parcialmente pelo sistema de servidor 201 e parcialmente pelo dispositivo cliente 210. O gerador de interface 202 do sistema de servidor 201 pode realizar a lógica da interface de usuário. Por exemplo, o motor da interface de usuário da aplicação 206 do gerador de interface 202 pode determinar quais elementos gráficos exibir, quando e como exibir os diferentes elementos gráficos, a funcionalidade dos elementos gráficos, como eventos da interface de usuário são manipulados, entre outras ações da interface de usuário. Pode-se considerar que o dispositivo cliente 210 tem desempenho de processamento de elementos gráficos suficiente para exibir certo conteúdo, tais como para exibir vídeo e compor o vídeo com alguma Exibição Em Tela (OSD). Por exemplo, o dispositivo cliente 210 pode ter pelo menos uma unidade de processamento de elementos gráficos (GPU) ou outros software e/ou hardware de elementos gráficos que podem suportar aceleração de elementos gráficos (por exemplo, aceleração de elementos gráficos bidimensional ou tridimensional). Em alguns casos, a GPU ou outro software e/ou hardware de elementos gráficos podem ser parte do motor de renderização de elementos gráficos 218.
[0058] A figura 3 é um diagrama que ilustra um exemplo de um fluxo de mensagens entre o sistema de servidor 201 e o dispositivo cliente 210, e será discutido juntamente com a figura 2. O dispositivo cliente 210 pode gerar eventos de interface 207, que podem ser enviados (por exemplo, na etapa 302 mostrada na figura 3) para o gerador de interface 202 do sistema de servidor 201 para processamento. Os eventos de interface 207 podem ser associados com ou incluir comandos de navegação (por exemplo, mover uma caixa de seleção de um primeiro elemento gráfico para um segundo elemento gráfico, mover para um menu diferente, entre outros), comandos de seleção (por exemplo, selecionar um elemento gráfico correspondente a um movimento, exibir elemento gráfico de volume, entre outros), e/ou qualquer outro comando adequado. Por exemplo, em alguns casos, eventos de interface 207
33 / 81 podem incluir evento de baixo nível, tais como seleção de controle, interações de entrada, comandos por gesto, comandos por voz, orientação e/ou posição do dispositivo cliente 210 ou do dispositivo de entrada de usuário 213, e/ou outro evento de baixo nível que corresponde a um ou mais comandos de navegação, comandos de seleção, e/ou outros comandos.
[0059] Os eventos de interface 207 podem ser gerados em resposta à entrada recebida a partir de um dispositivo de entrada de usuário 213. O dispositivo de entrada de usuário 213 pode ser parte do dispositivo cliente 210, ou pode ser um dispositivo separado que fica em comunicação (com fios e/ou sem fio) com o dispositivo cliente 210. O dispositivo de entrada de usuário 213 pode incluir qualquer dispositivo de entrada adequado, tais como um controle remoto, uma tela sensível ao toque, um microfone, um miniteclado, um mouse, um teclado, um dispositivo que pode gerar entradas por gesto, um visor montado na cabeça, e/ou qualquer outro dispositivo de entrada. Um usuário pode navegar uma interface de usuário e pode selecionar itens apresentados pela interface de usuário usando o dispositivo de entrada de usuário 213. O motor da entrada de usuário 216 pode receber comandos de entrada a partir do dispositivo de entrada de usuário 213. O motor da entrada de usuário 216 pode incluir uma interface de entrada para receber comandos de entrada. Em alguns casos, diferentes motores da entrada de usuário 216 podem ser incluídos para diferentes tipos de dispositivos de entrada de usuário. Em resposta à recepção de comandos de entrada, o motor da entrada de usuário 216 pode gerar eventos de interface 207, e pode enviar os eventos de interface 207 para o motor de cliente da interface de usuário 214. Em alguns casos, o motor da entrada de usuário 216 pode enviar os comandos de entrada para o motor de cliente da interface de usuário 214, e o motor de cliente da interface de usuário 214 pode gerar os eventos de interface 207.
[0060] Em alguns casos, um evento de interface pode ser um evento no nível do sistema. Um evento no nível do sistema é um evento de interface
34 / 81 que se refere a um sistema, tais como o dispositivo cliente ou um outro sistema de servidor, em vez de uma aplicação em particular. Um evento de interface no nível do sistema pode ser roteado para uma aplicação no nível do sistema (por exemplo, uma aplicação de televisão inteligente) mesmo quando uma ou mais outras aplicações estiverem executando para este usuário. Um exemplo de um evento de interface no nível do sistema pode incluir uma entrada de ajuste de volume provida através de um botão de controle remoto. Um outro exemplo de um evento no nível do sistema pode incluir ajuste de cor que efetua a cor dos itens exibidos pelo dispositivo cliente. Outros exemplos ilustrativos de eventos no nível do sistema provenientes de um dispositivo incluem um telefone ser girado de uma orientação horizontal para uma orientação vertical e/ou de uma orientação vertical para uma orientação horizontal, um cartão inteligente ser removido, o dispositivo desativar (por exemplo, desenergização, ir dormir em um modo de baixa energia, ou similares), o dispositivo ter uma bateria baixa (por exemplo, a energia da bateria estar em menos do que um limite de energia da bateria, tais como menos do que 10%, 20%, ou outro nível de energia adequado), o dispositivo entrar em um certo modelo (por exemplo, um modo noturno em que a cor da interface muda, notificações ou alertas são desativados, ou similares), uma aplicação ser pausada pelo usuário, uma aplicação ser retomada pelo usuário, entre outros. Exemplos ilustrativos de eventos no nível do sistema gerados pelo servidor e enviados para o motor de cliente da interface de usuário 214 podem incluir uma conexão perdida com um dispositivo cliente (e o usuário), o servidor desativar, uma aplicação ser pausada, uma aplicação ser retomada, entre outros.
[0061] Em alguns casos, um evento de interface pode ser um evento no nível da aplicação. Um evento no nível da aplicação é um evento de interface que se refere à aplicação. Por exemplo, uma aplicação pode gerar um evento no nível da aplicação mesmo quando entrada de usuário não for
35 / 81 recebida. Em vários exemplos ilustrativos, um evento no nível da aplicação pode incluir uma mudança em uma versão de uma aplicação, uma mudança em um ajuste de exibição de uma aplicação, e/ou qualquer outro evento no nível da aplicação.
[0062] Um motor do servidor da interface de usuário 204 do sistema de servidor 201 pode receber os eventos de interface 207 a partir do motor de cliente da interface de usuário 214 do dispositivo cliente 210. O motor do servidor da interface de usuário 204 pode, então, despachar uma mensagem com um ou mais eventos de interface para uso pela aplicação adequada (por exemplo, uma das aplicações dentre aplicação 1, aplicação 2, até aplicação n mostradas na figura 3) para o usuário em particular do dispositivo cliente 210. Por exemplo, na etapa 304 mostrada na figura 3, o motor do servidor da interface de usuário 204 pode enviar os um ou mais eventos de interface para o motor da interface de usuário da aplicação 206. Em algumas implementações, um evento de interface pode ser incluído em cada mensagem ao sistema de servidor 201. Em algumas implementações, múltiplos eventos de interface podem ser incluídos em cada mensagem ao sistema de servidor
201. Em alguns casos, eventos de interface podem ser estrangulados ou filtrados para não sobrecarregar a quantidade de mensagens para o sistema de servidor 201. Por exemplo, em resposta a um usuário que move um dedo em uma tela sensível ao toque (por exemplo, de um smartphone), muitos eventos podem ser gerados (por exemplo, 50 eventos por segundo). Os eventos podem ser filtrados para um certo número de eventos de interface por período de tempo (por exemplo, um máximo de seis eventos de interface por segundo).
[0063] A sessão atual entre o dispositivo cliente 210 e a aplicação pode ser reconhecida usando qualquer técnica adequada, tais como usando soquetes, um identificador associado com um usuário e uma aplicação, entre outros. Em algumas implementações, o sistema de servidor 201 pode manter um soquete aberto para cada usuário conectado, tais como um primeiro
36 / 81 soquete para um primeiro usuário, um segundo soquete para um segundo usuário, um terceiro soquete para um terceiro usuário, e assim por diante. Em alguns casos, múltiplos computadores servidores podem ser usados e um equilibrador de carga pode gerenciar as comunicações de dispositivos clientes para os múltiplos computadores servidores. O equilibrador de carga pode manter uma “conexão aderente” entre um computador servidor em particular e um dispositivo cliente em particular. Por exemplo, a instância de servidor que hospeda uma sessão de usuário com uma aplicação pode ser identificada usando uma conexão aderente de IP, o que garante que solicitações provenientes de um único usuário sejam distribuídas para o servidor no qual as mesmas iniciaram. O sistema de servidor 101 pode, então, manter uma associação entre o soquete aberto e a aplicação e o usuário atuais.
[0064] Para cada usuário/conexão, o motor do servidor da interface de usuário 204 determina qual aplicação é a atual e qual processo está manipulando atualmente esta aplicação. Em alguns casos, uma aplicação pode registrar os eventos nos quais a aplicação está interessada. Em tais casos, se um usuário tiver mais do que uma aplicação executando para este usuário, o sistema de servidor 101 pode despachar um evento para a aplicação que registrou para este evento. Uma aplicação que é determinada para aplicar para um evento da interface de usuário pode ser referida como uma aplicação ativa. Em alguns casos, o sistema de servidor 201 pode ter um motor do ciclo de vida da aplicação (não mostrado), que pode filtrar e despachar eventos de interface para a aplicação ativa para os dados usuário e dispositivo cliente a partir dos quais um evento foi recebido. Da forma notada anteriormente, alguns eventos são eventos no nível do sistema (por exemplo, eventos que se referem a um sistema em vez de a própria aplicação), e podem não ser roteados (por padrão) para a aplicação ativa.
[0065] Da forma notada anteriormente, na etapa 304 mostrada na figura 3, o motor do servidor da interface de usuário 204 pode enviar os um
37 / 81 ou mais eventos de interface para o motor da interface de usuário da aplicação 206, que pode interpretar os um ou mais eventos.
Em algumas implementações, a lógica da interface de usuário do motor da interface de usuário da aplicação 206 pode solicitar assincronamente uma ou mais funções de domínio a partir do motor do domínio de aplicação 208 (na etapa 306 da figura 3). Em um exemplo ilustrativo, uma interface de usuário “pagar conta de telefone” de um provedor de serviço pode ser implementada pelo sistema de servidor 201, mas o motor da interface de usuário da aplicação 206 pode fazer uma solicitação para um motor do domínio de aplicação 208 (por exemplo, um ou mais servidores e/ou bases de dados) do provedor de serviço (por exemplo, usando um URL do provedor de serviço) para acessar credenciais do usuário, créditos do usuário, etc.
Em tais casos, o sistema de servidor 201 não precisa armazenar todos os dados (mas pode submeter a cache certos dados em alguns casos, que podem prover desempenho mais rápido) associados com provedores das aplicações.
Em um outro exemplo, uma aplicação do serviço de transmissão contínua de mídia pode ser implementada pelo sistema de servidor 201. A própria aplicação da interface de usuário do serviço de transmissão contínua pode não manter uma lista de filmes a assistir, mas pode solicitar a lista de filmes a partir de um ou mais servidores e/ou bases de dados do provedor do serviço de transmissão contínua.
Em alguns casos, a lógica do domínio de aplicação do motor do domínio de aplicação 208 pode ser separada fisicamente da lógica da interface de usuário do motor da interface de usuário da aplicação 206, tal como pela execução da lógica de domínio como um serviço ou microsserviço separado (por exemplo, em uma sub-rede diferente). Por exemplo, para um jogo de xadrez, a lógica de domínio pode manipular a inteligência artificial (A.I.) do jogo.
Em alguns casos, a lógica da interface de usuário da aplicação do motor da interface de usuário da aplicação 206 pode desviar a lógica de domínio (por exemplo, para aumentar a velocidade). Em alguns exemplos, a lógica da
38 / 81 interface de usuário pode gerenciar alguma forma de submissão a cache. Por exemplo, uma aplicação EPG não precisa solicitar ao microsserviço EPG (por exemplo, no motor do domínio de aplicação 208) para determinar o que está em um certo canal de televisão mil vezes por segundo. Em vez disto, o motor da interface de usuário da aplicação 206 pode realizar a submissão a cache para manter temporariamente tais dados localmente.
[0066] O motor da interface de usuário da aplicação 206 pode interagir com uma ou mais aplicações armazenadas no armazenamento do sistema de servidor ou em armazenamento externo. No exemplo mostrado na figura 3, as uma ou mais aplicações podem incluir aplicação 1, aplicação 2, até aplicação n. Em alguns casos, o motor da interface de usuário da aplicação 206 pode incluir um motor de tempo de execução da aplicação (por exemplo, uma sandbox) com lógica da interface de usuário da aplicação. Uma sandbox pode prover um ambiente seguro. Cada ambiente seguro pode ser específico de dispositivo, específico de aplicação, específico de sistema operacional (OS) ou similares. Em algumas implementações, cada aplicação pode ter um motor da interface de usuário da aplicação dedicado 206. Em alguns casos, pode ser mais seguro executar cada aplicação em seu próprio motor da interface de usuário da aplicação 206. Em algumas implementações, um único motor da interface de usuário da aplicação 206 pode interagir com múltiplas aplicações. Em alguns casos, executar aplicações diferentes em um mesmo motor da interface de usuário da aplicação 206 pode usar menos recursos. Em alguns casos, múltiplos motores da interface de usuário da aplicação podem estar executando concorrentemente. Em alguns casos, aplicações com grande uso podem usar múltiplos motores da interface de usuário da aplicação dedicados (por exemplo, quando houver um limite por motor do tempo de execução). Em alguns exemplos, as aplicações provenientes de um desenvolvedor ou provedor de aplicação comum podem compartilhar motores da interface de usuário da aplicação comuns. Em alguns casos, certa lógica da
39 / 81 interface de usuário da aplicação pode compartilhar processos. Por exemplo, uma aplicação EPG pode compartilhar o mesmo processo da interface de usuário da aplicação de uma aplicação de controle remoto de televisão, para compartilhar facilmente o cache das duas aplicações na RAM. Em um outro exemplo, aplicações de nicho com um pequeno número de usuários concorrentes podem compartilhar processo para poupar dinheiro.
[0067] Durante a operação, um motor da interface de usuário da aplicação (por exemplo, uma sandbox) pode ser lançado, monitorado e desativado à medida que aplicações são adicionadas, removidas, e/ou atualizadas, e à medida que um usuário inicia e/ou interrompe a aplicação. Um processo da interface de usuário da aplicação deve ser capaz de manipular um certo número de usuários (por exemplo, alguns milhares de usuários concorrentes). À medida que o processo da aplicação se aproxima do seu limite de usuários, o motor do servidor da interface de usuário 204 pode lançar um processo extra para esta aplicação para o próximo número de usuários (por exemplo, para os próximos poucos milhares de usuários). Por exemplo, um primeiro usuário usando uma aplicação pode ter um motor da interface de usuário da aplicação iniciado, e, então, quando muitos usuários executarem esta aplicação neste motor da interface de usuário da aplicação, um outro motor da interface de usuário da aplicação pode ser iniciado.
[0068] Com base em um ou mais eventos de interface recebidos (por exemplo, um ou mais pressionamentos de tecla, movimentos de dedo, orientações e/ou posições de dispositivo ou dispositivo de entrada, entre outros), o motor da interface de usuário da aplicação 206 pode determinar como os elementos gráficos (ou objetos gráficos) da interface de usuário associada com a aplicação devem ser exibidos. Por exemplo, o motor da interface de usuário da aplicação 206 pode determinar vários estados para a interface de usuário, tais como o plano de localização de objetos gráficos da interface de usuário, a cor dos objetos gráficos, fonte, informação de imagem,
40 / 81 informação de vídeo, entre outras funções. Mudanças podem incluir mudanças gráficas, mudanças nos controles e/ou funções (por exemplo, adicionar ou remover controles e/ou funções), mudanças na íntegra da interface de usuário, entre outros. A determinação se um evento de interface em particular (por exemplo, uma entrada de toque, pressionamento de tecla, ou similares) é um comando de navegação, um comando de seleção, ou outro comando adequado pode ser feita no nível da aplicação pelo motor da interface de usuário da aplicação 206. Em alguns casos, a determinação dos vários estados da interface de usuário pode ser com base em outros eventos de cliente remoto que podem ou não ser com base em entrada de usuário, tais como vídeo ser iniciado ou terminado, controle de acesso ao vídeo ser negado, um telefone tocando, entre outros eventos. Por exemplo, um elemento gráfico incluindo um vídeo pode ser removido em resposta a um vídeo terminar. Os elementos gráficos disponíveis e outro conteúdo da interface de usuário para cada aplicação podem ser obtidos a partir do armazenamento que é acessível ao sistema de servidor 201 (por exemplo, armazenamento 203 no sistema de servidor 201 ou armazenamento em um ou mais outros servidores locais e/ou remotos). Usando os elementos gráficos disponíveis e outro conteúdo da interface de usuário, o motor da interface de usuário da aplicação 206 pode determinar o que deve ser exibido, tais como caixas, linhas, texto, imagens, informação de endereço (por exemplo, localizador de recurso uniforme (URL) ou similares), tal como para ativos gráficos, entre outros conteúdos gráficos com base nos um ou mais eventos de interface recebidos.
[0069] O motor da interface de usuário da aplicação 206 pode determinar quais objetos (ou elemento) gráficos da interface de usuário exibir, remover e/ou mudar com base em um evento de interface em particular. Por exemplo, uma aplicação pode registrar para certos eventos (por exemplo, pressionamentos de tecla, eventos de rolagem, aproximação/afastamento, reprodução de vídeo, entre outros) de forma que uma certa função seja
41 / 81 chamada quando um certo evento de interface ocorrer. Em resposta a um evento recebido e uma correspondente função ser chamada, o motor da interface de usuário da aplicação 206 pode mudar o estado da aplicação e pode gerar um novo modelo de interface que define as propriedades da interface de usuário de acordo com a mudança de estado. Qualquer estrutura adequada pode ser usada para implementar mudanças de aplicação com base em eventos de interface recebidos. Um exemplo ilustrativo de uma estrutura implementada pelo sistema de servidor 201 é mostrado na Tabela 1 a seguir. Aplicação de UI Sistema de UI Dispositivo cliente ou Sistema de servidor Tecla pressionada << evento Encontrar manipulador certo, contexto de aplicação/usuário certos << Evento “Manipulador de evento” >> Ação Despachar ação << Estado Prévio, Ação “Redutor” atualizar estado >> Retornar novo Estado se estado mudado << Estado “Renderizador” Converter estado para
DOM >> novo DOM Computar delta novo Dom, frente a DOM prévio >> DOM delta DOM = DOM +delta Atualização de elementos gráficos
[0070] Usando a estrutura na Tabela 1, com base em um evento de interface, a aplicação de UI pode gerar um DOM ou atualizar um DOM
42 / 81 quando a mesma receber o evento de interface, e o DOM ou o DOM delta podem ser enviados para um dispositivo cliente ou sistema de servidor. Os nomes “manipulador de evento”, “redutor”, e “renderizador” usados na Tabela 1 são padrões em estruturas de UI (por exemplo, uma estrutura de Reação). Em um exemplo ilustrativo, a estrutura mostrada na Tabela 1 a seguir pode ser para uma aplicação de UI em Nuvem. O dispositivo cliente pode incluir dispositivo cliente 210, o sistema de servidor na coluna mais à direita da Tabela 1 pode incluir os um ou mais computadores servidores 140, o sistema de UI corresponde ao motor do servidor da interface de usuário 204, e a aplicação de UI corresponde ao motor da interface de usuário da aplicação
206.
[0071] A figura 8 é um fluxograma que ilustra um exemplo de um processo 800 para gerar um modelo de interface delta. O processo 800 será descrito juntamente com a estrutura mostrada na Tabela 1. No bloco 802, o processo 800 inclui receber um evento de interface. Por exemplo, em relação à estrutura na Tabela 1, o dispositivo cliente ou o sistema de servidor pode receber uma entrada correspondente a um evento de interface. O dispositivo cliente ou o sistema de servidor pode enviar o evento de interface para o sistema de UI. No bloco 804, o processo 800 pode determinar uma aplicação associada com o evento de interface. Por exemplo, em relação à tabela 1, o sistema de UI pode encontrar o manipulador de evento correto e o contexto de aplicação/usuário correto (incluindo informação associada com o usuário). Um manipulador de evento diferente pode ser mantido por uma aplicação para cada evento de interface para o qual esta aplicação é registrada. Por exemplo, um primeiro manipulador de evento pode ser mantido para um primeiro evento de interface (por exemplo, pressionamento de tecla, um movimento de mouse, um evento de toque em uma tela sensível ao toque, entre outros), um segundo manipulador de evento pode ser mantido para um segundo evento de interface, um terceiro manipulador de evento pode ser
43 / 81 mantido para um terceiro evento de interface, e assim por diante. Um manipulador de evento pode ser uma função de uma aplicação, em que a função é chamada quando um evento de interface correspondente a este manipulador de evento ocorrer (por exemplo, uma função do manipulador de evento relacionado ao pressionamento de tecla é chamada quando um evento de pressionamento de tecla for recebido pelo sistema de servidor). O manipulador de evento pode gerar uma ação com base no evento. O sistema de UI pode despachar ou implementar a ação. O despacho da ação pode fazer com que a interface de usuário seja atualizada com base na ação, o que pode causar uma mudança de estado na interface de usuário. Por exemplo, o sistema de UI pode enviar o estado prévio e a ação para a aplicação de UI, e a aplicação de UI pode implementar um redutor para atualizar o estado. O redutor retorna o novo estado (com base na ação) para o sistema de UI.
[0072] No bloco 806, o processo 800 pode determinar informação de estado da interface de usuário com base no evento de interface. No bloco 808, o processo 800 pode determinar se o estado da interface de usuário mudou. Se o estado da interface de usuário for determinado mudado no bloco 808, o processo gera um modelo de interface delta no bloco 810. Se o estado da interface de usuário for determinado não mudado no bloco 808, o processo 800 pode terminar no bloco 81. Em relação à tabela 1, um renderizador é chamado quando o estado da interface de usuário for mudado. Por exemplo, se o estado for mudado, se comparado com o estado prévio da interface de usuário, o estado é enviado para o renderizador da aplicação de UI para converter o estado para um novo modelo de interface (por exemplo, um Modelo de Objeto do Documento (DOM), da forma descrita a seguir, ou outro modelo de interface). O novo DOM é, então, enviado para o sistema de UI. Em implementações nas quais um DOM delta é usado, o sistema de UI computa um DOM delta com base na diferença entre uma interface de usuário anterior e a interface de usuário atual. O sistema de UI pode enviar o DOM
44 / 81 delta para o dispositivo cliente ou sistema de servidor. Em casos nos quais um DOM delta não é usado, o sistema de UI pode enviar o DOM completo para o dispositivo cliente ou sistema de servidor. O dispositivo cliente ou sistema de servidor pode atualizar a interface de usuário (por exemplo, realizar uma atualização de elementos gráficos para a interface de usuário) com base no DOM ou no DOM delta.
[0073] Em alguns casos, a lógica da interface de usuário do motor da interface de usuário da aplicação 206 pode solicitar mudanças da interface de usuário em qualquer momento, não apenas quando houver uma recepção de um evento de cliente. Em alguns casos, quando um único evento for recebido (por exemplo, um pressionamento de tecla), uma aplicação pode solicitar mais do que uma mudança de interface de usuário (por exemplo, duas ou mais mudanças). Por exemplo, uma primeira mudança gráfica pode ser implementada pelo motor do domínio de aplicação 208 quando o evento for recebido (permitindo rápida realimentação para o visualizador), e uma segunda mudança gráfica pode ser implementada à medida que a lógica de domínio do motor do domínio de aplicação 208 responde uma solicitação pela informação a partir do motor da interface de usuário da aplicação 206. Em alguns casos, o motor da interface de usuário da aplicação 206 pode atualizar a interface de usuário de tempos em tempos, tal como para impulsionar nova informação, depois de um tempo esgotado, e/ou em resposta a outras ocorrências.
[0074] O motor da interface de usuário da aplicação 206 pode gerar um modelo de interface que descreve informação de estado para a interface de usuário. Por exemplo, quando o motor da interface de usuário da aplicação 206 estiver pronto para responder uma solicitação proveniente do motor do servidor da interface de usuário 204, o motor da interface de usuário da aplicação 206 pode gerar um modelo de interface novo ou revisado que descreve o plano de localização e outras características de objetos da interface
45 / 81 de usuário. O motor da interface de usuário da aplicação 206 pode, então, passar o modelo de interface de volta para o motor do servidor da interface de usuário 204 (na etapa 308 da figura 3).
[0075] Em algumas implementações, da forma notada anteriormente, o modelo de interface pode incluir um Modelo de Objeto do Documento (DOM). Um DOM pode definir ou representar a estrutura lógica de um documento (por exemplo, uma estrutura de uma interface de usuário de uma aplicação), e a maneira que o documento é acessado e manipulado. Por exemplo, um DOM pode incluir uma árvore de objetos, com cada objeto tendo propriedades (por exemplo, cor, posição, tamanho, entre outras propriedades). Em alguns casos, um DOM pode definir ou representar a estrutura lógica e a informação de acessibilidade e de manipulação de um documento de Linguagem de Marcação em Hipertexto (HTML) (por exemplo, para uma página da Internet ou aplicação da Internet), um documento de Linguagem de Marcação Extensível (XML), um documento de Linguagem de Marcação em Hipertexto Extensível (XHTML), e/ou outro documento. Um DOM é uma interface de programação de aplicação de plataforma cruzada e independente de linguagem que trata um documento como uma estrutura de árvore, com cada nó incluindo um objeto que representa uma parte do documento. Um ou mais objetos podem representar um elemento de uma interface de usuário, o elemento do qual pode ser interativo causando a geração de eventos de interface. Por exemplo, um DOM gerado para definir uma interface de usuário pode incluir uma árvore de objetos gráficos (por exemplo, um ou mais de caixas, linhas, imagens, ícones, texto, vídeos, entre outros objetos gráficos) com atributos (por exemplo, um ou mais de posições, cores, URLs, entre outros). Usando um DOM, o motor da interface de usuário da aplicação 206 pode navegar a estrutura de um documento, e pode adicionar, modifica, e/ou deletar elementos e conteúdo do documento (por exemplo, com base em eventos da interface de usuário
46 / 81 recebidos e/ou outros eventos, tais como eventos de cliente remoto). Por exemplo, usando o DOM, muitos itens do documento podem ser acessados, mudados, deletados, e/ou adicionados com base em eventos da interface de usuário recebidos. Em algumas implementações, um modelo de interface (por exemplo, um DOM) pode ser definido com base no dispositivo, tipo do sistema operacional (OS), versões de aplicações, e/ou algum outro recurso variável de um cliente. Por exemplo, pode ser gerado um modelo de interface que tem diferenças nas interfaces de usuário entre tipos de dispositivo, tipos de OS, versões de aplicações, etc. Em tais implementações, um único modelo de interface ou um modelo de interface delta (incluindo mudanças de UI) podem ser definidos para múltiplos clientes por dispositivo, aplicação, OS, etc. Em alguns casos, diferentes modelos de interface podem ser gerados com base nas variáveis características de dispositivo ou um único modelo pode ser usado para todas as diferentes características.
[0076] Em alguns casos, o sistema de servidor 201 pode otimizar automaticamente o modelo de interface (por exemplo, o DOM) antes de enviar o modelo de interface para o dispositivo cliente 210. Por exemplo, o motor do servidor da interface de usuário 204 pode comprimir o modelo de interface (por exemplo, o DOM) o tanto quanto possível antes de enviar o modelo de interface para o dispositivo cliente 210. A compressão de um modelo de interface pode incluir gerar um modelo de interface delta pela determinação de uma diferença entre um modelo de interface atual (definindo uma interface de usuário atual) determinado pelo motor da interface de usuário da aplicação 206 e um modelo da interface de usuário anterior (definindo uma interface de usuário anterior). Em alguns casos, o modelo de interface pode ser adicionalmente comprimido pela aplicação de um ou mais algoritmos de compressão padrões (por exemplo, realizando compressão zip para colocar o DOM em um formato de arquivo .zip).
[0077] Da forma notada anteriormente, em alguns casos, o motor da
47 / 81 interface de usuário da aplicação 206 pode gerar um novo modelo de interface (por exemplo, um DOM), e o motor do servidor da interface de usuário 204 pode determinar as diferenças (o “delta”) entre o novo modelo de interface e um modelo de interface prévio com base em eventos de interface recebidos. Fazer o motor do servidor da interface de usuário 204 determinar o modelo de interface delta pode, no geral, ser mais simples para a aplicação (por exemplo, para um dado estado, a aplicação tem uma dada aparência). Em alguns casos, o motor da interface de usuário da aplicação 206 pode gerar o modelo de interface delta. Por exemplo, algumas aplicações podem preferir fazer o motor da interface de usuário da aplicação 206 gerenciar o delta (por exemplo, quando a aplicação irá indicar o que é novo e o que é diferente).
[0078] Em alguns casos, o motor do servidor da interface de usuário 204 pode enviar um modelo de interface 209 (por exemplo, DOM) para o motor de cliente da interface de usuário 214 do dispositivo cliente 210 (na etapa 310 da figura 3). Em alguns casos, o motor do servidor da interface de usuário 204 pode enviar um modelo de interface delta (por exemplo, um DOM delta) para o motor de cliente da interface de usuário 214 indicando apenas as mudanças ou diferenças de uma interface de usuário atual a partir de uma interface de usuário previamente gerada (por exemplo, a última interface de usuário gerada antes da interface de usuário atual), em vez da íntegra do modelo de interface que descreve a íntegra da interface de usuário. Em algumas implementações, o modelo de interface (por exemplo, DOM) ou modelo de interface delta (por exemplo, DOM delta) pode ser enviado como um objeto em um certo formato, tais como um objeto de Notação de Objeto JavaScript (JSON) em um formato com base em texto para representar dados estruturados, ou outro objeto adequado. Em alguns casos, usando um DOM como um exemplo de um modelo de interface, um DOM delta pode incluir a estrutura da íntegra do DOM, mas apenas folhas (ou nós) do DOM que incluem elementos gráficos mudados podem incluir dados. As folhas do
48 / 81 DOM que não incluem mudanças podem ser deixadas vazias (sem dados) no DOM delta. Da forma descrita adicionalmente a seguir, o código de cliente do dispositivo cliente (do motor de cliente da interface de usuário 214) pode otimizar a parte da tela a redesenhar com base no DOM delta recebido. Em alguns exemplos, um modelo de interface completo (por exemplo, um DOM completo) pode ser sempre enviado quando mudanças no modelo de interface forem geradas. Em alguns exemplos, um modelo de interface completo pode ser enviado apenas quando um usuário navegar de uma aplicação para uma outra aplicação e/ou em outras situações (por exemplo, quando uma aplicação for lançada pela primeira vez, entre outros). Em alguns exemplos, um modelo de interface delta pode ser enviado quando a aplicação mudar seu modelo de interface (por exemplo, com base em processamento pelo motor da interface de usuário da aplicação 206).
[0079] Em alguns exemplos, um modelo de interface (por exemplo, um DOM) ou um modelo de interface delta podem ser comprimidos pelo reuso de certas propriedades que são compartilhadas através dos elementos gráficos de uma interface de usuário (por exemplo, itens de menu). Por exemplo, para simplificar a renderização de uma interface de usuário por um dispositivo cliente, o sistema de servidor 201 pode usar ‘estilos’ constantes que podem ser reusáveis sem ‘regras’. Por exemplo, diferentes itens de menu podem compartilhar múltiplas propriedades ou certas propriedades podem diferir em uma pequena quantidade (por exemplo, a legenda e a posição da coordenada x para itens de menu são diferentes, ao mesmo tempo em que cor, fonte, tamanho, altura, largura, etc. são iguais, ou itens de menu podem apenas ficar diferentes quando destacados, etc.). Em tais exemplos, o sistema de servidor 201 pode ser desenhado de forma que o mesmo não use folhas de estilo em cascata (CSS), o que, em alguns casos, pode ser muito exigente sobre os recursos de computação (por exemplo, CPU). CSS é um mecanismo para adicionar estilo (por exemplo, fontes, cores, espaçamento, etc.) nas interfaces de usuário ou outra mídia eletrônica (por exemplo, documentos da
49 / 81 Internet, etc.). Os estilos constantes implementados pelo sistema de servidor 201 podem ser realizados usando uma sintaxe de classe “HTML”.
[0080] Usando um DOM como um exemplo de um modelo de interface, um DOM completo pode ser referido como um Intra-DOM (I-DOM ou iframe), e um DOM delta pode ser referido como um DOM Preditivo (P- DOM ou pframe). Um exemplo de um I-DOM (intra) correspondente a um menu principal PoC (descomprimido) é como segue: [“iframe”, { “styles”:{“backgroundColor”:”#e4e4e4”}, “photo1”:{“styles”:{“top”:”1%”,”left”:”20%”,”width”:”60%”, ”height”:”10%”,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”white”,”borderStyle”:”solid”,”boxShadow”:”grey 10px 5px 5px”,”borderColor”:”gray”},”label0”:{“styles”:{“left” :”10%”,”top”:”20%”,”text”:”My 1st Application”}}}, “photo2”:{“styles”:{“top”:”12%”,”left”:”20%”,”width”:”60%”,”height”:”10 %”,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label1”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Photo carousel 1”}}}, “photo3”:{“styles”:{“top”:”23%”,”left”:”20%”,”width”:”60%”,”height”:”10 %”,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label2”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Photo animated”}}}, “pong”:{“styles”:{“top”:”34%”,”left”:”20%”,”width”:”60%”,”height”:”10%” ,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label3”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Pong”}} }, “connect4”:{“styles”:{“top”:”45%”,”left”:”20%”,”width”:”60%”,”height”:”1 0%”,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label4”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Connect
50 / 81 Four”}}}, “tele”:{“styles”:{“top”:”56%”,”left”:”20%”,”width”:”60%”,”height”:”10%”, ”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label5”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Program Guide”}}}, “radio”:{“styles”:{“top”:”67%”,”left”:”20%”,”width”:”60%”,”height”:”10%” ,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label6”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Radios” }}}, “clock2”:{“styles”:{“top”:”78%”,”left”:”20%”,”width”:”60%”,”height”:”10 %”,”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label7”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Clock2” }}}, “abra”:{“styles”:{“top”:”89%”,”left”:”20%”,”width”:”60%”,”height”:”10%”, ”transition”:”all
1.00s”,”borderWidth”:”1px”,”onclick”:”yes”,”onmouseenter”:”yes”,”backgro undColor”:”#e4e4e4”,”borderStyle”:”hidden”,”boxShadow”:”none”,”borderC olor”:”gray”},”label8”:{“styles”:{“left”:”10%”,”top”:”20%”,”text”:”Zapper” }}}} ]
[0081] Um exemplo de um P-DOM (inter) que é gerado à medida que o usuário a desce um item (por exemplo, um evento de entrada correspondente a uma tecla de seta para baixo) é como segue: [“pframe”, { “photo1”:{“styles”:{“backgroundColor”:”#e4e4e4”,”borderStyle”:”hidden”,” boxShadow”:”none”}}, “photo2”:{“styles”:{“backgroundColor”:”white”,”borderStyle”:”solid”,”boxS hadow”:”grey 10px 5px 5px”}}} ]
[0082] Da forma mostrada pelo P-DOM (“pframe”) exposto, apenas
51 / 81 dois itens de menu são listados (isto é, os itens de menu que mudam), com apenas as propriedades mudando. Neste caso, não há objetos adicionados ou deletados, apenas mudanças de propriedade. As mudanças de propriedade no P-DOM de exemplo exposto incluem as cores de fundo, os estilos de borda, e a cor da sombra da caixa de “photo1” e o “photo2”. Se um objeto foi adicionado em um modelo da interface de usuário atual, o objeto somente seria adicionado no DOM delta. Se um objeto proveniente de um modelo da interface de usuário prévio foi deletado em um modelo da interface de usuário atual, o objeto pode ser rotulado como ‘deletado’ no DOM delta para o modelo da interface de usuário atual.
[0083] Um outro exemplo de um P-DOM correspondente a uma lista de filmes rolando para cima está a seguir. À medida que um pressionamento de tecla <SETA-PARA-BAIXO> é processado, o filme mais no topo na lista desaparece, e um outro filme na base é adicionado na lista. Para o objeto “movie0-12785”, o mesmo é rotulado como “deleted” para ser removido da tela do cliente. Adicionalmente, o “boxShadow” também é deletado de “movie0-40418”. Uma outra opção seria ter o “boxShadow” definido em “none”. No exemplo exposto, os filmes “movie0-53986” e “movie0-30877” se movem apenas verticalmente, e apenas a propriedade “top” destes filmes é renovada. As propriedades dos dois filmes “movie0-40418” e “movie0- 37828” mudam mais drasticamente à medida que as mesmas obtêm ou perdem foco, portanto, recebem mais mudanças. { “moviesContainer”: { “movie0-12785”: “deleted”, “movie0-40418”: { “styles”: { “left”: “2%”,
52 / 81
“width”: “96%”, “borderStyle”: “none”,
“borderWidth”: “1px”, “zIndex”: “0”,
“backgroundColor”: “rgb(135, 197, 214)”,
“fontSize”: “6vh”, “top”: “-20%”, “boxShadow”: “deleted”
}
}, “movie0-37828”: {
“styles”: { “left”: “0%”,
“width”: “99vw”,
“borderStyle”: “solid”, “borderWidth”: “0.25vw”, “zIndex”: “1”,
“backgroundColor”: “#21a8ce”,
“fontSize”: “8vh”,
“top”: “0%”,
“boxShadow”: “1vh 1vh rgba(0, 0, 0, 0.5)”
}
},
“movie0-53986”: {
“styles”: {
53 / 81 “top”: “20%” } }, “movie0-30877”: { “styles”: { “top”: “40%” } }, Etc.
[0084] Em algumas implementações, o sistema de servidor 201 pode gerenciar dois ou mais modelos de interface (por exemplo, dois ou mais DOMs). Por exemplo, o sistema de servidor 201 pode gerenciar um sistema DOM para uma aplicação de sistema global e uma aplicação DOM para uma aplicação. Em um exemplo como este, a aplicação de sistema global pode controlar o dispositivo cliente (por exemplo, uma aplicação de operador no caso de PayTV), ao mesmo tempo em que o usuário pode interagir principalmente com a aplicação. Em um outro exemplo, uma aplicação (por exemplo, uma aplicação de gerenciamento de mensagens, correio eletrônico ou de alerta) pode ser exibida no topo de uma aplicação atual (por exemplo, um EPG, uma aplicação de jogo, ou outra aplicação). Por exemplo, a aplicação pode ser exibida como uma tela instantânea sobre a aplicação atual. A aplicação instantânea pode prover uma opção para saltar para uma aplicação relacionada a tela cheia (por exemplo, a aplicação instantânea pode indicar que um correio eletrônico foi recebido, juntamente com uma opção para saltar diretamente para a aplicação de correio eletrônico completa). Em um exemplo como este, o sistema de servidor 201 pode gerenciar múltiplos modelos de interface para múltiplas aplicações em paralelo mesmo quando apenas uma aplicação for visível para o usuário. O gerenciamento de múltiplos modelos de interface permite rápida comutação de uma interface de
54 / 81 usuário da aplicação para uma outra interface de usuário da aplicação.
[0085] Da forma notada anteriormente, o motor do servidor da interface de usuário 204 do sistema de servidor 201pode enviar um modelo de interface 209 (por exemplo, DOM), ou uma parte do mesmo com mudanças ou diferenças a partir de um modelo de interface prévio (por exemplo, um modelo de interface delta, tal como um DOM delta), para o motor de cliente da interface de usuário 214 do gerador de interface local 212 do dispositivo cliente 210 (na etapa 310 da figura 3). O motor de renderização de elementos gráficos do dispositivo cliente pode renderizar a interface de usuário com base no modelo de interface recebido ou no modelo de interface delta. O uso de um modelo do objeto (por exemplo, um DOM) pode habilitar o dispositivo cliente a evitar processamento para determinar informação de estado para a interface de usuário (por exemplo, um plano de localização ou mudanças em um plano de localização, entre outras características da interface de usuário), tal como realização da computação do plano de localização. Por exemplo, o motor da interface de usuário da aplicação 206 pode pré-computar as propriedades de elemento gráfico (por exemplo, as posições, tamanhos, cores e/ou outras propriedades do elemento gráfico), que são representadas pelo modelo de interface ou modelo de interface delta (por exemplo, DOM ou DOM delta), de forma que não haja necessidade que o dispositivo cliente 210 realize uma computação do plano de localização e/ou outro processamento exigido para determinar as propriedades de interface de usuário. Em vez disto, o dispositivo cliente pode implementar rotinas (por exemplo, rotinas gráficas) para gerar a interface de usuário com base no DOM ou nas mudanças no DOM. O dispositivo cliente 210 pode ler um modelo do objeto ou modelo de interface delta recebidos para uma dada interface de usuário, e pode renderizar a interface de usuário definida pelo modelo do objeto ou pelo modelo de interface delta. Por exemplo, usando um DOM ou DOM delta, o motor de renderização de elementos gráficos 218 do dispositivo cliente 210
55 / 81 pode converter uma árvore de objetos gráficos do DOM ou DOM delta em uma lista de chamadas de rotina gráfica. Com base nas propriedades da interface (por exemplo, informação de estado) descritas no modelo do objeto ou no modelo de interface delta, o motor de renderização de elementos gráficos 218 pode gerar comandos de desenho. Em alguns casos, quando um DOM delta for recebido pelo dispositivo cliente 210, o motor de renderização de elementos gráficos 218 pode otimizar a parte da tela para redesenhar com base no DOM delta recebido. Receber o DOM delta pode simplificar a decisão pelo dispositivo cliente 210 de qual parte da tela deve ser redesenhada. Em alguns casos, o motor de renderização gráfica 218 sabe nada dos eventos de interface, e pode realizar uma automação gráfica com base no DOM ou no DOM delta. O motor de renderização gráfica 218 pode realizar animação em alguns exemplos. Por exemplo, as propriedades enviadas no DOM podem ser usadas para descrever a animação. Em um exemplo ilustrativo, o motor de renderização gráfica 218 pode realizar animações apenas de transição, em que uma aplicação pode prover novas propriedades para um objeto DOM associado com um tempo que levaria para fazer a transição. Uma animação apenas de transição (ou animação de ‘transição’) é um dos tipos de animação com CSS3/HTML. Por exemplo, em vez de apenas mudar instantaneamente uma propriedade (por exemplo, uma posição de topo-à esquerda de um objeto), pode ser expressado na aplicação que a mudança deve ocorrer de acordo com um parâmetro temporal (por exemplo, a mudança deve ocorrer em ‘n’ segundos). O parâmetro temporal pode ser expressado pelo ajuste de uma propriedade ‘transition=time” no objeto.
[0086] Em alguns casos, um modelo do objeto ou modelo do objeto delta (por exemplo DOM ou DOM delta) pode ser disposto em camadas pelo sistema de servidor 201 ou pode ser enviado para o dispositivo cliente 210 sem ser disposto em camadas pelo sistema de servidor 201. Disposição em camadas é a ação de descobrir onde exibir objetos em uma interface de
56 / 81 usuário. Muitas decisões de posicionamento precisam ser feitas durante a realização da disposição em camadas. Por exemplo, objetos de interface (por exemplo, objetos ou elementos gráficos) têm propriedades ou atributos que indicam características, tal como um primeiro objeto que fica na direita de um segundo objeto, um terceiro objeto que fica abaixo de um quarto objeto, entre outros. A camada pode levar a muitas computações durante a mudança de propriedades, as posições de objetos dependem uns dos outros. Em um exemplo, a posição ‘y’ de um primeiro objeto pode depender do tamanho da fonte de um segundo objeto que fica posicionado próximo do primeiro objeto. Em alguns exemplos, as propriedades do objeto que têm efeitos colaterais nos objetos vizinhos podem ser proibidas, o que pode ser suficiente para interfaces de usuário desenhadas para aplicações em tela cheia (por exemplo, interfaces de usuário para telefones, tablets, televisões, dispositivos de mídia, tais como caixas de topo de aparelho ou outros dispositivos de console, etc.). Em alguns exemplos, a disposição em camadas pode ser realizada pelo sistema de servidor 201 para gerar um modelo de interface disposto em camadas (por exemplo, um DOM disposto em camadas), e o modelo de interface disposto em camadas pode ser enviado para o dispositivo cliente
210. Em alguns casos, um plug-in de disposição em camadas pode ser implementado entre a aplicação da interface de usuário e o sistema de servidor da interface de usuário que cuidaria da disposição em camadas dos objetos sem mudar o resto do sistema.
[0087] O dispositivo cliente 210 também pode receber conteúdo de mídia (por exemplo, vídeo, áudio, elementos gráficos, imagens, uma combinação dos mesmos, ou outra mídia) (também aqui referida como “mídia”) a partir de uma ou mais fontes de mídia 217. Em virtude de o dispositivo cliente 210 realizar a renderização da UI que suporta a apresentação do conteúdo de mídia, o sistema de servidor 201 pode não precisar acessar as uma ou mais fontes de mídia 217, o que pode reduzir o
57 / 81 encargo de processamento no sistema de servidor 201. O gerador de interface local 212 do dispositivo cliente 210 pode integrar o conteúdo de mídia das uma ou mais fontes de mídia 217 nos elementos gráficos renderizados. Por exemplo, o motor de criptografia 222 pode descriptografar mídia (e/ou qualquer outra mídia) quando a mídia recebida for criptografada. Por exemplo, o motor de decodificação 224 pode decodificar vídeo usando qualquer técnica de codificação adequada com base no formato no qual o vídeo é recebido (por exemplo, H.265/codificação de vídeo de alta eficiência (HEVC), H.264/codificação de vídeo avançada (AVC), MPEG, ou outro formato de vídeo). O motor de composição de mídia 220 pode combinar a interface de usuário renderizada do motor de renderização de elementos gráficos 218 e a mídia descriptografada e/ou decodificada do motor de decodificação 224. Os dados combinados podem, então, ser enviados para o visor 215. Da forma notada previamente, o visor 215 pode ser parte do dispositivo cliente 210 em algumas implementações. Por exemplo, o dispositivo cliente 210 pode ser um dispositivo móvel, e o visor 215 pode ser a tela de exibição do dispositivo móvel. Em um outro exemplo, o dispositivo cliente 210 pode ser uma televisão conectada em rede (por exemplo, uma televisão que tem um modem e transceptor WiFi), e o visor 215 pode ser a tela de exibição da televisão. Em algumas implementações, o visor 215 pode ser separado do dispositivo cliente 210. Por exemplo, o dispositivo cliente 210 pode ser uma caixa de topo de aparelho, e o visor 215 pode ser parte de uma televisão conectada na caixa de topo de aparelho.
[0088] A interface de usuário com base em servidor supradescrita é uma significativa intensificação que, comparada com soluções existentes com renderização de elementos gráficos, compressão de vídeo, codificação de vídeo, etc., pouparia uma grande quantidade de recursos de computação do servidor (por exemplo, CPU, RAM, cache, etc.) (por exemplo, em uma razão de 1/50). Por exemplo, em sistemas com base em vídeo, o sistema de servidor
58 / 81
201 não precisa processar o vídeo (por exemplo, comprimir/codificar, etc.) e enviar o vídeo para o dispositivo cliente 210. Além do mais, a quantidade de largura de banda para comunicação entre o sistema de servidor 201 e o dispositivo cliente 210 pode ser minimizada com base na comunicação do modelo de interface para renderização de uma interface de usuário, em vez de uma interface de usuário gerada, elementos da interface de usuário, ou ambos, que pode incluir conteúdo de mídia.
Uma outra vantagem é que a velocidade de inicialização das aplicações seria enormemente intensificada usando o sistema com base em servidor aqui descrito.
Por exemplo, quando um usuário iniciar uma aplicação em um dispositivo cliente, a aplicação pode carregar em tempo real em virtude de a aplicação já estar ativa e executando no sistema de servidor 201. Para ilustrar, as aplicações no sistema de servidor 201 (por exemplo, um guia eletrônico de programa (EPG) ou outra aplicação) seriam compartilhadas entre muitos dispositivos clientes concorrentes e seus usuários.
À medida que um dispositivo cliente inicia uma aplicação que ainda não está em execução no sistema de servidor 201, a aplicação é carregada pelo sistema de servidor 201 e pode ser adicionada em uma lista de aplicações em execução no sistema de servidor 201. Por exemplo, o sistema de servidor 201 pode determinar que uma aplicação é disparada por um dispositivo cliente quando o dispositivo cliente iniciar a aplicação.
O sistema de servidor 201 pode determinar que a aplicação não está executando no sistema de servidor 201 e, em resposta à determinação que a aplicação não está executando no sistema de servidor 201, o sistema de servidor 201 pode adicionar a aplicação na lista de aplicações em execução no sistema de servidor 201. A lista de aplicações pode ser acessível por uma pluralidade de dispositivos clientes usando o computador servidor.
Por exemplo, quando um novo dispositivo cliente (e novo usuário do dispositivo cliente) começar a interagir com uma aplicação, a aplicação (por exemplo, o EPG) já pode estar ativa e executando pelo sistema de servidor 201 para que outros dispositivos
59 / 81 clientes e usuários acessem, portanto, não há tempo de início para carregar a aplicação ou para carregar os dados da aplicação (por exemplo, os dados de EPG) para os novos dispositivo cliente e usuário. Em um motor da interface de usuário da aplicação 206 (por exemplo, uma sandbox), uma aplicação compartilha dados comuns (por exemplo, uma base de dados de EPG pode estar completamente na RAM) para todos os usuários, embora isto tenha apenas pouca necessidade para o contexto de usuário (por exemplo, um ou mais estados, tais como DOM e conexão atuais). Em soluções existentes em que o motor de tempo de execução da aplicação está no dispositivo cliente, uma aplicação de início precisará ser carregada e inicializada, o que adiciona atraso.
[0089] Um outro benefício da interface de usuário com base em servidor aqui descrita é relacionado à segurança. Por exemplo, um efeito colateral da interface de usuário com base em servidor é que a informação que é enviada para dispositivos clientes pelo sistema de servidor (por exemplo, sistema de servidor 201) é informação relacionada à informação relacionada a elementos gráficos (por exemplo, informação de estado para um ou mais objetos gráficos de uma interface de usuário), em cujo caso não há forma de uma interface de programação de aplicação (API) sendo exposta. Uma solução como esta, assim, provê uma maneira segura de implementar interfaces de usuário. Este é um benefício em relação às soluções com base em servidor existentes, em que um dispositivo cliente faz chamadas (por exemplo, envia uma solicitação), por meio de uma API, para um servidor para obter conteúdo (por exemplo, um filme, resultados de busca, entre outra informação), deixando dados em tais chamadas de API abertos para brechas de segurança (por exemplo, um terceiro não autorizado pode acessar uma chave, dados sensíveis, e/ou outra informação incluída em uma chamada de API).
[0090] A figura 4 é um diagrama que ilustra um exemplo de um
60 / 81 Modelo de Objeto do Documento (DOM) 400 que define informação de estado de uma interface de usuário com três itens de menu, rotulados como Item1, Item2, e Item3. Os três itens de menu incluem elementos gráficos textuais. A figura 5 é um diagrama que ilustra um exemplo de um DOM 500 que define informação de estado diferente para a interface de usuário com base em um evento recebido. Por exemplo, o motor da interface de usuário da aplicação 206 pode gerar o DOM 400 para a interface de usuário com o primeiro item de menu (para Item1) destacado em texto em vermelho, e os outros dois itens de menu (para Item2 e Item3) em texto em preto. Em resposta a um evento de entrada (por exemplo, em resposta a um pressionamento de tecla <SETA PARA BAIXO>), o motor da interface de usuário da aplicação 206 pode gerar o novo DOM 500 com o segundo item de menu (para Item2) destacado em texto em vermelho, e os outros dois itens de menu (para Item1 e Item3) em texto em preto.
[0091] No exemplo da figura 4 e da figura 5, as únicas mudanças entre o DOM 400 e o DOM 500 são as propriedades de cor dos primeiro e segundo itens. A figura 6 é um exemplo de um DOM delta 600 que inclui apenas a diferença entre o DOM 400 e o DOM 500. Por exemplo, o DOM delta 600 inclui apenas uma indicação de que a cor de item1 mudou para preto, e uma indicação de que a cor de item2 mudou para cinza. A figura 7 é um diagrama que ilustra um exemplo de uma mudança em uma interface de usuário com base em um DOM delta 600. Por exemplo, com base no DOM delta 600 mostrado na figura 6 indicando que o item de menu item1 mudou de cinza para preto, o item de menu “Abrir” (correspondente a “item1” na figura 6) muda de uma cor cinza em uma primeira tela da interface de usuário para uma cor preta em uma segunda tela da interface de usuário. Adicionalmente, com base no DOM delta 600 indicando que o item de menu item2 mudou de preto para cinza, o item de menu “Fechar” (correspondente a “item2” na figura 6) muda de uma cor preta na primeira tela da interface de usuário para
61 / 81 uma cor cinza na segunda tela da interface de usuário. O DOM delta 600 pode ser enviado para o dispositivo cliente 210 para atualizar os elementos gráficos da interface de usuário. Em tais casos, objetos que não mudam podem não ser enviados para o dispositivo cliente 210. Para objetos que mudam, apenas as propriedades mudadas são enviadas.
[0092] Em alguns exemplos, em virtude de o sistema com base em servidor aqui descrito (por exemplo, sistema de servidor 101 e/ou sistema de servidor 201) manter e gerenciar as interfaces de usuário de uma ou mais aplicações, controle de cliente remoto de uma interface de usuário de uma aplicação exibida por um dispositivo cliente pode ser realizado eficientemente, tornando possível que o sistema com base em servidor ou um dispositivo cliente adicional tome controle do dispositivo cliente (por exemplo, em uma situação de área de trabalho remota). Por exemplo, em virtude de uma aplicação já poder estar ativa e executando no sistema de servidor 201, um computador do sistema de servidor 201 pode exibir o mesmo conteúdo da aplicação que é exibido por um dispositivo cliente que recebe um modelo de interface (ou modelo de interface delta) a partir do sistema de servidor 201 para esta aplicação. Em alguns casos, o controle de cliente remoto pode habilitar a reprodução do conteúdo para habilitar a descoberta de problemas na apresentação e/ou para prover a detecção de problemas. Em um outro exemplo, um primeiro dispositivo cliente pode controlar remotamente uma interface de usuário de uma aplicação exibida por um segundo dispositivo cliente. Por exemplo, o mesmo modelo de interface ou modelo de interface delta (por exemplo, DOM ou DOM delta) pode ser enviado para o primeiro dispositivo e para o segundo dispositivo. A realização das operações de controle de cliente ou área de trabalho remota em um exemplo como este é feita mais fácil usando o sistema com base em servidor aqui descrito, já que a interface de usuário de uma aplicação é renderizada pelo sistema de servidor e pode ser enviada pelo sistema de servidor tanto
62 / 81 para o primeiro dispositivo cliente quanto para o segundo dispositivo cliente. Em alguns casos, o primeiro dispositivo cliente e o segundo dispositivo cliente podem, ambos, prover entrada para uma instância de uma aplicação para o sistema de servidor, e o sistema de servidor pode modificar a interface de usuário com base na entrada proveniente tanto do primeiro quanto do segundo dispositivos clientes. Em tais casos, os usuários do primeiro e do segundo dispositivos clientes pode interagir colaborativamente com a mesma interface de usuário da instância de aplicação.
[0093] Em alguns casos, quando certos dispositivos clientes forem usados (por exemplo, um computador de mesa com um mouse ou outro dispositivo de entrada, um telefone celular, computador tipo tablet, dispositivo vestível, ou outro dispositivo com uma tela sensível ao toque, com base em gesto, e/ou outra interface, entre outros), um grande número de eventos de entrada pode ser enviado dos dispositivos clientes para o sistema de servidor (por exemplo, sistema de servidor 201). Em um exemplo ilustrativo, 100 eventos por segundo podem ser gerados quando um mouse for movido de um ponto para um outro. Eventos de toque em uma tela sensível ao toque também podem gerar um grande número de eventos. Um grande número de eventos como este pode ser muito trabalhoso para o sistema de servidor a partir de uma perspectiva de recurso (por exemplo, largura de banda, computação, memória, etc.). Por exemplo, o número de eventos brutos pode rapidamente ficar muito grande para transmissão e processamento pelo sistema de servidor em tempo real.
[0094] Em alguns exemplos, os eventos provenientes de um dispositivo cliente podem ser estrangulados. Por exemplo, uma nova maneira de manipular certos tipos de entrada (por exemplo, deslizamentos e/ou outros gestos que incluem movimento repetido de uma entrada) é aqui provida. Por exemplo, deslizamentos ou outros gestos ou entrada em dispositivos clientes (por exemplo, em telefones celulares, computadores tipo tablet, entre outros)
63 / 81 podem ser usados para rolar uma lista de itens. À medida que um usuário desliza rápido em uma tela sensível ao toque, usando um mouse, etc., alguma forma de autorrepetição ocorre para fazer com que os itens continuem rolando, depois do que, os itens de menu começam a desacelerar gradualmente. O usuário, então, irá precisar deslizar outras vezes para rolar através de uma longa lista, levando à geração de muitos eventos de entrada. Os eventos de entrada (por exemplo, eventos com base em deslizamento, e/ou outros eventos com base em gesto) podem ser estrangulados pela detecção de que o usuário manteve um dedo, dispositivo de apontamento, mouse, ou outra ferramenta de entrada no lugar no final de uma entrada (por exemplo, no final de um movimento de deslizamento), e continuou uma operação de rolagem até a entrada ser liberada. Em um exemplo ilustrativo, o sistema de servidor pode detectar que um usuário manteve um dedo, dispositivo de apontamento, ou outra ferramenta de entrada em uma interface de toque no final de um movimento de deslizamento (por exemplo, o usuário desliza um dedo e mantém o dedo no lugar no final do deslizamento). Em resposta à detecção que o usuário manteve a ferramenta de entrada (por exemplo, dedo, etc.) no lugar no final do movimento de deslizamento, o sistema de servidor fará com que a rolagem continue na mesma direção até que o usuário remova seu dedo. Em alguns casos, o sistema de servidor pode detectar uma velocidade da entrada, e pode realizar uma operação de rolagem contínua com base na velocidade (por exemplo, uma rolagem mais rápida pode ser realizada em resposta a uma entrada mais rápida). Uma solução como esta para estrangular entradas reduz o número de eventos de entrada que são gerados, e permite que o usuário realize menos gestos de entrada para rolar uma lista de itens.
[0095] Em alguns casos, em relação a eventos de teclado, um dispositivo cliente pode enviar eventos de tecla para baixo (um botão do teclado é pressionado para baixo) e tecla para cima (um botão do teclado é liberado). Para eventos de teclado, toda a manipulação de evento é realizada
64 / 81 pelo sistema de servidor (por exemplo, sistema de servidor 201). Em tais casos, gerenciamento de repetição automática pode ser implementado, em que eventos para cima repetidos não são enviados para o sistema de servidor. Em alguns casos, um sistema de servidor pode prover (por exemplo, enviar ou transmitir) mais atualizações para o cliente do que o cliente ou a rede podem manipular. Em alguns exemplos, tal como para certificar que o sistema de servidor não provê muitas atualizações de repetição, o dispositivo cliente pode enviar uma mensagem para o servidor indicando que o cliente está pronto (referida como uma “mensagem de pronto”) quando o cliente determinar que está pronto para aceitar mais atualizações de repetição. O sistema de servidor pode esperar para enviar atualizações para o dispositivo cliente até que o mesmo receba uma mensagem de pronto a partir do dispositivo cliente. Em alguns exemplos, o dispositivo cliente pode prover (por exemplo, enviar ou transmitir) uma mensagem para o sistema de servidor instruindo o sistema de servidor a pausar ou parar o envio de atualizações. A mensagem pode ser referida como uma “mensagem de pausa x”, em que “x” pode ser um indicador de atraso por quanto tempo o sistema de servidor deve esperar antes de prover atualizações adicionais para o dispositivo cliente. Em alguns casos, o dispositivo cliente pode enviar a mensagem de pausa x quando o cliente receber mais atualizações do que o mesmo pode manipular (por exemplo, um número de atualizações excede um número limite de atualizações, tais como 10 atualizações, 50 atualizações, ou outro número adequado, ou outro limite que indica que o dispositivo cliente recebeu muitas atualizações).
[0096] Em alguns exemplos, os manipuladores do evento de entrada (por exemplo, evento de mouse, evento de toque, entre outros) podem ser implementados. Por exemplo, em HTML e/ou JavaScript (JS), pode-se associar declarativamente uma função para manipular um evento. Um exemplo ilustrativo é como segue:
65 / 81 <button onclick=“javascript function here()”>Click Me</button>
[0097] Uma dificuldade é que o modelo de interface (por exemplo, um DOM) é enviado para e processado por um dispositivo cliente, ao mesmo tempo em que as funções são realizadas por um computador servidor do sistema de servidor (por exemplo, sistema de servidor 201). Um manipulador de evento de entrada pode ser usado pelo sistema de servidor (por exemplo, sistema de servidor 201) para traduzir referências de função (por exemplo, uma referência de função HTML e/ou JS) para identificadores (IDs) de função exclusivos. Por exemplo, uma primeira função pode ser mapeada ou associada com um ID da primeira função, uma segunda função pode ser mapeada ou associada com um ID da segunda função, uma terceira função pode ser mapeada ou associada com um ID da terceira função, e assim por diante. O lado do servidor pode enviar os IDs de função para um dispositivo cliente. Em resposta a um evento detectado com base em uma entrada de usuário, um evento no nível da aplicação, ou um evento no nível do sistema, o dispositivo cliente pode associar uma função ao evento, localizar o ID associado com esta função, e enviar o ID para o sistema de servidor. O sistema de servidor 201 pode, então, chamar a função e realizar a função para determinar como a interface de usuário será modificada. Em alguns exemplos, um dispositivo cliente pode enviar uma lista de N duplas ou pares de ID de função (por exemplo, incluindo um objeto alvo, ID de função) que um evento gerou. O sistema de servidor pode chamar as N funções, passando a informação sobre o evento (por exemplo, para o motor da interface de usuário da aplicação 206 e/ou o motor do domínio de aplicação 208). Pelo uso de um manipulador de evento de entrada como este, o sistema de servidor pode realizar funções sem exigir uma interface de usuário da aplicação para mudar a maneira que o mesmo opera (por exemplo, a aplicação pode continuar a associar declarativamente uma função para manipular um evento em particular).
66 / 81
[0098] Em alguns exemplos, o sistema de servidor (por exemplo, o sistema de servidor 201) pode manter um objeto de sistema remoto por conexão com um dispositivo cliente. Por exemplo, um objeto de sistema remoto pode incluir dados representados como uma instanciação de uma estrutura de objeto de dados que armazena informação sobre o sistema, incluindo informação de conexão. O objeto de sistema remoto pode persistir de maneira tal que múltiplas aplicações possam se basear em uma conexão existente para eficiência e velocidade, tal como para comunicação de eventos de cliente através de aplicações diferentes. Um objeto de sistema remoto por conexão pode ser compartilhado por algumas ou todas as aplicações em execução para um dispositivo cliente e/ou usuário do dispositivo cliente. Um efeito de manter um objeto de sistema remoto por conexão é que isto cria um sistema multitarefas a partir da perspectiva do dispositivo cliente. Um usuário pode comutar de um lado para outro de uma primeira aplicação para uma segunda aplicação (por exemplo, de um jogo para um EPG) e pode retomar na segunda aplicação em que a aplicação estava quando o usuário comutou previamente a partir da segunda aplicação.
[0099] Em algumas implementações, o sistema de servidor (por exemplo, o sistema de servidor 201) pode se adaptar às capacidades de diferentes dispositivos clientes. Por exemplo, um filtro pode ser adicionado em um modelo de interface (por exemplo, em uma árvore de interface de usuário de um DOM ou DOM delta) que define certas restrições que são colocadas no que pode ser incluído no modelo de interface para um dispositivo cliente em particular. Em um exemplo ilustrativo, se um cliente tiver uma limitação conhecida no processamento de certas dimensões ou posições de pixel, tal como ser capaz de renderizar e exibir resoluções de alta definição ou figuras de vídeo de resolução mais baixa, um filtro ou uma restrição podem ser colocados no modelo de interface para este dispositivo cliente indicando que uma resolução de vídeo máxima de 1.280 x 720 pixels
67 / 81 (ou outra resolução de alta definição) pode ser exibida pelo dispositivo cliente.
[00100] A figura 9 é um fluxograma que ilustra um exemplo de um processo 900 de gerar conteúdo da interface de usuário usando as técnicas aqui descritas. No bloco 902, o processo 900 inclui receber (por exemplo, por um computador servidor ou outro dispositivo) um evento da interface de usuário. Em casos em que o processo 1000 for realizado por um computador servidor, o computador servidor pode ser parte do sistema de servidor 101 ou do sistema de servidor 201. O evento da interface de usuário corresponde a uma interface de usuário de um dispositivo cliente. Por exemplo, o evento da interface de usuário pode ser com base na entrada de usuário recebida pela interface de usuário. Em um outro exemplo, o evento da interface de usuário pode ser um evento com base em sistema que é relacionado à interface de usuário. O dispositivo cliente pode incluir qualquer dispositivo adequado. Em alguns exemplos, o dispositivo cliente inclui um dispositivo de mídia. A interface de usuário pode incluir qualquer tipo de interface de usuário, tais como uma interface de usuário gráfica, um guia do conteúdo de mídia (por exemplo, um guia eletrônico de programa (EPG)), uma interface de uma aplicação de jogo, uma interface de uma aplicação móvel, uma interface de uma aplicação de televisão inteligente, ou qualquer outra interface de usuário adequada.
[00101] No bloco 904, o processo 900 inclui determinar uma aplicação associada com o evento da interface de usuário. Por exemplo, a aplicação associada com o evento da interface de usuário pode ser determinada com base em uma conexão entre o computador servidor (ou outro dispositivo) e o dispositivo cliente. A conexão pode incluir um soquete ou qualquer outra conexão adequada.
[00102] No bloco 906, o processo 900 inclui gerar um modelo de interface usando a aplicação associada com o evento da interface de usuário.
68 / 81 O modelo de interface define a informação de estado para um ou mais objetos gráficos da interface de usuário. A informação de estado resulta a partir do evento da interface de usuário. Em alguns casos, o processo 900 pode incluir determinar a informação de estado com base pelo menos no evento da interface de usuário. Em alguns exemplos, o modelo de interface gerado pode incluir uma parte de um modelo de interface maior. Por exemplo, gerar o modelo de interface inclui gerar uma parte do modelo de interface. A parte do modelo de interface é associada com uma parte da interface de usuário. Por exemplo, a parte do modelo de interface pode definir informação de estado para um subconjunto da interface de usuário (por exemplo, para uma página ou uma parte de uma página da interface de usuário).
[00103] Em alguns exemplos, o processo 900 pode incluir comprimir o modelo de interface. Em tais exemplos, o modelo de interface comprimido é enviado para o dispositivo cliente. Em alguns casos, o modelo de interface pode ser considerado como um primeiro modelo de interface. A compressão do modelo de interface pode ser realizada pela determinação de uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos, e pela geração de um segundo modelo de interface incluindo apenas dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia. O segundo modelo de interface também pode ser referido como um modelo de interface delta.
[00104] Em alguns exemplos, o modelo de interface pode incluir uma estrutura de dados hierárquica que tem os um ou mais objetos gráficos. Por exemplo, o modelo de interface e o modelo de interface delta podem incluir um Modelo de Objeto do Documento (DOM). Cada objeto gráfico dos um ou mais objetos gráficos pode ter um ou mais atributos definidos pela informação de estado. Em alguns casos, os um ou mais objetos gráficos incluem pelo menos um de uma caixa, uma linha, uma imagem, um ícone, um texto, um
69 / 81 item de conteúdo a ser exibido na interface de usuário, ou qualquer combinação dos mesmos. Cada objeto gráfico dos um ou mais objetos gráficos pode incluir um ou mais atributos definidos pela informação de estado. Os um ou mais atributos dos um ou mais objetos gráficos podem incluir pelo menos um de uma posição, uma forma, uma cor de um objeto gráfico, qualquer combinação dos mesmos, e/ou outro atributo adequado.
[00105] No bloco 908, o processo 900 inclui enviar (por exemplo, pelo computador servidor ou outro dispositivo), o modelo de interface (ou o segundo modelo de interface) para o dispositivo cliente. Em alguns casos, o modelo de interface pode ser enviado para um computador servidor adicional (por exemplo, os um ou mais computadores servidores 140 ou um outro dispositivo diferente de um computador servidor). O modelo de interface habilita o dispositivo cliente (ou o computador servidor adicional ou outro dispositivo) a renderizar a interface de usuário.
[00106] Em alguns exemplos, o processo 900 pode incluir determinar que uma aplicação é disparada pelo dispositivo cliente, e determinar que a aplicação não está executando no computador servidor. O processo 900 pode incluir adicionar a aplicação em uma lista de aplicações acessíveis por uma pluralidade de dispositivos clientes usando o computador servidor. Por exemplo, em resposta à determinação que a aplicação não está executando no computador servidor, o processo 900 pode adicionar a aplicação na lista de aplicações acessíveis pela pluralidade de dispositivos clientes usando o computador servidor. Como exposto, quando um novo dispositivo cliente começar a interagir com uma aplicação na lista de aplicações, a aplicação já pode estar ativa e executando pelo sistema de servidor, de forma que não haja tempo de início para que o dispositivo cliente carregue a aplicação ou carregue os dados da aplicação.
[00107] A figura 10 é um fluxograma que ilustra um exemplo de um processo 1000 de gerar conteúdo da interface de usuário usando as técnicas
70 / 81 aqui descritas. No bloco 1002, o processo 1000 inclui receber (por exemplo, por um computador servidor ou outro dispositivo) um evento da interface de usuário. Em casos em que o processo 1000 for realizado por um computador servidor, o computador servidor pode ser parte do sistema de servidor 101 ou do sistema de servidor 201. O evento da interface de usuário corresponde a uma interface de usuário de um dispositivo cliente. Por exemplo, o evento da interface de usuário pode ser com base em entrada de usuário recebida pela interface de usuário. Em um outro exemplo, o evento da interface de usuário pode ser um evento com base em sistema que é relacionado à interface de usuário. O dispositivo cliente pode incluir qualquer dispositivo adequado. Em alguns exemplos, o dispositivo cliente inclui um dispositivo de mídia. A interface de usuário pode incluir qualquer tipo de interface de usuário, taus como uma interface de usuário gráfica, um guia do conteúdo de mídia (por exemplo, um guia eletrônico de programa (EPG)), uma interface de uma aplicação de jogo, uma interface de uma aplicação móvel, uma interface de uma aplicação de televisão inteligente, ou qualquer outra interface de usuário adequada.
[00108] No bloco 1004, o processo 1000 inclui determinar uma aplicação associada com o evento da interface de usuário. Por exemplo, a aplicação associada com o evento da interface de usuário pode ser determinada com base em uma conexão entre o computador servidor (ou outro dispositivo) e o dispositivo cliente. A conexão pode incluir um soquete ou qualquer outra conexão adequada.
[00109] No bloco 1006, o processo 1000 inclui gerar um modelo de interface usando a aplicação associada com o evento da interface de usuário. O modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário. A informação de estado resulta a partir do evento da interface de usuário. Em alguns casos, o processo 1000 pode determinar a informação de estado com base pelo menos no evento da
71 / 81 interface de usuário.
[00110] No bloco 1008, o processo 1000 inclui determinar uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos. No bloco 1010, o processo 1000 inclui gerar um modelo de interface atualizado incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia. Por exemplo, o modelo de interface atualizado pode incluir apenas dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia (em cujo caso dados para outros objetos gráficos que têm informação de estado que não é diferente da informação de estado prévia não serão incluídos no modelo de interface atualizado). O modelo de interface atualizado também pode ser referido como um modelo de interface delta ou um segundo modelo (ou segundo modelo de interface).
[00111] Em alguns exemplos, o modelo de interface pode incluir uma estrutura de dados hierárquica que tem os um ou mais objetos gráficos. Por exemplo, o modelo de interface e o modelo de interface delta podem incluir um Modelo de Objeto do Documento (DOM). Cada objeto gráfico dos um ou mais objetos gráficos pode ter um ou mais atributos definidos pela informação de estado. Em alguns casos, os um ou mais objetos gráficos incluem pelo menos um de uma caixa, uma linha, uma imagem, um ícone, um texto, um item de conteúdo a ser exibido na interface de usuário, ou qualquer combinação dos mesmos. Cada objeto gráfico dos um ou mais objetos gráficos pode incluir um ou mais atributos definidos pela informação de estado. Os um ou mais atributos dos um ou mais objetos gráficos podem incluir pelo menos um de uma posição, uma forma, uma cor de um objeto gráfico, qualquer combinação dos mesmos, e/ou outro atributo adequado.
[00112] No bloco 1012, o processo 1000 inclui enviar (por exemplo, pelo computador servidor ou outro dispositivo), o modelo de interface
72 / 81 atualizado para o dispositivo cliente. Em alguns casos, o modelo de interface atualizado pode ser enviado para um computador servidor adicional (por exemplo, os um ou mais computadores servidores 140 ou um outro dispositivo diferente de um computador servidor). O modelo de interface atualizado habilita o dispositivo cliente (ou o computador servidor adicional ou outro dispositivo) a renderizar a interface de usuário.
[00113] Em alguns exemplos, os processos 800, 900, e 1000 podem ser realizados por um dispositivo de computação ou um aparelho. Por exemplo, os processos 800, 900, e 1000 podem ser realizados pelo sistema de servidor 201 mostrado na figura 2 (por exemplo, um computador servidor ou múltiplos computadores servidores do sistema de servidor 201). Em alguns casos, o dispositivo de computação ou aparelho podem incluir vários componentes, tais como um ou mais dispositivos de entrada, um ou mais processadores, um ou mais microprocessadores, um ou mais microcomputadores, um ou mais dispositivos de saída, e/ou outro componente de um dispositivo de computação (por exemplo, um computador servidor ou outro dispositivo) que é configurado para realizar as etapas dos processos 800, 900, 1000, e/ou outro processo aqui descrito. O dispositivo de computação pode incluir uma memória configurada para armazenar dados (por exemplo, um modelo de interface, um modelo de interface delta, elementos gráficos e outro conteúdo da interface de usuário para uma ou mais aplicações, e/ou quaisquer outros dados adequados) e um ou mais processadores configurados para processar os dados. O dispositivo de computação também pode incluir uma ou mais interfaces de rede configuradas para comunicar dados. A interface de rede pode ser configurada para comunicar dados com base em rede (por exemplo, dados com base em Protocolo da Internet (IP) ou outros dados de rede adequados). O dispositivo de computação também pode incluir um visor em algumas implementações.
[00114] Os componentes do dispositivo de computação podem ser
73 / 81 implementados no conjunto de circuitos. Por exemplo, os componentes podem incluir e/ou podem ser implementados usando circuitos eletrônicos ou outro hardware eletrônico, que podem incluir um ou mais circuitos eletrônicos programáveis (por exemplo, microprocessadores, unidades de processamento de elementos gráficos (GPUs), processadores de sinal digital (DSPs), unidades centrais de processamento (CPUs), e/ou outros circuitos eletrônicos adequados), e/ou podem incluir e/ou ser implementados usando software de computador, software embarcado, ou qualquer combinação dos mesmos, para realizar as várias operações aqui descritas. O dispositivo de computação pode incluir adicionalmente um visor (como um exemplo do dispositivo de saída, ou além do dispositivo de saída), uma interface de rede configurada para comunicar e/ou receber os dados, qualquer combinação dos mesmos, e/ou outro(s) componente(s). A interface de rede pode ser configurada para comunicar e/ou receber dados com base em Protocolo da Internet (IP) ou outro tipo de dados.
[00115] Processos 800, 900 e 1000 são ilustrados como um gráfico de fluxo ou fluxograma lógico, cuja operação representa uma sequência de operações que podem ser implementadas em hardware, instruções de computador, ou uma combinação dos mesmos. No contexto das instruções de computador, as operações representam instruções executáveis por computador armazenadas em uma ou mais mídias de armazenamento legíveis por computador que, quando executadas por um ou mais processadores, realizam as operações citadas. No geral, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados, e similares que realizam funções em particular ou implementam tipos de dados em particular. Não pretende-se que a ordem na qual as operações são descritas seja interpretada como uma limitação, e qualquer número de operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
74 / 81
[00116] Adicionalmente, os processos 800, 900 e 1000 podem ser realizados sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e podem ser implementados como código (por exemplo, instruções executáveis, um ou mais programas de computador, ou uma ou mais aplicações) executando coletivamente em um ou mais processadores, por hardware, ou combinações dos mesmos. Da forma notada anteriormente, o código pode ser armazenado em uma mídia de armazenamento legível por computador ou legível por máquina, por exemplo, na forma de um programa de computador que compreende uma pluralidade de instruções executáveis por um ou mais processadores. A mídia de armazenamento legível por computador ou legível por máquina pode ser não transitória.
[00117] A figura 11 ilustra uma arquitetura de um sistema de computação 1100 em que os componentes do sistema 1100 ficam em comunicação elétrica uns com os outros usando uma conexão do sistema 1105, tal como um barramento. O sistema de exemplo 1100 inclui uma unidade de processamento (CPU ou processador) 1110 e uma conexão do sistema 1105 que acopla vários componentes do sistema, incluindo a memória do sistema 1115, tais como memória exclusiva de leitura (ROM) 1120 e memória de acesso aleatório (RAM) 1125, no processador 1110. O sistema 1100 pode incluir um cache de memória de alta velocidade conectada diretamente com o, em proximidade imediata em relação ao, ou integrado como parte do processador 1110. O sistema 1100 pode copiar dados a partir da memória 1115 e/ou do dispositivo de armazenamento 1130 para o cache 1112 para acesso rápido pelo processador 1110. Desta maneira, o cache pode prover um reforço de desempenho que evita que o processador 1110 atrase enquanto espera pelos dados. Estes e outros módulos podem controlar ou ser configurados para controlar o processador 1110 para realizar várias ações. Outra memória de sistema 1115 também pode estar disponível para uso. A
75 / 81 memória 1115 pode incluir múltiplos diferentes tipos de memória com diferentes características de desempenho. O processador 1110 pode incluir qualquer processador de propósito geral e um serviço de hardware ou software, tais como serviço 1 1132, serviço 2 1134, e serviço 3 1136, armazenado no dispositivo de armazenamento 1130, configurado para controlar o processador 1110 bem como um processador de propósito especial em que as instruções de software são incorporadas no desenho de processador real. O processador 1110 pode estar um sistema de computação completamente autocontido, contendo múltiplos núcleos ou processadores, um barramento, controlador de memória, cache, etc. Um processador multinúcleos pode ser simétrico ou assimétrico.
[00118] Para habilitar a interação do usuário com o sistema 1100, um dispositivo de entrada 1145 pode representar qualquer número de mecanismos de entrada, tais como um microfone para fala, uma tela sensível ao toque para gesto ou entrada gráfica, teclado, mouse, entrada de movimento, fala e assim por diante. Um dispositivo de saída 1135 também pode ser um ou mais de inúmeros mecanismos de saída conhecidos pelos versados na técnica. Em algumas instâncias, sistemas multimodais podem habilitar um usuário a prover múltiplos tipos de entrada para comunicar com o sistema 1100. A interface de comunicações 1140 pode, no geral, governar e gerenciar a entrada de usuário e a saída do sistema. Não há restrição na operação em qualquer arranjo de hardware em particular e, portanto, as características básicas aqui expostas podem ser facilmente substituídas por arranjos de hardware ou software embarcado melhorados, à medida que os mesmos forem desenvolvidos.
[00119] O dispositivo de armazenamento 1130 é uma memória não volátil e pode ser um disco rígido ou outros tipos de mídia legível por computador que podem armazenar dados que são acessíveis por um computador, tais como cassetes magnéticos, cartões de memória flash,
76 / 81 dispositivos de memória em estado sólido, discos versáteis digitais, cartuchos, memórias de acesso aleatório (RAMs) 1125, memória exclusiva de leitura (ROM) 1120, e híbridos dos mesmos.
[00120] O dispositivo de armazenamento 1130 pode incluir serviços 1132, 1134, 1136 para controlar o processador 1110. Outros módulos de hardware ou de software são contemplados. O dispositivo de armazenamento 1130 pode ser conectado na conexão do sistema 1105. Em um aspecto, um módulo de hardware que realiza uma função em particular pode incluir o componente de software armazenado em uma mídia legível por computador em conexão com os componentes de hardware necessários, tais como o processador 1110, a conexão 1105, o dispositivo de saída 1135, e similares, para realizar a função.
[00121] Por clareza de explicação, em algumas instâncias, a presente tecnologia pode ser apresentada como incluindo blocos funcionais individuais incluindo blocos funcionais que compreendem dispositivos, componentes de dispositivo, etapas ou rotinas em um método incorporado em software, ou combinações de hardware e software.
[00122] Em algumas modalidades, os dispositivos de armazenamento, as mídias e as memórias legíveis por computador podem incluir um sinal a cabo ou sem fio que contém um fluxo contínuo de bits e similares. Entretanto, quando mencionado, a mídia de armazenamento legível por computador não transitória expressamente exclui mídia, tais como energia, sinais portadores, ondas eletromagnéticas, e sinais em si mesmos.
[00123] Métodos de acordo com os supradescritos exemplos podem ser implementados usando instruções executáveis por computador que são armazenadas ou de outra forma disponíveis a partir da mídia legível por computador. Tais instruções podem compreender, por exemplo, instruções e dados que fazem com que ou de outra forma configuram um computador de uso geral, um computador de uso especial, ou dispositivo de processamento
77 / 81 de propósito especial para realizar uma certa função ou grupo de funções. Partes de recursos de computador usados podem ser acessíveis através de uma rede. As instruções executáveis por computador podem ser, por exemplo, binários, instruções de formato intermediário, tal como linguagem assembly, software embarcado, ou código fonte. Exemplos de mídia legível por computador que pode ser usada para armazenar instruções, informação usada, e/ou informação criada durante métodos de acordo com exemplos descritos incluem discos magnéticos ou ópticos, memória flash, dispositivos USB providos com memória não volátil, dispositivos de armazenamento em rede, e similares.
[00124] Os vários blocos lógicos, módulos, circuitos, e etapas de algoritmo ilustrativos descritos em conexão com as modalidades aqui descritas podem ser implementados como hardware eletrônico, software de computador, software embarcado, ou combinações dos mesmos. Para ilustrar claramente esta intercambialidade de hardware e software, vários componentes, blocos, módulos, circuitos, e etapas ilustrativos foram supradescritos, no geral, em termos de suas funcionalidades. Se tal funcionalidade é implementada como hardware ou software depende da aplicação em particular e das restrições de desenho impostas no sistema geral. Os versados na técnica podem implementar a funcionalidade descrita de maneiras variáveis para cada aplicação em particular, mas tais decisões de implementação não devem ser interpretadas como causando uma fuga do escopo do presente pedido.
[00125] Dispositivos que implementam métodos ou processos de acordo com estas descrições podem compreender hardware, software embarcado e/ou software, e podem tomar qualquer um de uma variedade de fatores de forma. Típicos exemplos de tais fatores de forma incluem laptops, smartphones, computadores pessoais de pequeno fator de forma, assistentes pessoais digitais, dispositivos montados em bastidor, dispositivos autônomos,
78 / 81 e similares. A funcionalidade aqui descrita também pode ser incorporada em periféricos ou cartões de suplemento. Tal funcionalidade também pode ser implementada em uma placa de circuito entre diferentes chips ou diferentes processos executando em um único dispositivo, a título de exemplo adicional.
[00126] As técnicas aqui descritas também podem ser implementadas em hardware eletrônico, software de computador, software embarcado, ou qualquer combinação dos mesmos. Tais técnicas podem ser implementadas em qualquer um de uma variedade de dispositivos, tais como computadores de propósitos geral, monofones de dispositivo de comunicação sem fio, ou dispositivos de circuito integrado que têm múltiplos usos incluindo aplicação em monofones de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer características descritas como módulos ou componentes podem ser implementadas em conjunto em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, mas interoperáveis. Se implementadas em software, as técnicas podem ser realizadas, pelo menos em parte, por uma mídia de armazenamento de dados legível por computador compreendendo código de programa que inclui instruções que, quando executadas, realizam um ou mais dos métodos supradescritos. A mídia de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, que pode incluir materiais de embalagem. A mídia legível por computador pode compreender memória ou mídia de armazenamento de dados, tal como memória de acesso aleatório (RAM), tal como memória de acesso aleatório dinâmica síncrona (SDRAM), memória exclusiva de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória exclusiva de leitura programável e eletricamente apagável (EEPROM), Memória flash, mídia de armazenamento de dados magnética ou óptica, e similares. As técnicas, adicionalmente ou alternativamente, podem ser realizadas pelo menos em parte por uma mídia de comunicação legível por computador que conduz ou comunica código de
79 / 81 programa na forma de instruções ou estruturas de dados e que pode ser acessada, lida, e/ou executada por um computador, tais como sinais ou ondas propagadas.
[00127] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, taus como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicação (ASICs), arranjos lógicos programáveis no campo (FPGAs), ou outro conjunto de circuitos lógico integrado ou discreto equivalente. Um processador como este pode ser configurado para realizar qualquer uma das técnicas descritas nesta descrição. Um processador de propósito geral pode ser um microprocessador; mas, na alternativa, o processador pode ser quaisquer processador, controlador, microcontrolador, ou máquina de estado convencionais. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP, ou qualquer outra tal configuração. Desta maneira, o termo “processador”, da forma aqui usada, pode se referir a qualquer uma da estrutura exposta, qualquer combinação da estrutura exposto, ou quaisquer outra estrutura ou aparelho adequado para implementação das técnicas aqui descritas.
[00128] As instruções, a mídia para conduzir tais instruções, os recursos de computação para executar as mesmas, e outras estruturas para suportar tais recursos de computação são meios para prover as funções descritas nestas descrições.
[00129] Embora uma variedade de exemplos e outra informação tenham sido usados para explicar aspectos no escopo das reivindicações anexas, nenhuma limitação das reivindicações deve ser implicada com base em características ou arranjos em particular em tais exemplos, como os
80 / 81 versados na técnica seriam capazes de usar estes exemplos para derivar uma ampla variedade de implementações. Adicionalmente e embora alguma matéria possa ter sido descrita em linguagem específica dos exemplos de características estruturais e/ou etapas do método, deve-se entender que a matéria definida nas reivindicações anexas não é necessariamente limitada a estas características ou atos descritos. Por exemplo, tal funcionalidade pode ser distribuída diferentemente ou realizada em componentes diferentes daqueles aqui identificados. Em vez disto, as características e etapas descritas são descritas como exemplos de componentes dos sistemas e métodos no escopo das reivindicações anexas.
[00130] A linguagem da reivindicação ou outra linguagem que cita “pelo menos um de” um conjunto e/ou “um ou mais” de um conjunto indicam que um elemento do conjunto ou múltiplos elementos do conjunto (em qualquer combinação) satisfazem a reivindicação. Por exemplo, a linguagem de reivindicação que cita “pelo menos um de A e B” significa A, B, ou A e B. Em um outro exemplo, a linguagem de reivindicação que cita “pelo menos um de A, B, e C” significa A, B, C, ou A e B, ou A e C, ou B e C, ou A e B e C. A linguagem “pelo menos um de” um conjunto e/ou “um ou mais” de um conjunto não limita o conjunto aos itens listados no conjunto. Por exemplo, a linguagem de reivindicação que cita “pelo menos um de A e B” pode significar A, B, ou A e B, e pode incluir adicionalmente itens não listados no conjunto de A e B.
[00131] Quando componentes forem descritos como sendo “configurados para” realizar certas operações, tal configuração pode ser alcançada, por exemplo, pelo desenho de circuitos eletrônicos ou outro hardware para realizar a operação, pela programação de circuitos eletrônicos programáveis (por exemplo, microprocessadores, ou outros circuitos eletrônicos adequados) para realizar a operação, ou qualquer combinação dos mesmos.
81 / 81
[00132] Os versados na técnica perceberão que os símbolos ou as terminologias menor do que (“<“) e maior do que (“>“) aqui usados podem ser substituídos com os símbolos menor do que ou igual a (“≤”) e maior do que ou igual a (“≥”), respectivamente, sem fugir do escopo desta descrição.

Claims (24)

REIVINDICAÇÕES
1. Método de processamento do conteúdo da interface de usuário, caracterizado pelo fato de que o método compreende: receber, por um computador servidor, um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinar uma aplicação associada com o evento da interface de usuário; gerar um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário, a informação de estado resultando a partir do evento da interface de usuário; e enviar, pelo computador servidor, o modelo de interface para o dispositivo cliente, o modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que o modelo de interface inclui uma estrutura de dados hierárquica que tem os um ou mais objetos gráficos, um objeto gráfico dos um ou mais objetos gráficos tendo um ou mais atributos definidos pela informação de estado.
3. Método de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que os um ou mais objetos gráficos incluem pelo menos um de uma caixa, uma linha, uma imagem, um ícone, um texto, e um item de conteúdo a ser exibido na interface de usuário.
4. Método de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que os um ou mais atributos dos um ou mais objetos gráficos incluem pelo menos uma de uma posição, uma forma, e uma cor do objeto gráfico.
5. Método de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que compreende adicionalmente: determinar a informação de estado com base pelo menos no evento da interface de usuário.
6. Método de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que compreende adicionalmente: comprimir o modelo de interface, em que o modelo de interface enviado para o dispositivo cliente é o modelo de interface comprimido.
7. Método de acordo com a reivindicação 6, caracterizado pelo fato de que o modelo de interface é um primeiro modelo de interface e em que comprimir o modelo de interface inclui: determinar uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos; e gerar um segundo modelo de interface incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia.
8. Método de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo fato de que a aplicação associada com o evento da interface de usuário é determinada com base em uma conexão entre o computador servidor e o dispositivo cliente.
9. Método de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o dispositivo cliente inclui um dispositivo de mídia, e em que a interface de usuário inclui um guia do conteúdo de mídia.
10. Método de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que gerar o modelo de interface inclui gerar uma parte do modelo de interface, a parte do modelo de interface sendo associada com uma parte da interface de usuário.
11. Método de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que compreende adicionalmente: determinar que uma aplicação é disparada pelo dispositivo cliente; determinar que a aplicação não está executando no computador servidor; e adicionar a aplicação em uma lista de aplicações acessíveis por uma pluralidade de dispositivos clientes usando o computador servidor.
12. Sistema, caracterizado pelo fato de que compreende: um ou mais processadores; e uma memória acessível aos um ou mais processadores e armazenando instruções que, mediante execução pelos um ou mais processadores, fazem com que os um ou mais processadores realizem operações para: receber um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinar uma aplicação associada com o evento da interface de usuário; gerar um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário, a informação de estado resultando a partir do evento da interface de usuário; e enviar o modelo de interface para o dispositivo cliente, o modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
13. Sistema de acordo com a reivindicação 12, caracterizado pelo fato de que o modelo de interface inclui uma estrutura de dados hierárquica que tem os um ou mais objetos gráficos, cada objeto gráfico dos um ou mais objetos gráficos tendo um ou mais atributos definidos pela informação de estado.
14. Sistema de acordo com a reivindicação 12 ou 13, caracterizado pelo fato de que os um ou mais objetos gráficos incluem pelo menos um de uma caixa, uma linha, uma imagem, um ícone, um texto, e um item de conteúdo a ser exibido na interface de usuário.
15. Sistema de acordo com qualquer uma das reivindicações 12 a 14, caracterizado pelo fato de que cada objeto gráfico dos um ou mais objetos gráficos inclui um ou mais atributos definidos pela informação de estado, em que os um ou mais atributos dos um ou mais objetos gráficos incluem pelo menos uma de uma posição, uma forma, e uma cor de um objeto gráfico.
16. Sistema de acordo com qualquer uma das reivindicações 12 a 15, caracterizado pelo fato de que a memória armazena instruções que, mediante execução pelos um ou mais processadores, fazem com que os um ou mais processadores: determinem a informação de estado com base pelo menos no evento da interface de usuário.
17. Sistema de acordo com qualquer uma das reivindicações 12 a 16, caracterizado pelo fato de que a memória armazena instruções que, mediante execução pelos um ou mais processadores, fazem com que os um ou mais processadores: comprimam o modelo de interface, em que o modelo de interface enviado para o dispositivo cliente é o modelo de interface comprimido.
18. Sistema de acordo com a reivindicação 17, caracterizado pelo fato de que o modelo de interface é um primeiro modelo de interface e em que comprimir o modelo de interface inclui:
determinar uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos; e gerar um segundo modelo de interface incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia.
19. Sistema de acordo com qualquer uma das reivindicações 12 a 18, caracterizado pelo fato de que a aplicação associada com o evento da interface de usuário é determinada com base em uma conexão entre o sistema e o dispositivo cliente.
20. Sistema de acordo com qualquer uma das reivindicações 12 a 19, caracterizado pelo fato de que o dispositivo cliente inclui um dispositivo de mídia, e em que a interface de usuário inclui um guia do conteúdo de mídia.
21. Sistema de acordo com qualquer uma das reivindicações 12 a 20, caracterizado pelo fato de que gerar o modelo de interface inclui gerar uma parte do modelo de interface, a parte do modelo de interface sendo associada com uma parte da interface de usuário.
22. Mídia legível por computador não transitória, caracterizada pelo fato de que tem armazenadas na mesma instruções que, quando executadas por um ou mais processadores, fazem com que os um ou mais processadores: recebam um evento da interface de usuário, o evento da interface de usuário correspondendo a uma interface de usuário de um dispositivo cliente; determinem uma aplicação associada com o evento da interface de usuário; gerem um modelo de interface usando a aplicação associada com o evento da interface de usuário, em que o modelo de interface define informação de estado para um ou mais objetos gráficos da interface de usuário, a informação de estado resultando a partir do evento da interface de usuário; e enviem o modelo de interface para o dispositivo cliente, o modelo de interface habilitando o dispositivo cliente a renderizar a interface de usuário.
23. Mídia legível por computador não transitória de acordo com a reivindicação 22, caracterizada pelo fato de que o modelo de interface é um primeiro modelo de interface e em que comprimir o modelo de interface inclui: determinar uma diferença entre a informação de estado para os um ou mais objetos gráficos e a informação de estado prévia para os um ou mais objetos gráficos; e gerar um segundo modelo de interface incluindo dados para os um ou mais objetos gráficos que têm informação de estado que é diferente da informação de estado prévia.
24. Mídia legível por computador não transitória, de acordo com a reivindicação 22 ou 23, caracterizada pelo fato de que gerar o modelo de interface inclui gerar uma parte do modelo de interface, a parte do modelo de interface sendo associada com uma parte da interface de usuário.
Gerador de interface local
Eventos de interface
Petição 870210044934, de 18/05/2021, pág. 101/112 Sistema servidor Modelos de Dispositivo cliente interface Modelos de interface Eventos de Gerador de interface interface Rede Gerador de interface local Modelos de Modelos de interface interface 1/11
Modelos de Eventos de interface interface Dispositivo cliente Eventos de interface Rede
Modelos de interface Modelos de Eventos de interface interface Gerador de interface local
Um ou mais computadores servidores Dispositivo cliente
Sistema servidor Dispositivo cliente
Gerador de interface Gerador de interface local
Petição 870210044934, de 18/05/2021, pág. 102/112 Eventos de interface Motor do servidor Motor de cliente da Motor de Dispositivo da interface interface de usuário entrada do de entrada de usuário usuário do usuário
Modelos de Armazenamento interface
Motor da Motor do interface de domínio de usuário de aplicação Motor de Motor de aplicação renderização composição Visor 2/11 de elementos de mídia gráficos
Motor de Motor de descrição decodificação
Uma ou mais fontes de mídia
308 Motor do domínio de aplicação (por exemplo, base(s) de dados, etc...)
Petição 870210044934, de 18/05/2021, pág. 103/112 Aplicação 1 Aplicação 2 Aplicação n Lógica da interface de usuário Lógica da interface de usuário Lógica da interface de usuário
Sistema de servidor Motor do servidor da interface de usuário
Gerenciar aplicações, conexões de usuário (por exemplo, soquetes), despachar eventos de interface, reenviar modelo(s) de interface 3/11
Tecnologia de servidor (por exemplo, Firewall, Equilibrador de Carga da Rede, Cache HTTP, SSL, distribuição de conteúdo estática, CDN, etc.)
Tecnologia de cliente (por exemplo, pilha de IP, HTTP, SSL, WebSockets, etc.) Dispositivo cliente Motor de cliente da interface de usuário
Biblioteca de elementos gráficos, dispositivos de entrada de usuário (tela sensível ao toque, controle remoto, mouse, miniteclado, etc.)
Petição 870210044934, de 18/05/2021, pág. 104/112 Texto = <<aberto>>, esquerda = 20%, topo = 20%, cor = VERMELHO 4/11
Texto = <<fechar>>, esquerda = 20%, topo = 40%, cor = PRETO
Texto = <<sair>>, esquerda = 20%, topo = 60%, cor = PRETO
Petição 870210044934, de 18/05/2021, pág. 105/112 Texto = <<aberto>>, esquerda = 20%, topo = 20%, cor = PRETO 5/11
Texto = <<fechar>>, esquerda = 20%, topo = 40%, cor = VERMELHO
Texto = <<sair>>, esquerda = 20%, topo = 60%, cor = PRETO cor = PRETO cor = CINZA
Petição 870210044934, de 18/05/2021, pág. 107/112 1ª Tela 2ª Tela
Abrir Item1.cor=PRETO Abrir 7/11
Fechar Item2.cor=CINZA Fechar Sair Sair
BR112021009629-9A 2018-11-23 2019-11-21 método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória BR112021009629A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862770973P 2018-11-23 2018-11-23
US62/770973 2018-11-23
PCT/IB2019/060046 WO2020104999A1 (en) 2018-11-23 2019-11-21 Techniques for managing generation and rendering of user interfaces on client devices

Publications (1)

Publication Number Publication Date
BR112021009629A2 true BR112021009629A2 (pt) 2021-08-10

Family

ID=68848329

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021009629-9A BR112021009629A2 (pt) 2018-11-23 2019-11-21 método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória

Country Status (7)

Country Link
US (2) US11683554B2 (pt)
EP (1) EP3884381A1 (pt)
CN (1) CN113168337A (pt)
AU (1) AU2019383041B2 (pt)
BR (1) BR112021009629A2 (pt)
CA (1) CA3120826A1 (pt)
WO (1) WO2020104999A1 (pt)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11765109B2 (en) 2020-06-09 2023-09-19 Jpmorgan Chase Bank, N.A. Method and system for providing resiliency in interaction servicing across data centers
CN111736834B (zh) * 2020-06-24 2023-05-30 全球能源互联网研究院有限公司 一种基于dsl的用户界面生成方法、装置及存储介质
US20220391268A1 (en) * 2021-05-28 2022-12-08 Roku, Inc. Cloud Computation for Applications on Media Devices
CN114116124A (zh) * 2021-11-10 2022-03-01 支付宝(杭州)信息技术有限公司 一种云容器及基于云容器的人机交互方法和装置
EP4184923A1 (en) * 2021-11-18 2023-05-24 Synamedia Limited Systems, devices, and methods for selecting tv user interface transitions
US11968426B2 (en) 2021-11-18 2024-04-23 Synamedia Limited Systems, devices, and methods for selecting TV user interface transitions
US20230236849A1 (en) * 2022-01-26 2023-07-27 Oracle International Corporation Enterprise application runtime customization and release management
CN114466401B (zh) * 2022-03-02 2024-03-22 北京新氧科技有限公司 图像传输方法和电子设备
US20230409194A1 (en) * 2022-05-17 2023-12-21 Apple Inc. Systems and methods for remote interaction between electronic devices
US20230376236A1 (en) * 2022-05-19 2023-11-23 Oracle International Corporation Systems and methods for client-server connection abstraction in a server computing environment
CN118210997A (zh) * 2024-05-20 2024-06-18 一网互通(北京)科技有限公司 React中长列表内容加载显示方法及装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117268A1 (en) * 2004-11-30 2006-06-01 Micheal Talley System and method for graphical element selection for region of interest compression
US8627344B2 (en) * 2004-12-15 2014-01-07 Siebel Systems, Inc. Methods and apparatuses for user interface management
US7861213B2 (en) * 2006-09-05 2010-12-28 Oracle International Corporation Mechanism for developing AJax applications using java swing framework and method for using the same
CA2675393A1 (en) * 2007-01-16 2008-07-24 Gizmox Ltd. Method and system for creating it-oriented server-based web applications
US8683490B2 (en) * 2007-02-15 2014-03-25 Microsoft Corporation Computer system events interface
US20110067059A1 (en) * 2009-09-15 2011-03-17 At&T Intellectual Property I, L.P. Media control
US20120317488A1 (en) * 2011-06-13 2012-12-13 Microsoft Corporation Techniques for adapting an interpretive run time application to multiple clients
US10353718B2 (en) * 2012-07-23 2019-07-16 Vmware, Inc. Providing access to a remote application via a web client
CN104182117B (zh) * 2013-05-24 2017-10-20 中国电信股份有限公司 使信息结构扁平化的人机交互方法和装置
US9218267B1 (en) * 2013-08-14 2015-12-22 Amazon Technologies, Inc. Page rendering feedback
KR102247892B1 (ko) * 2014-12-02 2021-05-04 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 시스템, 어플리케이션 코드를 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US10419568B2 (en) * 2016-04-01 2019-09-17 Microsoft Technology Licensing, Llc Manipulation of browser DOM on server
US11036344B1 (en) * 2016-09-13 2021-06-15 Parallels International Gmbh Managing application windows of applications from different servers within a same browser window on a user device
CN107122175B (zh) * 2017-03-30 2018-11-09 腾讯科技(深圳)有限公司 界面生成方法及装置
CN107315792B (zh) * 2017-06-14 2020-06-02 北京小米移动软件有限公司 页面更新方法、装置、电子设备和计算机可读存储介质
KR102340199B1 (ko) * 2017-06-14 2021-12-16 삼성전자주식회사 영상 표시 장치 및 그 동작방법
CN108037966A (zh) * 2017-11-10 2018-05-15 维沃移动通信有限公司 一种界面显示方法、装置及移动终端
US10043255B1 (en) * 2018-02-20 2018-08-07 Capital One Services, Llc Utilizing a machine learning model to automatically visually validate a user interface for multiple platforms
US11196748B1 (en) * 2018-06-13 2021-12-07 Amazon Technologies, Inc. Directory proxy for accessing remote domains

Also Published As

Publication number Publication date
US20230362430A1 (en) 2023-11-09
CN113168337A (zh) 2021-07-23
EP3884381A1 (en) 2021-09-29
WO2020104999A1 (en) 2020-05-28
US11683554B2 (en) 2023-06-20
CA3120826A1 (en) 2020-05-28
US20210409810A1 (en) 2021-12-30
AU2019383041B2 (en) 2024-05-23
AU2019383041A1 (en) 2021-07-08

Similar Documents

Publication Publication Date Title
BR112021009629A2 (pt) método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória
US10298721B2 (en) Method and system to determine a work distribution model for an application deployed on a cloud
US8621069B1 (en) Provisioning a computing application executing on a cloud to a client device
EP4021000A1 (en) Video playback method, device, apparatus, and storage medium
US20160191627A1 (en) Method and apparatus for execution of applications in a cloud system
US9465572B2 (en) Dynamic server-side image sizing for fidelity improvements
JP6598848B2 (ja) 複数のデバイスにおけるコンピューティング環境の提示
JP2015515660A (ja) ゲートウェイサーバ又はサービスを介してクラウドコンピューティングサービスストレージにアクセスする複数の媒体装置
US20210392386A1 (en) Data model for representation and streaming of heterogeneous immersive media
US9906626B2 (en) Resource demand-based network page generation
KR20160022362A (ko) 상태 정보를 위한 동기화 지점
Zorrilla et al. HTML5-based system for interoperable 3D digital home applications
CN114268796A (zh) 视频流处理的方法及装置
US11758016B2 (en) Hosted application as web widget toolkit
CN114296855A (zh) 用户界面的状态管理方法、装置、电子设备及存储介质
Tamm et al. Plugin free remote visualization in the browser
US20130046820A1 (en) Manipulaton of an Inventory of Content Items on a Mobile Device by a Network-Based Application
US11995789B2 (en) System and method of creating, hosting, and accessing virtual reality projects
CN116112573B (zh) 终端界面转换方法、装置、设备、存储介质和程序产品
US20210281629A1 (en) Processing of web-based applications
CN109358877A (zh) 一种用于对用户设备中应用进行升级的方法与设备
WO2023144841A1 (en) Method &amp; system for offline casting
CN118138787A (zh) 一种直播多开方法、装置、终端设备及存储介质
CN117608704A (zh) 一种声明式的组件接口参数获取方法及其系统
CN116483495A (zh) 显示控制方法、装置、电子设备及计算机可读存储介质