BR112020018877A2 - 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 - Google Patents

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 Download PDF

Info

Publication number
BR112020018877A2
BR112020018877A2 BR112020018877-8A BR112020018877A BR112020018877A2 BR 112020018877 A2 BR112020018877 A2 BR 112020018877A2 BR 112020018877 A BR112020018877 A BR 112020018877A BR 112020018877 A2 BR112020018877 A2 BR 112020018877A2
Authority
BR
Brazil
Prior art keywords
remote
computing device
file
local
socket connection
Prior art date
Application number
BR112020018877-8A
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/923,943 external-priority patent/US10931733B2/en
Application filed by Re Mago Ltd filed Critical Re Mago Ltd
Publication of BR112020018877A2 publication Critical patent/BR112020018877A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • G06F16/192Implementing virtual folder structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • Software Systems (AREA)
  • Strategic Management (AREA)
  • Human Computer Interaction (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • User Interface Of Digital Computer (AREA)
  • Position Input By Displaying (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

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 . que incluem transmitir uma representação de um espaço de trabalho de colaboração hospedado em um servidor e acessível a participantes através de uma conexão de soquete da web, a representação do espaço de trabalho de colaboração compreendendo objetos participantes remotos correspondendo a dispositivos de computação remotos conectados ao servidor, gerar uma ou mais pastas dinâmicas correspondentes aos objetos participantes remotos, cada pasta dinâmica sendo mapeada a um endereço de rede de um dispositivo de computação remoto correspondendo ao objeto participante remoto, detectar uma entrada de usuário para arrastar um ícone correspondente a um arquivo próximo a um objeto participante remoto, e armazenar o pelo menos um arquivo em uma pasta dinâmica correspondente ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web.

Description

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 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 fornecer 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. Neste 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 do aplicativo e o software em um driver que é responsável por fazer interface com o próprio dispositivo de hardware (o microfone).
[0003] Um problema com software existente que faz uso de dispositivos de hardware especializados é que o próprio aplicativo ou software 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 de aplicativo ou outros componentes dentro do sistema operacional com uso de comandos de voz a menos que aqueles outros programas de aplicativo 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 Fig. 1 inclui executar aplicativos 101A e 102A, onde cada um dos quais tem seus próprios 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 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 o dispositivo de hardware 100D.
[0006] A arquitetura do sistema mostrado na Fig. 1 limita a capacidade dos 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 o 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 compreende 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 o um ou mais comandos de camada transparente na camada transparente de acordo com uma modalidade exemplificativa.
[0026] A Fig. 16 ilustra um exemplo de interface 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 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 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. 23 ilustra um fluxograma para gerar uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos de acordo com uma modalidade exemplificativa.
[0035] A Fig. 24 ilustra um exemplo de um processo de consulta de acordo com uma modalidade exemplificativa.
[0036] A Fig. 25 ilustra um exemplo de geração de uma ou mais pastas locais correspondendo ao um ou mais participantes remotos de acordo com uma modalidade exemplificativa.
[0037] A Fig. 26 ilustra um exemplo de mapeamento da uma ou mais pastas locais ao um ou mais endereços de IP de acordo com uma modalidade exemplificativa.
[0038] A Fig. 27 ilustra um exemplo do processo de arrastar e largar e detecção de acordo com uma modalidade exemplificativa.
[0039] A Fig. 28 ilustra outro exemplo do processo de arrastar e largar e detecção de acordo com uma modalidade exemplificativa.
[0040] A Fig. 29 ilustra um fluxograma para armazenar o pelo menos um arquivo em uma pasta dinâmica correspondendo ao objeto participante remoto e para transmitir o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web de acordo com uma modalidade exemplificativa.
[0041] A Fig. 30 ilustra um ambiente de computação exemplificativo configurado para realizar os métodos revelados.
DESCRIÇÃO DETALHADA
[0042] 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 desenhos descritos. Deve-se entender que os desenhos e a descrição não são destinados a serem limitados à forma particular revelada. Em vez disso, a intenção é cobrir todas as modificações, equivalentes e alternativas que se enquadrem 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 do sentido de obrigatoriedade (isto é, significando deve). De modo similar, as palavras “incluem”, “incluir,” e “inclui” significam incluindo, porém, sem limitação.
[0043] A Requerente concebeu um método, um aparelho e um meio legível por computador que solucionam os problemas associados a interfaces de hardware-
software anteriores usadas para dispositivos de hardware. Em particular, a Requerente desenvolveu 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 remove 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.
[0044] 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 comunica 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. Neste exemplo, a camada transparente 203 faz interface entre o driver virtual 204 e a API 201B do aplicativo 201A, a API 202 B do aplicativo 202A, e a API de sistema operacional 200B do sistema operacional 200A.
[0045] 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 (IU), incluindo uma IU transparente sobreposta a uma interface de usuário subjacente e/ou elementos de IU visíveis com os quais um usuário pode interagir.
[0046] O driver virtual 204 é configurado para emular os drivers 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 drivers emulados no driver virtual 204 pode ser configurado para detectar um sinal de inicialização que serve como um sinal ao driver virtual para alternar para um modo de emulação particular. Por exemplo, um usuário que afirma “iniciar 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.
[0047] O driver virtual também pode ser configurado para fazer interface com um driver nativo, tal como o driver nativo 205C, o qual, 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.
[0048] 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 ser preciso que o aplicativo ou o sistema operacional seja customizado para fazer interface com o dispositivo de hardware.
[0049] Por exemplo, o dispositivo de hardware 206A pode capturar informações que são então recebidas pelo driver virtual 204 emulando 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.
[0050] 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 ser transmitida à 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 com o 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 é obtido com camada transparente 203 fazendo interface com cada uma das APIs dos aplicativos em execução no sistema operacional 200A assim como na 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.
[0051] 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 incluindo 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”.
[0052] 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, número de drivers, e drivers emulados podem variar.
[0053] A Fig. 3 ilustra um fluxograma para implementação de uma interface de hardware-software universal de acordo com uma modalidade exemplificativa.
[0054] 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, a um aparelho compreendendo um ou mais processadores e a uma ou mais memórias que executam as etapas do método, ou a qualquer outro sistema de computação.
[0055] 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 ele está emulando outros drivers de hardware e recebendo assim as informações capturadas de um dispositivo de hardware ou pode, opcionalmente, receber 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.
[0056] Uma variedade de dispositivos de hardware pode ser utilizada, tal como uma câmera, uma câmera de vídeo, um microfone, um headset com 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.
[0057] O acoplamento comunicativo entre os dispositivos de hardware e o sistema pode se dar em 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 (tal como através de Bluetooth) transmite sem fios 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 estes exemplos não são destinados a serem limitadores.
[0058] As informações capturadas pelo um ou mais dispositivos de hardware podem ser quaisquer tipos 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.
[0059] 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 inclua nenhum hardware para detectar sinais de toque ou gestos baseados em toque. Isso é descrito em mais detalhes abaixo e pode ser obtido através de análise de imagens capturadas por uma câmera ou uma câmera de vídeo.
[0060] 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.
[0061] 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.
[0062] Na etapa 402 um objeto na 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 ou controle remoto de rastreamento de movimento que é acoplado de modo comunicativo ao sistema e que contém acelerômetros e/ou sensores de inclinação. O reconhecimento de objeto pode ser realizado pelo driver virtual pode ser baseado em treinamento anterior, tal como através de uma rotina de calibração executada com uso do objeto.
[0063] A Fig. 5A ilustra um exemplo de reconhecimento de objeto 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.
[0064] 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 geométricos 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 pelos sensores de inclinação para determinar as posições e orientações do objeto.
[0065] Na etapa 404, a entrada de usuário é determinada com base, pelo menos em parte, na uma ou mais orientações e na uma ou mais posições do objeto reconhecido. Isso pode incluir determinar coordenadas de localização em uma interface de usuário (IU) transparente da camada transparente com base, pelo menos em parte, na uma ou mais orientações e na uma ou mais posições. A IU transparente é parte da camada transparente e é sobreposta a uma IU subjacente correspondendo ao sistema operacional e/ou a quaisquer aplicativos em execução no sistema operacional.
[0066] 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 IU subjacente 506 e uma IU transparente 507 sobreposta à IU subjacente 506. Para fins de clareza, a IU transparente 507 é mostrada com sombreamento de pontos, mas deve-se entender que, na prática, a IU transparente é uma camada transparente que não é visível ao usuário. Adicionalmente, a IU transparente 507 é mostrada como ligeiramente menor do que a IU subjacente 506, mas deve-se entender que, na prática, a IU transparente cobriria a mesma área de tela que a IU subjacente.
[0067] 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 coordenadas de entrada no ponto de interseção 505.
[0068] 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 indicando que um objeto nas coordenadas do ponto 505 deve ser selecionado e/ou aberto. O comando também pode ser um comando de apontamento indicando que um apontador (tal como um apontador 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).
[0069] 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 assim determinaria as coordenadas de entrada. Nesse caso, a linha de projeção entre o objeto 502 e o ponto de interseção seria apenas menor.
[0070] 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, na uma ou mais orientações e na 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 para contextos específicos e comandos dentro daqueles contextos. Por exemplo, o usuário pode criar um gesto personalizado que é mapeado para um contexto de sistema operacional e resulta na execução de um comando nativo de sistema operacional que lança um aplicativo particular.
[0071] Conforme discutido anteriormente, as informações capturadas pelo 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, reconhecimento de voz é realizado nas informações de som para identificar uma ou mais palavras correspondentes à entrada de usuário.
[0072] 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. A uma ou mais palavras identificadas podem ser então convertidas em comandos de camada transparente e passados à camada transparente.
[0073] Conforme discutido anteriormente, o driver emulado pelo driver virtual, o tipo esperado de entrada de usuário 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.
[0074] A Fig. 7 ilustra uma interface de ferramenta 701 que também pode ser parte da camada transparente. Diferentemente da IU 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.
[0075] 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 consistir em coordenadas de entrada (tais como coordenadas baseadas em um usuário tocando a tela com sua mão ou com 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.
[0076] O botão 701B permite que o usuário alterne entre os modos de seleção, apontamento ou 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 resultar 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 apontador 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 para esperar entrada de imagem e/ou entrada de movimento (se um dispositivo de rastreamento de movimento for usado) e para emular os drivers apropriados adequadamente.
[0077] O botão 701C alerta o driver virtual para esperar um comando de voz. Isso pode fazer com que o driver virtual emule drivers correspondentes a um microfone acoplado para receber entrada de voz e para analisar a entrada de voz conforme descrito em relação à Fig. 6.
[0078] 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, tais como comandos de voz personalizados, gestos personalizados, comandos nativos personalizados para aplicativos associados à entrada de usuário e/ou calibrar dispositivos de hardware e entrada de usuário (tal como calibração de voz, calibração de dispositivo de captura de movimento e/ou calibração de reconhecimento de objeto).
[0079] 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 tiver marcado uma interface de usuário particular, a versão marcada pode ser exportada como uma imagem.
[0080] 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. De forma 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.
[0081] 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 IU subjacente ao estado em que estava antes de o usuário criar um desenho.
[0082] 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.
[0083] O botão 701I pode ser usado para adicionar notas textuais a objetos, tais como objetos mostrados na IU do sistema operacional ou em uma IU de aplicativo. As notas textuais podem ser interpretadas a partir de sinais de voz ou digitadas pelo usuário com uso de um teclado.
[0084] 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 a partir da interface de usuário subjacente.
[0085] Conforme discutido anteriormente, uma caneta stylus ou dispositivo de hardware remoto pode ser usado com o presente sistema, em conjunto com outros dispositivos de hardware, tal 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 de 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.
[0086] Conforme mostrado na Fig. 8, a caneta stylus 801 pode incluir botões físicos 801A. Esses botões físicos 801 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 desenhar e editar quando no modo de desenho. A caneta stylus 801 também pode incluir hardware de rastreamento de movimento, tais 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.
[0087] Retornando à Fig. 3, na etapa 302 é identificado um contexto correspondendo à entrada de usuário. O contexto identificado compreende um dentre um sistema operacional ou um aplicativo em execução no sistema operacional.
[0088] A Fig. 9 ilustra um fluxograma para identificar um contexto correspondendo à 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.
[0089] 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 sendo 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 sendo 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.
[0090] 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 à 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.
[0091] A entrada de usuário 903 também pode ser usada para determinar o contexto em uma variedade de 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.
[0092] 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 a camada transparente 1003 sobreposta à 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.
[0093] 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.
[0094] A Fig. 11 ilustra um fluxograma para converter entrada 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.
[0095] 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 é “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 que é rolada.
[0096] A entrada de usuário 1103 também determina o comando de camada transparente na uma vez que entradas de usuário são especificamente mapeadas a determinados comandos nativos dentro de um ou mais contextos e esses comandos nativos são parte do comando de camada transparente. Por exemplo, um comando de voz “Abrir E-mail” pode ser mapeado a um comando nativo de sistema operacional específico para inicializar o aplicativo de correio eletrônico Outlook. Quando uma entrada de voz é recebida incluindo as palavras reconhecidas “Abrir E- mail,” isso resulta em um comando de camada transparente ser determinado que inclui o comando nativo para inicializar Outlook.
[0097] 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 correspondendo 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 a contextos identificados.
[0098] 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 IU subjacente.
[0099] Quando há mais do que uma ação possível mapeada a um contexto e a uma entrada de usuário particular, 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 o usuário selecione entre os modos de seleção, apontamento ou 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 IU subjacente, um comando de apontador configurado para mover um apontador às coordenadas de localização correspondentes na IU subjacente, e um comando gráfico configurado para alterar a saída de exibição nas coordenadas de localização correspondentes na IU subjacente.
[0100] 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 caneta stylus 1200 na IU de sistema operacional 1202 (tendo IU transparente sobreposta 1203) no dispositivo de exibição 1201. De modo similar 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 IU 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.
[0101] 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 apontador de mouse 1206 à localização das coordenadas de entrada.
[0102] 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.
[0103] 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.
[0104] 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, na(s) 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 a(s) uma ou mais palavras identificadas no contexto identificado.
[0105] 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.
[0106] 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, a(s) uma ou mais palavras são “abrir e-mail”. 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 “e-mail aberto” que será emitida em reposta ao recebimento do comando de voz.
[0107] Retornando à Fig. 3, na etapa 304 o um ou mais comandos de camada transparente são executados na camada transparente. A execução do um ou mais comandos de camada transparente é configurada para causar a execução de um ou mais comandos nativos no contexto identificado.
[0108] A Fig. 15 ilustra um fluxograma para executar o 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 identificação.
[0109] 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 aquele 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.
[0110] Opcionalmente, na etapa 1503, uma resposta pode ser transmitida ao(s) dispositivo(s) de hardware. Conforme discutido anteriormente, essa resposta pode ser direcionada a partir da camada transparente ao driver virtual e ao dispositivo de hardware.
[0111] As Figs. 16 a 19 ilustram recursos adicionais do sistema revelado no presente documento. A Fig. 16 ilustra um exemplo de interface para adicionar novos comandos correspondentes à entrada 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 utilizando-se 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 dos 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 em 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 de aplicativo, realizar ação dentro de comando de aplicativo, comando de fechar aplicativo etc.); Início de Processo: se for inicializado um novo processo ou aplicativo, o nome do processo ou aplicativo; e Parâmetro: quaisquer parâmetros para passar ao novo processo ou aplicativo.
[0112] A Fig. 17 ilustra vários componentes e opções da interface de desenho 1700 e modo de desenho de acordo com uma modalidade exemplificativa. A Fig. 18 ilustra uma interface de calibração e 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 “Stylus Mágica”).
[0113] O sistema revelado no presente documento pode ser implementado em múltiplos dispositivos de computação em rede e usado como um auxílio à condução de 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.
[0114] No entanto, um dos problemas com quadros de comunicação existentes ou outros espaços de colaborações compartilhados é que não há um modo fácil de compartilhar arquivos com participantes conectados. Embora determinados aplicativos permitam que o grupo inteiro revise arquivos, tais como documentos, através do espaço de colaboração, de modo que um usuário compartilhe um arquivo com outro usuário, é necessário abrir um novo aplicativo (tal como aplicativo de compartilhamento de cliente de e-mail ou de arquivo) de modo a transmitir o arquivo ao outro usuário. 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.
[0115] Além dos métodos e sistemas anteriormente descritos para implementação de uma interface de hardware-software universal, a Requerente também concebeu métodos, aparelhos e mídias legíveis por computador que permitem transmissão de arquivos em tempo real através de uma conexão de soquete da web durante uma sessão de colaboração entre computadores em rede.
[0116] A Fig. 20 ilustra um fluxograma 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 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.
[0117] Na etapa 2001 uma representação de um espaço de trabalho de colaboração hospedado em um servidor e acessível a uma pluralidade de participantes através de uma conexão de soquete da web é transmitida em uma interface de usuário de um dispositivo de computação local. A representação do espaço de trabalho de colaboração pode incluir um ou mais objetos participantes remotos correspondendo a um ou mais dispositivos de computação remotos conectados ao servidor. Conforme usado no presente documento, 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).
[0118] 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. Conforme mostrado na Fig. 21A, o servidor 2100 é conectado a dispositivos de computação 2101A- 2101F. O servidor 2100 e os dispositivos de computação
2101A-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, tal como um computador tipo laptop, computador tipo desktop, telefone inteligente, ou outro dispositivo móvel.
[0119] 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 ao 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.
[0120] 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 correspondendo a um ou mais dispositivos de computação remotos conectados ao servidor.
[0121] 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. Conforme mostrado, cada representação é customizada ao participante local (ao dispositivo de computação local). Por exemplo, a representação 2201A para o Usuário 1 inclui objetos participantes remotos correspondentes ao Usuário 2 e ao Usuário 3. De modo similar, a representação 2201B para o Usuário 2 inclui objetos participantes remotos correspondentes ao Usuário 1 e ao Usuário 3 e a representação 2201C para o Usuário 3 inclui objetos participantes remotos correspondentes ao Usuário 1 e ao Usuário 2.
[0122] Os objetos participantes remotos indicam um participante remoto e podem tomar muitas formas. Por exemplo, um objeto participante remoto pode ser um fluxo de vídeo incorporado de um participante remoto que é conectado por meio de videoconferência ou webcam. O objeto participante remoto também pode ser um ícone que representa o participante remoto, um avatar do participante remoto, ou qualquer outro indicador visual ou de áudio de um participante remoto particular. Os objetos participantes remotos podem ser objetos personalizados que podem ser arrastados, movidos e/ou redimensionados dentro da representação do espaço de trabalho.
[0123] Retornando à Fig. 20, na etapa 2002 uma ou mais pastas dinâmicas correspondentes ao um ou mais objetos participantes remotos são geradas no dispositivo de computação local, com cada pasta dinâmica sendo mapeada a um endereço de rede de um dispositivo de computação remoto correspondente ao objeto participante remoto.
[0124] A Fig. 23 ilustra um fluxograma para gerar uma ou mais pastas dinâmicas correspondentes ao um ou mais objetos participantes remotos de acordo com uma modalidade exemplificativa.
[0125] Na etapa 201, o dispositivo de computação local consulta o servidor para um ou mais endereços de Protocolo de Internet (IP) de um ou mais dispositivos de computação remotos correspondendo ao um ou mais objetos participantes remotos.
[0126] A Fig. 24 ilustra um exemplo desse processo de consulta. Conforme mostrado na Fig. 24, os dispositivos de computação 2401A, 2402 e 2403 são todos conectados ao servidor 2400 através de uma conexão de rede bidirecional, tal como uma conexão de soquete da web. O servidor hospeda um espaço de trabalho de colaboração (não mostrado). A Fig. 24 também mostra a representação 2401B do espaço de trabalho de colaboração que é visível em uma interface de usuário do dispositivo de computação 2401A. A representação 2401B inclui objetos participantes remotos correspondendo ao Usuário 2 e ao Usuário 3, que são os usuários dos dispositivos de computação 2402 e 2403, respectivamente. Conforme mostrado na Fig. 24, uma consulta pelos endereços de IP (ou outro tipo de endereços de rede) de dispositivos de computação remotos correspondendo aos objetos participantes remotos é transmitida através da conexão de rede do dispositivo de computação 2401A ao servidor 2400. Em resposta, o servidor transmite os endereços de IP (ou outro tipo de endereços de rede) dos outros dispositivos de computação conectados 2402 e 2403 ao dispositivo de computação 2401A (o dispositivo de computação solicitante). O servidor também pode transmitir informações que permitem que o dispositivo de computação 2401A identifique qual endereço de IP corresponde a qual objeto participante remoto, tal como uma identificação de usuário ou outras informações.
[0127] Retornando à Fig. 23, na etapa 2302 o dispositivo de computação local gera uma ou mais pastas locais correspondendo ao(s) um ou mais objetos participantes remotos. A(s) uma ou mais pastas locais podem ser geradas e armazenadas em uma memória do dispositivo de computação local. Por exemplo, um cache temporário pode ser criado no dispositivo de computação local quando a sessão de espaço de trabalho de colaboração é iniciada. Esse cache temporário armazena informações acerca da sessão, tais como o identificador da reunião e outros detalhes de sessão. A(s) uma ou mais pastas locais podem ser geradas e armazenadas dentro do cache temporário.
[0128] A Fig. 25 ilustra um exemplo de geração de uma ou mais pastas locais correspondendo ao(s) um ou mais participantes remotos de acordo com uma modalidade exemplificativa. O dispositivo de computação local 2500 inclui um visor (não mostrado) que exibe a interface de usuário 2501, incluindo uma representação 2502 do espaço de trabalho de colaboração. A representação de espaço de trabalho de colaboração 2502 inclui dois objetos participantes remotos, correspondendo ao Usuário 2 e ao Usuário 3. Conforme mostrado na Fig. 25, pastas locais F2 e F3 são criadas dentro do armazenamento local 2503 no dispositivo de computação 2500 e ligadas aos objetos participantes remotos para o Usuário 2 e o Usuário 3. As pastas podem ser ligadas aos objetos participantes remotos de várias formas. Por exemplo, uma estrutura de dados personalizada pode ser criada que associa cada objeto participante remoto com uma pasta local. A pasta local pode ser incorporada como um elemento invisível na interface de usuário 2501 e colocada na mesma posição do objeto participante remoto correspondente. O objeto participante remoto pode ter uma API exposta que permite ligação a uma pasta local correspondente. Muitas variações são possíveis e esses exemplos não são destinados a serem limitadores.
[0129] Retornando à Fig. 23, na etapa 2303 uma ou mais pastas dinâmicas são geradas mapeando-se a(s) uma ou mais pastas locais ao(s) um ou mais endereços de IP.
[0130] A Fig. 26 ilustra um exemplo de mapeamento da(s) uma ou mais pastas locais ao(s) um ou mais endereços de IP de acordo com uma modalidade exemplificativa. O dispositivo de computação local 2600 inclui um visor (não mostrado) que exibe a interface de usuário 2601, incluindo o espaço de trabalho de colaboração 2602. A representação de espaço de trabalho de colaboração 2602 inclui dois objetos participantes remotos, correspondendo ao Usuário 2 e ao Usuário 3. As pastas locais F2 e F3 dentro do armazenamento local 2603 no dispositivo de computação 2600 são ligadas aos objetos participantes remotos para o Usuário 2 e o Usuário 3 na representação de espaço de trabalho de colaboração 2602.
[0131] Conforme mostrado na Fig. 26, as pastas locais F2 e F3 são mapeadas aos endereços de rede dos dispositivos de computação remotos 2604 e 2605, respectivamente. O dispositivo de computação 2604 corresponde ao Usuário participante remoto 2 e o dispositivo de computação 2605 corresponde ao Usuário participante remoto 3. O mapeamento das pastas locais aos endereços de rede dos dispositivos de computação remotos pode ser realizado de várias formas. Cada pasta local pode ter, como seu endereço, o endereço de rede do dispositivo de computação remoto correspondente. Nesse caso, a pasta local é uma instanciação de pasta remota no armazenamento local. Adicionalmente, uma estrutura de dados ou script personalizado pode ser configurado para transferir o conteúdo de uma pasta local a um endereço de rede de destino. O script pode fazer interface com a conexão de rede (tal como o soquete da web) de modo a efetuar a transferência. Muitas variações são possíveis e esses exemplos não são destinados a serem limitadores.
[0132] Retornando à Fig. 20, na etapa 2003 uma entrada de usuário para arrastar pelo menos um ícone correspondente a pelo menos um arquivo próximo a um objeto participante remoto no(s) um ou mais objetos participantes remotos é detectada pelo dispositivo de computação local, com o objeto participante remoto correspondendo a um dispositivo de computação remoto no(s) um ou mais dispositivos de computação remotos. Isso é comumente denominado como uma ação de arrastar e largar e pode ser entrada com uso de uma variedade de dispositivos de entrada. Por exemplo, um usuário pode arrastar e largar com uso de um mouse. Um usuário também pode arrastar e largar com uso de um gesto manual ou de uma caneta stylus, conforme discutido anteriormente. As técnicas anteriormente descritas envolvendo o driver virtual e/ou o transparente podem ser usadas para detectar o movimento de arrastar e largar.
[0133] O dispositivo de computação local pode ser configurado para armazenar uma ou mais posições espaciais de um ou mais objetos participantes remotos dentro da interface de usuário. A detecção do fato de um ícone particular ter sido arrastado e largado na proximidade de um objeto participante remoto particular pode ser realizada detectando-se uma entrada de usuário para arrastar um ícone para uma posição espacial de destino que está dentro de uma distância limítrofe de uma posição espacial do objeto participante remoto. A distância limítrofe pode ser definida por um usuário ou pode ser algum valor padrão. Por exemplo, a distância limítrofe pode ser menor do que 10 pixels ou menor do que zero pixel (em cujo caso o ícone arrastado teria de fazer intersecção ou se sobrepor com o objeto participante remoto na interface de usuário).
[0134] A Fig. 27 ilustra um exemplo do processo de arrastar e largar e detecção de acordo com uma modalidade exemplificativa. A interface de usuário 2701 inclui uma representação 2702 de um espaço de trabalho de colaboração, que inclui objetos participantes remotos correspondendo ao Usuário 2 (U2) e ao Usuário 3 (U3). A interface 2701 também inclui uma janela de arquivo ou interface de arquivo 2703, que pode ser, por exemplo, uma pasta aberta em um navegador de arquivos. A interface de arquivo 2703 também pode ser uma área de trabalho do dispositivo de computação local, um aplicativo de compartilhamento de arquivos, um navegador de web ou qualquer outro aplicativo. Conforme mostrado na Fig. 27, um usuário arrastou um arquivo “D3” ao objeto participante remoto para o Usuário 3 (U3).
[0135] Evidentemente, o arquivo também pode ser arrastado de dentro do espaço de trabalho de colaboração. A Fig. 28 ilustra outro exemplo do processo de arrastar e largar e detecção de acordo com uma modalidade exemplificativa. A interface 2801 corresponde a uma representação do espaço de trabalho de colaboração. A porção de interface 2802 pode ser uma seção da representação do espaço de trabalho de colaboração listando vários arquivos. Adicionalmente, nesse caso, o objeto participante remoto 2803 é um fluxo de vídeo incorporado, que pode ser recebido através da conexão de rede (por exemplo, soquete da web). Conforme mostrado na Fig. 28, um participante local (usuário) arrastou um arquivo adobe 2804 ao objeto participante remoto 2803. Evidentemente, o arquivo pode ser qualquer tipo de arquivo, tal como um arquivo de áudio, arquivo de vídeo, arquivo audiovisual, um documento de texto, uma planilha, uma apresentação de slides etc.
[0136] Retornando à Fig. 20, na etapa 2004 o pelo menos um arquivo é armazenado em uma pasta dinâmica correspondendo ao objeto participante remoto pelo dispositivo de computação local para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web (ou outra conexão de rede).
[0137] A Fig. 29 ilustra um fluxograma para armazenar o pelo menos um arquivo em uma pasta dinâmica correspondendo ao objeto participante remoto e para transmitir o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web de acordo com uma modalidade exemplificativa.
[0138] Na etapa 2901 o pelo menos um arquivo correspondente ao pelo menos um ícone arrastado é armazenado na pasta dinâmica. Na etapa 2902 uma cópia do pelo menos um arquivo é transmitida ao endereço de rede mapeado através da conexão de soquete da web (ou outra conexão de rede). A conexão de soquete da web pode ser configurada para direcionar dados armazenados na pasta dinâmica ao endereço de rede mapeado por meio do servidor. Esse direcionamento pode ser realizado de modo similar à atualização mostrada na Fig. 21B, exceto que o arquivo é transmitido a um dispositivo de computação remoto específico e não propagado a todos os dispositivos de computação remotos conectados. Por exemplo, o arquivo pode ser transmitido através do soquete da web ao servidor, onde o endereço de destino pode ser usado pelo servidor para também direcionar o arquivo através do soquete da web ao dispositivo de computação remoto de destino apropriado.
[0139] Visto que uma conexão de soquete da web já é estabelecida como parte do espaço de trabalho de colaboração e/ou como parte de uma videoconferência (quando o objeto participante remoto é um fluxo de vídeo incorporado), o processo descrito utiliza o soquete da web para realizar direcionamento de arquivos ao receptor destinado.
[0140] Na etapa 2903, o pelo menos um arquivo pode ser deletado da pasta dinâmica quando da conclusão da transmissão. Por exemplo, se a pasta dinâmica for armazenada em um cache temporário no dispositivo de computação local, uma vez que uma cópia de um arquivo armazenada na pasta dinâmica tenha sido transmitida (tal como por transmissão contínua) ao dispositivo de computação remoto, o arquivo armazenado na pasta dinâmica local pode ser deletado.
[0141] Uma ou mais das técnicas descritas acima podem ser implementadas em ou envolver um ou mais sistemas de computador. A Fig. 30 ilustra um exemplo de um ambiente de computação especializado 3000. O ambiente de computação 3000 não se destina a sugerir nenhuma limitação com relação ao escopo de uso ou funcionalidade de uma ou mais modalidade(s) descrita(s).
[0142] Em referência à Fig. 30, o ambiente de computação 3000 inclui pelo menos uma unidade de processamento 3010 e uma memória 3020. A unidade de processamento 3010 executa instruções executáveis por computador e pode ser um processador real ou virtual. Em um sistema de multi-processamento, múltiplas unidades de processamento executam instruções executáveis por computador para aumentar a potência de processamento. A memória 3020 pode ser memória volátil (por exemplo, registros, cache, RAM), memória não volátil (por exemplo, ROM, EEPROM, memória flash etc.), ou alguma combinação das duais. A memória 3020 pode armazenar software 3080 que implementa as técnicas descritas.
[0143] Um ambiente de computação pode ter recursos adicionais. Por exemplo, o ambiente de computação 3000 inclui armazenamento 3040, um ou mais dispositivos de entrada 3050, um ou mais dispositivos de saída 3060, e uma ou mais conexões de comunicação 3090. Um mecanismo de interconexão 3070, tal como um barramento, um controlador, ou uma rede interconecta os componentes do ambiente de computação 3000. Tipicamente, um software ou firmware de sistema operacional (não mostrado) fornece um ambiente operacional para outro software em execução no ambiente de computação 3000 e coordena atividades dos componentes do ambiente de computação 3000.
[0144] O armazenamento 3040 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 quaisquer outras mídias que possam ser usadas para armazenar informações e que possam ser acessadas dentro do ambiente de computação 3000. O armazenamento 3040 pode armazenar instruções para o software 3080.
[0145] O(s) dispositivo(s) de entrada 3050 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 ou um controlador de jogos, um dispositivo de entrada de voz, um dispositivo de varredura (escaneamento), uma câmera digital, um controle remoto ou outro dispositivo que forneça entrada ao ambiente de computação 3000. O(s) dispositivo(s) de saída 3060 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 3000.
[0146] A(s) conexão(ões) de comunicação 3090 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 limitação, as mídias de comunicação incluem técnicas com fio ou sem fio implementadas com uma portadora elétrica, óptica, RF, infravermelha, acústica, ou outra portadora.
[0147] Implementações podem ser descritas no contexto de mídias legíveis em computador. Mídias legíveis em 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 limitação, dentro do ambiente de computação 3000, mídias legíveis em computador incluem memória 3020, armazenamento 3040, mídias de comunicação, e combinações de qualquer dos supracitados.
[0148] Evidentemente, a Fig. 30 ilustra o ambiente de computação 3000, o dispositivo de exibição 3060 e o dispositivo de entrada 3050 como dispositivos separados para facilidade de identificação somente. O ambiente de computação 3000, o dispositivo de exibição 3060 e o dispositivo de entrada 3050 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 fixada a um único dispositivo de exibição e dispositivo de entrada etc.). O ambiente de computação 3000 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.
[0149] 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 mostrada em software podem ser implementados em hardware e vice-versa.
[0150] Em vista de muitas modalidades possíveis às quais os princípios da invenção podem ser aplicados, são reivindicadas como invenção todas as tais modalidades, conforme possam estar dentro do escopo e do espírito das reivindicações a seguir e seus equivalentes.

Claims (20)

REIVINDICAÇÕES
1. MÉTODO 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, 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 através de uma conexão de soquete da web, a representação do espaço de trabalho de colaboração compreendendo um ou mais objetos participantes remotos correspondendo a um ou mais dispositivos de computação remotos conectados ao servidor; - gerar, no dispositivo de computação local, uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos, cada pasta dinâmica sendo mapeada a um endereço de rede de um dispositivo de computação remoto correspondendo ao objeto participante remoto; - detectar, pelo dispositivo de computação local, uma entrada de usuário para arrastar pelo menos um ícone correspondendo a pelo menos um arquivo próximo a um objeto participante remoto no um ou mais objetos participantes remotos, o objeto participante remoto correspondendo a um dispositivo de computação remoto no um ou mais dispositivos de computação remotos; e - armazenar, pelo dispositivo de computação local, o pelo menos um arquivo em uma pasta dinâmica correspondendo ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web.
2. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que o um ou mais objetos participantes remotos correspondendo ao um ou mais dispositivos de computação remotos compreendem um ou mais dentre: um fluxo de vídeo incorporado ou um ícone participante remoto.
3. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que o espaço de trabalho de colaboração compreende 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 e em que a representação de espaço de trabalho de colaboração compreende uma representação do quadro de comunicações digital customizado a um participante local.
4. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que gerar uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos compreende as etapas de: - consultar o servidor para um ou mais endereços de Protocolo de Internet (IP) do um ou mais dispositivos e computação remotos correspondendo ao um ou mais objetos participantes remotos; - gerar uma ou mais pastas locais correspondendo ao um ou mais objetos participantes remotos; e - gerar a uma ou mais pastas dinâmicas mapeando-se a uma ou mais pastas locais ao um ou mais endereços de IP.
5. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que o dispositivo de computação local é configurado para armazenar uma ou mais posições espaciais do um ou mais objetos participantes remotos dentro da interface de usuário e em que detectar uma entrada de usuário para arrastar pelo menos um ícone correspondente a pelo menos um arquivo próximo a um objeto participante remoto no um ou mais objetos participantes remotos compreende: - detectar uma entrada de usuário para arrastar o pelo menos um ícone a uma posição espacial de destino que está dentro de uma distância limítrofe de uma posição espacial do objeto participante remoto.
6. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que armazenar o pelo menos um arquivo em uma pasta dinâmica correspondente ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web compreende as etapas de: - armazenar o pelo menos um arquivo na pasta dinâmica; - transmitir uma cópia do pelo menos um arquivo ao endereço de rede mapeado através da conexão de soquete da web, em que a conexão de soquete da web é configurada para direcionar dados ao endereço de rede mapeado por meio do servidor; e - deletar o pelo menos um arquivo da pasta dinâmica ao ser concluída a transmissão.
7. MÉTODO, de acordo com a reivindicação 1, caracterizado pelo fato de que a pasta dinâmica é armazenada em um cache temporário no dispositivo de computação local.
8. DISPOSITIVO DE COMPUTAÇÃO LOCAL 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 caracterizado por compreender: - um ou mais processadores; e - uma ou mais memórias acopladas de modo operativo a pelo menos um do um ou mais processadores e tendo instruções nelas armazenadas que, quando executadas por pelo menos um do um ou mais processadores, fazem com que pelo menos um do 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 através de uma conexão de soquete da web, a representação do espaço de trabalho de colaboração compreendendo um ou mais objetos participantes remotos correspondendo a um ou mais dispositivos de computação remotos conectados ao servidor; - gere uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos, cada pasta dinâmica sendo mapeada a um endereço de rede de um dispositivo de computação remoto correspondendo ao objeto participante remoto; - detecte uma entrada de usuário para arrastar pelo menos um ícone correspondente a pelo menos um arquivo próximo a um objeto participante remoto no um ou mais objetos participantes remotos, o objeto participante remoto correspondendo a um dispositivo de computação remoto no um ou mais dispositivos de computação remotos; e
- armazene o pelo menos um arquivo em uma pasta dinâmica correspondente ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web.
9. DISPOSITIVO de acordo com a reivindicação 8, caracterizado pelo fato de que o um ou mais objetos participantes remotos correspondendo ao um ou mais dispositivos de computação remotos compreendem um ou mais dentre: um fluxo de vídeo incorporado ou um ícone participante remoto.
10. DISPOSITIVO de acordo com a reivindicação 8, caracterizado pelo fato de que o espaço de trabalho de colaboração compreende 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 e em que a representação de espaço de trabalho de colaboração compreende uma representação do quadro de comunicações digital customizado a um participante local.
11. DISPOSITIVO de acordo com a reivindicação 8, caracterizado pelo fato de que as instruções que, quando executadas por pelo menos um do um ou mais processadores, fazem com que pelo menos um dos um ou mais processadores gere uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos, fazem ainda com que pelo menos um dos um ou mais processadores: - consulte o servidor para um ou mais endereços de Protocolo de Internet (IP) do um ou mais dispositivos de computação remotos correspondendo ao um ou mais objetos participantes remotos;
- gere uma ou mais pastas locais correspondendo ao um ou mais objetos participantes remotos; e - gere a uma ou mais pastas dinâmicas mapeando-se a uma ou mais pastas locais ao um ou mais endereços de IP.
12. DISPOSITIVO de acordo com a reivindicação 8, caracterizado pelo fato de ser configurado para armazenar uma ou mais posições espaciais do um ou mais objetos participantes remotos dentro da interface de usuário e em que as instruções que, quando executadas por pelo menos um do um ou mais processadores, fazem com que pelo menos um dos um ou mais processadores detecte uma entrada de usuário para arrastar pelo menos um ícone correspondente a pelo menos um arquivo próximo a um objeto participante remoto no um ou mais objetos participantes remotos, fazem ainda com que pelo menos um do um ou mais processadores: - detecte uma entrada de usuário para arrastar o pelo menos um ícone a uma posição espacial de destino que está dentro de uma distância limítrofe de uma posição espacial do objeto participante remoto.
13. DISPOSITIVO 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 armazene o pelo menos um arquivo em uma pasta dinâmica correspondente ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web, fazem ainda com que pelo menos um dos um ou mais processadores:
- armazene o pelo menos um arquivo na pasta dinâmica; - transmita uma cópia do pelo menos um arquivo ao endereço de rede mapeado através da conexão de soquete da web, em que a conexão de soquete da web é configurada para direcionar dados ao endereço de rede mapeado por meio do servidor; e - delete o pelo menos um arquivo da pasta dinâmica ao ser concluída a transmissão.
14. DISPOSITIVO de acordo com a reivindicação 8, caracterizado pelo fato de que a pasta dinâmica é armazenada em um cache temporário no dispositivo de computação local.
15. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO caracterizado por 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 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 através de uma conexão de soquete da web, a representação do espaço de trabalho de colaboração compreendendo um ou mais objetos participantes remotos correspondendo a um ou mais dispositivos de computação remotos conectados ao servidor; - gere uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos, cada pasta dinâmica sendo mapeada a um endereço de rede de um dispositivo de computação remoto correspondendo ao objeto participante remoto; - detecte uma entrada de usuário para arrastar pelo menos um ícone correspondente a pelo menos um arquivo próximo a um objeto participante remoto no um ou mais objetos participantes remotos, o objeto participante remoto correspondendo a um dispositivo de computação remoto no um ou mais dispositivos de computação remotos; e - armazene o pelo menos um arquivo em uma pasta dinâmica correspondente ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web.
16. MEIO DE ARMAZENAMENTO de acordo com a reivindicação 15, caracterizado pelo fato de que o um ou mais objetos participantes remotos correspondendo ao um ou mais dispositivos de computação remotos compreende(m) um ou mais dentre: um fluxo de vídeo incorporado ou um ícone participante remoto.
17. MEIO DE ARMAZENAMENTO de acordo com a reivindicação 15, caracterizado pelo fato de que o espaço de trabalho de colaboração compreende 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 e em que a representação de espaço de trabalho de colaboração compreende uma representação do quadro de comunicações digital customizado a um participante local.
18. MEIO DE ARMAZENAMENTO de acordo com a reivindicação 15, caracterizado 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 gere uma ou mais pastas dinâmicas correspondendo ao um ou mais objetos participantes remotos, fazem ainda com que o dispositivo de computação local: - consulte o servidor para um ou mais endereços de Protocolo de Internet (IP) do um ou mais dispositivos de computação remotos correspondendo ao um ou mais objetos participantes remotos; - gere uma ou mais pastas locais correspondendo ao um ou mais objetos participantes remotos; e - gere a uma ou mais pastas dinâmicas mapeando-se a uma ou mais pastas locais ao um ou mais endereços de IP.
19. MEIO DE ARMAZENAMENTO de acordo com a reivindicação 15, caracterizado pelo fato de que o dispositivo de computação local é configurado para armazenar uma ou mais posições espaciais do um ou mais objetos participantes remotos dentro da interface de usuário e em que as instruções que, quando executadas pelo dispositivo de computação local, fazem com que o dispositivo de computação local detecte uma entrada de usuário para arrastar pelo menos um ícone correspondente a pelo menos um arquivo próximo a um objeto participante remoto no um ou mais objetos participantes remotos, fazem ainda com que o dispositivo de computação local: - detecte uma entrada de usuário para arrastar o pelo menos um ícone a uma posição espacial de destino que está dentro de uma distância limítrofe de uma posição espacial do objeto participante remoto.
20. MEIO DE ARMAZENAMENTO de acordo com a reivindicação 15, caracterizado 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 armazene o pelo menos um arquivo em uma pasta dinâmica correspondente ao objeto participante remoto para transmitir assim o pelo menos um arquivo ao endereço de rede do dispositivo de computação remoto através da conexão de soquete da web, fazem ainda com que o dispositivo de computação local:
- armazene o pelo menos um arquivo na pasta dinâmica;
- transmita uma cópia do pelo menos um arquivo ao endereço de rede mapeado através da conexão de soquete da web, em que a conexão de soquete da web é configurada para direcionar dados ao endereço de rede mapeado por meio do servidor; e
- delete o pelo menos um arquivo da pasta dinâmica ao ser concluída a transmissão.
BR112020018877-8A 2018-03-16 2019-03-13 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 BR112020018877A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/923,943 US10931733B2 (en) 2017-08-24 2018-03-16 Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US15/923,943 2018-03-16
PCT/EP2019/056276 WO2019175237A1 (en) 2018-03-16 2019-03-13 Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
BR112020018877A2 true BR112020018877A2 (pt) 2020-12-29

Family

ID=65955176

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020018877-8A BR112020018877A2 (pt) 2018-03-16 2019-03-13 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

Country Status (7)

Country Link
EP (1) EP3765973A1 (pt)
JP (1) JP2021517302A (pt)
KR (1) KR20200131881A (pt)
CN (1) CN112106044A (pt)
BR (1) BR112020018877A2 (pt)
RU (1) RU2020133478A (pt)
WO (1) WO2019175237A1 (pt)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113868201B (zh) * 2021-12-02 2022-03-15 天津联想协同科技有限公司 一种多人协作分享文件的方法、装置及存储介质
KR102605522B1 (ko) * 2023-01-06 2023-11-24 한규태 펑션 보드를 이용한 고객 협동 개발 시스템 및 이에 포함되는 서버

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167897B2 (en) * 1996-05-08 2007-01-23 Apple Computer, Inc. Accessories providing a telephone conference application one or more capabilities independent of the teleconference application
US7587467B2 (en) * 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7634533B2 (en) * 2004-04-30 2009-12-15 Microsoft Corporation Systems and methods for real-time audio-visual communication and data collaboration in a network conference environment
US7821985B2 (en) * 2006-03-13 2010-10-26 Microsoft Corporation Network interface routing using computational context
US7958270B2 (en) * 2006-06-09 2011-06-07 Laurent Frederick Sidon Distribution of files from mobile devices
US9300912B2 (en) * 2008-03-28 2016-03-29 Microsoft Technology Licensing, Llc Software based whiteboard capture solution for conference room meetings
US10162491B2 (en) * 2011-08-12 2018-12-25 Otoy Inc. Drag and drop of objects between applications
US9398059B2 (en) * 2013-11-22 2016-07-19 Dell Products, L.P. Managing information and content sharing in a virtual collaboration session
US20160140139A1 (en) * 2014-11-17 2016-05-19 Microsoft Technology Licensing, Llc Local representation of shared files in disparate locations
US10001913B2 (en) * 2015-04-01 2018-06-19 Dropbox, Inc. Shared workspaces with selective content item synchronization

Also Published As

Publication number Publication date
RU2020133478A (ru) 2022-04-19
JP2021517302A (ja) 2021-07-15
EP3765973A1 (en) 2021-01-20
KR20200131881A (ko) 2020-11-24
WO2019175237A1 (en) 2019-09-19
CN112106044A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
US20220382505A1 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
JP5442727B2 (ja) ユーザーインターフェイス表示上での教示動画の表示
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
US11734899B2 (en) Headset-based interface and menu system
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
US9990117B2 (en) Zooming and panning within a user interface
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
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
JP2021533456A (ja) ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を介して拡充ノート・データ・オブジェクトを伝えるための方法、装置及びコンピュータ可読媒体
JP2012048297A (ja) ディスプレイ・入力インタフェース共有システム、情報処理装置およびプログラム
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

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 4A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2713 DE 03-01-2023 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.