BR112020024441A2 - método, dispositivo de computação local e mídia legível por computador não transitória para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede - Google Patents

método, dispositivo de computação local e mídia legível por computador não transitória para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede Download PDF

Info

Publication number
BR112020024441A2
BR112020024441A2 BR112020024441-4A BR112020024441A BR112020024441A2 BR 112020024441 A2 BR112020024441 A2 BR 112020024441A2 BR 112020024441 A BR112020024441 A BR 112020024441A BR 112020024441 A2 BR112020024441 A2 BR 112020024441A2
Authority
BR
Brazil
Prior art keywords
local
computing device
local computing
desktop
interface
Prior art date
Application number
BR112020024441-4A
Other languages
English (en)
Inventor
Marco Valerio Masi
Cristiano Fumagalli
Original Assignee
Re Mago Ltd
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
Priority claimed from US15/995,878 external-priority patent/US11412012B2/en
Application filed by Re Mago Ltd filed Critical Re Mago Ltd
Publication of BR112020024441A2 publication Critical patent/BR112020024441A2/pt

Links

Classifications

    • 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/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

MÉTODO, DISPOSITIVO DE COMPUTAÇÃO LOCAL E MÍDIA LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIA PARA COMPARTILHAMENTO DE ÁREA DE TRABALHO ATRAVÉS DE UMA CONEXÃO DE SOQUETE DA WEB EM UM ESPAÇO DE TRABALHO DE COLABORAÇÃO EM REDE, incluindo transmitir uma representação de um espaço de trabalho de colaboração hospedado em um servidor e acessível aos participantes através de uma conexão de soquete da web, receber uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local de um dispositivo de computação local dentro do espaço de trabalho de colaboração e uma seleção de uma área dentro da representação do espaço de trabalho de colaboração, gerar um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local e transmitir um ou mais comandos para o servidor através da conexão de soquete da web, os um ou mais comandos compreendendo o objeto de transmissão contínua e informações correspondentes à área selecionada e sendo configurados para fazer com que o servidor insira o objeto de transmissão contínua no espaço de trabalho de colaboração na área selecionada.

Description

MÉTODO, DISPOSITIVO DE COMPUTAÇÃO LOCAL E MÍDIA LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIA PARA COMPARTILHAMENTO DE ÁREA DE TRABALHO ATRAVÉS DE UMA CONEXÃO DE SOQUETE DA WEB EM UM ESPAÇO DE TRABALHO DE COLABORAÇÃO EM REDE ANTECEDENTES
[0001] Sistemas operacionais e aplicativos em execução dentro de sistemas operacionais frequentemente fazem uso de dispositivos de hardware externos para permitir que usuários forneçam entrada ao programa e para que seja fornecida saída aos usuários. Exemplos comuns de dispositivos de hardware externos incluem um teclado, um mouse de computador, um microfone e alto-falantes externos. Esses dispositivos de hardware externos fazem interface com o sistema operacional através do uso de drivers, que são programas de software especializados configurados para fazer interface entre os comandos de hardware usados por um dispositivo de hardware particular e o sistema operacional.
[0002] Aplicativos serão algumas vezes projetados para fazer interface com determinados dispositivos de hardware. Por exemplo, um aplicativo de processamento de palavra de voz para texto pode ser projetado para fazer interface com um headset de áudio que inclui um microfone. Nesse caso, o aplicativo precisa ser especificamente configurado para receber comandos de voz, realizar reconhecimento de voz, converter as palavras reconhecidas em conteúdo textual, e emitir o conteúdo textual em um documento. Essa funcionalidade será tipicamente incorporada na Interface de Programação de Aplicativo (API) do aplicativo, que é um conjunto de métodos definidos de comunicação entre vários componentes de software. No exemplo do aplicativo de reconhecimento de voz, a API pode incluir uma interface entre o programa aplicativo e software em um driver que é responsável por fazer interface com o próprio dispositivo de hardware (o microfone).
[0003] Um problema com softwares existentes que fazem uso de dispositivos de hardware especializados é que o próprio software de aplicativo ou de sistema operacional precisa ser customizado e especialmente projetado de modo a utilizar o dispositivo de hardware. Essa customização significa que o dispositivo de hardware não pode exceder o escopo definido para ele pelo aplicativo e não pode ser utilizado para contextos fora do aplicativo específico para o qual ele foi projetado para ser usado. Por exemplo, um usuário do aplicativo de processamento de palavra de voz para texto não poderia manipular outros programas aplicativos ou outros componentes dentro do sistema operacional com uso de comandos de voz a menos que aqueles outros programas aplicativos ou o sistema operacional tenham sido especificamente projetados para fazer uso de comandos de voz recebidos através do microfone.
[0004] A Fig. 1 ilustra um exemplo da arquitetura existente de sistemas que fazem uso de dispositivos de hardware acoplados para entrada de usuário. O sistema operacional 100A da Figura 1 inclui executar os aplicativos 101A e 102A, cada um dos quais tendo suas próprias APIs, 101B e 102B, respectivamente. O sistema operacional 100A também tem sua própria API 100B, assim como drivers especializados 100C, 101C, e 102C, configurados para fazer interface com os dispositivos de hardware 100D, 101D e 102D.
[0005] Conforme mostrado na Fig. 1, a API de aplicativo 101B é configurada para fazer interface com o driver 101C que, por sua vez, faz interface com o dispositivo de hardware 101D. De modo similar, a API de aplicativo 102B é configurada para fazer interface com o driver 102C que, por sua vez, faz interface com o dispositivo de hardware 102D. No nível de sistema operacional, a API de sistema operacional 100B é configurada para fazer interface com o driver 100C, que, por sua vez, faz interface com dispositivo de hardware 100D.
[0006] A arquitetura do sistema mostrado na Fig. 1 limita a capacidade de usuários de utilizar dispositivos de hardware fora de determinados contextos de aplicativo ou sistema operacional. Por exemplo, um usuário não poderia utilizar o dispositivo de hardware 101D para fornecer entrada ao aplicativo 102A e não poderia utilizar dispositivo de hardware 102D para fornecer entrada ao aplicativo 101A ou ao sistema operacional 100A.
[0007] Consequentemente, aprimoramentos são necessários em interfaces de hardware-software que permitam a utilização de dispositivos de hardware em múltiplos contextos de software.
BREVE DESCRIÇÃO DOS DESENHOS
[0008] A Fig. 1 ilustra um exemplo da arquitetura existente de sistemas que fazem uso de dispositivos de hardware acoplados para entrada de usuário.
[0009] A Fig. 2 ilustra a arquitetura de um sistema que utiliza a interface de hardware- software universal de acordo com uma modalidade exemplificativa.
[0010] A Fig. 3 ilustra um fluxograma para implementação de uma interface de hardware- software universal de acordo com uma modalidade exemplificativa.
[0011] A Fig. 4 ilustra um fluxograma para determinar uma entrada de usuário com base, pelo menos em parte, em informações capturadas por um ou mais dispositivos de hardware acoplados de modo comunicativo ao sistema quando as informações capturadas pelo um ou mais dispositivos de hardware compreendem uma ou mais imagens de acordo com uma modalidade exemplificativa.
[0012] A Fig. 5A ilustra um exemplo de reconhecimento de objeto de acordo com uma modalidade exemplificativa.
[0013] A Fig. 5B ilustra um exemplo de determinação de coordenadas de localização de entrada de acordo com uma modalidade exemplificativa.
[0014] A Fig. 6 ilustra um fluxograma para determinar uma entrada de usuário com base, pelo menos em parte, em informações capturadas por um ou mais dispositivos de hardware acoplados de modo comunicativo ao sistema quando as informações capturadas são informações de som de acordo com uma modalidade exemplificativa.
[0015] A Fig. 7 ilustra uma interface de ferramenta que pode ser parte da camada transparente de acordo com uma modalidade exemplificativa.
[0016] A Fig. 8 ilustra um exemplo de uma caneta stylus que pode ser parte do sistema de acordo com uma modalidade exemplificativa.
[0017] A Fig. 9 ilustra um fluxograma para identificar um contexto correspondente à entrada de usuário de acordo com uma modalidade exemplificativa.
[0018] A Fig. 10 ilustra um exemplo de uso das coordenadas de entrada para determinar um contexto de acordo com uma modalidade exemplificativa.
[0019] A Fig. 11 ilustra um fluxograma para converter entrada de usuário em comandos de camada transparente de acordo com uma modalidade exemplificativa.
[0020] A Fig. 12A ilustra um exemplo de recebimento de coordenadas de entrada quando o modo de seleção é alternado de acordo com uma modalidade exemplificativa.
[0021] A Fig. 12B ilustra um exemplo de recebimento de coordenadas de entrada quando o modo de apontamento é alternado de acordo com uma modalidade exemplificativa.
[0022] A Fig. 12C ilustra um exemplo de recebimento de coordenadas de entrada quando o modo de desenho é alternado de acordo com uma modalidade exemplificativa.
[0023] A Fig. 13 ilustra um exemplo de um comando de camada transparente determinado com base em uma ou mais palavras identificadas em dados de voz de entrada de acordo com uma modalidade exemplificativa.
[0024] A Fig. 14 ilustra outro exemplo de um comando de camada transparente determinado com base em uma ou mais palavras identificadas em dados de voz de entrada de acordo com uma modalidade exemplificativa.
[0025] A Fig. 15 ilustra um fluxograma para executar os um ou mais comandos de camada transparente na camada transparente de acordo com uma modalidade exemplificativa.
[0026] A Fig. 16 ilustra uma interface exemplificativa para adicionar novos comandos correspondentes à entrada de usuário de acordo com uma modalidade exemplificativa.
[0027] A Fig. 17 ilustra vários componentes e opções de uma interface de desenho e modo de desenho de acordo com uma modalidade exemplificativa.
[0028] A Fig. 18 ilustra uma interface de calibração e configurações para um dispositivo de hardware de câmera de vídeo que é usado para reconhecer objetos e permite que um usuário forneça entrada com uso de toque e gestos de acordo com uma modalidade exemplificativa.
[0029] A Fig. 19 ilustra uma interface de configurações gerais que permite que um usuário customize vários aspectos da interface, alterne modos de entrada, e realize outras mudanças de acordo com uma modalidade exemplificativa.
[0030] A Fig. 20 ilustra um fluxograma para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede de acordo com uma modalidade exemplificativa.
[0031] A Fig. 21A ilustra a arquitetura de rede usada para hospedar e transmitir espaço de trabalho de colaboração de acordo com uma modalidade exemplificativa.
[0032] A Fig. 21B ilustra o processo para propagar edições ao espaço de trabalho de colaboração dentro da rede de acordo com uma modalidade exemplificativa.
[0033] A Fig. 22 ilustra múltiplas representações de um espaço de trabalho de colaboração de acordo com uma modalidade exemplificativa.
[0034] A Fig. 23A ilustra um exemplo da interface de usuário (área de trabalho) de um dispositivo de computação local antes de receber a solicitação e a seleção de uma área de acordo com uma modalidade exemplificativa.
[0035] A Fig. 23B ilustra um exemplo da interface de usuário (área de trabalho) do dispositivo de computação local após receber a solicitação e antes da seleção de uma área de acordo com uma modalidade exemplificativa.
[0036] As Figs. 24A a 24C ilustram um exemplo do processo de seleção de fonte de acordo com uma modalidade exemplificativa.
[0037] A Fig. 25 ilustra um fluxograma para gerar um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo de pelo menos uma porção da área de trabalho local do dispositivo de computação local de acordo com uma modalidade exemplificativa.
[0038] A Fig. 26 ilustra o processo de envio dos comandos do dispositivo de computação local e propagação do objeto de transmissão contínua de acordo com uma modalidade exemplificativa.
[0039] A Fig. 27 ilustra um exemplo da interface do dispositivo de computação local depois que o servidor incorpora o objeto de transmissão contínua dentro do espaço de trabalho de colaboração de acordo com uma modalidade exemplificativa.
[0040] A Fig. 28 ilustra um fluxograma para controlar uma área de trabalho ou parte de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação local de acordo com uma modalidade exemplificativa.
[0041] As Figs. 29A a 29C ilustram um exemplo de controle de uma área de trabalho ou porção de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação remoto de acordo com uma modalidade exemplificativa.
[0042] A Fig. 30 ilustra um fluxograma para controlar uma área de trabalho ou parte de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação remoto de acordo com uma modalidade exemplificativa.
[0043] As Figs. 31A a 31C ilustram um exemplo de controle de uma área de trabalho ou porção de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação remoto de acordo com uma modalidade exemplificativa.
[0044] A Fig. 32 ilustra um ambiente de computação exemplificador configurado para realizar os métodos revelados.
DESCRIÇÃO DETALHADA
[0045] Embora métodos, aparelhos e mídias legíveis por computador sejam descritos no presente documento a título de exemplos e modalidades, aqueles versados na técnica reconhecem que métodos, aparelhos e mídias legíveis por computador para implementação de uma interface de hardware-software universal não são limitados às modalidades ou figuras descritas. Deve-se entender que as figuras e descrição não são destinadas a serem limitadas à forma particular revelada. Em vez disso, a intenção é cobrir todas as modificações, equivalentes e alternativas que estejam dentro do espírito e escopo das reivindicações anexas. Quaisquer títulos usados no presente documento são para propósitos organizacionais somente e não se destinam a limitar o escopo da descrição ou as reivindicações. Conforme usada no presente documento, a palavra “pode” é usada em um sentido permissivo (isto é, significando ter o potencial de) em vez de no sentido obrigatório (isto é, significando deve). De modo similar, as palavras “incluem”, “incluir” e “inclui” significam incluindo, mas sem limitação.
[0046] A depositante concebeu um método, aparelho e meio legível por computador que soluciona os problemas associados a interfaces de hardware-software anteriores usados para dispositivos de hardware. Em particular, a depositante concebeu uma interface de hardware-software universal que permite que usuários utilizem dispositivos de hardware acoplados de modo comunicativo em uma variedade de contextos de software. A implementação revelada elimina a necessidade de aplicativos ou sistemas operacionais serem projetados de modo personalizado para fazer interface com um dispositivo de hardware particular através do uso de um driver virtual especializado e uma camada transparente correspondente, conforme é descrito abaixo em mais detalhes.
[0047] A Fig. 2 ilustra a arquitetura de um sistema que utiliza a interface de hardware- software universal de acordo com uma modalidade exemplificativa. Conforme mostrado na Fig. 2, o sistema operacional 200A inclui uma camada transparente 203 que se comunica com um driver virtual 204. Conforme será explicado em mais detalhes abaixo, a camada transparente 203 é uma API configurada para fazer interface entre um driver virtual e um sistema operacional e/ou aplicativo(s) em execução no sistema operacional. Nesse exemplo, a camada transparente 203 faz interface entre o driver virtual 204 e a API 201B do aplicativo 201A, a API 202B do aplicativo 202A e a API de sistema operacional 200B do sistema operacional 200A.
[0048] A camada transparente 203 pode ser parte de um processo de software em execução no sistema operacional e pode ter seus próprios elementos de interface de usuário (UI), incluindo uma UI transparente sobreposta a uma interface de usuário subjacente e/ou elementos de UI visíveis com os quais um usuário pode interagir.
[0049] O driver virtual 204 é configurado para emular os dispositivos 205A e 205B, que fazem interface com os dispositivos de hardware 206A e 206B, respectivamente. O driver virtual pode receber entrada de usuário que instrui o driver virtual em qual driver virtual emular, por exemplo, na forma de um comando de voz, de uma seleção realizada em uma interface de usuário, e/ou de um gesto realizado pelo usuário na frente de uma câmera web acoplada. Por exemplo, cada um dos dispositivos de hardware conectados pode operar em um modo de "escuta" e cada um dos dispositivos emulados no driver virtual 204 pode ser configurado para detectar um sinal de inicialização que serve como um sinal ao driver virtual para comutar para um modo de emulação particular. Por exemplo, um usuário que que afirma “começar comandos de voz” pode ativar o driver correspondente a um microfone para receber um novo comando de voz. De modo similar, um usuário que proporciona um determinado gesto pode ativar o driver correspondente a uma câmera web para receber entrada de gesto ou entrada de toque.
[0050] O driver virtual também pode ser configurado para fazer interface com um driver nativo, tal como driver nativo 205C, que, por sua vez, comunica-se com o dispositivo de hardware 206C. Em um exemplo, o dispositivo de hardware 206C pode ser um dispositivo de entrada padrão, tal como um teclado ou um mouse, que é suportado de modo nativo pelo sistema operacional.
[0051] O sistema mostrado na Fig. 2 permite a implementação de uma interface de hardware-software universal na qual usuários podem utilizar qualquer dispositivo de hardware acoplado em uma variedade de contextos, tal como um aplicativo particular ou o sistema operacional, sem precisar que o aplicativo ou o sistema operacional seja customizado para fazer interface com o dispositivo de hardware.
[0052] Por exemplo, o dispositivo de hardware 206A pode capturar informações que são então recebidas pelo driver virtual 204 que emula o driver 205A. O driver virtual 204 pode determinar uma entrada de usuário com base nas informações capturadas. Por exemplo, se as informações são uma série de imagens de um usuário movendo sua mão, o driver virtual pode determinar que o usuário realizou um gesto.
[0053] Com base em um contexto identificado (tal como um aplicativo particular ou o sistema operacional), a entrada de usuário pode ser convertida em um comando de camada transparente e transmitido à camada transparente 203 para execução. O comando de camada transparente pode incluir comandos nativos no contexto identificado. Por exemplo, se o contexto identificado for o aplicativo 201A, então os comandos nativos estariam em um formato que é compatível com a API de aplicativo 201B do aplicativo 201A. A execução do comando de camada transparente pode ser então configurada para causar a execução de um ou mais comandos nativos no contexto identificado. Isso é realizado pela camada transparente 203 interfaceando com cada uma das APIs dos aplicativos em execução no sistema operacional 200ª, assim como com a API de sistema operacional 200B. Por exemplo, se o comando nativo é um comando de sistema operacional, tal como um comando para inicializar um novo programa, então a camada transparente 203 pode fornecer esse comando nativo à API de sistema operacional 200B para execução.
[0054] Conforme mostrado na Fig. 2, há comunicação bidirecional entre todos os componentes mostrados. Isso significa, por exemplo, que a execução de um comando de camada transparente na camada transparente 203 pode resultar em transmissão de informações ao driver virtual 204 e assim por diante a um dos dispositivos de hardware conectados. Por exemplo, depois que um comando de voz é reconhecido como entrada, convertido em um comando de camada transparente que inclui um comando nativo, e executado pela camada transparente (resultando em execução do comando nativo no contexto identificado), um sinal pode ser enviado da camada transparente a um alto- falante (por meio do driver virtual) para transmitir a saída de som “comando recebido”.
[0055] Evidentemente, a arquitetura mostrada na Fig. 2 é para o propósito de explicação somente, e deve-se entender que o número de aplicativos em execução, o número e tipos de dispositivos de hardware conectados, o número de drivers e dispositivos emulados pode variar.
[0056] A Fig. 3 ilustra um fluxograma para implementação de uma interface de hardware- software universal de acordo com uma modalidade exemplificativa.
[0057] Na etapa 301 uma entrada de usuário é determinada com base, pelo menos em parte, em informações capturadas por um ou mais dispositivos de hardware acoplados de modo comunicativo ao sistema. O sistema, conforme usado no presente documento, pode se referir a um ou mais dispositivos de computação que executam as etapas do método, um aparelho que compreende um ou mais processadores e uma ou mais memórias que executam as etapas do método, ou qualquer outro sistema de computação.
[0058] A entrada de usuário pode ser determinada por um driver virtual em execução no sistema. Conforme discutido anteriormente, o driver virtual pode estar em operação em um modo de emulação no qual o mesmo está emulando outros dispositivos de hardware e recebendo assim as informações capturadas de um dispositivo de hardware ou pode receber opcionalmente as informações capturadas de um ou mais outros drivers de hardware que são configurados para fazer interface com um dispositivo de hardware particular.
[0059] Uma variedade de dispositivos de hardware pode ser utilizada, tais como uma câmera, uma câmera de vídeo, um microfone, um headset tendo comunicação bidirecional, um mouse, um teclado tipo touchpad, um teclado tipo trackpad, um controlador, um game pad, um joystick, uma tela sensível ao toque, um dispositivo de captura de movimento incluindo acelerômetros e/ou sensores de inclinação, um controle remoto, uma caneta stylus, ou qualquer combinação desses dispositivos. Evidentemente, essa lista de dispositivos de hardware é fornecida a título de exemplo somente, e qualquer dispositivo de hardware que possa ser utilizado para detectar voz, imagem, vídeo, ou informações de toque pode ser utilizado.
[0060] O acoplamento comunicativo entre os dispositivos de hardware e o sistema pode tomar uma variedade de formas. Por exemplo, o dispositivo de hardware pode se comunicar com o sistema por meio de uma rede sem fio, protocolo Bluetooth, frequência de rádio, sinais de infravermelho e/ou por uma conexão física, tal como uma conexão de Barramento em Série Universal (USB). A comunicação também pode incluir tanto comunicações sem fio quanto comunicações com fio. Por exemplo, um dispositivo de hardware pode incluir dois componentes, um dos quais sem fio (tal como através de Bluetooth) transmite sinais a um segundo componente que, por sua vez, conecta-se ao sistema por meio de uma conexão com fio (tal como USB). Uma variedade de técnicas de comunicação pode ser utilizada de acordo com o sistema descrito no presente documento, e esses exemplos não são destinados a serem limitadores.
[0061] As informações capturadas pelos um ou mais dispositivos de hardware pode ser qualquer tipo de informações, tais como informações de imagem incluindo uma ou mais imagens, quadros de um vídeo, informações de som e/ou informações de toque. As informações capturadas podem estar em qualquer formato adequado, tais como arquivos .wav ou .mp3 para informações de som, arquivos .jpeg para imagens, coordenadas numéricas para informações de toque etc.
[0062] As técnicas descritas no presente documento podem permitir que qualquer dispositivo de exibição funcione de modo eficaz como um dispositivo de tela "sensível ao toque" em qualquer contexto, mesmo se o dispositivo de exibição não inclui nenhum hardware para detectar sinais de toque ou gestos baseados em toque. Isso é descrito em mais detalhes abaixo e pode ser realizado através da análise de imagens capturadas por uma câmera ou uma câmera de vídeo.
[0063] A Fig. 4 ilustra um fluxograma para determinar uma entrada de usuário com base, pelo menos em parte, em informações capturadas por um ou mais dispositivos de hardware acoplados de modo comunicativo ao sistema quando as informações capturadas pelos um ou mais dispositivos de hardware compreendem uma ou mais imagens.
[0064] Na etapa 401 uma ou mais imagens são recebidas. Essas imagens podem ser capturadas por um dispositivo de hardware, tal como uma câmera ou câmera de vídeo, e podem ser recebidas pelo driver virtual, conforme discutido anteriormente.
[0065] Na etapa 402 um objeto nas uma ou mais imagens é reconhecido. O objeto pode ser, por exemplo, uma mão, um dedo ou outra parte do corpo de um usuário. O objeto também pode ser um dispositivo de propósito especial, tal como uma caneta stylus ou uma caneta, ou um dispositivo de hardware de propósito especial, tal como uma caneta stylus de rastreamento de movimento/controle remoto que é acoplado de modo comunicativo ao sistema e que contém acelerômetros e/ou sensores de inclinação. O reconhecimento de objetos pode ser realizado pelo driver virtual, podendo ser baseado em treinamento anterior, tal como através de uma rotina de calibração executada com uso do objeto.
[0066] A Fig. 5A ilustra um exemplo de reconhecimento de objetos de acordo com uma modalidade exemplificativa. Conforme mostrado na Fig. 5A, a imagem 501 inclui uma mão do usuário que foi reconhecida como objeto 502. O algoritmo de reconhecimento poderia ser evidentemente configurado para reconhecer um objeto diferente, tal como um dedo.
[0067] Retornando à Fig. 4, na etapa 403 uma ou mais orientações e uma ou mais posições do objeto reconhecido são determinadas. Isso pode ser realizado de várias formas. Se o objeto não for um dispositivo de hardware e for, em vez disso, uma parte do corpo, tal como uma mão ou um dedo, o objeto pode ser mapeado em um sistema de coordenadas tridimensional com uso de uma localização conhecida da câmera como um ponto de referência para determinar as coordenadas tridimensionais do objeto e os vários ângulos relativos aos eixos X, Y, e Z. Se o objeto for um dispositivo de hardware e incluir hardware de rastreamento de movimento, tal como um acelerômetro e/ou sensores de inclinação, então as informações de imagem podem ser usadas em conjunto com as informações indicadas pelo acelerômetro e/ou sensores de inclinação para determinar as posições e orientações do objeto.
[0068] Na etapa 404 a entrada de usuário é determinada com base, pelo menos em parte, nas uma ou mais orientações e nas uma ou mais posições do objeto reconhecido. Isso pode incluir determinar coordenadas de localização em uma interface de usuário (UI) transparente da camada transparente com base, pelo menos em parte, nas uma ou mais orientações e nas uma ou mais posições. A UI transparente é parte da camada transparente e é sobreposta a uma UI subjacente correspondendo ao sistema operacional e/ou quaisquer aplicativos em execução no sistema operacional.
[0069] A Fig. 5B ilustra um exemplo dessa etapa quando o objeto é o dedo de um usuário. Conforme mostrado na Fig. 5B, o dispositivo de exibição 503 inclui uma UI subjacente 506 e uma UI transparente 507 sobrepostas sobre a UI subjacente 506. Para fins de clareza, a UI transparente 507 é mostrada com sombreamento de pontos, mas deve-se entender que, na prática, a UI transparente é uma camada transparente que não é visível ao usuário. Adicionalmente, a UI transparente 507 é mostrada como ligeiramente menor do que a UI subjacente 506, mas deve-se entender que, na prática, a UI transparente cobriria a mesma área de tela que a UI subjacente.
[0070] Conforme mostrado na Fig. 5B, as informações de posição e orientação do objeto (o dedo do usuário) são usadas para projetar uma linha no plano do dispositivo de exibição 503 e determinar um ponto de interseção 505. As informações de imagem capturadas pela câmera 504 e a posição conhecida do dispositivo de exibição 503 sob a câmera podem ser usadas para auxiliar nessa projeção. Conforme mostrado na Fig. 5B, a entrada de usuário é determinada como sendo coordenadas de entrada no ponto de interseção 505.
[0071] Conforme será discutido adicionalmente abaixo, o comando real de camada transparente que é gerado com base nessa entrada pode ser baseado nas configurações de usuário e/ou em um contexto identificado. Por exemplo, o comando pode ser um comando de toque que indica que um objeto nas coordenadas do ponto 505 deve ser selecionado e/ou aberto. O comando também pode ser um comando de apontamento que indica que um apontador (tal como um cursor de mouse) deve ser movido às coordenadas do ponto 505. Adicionalmente, o comando pode ser um comando de edição que modifica a saída gráfica na localização (tal como para anotar a interface ou desenhar um elemento).
[0072] Embora a Fig. 5B mostre o objeto reconhecido 502 como estando a alguma distância do dispositivo de exibição 503, uma entrada de toque pode ser detectada independentemente da distância. Por exemplo, se o usuário tivesse que tocar fisicamente o dispositivo de exibição 503, a técnica descrita acima ainda determinaria as coordenadas de entrada. Nesse caso, a linha de projeção entre o objeto 502 e o ponto de interseção seria apenas mais curta.
[0073] Evidentemente, entradas de toque não são o único tipo de entrada de usuário que pode ser determinado a partir de imagens capturadas. A etapa de determinar uma entrada de usuário com base, pelo menos em parte, nas uma ou mais orientações e nas uma ou mais posições do objeto reconhecido pode incluir determinar a entrada de gesto. Em particular, as posições e orientações de um objeto reconhecido através de múltiplas imagens poderiam ser analisadas para determinar um gesto correspondente, tal como um gesto de passar, um gesto de aperto e/ou qualquer gesto conhecido ou personalizado. O usuário pode calibrar o driver virtual para reconhecer gestos personalizados que são mapeados a contextos e comandos específicos dentro daqueles contextos. Por exemplo, o usuário pode criar um gesto personalizado que é mapeado a um contexto de sistema operacional e resulta na execução de um comando nativo de sistema operacional que lança um aplicativo particular.
[0074] Conforme discutido anteriormente, as informações capturadas pelos um ou mais dispositivos de hardware na etapa 301 da Fig. 3 também podem incluir informações de som capturadas por um microfone. A Fig. 6 ilustra um fluxograma para determinar uma entrada de usuário com base, pelo menos em parte, em informações capturadas por um ou mais dispositivos de hardware acoplados de modo comunicativo ao sistema quando as informações capturadas são informações de som. Conforme discutido abaixo, o reconhecimento de voz é realizado nas informações de som para identificar uma ou mais palavras correspondentes à entrada de usuário.
[0075] Na etapa 601 os dados de som são recebidos. Os dados de som podem ser capturados por um dispositivo de hardware, tal como um microfone, e recebidos pelo driver virtual, conforme discutido acima. Na etapa 602 os dados de som recebidos podem ser comparados a um dicionário de som. O dicionário de som pode incluir assinaturas de som de uma ou mais palavras reconhecidas, tais como palavras de comando ou modificadores de comando. Na etapa 603 uma ou mais palavras nos dados de som são identificadas como a entrada de usuário com base na comparação. As uma ou mais palavras identificadas podem ser então convertidas em comandos de camada transparente e passados à camada transparente.
[0076] Conforme discutido anteriormente, o driver emulado pelo driver virtual, o tipo de entrada de usuário esperado, e o comando gerado com base na entrada de usuário podem ser, todos, determinados com base, pelo menos em parte, em uma ou mais configurações ou entradas de usuário anteriores.
[0077] A Fig. 7 ilustra uma interface de ferramenta 701 que também pode ser parte da camada transparente. Diferentemente da UI transparente, a interface de ferramenta 701 é visível ao usuário e pode ser usada para selecionar entre diferentes opções que alteram o modo de emulação do driver virtual, os comandos nativos gerados com base na entrada de usuário, ou realizar funções adicionais.
[0078] O botão 701A permite que um usuário selecione o tipo de ferramenta de desenho usada para modificar graficamente a interface de usuário quando a entrada de usuário são coordenadas de entrada (tais como coordenadas baseadas em um usuário tocando a tela com sua mão ou uma caneta stylus/controle remoto). As várias ferramentas de desenho podem incluir diferentes pincéis, cores, canetas, marcadores etc. Essas ferramentas podem resultar em alterações gráficas de variados estilos, espessuras, cores etc.
[0079] O botão 701B permite que o usuário comute entre modos de seleção, de apontamento ou de desenho quando coordenadas de entrada são recebidas como entrada de usuário. Em um modo de seleção, as coordenadas de entrada podem ser processadas como um “toque” e resulta na seleção ou abertura de um objeto nas coordenadas de entrada. No modo de apontamento, as coordenadas podem ser processadas como uma posição de apontador (tal como um cursor de mouse), permitindo de modo eficaz que o usuário emule um mouse. No modo de desenho, as coordenadas podem ser processadas como uma localização na qual alterar a saída gráfica da interface de usuário para apresentar a aparência de desenho ou escrita na interface de usuário. A natureza da alteração pode depender de uma ferramenta de desenho selecionada, conforme discutido em referência ao botão 701A. O botão 701B também pode alertar o driver virtual a esperar a entrada de imagem e/ou entrada de movimento (se um dispositivo de rastreamento de movimento for usado) e para emular os drivers apropriados apropriadamente.
[0080] O botão 701C alerta o driver virtual para esperar um comando de voz. Isso pode fazer com que o driver virtual emule dispositivos correspondentes a um microfone acoplado para receber entrada de voz e para analisar a entrada de voz conforme descrito em relação à Fig. 6.
[0081] O botão 701D abre um aplicativo inicializador que pode ser parte da camada transparente e pode ser usado para inicializar aplicativos dentro do sistema operacional ou para inicializar comandos específicos dentro de um aplicativo. O inicializador também pode ser usado para personalizar opções na camada transparente, tal como comandos de voz personalizados, gestos personalizados, comandos nativos personalizados para aplicativos associados à entrada de usuário e/ou para calibrar dispositivos de hardware e entradas de usuário (tal como calibração de voz, calibração de dispositivo de captura de movimento e/ou calibração de reconhecimento de objetos).
[0082] O botão 701E pode ser usado para capturar uma captura de tela da interface de usuário e para exportar a captura de tela como uma imagem. Isso pode ser usado em conjunto com o modo de desenho do botão 701B e as ferramentas de desenho de 701A. Depois que um usuário marcou uma interface de usuário particular, a versão marcada pode ser exportada como uma imagem.
[0083] O botão 701F também permite edição gráfica e pode ser usado para mudar a cor de um desenho ou aspectos de um desenho que o usuário está criando na interface de usuário. Similar ao modo de desenho do botão 701B, esse botão altera a natureza de uma alteração gráfica em coordenadas de entrada.
[0084] O botão 701G cancela um desenho na interface de usuário. A seleção desse botão pode remover todas as marcações gráficas na interface de usuário e retornar a UI subjacente ao estado em que se achava antes de o usuário criar um desenho.
[0085] O botão 701H pode ser usado para inicializar um aplicativo de quadro de comunicações que permite que um usuário crie um desenho ou escreva com uso do modo de desenho em um quadro de comunicações virtual.
[0086] O botão 701I pode ser usado para adicionar notas textuais a objetos, tais como objetos mostrados na UI de sistema operacional ou em uma UI de aplicativo. As notas textuais podem ser interpretadas a partir de sinais de voz ou digitadas pelo usuário com uso de um teclado.
[0087] O botão 701J pode ser usado para abrir ou fechar a interface de ferramenta 701. Quando fechada, a interface de ferramenta pode ser minimizada ou removida inteiramente da interface de usuário subjacente.
[0088] Conforme discutido anteriormente, uma caneta stylus ou um dispositivo de hardware remoto pode ser usado com o presente sistema, em conjunto com outros dispositivos de hardware, tais como uma câmera ou câmera de vídeo. A Fig. 8 ilustra um exemplo de uma caneta stylus 801 que pode ser usada com o sistema. A caneta stylus 801 pode se comunicar com um receptor de hardware 802, tal como através de Bluetooth. O receptor de hardware pode se conectar ao sistema de computador, tal como por meio da USB 802B e os sinais da caneta stylus passados ao sistema de computador por meio de receptor de hardware podem ser usados para controlar e interagir com o menu 803, que é similar à interface de ferramenta mostrada na Fig. 7.
[0089] Conforme mostrado na Fig. 8, a caneta stylus 801 pode incluir botões físicos 801A. Esses botões físicos 801A podem ser usados para acionar a caneta stylus, navegar pelo menu 803, e realizar seleções. Adicionalmente, a caneta stylus 801 pode incluir uma ponta distintiva 801B que é capturada em imagens por uma câmera e reconhecida pelo driver virtual. Isso pode permitir que a caneta stylus 801 seja usada para desenho e edição quando está modo de desenho. A caneta stylus 801 também pode incluir hardware de rastreamento de movimento, tal como um acelerômetro e/ou sensores de inclinação para auxiliar na detecção de posição quando a caneta stylus é usada para fornecer coordenadas de entrada ou gestos. Adicionalmente, o receptor de hardware 802 pode incluir um botão de calibração 802A, que, quando pressionado, pode inicializar uma utilidade de calibração na interface de usuário. Isso permite a calibração da caneta stylus.
[0090] Retornando à Fig. 3, na etapa 302 é identificado um contexto correspondente à entrada de usuário. O contexto identificado compreende um dentre um sistema operacional ou um aplicativo em execução no sistema operacional.
[0091] A Fig. 9 ilustra um fluxograma para identificar um contexto correspondente à entrada de usuário de acordo com uma modalidade exemplificativa. Conforme mostrado na Fig. 9, dados de sistema operacional 901, dados de aplicativo 902 e dados de entrada de usuário 903 podem ser todos usados para determinar um contexto 904.
[0092] Dados de sistema operacional 901 podem incluir, por exemplo, informações relacionadas a uma janela ativa no sistema operacional. Por exemplo, se a janela ativa for uma janela de calculadora, então o contexto pode ser determinado como um aplicativo de calculadora. De modo similar, se a janela ativa for uma janela do Microsoft Word, então o contexto pode ser determinado como o aplicativo Microsoft Word. Por outro lado, se a janela ativa for uma pasta de arquivos, então o contexto ativo pode ser determinado como o sistema operacional. Dados de sistema operacional também podem incluir informações adicionais, tais como quais aplicativos estão atualmente em execução, um último aplicativo inicializado, e quaisquer outras informações de sistema operacional que possam ser usadas para determinar contexto.
[0093] Dados de aplicativo 902 podem incluir, por exemplo, informações acerca de um ou mais aplicativos que estão em execução e/ou informações que mapeiam aplicativos particulares a determinados tipos de entrada de usuário. Por exemplo, um primeiro aplicativo pode ser mapeado para entrada de voz de modo que, sempre que um comando de voz é recebido, o contexto é automaticamente determinado como sendo o primeiro aplicativo. Em outro exemplo, um gesto particular pode ser associado a um segundo aplicativo, de modo que, quando esse gesto é recebido como entrada, o segundo aplicativo é inicializado ou fechado ou alguma ação dentro do segundo aplicativo é realizada.
[0094] A entrada de usuário 903 também pode ser usada para determinar o contexto de vários modos. Conforme discutido acima, determinados tipos de entrada de usuário podem ser mapeados a determinados aplicativos. No exemplo acima, a entrada de voz é associada a um contexto de um primeiro aplicativo. Adicionalmente, os atributos da entrada de usuário também podem ser usados para determinar um contexto. Gestos ou movimentos podem ser mapeados a aplicativos ou ao sistema operacional. Palavras específicas em comandos de voz também podem ser mapeadas a aplicativos ou ao sistema operacional. Coordenadas de entrada também podem ser usadas para determinar um contexto. Por exemplo, uma janela na interface de usuário na posição das coordenadas de entrada pode ser determinada e um aplicativo correspondente a essa janela pode ser determinado como o contexto.
[0095] A Fig. 10 ilustra um exemplo de uso das coordenadas de entrada para determinar um contexto. Conforme mostrado na Fig. 10, o dispositivo de exibição 1001 está exibindo uma interface de usuário 1002. É também mostrada uma câmera 1004 e camada transparente 1003 sobrepostas através da interface de usuário subjacente 1003. Um usuário utiliza uma caneta stylus 1000 para apontar a localização 1005 na interface de usuário 1002. Visto que a localização 1005 está dentro de uma janela de aplicativo correspondente ao Aplicativo 1, então o Aplicativo 1 pode ser determinado como sendo o contexto para a entrada de usuário, em oposição ao Aplicativo 2, ao Aplicativo 3, ou ao Sistema Operacional.
[0096] Retornando à Fig. 3, na etapa 303 a entrada de usuário é convertida em um ou mais comandos de camada transparente com base, pelo menos em parte, no contexto identificado. Conforme discutido anteriormente, a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface entre o driver virtual e o sistema operacional e/ou um aplicativo em execução no sistema operacional.
[0097] A Fig. 11 ilustra um fluxograma para converter entradas de usuário em comandos de camada transparente. Conforme mostrado na etapa 1104 da Fig. 11, o comando de camada transparente pode ser determinado com base, pelo menos em parte, no contexto identificado 1102 e na entrada de usuário 1103. O comando de camada transparente pode incluir um ou mais comandos nativos configurados para executar em um ou mais contextos correspondentes. O comando de camada transparente também pode incluir saídas de resposta a serem transmitidas ao driver virtual e ao(s) dispositivo(s) de hardware.
[0098] O contexto identificado 1102 pode ser usado para determinar qual comando de camada transparente deve ser mapeado à entrada de usuário. Por exemplo, se o contexto identificado for “sistema operacional”, então uma entrada de gesto de passar pode ser mapeada a um comando de camada transparente que resulta na rolagem de interface de usuário através de janelas atualmente abertas dentro do sistema operacional (minimizando-se uma janela aberta e maximizando-se uma próxima janela aberta). Alternativamente, se o contexto identificado for “aplicativo de navegação na web”, então a mesma entrada de gesto de passar pode ser mapeada a um comando de camada transparente que resulta em uma página da web sendo rolada.
[0099] A entrada de usuário 1103 também determina o comando de camada transparente desde que entradas de usuário sejam especificamente mapeadas a determinados comandos nativos dentro de um ou mais contextos e esses comandos nativos sejam parte do comando de camada transparente. Por exemplo, um comando de voz “Abrir Correio Eletrônico” pode ser mapeado a um comando nativo de sistema operacional específico para inicializar o aplicativo de correio eletrônico Outlook. Quando a entrada de voz é recebida incluindo as palavras reconhecidas “Abrir Correio Eletrônico,” isso resulta na determinação de um comando de camada transparente que inclui o comando nativo para inicializar o Outlook.
[0100] Conforme mostrado na Fig. 11, comandos de camada transparente também podem ser determinados com base em uma ou mais configurações de usuário 1101 e bibliotecas de API 1104. As bibliotecas de API 1104 podem ser usadas para consultar comandos nativos correspondentes a um contexto identificado e a uma entrada de usuário particular. No exemplo do gesto de passar e de um contexto de aplicativo de navegação na web, a biblioteca de API correspondente ao aplicativo de navegação na web pode ser consultada para as chamadas de API apropriadas para causar a rolagem de uma página da web. Alternativamente, as bibliotecas de API 1104 podem ser omitidas e comandos nativos podem ser mapeados direcionados a entradas de usuário particulares e contextos identificados.
[0101] Na situação em que a entrada de usuário é determinada como sendo coordenadas de entrada, o comando de camada transparente é determinado com base, pelo menos em parte, nas coordenadas de localização de entrada e no contexto identificado. Nesse caso, o comando de camada transparente pode incluir pelo menos um comando nativo no contexto identificado, o pelo menos um comando nativo sendo configurado para realizar uma ação nas coordenadas de localização correspondentes na UI subjacente.
[0102] Quando há mais do que uma ação possível mapeada a um contexto e entrada de usuário particulares, configurações 1101 podem ser usadas para determinar o comando de camada transparente correspondente. Por exemplo, o botão 701B da Fig. 7 permite que usuário selecione entre os modos de seleção, de apontamento ou de desenho quando coordenadas de entrada são recebidas como entrada de usuário. Essa configuração pode ser usada para determinar o comando de camada transparente e, por extensão, qual comando nativo é realizado e qual ação é realizada. Nesse caso, os possíveis comandos nativos podem incluir um comando de seleção configurado para selecionar um objeto associado às coordenadas de localização correspondentes na UI subjacente, um comando de apontador configurado para mover um apontador às coordenadas de localização correspondentes na UI subjacente e um comando gráfico configurado para alterar a saída de exibição nas coordenadas de localização correspondentes na UI subjacente.
[0103] A Fig. 12A ilustra um exemplo de recebimento de coordenadas de entrada quando o modo de seleção é alternado. Conforme mostrado na Fig. 12A, o usuário apontou a canela stylus 1200 na UI de sistema operacional 1202 (tendo a UI transparente sobreposta 1203) no dispositivo de exibição 1201. Similarmente aos exemplos anteriores, a câmera 1204 pode ser usada para determinar as informações de posição e orientação para a caneta stylus 1200 e as coordenadas de entrada. Visto que o modo de seleção é alternado e a caneta stylus 1200 é apontada na pasta 1205 dentro da UI de sistema operacional 1202, o comando de camada transparente determinado pode incluir um comando nativo de sistema operacional para selecionar um objeto associado às coordenadas de entrada (que, nesse caso, é a pasta 1205). Em outro exemplo, se uma janela foi localizada nas coordenadas de entrada, isso resultaria em seleção da janela inteira.
[0104] A Fig. 12B ilustra um exemplo de recebimento de coordenadas de entrada quando o modo de apontamento é alternado. Nesse caso, o comando de camada transparente determinado pode incluir um comando nativo de sistema operacional para mover o cursor de mouse 1206 à localização das coordenadas de entrada.
[0105] A Fig. 12C ilustra um exemplo de recebimento de coordenadas de entrada quando o modo de desenho é alternado e o usuário passou a caneta stylus 1200 através de múltiplas coordenadas de entrada. Nesse caso, o comando de camada transparente determinado pode incluir um comando nativo de sistema operacional para alterar a saída de exibição nas localizações de cada uma das coordenadas de entrada, resultando na linha de desenho do usuário 1207 na interface de usuário 1202. A saída gráfica modificada produzida no modo de desenho pode ser armazenada como parte da camada transparente 1203, por exemplo, como metadados relacionados a um caminho de coordenadas de entrada. O usuário pode então selecionar uma opção para exportar a saída de exibição alterada como uma imagem.
[0106] Na situação em que a entrada de usuário é identificada como um gesto, converter a entrada de usuário em um ou mais comandos de camada transparente com base, pelo menos em parte, no contexto identificado pode incluir determinar um comando de camada transparente com base, pelo menos em parte, no gesto identificado e no contexto identificado. O comando de camada transparente pode incluir pelo menos um comando nativo no contexto identificado, o pelo menos um comando nativo sendo configurado para realizar uma ação associada ao gesto identificado no contexto identificado. Um exemplo disso é discutido acima em relação a um gesto de passar e um contexto de aplicativo de navegação na web que resulta em um comando nativo configurado para realizar uma ação de rolagem no navegador de web.
[0107] Na situação em que a entrada de usuário é identificada como uma ou mais palavras (tal como com uso de reconhecimento de voz), converter a entrada de usuário em um ou mais comandos de camada transparente com base, pelo menos em parte, no identificado pode incluir determinar um comando de camada transparente com base, pelo menos em parte, nas uma ou mais palavras identificadas e no contexto identificado. O comando de camada transparente pode incluir pelo menos um comando nativo no contexto identificado, o pelo menos um comando nativo sendo configurado para realizar uma ação associada às uma ou mais palavras identificadas no contexto identificado.
[0108] A Fig. 13 ilustra um exemplo de um comando de camada transparente 1300 determinado com base em uma ou mais palavras identificadas em dados de voz de entrada. As palavras identificadas 1301 incluem uma das frases “quadro de comunicações” ou “página em branco”. O comando de camada transparente 1300 também inclui uma descrição 1302 do comando, e instruções de reposta 1303 que são instruções de saída enviadas pela camada transparente ao driver virtual e a um dispositivo de saída de hardware mediante execução do comando de camada transparente. Adicionalmente, o comando de camada transparente 1300 inclui o comando real nativo 1304 usado para chamar a função de quadro de comunicações.
[0109] A Fig. 14 ilustra outro exemplo de um comando de camada transparente 1400 determinado com base em uma ou mais palavras identificadas em dados de voz de entrada de acordo com uma modalidade exemplificativa. Nesse exemplo, as uma ou mais palavras são “abrir correio eletrônico”. Conforme mostrado na Fig. 14, o comando de camada transparente 1400 inclui o comando nativo “outlook.exe”, que é uma instrução para executar um arquivo executável específico que inicializa o aplicativo Outlook. O comando de camada transparente 1400 também inclui uma resposta de voz “correio eletrônico aberto” que será emitida em reposta ao recebimento do comando de voz.
[0110] Retornando à Fig. 3, na etapa 304 os um ou mais comandos de camada transparente são executados na camada transparente. A execução dos um ou mais comandos de camada transparente é configurada para causar a execução de um ou mais comandos nativos no contexto identificado.
[0111] A Fig. 15 ilustra um fluxograma para executar os um ou mais comandos de camada transparente na camada transparente de acordo com uma modalidade exemplificativa. Na etapa 1501, pelo menos um comando nativo no comando de camada transparente é identificado. O comando nativo pode ser, por exemplo, designado como um comando nativo dentro da estrutura do comando de camada transparente, permitindo a identificação.
[0112] Na etapa 1502 o pelo menos um comando nativo é executado no contexto identificado. Essa etapa pode incluir passar o pelo menos um comando nativo ao contexto identificado por meio de uma API identificada para esse contexto e executar o comando nativo dentro do contexto identificado. Por exemplo, se o contexto identificado for o sistema operacional, então o comando nativo pode ser passado ao sistema operacional para execução por meio da API de sistema operacional. Adicionalmente, se o contexto identificado for um aplicativo, então o comando nativo pode ser passado ao aplicativo para execução por meio da API de aplicativo.
[0113] Opcionalmente, na etapa 1503, uma resposta pode ser transmitida ao(s) dispositivo(s) de hardware. Conforme discutido anteriormente, essa resposta pode ser roteada a partir da camada transparente ao driver virtual e em seguida ao dispositivo de hardware.
[0114] As Figs. 16 a 19 ilustram recursos adicionais do sistema revelado no presente documento. A Fig. 16 ilustra uma interface exemplificativa para adicionar novos comandos correspondentes a entradas de usuário de acordo com uma modalidade exemplificativa. O painel na interface 1600 inclui ícones de aplicativos 1601 que já foram adicionados e podem ser inicializados com uso de entradas de usuário predeterminadas e dispositivos de hardware (por exemplo, comandos de voz). O painel também pode mostrar outros comandos que são específicos a aplicativos e que são mapeados a determinadas entradas de usuário. A seleção do botão de adição 1602 abre o menu de comando de adição 1603. Esse menu permite que usuários selecionem entre as seguintes opções: Tipo de item: Item Fixo para adicionar no menu de barra inferior/Item Normal para adicionar a um menu de arrastamento; Ícone: Selecionar o ícone de imagem; Fundo: Selecionar a cor do ícone de fundo; Cor: Selecionar a cor do ícone; Nome: Configurar o nome do novo item; Comando de voz: Configurar o comando de ativação de voz para abrir o novo aplicativo; Resposta de retorno: Configurar o retorno de resposta de voz do aplicativo; Comando: Selecionar tipo de aplicativo ou tipo de comando personalizado para inicializar (por exemplo, comando de inicialização do aplicativo, comando de realizar ação dentro do aplicativo, comando de fechar o aplicativo etc.); Início de Processo: se inicializar um novo processo ou aplicativo, o nome do processo ou aplicativo; e Parâmetro: quaisquer parâmetros para passar ao novo processo ou aplicativo.
[0115] A Fig. 17 ilustra vários componentes e opções da interface de desenho 1700 e do modo de desenho de acordo com uma modalidade exemplificativa. A Fig. 18 ilustra uma interface de calibração e de configurações 1800 para um dispositivo de hardware de câmera de vídeo que é usado para reconhecer objetos e permite que um usuário forneça entrada com uso de toque e gestos. A Fig. 19 ilustra uma interface de configurações gerais 1900 que permite que um usuário personalize vários aspectos da interface, alterne modos de entrada e realize outras mudanças. Conforme mostrado na interface 1900, um usuário também pode acessar uma página de configurações para calibrar e ajustar configurações para um hardware de caneta stylus (referida como a “Stylus Mágica”).
[0116] O sistema revelado no presente documento pode ser implementado em múltiplos dispositivos de computação em rede e usado como um auxílio para conduzir sessões de colaboração em rede. Por exemplo, a funcionalidade de quadro de comunicações descrita anteriormente pode ser um quadro de comunicações compartilhado entre múltiplos usuários em múltiplos dispositivos de computação.
[0117] No entanto, um dos problemas com os quadros de comunicações existentes ou outros espaços de colaboração compartilhados é que não há uma maneira fácil de interagir com um dispositivo de computação remoto ou compartilhar uma tela de área de trabalho sem perturbar ou interromper a sessão de colaboração. Por exemplo, se um participante em um espaço de trabalho de colaboração deseja compartilhar uma apresentação com outros participantes, todos os participantes precisam minimizar ou fechar a sessão de colaboração, executar um aplicativo de compartilhamento de tela e ingressar em uma reunião de compartilhamento de tela. Durante sessões de colaboração compartilhada, isso frequentemente interrompe o fluxo de trabalho e sessões de brainstorming compartilhadas que o espaço de colaboração foi projetado para promover.
[0118] Além dos métodos e sistemas descritos anteriormente para implementação de uma interface universal de hardware-software, a Requerente concebeu adicionalmente métodos, aparelhos e mídia legível por computador que permitem o compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede.
[0119] A Fig. 20 ilustra um fluxograma para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede de acordo com uma modalidade exemplificativa. Todas as etapas mostradas na Fig. 20 podem ser realizadas em um dispositivo de computação local, tal como um dispositivo de cliente conectado a um servidor, e não exigem múltiplos dispositivos de computação. O processo revelado também pode ser implementado por vários dispositivos conectados a um servidor.
[0120] Na etapa 2001, uma representação de um espaço de trabalho de colaboração hospedado em um servidor é transmitida em uma interface de usuário de um dispositivo de computação local. O espaço de trabalho de colaboração é acessível a uma pluralidade de participantes em uma pluralidade de dispositivos de computação através de uma conexão de soquete da web, incluindo um participante local no dispositivo de computação local e um ou mais participantes remotos em dispositivos de computação remotos. Conforme usadas no presente documento, as expressões dispositivos de computação remotos e participantes remotos referem-se a dispositivos de computação e participantes diferentes do participante local e do dispositivo de computação local. Dispositivos de computação remotos são separados do dispositivo local por uma rede, tal como uma rede de área ampla (WAN).
[0121] A Fig. 21A ilustra a arquitetura de rede usada para hospedar e transmitir um espaço de trabalho de colaboração de acordo com uma modalidade exemplificativa. Conforme mostrado na Fig. 21A, o servidor 2100 é conectado aos dispositivos de computação 2101A a 2101F. O servidor 2100 e os dispositivos de computação 2101A a 2101F podem ser conectados por meio de uma conexão de rede, tal como uma conexão de soquete da web, que permite uma comunicação bidirecional entre os dispositivos de computação 2101A- 2101F (clientes) e o servidor 2100. Conforme mostrado na Fig. 21A, os dispositivos de computação podem ser qualquer tipo de dispositivo de computação, tais como um computador tipo laptop, um computador tipo desktop, um telefone inteligente, ou outro dispositivo móvel.
[0122] O espaço de trabalho de colaboração pode ser, por exemplo, um quadro de comunicações digital configurado para propagar quaisquer edições de quaisquer participantes na pluralidade de participantes a outros participantes através da conexão de soquete da web. A Fig. 21B ilustra o processo para propagar edições ao espaço de trabalho de colaboração dentro da rede de acordo com uma modalidade exemplificativa. Conforme mostrado na Fig. 21B, se um usuário no dispositivo de computação 2101B realizar uma edição ou uma alteração no espaço de trabalho de colaboração, essa edição ou alteração 2102B é enviada ao servidor 2100, onde ela é usada para atualizar a versão hospedada do espaço de trabalho. A edição ou alteração é então propagada como atualizações 2102A, 2102C, 2102D, 2102E e 2102F pelo servidor 2100 aos outros dispositivos de computação conectados 2101A, 2101C, 2101D, 2101E e 2101F.
[0123] Cada representação do espaço de trabalho de colaboração pode ser uma versão do espaço de trabalho de colaboração que é customizada para um participante local. Por exemplo, conforme discutido acima, cada representação do espaço de trabalho de colaboração pode incluir um ou mais objetos participantes remotos correspondentes a um ou mais dispositivos de computação remotos conectados ao servidor.
[0124] A Fig. 22 ilustra múltiplas representações de um espaço de trabalho de colaboração de acordo com uma modalidade exemplificativa. Conforme mostrado na Fig. 22, o servidor 2200 hospeda o espaço de trabalho de colaboração 2201. A versão do espaço de trabalho de colaboração hospedada no servidor é propagada aos dispositivos conectados, conforme discutido anteriormente. A Fig. 22 também ilustra as representações do espaço de trabalho de colaboração para três usuários conectados, Usuário 1, Usuário 2 e Usuário 3. Cada representação pode ser opcionalmente personalizada para o participante local (para o dispositivo de computação local em cada local).
[0125] Voltando à Fig. 20, na etapa 2002, uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração e uma seleção de uma área dentro da representação da área de trabalho de colaboração é recebida pelo dispositivo de computação local.
[0126] As Figs. 23A e 23B ilustram um exemplo da etapa de recebimento de uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração e uma seleção de uma área dentro da representação da área de trabalho de colaboração de acordo com uma modalidade exemplificativa.
[0127] A Fig. 23A ilustra um exemplo da interface de usuário (área de trabalho) de um dispositivo de computação local antes de receber a solicitação e a seleção de uma área. Conforme mostrado na Fig. 23A, a interface de usuário 2301 inclui um aplicativo de colaboração 2302 que exibe localmente a representação do espaço de trabalho de colaboração 2303 hospedado no servidor, bem como um aplicativo de apresentação separado 2308 (tal como PowerpointTM) e um aplicativo de edição de documentos separado (tal como WordTM). Todos os aplicativos de usuário em execução no dispositivo de computação local são mostrados como guias em uma barra de tarefas 2306 do sistema operacional (“OS”), além de um botão de menu do OS que abre um menu associado ao OS.
[0128] O aplicativo de colaboração 2302 pode incluir a representação da área de trabalho de colaboração 2303 que contém todas as edições e contribuições do participante local e quaisquer outros participantes, bem como uma barra de ferramentas 2304. A barra de ferramentas 2304 pode incluir várias ferramentas de edição, configurações, comandos e opções para interagir com ou configurar a representação da área de trabalho de colaboração. Por exemplo, a barra de ferramentas 2304 pode incluir ferramentas de edição para desenhar na representação do espaço de trabalho de colaboração 2303, com as edições sendo propagadas pela conexão de soquete da web para o servidor e outros dispositivos de computação conectados.
[0129] A barra de ferramentas 2304 inclui, adicionalmente, um botão de compartilhamento de tela 2305 que, quando selecionado, faz com que o dispositivo de computação local receba uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração. Um usuário pode, portanto, iniciar o compartilhamento de tela dentro da área de trabalho de colaboração selecionando o botão de compartilhamento de tela 2305.
[0130] A Fig. 23B ilustra um exemplo da interface de usuário (área de trabalho) do dispositivo de computação local após receber a solicitação e antes da seleção de uma área. Como mostrado na Fig. 23B, a seleção do botão de compartilhamento de tela 2305 pode provocar o aparecimento de uma janela de área 2309 dentro da representação do espaço de trabalho de colaboração 2303. A janela 2309 determina a área de saída resultante para o compartilhamento de tela da área de trabalho local (ou porção da área de trabalho local) e pode ser movida e/ou personalizada pelo usuário, em termos de tamanho, forma, orientação, localização etc. Uma vez que o usuário seleciona um local/tamanho/formato para a janela 2309, o usuário pode finalizar a seleção através de alguma entrada (tal como pressionando um dispositivo apontador, selecionando novamente o botão 2305 ou alguma outra entrada). A área selecionada, incluindo os parâmetros relevantes (tamanho, formato, orientação etc.) dentro da área de trabalho de colaboração, pode então ser recebida pelo dispositivo de computação local. Opcionalmente, a área pode ser definida com algum valor padrão, incluindo um tamanho, uma localização e uma orientação padrão, e pode ser configurada posteriormente pelo usuário se desejar se desviar da área.
[0131] Naturalmente, o processo mostrado nas Figs. 23A e 23B é apenas um exemplo de recebimento de uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração e uma seleção de uma área dentro da representação da área de trabalho de colaboração. Essa etapa pode ser implementada de várias maneiras. Por exemplo, o botão de compartilhamento de tela 2305 pode ser arrastado para a área de trabalho de colaboração 2303 em vez de ser selecionado. A solicitação de compartilhamento de tela também pode ser iniciada pelo usuário com o uso de algum comando de entrada, tais como um comando de teclado ou uma seleção em um menu ou submenu, que pode ser reconhecido pelo aplicativo de colaboração como uma solicitação para compartilhar uma tela. A solicitação para iniciar o compartilhamento de tela na área de trabalho de colaboração também pode ser iniciada após uma sessão de compartilhamento de tela separada já ter sido iniciada. Por exemplo, o usuário pode arrastar uma guia da barra de tarefas, ícone ou janela de compartilhamento de tela para um local dentro do espaço de trabalho de colaboração, resultando no dispositivo de computação receber uma solicitação e uma seleção de uma área dentro do espaço de trabalho de colaboração.
[0132] A etapa de recebimento de uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local e uma seleção de uma área dentro da representação da área de trabalho de colaboração pode incluir subetapas que permitem que um usuário selecione uma origem para o compartilhamento de tela, tal como compartilhar sua área de trabalho inteira, uma ou mais janelas em sua área de trabalho, ou a saída associada a um ou mais aplicativos em execução em seus dispositivos de computação locais. Essas subetapas podem incluir a transmissão de uma interface de seleção de origem dentro da interface de usuário, a interface de seleção de origem sendo configurada para receber uma seleção da pelo menos uma porção da área de trabalho local e receber uma seleção da pelo menos uma porção da área de trabalho local dentro da interface de seleção de origem.
[0133] As Figs. 24A a 24C ilustram um exemplo do processo de seleção de origem de acordo com uma modalidade exemplificativa. A Fig. 24A ilustra uma interface de usuário
(área de trabalho) 2406 de um dispositivo de computação local antes de o usuário selecionar qualquer comando ou botão de compartilhamento de tela. Os numerais 2401 a 2408 denotam os mesmos componentes que os numerais 2301 a 2308 na Fig. 23A, discutida acima.
[0134] A Fig. 24B ilustra a interface de usuário 2406 depois que o usuário selecionou o botão de compartilhamento de tela 2405. Conforme mostrado na Fig. 24B, uma interface de seleção de origem 2409 pode ser transmitida dentro do espaço de trabalho de colaboração 2403 ou dentro do aplicativo de colaboração 2404 que permite a um usuário selecionar se gostaria de compartilhar sua área de trabalho inteira ou uma porção de sua área de trabalho, e qual porção de sua área de trabalho ele gostaria de compartilhar. A interface de seleção de origem pode listar todos os aplicativos atualmente ativos em execução nos dispositivos de computação locais, bem como quaisquer janelas (tais como janelas correspondentes ao SO ou janelas criadas por aplicativos) e permitir que o usuário selecione entre compartilhar toda a área de trabalho local, compartilhar uma ou mais janelas dentro da área de trabalho local ou compartilhar uma ou mais interfaces correspondentes a um ou mais aplicativos em execução no dispositivo de computação local. Por exemplo, se um usuário selecionar um aplicativo para compartilhamento, então todas as interfaces associadas a esse aplicativo (tais como janelas, avisos, telas etc.) podem ser compartilhadas. Se um usuário selecionar uma única janela para compartilhar, apenas essa janela será compartilhada. Adicionalmente, se o usuário selecionar compartilhar toda a sua área de trabalho, então o conteúdo de toda a área de trabalho poderá ser compartilhado com outros participantes.
[0135] A Fig. 24C ilustra a interface 2401 depois que o usuário selecionou o "aplicativo de edição de documento" dentro da interface de seleção 2409. Essa seleção designará o aplicativo de edição de documentos como a origem do fluxo contínuo de compartilhamento de tela, o que significa que outros participantes no espaço de trabalho de colaboração serão capazes de visualizar a interface correspondente ao aplicativo de edição de documentos que está sendo executado no dispositivo de computação local. A seleção pode ser armazenada na memória e/ou passada para o aplicativo ou programa usado para gerar o objeto de transmissão contínua que captura a porção relevante da área de trabalho, como será discutido adicionalmente abaixo.
[0136] As etapas de seleção de origem descritas acima e em relação às Figs. 24A a 24C podem ser realizadas como parte de, antes, ou após a seleção de uma área, conforme discutido em relação às Figs. 23A e 23B. Por exemplo, o sistema pode exibir uma interface de seleção de origem após o usuário selecionar uma área para a janela de compartilhamento de tela. Alternativamente, a interface de seleção de origem pode ser exibida antes da seleção de uma área. O processo de seleção de origem também pode ser executado em uma etapa posterior do processo geral, tal como quando um objeto de transmissão contínua é gerado.
[0137] O processo de seleção de origem também pode ser omitido (padronizando-se o compartilhamento de toda a área de trabalho) e/ou pode ser executado de outras maneiras. Por exemplo, em vez de exibir uma interface de seleção de origem, um aviso pode ser exibido instruindo o usuário a selecionar todas as janelas ativas que gostaria de compartilhar ou inserir um comando para compartilhar toda a área de trabalho. Muitas variações são possíveis e esses exemplos não são destinados a serem limitadores.
[0138] As entradas descritas em relação à etapa 2002 e às Figs. 23A-23B e 24A-24C podem ser recebidas por meio de qualquer tipo de dispositivo apontador, tal como um mouse, tela sensível ao toque ou caneta stylus. As técnicas descritas anteriormente envolvendo o driver virtual e/ou a camada transparente podem ser usadas para detectar entradas. Por exemplo, a entrada pode ser um gesto de apontar pelo usuário. Adicionalmente, as ações descritas acima, tais como ações de arrastar e soltar, seleção, desmarcação ou outras entradas ou sequências de entradas, também podem ser inseridas com o uso das técnicas descritas anteriormente envolvendo o driver virtual e/ou a amada transparente.
[0139] Voltando à Fig. 20, na etapa 2003 é gerado um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local. O objeto de transmissão contínua pode ser um fluxo contínuo de mídia, tal como um fluxo contínuo de vídeo que é configurado para capturar um fluxo contínuo de pelo menos uma porção da área de trabalho local.
[0140] Conforme discutido anteriormente, a representação de um espaço de trabalho de colaboração hospedado no servidor pode ser transmitida no dispositivo de computação local por um aplicativo de colaboração local em execução no dispositivo de computação local. Esse aplicativo de colaboração pode ser, por exemplo, um aplicativo da web, e se comunicar e interagir com um programa de captura de tela no dispositivo de computação local. O programa de captura de tela é um programa configurado para gerar um fluxo contínuo de pelo menos uma porção da área de trabalho. O aplicativo de colaboração pode fazer interface com o programa de captura de tela por meio de uma Interface de Programação de Aplicativo (API). Adicionalmente, o aplicativo de colaboração pode fazer interface com o programa de captura de tela por meio da camada transparente, que por sua vez faz interface com múltiplos aplicativos em execução no dispositivo de computação local. A funcionalidade do programa de captura de tela usada para gerar o fluxo contínuo de mídia também pode ser integrada ao aplicativo de colaboração para que o aplicativo de colaboração possa simplesmente chamar a rotina ou processo relevante para instanciar o objeto de transmissão contínua.
[0141] A Fig. 25 ilustra um fluxograma para gerar um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local de acordo com uma modalidade exemplificativa.
[0142] Na etapa 2501, o aplicativo de colaboração local transmite uma solicitação de um identificador de origem para um programa de captura de tela em execução no dispositivo de computação local por meio de uma Interface de Programação de Aplicativo (API) entre o aplicativo de colaboração local e o programa de captura de tela. Conforme discutido anteriormente, essa API pode ser a própria camada transparente. A solicitação pode incluir atributos adicionais, tal como a origem selecionada do fluxo contínuo de compartilhamento de tela (tal como um determinado aplicativo ou janela). Alternativamente, o processo de seleção de origem pode ser executado após a solicitação ser submetida ou omitida no lugar de uma origem padrão (tal como a área de trabalho inteira). O identificador de origem é o identificador ou endereço do fluxo contínuo de mídia que será criado e que permite que os aplicativos acessem a saída do fluxo contínuo de mídia e o compartilhamento de tela resultante.
[0143] Na etapa 2502, o programa de captura de tela inicia um fluxo contínuo da pelo menos uma porção da área de trabalho local do dispositivo de computação local, o fluxo contínuo tendo um identificador de origem correspondente. Quando os parâmetros de origem são fornecidos ao programa de captura de tela, o programa de captura de tela pode iniciar o fluxo contínuo com o uso apenas dos componentes identificados (tal como um determinado aplicativo ou janela). De outro modo, o programa de captura de tela pode iniciar um fluxo contínuo de toda a área de trabalho local por padrão ou apresentar opções de seleção de origem ao usuário, conforme discutido anteriormente. O fluxo contínuo iniciado é uma sequência de capturas de tela que capturam um instantâneo de pelo menos uma porção da área de trabalho periodicamente (tal como 30 vezes por segundo). O fluxo contínuo pode ser acessado com o uso do identificador de origem que, conforme discutido acima, é um identificador que permite que os programas acessem o fluxo contínuo.
[0144] Na etapa 2503, o programa de captura de tela transmite o identificador de origem para o aplicativo de colaboração local. Na etapa 2504, o aplicativo de colaboração local gera um objeto de transmissão contínua com base, pelo menos em parte, no identificador de origem. Além do identificador de origem, o aplicativo de colaboração local pode, opcionalmente, utilizar as informações fornecidas anteriormente, tal como a área especificada pelo usuário, para criar o objeto de transmissão contínua. O objeto de transmissão contínua é um fluxo contínuo de mídia e uma interface de saída correspondente que tem um formato definido. O formato definido pode, opcionalmente, ser baseado na entrada do usuário, tal como a área selecionada. O objeto de transmissão contínua é um objeto de fluxo contínuo de mídia que é compatível com e é configurado para ser incorporado no espaço de trabalho de colaboração, semelhante a um fluxo contínuo de vídeo da câmera de um participante.
[0145] O programa de captura de tela é um programa configurado para gerar um fluxo contínuo da área de trabalho local ou de uma porção da área de trabalho local ou um componente que é integrado ao aplicativo de colaboração local e que é configurado para gerar um fluxo contínuo da área de trabalho local ou de uma porção da área de trabalho local. Por exemplo, o programa de captura de tela pode ser um navegador da web ou componente do mecanismo do navegador que é uma base ou ponto de extremidade para transmissão contínua de Comunicação de Web em Tempo Real (WebRTC). Os tópicos a seguir fornecem um exemplo de implementação da etapa de geração de um objeto de transmissão contínua quando o programa de captura de tela é o Chrome.
[0146] A funcionalidade de captura de tela no Chrome pode ser acessada por meio de uma interface de função MediaDevices.getUserMedia(). A função gUM pode ser chamada uma vez para recuperar um fluxo contínuo de áudio/vídeo do usuário e uma segunda vez para obter um fluxo contínuo de tela.
[0147] No Chrome, a permissão para usar a funcionalidade de captura de tela pode ser ativada utilizando-se uma extensão do Chrome em um aplicativo da web (tal como uma possível implementação do aplicativo de colaboração). A extensão utiliza a função chrome.desktopCapture.chooseDesktopMedia() para retornar um sourceID. O sourceID pode então ser usado como um argumento na função gUM para recuperar o fluxo contínuo correspondente.
[0148] A extensão para compartilhamento de tela a pode incluir um script de conteúdo que é executado no contexto do aplicativo de colaboração e um script de plano de fundo executado em um contexto de extensão separado. O script de conteúdo pode se comunicar com o aplicativo de colaboração enviando mensagens para a janela ou por meio da manipulação do modelo de objeto de documento (DOM), enquanto o script de plano de fundo não pode. O script de plano de fundo pode acessar todas as APIs de extensão do Chrome, mas o script de conteúdo não. O script de conteúdo e o script de plano de fundo podem se comunicar por meio da função chrome.runtime.connect(). Dada essa arquitetura, o processo de geração de um objeto de transmissão contínua configurado para produzir um fluxo contínuo de vídeo de pelo menos uma porção da área de trabalho local do dispositivo de computação local pode ser realizado por:
[0149] (1) O aplicativo de colaboração enviando uma solicitação ao script de conteúdo para um identificador de origem de compartilhamento de tela;
[0150] (2) O script de conteúdo passando a solicitação para o script de plano de fundo;
[0151] (3) O script de plano de fundo chamando a função chrome.DesktopCapture.chooseDesktopMedia() e retornando o identificador de origem ao script de conteúdo.
[0152] (4) O script de conteúdo retornando isso para o aplicativo de colaboração, o qual, por fim, chama a função getUserMedia() com o identificador de origem como uma das restrições/argumentos.
[0153] Para a função gUM no Chrome, as restrições para fluxos contínuos de vídeo podem incluir {chromeMediaSource: 'desktop'; maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId} ou {maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId}.
[0154] A chamada gUM de compartilhamento de tela retorna um mediaStream que pode ser compartilhado através de conexões diretas como um WebRTC mediaStream.
[0155] Naturalmente, a implementação mencionada acima com o uso do navegador Chrome como um programa de captura de tela é fornecida apenas como exemplo, e a etapa de geração de um objeto de transmissão contínua pode ser realizada com o uso de outros programas ou navegadores que suportem a funcionalidade de captura de tela, tal como Firefox, ou um programa de captura de tela separado e autônomo.
[0156] Voltando à Fig. 20, na etapa 2004, o dispositivo de computação local transmite um ou mais comandos para o servidor através da conexão de soquete da web. Os um ou mais comandos podem incluir o objeto de transmissão contínua e informações que correspondem à área selecionada e são configuradas para fazer com que o servidor insira o objeto de transmissão contínua na área de trabalho de colaboração com base, pelo menos em parte, na área selecionada.
[0157] Por exemplo, se o usuário selecionou anteriormente uma área circular no canto inferior direito do espaço de trabalho de colaboração como a área selecionada para o compartilhamento de tela, então o objeto de transmissão contínua pode ser inserido no espaço de trabalho de colaboração pelo servidor de forma que o fluxo contínuo de mídia seja exibido em um formato circular e no canto inferior direito da área de trabalho de colaboração quando integrado na área de trabalho de colaboração. O tamanho e a orientação do círculo podem ser baseados nos mesmos atributos da área selecionada. Naturalmente, como qualquer outro objeto no espaço de trabalho de colaboração, o objeto de transmissão contínua pode ser ajustado ou movido pelos participantes após ser incorporado ao espaço de trabalho de colaboração, interagindo com sua representação do espaço de trabalho de colaboração.
[0158] O formato do objeto de transmissão contínua na área de trabalho de colaboração pode ser determinado com base na área selecionada anteriormente, incluindo atributos da área selecionada, tais como formato, tamanho e posição. Esses atributos podem ser transmitidos junto com o próprio objeto de transmissão contínua no um ou mais comandos enviados ao servidor. O servidor pode então determinar um ponto e formato de inserção para incorporar o objeto de transmissão contínua na área de trabalho de colaboração com base nesses atributos.
[0159] Alternativamente, o objeto de transmissão contínua pode ser um objeto de fluxo contínuo de mídia com atributos espaciais predefinidos com base na seleção anterior do usuário de uma área. Nesse caso, os atributos de exibição do objeto de transmissão contínua podem ser integrados ao objeto de transmissão contínua quando o objeto de transmissão contínua é gerado no dispositivo de computação local. O objeto de transmissão contínua (com atributos espaciais incorporados) pode então ser enviado para o servidor, que incorpora o objeto de transmissão contínua na área de trabalho de colaboração no local apropriado e no formato apropriado com base nos atributos espaciais incorporados.
[0160] Em vez de incluir o próprio objeto de transmissão contínua, os um ou mais comandos podem incluir, opcionalmente, um endereço do objeto de transmissão contínua ou outro identificador que possa ser usado pelo servidor para recuperar o objeto de transmissão contínua ou instanciar sua própria instância do objeto de transmissão contínua.
[0161] A inserção do objeto de transmissão contínua na área de trabalho de colaboração pelo servidor faz com que representações do objeto de transmissão contínua sejam propagadas para a pluralidade de dispositivos de computação através da conexão de soquete da web. Cada um dos dispositivos de computação conectados terá, portanto, uma representação do objeto de transmissão contínua em suas respectivas representações do espaço de trabalho de colaboração.
[0162] O objeto de transmissão contínua inserido é configurado para receber o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local e transmitir o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local para a pluralidade de dispositivos de computação pela conexão de soquete da web.
[0163] Conforme discutido anteriormente, esse processo envolve que as informações de fluxo contínuo sejam encaminhadas do dispositivo de computação local que instanciava o objeto de transmissão contínua (e que é identificado como a origem do fluxo contínuo de mídia pelo identificador de fluxo contínuo) para o servidor e, em seguida, para cada um da pluralidade de dispositivos de computação conectados ao servidor em sua representação do espaço de trabalho de colaboração. Portanto, o próprio objeto de transmissão contínua pode ser integrado na área de trabalho de colaboração no servidor e o fluxo contínuo resultante pode ser propagado para os clientes conectados.
[0164] A Fig. 26 ilustra o processo de envio dos comandos do dispositivo de computação local e propagação do objeto de transmissão contínua de acordo com uma modalidade exemplificativa. Como mostrado na Fig. 26, o dispositivo de computação local 2601 envia comandos (incluindo o objeto de transmissão contínua ou uma referência/ponteiro para o objeto de transmissão contínua) para o servidor 2600. O servidor 2600 então insere o objeto de transmissão contínua na área de trabalho de colaboração, resultando na área de trabalho de colaboração com o objeto de transmissão contínua incorporado sendo propagada para todos os dispositivos conectados, incluindo o dispositivo de computação local 2601 e os dispositivos de computação remotos 2602 e 2603.
[0165] A Fig. 27 ilustra um exemplo da interface do dispositivo de computação local depois que o servidor incorpora o objeto de transmissão contínua dentro do espaço de trabalho de colaboração de acordo com uma modalidade exemplificativa. Os numerais 2701 a 2708 correspondem aos mesmos componentes descritos em relação aos numerais 2301 a 2308 na Fig. 23A. A Fig. 27 mostra adicionalmente o objeto de transmissão contínua incorporado 2709 que exibe um fluxo contínuo de mídia da área de trabalho do usuário. Nesse caso, presume-se que a origem selecionada seja toda a área de trabalho. Cada um dos participantes remotos conectados ao servidor terá o mesmo objeto de transmissão contínua incorporado em suas representações do espaço de trabalho de colaboração. Conforme mostrado na Fig. 27, o fluxo contínuo incorporado resultante fornece um efeito de “imagem na imagem” que permite que o participante local e os participantes remotos visualizem o conteúdo de uma tela compartilhada dentro do contexto do espaço de trabalho de colaboração. Os participantes podem, portanto, compartilhar programas e informações pertinentes sem interromper a sessão de colaboração.
[0166] Adicionalmente às técnicas descritas acima, a Requerente também concebeu técnicas inovadoras para permitir que tanto os participantes locais quanto os participantes remotos controlem a área de trabalho ou porção da área de trabalho exibida dentro do objeto de transmissão contínua incorporado. Essa nova técnica utiliza a camada transparente e permite que os usuários (tanto locais quanto remotos) naveguem de maneira eficaz na área de trabalho ou porção da área de trabalho apresentada dentro do objeto de transmissão contínua incorporado.
[0167] A Fig. 28 ilustra um fluxograma para controlar uma área de trabalho ou parte de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação local de acordo com uma modalidade exemplificativa.
[0168] Na etapa 2801, o objeto de transmissão contínua inserido é transmitido dentro da representação da área de trabalho de colaboração na interface de usuário do dispositivo de computação local. O objeto de transmissão contínua inserido é associado a um endereço de rede de uma origem de fluxo contínuo de vídeo. Essa associação pode ser fornecida pelo servidor na forma de uma etiqueta ou metadados associados ao objeto de transmissão contínua. Adicionalmente, a associação pode ser parte do objeto de transmissão contínua e pode ser baseada, por exemplo, no identificador de origem discutido anteriormente. Por exemplo, quando o objeto de transmissão contínua é criado, o dispositivo que cria o objeto de transmissão contínua pode incluir uma etiqueta que indica o endereço de IP do dispositivo.
[0169] Na etapa 2802, uma camada transparente em execução no dispositivo de computação local detecta uma entrada de usuário associada ao objeto de transmissão contínua inserido, a entrada de usuário correspondendo a um local dentro da área de trabalho local. Conforme discutido anteriormente, a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional. A camada transparente pode detectar uma entrada de usuário associada ao objeto de transmissão contínua inserido com base em uma localização da entrada (conforme determinado pelas coordenadas) e a localização do objeto de transmissão contínua. Por exemplo, se houver uma sobreposição entre um clique do mouse e alguma porção do objeto de transmissão contínua, essa entrada pode ser detectada como uma entrada de usuário associada ao objeto de transmissão contínua inserido.
[0170] A entrada de usuário também pode ser mapeada para um local específico na área de trabalho local com base na localização da entrada dentro do objeto de transmissão contínua inserido. Mais uma vez, pode ser armazenado um mapa que indica áreas ou coordenadas dentro do objeto de transmissão contínua inserido associadas a diferentes partes da área de trabalho local e a localização pode ser mapeada para uma respectiva porção da área de trabalho local. Por exemplo, uma subárea do objeto de transmissão contínua inserido pode ser associada a um aplicativo específico que ocupa uma área correspondente na área de trabalho local ou pode ser associada a uma coordenada correspondente na área de trabalho local.
[0171] O procedimento de mapeamento pode utilizar um mecanismo ou processo de escalonamento que detecta a localização relativa de uma entrada dentro do objeto de transmissão contínua inserido e mapeia a localização relativa para uma localização absoluta dentro da área de trabalho (ou porção de uma área de trabalho) que está sendo transmitida pelo objeto de transmissão contínua.
[0172] Adicionalmente, como discutido anteriormente, a entrada pode ser de um dispositivo apontador, tal como um mouse, ou por meio de outros meios de entrada, tais como mecanismos de entrada que dependem do driver virtual e da camada transparente.
[0173] Na etapa 2804, a camada transparente em execução no dispositivo de computação local determina que o endereço de rede associado ao objeto de transmissão contínua inserido corresponde a um endereço de rede do dispositivo de computação local. Isso pode ser determinado, por exemplo, comparando-se o endereço de IP do dispositivo que fornece a entrada com o endereço de IP associado ao objeto de transmissão contínua para determinar se há uma correspondência.
[0174] Na etapa 2805, com base na determinação de que o endereço de rede associado ao objeto de transmissão contínua inserido corresponde a um endereço de rede do dispositivo de computação que fornece a entrada, a camada transparente transmite um ou mais segundos comandos para um ou mais dentre: o sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional, os um ou mais segundos comandos sendo configurados para executar a entrada do usuário no local dentro da área de trabalho local.
[0175] Conforme discutido anteriormente, a camada transparente pode fazer interface com o SO ou com aplicativos em execução no SO. Portanto, qualquer entrada dentro do objeto de transmissão contínua inserido pode ser mapeada para um local correspondente dentro da área de trabalho local e um comando pode ser enviado (dependendo do contexto relevante, conforme discutido anteriormente) para o aplicativo apropriado ou para o SO, para realizar uma entrada no local correspondente na área de trabalho local.
[0176] As Figs. 29A a 29C ilustram um exemplo de controle de uma área de trabalho ou porção de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação local de acordo com uma modalidade exemplificativa.
[0177] Como mostrado na Fig. 29A, a interface de usuário local (área de trabalho) 2901 inclui um aplicativo de colaboração 2902 que exibe uma representação de um espaço de trabalho de colaboração. A representação inclui um objeto de transmissão contínua 2903 inserido/incorporado que está transmitindo continuamente a própria área de trabalho local. A interface de usuário local 2901 também inclui uma barra de tarefas 2906 que inclui um botão de Menu do SO 2905. Conforme mostrado na figura, o cursor do mouse está sobre um botão 2904 dentro do objeto de transmissão contínua inserido 2903 que corresponde ao botão de Menu do SO 2905 na área de trabalho local.
[0178] A Fig. 29B ilustra o resultado do clique do usuário no local do botão 2904 dentro do objeto de transmissão contínua 2903. Como resultado dessa entrada, que é detectada pela camada transparente, a localização da entrada dentro do objeto de transmissão contínua 2903 é mapeada para uma localização correspondente dentro da área de trabalho 2901. Uma vez que o local correspondente é o botão de Menu do SO 2905, essa entrada resulta no envio, pela camada transparente, de um comando ao SO para ativar o botão de Menu do SO 2905. Essa mudança na área de trabalho 2901 é capturada pelo objeto de transmissão contínua, que mostra o botão 2904 dentro do objeto de transmissão contínua inserido sendo também ativado.
[0179] A Fig. 29C ilustra a interface 2901 e o objeto de transmissão contínua 2903 inserido após a entrada ser transportada através da área de trabalho local. Conforme mostrado na Fig. 29C, o Menu de SO é aberto e inclui uma lista de indicadores selecionáveis 2907. Essa mudança é, consequentemente, capturada pelo objeto de transmissão contínua inserido 2903, o qual por sua vez mostra uma abertura correspondente do botão 2904, incluindo uma lista de indicadores selecionáveis 2908.
[0180] Conforme mostrado acima, a camada transparente pode ser usada efetivamente para controlar a área de trabalho local através do objeto de transmissão contínua incorporado. Isso fornece efetivamente a um usuário que participa da sessão de colaboração uma interface de controle remoto que lhe permite permanecer na sessão de colaboração e, ao mesmo tempo, navegar em sua área de trabalho ou em aplicativos dentro da área de trabalho que ele está compartilhando com outros participantes.
[0181] O presente sistema também pode ser utilizado para permitir que um participante remoto controle uma área de trabalho ou uma porção de uma área de trabalho que está sendo compartilhada. Essa funcionalidade tem grande utilidade, pois permite que participantes remotos acessem outras áreas de trabalho e aplicativos que estão sendo compartilhados por meio de um objeto de transmissão contínua inserido em um espaço de trabalho de colaboração.
[0182] A Fig. 30 ilustra um fluxograma para controlar uma área de trabalho ou parte de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação remoto de acordo com uma modalidade exemplificativa.
[0183] Na etapa 3001, o objeto de transmissão contínua inserido é transmitido dentro da representação da área de trabalho de colaboração na interface de usuário de um dispositivo de computação remoto. O objeto de transmissão contínua inserido é associado a um endereço de rede de uma origem de fluxo contínuo de vídeo. Essa associação pode ser fornecida pelo servidor na forma de uma etiqueta ou metadados associados ao objeto de transmissão contínua. Adicionalmente, a associação pode ser parte do objeto de transmissão contínua e pode ser baseada, por exemplo, no identificador de origem discutido anteriormente. Por exemplo, quando o objeto de transmissão contínua é criado, o dispositivo que cria o objeto de transmissão contínua pode incluir uma etiqueta que indica o endereço de IP do dispositivo.
[0184] Na etapa 3002, uma camada transparente em execução no dispositivo de computação remoto detecta uma entrada de usuário associada ao objeto de transmissão contínua inserido, a entrada do usuário correspondendo a um local dentro da área de trabalho local. Conforme discutido anteriormente, a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional. A camada transparente pode detectar uma entrada de usuário associada ao objeto de transmissão contínua inserido com base em uma localização da entrada (conforme determinado pelas coordenadas) e a localização do objeto de transmissão contínua. Por exemplo, se houver uma sobreposição entre um clique do mouse e alguma porção do objeto de transmissão contínua, essa entrada pode ser detectada como uma entrada de usuário associada ao objeto de transmissão contínua inserido.
[0185] A entrada de usuário também pode ser mapeada para um local específico dentro da área de trabalho local com base na localização da entrada dentro do objeto de transmissão contínua inserido. Mais uma vez, pode ser armazenado um mapa que indica áreas ou coordenadas dentro do objeto de transmissão contínua inserido associadas a diferentes partes da área de trabalho local e a localização pode ser mapeada para uma respectiva porção da área de trabalho local. Por exemplo, uma subárea do objeto de transmissão contínua inserido pode ser associada a um aplicativo específico que ocupa uma área correspondente na área de trabalho local ou pode ser associada a uma coordenada correspondente na área de trabalho local.
[0186] O procedimento de mapeamento pode utilizar um mecanismo ou processo de escalonamento que detecta a localização relativa de uma entrada dentro do objeto de transmissão contínua inserido e mapeia a localização relativa para uma localização absoluta dentro da área de trabalho (ou porção de uma área de trabalho) que está sendo transmitida pelo objeto de transmissão contínua.
[0187] Adicionalmente, como discutido anteriormente, a entrada pode ser de um dispositivo apontador, tal como um mouse, ou por meio de outros meios de entrada, tais como mecanismos de entrada que dependem do driver virtual e da camada transparente.
[0188] Na etapa 3004, a camada transparente em execução no dispositivo de computação remoto determina que o endereço de rede associado ao objeto de transmissão contínua inserido não corresponde a um endereço de rede do dispositivo de computação remoto. Isso pode ser determinado, por exemplo, comparando-se o endereço de IP do dispositivo que fornece a entrada (o dispositivo de computação remoto) com o endereço de IP associado ao objeto de transmissão contínua para determinar se há uma correspondência.
[0189] Na etapa 3005, com base na determinação de que o endereço de rede associado ao objeto de transmissão contínua inserido não corresponde a um endereço de rede do dispositivo de computação que fornece a entrada, a camada transparente transmite um ou mais segundos comandos para o dispositivo de computação local através da conexão de soquete da web, os um ou mais segundos comandos sendo configurados para fazer com que uma camada transparente local em execução no dispositivo de computação local provoque a execução da entrada de usuário no local dentro da área de trabalho local.
[0190] Os um ou mais segundos comandos podem ser roteados do dispositivo de computação remoto para o dispositivo de computação local por meio do servidor e através da conexão de soquete da web. Em particular, os um ou mais segundos comandos podem ser enviados para o servidor com o endereço de destino como o endereço de IP do dispositivo de computação local e, em seguida, roteados pelo servidor para o dispositivo de computação local.
[0191] Os um ou mais segundos comandos podem ser configurados para fazer com que a camada transparente local no dispositivo de computação local envie comandos locais para um ou mais dentre os seguintes: o sistema operacional local ou um ou mais aplicativos locais configurados para serem executados no sistema operacional local, os um ou mais comandos locais sendo configurados para realizar a entrada de usuário no local dentro da área de trabalho local.
[0192] Conforme discutido anteriormente, a camada transparente pode fazer interface com o SO ou com aplicativos em execução no SO. Portanto, qualquer entrada no objeto de transmissão contínua inserido pode ser mapeada para um local correspondente na área de trabalho local e um comando pode ser enviado da camada transparente local (dependendo do contexto relevante, conforme discutido anteriormente) para o aplicativo apropriado ou para o SO no dispositivo de computação local, para realizar uma entrada no local correspondente dentro da área de trabalho local.
[0193] As Figs. 31A a 31C ilustram um exemplo de controle de uma área de trabalho ou porção de uma área de trabalho por meio de um objeto de transmissão contínua incorporado de um dispositivo de computação remoto de acordo com uma modalidade exemplificativa.
[0194] Como mostrado na Fig. 31A, a interface de usuário remota (área de trabalho) 3101 inclui um aplicativo de colaboração 3102 que exibe uma representação de um espaço de trabalho de colaboração. A representação inclui um objeto de transmissão contínua 3103 inserido/incorporado que está transmitindo uma área de trabalho local (como usado no presente documento, "local" se refere ao dispositivo que instanciou o objeto de transmissão contínua e que está compartilhando sua área de trabalho ou uma porção de sua área de trabalho). A interface de usuário remota 3101 também inclui uma barra de tarefas e uma janela que corresponde a um aplicativo de navegador da web que está sendo executado na área de trabalho remota. Conforme mostrado na figura, o cursor do mouse está sobre um botão 3104 dentro do objeto de transmissão contínua 3103 inserido que corresponde a um botão de Menu do SO dentro da área de trabalho local que está sendo transmitida.
[0195] A Fig. 31B ilustra o resultado do clique do usuário no local do botão 3104 dentro do objeto de transmissão contínua 3103. Como resultado dessa entrada, que é detectada pela camada transparente remota, a localização da entrada dentro do objeto de transmissão contínua 3103 é mapeada para uma localização correspondente dentro da área de trabalho local que está sendo transmitida. A camada transparente remota então envia comandos para a camada transparente local no dispositivo de computação local para provocar uma entrada no local correspondente dentro da área de trabalho local. Uma vez que o local correspondente é o botão de Menu do SO da área de trabalho local, essa entrada resulta no envio de comando(s) da camada transparente remota para a camada transparente local, que por sua vez envia comandos ao SO local para ativar o botão de Menu do SO da área de trabalho local. Essa mudança na área de trabalho local é capturada pelo objeto de transmissão contínua 3103, que mostra o botão 3104 dentro do objeto de transmissão contínua inserido que está sendo ativado. Observe-se que a área de trabalho remota 3101 não é afetada por essa entrada (a par da atualização do objeto de transmissão contínua 3103) uma vez que o objeto de transmissão contínua inserido não está transmitindo a área de trabalho remota, mas sim uma área de trabalho diferente associada ao dispositivo de computação local.
[0196] A Fig. 31C ilustra a interface 3101 e o objeto de transmissão contínua 3103 inserido após a entrada ser transportada através da área de trabalho local. No momento mostrado na Fig. 31C, o Menu do SO local na área de trabalho local que está sendo transmitida é aberto e inclui uma lista de indicadores selecionáveis. Essa mudança é, consequentemente, capturada pelo objeto de transmissão contínua inserido 3103, o qual por sua vez mostra uma abertura correspondente do botão 3104, para incluir uma lista de indicadores selecionáveis 2908.
[0197] Conforme mostrado acima, a camada transparente pode ser usada para controlar uma área de trabalho remota por meio do objeto de transmissão contínua incorporado. Isso proporciona de maneira eficaz, a um usuário que participa da sessão de colaboração, uma interface de controle remoto que permite que ele permaneça na sessão de colaboração e, ao mesmo tempo, navegue na área de trabalho ou nos aplicativos de outros participantes no espaço de trabalho de colaboração. Por exemplo, se dois participantes estivessem apresentando uma apresentação para um grupo de outros participantes, um primeiro participante apresentador poderia compartilhar um aplicativo de apresentação em sua área de trabalho e explicar um primeiro conjunto de slides compartilhados com um objeto de transmissão contínua no espaço de trabalho de colaboração. O primeiro participante apresentador poderia então “ceder” o controle do aplicativo de apresentação a um segundo participante apresentador, que poderia controlar remotamente o aplicativo de apresentação na área de trabalho do primeiro participante apresentador.
[0198] Opcionalmente, a funcionalidade de controle remoto pode incluir permissões, autenticação ou algum outro mecanismo de controle de acesso que permita a cada participante configurar se outros participantes podem controlar remotamente sua área de trabalho compartilhada através de um objeto de transmissão contínua e quais participantes podem controlar remotamente sua área de trabalho compartilhada. Por exemplo, cada usuário pode armazenar preferências indicando se ele permite que sua área de trabalho local ou uma porção de sua área de trabalho local seja controlada por outros participantes. Essas preferências podem ser armazenadas em cada dispositivo de computação (e podem ser acessíveis à camada transparente e usadas pela camada transparente para permitir ou bloquear entradas de controle remoto) ou podem ser armazenadas no servidor e usadas pelo servidor para permitir ou bloquear entradas de controle remoto entre dispositivos de computação. Independentemente de como esses mecanismos de controle de acesso são armazenados, eles podem ser usados para determinar se um participante remoto pode fornecer entrada para a área de trabalho de outro participante por meio de um objeto de transmissão contínua inserido.
[0199] Uma ou mais das técnicas descritas acima podem ser implementadas em, ou envolver um ou mais sistemas de computador. A Fig. 32 ilustra um exemplo de um ambiente de computação especializado 3200. O ambiente de computação 3200 não se destina a sugerir nenhuma limitação ao escopo de uso ou funcionalidade de uma ou mais modalidades descritas.
[0200] Com referência à Fig. 32, o ambiente de computação 3200 inclui pelo menos uma unidade de processamento 3210 e memória 3220. A unidade de processamento 3210 executa instruções executáveis em computador e pode ser um processador real ou virtual. Em um sistema de múltiplo processamento, múltiplas unidades de processamento executam instruções executáveis em computador para aumentar a potência de processamento. A memória 3220 pode ser uma memória volátil (por exemplo, registros, cache, RAM), uma memória não volátil (por exemplo, ROM, EEPROM, memória flash etc.), ou alguma combinação das duas. A memória 3220 pode armazenar software 3280 que implementa as técnicas descritas.
[0201] Um ambiente de computação pode ter recursos adicionais. Por exemplo, o ambiente de computação 3200 inclui o armazenamento 3240, um ou mais dispositivos de entrada 3250, um ou mais dispositivos de saída 3260 e uma ou mais conexões de comunicação 3290. Um mecanismo de interconexão 3270, tal como um barramento, um controlador ou uma rede, interconecta os componentes do ambiente de computação 3200. Geralmente, o software ou firmware de sistema de operação (não mostrado) fornece um ambiente de operação para outro software em execução no ambiente de computação 3200 e coordena as atividades dos componentes do ambiente de computação 3200.
[0202] O armazenamento 3240 pode ser removível ou não removível, e inclui discos magnéticos, fitas magnéticas ou cassetes, CD-ROMs, CD-RWs, DVDs, ou qualquer outra mídia que possa ser usada para armazenar informações e que possam ser acessadas dentro do ambiente de computação 3200. O armazenamento 3240 pode armazenar instruções para o software 3280.
[0203] O(s) dispositivo(s) de entrada 3250 pode(m) ser um dispositivo de entrada de toque, tal como um teclado, um mouse, uma caneta, um teclado tipo trackball, uma tela sensível ao toque, um controlador de jogos, um dispositivo de entrada de voz, um dispositivo de varredura, uma câmera digital, um controle remoto, ou outro dispositivo que forneça entrada ao ambiente de computação 3200. O(s) dispositivo(s) de saída 3260 pode(m) ser um visor, uma televisão, um monitor, uma impressora, um alto-falante, ou outro dispositivo que forneça saída a partir do ambiente de computação 3200.
[0204] A(s) conexão(ões) de comunicação 3290 permite(m) a comunicação através de uma mídia de comunicação a outra entidade de computação. A mídia de comunicação transporta informações tais como instruções executáveis em computador, informações de áudio ou vídeo, ou outros dados em um sinal de dados modulado. Um sinal de dados modulado é um sinal que tem uma ou mais de suas características definidas ou mudadas de tal modo a codificar informações no sinal. A título de exemplo, e não de limitação, as mídias de comunicação incluem técnicas com fio ou sem fio implementadas com uma portadora elétrica, óptica, de RF, infravermelha, acústica, ou outra portadora.
[0205] Implementações podem ser descritas no contexto de mídias legíveis por computador. Mídias legíveis por computador são quaisquer mídias disponíveis que podem ser acessadas dentro de um ambiente de computação. A título de exemplo, e não de limitação, dentro do ambiente de computação 3200, mídias legíveis por computador incluem a memória 3220, o armazenamento 3240, mídias de comunicação e combinações de qualquer dos supracitados.
[0206] Evidentemente, a Fig. 32 ilustra o ambiente de computação 3200, o dispositivo de exibição 3260, e o dispositivo de entrada 3250 como dispositivos separados para facilidade de identificação somente. O ambiente de computação 3200, o dispositivo de exibição 3260 e o dispositivo de entrada 3250 podem ser dispositivos separados (por exemplo, um computador pessoal conectado por fios a um monitor e a um mouse), podem ser integrados em um dispositivo único (por exemplo, um dispositivo móvel com um visor de toque, tal como um telefone inteligente ou um tablet), ou qualquer combinação de dispositivos (por exemplo, um dispositivo de computação acoplado de modo operativo a um dispositivo de exibição de tela sensível ao toque, uma pluralidade de dispositivos de computação conectada a um único dispositivo de exibição e dispositivo de entrada etc.). O ambiente de computação 3200 pode ser um decodificador, um computador pessoal ou um ou mais servidores, por exemplo, uma fazenda de servidores em rede, um ambiente de servidores agrupados, ou uma rede em nuvem de dispositivos de computação.
[0207] Tendo descrito e ilustrado os princípios da invenção em referência à modalidade descrita, será reconhecido que a modalidade descrita pode ser modificada em disposição e detalhes sem se afastar de tais princípios. Elementos da modalidade descrita mostrados em software podem ser implementados em hardware e vice-versa.
[0208] Em vista das muitas modalidades possíveis às quais os princípios da invenção podem ser aplicados, são reivindicadas como invenção todas essas modalidades, conforme possam estar dentro do escopo e do espírito das reivindicações a seguir e de equivalentes às mesmas.

Claims (20)

REIVINDICAÇÕES
1. MÉTODO PARA COMPARTILHAMENTO DE ÁREA DE TRABALHO ATRAVÉS DE
UMA CONEXÃO DE SOQUETE DA WEB EM UM ESPAÇO DE TRABALHO DE COLABORAÇÃO EM REDE, caracterizado por compreender as etapas de: - transmitir, em uma interface de usuário de um dispositivo de computação local, uma representação de um espaço de trabalho de colaboração hospedado em um servidor e acessível a uma pluralidade de participantes em uma pluralidade de dispositivos de computação através de uma conexão de soquete da web; - receber, pelo dispositivo de computação local, uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração e uma seleção de uma área dentro da representação da área de trabalho de colaboração; - gerar, pelo dispositivo de computação local, um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local; e - transmitir, pelo dispositivo de computação local, um ou mais comandos para o servidor através da conexão de soquete da web, o um ou mais comandos compreendendo o objeto de transmissão contínua e informações correspondentes à área selecionada e sendo configurados para fazer com que o servidor insira o objeto de transmissão contínua no espaço de trabalho de colaboração na área selecionada.
2. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de receber uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local e uma seleção de uma área dentro da representação do espaço de trabalho de colaboração compreende:
- transmitir uma interface de seleção de origem dentro da interface de usuário, a interface de seleção de origem sendo configurada para receber uma seleção da pelo menos uma porção da área de trabalho local; e - receber uma seleção da pelo menos uma porção da área de trabalho local.
3. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que a pelo menos uma porção compreende uma dentre uma janela dentro da área de trabalho local, uma interface correspondendo a um aplicativo em execução no dispositivo de computação local, ou a área de trabalho local.
4. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que a representação de um espaço de trabalho de colaboração hospedado no servidor é transmitida no dispositivo de computação local por um aplicativo de colaboração local em execução no dispositivo de computação local e onde a geração de um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local compreende as etapas de: - transmitir, pelo aplicativo de colaboração local, uma solicitação para um identificador de origem para um programa de captura de tela em execução no dispositivo de computação local por meio de uma Interface de Programação de Aplicativo (API) entre o aplicativo de colaboração local e o programa de captura de tela; - iniciar, pelo programa de captura de tela, um fluxo contínuo de pelo menos uma porção da área de trabalho local do dispositivo de computação local, o fluxo contínuo tendo um identificador de origem correspondente; - transmitir, pelo programa de captura de tela, o identificador de origem para o aplicativo de colaboração local;
- gerar, pelo aplicativo de colaboração local, o objeto de transmissão contínua com base, pelo menos em parte, no identificador de origem.
5. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que o objeto de transmissão contínua inserido é configurado para receber o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local e transmitir o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local para a pluralidade de dispositivos de computação através da conexão de soquete da web.
6. MÉTODO, de acordo com a reivindicação 1, caracterizado por compreender, adicionalmente, as etapas de: - transmitir, na interface de usuário do dispositivo de computação local, o objeto de transmissão contínua inserido dentro da representação da área de trabalho de colaboração, o objeto de transmissão contínua inserido sendo associado a um endereço de rede de uma origem do fluxo contínuo de vídeo; - detectar, por uma camada transparente em execução no dispositivo de computação local, uma entrada de usuário associada ao objeto de transmissão contínua inserido, a entrada de usuário correspondendo a um local dentro da área de trabalho local, onde a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional; - determinar, pela camada transparente em execução no dispositivo de computação local, que o endereço de rede associado ao objeto de transmissão contínua inserido corresponde a um endereço de rede do dispositivo de computação local; e
- transmitir, pela camada transparente em execução no dispositivo de computação local, um ou mais segundos comandos para um ou mais dentre: o sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional, os um ou mais segundos comandos sendo configurados para realizar a entrada de usuário no local dentro da área de trabalho local.
7. MÉTODO, de acordo com a reivindicação 1, caracterizado por compreender, adicionalmente, as etapas de: - transmitir, em uma interface de usuário remota de um dispositivo de computação remoto na pluralidade de dispositivos de computação, o objeto de transmissão contínua inserido dentro de uma representação remota do espaço de trabalho de colaboração, o objeto de transmissão contínua inserido sendo associado a um endereço de rede de uma origem do fluxo contínuo de vídeo; - detectar, por uma camada transparente remota em execução no dispositivo de computação remoto, uma entrada de usuário remoto associada ao objeto de transmissão contínua inserido, a entrada de usuário remoto correspondendo a um local dentro da área de trabalho local, onde a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional; - determinar, pela camada transparente remota em execução no dispositivo de computação remoto, que o endereço de rede associado ao objeto de transmissão contínua inserido não corresponde a um endereço de rede do dispositivo de computação remoto; e - transmitir, pela camada transparente remota em execução no dispositivo de computação remoto, um ou mais segundos comandos para o dispositivo de computação local através da conexão de soquete da web, os um ou mais segundos comandos sendo configurados para fazer com que uma camada transparente local em execução no dispositivo de computação local provoque a execução da entrada de usuário no local dentro da área de trabalho local.
8. DISPOSITIVO DE COMPUTAÇÃO LOCAL PARA COMPARTILHAMENTO DE UMA
ÁREA DE TRABALHO ATRAVÉS DE UMA CONEXÃO DE SOQUETE DA WEB EM UM ESPAÇO DE TRABALHO DE COLABORAÇÃO EM REDE, caracterizado por compreender: - um ou mais processadores; e - uma ou mais memórias acopladas de modo operativo a pelo menos um dos um ou mais processadores e tendo instruções nelas armazenadas que, quando executadas por pelo menos um dos um ou mais processadores, fazem com que pelo menos um dos um ou mais processadores: - transmita, em uma interface de usuário do dispositivo de computação local, uma representação de um espaço de trabalho de colaboração hospedado em um servidor e acessível a uma pluralidade de participantes em uma pluralidade de dispositivos de computação através de uma conexão de soquete da web; - receba uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração e uma seleção de uma área dentro da representação da área de trabalho de colaboração; - gere um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local; e
- transmita um ou mais comandos para o servidor através da conexão de soquete da web, o um ou mais comandos compreendendo o objeto de transmissão contínua e informações correspondentes à área selecionada e sendo configurados para fazer com que o servidor insira o objeto de transmissão contínua no espaço de trabalho de colaboração na área selecionada.
9. DISPOSITIVO DE COMPUTAÇÃO LOCAL, de acordo com a reivindicação 8, caracterizado pelo fato de que as instruções que, quando executadas por pelo menos um dos um ou mais processadores, fazem com que pelo menos um dos um ou mais processadores receba uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local e uma seleção de uma área dentro da representação da área de trabalho de colaboração, fazem, adicionalmente, com que pelo menos um dentre o um ou mais processadores: - transmita uma interface de seleção de origem dentro da interface de usuário, a interface de seleção de fonte sendo configurada para receber uma seleção de pelo menos uma porção da área de trabalho local; e - receba uma seleção da pelo menos uma porção da área de trabalho local.
10. DISPOSITIVO DE COMPUTAÇÃO LOCAL, de acordo com a reivindicação 8, caracterizado pelo fato de que pelo menos uma porção compreende uma dentre uma janela dentro da área de trabalho local, uma interface que corresponde a um aplicativo em execução no dispositivo de computação local, ou a área de trabalho local.
11. DISPOSITIVO DE COMPUTAÇÃO LOCAL, de acordo com a reivindicação 8, caracterizado pelo fato de que a representação de um espaço de trabalho de colaboração hospedado no servidor é transmitida no dispositivo de computação local por um aplicativo de colaboração local em execução no dispositivo de computação local e onde as instruções que, quando executadas por pelo menos um dentre os um ou mais processadores, fazem com que pelo menos um dentre os um ou mais processadores gere um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local, fazem, adicionalmente, com que pelo menos um dentre os um ou mais processadores: - transmita, pelo aplicativo de colaboração local, uma solicitação para um identificador de origem para um programa de captura de tela em execução no dispositivo de computação local por meio de uma Interface de Programação de Aplicativo (API) entre o aplicativo de colaboração local e o programa de captura de tela; - inicie, pelo programa de captura de tela, um fluxo contínuo de pelo menos uma porção da área de trabalho local do dispositivo de computação local, o fluxo contínuo tendo um identificador de origem correspondente; - transmita, pelo programa de captura de tela, o identificador de origem para o aplicativo de colaboração local; e - gere, pelo aplicativo de colaboração local, o objeto de transmissão contínua com base, pelo menos em parte, no identificador de origem.
12. DISPOSITIVO DE COMPUTAÇÃO LOCAL, de acordo com a reivindicação 8, caracterizado pelo fato de que o objeto de transmissão contínua inserido é configurado para receber o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local e transmitir o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local para a pluralidade de dispositivos de computação através da conexão de soquete da web.
13. DISPOSITIVO DE COMPUTAÇÃO LOCAL, de acordo com a reivindicação 8, caracterizado pelo fato de que pelo menos uma dentre as uma ou mais memórias tem outras instruções nelas armazenadas que, quando executadas por pelo menos um dentre os um ou mais processadores, fazem com que pelo menos um dentre os um ou mais processadores: - transmita, na interface de usuário do dispositivo de computação local, o objeto de transmissão contínua inserido dentro da representação da área de trabalho de colaboração, o objeto de transmissão contínua inserido sendo associado a um endereço de rede de uma origem do fluxo contínuo de vídeo; - detecte, por uma camada transparente em execução no dispositivo de computação local, uma entrada de usuário associada ao objeto de transmissão contínua inserido, a entrada de usuário correspondendo a um local dentro da área de trabalho local, onde a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional; - determine, pela camada transparente em execução no dispositivo de computação local, que o endereço de rede associado ao objeto de transmissão contínua inserido corresponde a um endereço de rede do dispositivo de computação local e
- transmita, pela camada transparente em execução no dispositivo de computação local, um ou mais segundos comandos para um ou mais dentre: o sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional, os um ou mais segundos comandos sendo configurados para realizar a entrada de usuário no local dentro da área de trabalho local.
14. MÍDIA LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIA (pelo menos uma) caracterizada pelo fato de armazenar instruções legíveis por computador que, quando executadas por um dispositivo de computação local, fazem com que o dispositivo de computação local: - transmita, em uma interface de usuário de um dispositivo de computação local, uma representação de um espaço de trabalho de colaboração hospedado em um servidor e acessível a uma pluralidade de participantes em uma pluralidade de dispositivos de computação através de uma conexão de soquete da web; - receba uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local dentro da área de trabalho de colaboração e uma seleção de uma área dentro da representação da área de trabalho de colaboração; - gere um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local; e - transmita um ou mais comandos para o servidor através da conexão de soquete da web, os um ou mais comandos compreendendo o objeto de transmissão contínua e informações correspondentes à área selecionada e sendo configurados para fazer com que o servidor insira o objeto de transmissão contínua no espaço de trabalho de colaboração na área selecionada.
15. MÍDIA, de acordo com a reivindicação 14, caracterizada pelo fato de que as instruções que, quando executadas pelo dispositivo de computação local, fazem com que o dispositivo de computação local receba uma solicitação para compartilhar pelo menos uma porção de uma área de trabalho local do dispositivo de computação local e uma seleção de uma área dentro da representação do espaço de trabalho de colaboração, fazem, adicionalmente, com que o dispositivo de computação local: - transmita uma interface de seleção de origem dentro da interface de usuário, a interface de seleção de origem sendo configurada para receber uma seleção de pelo menos uma porção da área de trabalho local; e - receba uma seleção da pelo menos uma porção da área de trabalho local.
16. MÍDIA, de acordo com a reivindicação 14, caracterizada pelo fato de que a pelo menos uma porção compreende uma dentre uma janela dentro da área de trabalho local, uma interface que corresponde a um aplicativo em execução no dispositivo de computação local, ou a área de trabalho local.
17. MÍDIA, de acordo com a reivindicação 14, caracterizada pelo fato de que a representação de um espaço de trabalho de colaboração hospedado no servidor é transmitida no dispositivo de computação local por um aplicativo de colaboração local em execução no dispositivo de computação local e onde as instruções que, quando executadas pelo dispositivo de computação local, fazem com que o dispositivo de computação local gere um objeto de transmissão contínua configurado para emitir um fluxo contínuo de vídeo de pelo menos uma porção da área de trabalho local do dispositivo de computação local, fazem, adicionalmente, com que o dispositivo de computação local:
- transmita, pelo aplicativo de colaboração local, uma solicitação para um identificador de origem para um programa de captura de tela em execução no dispositivo de computação local por meio de uma Interface de Programação de Aplicativo (API) entre o aplicativo de colaboração local e o programa de captura de tela; - inicie, pelo programa de captura de tela, um fluxo contínuo de pelo menos uma porção da área de trabalho local do dispositivo de computação local, o fluxo contínuo tendo um identificador de fonte correspondente; - transmita, pelo programa de captura de tela, o identificador de origem para o aplicativo de colaboração local; e - gere, pelo aplicativo de colaboração local, o objeto de transmissão contínua com base, pelo menos em parte, no identificador de origem.
18. MÍDIA, de acordo com a reivindicação 14, caracterizada pelo fato de que o objeto de transmissão contínua inserido é configurado para receber o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local e transmitir o fluxo contínuo de vídeo da pelo menos uma porção da área de trabalho local do dispositivo de computação local para a pluralidade de dispositivos de computação através da conexão de soquete da web.
19. MÍDIA, de acordo com a reivindicação 14, caracterizada pelo fato de armazenar, adicionalmente, instruções legíveis por computador que, quando executadas pelo dispositivo de computação local, fazem com que o dispositivo de computação local: - transmita, na interface de usuário do dispositivo de computação local, o objeto de transmissão contínua inserido dentro da representação da área de trabalho de colaboração, o objeto de transmissão contínua inserido sendo associado a um endereço de rede de uma origem do fluxo contínuo de vídeo;
- detecte, por uma camada transparente em execução no dispositivo de computação local, uma entrada de usuário associada ao objeto de transmissão contínua inserido, a entrada de usuário correspondendo a um local dentro da área de trabalho local, onde a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional; - determine, pela camada transparente em execução no dispositivo de computação local, que o endereço de rede associado ao objeto de transmissão contínua inserido corresponde a um endereço de rede do dispositivo de computação local; e - transmita, pela camada transparente em execução no dispositivo de computação local, um ou mais segundos comandos para um ou mais dentre: o sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional, os um ou mais segundos comandos sendo configurados para realizar a entrada de usuário no local dentro da área de trabalho local.
20. MÍDIA, de acordo com a reivindicação 14, caracterizada pelo fato de armazenar, adicionalmente, instruções legíveis por computador que, quando executadas por um dispositivo de computação remoto na pluralidade de dispositivos de computação, fazem com que o dispositivo de computação remoto: - transmita, em uma interface de usuário remota do dispositivo de computação remoto, o objeto de transmissão contínua inserido dentro de uma representação remota do espaço de trabalho de colaboração, o objeto de transmissão contínua inserido sendo associado a um endereço de rede de uma fonte do fluxo contínuo de vídeo;
- detecte, por uma camada transparente remota em execução no dispositivo de computação remoto, uma entrada de usuário remoto associada ao objeto de transmissão contínua inserido, a entrada de usuário remoto correspondendo a um local dentro da área de trabalho local, onde a camada transparente compreende uma interface de programação de aplicativo (API) configurada para fazer interface com um ou mais dentre: um sistema operacional ou um ou mais aplicativos configurados para serem executados no sistema operacional;
- determine, pela camada transparente remota em execução no dispositivo de computação remoto, que o endereço de rede associado ao objeto de transmissão contínua inserido não corresponde a um endereço de rede do dispositivo de computação remoto; e
- transmita, pela camada transparente remota em execução no dispositivo de computação remoto, um ou mais segundos comandos para o dispositivo de computação local através da conexão de soquete da web, os um ou mais segundos comandos sendo configurados para fazer com que uma camada transparente local em execução no dispositivo de computação local provoque a execução da entrada de usuário no local dentro da área de trabalho local.
BR112020024441-4A 2018-06-01 2019-05-30 método, dispositivo de computação local e mídia legível por computador não transitória para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede BR112020024441A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/995,878 US11412012B2 (en) 2017-08-24 2018-06-01 Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
US15/995,878 2018-06-01
PCT/EP2019/064131 WO2019229208A1 (en) 2018-06-01 2019-05-30 Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
BR112020024441A2 true BR112020024441A2 (pt) 2021-03-23

Family

ID=66821200

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020024441-4A BR112020024441A2 (pt) 2018-06-01 2019-05-30 método, dispositivo de computação local e mídia legível por computador não transitória para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede

Country Status (6)

Country Link
EP (1) EP3803558A1 (pt)
JP (1) JP2021525910A (pt)
KR (1) KR20210018353A (pt)
CN (1) CN112204512A (pt)
BR (1) BR112020024441A2 (pt)
WO (1) WO2019229208A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230127644A1 (en) * 2021-10-25 2023-04-27 Wei Li Methods, devices, and media for managing a virtual workspace

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120010995A1 (en) * 2008-10-23 2012-01-12 Savnor Technologies Web content capturing, packaging, distribution
US10860279B2 (en) * 2009-11-24 2020-12-08 Clearslide, Inc. Method and system for browser-based screen sharing
CA2722460A1 (en) * 2010-11-26 2012-05-26 Centre De Recherche Informatique De Montreal Screen sharing and video conferencing system and method
US8745266B2 (en) * 2011-06-30 2014-06-03 Citrix Systems, Inc. Transparent layer 2 redirection of request to single sign in service based on applying policy to content of request
US9152376B2 (en) * 2011-12-01 2015-10-06 At&T Intellectual Property I, L.P. System and method for continuous multimodal speech and gesture interaction
US20140101571A1 (en) * 2012-10-04 2014-04-10 Lucid Dream Software, Inc. Shared collaborative environment
US10484189B2 (en) * 2013-11-13 2019-11-19 Microsoft Technology Licensing, Llc Enhanced collaboration services
US10747418B2 (en) * 2015-07-24 2020-08-18 Coscreen, Inc. Frictionless interface for virtual collaboration, communication and cloud computing

Also Published As

Publication number Publication date
JP2021525910A (ja) 2021-09-27
EP3803558A1 (en) 2021-04-14
KR20210018353A (ko) 2021-02-17
CN112204512A (zh) 2021-01-08
WO2019229208A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US20220382505A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
JP5442727B2 (ja) ユーザーインターフェイス表示上での教示動画の表示
US8261190B2 (en) Displaying help sensitive areas of a computer application
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
JP2013229028A (ja) リモートデバイスのためのユーザインターフェイス仮想化
EP3039523A1 (en) Gesture-based content sharing between devices
US10990344B2 (en) Information processing apparatus, information processing system, and information processing method
BR112020003524A2 (pt) método, aparelho e meio legível por computador para implementação de uma interface universal de hardware-software
BR112020018877A2 (pt) Método, dispositivo de computação local e meio de armazenamento legível por computador não transitório para transmissão de arquivos através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede
BR112020024441A2 (pt) método, dispositivo de computação local e mídia legível por computador não transitória para compartilhamento de área de trabalho através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede
JP2021533456A (ja) ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を介して拡充ノート・データ・オブジェクトを伝えるための方法、装置及びコンピュータ可読媒体
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
BR112020023519A2 (pt) método, dispositivo de computação local e mídia legível por computador não transitória que armazena instruções legíveis por computador para propagar imagens cortadas através de uma conexão de soquete da web em um espaço de trabalho de colaboração em rede
US20230143785A1 (en) Collaborative digital board
KR20190115401A (ko) 링크 뷰 방법, 링크 뷰 장치 및 링크 뷰 프로그램

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B11Y Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette]