KR101957951B1 - 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들 - Google Patents

컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들 Download PDF

Info

Publication number
KR101957951B1
KR101957951B1 KR1020187012397A KR20187012397A KR101957951B1 KR 101957951 B1 KR101957951 B1 KR 101957951B1 KR 1020187012397 A KR1020187012397 A KR 1020187012397A KR 20187012397 A KR20187012397 A KR 20187012397A KR 101957951 B1 KR101957951 B1 KR 101957951B1
Authority
KR
South Korea
Prior art keywords
computing device
display
computer
image
mobile device
Prior art date
Application number
KR1020187012397A
Other languages
English (en)
Other versions
KR20180052767A (ko
Inventor
충-시앙 창
양 리
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20180052767A publication Critical patent/KR20180052767A/ko
Application granted granted Critical
Publication of KR101957951B1 publication Critical patent/KR101957951B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/761Proximity, similarity or dissimilarity measures
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • 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/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16
    • G06F3/005Input arrangements through a video camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/20Services signaling; Auxiliary data signalling, i.e. transmitting data via a non-traffic channel

Abstract

컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 컴퓨터로 구현되는 방법은 제 1 컴퓨팅 디바이스의 디스플레이의 디지털 이미지를 제 2 컴퓨팅 디바이스의 카메라를 이용하여 캡쳐하는 단계, 제 1 컴퓨팅 디바이스로, 디지털 이미지에 대응하는 데이터를 전송하는 단계, 디지털 이미지가 제 1 컴퓨팅 디바이스의 현재 디스플레이와 매칭되는지 여부를 판단하기 위해, 제 1 컴퓨팅 디바이스에서 상기 전송된 데이터를 분석하는 단계, 및 제 1 또는 제 2 컴퓨팅 디바이스 중 하나로 하여금 애플리케이션을 불러오고 제 1 또는 제 2 컴퓨팅 디바이스 중 다른 하나에서 실행중인 애플리케이션의 상태와 매칭되도록 상기 분석을 이용하는 단계를 포함한다.

Description

컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들{METHODS AND SYSTEMS FOR MOVING INFORMATION BETWEEN COMPUTING DEVICES}
본 출원은 2010년 9월 17일자로 제출된 미국 출원 61/384,075, “컴퓨팅 디바이스들 사이에서 정보의 이동(Moving Information Between Computing Devices)”에 대하여 우선권을 주장하며, 그 개시 내용은 여기에 참조로서 통합된다.
본 문서는 하나의 컴퓨팅 디바이스에서 하나 또는 그 이상의 다른 컴퓨팅 디바이스들로 데이터를 이동하는 시스템 및 기술과 관련된다.
요즘 많은 사람들은 직장 또는 집에서의 데스크톱 또는 랩탑 컴퓨터에서, 디지털 컨텐츠를 리뷰하는 태블릿 또는 슬레이트(slate), 모바일 컴퓨팅 및 통신을 위한 스마트폰에 이르기까지 다수의 다른 컴퓨터들을 소유한다. 컴퓨터 사용자들은 이 디바이스들 사이를 빈번하게 옮겨 다니는데(transition), 예를 들어, 점심시간에 그들의 사무실에 그들의 개인컴퓨터를 두고 그들의 스마트폰을 휴대한다.
때로는, 컴퓨터 사용자는 하나의 디바이스에서 다른 디바이스 상으로 정보를 이동시키고 싶어할 수 있다. 예를 들어, 컴퓨터 사용자는 다가오는 여행 목적지(upcoming travel destination)의 주소에 타이핑 하기 위해 또는 그 목적지로의 길 안내(directions)를 얻기 위해 그녀의 데스크톱 컴퓨터의 능력 및 편의성(power and convenience)을 이용할 수 있다. 상기 정보를 이동 가능하도록 하기 위해서, 사용자는 길 안내를 출력하고 여행 중에 가지고 다닐 수 있다. 사용자는 또한 데스크톱 컴퓨터의 화면을 촬영할 수 있고, 필요할 때 그녀의 모바일 디바이스 디스플레이 상에 있는 그림에 캡쳐된 지도의 이미지를 볼 수 있다. 대안으로, 사용자는 브라우저로부터 지도의 URL(Uniform Resource Locator)을 카피하고, 상기 URL을 그 자신 또는 그녀 자신으로의 이메일에 붙여넣고, 이메일을 발송하고, 그러고 나서 그 또는 그녀의 모바일 디바이스에서 이메일을 열고 상기 URL의 하이퍼링크(hyperlink)를 선택할 수 있다.
본 문서는 컴퓨팅 디바이스들 사이에서 편리하게 정보를 이동시키기 위한 메커니즘을 제공하는 시스템 및 테크닉을 기술한다. 상기 정보는 제 1 컴퓨터상의 애플리케이션의 현재 상태일 수 있어, 상태가 자동으로 제 2 컴퓨터 상으로 복제될 수 있다. 그와 같은 일 예시에서, 또 다른 컴퓨터의 상태 일부분을 복제 또는 근사시키기(approximate)를 원하는 사용자는, 그녀의 스마트폰 상의 카메라를 이용하는 것과 같이, 상기 다른 컴퓨터의 디스플레이의 이미지를 캡쳐할 수 있다. 예를 들어, 사용자는 그녀의 사무실에서 동료의 사무실까지 운전 안내를 생성하기 위해 그녀의 데스크톱 컴퓨터를 이용했을 수 있고, 그녀가 동료의 사무실로 운전하는 동안 그녀가 상기 안내를 휴대할 수 있도록 대응하는 지도 애플리케이션(mapping application)이 그녀의 스마트폰 상에서 열리기를 원할 수 있다. 여기에 기술된 테크닉은 캡쳐된 이미지가 각각의 다른 활성화된(로그인 된) 사용자에게 할당된 디바이스들로 보내지도록 할 수 있고, 그것들이 정보 공유 요청의 의도된 타겟인지를 확인하기 위해 (그것들 중 하나는 캡쳐된 이미지에 있는 원래의 디스플레이를 디스플레이 하게 될 것이기 때문에) 이 디바이스들은 상기 이미지를 그것들 각각의 현재 디스플레이와 비교할 수 있다. 그것이 타겟 디바이스라고 판단한 상기 디바이스는 이제, 웹 브라우저로부터의 URI(Uniform Resource Identifier) 또는 시스템에 대한 API(application programming interface)에 의해 정의될 수 있는 정보의 다른 형태들과 같은, 애플리케이션의 상태에 관한 정보를 획득하기 위해 관련된 애플리케이션과 교신(converse with)할 수 있다. 그와 같은 정보는 이제, 대응하는 애플리케이션이 활성화되고 컴퓨터 상에서 애플리케이션의 상태와 매칭되도록 하는 스마트폰으로 다시 돌려보내질 수 있다. 일 실시예에서, 이 프로세스는 딥 슈팅(deep shooting) 또는 "딥 샷(Deep Shot)"으로 알려지는데, 이는 개시(initiating) 또는 초기(initial) 디바이스로 하여금 이미지뿐만 아니라 기초(underlying) 상태 데이터도 획득할 수 있게 하여, 사용자가 상호작용 할 수 있는 실제적인 기능의 애플리케이션을 열 수 있도록 하기 때문이다.
반대의 절차가 카메라를 포함하는 디바이스로부터 다른 디바이스로 상태 정보를 포스팅 하기 위해(to post) 이용될 수 있다. 특히, 개시 디바이스(예를 들어, 스마트폰)는 타겟 디바이스의 이미지를 캡쳐할 수 있고, 그 이미지를 사용자 계정으로 로그인 된(또는 그렇지 않으면 어떤 정의된 방식으로 서로 관련된) 모든 디바이스로 보낼 수 있다. 개시 디바이스는 상기 이미지와 함께, 개시 디바이스의 현재 포커스(current focus)인 애플리케이션의 URI와 같은, 그 고유의 상태에 관한 정보를 포함할 수 있다 (그리고 그것은, 사용자에게 다른 디바이스들로 보내질 상기 정보를 명확하게 하기 위해, 사용자가 그 사진을 촬영할 때 카메라로부터의 이미지에 애플리케이션의 이미지를 오버레이 할 수 있다). 다른 디바이스들 각각은 이제 그것들이 상기 이미지의 디바이스인지 여부를 판단하고, 그것이 상기 이미지의 디바이스라고 판단한 디바이스는 개시 디바이스로부터의 부가적인 정보에서 식별되는 관련된 애플리케이션을 실행할 수 있고, 부가적인 정보에서 식별된 상태로 그 애플리케이션의 상태를 설정할 수 있다. 이와 같은 실시예는 제 1 예시의 "딥 슈팅"과 대조적으로 "딥 포스팅(deep posting)"으로 참조될 수 있다.
지도(mapping) 예시를 참조하면, 사용자는 사용자의 데스크톱 컴퓨터의 이미지를 캡쳐할 수 있고, 그 이미지를 스마트폰 브라우저에서의 상태 정보와 함께 사용자의 스마트폰으로부터 데스크톱 컴퓨터(및 사용자에게 속하고 로그인 된 다른 디바이스들)로 보낼 수 있다. 데스크톱 컴퓨터는 이제 그것이 상기 이미지에 보여진다는 것을 판단할 수 있고 그 대응되는 애플리케이션을 열고 수신된 상태 정보를 그것으로 제공할 수 있다. 여기서 상기 애플리케이션은 브라우저(browser)이고, 상기 정보는 단순히 브라우저의 주소표시줄(address bar)의 URI일 수 있지만, URI가 애플리케이션의 상태를 완전하게 설명하지 못할 때(예를 들어, 다양한 AJAX 기술이 애플리케이션에 의해 이용될 때) 브라우저로부터 부가적인 정보가 획득될 수 있다.
이와 같은 실행중인 애플리케이션 및 상기 애플리케이션의 상태의 식별은 일 예시에서, 상대적으로 긴 메시지 및 풍부한 컨텐츠가 보내지는 것을 가능하게 하는 동안, 인터넷을 통해 디바이스들 사이에서 TCP/IP 통신을 가능하게 하는 텍스트 메시징 기술(text messaging techniques)을 이용하여 수행될 수 있다. 그와 같은 일 예시는, 재버 제품(Jabber product)으로 상업적으로 구현된 XMPP(Extensible Messaging and Presence Protocol)이다.
다른 경우에, 이미지 분석은, 광학 문자 인식(optical character recognition)을 이용하여 이미지 내의 텍스트를 식별하는 것과 같이, 그 디스플레이가 디지털 이미지로 캡쳐된 디바이스의 상태를 식별하기 위해 사용될 수 있다. 예를 들어, 만약 사용자가 지도의 이미지를 캡쳐하면, 상기 지도에 디스플레이 된 도시들의 이름이 식별되고, 지도상의 영역을 반환받기 위해 그 이름들을 검색 쿼리 용어(search query terms)로 제공하는 것과 같이, 그 이름들은 애플리케이션의 상태를 식별하기 위해 이용될 수 있다. 적당한 줌 레벨(zoom level)을 만들기 위해 생성된 지도를 상기 이미지에 비교하는 것과 같은, 후속적인 단계들이 상기 애플리케이션의 상태에 대한 보다 타이트한 매치(a tighter match)를 구성하기 위해 취해질 수 있다. 상기 이미지 내의 이미지 특징들도 컴퓨터 애플리케이션의 디스플레이의 극성(polarity)에 대해 저장된 이미지 특징들과 비교될 수 있다.
어떤 경우에, 여기에 설명된 기술들은 하나 이상의 이점을 제공할 수 있다. 예를 들어, 컴퓨팅 디바이스의 사용자는 다른 컴퓨터의 이미지를 획득하기 위해 (그녀가 매일 작동할 수 있는) 상기 컴퓨터 상의 카메라를 작동하기 위한 그녀의 현존 지식을 이용할 수 있다. 그녀는 이제 자동으로 그녀의 스마트폰을 그녀의 컴퓨터 또는 다른 사람의 컴퓨터로 조정하거나 동기화할 수 있다 (다른 컴퓨터로부터 캡쳐된 상태를 활성화하기 위해 초기 사용자가 선택해야 하는 텍스트 메시지의 URI를 보내는 타겟 컴퓨터에 의해서와 같이, 상기 동기화는 지연될 수 있다). 결과적으로, 사용자는 그녀의 컴퓨팅 디바이스들 또는 다른 용도의 디바이스들 사이에서 상태를 공유할 수 있고, 이제 공유된 상태들로부터 시작하는 컴퓨터 애플리케이션들과 완전히 상호작용할 수 있다. 결과적으로, 사용자는 컴퓨팅 디바이스들 사이의 정보 공유에서 향상된 경험을 가질 수 있다.
일 구현예에서, 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 컴퓨터로 구현되는 방법에 이 개시된다. 상기 방법은 제 1 컴퓨팅 디바이스의 디스플레이의 디지털 이미지를 제 2 컴퓨팅 디바이스의 카메라를 이용하여 캡쳐하는 단계, 상기 제 1 컴퓨팅 디바이스로, 상기 디지털 이미지에 대응하는 데이터를 전송하는 단계, 상기 디지털 이미지가 상기 제 1 컴퓨팅 디바이스의 현재 디스플레이와 매칭되는지 여부를 판단하기 위해, 상기 제 1 컴퓨팅 디바이스에서 상기 전송된 데이터를 분석하는 단계, 및 상기 제 1 또는 제 2 컴퓨팅 디바이스 중 하나로 하여금 애플리케이션을 불러오고 상기 제 1 또는 제 2 컴퓨팅 디바이스 중 다른 하나에서 실행중인 애플리케이션의 상태와 매칭되도록 상기 분석을 이용하는 단계를 포함한다. 상기 제 2 컴퓨팅 디바이스는, 상기 제 1 컴퓨팅 디바이스로 상기 디지털 이미지에 대응하는 데이터, 상기 제 2 컴퓨팅 디바이스에서 실행중인 애플리케이션에 관한 상태 정보를 제공할 수 있다. 또한 상기 제 2 컴퓨팅 디바이스는 상기 디지털 이미지가 상기 제 1 컴퓨팅 디바이스의 현재 디스플레이를 나타내는지 판단한 후에 상기 애플리케이션을 상기 상태정보에 대응하는 상태로 실행할 수 있다.
어떤 양상에서는, 상기 제 1 컴퓨팅 디바이스는 그것이 상기 디지털 이미지에 나타나는지 여부를 판단할 수 있다. 또한 상기 제 1 컴퓨팅 디바이스는 상기 제 2 컴퓨팅 디바이스로부터 상기 디지털 이미지에 대응하는 상기 데이터를 수신하고, 상기 제 2 컴퓨팅 디바이스로 응답하는 메시지(responsive message)에, 상기 제 1 컴퓨팅 디바이스에서 실행중인 애플리케이션의 식별(identification) 및 상기 애플리케이션의 상태를 제공할 수 있다. 상기 제 1 컴퓨팅 디바이스에서 상기 전송된 데이터를 분석하는 단계는, 상기 전송된 데이터에서의 특징 세트(feature set)를 상기 제 1 컴퓨팅 디바이스의 현재 스크린 샷(screen shot)에서의 특징 세트에 비교하는 단계를 포함할 수 있다. 상기 방법은 또한 상기 디지털 이미지에 대응하는 상기 데이터를 상기 제 1 컴퓨팅 디바이스의 사용자에 대해 메시징 시스템(messaging system)에 등록된 모든 디바이스로 자동으로 전송하는 단계를 포함할 수 있다.
또 다른 구현예에서, 제 1 상태를 갖는 제 1 애플리케이션을 디스플레이 하고 있는 제 1 컴퓨팅 디바이스의 디스플레이 스크린의 디지털 이미지를 획득하고, 상기 디지털 이미지는 제 2 컴퓨팅 디바이스에 의해 획득되는 것을 특징으로 하는 단계; 상기 디지털 이미지로부터 상기 디스플레이 스크린의 양상(aspects)을 식별하기 위해 상기 디지털 이미지를 분석하고 상기 양상을 하나 이상의 파라미터로 인코딩하는 단계; 상기 제 1 컴퓨팅 디바이스 또는 상기 제 2 컴퓨팅 디바이스에서 현재 작동중인 애플리케이션, 및 상기 애플리케이션의 현재 상태를 식별하는 단계; 및 상기 식별된 애플리케이션이 상기 애플리케이션이 동작하고 있지 않은 다른 컴퓨팅 디바이스에서 활성화 되도록, 및 상기 다른 컴퓨팅 디바이스 상의 상기 애플리케이션이 식별된 현재 상태에 대응하는 상태로 진입하도록 하기 위해 데이터를 제공하는 단계를 포함하는 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 컴퓨터로 구현되는 방법이 개시된다. 상기 디지털 이미지는 상기 제 2 컴퓨팅 디바이스로부터 상기 제 1 컴퓨팅 디바이스로 보내질 수 있고, 상기 제 2 컴퓨팅 디바이스는 상기 디지털 이미지를 분석하는 단계를 수행할 수 있다. 상기 제 1 컴퓨팅 디바이스는 또한 상기 제 1 컴퓨팅 디바이스에서 현재 작동중인 애플리케이션을 식별하고 상기 애플리케이션에 대한 식별자(identifier)와 상기 애플리케이션의 현재 상태를 상기 제 1 컴퓨팅 디바이스로 제공할 수 있다. 또한, 상기 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스가 상기 디지털 이미지에 나타나는지 여부를 판단하기 위해 상기 디지털 이미지를 분석할 수 있다. 상기 제 1 컴퓨팅 디바이스는 부가적으로 상기 제 1 컴퓨팅 디바이스가 상기 디지털 이미지에 표시된다는 판단에 기초하여 상기 애플리케이션을 활성화하고, 상기 제 2 컴퓨팅 디바이스로부터 수신된 상태 정보를 상기 활성화된 애플리케이션의 상태를 설정하기 위해 사용할 수 있다.
일부 양상에서, 상기 제 1 컴퓨팅 디바이스는 상기 제 1 컴퓨팅 디바이스가 상기 디지털 이미지에 나타나지 않는다는 판단에 기초하여 상기 제 1 컴퓨팅 디바이스에서 애플리케이션의 활성화를 거부할 수 있다. 또한, 상기 이미지를 분석하는 단계는, 상기 이미지의 일 부분이 상기 제 1 또는 제 2 컴퓨팅 디바이스의 현재 비디오 디스플레이와 매칭되는지 여부를 판단하는 단계를 포함할 수 있다.
일부 양상에서, 상기 디지털 이미지를 분석하는 단계는, 단어(words)를 식별하기 위해 광학 문자 인식(optical character recognition)을 이용하는 단계, 및 다수의 가능한 애플리케이션으로부터 하나의 애플리케이션을 선택하기 위해 상기 단어를 이용하여 현재 작동중인 애플리케이션을 식별하는 단계를 포함할 수 있다. 상기 디지털 이미지를 분석하는 단계는, 상기 디지털 이미지에 대한 특징 분석(feature analysis)을 수행하는 단계 및 상기 특징 분석의 결과를 알려진 컴퓨터 애플리케이션들의 이미지들에 대해 이전에 수행된 특징 분석의 결과에 비교하는 단계를 포함하고, 현재 작동중인 애플리케이션을 식별하는 단계는 특징 분석 결과들의 매치에 대응하는 특정 애플리케이션을 식별하는 단계를 포함할 수 있다. 부가하여, 상기 식별된 애플리케이션이 상기 애플리케이션이 동작하고 있지 않은 다른 컴퓨팅 디바이스에서 활성화 되도록 상기 데이터를 제공하는 단계는, URI를 상기 제 2 컴퓨터로 보내는 단계를 포함할 수 있고, 상기 URI는 상기 식별된 애플리케이션 및 상기 상태에 대응한다. 나아가, 상기 상태는 컴퓨터 서버 시스템에 저장된 호스팅된 문서(hosted document)에 엑세싱하는 상기 제 1 컴퓨팅 디바이스의 상태를 포함할 수 있고, 상기 식별된 애플리케이션이 활성화되도록 데이터를 제공하는 단계는, 상기 제 2 컴퓨팅 디바이스로 하여금 상기 호스팅된 문서의 인스턴스(instance)를 오픈하도록 하는 데이터를 제공하는 단계를 포함할 수 있다.
다른 구현예에서, 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 컴퓨터로 구현되는 시스템이 개시된다. 상기 시스템은 각각 하나의 현재 상태를 갖는 하나 이상의 애플리케이션들을, 디스플레이 스크린에 제공하도록 마련되는 제 1 컴퓨팅 디바이스, 상기 제 1 컴퓨팅 디바이스의 이미지를 캡쳐할 수 있는 디지털 카메라를 가지는 제 2 컴퓨팅 디바이스, 및 상기 디바이스들 사이에서 네트워크 및 중앙 메시징 서비스(central messaging service)를 통해 통신하기 위한 상기 제 1 컴퓨팅 디바이스 및 상기 제 2 컴퓨팅 디바이스 상의 메시징 인터페이스(messaging interfaces)를 포함한다. 하나 이상의 제 1 및 제 2 컴퓨팅 디바이스들은, 독립적으로 또는 결합하여, 상기 카메라에 의해 캡쳐된 상기 디스플레이 스크린의 디지털 이미지에 대응하는 데이터를 획득하고, 상기 디지털 이미지로부터 상기 디스플레이 스크린의 양상(aspects)을 식별하기 위해 상기 데이터를 분석하고 상기 양상을 하나 이상의 파라미터로 인코딩하고, 상기 제 1 컴퓨팅 디바이스 또는 상기 제 2 컴퓨팅 디바이스에서 현재 작동중인 애플리케이션, 및 상기 애플리케이션의 현재 상태를 식별하고, 상기 식별된 애플리케이션이 상기 애플리케이션이 동작하고 있지 않은 다른 컴퓨팅 디바이스에서 활성화되도록, 및 상기 다른 컴퓨팅 디바이스 상의 상기 애플리케이션이 식별된 현재 상태에 대응하는 상태로 진입하도록 하기 위해 데이터를 제공하도록 프로그램 된다.
하나 이상의 실시예의 세부 설명은 첨부된 도면 및 이하의 설명에 의해 제공된다. 다른 특징 및 이점은 명세서, 도면, 및 청구항으로부터 명백해질 것이다.
도 1a 및 1b는 데스크톱 컴퓨터의 모니터로부터 상태 정보를 캡쳐하는 모바일 디바이스를 나타낸다.
도 2a는 컴퓨터들 사이에서 정보를 공유하기 위한 시스템 및 프로세스의 도식적인 흐름도이다
도 2b는 컴퓨터들에 대한 상태 정보를 공유하는 메시지들을 보내는 시스템(220)의 도식적인 다이어그램이다.
도 3a 및 3b는 컴퓨터들 사이에서 상태 정보를 공유하기 위한 프로세스의 스윔 레인 다이어그램(swim lane diagrams)이다.
도 4는 컴퓨터들 사이에서 정보를 이동시키기 위한 프로세스의 흐름도이다.
도 5a-5c는 데스크톱 컴퓨터의 디스플레이 상에 모바일 디바이스에서의 사용자 인터페이스의 포스팅을 나타낸다.
도 6은 피치 각도 및 카메라와 스크린 사이의 거리에 대해 촬영된 시도 사진들의 수의 그래프를 나타낸다.
도 7은, 여기에 설명된 기술을 구현하기 위해 이용될 수 있는 컴퓨터 디바이스 및 모바일 컴퓨터 디바이스의 예시를 나타낸다.
다양한 도면에서 동일 기호는 동일 구성요소를 나타낸다.
본 명세서는, 이미지 캡쳐 테크닉을 이용하여 컴퓨터들 사이에서 정보를 공유하는 다른 메커니즘들과 함께, 제 2 컴퓨터가 동일한 또는 유사한 상태를 취할 수 있도록 하나의 컴퓨터의 현재 상태에 대한 정보를 캡쳐하고 그것을 제공하는 시스템 및 테크닉을 기술한다. 여기에서 논의되는 예시들에서, 개시 디바이스(initiating device) 또는 최초 컴퓨터(initial computer) (예를 들어, 스마트폰)인 컴퓨팅 디바이스 상의 카메라는, 또 다른 컴퓨터 또는 타겟 컴퓨터의 디스플레이 스크린의 이미지를 캡쳐하기 위해 이용될 수 있다. 그 이미지는 그 다음에 타겟 컴퓨터 상에서 무엇이 일어나는 중인지 식별하고, 최초 컴퓨터의 상태가 상기 그림의 타겟 컴퓨터의 상태와 매칭될 수 있도록 최초 컴퓨터로 제공될 수 있는 정보를 생성하기 위해 분석될 수 있다. 그와 같은 매치는, 타겟 컴퓨터에 대한 모든 관련있는 상태 변수들(state variables)을 판단하고 최초 컴퓨터 상에서 그 상태 변수들을 에뮬레이팅(emulating) 하는 것과 같은, 전체 매치(total match)일 수 있다. 상기 매치는 또한, 타겟 컴퓨터가 캡쳐된 이미지의 영역과 실질적으로 중복되는(overlaps with), 그러나 어느 정도 이동되거나 다르게 줌(zoomed) 될 수 있는 지도 애플리케이션 상의 일 영역(an area on a mapping application)을 디스플레이 하는 것과 같은, 근사 매치(approximate match)일 수도 있다. 상기 매치는 또한 상기 상태가 제 2 컴퓨터의 상대적인 컨텍스트(relative context)에 매칭되게 수정되도록 하는 연관 매치(associative match)일 수도 있다. 예를 들어, 만약 타겟 컴퓨터가 열린 문서(document open)를 포함하고 타겟 컴퓨터의 제 1 사용자가 상기 문서를 편집 중이면, 최초 컴퓨터는 상기 문서를 동시에 열 수 있지만, 제 2 사용자를 위한 커서를 디스플레이 하고, 상기 커서를 문서의 다른 위치에 디스플레이 할 수 있다. 즉, 두 사용자가 동일한 문서를 보고 있다는 점에서 최초 컴퓨터 상의 상태는 타겟 컴퓨터 상의 상태와 유사하지만, 각 컴퓨터 상에서의 뷰(view)는 각 사용자에 대해 맞춰진다(customized)는 점에서 최초 컴퓨터 상의 상태는 타겟 컴퓨터 상의 상태와 구별된다.
다음의 설명은 여기 테크닉의 일 사용 예시(an example use case)를 논하고 나서, 상기 사용 예시 및 그와 같은 다른 사용 예시들을 수행하는 특정 기술적인 메커니즘을 논의한다. 도 1a 및 1b는 데스크톱 컴퓨터의 모니터로부터 상태 정보(state information)를 캡쳐하는 스마트폰(108)을 나타낸다. 일반적으로, 전술한 바와 같이, 상기 도면들은 데스크톱 컴퓨터로부터 스마트폰으로 지도 애플리케이션의 상태를 보내는(passing) 사용 예시를 나타낸다.
도 1a에서, 사용자는 그녀의 스마트폰(108)을 오른손에 들고 그것을 그녀의 컴퓨터(100)(예를 들어, 데스크톱 컴퓨터)의 컴퓨터 모니터(102)(또는 디스플레이 디바이스)를 겨냥(aiming)하고 있다. 사용자는, 비즈니스 미팅 장소와 같은, 지도 상의 지리적 영역을 찾기 위해 그녀의 컴퓨터(100) 상의 (브라우저 탭(104)에 도시된) 웹 브라우저를 이용하고 있을 수 있다. 그녀는 그것의 상대적으로 큰 모니터 및 유연한 입력 메커니즘 (예를 들어, 마우스, 터치 입력, 등) 때문에 컴퓨터(100)를 이용하기로 선택했을 수 있다. 그러나, 그녀는 그녀의 컴퓨터(100)를 그녀와 함께 그녀의 차로 가져가지 못할 수 있으며, 그녀는 그녀가 운전할 때 지도를 참고할(consult) 필요가 있을 수 있다. 결과적으로, 그녀는 지도 정보를 그녀의 컴퓨터(100)로부터 그녀의 스마트폰(108)으로 획득하고자 할 수 있다. (스마트폰은 컴퓨터를 포함하지만, 이 예시에서, 스마트폰(108)은 사용자의 일 컴퓨터(데스크톱 컴퓨터)를 다른 것(스마트폰)으로부터 구별하기 위해 특정 컴퓨터(100)과 별개로 참조된다.)
이 예시에서, 스마트폰(108)의 스크린은 그것이 최초로 사용자에게 제공될 때 스마트폰(108)에 포함될 수 있는 일반적인(standard) 카메라 애플리케이션의 사용자 인터페이스를 나타내고 있다. 이 예시에서, 사용자는 컴퓨터 모니터(102) 상에 디스플레이 된 지도 일부분의 이미지를 막 캡쳐하였다. 따라서 스마트폰(108)의 디스플레이는 컴퓨터 모니터(102)에 디스플레이 된 지도의 서브셋(subset)(106)을 보여준다.
도 1b는 스마트폰(108)이 스마트폰(108) 상의 웹 브라우저의 지도 애플리케이션에서 지도 자체를 보여주는, 나중 시점의 스마트폰(108)을 나타낸다. 일부 예시들에서, 스마트폰(108)은 스마트폰(108)에 설치된 독립적인 지도 애플리케이션에서 상기 지도를 보여준다. 도 1b에 도시된 예시에서, 스마트폰(108) 상의 URI 110은 컴퓨터 모니터(102)상에 디스플레이 된 URI 112에 매칭된다. 그와 같은 매치는 스마트폰(108) 상의 이미지 또는 스마트폰(108)이 통신중인 서버 시스템을 분석하고, 브라우저 주소 박스(browser address box)가 상기 이미지에 존재한다는 것을 인식하고, 상기 박스의 문자들에 대한 광학 문자 인식(optical character recognition)을 수행함으로써 생성될 수 있다. 단독으로(또는 서버 시스템으로부터의 도움으로) 상기 작업(work)을 수행하는 스마트폰(108)에 대한 대안으로서, 컴퓨터(100)도 스마트폰(108)으로 컴퓨터(100)의 상태를 가져오는 프로세스를 지원하기 위해 위탁될 수도 있다. 그와 같은 시스템에서, 아래에서 더 자세히 논의되겠지만, 컴퓨터(100) 및 스마트폰(108)은 텍스트 메시징 기능을 포함하는 공통의 온라인 서버 시스템에 인증되거나 로그인 될 수 있다. 스마트폰(108)은 이제 컴퓨터(100)로부터 캡쳐된 디지털 이미지를 텍스트 메시지로 패키지(package) 할 수 있고 상기 이미지를 컴퓨터(100)로 보낼 수 있다. 컴퓨터(100)는 이제 상기 이미지를 사용자가 컴퓨터 모니터(102)로부터 무엇을 캡쳐하였는지, 따라서 사용자가 복제(replicate)하고 싶어하는 애플리케이션과 상태를 판단하기 위해 이용할 수 있다. 컴퓨터(100)는 수신된 이미지를 현재 컴퓨터 모니터(102) 상에 디스플레이 되고 있는 이미지에 비교하고, 매치되는 점을 찾고(look for a match), 그러고 나서 상기 매치에 의해 대표되는 애플리케이션을 식별할 수 있다. 컴퓨터(100)는 이제, 웹 브라우저 애플리케이션으로부터 현재 URI를 획득하는 등에 의해, 애플리케이션의 현재 상태를 판단할 수 있다.
도 2a는 컴퓨터들 사이에서 정보를 공유하기 위한 시스템(200) 및 프로세스의 도식적인 흐름도(schematic flow diagram)이다. 시스템(200)은 도 1a 및 1b의 사용 예시에 대해 논의된 메시지 흐름을 수행하기 위해 사용될 수 있다. 이 예시에서, 시스템(200)의 다양한 구성요소(components)들은, TCP/IP 프로토콜과 같은 친숙한 기술을 사용하는 인터넷(202)를 포함한 하나 이상의 네트워크를 통해 통신한다. 시스템(200)의 3개의 주요 구성요소는 데스크톱 컴퓨터(204), (모바일 컴퓨터 일 수 있는) 컴퓨터(208), 및 서버 시스템(206)을 포함한다. 상기 3개의 구성요소는 상기 컴퓨터들(204, 208) 사이에서 상태의 매칭이 가능하도록 각 구성요소 사이의 적절한 정보의 습득 및 공유를 제공하기 위해 서로 협력(cooperate)할 수 있다. 비록 도 2a에 도시된 특정 예시 구성요소들이 분명하게 관련 기술의 설명을 돕기 위해 제공되었지만, 추가적인 또는 다른 구성요소들도 또한 이용될 수 있다.
서버 시스템(206)은 PIE와 같은 상호 디바이스 정보 교환 시스템(cross-device information exchange system)을 포함하는 표준 인스턴트 메시징(IM, instant messaging) 시스템을 수행할 수 있다. 정보 공유를 위한 IM 아키텍처(architecture)의 이용은 어떤 실시예에서는 (1) 컴퓨터(204, 208)로 하여금 상대방의 IP 주소를 알지 못하면서 서로 통신하도록 하는 점; (2) NATs(Network Address Translations) 및 방화벽(firewalls)에 관한 어떤 문제점들을 회피하기 위하여, 실시간으로 메시지를 보내고 받기 위한 지속되는 연결(persistent connections)을 제공하는 점; (3) 컴퓨터(208)이 컴퓨터(204)의 디스플레이의 이미지를 캡쳐한 직후에 컴퓨터(204)가 메시지를 수신할 수 잇도록 즉각적인 메시징(immediate messaging)을 제공하는 점; 및 (4) 표준 인스턴트 메시징 시스템은 상당히 발달하고, 훌륭하게 개발되고, 및 훌륭하게 문서화된 시스템일 수 있기 때문에, 기존의(existing) 라이브러리(libraries) 및 다른 요소들(elements)들이 이용될 수 있고, 상기 시스템은 다수의 프로그래머들에 의해 수정되고 향상될 수 있으며, 상기 시스템은, 그러한 시스템을 이미 이해하고 있는 관리자(administrators)에 의해 기존의 하드웨어 및 소프트웨어를 이용하여 구현될 수 있다는 점에서 유리할 수 있다.
일 실시예에서 특정 메시징은, 재버 제품(Jabber product)으로써 상업적으로 구현된 MXPP(Extensible Messaging and Presence Protocol) 시스템일 수 있다. 이와 같은 제품은 단일 사용자가 동시에 다수의 “자원(resources)”, 또는 디바이스들로부터의 로그온을 가능하게 한다. 사용자 계정 및 자원은 다음의 주소 스킴(addressing scheme)에 의해 식별된다:”user@server/resource”. 즉, 사용자는 초기에 단일 사용자 이름으로 그녀의 디바이스 각각을 설정할 수 있고, 그녀의 모든 디바이스들을 연락처 목록(contact list)에 수동으로 추가해야 하는 것을 피할 수 있다. 나아가, JPEG 또는 다른 디지털 포맷 이미지와 같이, 더 풍부한 컨텐츠(richer content)가 상기 프로토콜을 이용하여 보내줄 수 있도록, XMPP 메시지는 (예를 들어, SMS 텍스트 메시지와 비교하여) 상대적으로 클 수 있다.
상기 컴퓨터들(204, 208) 각각은 상술한 상태 매칭을 수행하는 사용자에 의해 설치되고 구성된 프로그램을 포함한다(예를 들어, 딥 슈팅(deep shooting) 또는 딥 포스팅(deep posting)을 경유). 일 실시예에서 특정 구성요소들은 도 2b와 관련하여 자세하게 논의된다. 일반적으로, 특정 구성요소들은 이미지 캡쳐 기능을 가지는 컴퓨터 상에서 이용될 수 있음에도, 상기 애플리케이션들은 두 컴퓨터들(204, 208) 상에서 동일할 수 있다. 상기 애플리케이션들은 이미지를 캡쳐하고, 상기 이미지를 대응하는 컴퓨터로 포스팅하고, 다른 컴퓨터로부터 돌아오는 통신에 대응하여 상기 다른 컴퓨터 상의 애플리케이션에 대응하는 애플리케이션을 실행(launch)하기 위해 프로그램 될 수 있다.
상호작용의 반대 측면에서, 타겟 컴퓨터는 이미지가 타겟 컴퓨터의 현재 디스플레이와 매칭되는지 여부를 판단하기 위하여 상기 이미지를 캡쳐한 최초 컴퓨터로부터 수신된 요청을 발송하기 위한 구성을 포함할 수 있다. 이제 상기 판단은 매치가 있다면 타겟 컴퓨터의 관련된 상태 정보를 식별하고, 타겟 컴퓨터의 상태 정보를 최초 컴퓨터로 다시 통신하기 위해 사용된다.
특정 정보 공유 프로세스가 도 2a에 흐름 화살표에 의해 도시된다. 상기 프로세스는 사용자가 컴퓨터(204)로 서버 시스템(206)에 로그인(화살표 120)하고, 따라서 시스템(200) 내의 그 존재(its presence)를 설정하고 지속적인 통신 채널을 오픈할 때 시작한다. 동시, 이전, 또는 이후에, 사용자는 컴퓨터(208)로 로그인(화살표 212) 할 수 있다. 디바이스들은 동일 사용자에 대해 인증되는 것으로 알려져 있기 때문에, 컴퓨터들이 다른 유사하게 인증된 디바이스들로부터의 요청에 대응하여 자동적으로 응답할 수 있다는 점에서, 인증 프로세스는 컴퓨터들(204, 208) 사이에서 형성되는 신뢰 단계를 야기할 수 있다. 명료성을 위해 단지 두 개의 컴퓨터들(204, 208)이 여기에 도시되었지만, 사용자는 3개 이상의 다른 디바이스들(예를 들어, 복수개의 데스크톱 컴퓨터, 태블릿, 게이밍 콘솔(gaming console), 및 스마트폰)로 동시에 로그인 할 수 있다. 여기에 도시된 상기 관련된 통신은 이제 서버 시스템(206)에 의해 유사하게 인증된 디바이스들 각각으로 확산될 수 있다.
이와 같은 통신은 다른 사용자들에게 할당된 디바이스들 사이에서도 발생할 수 있다. 예를 들어, 사용자들은 그들 자신을 그들이 신뢰하는 다른 사용자들(예를 들어, 직장에서 그들 부서에 있는 사람들)과 함께 그룹으로 배치할 수 있고, 상기 시스템(200)은 여기에서 논의된 타입의 메시지를 상기 사용자들 사이에서 자동으로 보내도록 프로그램 될 수 있다. 일부 실시예에서, (메시지가 요청 사용자(requesting user)의 아이덴티티를 제공하고 요청 사용자에게 돌아올 정보를 식별할 수 있는 경우) 수신 사용자(receiving user)의 디바이스가 관련된 통신이 수신되었다는 신호를 발생하고 수신 사용자에게 그녀가 그녀 컴퓨터의 상태에 관한 정보를 공유할 의사가 있는지를 확인할 수 있도록 하기 위해, 상기 신뢰는 제한될 수 있다. 즉, 예를 들어, 동료이면서 한 방에 함께 있는 두 사용자들은 제 1 사용자로 하여금 제 2 사용자의 컴퓨터 디스플레이를 캡쳐하도록 할 수 있고, 이는 상태 정보를 공유하기 위해 제 2 사용자의 컴퓨터로 하여금 제 1 사용자로부터의 확인을 요청하도록 할 수 있다. 일부 실시예에서, 상기 신뢰는, 다른 디바이스로부터 정보 요청이 도착할 때 타겟 컴퓨터로 하여금 그 사용자에 대한 메시지를 포스팅하도록 하는 것과 같이, 런타임(run-time) 시에 설정될 수 있고, 상기 메시지는 요청 사용자의 아이덴티티를 포함할 수 있고, 또한 타겟 사용자가 상기 정보에 대한 엑세스를 허가 또는 불허할 수 있도록 상기 요청 사용자에게 보내질 정보를 식별할 수 있다. 그와 같은 상황에서, 예를 들어, 요청 사용자는 타겟 사용자에 대한 텍스트 메시징 주소를 수동으로 확인하여야 할 수 있다.
컴퓨터들(204, 208)이 시스템(200)에 로그인 한 후에, 상기 컴퓨터들(204, 208)은 정보의 공유를 야기하기 위해 시스템(200)을 기다려야 할 수 있다. 그러나, 여기에서 논의되는 텍스트 메시지 프로토콜을 이용하면, 컴퓨터들(204, 208)은 그와 같은 다른 컴퓨터들로부터의 통신에 대해 기민한 상태를 유지할 수 있다. 컴퓨터(208)이 컴퓨터(204) 상의 디스플레이의 이미지를 캡쳐하면 도 2a에 도시된 예시에서 특정 정보 공유 세션(session)이 시작된다. 이 예시에서, 컴퓨터(204)의 모니터 상에 세 사람의 사진이, 호스팅된 애플리케이션(hosted application)을 포함하는 사진 관리 애플리케이션에 디스플레이 될 수 있다. 컴퓨터(208)는 그 이미지의 적어도 일 부분을 캡쳐한 것으로 도시되고, 상기 이미지를 정보 공유 프로세스를 위한 다른 관련된 정보와 함께 텍스트 메시지 서버 시스템(206)으로 제공한다(화살표 214). 이와 같은 전송은 서버 시스템(206)이 컴퓨터(208)와 함께 미리 인증된 모든 다른 디바이스들로 메시지를 보내도록 할 수 있다. 위에서 언급한 바와 같이, 그와 같은 디바이스들은 현재 동일한 사용자 계정에 로그인 된 모든 디바이스, 정의된 그룹의 디바이스, 또는 다른 디바이스들 조직을 포함할 수 있다. 이 예시에서, 컴퓨터(208)와 함께 미리 인증된 도시된 하나의 다른 디바이스는 컴퓨터(204)이지만, 동일 사용자가 여기에 도시되지 않은 컴퓨터(208)와 함께 미리 인증된 다른 디바이스들을 포함할 수 있다.
컴퓨터(208)는 이미지 캡쳐를 여기에 기술된 정보 공유 프로세스에 특화된(specially directed to) 애플리케이션을 이용하여 수행할 수 있다. 이미지 캡쳐는 자체 카메라폰 시스템(native cameraphone system)의 확장을 통해 수행되거나 기본 카메라폰 기능으로 통합될 수 있다. 일부 예시들에서, 상기 기능은 캡쳐된 이미지를 공유하기 위한 옵션들의 메뉴에서 하나의 옵션일 수 있다(다른 옵션들은 이미지를 이메일로 보내기, 이미지를 소셜 네트워킹 사이트에 포스팅하기, 등을 포함함). 일부 실시예에서, 디바이스는 이미지가 캡쳐 될 때마다 이미지가 컴퓨터 디스플레이를 나타내는지를 판단하기 위해 자동으로 체크할 수 있고, 만약 그렇다면, 여기에 논의된 상기 기능이 자동으로 실행될 수 있다.
도 2a의 정보 흐름으로 돌아가서, 컴퓨터(204)는 컴퓨터(208)로부터 메시지를 수신하고 메시지의 정보에 대해 그 고유의 상태를 체크하는 프로세스를 시작한다(화살표 216). 특히, 컴퓨터(204)는 그 자신 스크린의 스크린샷(screenshot)을 획득하고 그 스크린샷을 컴퓨터(208)로부터 수신된 이미지와 비교할 수 있다. 하나의 실시예에서, 상기 이미지는 BASE64 포맷으로 부호화되고, SURF(speeded-up robust features) 또는 SIFT(scale-invariant feature transform)와 같은 컴퓨터 비전 알고리즘(computer vision algorithms)을 이용하여 복호화될 수 있다. SURF는 크기조정(scaling) 및 회전(rotation)에 대해 강력한 시각적 특징-기반(visual features-based) 알고리즘이다. SURF는 컴퓨터(204) 상에서 획득된 스크린샷 및 컴퓨터(208)로부터 수신된 이미지 상에서 각각 키포인트(key point)를 탐색하기 위한 프로세스에서 사용될 수 있다. 나아가, SURF는 스크린샷에서의 각 키포인트를 사진의 각 키포인트와 페어링(pairing) 하여, 제 1 사용자가 컴퓨터(208)의 카메라로 캡쳐한 영역(region)을 위치시키기 위한 프로세스에서 사용될 수 있다. 컴퓨터(204)가 스크린 상에서 매칭된 영역을 식별하면, 그것은 상기 영역의 코너들의 X, Y 좌표 및 상기 영역의 중심점을 획득하고 그 정보를 그 영역의 컴퓨터(204) 상에서 실행중인 활성 애플리케이션(front-most application)으로 제공할 수 있다.
상기 애플리케이션은 이제 그것의 현재 상태에 관한 정보를 제공하는 메시지와 함께 응답할 수 있다. 일부 실시예에서, 컴퓨터(204) 상의 애플리케이션은 API(application programming interface)를 이용하여 그와 같은 액션을 수행하도록 그 개발자들에 의해 프로그램 될 수 있다. 다른 예시들에서, 그와 같은 액션을 수행하기 위한 확장(extension)이 제공될 수 있는 브라우저(browser) 일 수 있다. 상기 애플리케이션에 의해 제공되는 정보는, 일부 실시예에서, 상기 애플리케이션의 현재 상태를 기술하는 URI를 포함할 수 있다. 정보 흐름(화살표 216)에 도시된 바와 같이 정보가 수집되면, 컴퓨터(204)는 URI와 같이 그것의 현재 상태를 기술하는 정보를 서버 시스템(206)을 통해서 요청 컴퓨터(208)로 돌려보낼 수 있다.
이 도면에는 도시되지 않았지만, 동일 사용자에 대하여 서버 시스템(206)에 등록된 다른 디바이스들도 상기 메시지를 수신하고 유사한 방식으로 동작할 수 있다. 특히, 이 디바이스들은 상기 이미지를 수신하고, 그것을 그것들의 현재 디스플레이와 비교하여, 그것들이 상기 통신의 타겟이 아니라고 판단하고 가만히 있을 수 있거나, 이 디바이스들은 매치되는 점을 갖지 않으며 그것들에 대한 현재 상태 정보를 제공하지 않을 것이라는 점을 지시하는 각각의 메시지를 컴퓨터(208)로 반환할 수 있다.
컴퓨터(204) 상의 애플리케이션의 상태를 기술하는 URI 또는 정보의 다른 형태는 대응하는 텍스트 메시지의 형태로 컴퓨터(208)로 되돌려 보내질 수 있다(화살표 218). 컴퓨터(208)은 적절한 애플리케이션을 실행하거나 적절한 애플리케이션의 컴퓨터(208)에 대한 포커스를 구성하기 위해 수신된 정보를 해석할 수 있고, 상기 애플리케이션을 컴퓨터(204) 상의 대응하는 애플리케이션의 상태와 매칭되는 상태로 이행(transition)시킬 수 있다. 예를 들어, 컴퓨터(208)는 하나의 주소(address)로서 수신된 URI를 컴퓨터(208) 상에서 실행중인 브라우저로 보낼 수 있다.
컴퓨터(208)로부터 컴퓨터(204)로의 딥 포스팅(deep posting)을 포함하는 유사한 예시에서 (컴퓨터(204)로부터 컴퓨터(208)로의 정보를 획득하기 위한 딥 슈팅(deep shooting)과 비교하여), 컴퓨터(208)의 사용자는 컴퓨터(208)의 상태를 컴퓨터(204)로 확정적으로 내보낼 수 있다. 일 예시로서, 사용자는 그녀의 사무실로 걸어가는 동안 컴퓨터(208) (예를 들어, 그녀의 스마트폰) 상에서 문서 편집을 시작했을 수 있고, 그녀의 컴퓨터(204) (예를 들어, 데스크톱 컴퓨터) 상에서 상기 문서 편집을 완료하고 싶을 수 있다. 이 예시에서, 사용자는 카메라가 컴퓨터(208) 상에서 활성화되도록 할 수 있는 정보 공유 애플리케이션을 적용할 수 있고, 또한 카메라의 현재 뷰(current view)를 컴퓨터(208) 상의 사용자의 현재 디스플레이에 오버레이(overlay) 할 수 있다. 사용자는 이제 카메라가 컴퓨터(204)를 향하도록 하고 컴퓨터(204)의 이미지를 캡쳐할 수 있다. 컴퓨터(208)는 이제 전술한 것과 유사하지만 컴퓨터(204)가 그 고유의 상태를 다른 컴퓨터와 공유하기 위해 시도하는 것이라는 표시(indication), 및 현재 상태를 기술하는 정보와 함께 텍스트 메시지를 제출할 수 있다. 컴퓨터(204)는 이제 상기 메시지를 수신할 수 있고 딥 슈팅에 대해 전술한 바와 같이 이미지 매칭을 수행할 수 있다. 그러나 딥 포스팅의 경우, 컴퓨터(204)는 그것이 사용자가 포스트가 향할 것으로(the post to be directed) 의도한 컴퓨터인지 여부를 판단한다. 만약 상기 매칭으로부터 컴퓨터(204)가 타겟 컴퓨터라는 것이 판단되면, 그것은 하나의 적절한 애플리케이션 또는 애플리케이션들을 실행하거나 활성화시킬 수 있고 이 애플리케이션들의 상태를 컴퓨터(208)로부터 그것이 수신한 텍스트 메시지의 정보에 따라 설정할 수 있다. 위의 예시에서, 사용자가 상기 편집 프로세스를 용이하고 심리스하게(easily and seamlessly) 계속될 수 있도록, 컴퓨터(204)는 호스팅 된 워드 프로세스 시스템(hosted word processing system)을 실행시킬 수 있고 사용자가 컴퓨터(208) 상에서 편집 중이던 동일한 문서를 열 수 있다.
따라서 이 방식으로, 여기에 설명된 기술은, 일부 실시예에서, 시각적으로 서로 근접한 컴퓨터들 사이에서 정보를 공유하고 동기화하기 위한 편리하고 직관적인 메커니즘을 제공할 수 있다. 이와 같은 컴퓨터들의 사용자는 그들의 컴퓨터 상의 카메라 기능을 인식하고 있고, 따라서 여기에 설명된 정보 공유 프로세스를 적용할 수 있다. 부가하여, 정보 공유는 표준 TCP/IP 및 텍스트 메시징 기능을 통해 일어날 수 있다. 일반적으로, 이 기능은 대부분의 컴퓨터 상에서 언제나 기용 가능하고 활성화될 수 있다. 상기 프로세스는 대부분의 현존하는 시스템에서 혼란이 거의 없이(with little disruption) 구현될 수 있고 그 시스템들의 사용자에 의해 직관적으로 이용될 수 있다.
도 2b는 컴퓨터들에 대한 상태 정보를 공유하는 메시지들을 보내는 시스템(220)의 도식적인 다이어그램이다. 일반적으로, 상기 시스템은 XMPP 서버(222)를 통해 통신하는 클라이언트 컴퓨팅 디바이스들을 포함한다. 도 2b의 예시에서, 카메라를 포함하는 모바일 디바이스(220A)와 데스크톱 컴퓨터(220B)의 특정 구성요소들이 도시된다. 일반적으로, 모든 디바이스들은 시스템(220)의 모든 구성요소들을 포함하지만, 그것들이 이미지를 캡쳐하고 있는 디바이스인지 또는 캡쳐된 이미지의 수신에 응답하고 있는 디바이스인지에 의존하여, 특정 세션(certain session)에서 특정 구성요소만이 수행될 수 있다. 도 2b의 예시에서, 모바일 디바이스(220A)는 카메라를 포함하고 따라서 데스트탑 컴퓨터(220B)의 디스플레이로부터 이미지를 캡쳐할 것이며, 데스크톱 컴퓨터(220B)는 응답할 것이다. 그러나, 다른 실시예들에서, 데스크톱 컴퓨터(220B)는 웹 캠(web cam)이 제공될 수 있고, 이미지 캡쳐 디바이스일 수 있다.
도 2b의 예시에서, 모바일 디바이스(220A) 및 데스크톱 컴퓨터(220B)는 다수의 구성요소 타입들, 예를 들어, 슈터(shooter), 포스터(poster), 디스패처(dispatcher), 런처(launcher), 및 애플리케이션들을 포함한다. 슈터 구성요소 및 포스터 구성요소는 이미지를 캡쳐하는 디바이스 (예를 들어, 모바일 디바이스) 상에서 작동할 수 있다. 디스패처 구성요소는 타겟 디바이스들 또는 딥 샷(deep shots)의 정보를 공유하거나 딥 포스팅으로부터 포스트(post)를 받아들이는 컴퓨터들 상에서 작동할 수 있다. 런처는 타겟 디바이스뿐만 아니라 이미지를 캡쳐하는 디바이스 상에서도 수행될 수 있다. 모바일 디바이스(220A) 상에서 작동할 때, 런처(228)는 딥 슈팅에 의해 캡쳐된 정보를 제공하기 위해 모바일 애플리케이션을 실행한다. 데스크톱 컴퓨터(220B) 상에서 작동할 때, 런처(232)는 데스크톱 애플리케이션이 딥 포스팅에 의해 포스팅된 정보를 제공하도록 할 수 있다.
상기 구성요소들 사이에서 교환된 특정 메시지들은 JSON(JavaScript Object Notation) 포맷으로 구조화되고 인코딩될 수 있다. 다시 말하면, XMPP의 최상단에서, XMPP 서버와 그것에 연결된 구성요소들 사이의 메시지의 바디(body)는 JSON으로 인코딩된다. 디스패처와 애플리케이션 사이의 웹소켓(WebSocket) 상단의 메시지도 또한 JSON일 수 있다. 웹소켓은 TCP 소켓을 통해 전 양방 및 양방향 통신(full-duplex and bi-directional communication)을 지원하는 프로토콜이다. 웹소켓은 IETF(Internet Engineering Task Force) 및 W3C(World Wide Web Consortium)에 의해 현재 표준화가 진행 중이다. 일반적으로, 많은 웹 브라우저들은 상기 프로토콜을 지원하고, 많은 데스크톱 애플리케이션들은 TCP 소켓의 이용 때문에 상기 프로토콜을 지원하는데, 웹소켓은 TCP 소켓의 HTTP와 같은 교환 프로토콜(HTTP-like handshake protocol)에 대한 확장일 수 있다.
작동 중에, 애플리케이션(238A-238N, 및 236)이 딥 슈팅을 지원하고, 각 애플리케이션들(238A-238N, 및 236)이 실행될 때마다, 실행된 애플리케이션들은 TCP 포트(port) 54080 상의 웹소켓 연결을 통해 그 자체를 디스패처(234)에 등록한다. 등록 프로세스는 표준 웹소켓 교환(standard WebSocket handshaking) 후에 시작한다. 실행된 애플리케이션은 캐리지 반환(carriage return), 라인 피드 (CRLF) 종료자(line feed (CRLF) terminator)로 끝나는 라인(line) "reg APP_NAME"을 보내고, 여기서 APP_NAME은 실행된 애플리케이션의 이름이다. 만약 디스패처(234)가 실행된 애플리케이션의 등록을 받아들이면, 디스패처(234)는 CRLF와 함께 "ok"를 반환한다. 만약 디스패처(234)가 상기 등록을 받아들이지 않으면, 디스패처(234)는 그 이유를 지시하는 메시지를 반환하고 연결을 닫는다. 딥 포스팅을 지원하기 위해, 애플리케이션은 임의로 상기 애플리케이션이 어떤 타입의 URI 스킴(schemes)을 받아들이는지를 지시하는 "accept URI_SCHEME" 명령어(command)를 보낼 수 있다. 예를 들어, 이메일 클라이언트는 "mailto:"를 등록할 수 있고, 웹브라우저는 "http:" 및 "https:"를 등록할 수 있다. 상기 등록이 완료되면, 이 웹소켓 연결은 애플리케이션이 닫힐 때까지, 예를 들어 디스패처가 사전에(proactively) 애플리케이션에게 요청(request)이 언제 오고 있는지를 알려줄 수 있도록, 끊김 없이 유지될 수 있다. 시스템(220)의 구성요소들을 이용하는 특정 프로세스들이 도 3a 및 3b에서 논의된다.
도 3a는 딥 슈팅(즉, 디지털 이미지의 타겟인 컴퓨터의 상태를 캡쳐하는 것)의 일 예시를 나타낸다.
도 3b는 딥 포스팅(즉, 이미지를 캡쳐한 컴퓨터의 상태를 상기 이미지에 그 디스플레이가 있는 컴퓨터로 제공하는 것)의 일 예시를 나타낸다.
도 3a 및 3b에 대한 프로세스들이, 도 2b의 시스템(220)을 더 참조하여 설명된다.
도 2b 및 도 3a를 참조하면, 사용자는 최초에 슈터(226)를 이용하여 사진(이미지)를 캡쳐하고, 여기서 사진은 데스크톱 컴퓨터(220B)의 디스플레이를 나타내는 것으로 지시된다(박스 302). 사용자가 데스크톱 컴퓨터(220B)에 포함된 컴퓨터 모니터 상의 관심 영역(region of interest)의 사진을 찍기 위해 슈터(226)를 이용하면, "deepshot.req"의 제목의 XMPP 메시지가 캡쳐 컴퓨터(capturing computer)(예를 들어, 모바일 디바이스(220A)에 의해 전송된다(박스 304). 이 메시지의 상기 전송은 딥 슈팅 요청(deep shooting request)을 나타내고 이 메시지는 이제 상기 사용자에 대해 현재 로그인 된 각 디바이스로 전파된다(박스 306). 일 예시에서 상기 메시지는 한 쌍의 키 값(key-values)(예를 들어, 콘텐츠, 및 사용자에 의해 촬영된 BASE64 문자열(BASE64 string)로 인코딩 된 사진)을 포함할 수 있다.
데스크톱 컴퓨터(220B) 상에서 실행중인 디스패처(234)는 "deepshot.req" 메시지를 수신한다(박스 308). 데스크톱 컴퓨터(200B)는 데스크톱 컴퓨터(220B)의 디스플레이의 스크린샷을 찍는다(박스 310). 디스패처(234)는 이제 수신된 BASE64 메시지를 디코딩하고, SURF 또는 유사한 알고리즘을 이용하여 디코딩된 사진을 상기 스크린샷에 대해 비교한다(박스 312). 스크린샷에서 디스패처(234)가 매치되는 영역을 발견하면, 그것은 매치된 영역의 코너의 x-y 좌표 및 매치된 영역의 중심점을 결정하고, 또한 데스크톱 컴퓨터(220B)상의 어느 애플리케이션이 활성화된 애플리케이션(front most application)인지 판단한다(박스 314).
이 예시에서 디스패처(234)는 컴퓨팅 디바이스 상에서 백그라운드 애플리케이션(background application)으로서 계속해서 실행될 수 있는 데몬(daemon)으로서 제작된다. 디스패처(234)는 사용자의 자격증명(credential)을 가지고 있고, 따라서 디스패처(234)는 항상 XMPP 서버에 접속할 수 있다. 따라서, 컴퓨팅 디바이스의 이용가능성은 어떤 다른 컴퓨팅 디바이스로부터 XMPP 서버로부터 획득될 수 있다. 디스패처(234)가 전술한 판단들을 수행하면, 디스패처(234)는 좌표들(예를 들어, 코너들과 네 쌍의 x-y 좌표들의 목록, 및 중심점과 한 쌍의 x-y 좌표들)일 수 있는 두 쌍의 키-값을 포함하는 관련 애플리케이션(238A-N 및 236)으로 JSON 요청을 제공하기 위해 각각 실행 및 참여중인 애플리케이션과의 이미 오픈된 웹소켓 연결(already-open WebSocket connection)을 이용할 수 있고, 여기서 상기 좌표들은 디스패치된 윈도우(dispatched window)의 좌상단(upper-left) 코너와 관련된다.
상기 애플리케이션은 이제 그 상태를 어떤 관련된 방법으로 판단하고 그 상태 정보를 디스패처로 반환한다(박스 316). 그러한 정보는, 예를 들어, 현재 웹 브라우저 주소 박스의 URI일 수 있다. 다른 유사한 정보가 다른 애플리케이션들에 의해 제공될 수 있다. 일부 예시들에서, 상기 애플리케이션으로부터의 응답(response)은 적어도 한 쌍의 키-값(예를 들어, 애플리케이션의 상태를 나타내는 하나의 URI)을 포함할 수 있다. 애플리케이션들은 그 URI가 공공의 표준(예를 들어, http:, tel:, geo:, 등)과 호환되는 자신들의 URI를 생성할 수 있다. 일부 경우, 애플리케이션은 오프라인 리소스 또는 파일을 첨부할 수 있다. 각 첨부된 리소스 또는 파일은 두 쌍의 키-값(예를 들어, (1) 파일 이름인 이름(name), (2) BASE64-인코딩된 파일의 콘텐츠인 콘텐츠(content))을 가지는 JSON 구조로 저장될 수 있다. 상기 첨부들은 응답 메시지에서 상기 키 "파일(files)"로 식별되는 JSON 배열(array)로 저장될 수 있다.
데스크톱 컴퓨터(220B) 상의 웹 브라우저는 애플리케이션의 특별한 타입을 나타낼 수 있다. 웹 브라우저는 상기 브라우저가 설명된 상기 프로세스들에 참여할 수 있도록, 웹 디스패처 확장(236) 또는 플러그인(plug in)과 함께 제공될 수 있다. 상기 모든 애플리케이션들은, 상기 애플리케이션들의 이용자(authors)가 각 프로세스를 명확하게 지원해야 할 필요 없이, 상기 브라우저에서 실행될 수 있다. 웹 디스패처 확장(236)은, 디스패처(234)로부터의 메시지들을 웹 브라우저의 적절한 웹 페이지로 라우팅하고 응답 메시지를 다시 디스패처(234)로 보내는 제2단계 디스패처로서 동작한다. 웹 디스패처 확장(236)은, 웹 개발자들이 여기에 기술된 상기 슈팅 및 포스팅 프로세스에 그들 내부의 데이터를 연결(hook) 할 수 있도록, 자바스크립트 콜백 함수(JavaScript callback function)(예를 들어, DeepShot.addListener(listener))를 모든 웹 페이지로 제공한다.
웹 디스패처 확장(236)은 또한 여기에 기술된 프로세스들을 명백하게 지원하지 않을 수 있는 웹 애플리케이션들을 위한 기본 응답자(default responder)일 수 있다. 만약 웹 디스패처 확장(236)이 상기 콜백 함수를 이용하여 그 자신을 등록하지 않은 사이트로부터 데이터를 획득하기 위한 요청을 수신하면, 기본 응답(default response)으로 그 사이트의 URL을 반환할 수 있다. 상기 주소표시줄 상의 URL은 현재 웹 애플리케이션의 상태를 보여줄(map) 수 있다. 그러나, 어떤 AJAX 애플리케이션들은 이 특징을 포함하지 않을 수 있거나, 그 실제 RUL을 숨기도록 결정할 수 있다. 이 이슈를 해결하기 위해, 웹 디스패처 확장(236)은 콘텐츠 스크립트를 삽입함(injecting)으로써 웹페이지들로부터 사전에 정보를 추출할 수 있다. 브라우저 확장으로서, 웹 디스패처 확장(236)은 웹 페이지로 다양한 콘텐츠를 주입하는 것이 가능할 수 있다. 따라서, 웹 디스패처 확장(236)은 웹페이지의 내부 정보를 추출하기 위해 콜백 함수 DeepShot.addListener를 호출하는 자바스크립트 일부를 웹 페이지로 삽입(inject)할 수 있다. 예를 들어, 지도 애플리케이션은 주소표시줄 상에 지도의 현재 영역에 대한 URL을 보여주지 않을 수 있다. 현재 상태(지도의 현재 영역)를 나타내는 실제 URL을 얻기 위해, 웹 디스패처 확장(236)은 id "link"로 DOM(document object module) 요소에 저장된 실제 URL을 획득하기 위해 "document.getElementByld('link').href"를 호출하는 콘텐츠 스크립트를 삽입할 수 있다. 이 콘텐츠 스크립트의 사용은 일 단계에서(in one step)사용자에게 그녀의 컴퓨터 상에 디스플레이중인 지도를 열기 위한 딥 슈팅을 사용할 수 있는 능력을 제공한다.
애플리케이션들(238A-238N 및 236) 중 하나로부터 응답을 수신하면, 디스패처(234)는 응답 메시지를 나타내는 제목 "deepshot.resp"의 새로운 XMPP 메시지를 생성할 수 있다. 상기 응답 메시지의 바디 부분(body part)은, JSON 인코딩 문자열(JSON encoded string)인 상기 애플리케이션으로부터의 응답(reply)이다. 상기 디스패처는 또한 새로운 두 쌍의 키 값(예를 들어, (1) 상기 애플리케이션의 이름을 지시하고, 저장될 수 있고 딥 슈팅의 기록을 검색하거나 브라우징(browse) 하기 위해 사용될 수 있는 타이틀(title), 및 (2) 스크린샷의 매칭된 영역의 BASE64-인코딩된 썸네일이며, 또한 로그에 저장될 수 있고 사용자에 의해 딥 슈팅의 기록을 브라우징 하기 위해 사용될 수 있는 썸네일(thumbnail))을 메시지에 삽입할 수 있다. 디스패처(234)는 이제 상태정보를 포함하는 구성된 메시지(constructed message) XMPP 서버(222)를 경유하여(박스 320) 모바일 디바이스(220A)로 반환한다(박스 318). 모바일 디바이스(220A)(캡쳐 컴퓨터)는 상기 메시지를 수신하고 처리한다(박스 322).
관련된 정보가 상기 메시지로부터 추출되면, 상기 정보는 이제 런처(228)로 제공될 수 있다. 런처(228)는 초기 메시지를 데스크톱 컴퓨터(220B)로 보냈을 때부터 그와 같은 이름(name)을 가진 메시지의 수신을 모니터링 하고 있을 수 있다. 그 제목(subject)을 가진 메시지가 도착하면, 런처(228)는 JSON으로 인코딩된 메시지의 바디를 디코딩하고 모든 첨부를 모바일 디바이스(220A)의 저장부(storage)에 기록한다. 런처(220A)는 데스크톱 컴퓨터(220B)로부터의 응답(reply)에 포함된 URI의 타입을 처리할 수 있는 적절한 애플리케이션을 실행하고 데스크톱 컴퓨터(220B) 상에서의 작업(task)을 재저장하기 위해 상기 응답을 상기 애플리케이션으로 보낸다(박스 324). 애플리케이션이 성공적으로 실행되면, 딥 슈팅의 프로세스는 완료된다.
도 3b는 직전에 설명된 딥 슈팅 프로세스와 유사하게 포맷화된 딥 포스팅 프로세스의 예시를 나타낸다. 딥 포스팅 프로세스는 JSON 구조와 XMPP 통신을 포함하는, 전술한 딥 슈팅 프로세스와 동일한 기반에 기초할 수 있다. 딥 포스팅 프로세스의 핵심 역할(key role)은 포스터(poster, 224)에 있다. 포스터(224)는 카메라를 포함하는 모바일 디바이스(220A) 상에서 동작한다. 포스터(224)는 모바일 디바이스(220A) 상에서 딥 슈팅을 지원하는 애플리케이션들로부터 요청들(requests)을 받아들일 수 있다. 이 애플리케이션들은 적어도 한 쌍의 키-값(예를 들어, 애플리케이션의 내부 상태를 나타내는 URI)을 가지는 JSON 포맷 구조로 바꾸기 위해 데이터를 인코딩 할 수 있다.
도 3b의 프로세스는 딥 포스팅을 탐색하도록 프로그램 된 애플리케이션이 포스팅 요청(posting request)을 카메라를 가지는 디바이스의 시스템으로 제공할 때 시작한다(박스 326). 포스터(224)가 애플리케이션으로부터 포스팅 요청을 수신하면, 포스터(224)는 사용자가 타겟 디바이스(targeting device) 및 포스팅 할 정보를 동시에 볼 수 있도록 카메라 애플리케이션을 실행하고 애플리케이션의 스크린샷을 카메라의 뷰파인더(viewfinder) 상에 오버랩한다(박스 328). 사용자가 카메라의 뷰파인더 내에서 캡쳐하고 싶은 이미지의 뷰를 정렬한 후에, 사용자는 이미지의 캡쳐를 지시할 수 있다(예를 들어, 버튼을 누름). 사용자 입력의 결과로서, JPEG 이미지가 캡쳐되고 상기 이미지는 BASE64 문자열로 인코딩된다. 상기 캡쳐된, 인코딩된 이미지는 이제 포스팅 요청으로부터의 JSON 구조에 키 콘텐츠(key content)와 함께 삽입된다(박스 330). 포스터(224)는, 그 바디(body)로서 전체 JSON 문자열과 함께, 제목 "deeppost.req"를 가지는 XMPP 메시지를 생성할 수 있다. 포스터(224)는 이제 딥 슈팅에 대한 것과 유사한 방식으로 이 SMPP 메시지를 모든 관련된 디바이스(예를 들어, 사용자의 계정에 현재 로그인 된 모든 디바이스들)로 보낼 수 있다(박스 332).
XMPP 서버(222)는 이제 상기 메시지를, 그 각각의 디스패처를 통해 상기 메시지를 수신(박스 336)하는, 모든 상기 디바이스들로 전파한다(broadcasts)(박스 334). 예를 들어, XMPP 서버(222)는, 디스패처(234)를 통해 메시지를 수신하는, 데스크톱 컴퓨터(220B)로 상기 메시지를 전파한다. 각각의 디바이스는 이제 사용자에 의해 촬영된 사진(캡쳐된 이미지)을 특정 디바이스의 스크린샷에 매칭시키기 위해 딥 슈팅에 대해서 전술한 컴퓨터 비전 프로세스(computer vision process)를 실행한다(박스 338, 340). 예를 들어, 데스크톱 컴퓨터(220B)는 사용자에 의해 촬영된 사진이 데스크톱 컴퓨터(220B)의 디스플레이의 스크린샷에 매치하는지를 판단하기 위해 컴퓨터 비전 프로세스를 수행한다(run). 만약 어떤 매치도 발견되지 않으면, 디스패처(234)는 서버 시스템으로 "매치 없음(no match)" 메시지를 응답(박스 340, 342)하고, 상기 서버 시스템은 상기 메시지를 다시 캡쳐 컴퓨터(예를 들어, 모바일 디바이스(220A))로 전달한다(박스 344). 캡쳐 컴퓨터(예를 들어, 모바일 디바이스(220A))는 상기 "매치 없음" 메시지를 처리한다(박스 346). 만약 디스패처(234)가 매치가 있다고 판단하면, 디스패처(234)는 상기 요청을 런처(232)로 보낸다(박스348).
전술한 바와 같이, 애플리케이션들(238A-238N 및 236) 각각은 지지하는 URI 스킴의 타입을 등록할 수 있다. 런처(232)는 캡쳐 컴퓨터(예를 들어, 모바일 디바이스(220A))로부터 수신된 상기 URI 또는 다른 상태 정보에 대해 애플리케이션들(238A-238N 및 236) 중 적절한 하나를 실행하기 위해 이 정보를 이용할 수 있다(박스 350). 애플리케이션들(238A-238N 및 236) 각각은 다수의 URI 스킴을 등록할 수 있다. 부가하여, 다수의 애플리케이션들은 하나의 URI 스킴을 처리할 수 있다. 만약 다수의 애플리케이션들이 하나의 URI 스킴을 받아들이면, 어떤 경우에는, 런처(232)는 사용자에게 하나의 애플리케이션을 선택할 것을 요청하기 위한 대화창(dialog)을 열 수 있다. 다른 경우에, 만약 다수의 애플리케이션들이 하나의 URI 스킴을 받아들이면, 런처(232)는 런칭 이전에 선택될 수 있는 기본 애플리케이션을 실행할 수 있다.
도 4는 컴퓨터들 사이에서 정보를 이동하기 위한 프로세스(400)의 흐름도이다. 프로세스(400)는 전술한 프로세스들의 일반화된 버전으로 고려될 수 있다. 프로세스(400)는, 컴퓨터 스크린 또는 디스플레이의 디지털 이미지가 획득되는 곳에서 시작한다(단계 402). 상기 획득은, 제 1 사용자 디바이스가 제 2 사용자 디바이스의 디스플레이를 목표로 하고, 두 디바이스들 모두 동일 사용자의 계정에 로그인되어 있는, 전술한 메커니즘에 의할 수 있다.
기계 비전 기술(Machine vision techniques)이 관련될 수 있는 이미지의 양상(aspects)을 식별하고 상기 이미지의 양상을 대표하는 파라미터들을 인코딩하기 위해 이용될 수 있다(단계 404). 전술한 것과 유사한 예시에서, 상기 양상은 제 1 이미지의 타겟이었던 컴퓨터에 대한 스크린샷의 촬영된 이미지에 매치되는 이미지의 부분을 포함할 수 있다. 상기 파라미터들은 최상위 애플리케이션(topmost application) 제 2 또는 타겟 디바이스의 디스플레이 상의 좌표들, 및 상기 애플리케이션과 통신하기 위한 기술어(descriptor)를 포함할 수 있다.
상기 파라미터들은 애플리케이션 및 애플리케이션의 상태를 식별하기 위해 사용된다(단계 406). 예를 들어, 애플리케이션 이름(name)은, 상기 애플리케이션과 현재 연관된 URI의 값을 반환하는 등에 의해 그 고유의 상태를 식별할 수 있는, 상기 애플리케이션과 접촉하기 위해 이용될 수 있다.
또 다른 예시에서, 기계 비전은 디스플레이 상의 글자를 식별하고, 그렇게 함으로써 무슨 애플리케이션이 상기 이미지에 있는지와 그 애플리케이션의 상태를 추론하기 위해 이용될 수 있다. 일 예시로서, 기계 비전은 애플리케이션의 제목표시줄(title bar) 또는 브라우저 애플리케이션의 주소표시줄(address bar) 상에서 수행될 수 있다. 또한, 디스플레이 상의 다른 단어들도 상기 애플리케이션의 상태를 추가로 지시하기 위해 이용될 수 있다. 일 예시로서, 주소표시줄의 텍스트가 애플리케이션이 웹-기반 지도 애플리케이션을 실행중인 웹 브라우저라는 것을 지시하는 경우에, 디스플레이 상의 다른 텍스트는 맵핑 애플리케이션이 향하는 지리적 위치를 결정하기 위해 사용될 수 있다.
데이터가 제 2 컴퓨팅 디바이스로 하여금 자동으로 관련있는 애플리케이션을 상기 결정된 상태에서 디스플레이 하도록 하기 위해 제공된다(단계 408). 전술한 주요 예시들에서, 그와 같은 단계는 타겟 디바이스 상의 애플리케이션이 그 상태 정보를 최초 디바이스로 돌려 보낼 텍스트 메시지를 준비하는 다른 구성요소로 제공하도록 함으로써 수행될 수 있고, 여기서 상기 텍스트 메시지는 애플리케이션 및 상태를 식별하는 정보를 더 포함할 수 있다. 설명된 다른 예시에서, 광학 문자 인식이 사용되는 경우에, 식별된 상기 텍스트는 최초 디바이스 상에서 실행중인 애플리케이션에 의해 조직(be organized)될 수 있다. 상기 텍스트의 조직은 원격 검색 엔진으로 검색 쿼리를 제출하거나, 다른 방식으로 URL을 구성하기 위해 사용될 수 있는 텍스트를 초래하는 것과 같을 수 있다. 예를 들어, 제목표시줄 또는 주소 박스의 텍스트로부터의 맵핑 애플리케이션의 식별은 URL을 만들기 위한(for building a URL) 도메인을 식별하기 위해 이용될 수 있고, 지도 상의 텍스트는 상기 도메인으로 제출될 주장(arguments)을 식별하기 위해 이용될 수 있다.
도 5a-5c는 데스크톱 컴퓨터의 디스플레이(506) 상에 모바일 디바이스(504)(예를 들어, 스마트폰)에서의 사용자 인터페이스(502)의 포스팅을 나타낸다.
일부 예시에서, 딥 슈팅 프로토타입(prototype)은 딥 슈팅과 딥 포스팅을 모두 지원하도록 구현되었다. 모바일 디바이스 측면은 스마트폰 상에서 JAVA를 이용하여 구현되었다. 다른 측면(예를 들어, 컴퓨터 측면)에서, 디스패처와 런처는 랩탑 컴퓨터(laptop computer) 상에서 파이썬(Python)으로 구현되었다. XMPP 서버는 리눅스 상에서 Jabber를 이용하여 설정되었다. Jabber의 기본 구성은 처리할 수 있는 메시지의 크기에 제한을 가진다. 시스템에서 전송되는 메시지의 콘텐츠의 잠재적인 큰 사이즈를 허용하기 위해, 상기 메시지 크기 제한은 비활성화되었다(disabled). 이 변경을 제외하고, Jabber의 코드는 수정되지 않았다.
다른 예시들에서, 애플리케이션 개발자들을 위해 입 슈팅을 지원하기 위한 수고를 최소화하기 위해서, 디스패처, 애플리케이션 통신 프로세스를 구현하고, 웹소켓 연결을 라이브러리 내부로 숨기는 자바 라이브러리(Java library)가 개발되었다. 상기 라이브러리는 애플리케이션이 딥 샷 요청을 수신할 수 있도록 그 자체를 등록시키는 하나의 공공 방법(public method) 보이드(void) addListener(Listener listener, String app_name, String[] accepted_uris)를 가지는 딥 샷 클래스(DeepShot class)를 가진다.
추가 예시들에서, 기본 응답자(default responder)는 타겟 애플리케이션이 딥 슈팅을 지원하지 않는 경우를 다루기 위해 디스패처(예를 들어, 도 2b를 참조하여 도시된 디스패처(234))에 구현되었다. 부가하여, 웹 브라우저에 대한 확장이 웹 애플리케이션 용 URL 마이그레이션(migration)을 지원하고 또한 콘텐츠 스크립트를 부가함에 의한 사전 콘텐츠 추출을 지원하기 위해 구현되었다.
도 2b를 참조하면, 기본 응답자(예를 들어, 디스패처(234)에 구현됨)는 만약 타겟 애플리케이션이 디스패처(예를 들어, 디스패처(234)에 등록되지 않았으면 타켓 애플리케이션(예를 들어, 모바일 디바이스(220A) 상의 애플리케이션들(230A-230N) 중 하나)으로 응답할 때 유용한 정보를 제공할 수 있다. 어떤 경우에는, 기본 응답자로부터의 기본 응답이 통상의 응답들의 경우에 있어서 애플리케이션들(230A-230N)에 의해 바로 열리지 않을 수 있지만, 목적(the goal)은 컴퓨팅 디바이스(예를 들어, 데스크톱 컴퓨터(220B)의 디스플레이) 상에 보여지는 정보를 심리스하게 모바일 디바이스(예를 들어, 모바일 디바이스(220A))로 이동하는 것이다. 이 목적을 달성하기 위해, 컴퓨팅 디바이스의 전체 디스플레이 스크린(예를 들어, 데스크톱 컴퓨터(220B)의 디스플레이)의 스크린샷은 매칭되는 영역의 좌표들과 함께 모바일 디바이스(220A)로 전송된다. 따라서, 사용자는 스크린의 이미지(image)를 사진(picture)으로 캡쳐하기 위한 개별 물리적인 카메라의 사용에 의해 야기될 수 있는 노이즈 및 왜곡 없이 데스크톱 컴퓨터(220B)의 디스플레이의 이미지의 깨끗한 버전(clear version)을 볼 수 있다. 사용자는 더 자세히 보거나 원래 사진에 없는 다른 영역들을 보기 위해 스크린을 패닝(pan)하거나 주밍(zoom)할 수 있다. 부가하여, 디스패처(234)가 스크린샷을 캡쳐하면, 디스패처(234)는, 예를 들어, 운영체제의 접근 가능한 API를 이용하여 클릭할 수 있는 URL들 또는 다른 관심 있는 정보를 탐지할 수도 있다. 메타데이터(metadata) 형태의 이 정보는 스크린샷과 함께 전송될 수 있다. 사용자는 브라우저를 실행시키기 위해 (컴퓨팅 디바이스에 포함된 입력 디바이스를 이용하여) URL을 선택할 수 있고 또는 그 번호로 바로 다이얼하기 위해 스크린샷에 있는 전화번호를 선택할 수 있다.
웹 애플리케이션들을 지원하기 위해, 웹 디스패처 확장 또는 웹 디스패처가 웹 브라우저 확장으로서 생성되었다. 웹 디스패처는 3개의 주요 기능을 가질 수 있다. 첫째, 웹 디스패처는, 제1단계 디스패처로부터의 메시지들을 브라우저의 적절한 웹 페이지로 라우팅하고 응답 메시지를 다시 제2단계 디스패처로 보내는, 제2단계 디스패처로서 동작한다. 웹 디스패처는 또한, 웹 개발자들이 그들의 내부 데이터를 딥 샷(Deep Shot) 상에 단순히 연결(hook) 할 수 있도록, 자바스크립트 콜백 함수 "DeepShot.addListener(listener)"를 모든 웹 페이지로 제공할 수 있다. 둘째, 웹 디스패처는 딥 샷을 지원하지 않는 모든 웹 애플리케이션들을 위한 기본 응답자(default responder)일 수 있다. 만약 웹 디스패처가 상기 콜백 함수를 이용하여 그 자신을 등록하지 않은 사이트로부터 데이터 요청을 받으면, 웹 디스패처는 단순히 기본 응답(default response)으로서 그 사이트의 URL을 반환할 수 있다. 주소표시줄 상의 URL은 현재 웹 애플리케이션의 상태를 보여줄(map) 수 있다. 그러나, 어떤 AJAX 애플리케이션들은 이 특징을 포함하지 않거나, 그 실제 RUL을 숨긴다. 다행히도, 웹 디스패처의 마지막 기능이 이 이슈를 처리할 수 있다. 셋째, 웹 디스패처는 콘텐츠 스크립트를 삽입함(injecting)으로써 웹 페이지들로부터 사전에 정보를 추출할 수 있다. 브라우저 확장으로서, 웹 디스패처는 웹 페이지로 다양한 콘텐츠를 주입하는 것이 가능할 수 있다. 따라서, DeepShot.addListener를 호출하는 자바스크립트 일부가, 심지어 최초의 웹 개발자들이 딥 샷을 지원하도록 계획하지 않았다 하더라도 그 내부 정보를 추출하기 위해 웹 페이지로 삽입(inject)될 수 있다. 예를 들어, 지도 애플리케이션은 주소표시줄 상에 지도의 현재 영역에 대한 URL을 보여주지 않을 수 있다. 현재 상태를 나타내는 실제 URL을 얻기 위해, id "link"로 DOM(document object module) 요소에 저장된 실제 URL을 획득하기 위해 "document.getElementByld('link').href"를 호출하는 콘텐츠 스크립트가 삽입될 수 있다. 이 스크립트로, 사용자는 그들의 컴퓨터 상에 디스플레이 된 어떤 맵도 열 수 있도록 딥 슈팅을 사용할 수 있다.
발달된 시스템(developed system)은 모니터 상의 일 영역에 위치하도록 카메라를 이용하는 것이 속도 및 정확도의 관점에서 실현 가능한지 아닌지 여부를 탐구하기 위해 고려되었다. 첫 번째 험(experiment)는 시스템 스피드를 테스트하였고 두 번째는 이미지 매칭 기술의 정확도를 테스트하였다.
실험 1(Experiment 1)
타겟 디바이스로 고해상도(high-resolution) 1680x1050의 15인치 맥북프로(MacBook Pro 15") 컴퓨터가 사용되었고, 캡쳐 디바이스로 안드로이드 2.2(Android 2.2) 기반의 넥서스 원(Nexus One) 스마트폰이 사용되었다. 캡쳐 디바이스는 뷰파인더를 통해 스크린의 약 1/3정도가 보일 수 있도록, 디스플레이로부터 20cm 내지 40cm 사이의 거리, 및 피치 각도(pitch angle) ±20도에서 사람이 들고 있었다. 네 가지 타입의 타겟 애플리케이션(구글 스트리트뷰 사진(GOOGLE STREETVIEW photos, YELP.COM에서의 텍스트, CNN.COM에서의 긴 기사 및 약간의 정보 및 구글 맵스(GOOGLE MAPS)에서의 지도)이 실험되었고 각 애플리케이션에 대해서 딥 슈팅을 이용하여 3개의 사진이 촬영되었다. 절차는: 1) 512x384 사진 촬영; 2) 이 사진을 XMPP 서버를 경유하여 타겟 디바이스로 전송; 3) 사진이 도착하면, 타겟 디바이스가 전체 스크린(1680x1050)의 스크린 샷을 찍고 840x525로 크기조정; 4) 타겟 디바이스가 상기 사진 및 스크린샷으로부터 SURF 특징들을 추출하고 나서, 전술한 프로세스를 이용하여 특징들을 매칭; 5) 상기 시스템이 타켓 애플리케이션에 의해 반환된 정보(즉, 이 실험에서는 URL)와 매칭된 지역의 썸네일을 결합하고 나서, 상기 메시지를 XMPP 서버를 경유하여 캡쳐 디바이스로 되돌려 보냄; 6) 캡쳐 디바이스가 상기 응답을 수신하면, 첨부의 썸네일을 저장하고 적절한 애플리케이션을 이용하여 URL을 오픈하는 것을 포함한다.
총 12번의 시도(4개의 애플리케이션에 3장의 사진)에서, 전체 절차의 평균 시간은 받아들일만한 시간인, 7.74초(SD 0.30초)였다. 각 단계를 평가하면, 네트워크 전송이 전체 시간의 약 50%를 차지하였고, 반면에 다른 프로세스의 시간은 타겟 디바이스에서 34%, 캡쳐 디바이스에서 16%를 차지하였다. 전송 지속 시간은 메시지에서 하나의 사진 및 하나의 썸네일 첨부 프로세스 및 그에 후속하는 상기 메시지를 외부 서버로 보내는 라우팅에 의존한다. 따라서, 전송 시간은 사진을 전송하지 않거나 제3자로 보내지 않음으로써 감소될 수 있다.
실험 2
15인치 맥북프로(MacBook Pro 15") 컴퓨터 모니터가 스크린에 대한 조절 가능한 틸트(tilt) 및 피치 각도와 함께 사용되었다. 스크린의 피치 각도의 세팅은 다음의 네 가지 이다:70°, 90°, 110°, 및 130°. 랩탑은 텍스트와 이미지로 구성된 대중적인 지역 레스토랑의 웹 페이지(YLEP.COM으로부터)의 구글 크롬(GOOGLE CHROME) 전체화면 브라우저를 표시하였다. 카메라를 포함하는 넥서스 원 스마트폰은 바닥에 수직인 L-자형 자(L-square ruler)에 고정되었다. 랩탑의 표면으로부터 카메라 렌즈의 중심까지 측정된 카메라의 높이는, 피치 각도가 90° 또는 110°인 동안 19cm로 고정되었고, 피치 각도가 70° 또는 130°일 때는 14.5cm로 고정되었다. 이 높이 세팅은 카메라가 스크린 상에서 동일한 타겟 주변, 레스토랑의 이름에 초점이 맞도록 하였다. 최종적으로, 폰은 스크린 앞쪽에, 스크린 손잡이(shaft)로부터 카메라 렌즈까지 측정된 거리가, 5cm부터 50cm로 설정되었다. 각 피치 각도에 대해서, 다섯 장의 사진이 5cm과 50cm 사이에서 각 5cm마다 총 200장이 촬영되었다.
전술한 기술은 각 사진을 랩탑에 디스플레이 된 스크린에 대해 매칭시키기 위해 사용되었다. 만약 매칭된 영역의 중심이 스크린의 예상되는 영역과 오버랩되면, 상기 매치는 성공적인 것으로 고려된다. 도 6은 피치 각도 및 카메라와 스크린 사이의 거리에 대해 촬영된 시도 사진들의 수의 그래프를 나타낸다. 도 6은 각각의 거리 설정(602)에 대해 성공적인 매치의 수를 나타내고, 각 막대(bar)는 네 개의 피치 각도(604a-d)에 대한 매치의 총합을 지시한다.
상기 결과는 만약 카메라가 모니터에 평행하고 카메라와 모니터 사이의 거리가 10cm와 40cm 사이의 범위에 있으면 매칭 프로세스가 향상된다는 것을 나타낸다. 이 범위는, 예를 들어 레스토랑의 이름 및 그 기본 정보를 포함할 수 있는, 작은 영역을 커버할 수 있다. 심지어 카메라가 20도까지 모니터 쪽으로 또는 멀어지는 쪽으로 틸트되어도, 모니터 거리 범위까지의 카메라는 약 30cm이다.
이하는 다수의 정보 공유 시나리오 또는 사용 케이스들이다.
시나리오 1: 정보를 가지고 가기(Taking information to go) (데스크탑에서 모바일로)
이 타입의 시나리오는 딥 슈팅의 개발에 동기가 되었다. 사람들은 보통 사무실 또는 집에서 데스크톱 컴퓨터 또는 랩탑으로 일을 한다. 다른 장소로 이동하기 전에, 컴퓨터 상에서 그 장소와 관련된 정보를 살펴볼 수 있다. 그러나, 사람들은 빠르게 망각한다. 그들은 통상 정보를 종이조각에 기록하거나, 이동 중일 때 같은 정보를 반복해서 살펴볼 필요가 있다. 이러한 종류의 시나리오에서, 사람들은 딥 슈팅을 이용하여 정보를 얻을 수 있다. 예를 들어, 사람들은 다음 미팅 장소에 대한 지도 또는 정보를 가지고 다닐 수 있고 따라서 같은 정보를 다시 살펴볼 필요가 없다.
시나리오 2: 모바일에서 생성된 콘텐츠 또는 상태를 데스크탑으로 공유하기 (모바일에서 데스크탑으로)
사람들은 모바일 디바이스 상에서 정보(예를 들어, 사진, 연락처, 또는 종결되지 않은 리딩(readings))를 생성할 수 있다. 사람들은 모바일 디바이스를 데스크톱 디바이스와 동기화하기 위해 특정 소프트웨어를 사용할 수 있다. 어떤 경우에는, 케이블(cable) 및 전체 동기화 프로세스가 큰 디스플레이 상에 단일 사진을 디스플레이하거나 모바일 디바이스 상에서 이미 오픈된 웹 페이지를 데스크톱 디바이스 상에서 오픈하기 위해 필요할 수 있다. 딥 포스팅은 모바일 디바이스와 데스크톱 사이에서 이 타입의 정보를 공유하는 덜 번거로운(cumbersome) 방법이 될 수 있다.
시나리오 3: 모바일 디바이스를 임시 저장소로 사용하기(모바일을 경유하여 데스크탑에서 데스크탑으로)
USB 스틱(sticks) (USB 플래쉬 드라이브)는 컴퓨터들 사이에서 파일을 공유하기 위해 사용될 수 있다. 사람들은 파일로 공유할 필요가 있는 정보를 저장하고, 그 파일을 USB 스틱에 카피하고, 그러고 나서 USB 스틱을 또 다른 컴퓨터에 꽂는다. 이 타입의 시나리오에서, 딥 슈팅은 컴퓨터(예를 들어, 데스크톱 컴퓨터) 상에서 실행중인 애플리케이션으로부터 모바일 디바이스로 자동으로 정보를 추출하기 위해 사용될 수 있다. 모바일 디바이스는 다른 장소에 위치할 수 있고, 사용자는 딥 포스팅으로 추출된 정보를 다른 컴퓨터(예를 들어, 다른 데스크톱 컴퓨터)로 포스팅할 수 있다.
시나리오 4: 모바일 디바이스의 콘텐츠 또는 상태를 다른 모바일과 공유하기(모바일에서 모바일로)
정보는 다수의 개인 모바일 디바이스 사이에서 공유될 수 있다. 부가하여, 정보는 한 사람의 모바일 디바이스에서 다른 사람의 모바일 디바이스로 공유될 수 있다. 예를 들어, 범핑(bumping)은 두 모바일 디바이스들을 연결시키는 동시발생 제스처(synchronous gesture)이다. 현재의 딥 샷 프레임워크(Deep Shot framework)가 다수의 사용자들의 디바이스들 사이의 통신을 지원하지 않더라도, 딥 슈팅 및 딥 포스팅은 사용자에 귀속되는(belonging to) 또 다른 디바이스를 위치시키도록 사용될 수 있다. 나아가, 딥 슈팅 및 딥 포스팅은 다수의 사용자들 사이에서 공유될 정보의 영역을 위치시키기 위해 사용될 수 있다. 예를 들어, 사용자는 다른 사람의 모바일 디바이스 상에 디스플레이 된 연락처를 그 또는 그녀의 모바일 디바이스를 이용하여 딥 슈팅으로 촬영할 수 있고, 이제 연락처 정보는 자동으로 상기 사용자의 모바일 디바이스로 전송될 수 있다.
시나리오 5: 연결되는 비디오 게임 플레이(Continued Videogame Game Play)
여기에 설명된 기술은, 장편 게임 캠페인(long-running game campaign)과 같은, 단일 플레이어에 의한 비디오 게임의 연속적인 게임 플레이를 제공하기 위해 이용될 수 있다. 플레이어가 집에 있을 때, 그는 모든 기능을 가진(full-featured) 게이밍 콘솔로 플레이 할 수 있다. 그가 일하러 갈 때, 그는 게임을 정지하고 스마트폰으로 그의 텔레비전 스크린을 촬영할 수 있다. 콘솔은 이제 그 이미지를 수신하고, 그것이 관련된 수신자(relevant recipient)라는 것을 판단하고, 게임 상태 정보를 스마트폰으로 보낼 수 있다. 사용자는 이제, 게임플레이 기능 상에 낮은 해상도 및 아마도 어떤 추가적인 제한에도 불구하고, 스마트폰에서 그가 중단했던 게임을 다시 집어들 수 있다. 사용자는 그가 집으로 돌아올 때 역 프로세스를 수행할 수 있다.
도 7은, 여기에 설명된 기술이 이용될 수 있는 포괄적인 컴퓨터 디바이스(700) 및 포괄적인 모바일 컴퓨터 디바이스(750)를 나타낸다. 컴퓨팅 시스템(700)은 랩탑, 데스크톱, 워크스테이션, PDA(Personal Digital Assistant), 서버, 블레이드(blade) 서버, 메인 프레임, 및 그 밖의 적절한 컴퓨터들과 같은 다양한 형태의 디지털 컴퓨터를 나타내기 위해 사용된다. 컴퓨팅 디바이스(750)는 PDA, 셀룰러 폰, 스마트폰, 및 그 밖의 유사한 컴퓨팅 디바이스와 같은 다양한 형태의 모바일 디바이스를 나타내기 위해 사용된다. 본 명세서에서 나타낸 구성요소, 그들의 접속 및 관계, 및 그들의 기능들은 단지 예시를 의미하고, 본 명세서에서 설명하거나 또는 청구된 발명의 구현예를 제한하는 것을 의미하지 않는다.
컴퓨팅 디바이스(700)는 프로세서(702), 메모리(704), 저장 디바이스(706), 메모리(704)와 고속 확장 포트(710)에 접속하는 고속 인터페이스(708), 및 저속 버스(714)와 저장 디바이스(706)에 접속하는 저속 인터페이스(712)를 포함한다. 각 구성요소(702, 704, 706, 708, 710, 및 712)는 다양한 버스들을 사용하여 서로 접속되고, 공통 마더보드에 탑재되거나 또는 적절한 경우 다른 방식으로 탑재될 수 있다. 프로세서(702)는 컴퓨팅 디바이스(700) 내에서 실행하기 위한 명령어를 처리할 수 있으며, 이러한 명령어에는, 고속 인터페이스(708)에 연결된 디스플레이(716)와 같은 외장 입/출력 디바이스 상에서 GUI용 그래픽 정보를 디스플레이하기 위해, 메모리(704) 또는 저장 디바이스(706)에 저장되는 명령어가 포함된다. 다른 구현예에서, 다중 프로세서 및/또는 다중 버스는 적절한 경우, 다중 메모리 및 메모리 타입과 함께 사용될 수 있다. 또한, 다중 컴퓨팅 디바이스(700)는 각 디바이스가 필요 동작의 부분을 제공하는 형태(예를 들어, 서버 뱅크, 블레이드 서버의 그룹, 또는 다중 프로세서 시스템)로 접속될 수 있다.
메모리(704)는 컴퓨팅 디바이스(700) 내에 정보를 저장한다. 일 구현예에서, 메모리(704)는 컴퓨터-판독 가능한 매체이다. 일 구현예에서, 메모리(704)는 휘발성 메모리 유닛 또는 유닛들이다. 또 다른 구현예서, 메모리(704)는 비 휘발성 메모리 유닛 또는 유닛들이다.
저장 디바이스(706)는 컴퓨팅 디바이스(700)를 위한 대용량 저장소(mass storage)를 제공할 수 있다. 일 구현예에서, 저장 디바이스(706)는 컴퓨터-판독 가능한 매체이다. 다양한 다른 구현예들에서, 저장 디바이스(706)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스, 또는 테이프 디바이스, 플래쉬 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성에 존재하는 디바이스를 포함하는 디바이스 어레이일 수 있다. 일 구현예에서, 컴퓨터 프로그램 제품은 정보 캐리어(information carrier) 내에 유형적으로 구체화된다. 또한, 컴퓨터 프로그램 제품은 실행될 때, 상술한 것과 같은 하나 이상의 방법을 수행하는 명령어를 포함한다. 정보 캐리어는 메모리(704), 저장 디바이스(706), 또는 프로세서(702) 상의 메모리와 같은 컴퓨터 또는 기계 판독가능 매체이다.
저속 제어부(712)가 저대역-집약적 동작(lower bandwidth-intensive operations)을 관리하는 반면, 고속 제어부(708)는 컴퓨팅 디바이스(900)에 대한 대역-집약적 동작을 관리한다. 이러한 기능(duties)들의 배치는 단지 예시적인 것이다. 일 구현예에서, 고속 제어부(708)는 메모리(704), 디스플레이(716)(예를 들어, 그래픽 프로세서 또는 가속기를 통함)에 연결되고, 다양한 확장 카드(도시되지 않음)을 수용할 수 있는 고속 확장 포트(710)에 연결된다. 일부 구현예에서는, 저속 제어부(712)는 저장 디바이스(706) 및 저속 확장 포트(714)에 연결된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트는 키보드, 포인팅 디바이스, 스캐너와 같은 하나 이상의 입/출력 디바이스들에 연결되거나, 또는 예컨대 네트워크 어댑터를 통하여, 스위치나 라우터와 같은 네트워킹 디바이스에 연결될 수 있다.
컴퓨팅 디바이스(700)는 도면에 도시된 바와 같이, 복수의 다른 형태로 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(700)는 표준 서버(720)로 구현되거나 이러한 서버들의 그룹에서 여러 번(multiple time) 구현될 수 있다. 또한, 컴퓨팅 디바이스(700)는 랙 서버 시스템(724)의 부분으로서 구현될 수 있다. 추가적으로, 컴퓨팅 디바이스(700)는 랩탑 컴퓨터(722)와 같은 개인용 컴퓨터내에 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(700)로부터의 구성요소는 디바이스(750)와 같은 모바일 디바이스(도시되지 않음) 내 다른 구성요소와 조합될 수 있다. 이러한 디바이스 각각은 하나 이상의 컴퓨팅 디바이스(700, 750)를 포함하고, 전체 시스템은 서로 통신하는 다중 컴퓨팅 디바이스(700, 750)로 구성될 수 있다.
컴퓨팅 디바이스(750)는 여러 구성요소 중에서 프로세서(752), 메모리(764), 디스플레이(754)와 같은 입/출력 디바이스, 통신 인터페이스(766), 및 트랜스시버(768) 등을 포함한다. 또한, 디바이스(750)에는 추가적인 저장소를 제공하기 위하여, 마이크로 드라이브 또는 다른 디바이스와 같은 저장 디바이스가 제공될 수 있다. 구성요소(750, 752, 764, 754, 766, 및 768) 각각은 다양한 버스를 이용하여 서로 접속되고, 구성요소의 몇몇은 공통의 마더보스에 탑재되거나 적절한 다른 방법으로 탑재될 수 있다.
프로세서(752)는 컴퓨팅 디바이스(750) 내에서의 실행을 위해 명령어를 처리하며, 이 명령어에는 메모리(764)에 저장된 명령어가 포함된다. 프로세서는 개별적인 아날로그 및 디지털 프로세서도 또한 포함할 수 있다. 프로세서는, 예를 들어, 사용자 인터페이스의 컨트롤, 디바이스(750)에 의해 실행되는 애플리케이션, 및 컴퓨팅 디바이스(750)에 의한 무선 통신과 같은 디바이스(750)의 다른 구성요소들 사이에 조정을 제공할 수 있다.
프로세서(752)는 제어 인터페이스(758) 및 디스플레이(754)에 연결된 디스플레이 인터페이스(756)를 통해 사용자와 통신할 수 있다. 디스플레이(754)는, 예를 들어, TFT LCD(Thin-Film-Tansistor Liquid Crystal Display) 디스플레이 또는 OLED(Organic Light Emitting Diode) 디스플레이, 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(756)는 그래픽 및 다른 정보를 사용자에게 나타내기 위해 디스플레이(754)를 구동하는 적절한 회로를 포함할 수 있다. 제어 인터페이스(758)는 사용자로부터 명령들을 수신하고, 프로세서(752)에 제출하기 위해 그 명령들을 변환한다. 더욱이, 확장 인터페이스(762)는 디바이스(750)와 다른 디바이스들 간에 근거리 통신이 가능하도록 하기 위해, 프로세서(752)와의 통신에 제공될 수 있다. 확장 인터페이스(762)는, 예를 들어, 일부 구현예에서는 유선 통신을 제공하고 다른 구현예에서 무선 통신을 제공하며, 또한 다중 인터페이스가 사용될 수 있다.
메모리(764)는 컴퓨팅 디바이스(750) 내에 정보를 저장한다. 메모리(764)는 컴퓨터 판독가능 매체 또는 미디어, 휘발성 메모리 유닛 또는 유닛들, 또는 비휘발성 메모리 유닛 또는 유닛들 중 하나 이상으로서 구현될 수 있다. 또한, 확장 메모리(774)가 제공되어, 예를 들어 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함하는 확장 인터페이스(774)를 통해 디바이스(750)에 접속될 수 있다. 이러한 확장 메모리(774)는 디바이스(750)를 위한 여분의 저장 공간을 제공할 수 있고, 또한 애플리케이션 또는 디바이스(750)를 위한 다른 정보를 저장할 수 있다. 특히, 확장 메모리(774)는 상술된 프로세스를 실행하거나 보조하기 위한 명령어를 포함하고, 또한 보안 정보를 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(774)는 디바이스(750)용 보안 모듈(security module)로서 제공될 수 있고, 디바이스(750)의 안전한 사용을 가능하게 하는 명령어로 프로그램될 수 있다. 더욱이, 보안 애플리케이션은, 해킹할 수 없는 방식(non-hackable manner)으로 SIMM 카드 상에 식별 정보를 위치시킨 것과 같은 추가적 정보와 함께 SIMM 카드를 통해 제공될 수 있다.
메모리는 아래에서 논의되는 것과 같이 예를 들어, 플래시 메모리 및/또는 NVRAM 메모리를 포함할 수 있다. 일 구현예에서, 컴퓨터 프로그램 제품은 정보 캐리어에 유형적으로 구체화된다. 컴퓨터 프로그램 제품은 실행될 때, 상술된 것과 같은 하나 이상의 방법을 수행하는 명령어를 포함한다. 정보 캐리어는 메모리(764), 확장 메모리(774), 프로세서(752)와 같은 컴퓨터-또는 기계-판독가능 매체이다.
디바이스(750)는 디지털 신호 처리 회로를 필요에 따라 포함하는 통신 인터페이스(766)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(766)는 GSM 음성 호, SMS, EMS, 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000, 또는 GPRS 등과 같은 다양한 모드 또는 프로토콜 하에서의 통신을 제공할 수 있다. 이러한 통신은 예를 들어, 무선-주파수 트랜스시버(768)를 통해 수행될 수 있다. 또한, 단거리(short range) 통신은 예를 들어, 블루투스, Wi-Fi, 또는 다른 이러한 트랜스시버(도시되지 않음)를 사용하여 수행될 수 있다. 이에 더하여, GPS(Global Position System) 수신기 모듈(770)은 추가적인 네비게이션- 및 위치- 관련 무선 데이터를 디바이스(750)에 제공할 수 있으며, 이 무선 데이터는 디바이스(750)에서 실행중인 애플리케이션에 의해 적절하게 사용될 수 있다.
또한, 디바이스(750)는 사용자로부터의 발화 정보(spoken information)를 수신하고, 그 발화 정보를 사용 가능한 디지털 정보로 변환하는 오디오 코덱(760)을 이용하여, 청취 가능하게(audibly) 통신할 수 있다. 또한, 오디오 코덱(760)은 예를 들어, 디바이스(750)의 핸드셋 내의 스피커를 통하는 것과 같이 해서, 사용자가 들을 수 있는 음성을 생성한다. 이러한 음성은 음성 전화 호로부터의 음성을 포함할 수 있고, 녹음된 음성(예를 들어, 음성 메시지, 뮤직 파일 등)은 포함할 수 있고, 또한 디바이스(750) 상에서 동작하는 애플리케이션에 의해 생성된 음성을 포함할 수 있다.
컴퓨팅 디바이스(750)는 도면에 도시된 것처럼, 다수의 다양한 형태로 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스(750)는 셀룰러 전화(780)로서 구현될 수 있다. 또한, 컴퓨팅 디바이스(750)는 스마트폰(782), PDA, 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
본 명세서에 기재된 시스템의 다양한 구현예와 기술은 디지털 전자 회로, 집적 회로, 특별하게 설계된 ASICs(Application Specific Intergrated Circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 그것의 조합물로 실현될 수 있다. 이러한 다양한 구현예는 하나 이상의 컴퓨터 프로그램으로 된 구현예를 포함하며, 이 컴퓨터 프로그램은 적어도 하나의 프로그램 가능한 프로세서를 포함하는 프로그램 가능한 시스템에서 실행가능하고 및/또는 해석 가능하다. 또한, 전용 또는 범용 프로세서일 수 있는 이 프로그램 가능한 프로세서는 데이터와 명령어를 송수신하기 위해, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 수신 디바이스에 연결된다.
컴퓨터 프로그램(또한 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 또는 코드로 알려짐)은 프로그램 가능한 프로세서를 위한 기계 명령어를 포함하고, 고레벨 절차 및/또는 객체 지향 프로그램 언어(object-oriented programming language) 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용되는 바와 같이, 용어 "기계 판독가능 매체(machine-readable medium)"와 "컴퓨터 판독가능 매체(computer-readable medium)"는 기계 명령어 및/또는 데이터를 프로그램 가능한 프로세서에 제공하기 위해 이용되는 임의의 컴퓨터 프로그램 제품, 장치, 및/또는 디바이스(예를 들어, 마그네틱 디스크, 광학 디스크, 메모리, PLDs(Programmable Logic Devices))를 가리키며, 기계 판독가능 신호와 같은 기계 명령어를 수신하는 기계 판독가능 매체를 포함한다. 용어 "기계 판독가능 신호(machine-readable signal)"는 기계 명령어 및/또는 데이터를 프로그램 가능한 프로세서에 제공하기 위해 사용되는 임의의 신호를 가리킨다.
사용자와의 상호 작용을 제공하기 위하여, 본 명세서에 기술된 시스템과 기술은, 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스(예를 들어, CRT(cathode ray tube) 또는 LCD 모니터)와 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 구비한 컴퓨터 상에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위하여 다른 종류의 디바이스가 또한 사용될 수 있다; 예를 들어, 사용자에게 제공되는 피드백(feedback)은 임의의 형태의 감각 피드백(예를 들어, 시각 피드백, 청각 피드백 또는 촉각 피드백)일 수 있고, 사용자로부터의 입력은 음향(acoustic), 음성(speech) 또는 촉각(tactile) 입력을 포함하는 임의의 형태로 수신될 수 있다.
본 명세서에서 설명한 시스템과 기술은, 백 엔드(back end) 구성요소(예를 들어, 데이터 서버와 같은), 또는 미들웨어 구성요소(예를 들어, 애플리케이션 서버), 또는 프론트 엔드(front end) 구성요소(예를 들어, 본 명세서에서 설명된 시스템 및 기술의 구현예와 사용자가 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹브라우저를 구비한 클라이언트 컴퓨터), 또는 이러한 백 엔드, 미들웨어, 또는 프론트 엔드 구성요소들의 임의의 조합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 시스템의 구성요소는 디지털 데이터 통신의 임의의 형태 또는 매체(예를 들어, 통신 네트워크)에 의해 상호 접속될 수 있다. 통신 네트워크의 예로서, 근거리 네트워크("LAN"), 광역 네트워크("WAN"), 및 인터넷이 있다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 보통 서로 떨어져 있으며, 일반적으로는 통신 네트워크를 통하여 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터 상에서 실행되고 상호 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의하여 발생한다.
다수의 실시예들이 기술되었다. 그럼에도 불구하고, 본 발명의 범위 및 사상으로부터 벗어나지 않고 다양한 변형들이 가해질 수 있음이 이해될 것이다. 예를 들어, 순서 재배치된(re-ordered), 추가된, 제거된 단계들과 함께 위에서 보여진 다양한 형태의 플로우가 사용될 수 있다. 또한, 몇몇 인증 시스템 및 방법에 대한 애플리케이션들이 기술되었지만, 다수의 다른 애플리케이션들이 고려될 수 있음이 인식되어야 할 것이다. 따라서, 다른 실시예들도 후술하는 청구항들의 범위 내에 속한다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서,
    컴퓨팅 시스템에 의해, 모바일 디바이스가 사용자 계정에 로그인했다는 표시를 상기 모바일 디바이스로부터 수신하는 단계;
    상기 컴퓨팅 시스템에 의해, 그리고 상기 모바일 디바이스로부터 상기 모바일 디바이스의 카메라가 제2 컴퓨팅 디바이스의 디스플레이를 캡처한 이미지를 수신하는 단계, 상기 이미지는 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시되었던 캡처된 정보를 도시하며;
    상기 컴퓨팅 시스템에 의해, 상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 디스플레이된 정보에 대응하는지 여부를 결정하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 그리고 상기 캡처된 정보가 상기 디스플레이된 정보에 대응한다고 결정한 결과로서, 대응하는 사용자 인터페이스 스크린들에 대한 엑세스를 제공하기 위해 상기 모바일 디바이스와 상기 제2 컴퓨팅 디바이스를 동기화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 청구항 1에 있어서,
    상기 제2 컴퓨팅 디바이스를 상기 사용자 계정으로 로그인하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  3. 청구항 1에 있어서,
    상기 컴퓨팅 시스템은 서버 시스템과 상기 제2 컴퓨팅 디바이스를 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  4. 청구항 1에 있어서,
    상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 디스플레이된 정보에 대응하는지 여부를 결정하는 단계는:
    상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보의 스크린샷을 획득하는 것; 및
    상기 컴퓨팅 시스템에 의해, (i) 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보의 상기 스크린샷을 (ii) 상기 모바일 디바이스의 상기 카메라가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이를 캡처한 상기 이미지와 비교하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  5. 청구항 4에 있어서,
    상기 컴퓨팅 시스템에 의해, 그리고 상기 디스플레이된 정보의 상기 스크린샷을 상기 모바일 디바이스의 상기 카메라가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이를 캡처한 상기 이미지와의 비교에 기초하여, 상기 제2 컴퓨팅 디바이스는 상기 모바일 디바이스와의 동기화 프로세스에 대한 타겟임을 식별하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  6. 청구항 1에 있어서,
    상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보에 대응한다고 결정함에 응답하여, 상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상태의 표시를 획득하는 단계; 및
    상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상기 상태의 상기 표시를 상기 모바일 디바이스에 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  7. 청구항 6에 있어서,
    대응하는 사용자 인터페이스 스크린들에 대한 엑세스를 제공하기 위해 상기 모바일 디바이스와 상기 제2 컴퓨팅 디바이스를 동기화하는 단계는, 상기 컴퓨팅 시스템으로부터, 상기 모바일 디바이스로 하여금 상기 제2 컴퓨팅 디바이스의 상기 상태에 대응하는 상태에 진입하게 하기 위해 상기 제2 컴퓨팅 디바이스의 상기 상태의 표시를 상기 모바일 디바이스에 제공하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  8. 명령어들이 저장된 컴퓨터 판독가능 매체로서, 상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하고, 상기 동작들은:
    컴퓨팅 시스템에 의해, 모바일 디바이스가 사용자 계정에 로그인했다는 표시를 상기 모바일 디바이스로부터 수신하는 동작;
    상기 컴퓨팅 시스템에 의해, 그리고 상기 모바일 디바이스로부터 상기 모바일 디바이스의 카메라가 제2 컴퓨팅 디바이스의 디스플레이를 캡처한 이미지를 수신하는 동작, 상기 이미지는 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시되었던 캡처된 정보를 도시하며;
    상기 컴퓨팅 시스템에 의해, 상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 디스플레이된 정보에 대응하는지 여부를 결정하는 동작; 및
    상기 컴퓨팅 시스템에 의해, 그리고 상기 캡처된 정보가 상기 디스플레이된 정보에 대응한다고 결정한 결과로서, 대응하는 사용자 인터페이스 스크린들에 대한 엑세스를 제공하기 위해 상기 모바일 디바이스와 상기 제2 컴퓨팅 디바이스를 동기화하는 동작을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  9. 청구항 8에 있어서,
    상기 제2 컴퓨팅 디바이스를 상기 사용자 계정으로 로그인하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  10. 청구항 8에 있어서,
    상기 컴퓨팅 시스템은 서버 시스템과 상기 제2 컴퓨팅 디바이스를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  11. 청구항 8에 있어서,
    상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 디스플레이된 정보에 대응하는지 여부를 결정하는 동작은:
    상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보의 스크린샷을 획득하는 것; 및
    상기 컴퓨팅 시스템에 의해, (i) 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보의 상기 스크린샷을 (ii) 상기 모바일 디바이스의 상기 카메라가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이를 캡처한 상기 이미지와 비교하는 것을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  12. 청구항 11에 있어서,
    상기 컴퓨팅 시스템에 의해, 그리고 상기 디스플레이된 정보의 상기 스크린샷을 상기 모바일 디바이스의 상기 카메라가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이를 캡처한 상기 이미지와의 비교에 기초하여, 상기 제2 컴퓨팅 디바이스는 상기 모바일 디바이스와의 동기화 프로세스에 대한 타겟임을 식별하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  13. 청구항 8에 있어서,
    상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보에 대응한다고 결정함에 응답하여, 상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상태의 표시를 획득하는 동작; 및
    상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상기 상태의 상기 표시를 상기 모바일 디바이스에 제공하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  14. 청구항 13에 있어서,
    대응하는 사용자 인터페이스 스크린들에 대한 엑세스를 제공하기 위해 상기 모바일 디바이스와 상기 제2 컴퓨팅 디바이스를 동기화하는 동작은, 상기 컴퓨팅 시스템으로부터, 상기 모바일 디바이스로 하여금 상기 제2 컴퓨팅 디바이스의 상기 상태에 대응하는 상태에 진입하게 하기 위해 상기 제2 컴퓨팅 디바이스의 상기 상태의 표시를 상기 모바일 디바이스에 제공하는 것을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  15. 컴퓨팅 시스템으로서,
    하나 이상의 프로세서들; 및
    명령어들이 저장된 컴퓨터 판독가능 매체로서, 상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하고, 상기 동작들은:
    컴퓨팅 시스템에 의해, 모바일 디바이스가 사용자 계정에 로그인했다는 표시를 상기 모바일 디바이스로부터 수신하는 동작;
    상기 컴퓨팅 시스템에 의해, 그리고 상기 모바일 디바이스로부터 상기 모바일 디바이스의 카메라가 제2 컴퓨팅 디바이스의 디스플레이를 캡처한 이미지를 수신하는 동작, 상기 이미지는 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시되었던 캡처된 정보를 도시하며;
    상기 컴퓨팅 시스템에 의해, 상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 디스플레이된 정보에 대응하는지 여부를 결정하는 동작; 및
    상기 컴퓨팅 시스템에 의해, 그리고 상기 캡처된 정보가 상기 디스플레이된 정보에 대응한다고 결정한 결과로서, 대응하는 사용자 인터페이스 스크린들에 대한 엑세스를 제공하기 위해 상기 모바일 디바이스와 상기 제2 컴퓨팅 디바이스를 동기화하는 동작을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  16. 청구항 15에 있어서,
    상기 제2 컴퓨팅 디바이스를 상기 사용자 계정으로 로그인하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  17. 청구항 15에 있어서,
    상기 컴퓨팅 시스템은 서버 시스템과 상기 제2 컴퓨팅 디바이스를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  18. 청구항 15에 있어서,
    상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 디스플레이된 정보에 대응하는지 여부를 결정하는 동작은:
    상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보의 스크린샷을 획득하는 것; 및
    상기 컴퓨팅 시스템에 의해, (i) 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보의 상기 스크린샷을 (ii) 상기 모바일 디바이스의 상기 카메라가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이를 캡처한 상기 이미지와 비교하는 것을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  19. 청구항 18에 있어서,
    상기 컴퓨팅 시스템에 의해, 그리고 상기 디스플레이된 정보의 상기 스크린샷을 상기 모바일 디바이스의 상기 카메라가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이를 캡처한 상기 이미지와의 비교에 기초하여, 상기 제2 컴퓨팅 디바이스는 상기 모바일 디바이스와의 동기화 프로세스에 대한 타겟임을 식별하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  20. 청구항 15에 있어서,
    상기 카메라에 의해 캡처된 상기 이미지에 도시된 상기 캡처된 정보가 상기 제2 컴퓨팅 디바이스의 상기 디스플레이에 제시된 상기 디스플레이된 정보에 대응한다고 결정함에 응답하여, 상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상태의 표시를 획득하는 동작; 및
    상기 컴퓨팅 시스템에 의해, 상기 제2 컴퓨팅 디바이스의 상기 상태의 상기 표시를 상기 모바일 디바이스에 제공하는 동작을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
KR1020187012397A 2010-09-17 2011-09-16 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들 KR101957951B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US38407510P 2010-09-17 2010-09-17
US61/384,075 2010-09-17
PCT/US2011/051989 WO2012037489A1 (en) 2010-09-17 2011-09-16 Moving information between computing devices

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137009772A Division KR101855454B1 (ko) 2010-09-17 2011-09-16 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들

Publications (2)

Publication Number Publication Date
KR20180052767A KR20180052767A (ko) 2018-05-18
KR101957951B1 true KR101957951B1 (ko) 2019-03-13

Family

ID=44720151

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137009772A KR101855454B1 (ko) 2010-09-17 2011-09-16 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들
KR1020187012397A KR101957951B1 (ko) 2010-09-17 2011-09-16 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137009772A KR101855454B1 (ko) 2010-09-17 2011-09-16 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들

Country Status (5)

Country Link
US (2) US8805089B2 (ko)
EP (1) EP2616901B1 (ko)
KR (2) KR101855454B1 (ko)
CN (1) CN103229126B (ko)
WO (1) WO2012037489A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106420B2 (en) 2018-06-11 2021-08-31 Alibaba Group Holding Limited Method, device, system and storage medium for information transmission and data processing

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566744B2 (en) * 2010-08-12 2013-10-22 Vmware, Inc. Same-display comparison of content for different renditions of a single computer program
WO2012037489A1 (en) * 2010-09-17 2012-03-22 Google Inc. Moving information between computing devices
US8503925B2 (en) * 2011-02-02 2013-08-06 Tv Band Service Llc Flexibly targeting information sent over a broadcast communications medium
US8958745B2 (en) * 2011-06-21 2015-02-17 Lg Electronics Inc. Electronic device and operating method thereof
US8930492B2 (en) 2011-10-17 2015-01-06 Blackberry Limited Method and electronic device for content sharing
US9256462B2 (en) 2012-02-17 2016-02-09 Microsoft Technology Licensing, Llc Contextually interacting with applications
JP5929399B2 (ja) * 2012-03-26 2016-06-08 富士ゼロックス株式会社 情報提供装置、情報提供システム及びプログラム
US20130339454A1 (en) * 2012-06-15 2013-12-19 Michael Walker Systems and methods for communicating between multiple access devices
US9351641B2 (en) 2012-10-04 2016-05-31 Cerner Innovation, Inc. Mobile processing device system for patient monitoring data acquisition
JP5999582B2 (ja) * 2012-10-11 2016-09-28 カシオ計算機株式会社 情報出力装置及びプログラム
US8832254B1 (en) * 2012-10-29 2014-09-09 Symantec Corporation Systems and methods for managing registration and discovery of URI schemes
CN103840859B (zh) * 2012-11-27 2017-08-25 深圳市腾讯计算机系统有限公司 传输文件的方法、终端及系统
US10261611B2 (en) 2012-12-03 2019-04-16 Apkudo, Llc System and method for objectively measuring user experience of touch screen based devices
US9578133B2 (en) 2012-12-03 2017-02-21 Apkudo, Llc System and method for analyzing user experience of a software application across disparate devices
US20140172927A1 (en) * 2012-12-19 2014-06-19 Htc Corporation File information processing method and portable device
US9075781B2 (en) 2013-03-15 2015-07-07 Apkudo, Llc System and method for coordinating field user testing results for a mobile application across various mobile devices
US9037735B1 (en) * 2013-03-15 2015-05-19 Kaazing Corporation Establishing websocket protocol extensions
US20140359637A1 (en) * 2013-06-03 2014-12-04 Microsoft Corporation Task continuance across devices
US9122943B1 (en) * 2013-06-27 2015-09-01 Amazon Technologies, Inc. Identifying rendering differences between label rendering engines
US10667277B2 (en) 2013-07-29 2020-05-26 Lenel Systems International, Inc. Systems and methods for integrated security access control for video and audio streaming
US9866668B2 (en) 2013-12-17 2018-01-09 Nokia Technologies Oy Apparatus and method for providing real-time feedback for information transfer
US10554745B2 (en) * 2014-01-14 2020-02-04 Lg Electronics Inc. Method and apparatus for managing connection between broadcasting reception device and another device which are connected through network
US10104155B2 (en) * 2014-03-14 2018-10-16 The University Of Tokyo Document providing system, providing-side apparatus, and display-side apparatus
US20150271273A1 (en) * 2014-03-18 2015-09-24 CafeX Communications Inc. System for Using a Device as a Side Car
KR102065029B1 (ko) 2014-03-28 2020-01-10 삼성전자주식회사 전자 장치의 데이터 공유 방법 및 그 전자 장치
US9467660B1 (en) * 2014-03-31 2016-10-11 Amazon Technologies, Inc. Map generation using map features from user captured images
CN105183734A (zh) * 2014-06-16 2015-12-23 西安中兴新软件有限责任公司 一种图像文件共享方法和装置
US20150381704A1 (en) * 2014-06-27 2015-12-31 Saurabh Dadu Mechanism for file transformation and sharing across devices using camera interface
CN105900052B (zh) * 2014-07-15 2019-04-05 奥林巴斯株式会社 摄像装置、摄像系统、摄像装置的控制方法和摄像装置的控制程序
US9621650B2 (en) 2014-09-30 2017-04-11 Google Inc Mobile application state identifier framework
CN104468739B (zh) * 2014-11-20 2018-10-19 北京安奇智联科技有限公司 消息处理方法、客户端和移动终端
US9283672B1 (en) 2014-12-11 2016-03-15 Apkudo, Llc Robotic testing device and method for more closely emulating human movements during robotic testing of mobile devices
CN104657211A (zh) * 2015-02-03 2015-05-27 百度在线网络技术(北京)有限公司 一种用于操作对应设备上目标应用的方法与设备
CN104965778B (zh) * 2015-04-28 2018-01-30 腾讯科技(深圳)有限公司 游戏测试方法及装置
CN104917832A (zh) * 2015-06-01 2015-09-16 浪潮软件集团有限公司 窗体消息通信方法、WebSocket消息与窗体消息转换方法
US9532709B2 (en) 2015-06-05 2017-01-03 Jand, Inc. System and method for determining distances from an object
US9996377B2 (en) * 2015-06-30 2018-06-12 International Business Machines Corporation Virtual machine migration via a mobile device
US20170024377A1 (en) * 2015-07-21 2017-01-26 Kmo Applications Gmbh Method and System for the Provision of Translation Services
US9770165B2 (en) * 2015-08-13 2017-09-26 Jand, Inc. Systems and methods for displaying objects on a screen at a desired visual angle
CN105338399A (zh) * 2015-10-29 2016-02-17 小米科技有限责任公司 图像获取方法及装置
KR20170059693A (ko) * 2015-11-23 2017-05-31 엘지전자 주식회사 모바일 디바이스 및 그 제어 방법
US10083365B2 (en) * 2016-01-04 2018-09-25 Validic Optical reading of external segmented display
US11036712B2 (en) * 2016-01-12 2021-06-15 Microsoft Technology Licensing, Llc. Latency-reduced document change discovery
CN106230915B (zh) * 2016-07-26 2019-08-06 深圳酷泰丰科技有限公司 一种实现功能机智能通信的方法
CN106653057A (zh) * 2016-09-30 2017-05-10 北京智能管家科技有限公司 一种数据处理方法及装置
US11338851B2 (en) * 2017-09-07 2022-05-24 Ford Global Technologies, Llc Hitch assist system featuring trailer location identification
US10198577B1 (en) 2017-09-20 2019-02-05 Mimicc, LLC Hack-proof computer interface with touch-screen and voice command user interfaces
US9946872B1 (en) 2017-09-20 2018-04-17 Mimicc, LLC Hack-proof computer interface
US10212104B1 (en) * 2017-11-17 2019-02-19 Capital One Services, Llc Automatic communication failure recovery systems
CN108255726A (zh) * 2018-01-18 2018-07-06 北京网信云服信息科技有限公司 一种应用程序页面适配测试方法及装置
US11196779B2 (en) * 2018-05-30 2021-12-07 T-Mobile Usa, Inc. Transfer of a communications session to another user equipment
KR20190143666A (ko) * 2018-06-21 2019-12-31 라인플러스 주식회사 이미지를 위치 데이터로 변환하여 제공하는 방법과 시스템 및 비-일시적인 컴퓨터 판독 가능한 기록 매체
US10911801B1 (en) * 2018-08-21 2021-02-02 CSC Holdings, LLC CPE real-time event capture and notification
US10970029B2 (en) * 2018-10-15 2021-04-06 Symphony Communication Services Holdings Llc Dynamic user interface and module facilitating content sharing in a distributed computing environment
US11106934B2 (en) * 2019-02-11 2021-08-31 Innovaccer Inc. Automatic visual display overlays of contextually related data from multiple applications
JP2022059099A (ja) * 2019-02-25 2022-04-13 ソニーグループ株式会社 情報処理装置、情報処理方法、及び、プログラム
FR3097070B1 (fr) * 2019-06-05 2022-06-10 Amadeus Sas Système et procédé pour l’extraction de données cibles, basée sur un navigateur
US11165726B2 (en) 2019-10-23 2021-11-02 Sap Se Contextual sharing for screen share
CN116795267A (zh) * 2020-05-29 2023-09-22 华为技术有限公司 一种内容分享的方法、装置及系统
US11417079B2 (en) 2020-07-14 2022-08-16 International Business Machines Corporation Viewfinder assistant for visually impaired
CN113360038A (zh) * 2021-05-31 2021-09-07 维沃移动通信(杭州)有限公司 应用功能查找方法、装置及电子设备
JP7395599B2 (ja) 2021-06-23 2023-12-11 センスタイム インターナショナル プライベート リミテッド ゲーム画像の処理方法、装置、電子機器、コンピュータ記憶媒体及びコンピュータプログラム
JP2023534319A (ja) * 2021-06-24 2023-08-09 センスタイム インターナショナル ピーティーイー.リミテッド テーブルトップ・ゲームの状態切替え方法、装置、デバイス、記憶媒体及びコンピュータ・プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036585A1 (en) 2004-02-15 2006-02-16 King Martin T Publishing techniques for adding value to a rendered document
JP2007115217A (ja) 2005-10-22 2007-05-10 Source Japan Kk Rssフィード連動広告測定方法及び装置
WO2008137432A2 (en) 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2859559B2 (ja) 1995-05-26 1999-02-17 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・ネットワーク・システム、コンピュータ・システム、及びクリップボード制御方法
US7209949B2 (en) 1998-05-29 2007-04-24 Research In Motion Limited System and method for synchronizing information between a host system and a mobile data communication device
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
US20030046448A1 (en) 2001-06-06 2003-03-06 Claudius Fischer Application programming interface layer for a device
US6776546B2 (en) 2002-06-21 2004-08-17 Microsoft Corporation Method and system for using a keyboard overlay with a touch-sensitive display screen
EP1420338A1 (en) 2002-11-14 2004-05-19 Hewlett-Packard Company, A Delaware Corporation Mobile computer and base station
US7620658B2 (en) 2003-09-24 2009-11-17 Microsoft Corporation Configuration of a directory system
US7831679B2 (en) * 2003-10-15 2010-11-09 Microsoft Corporation Guiding sensing and preferences for context-sensitive services
JP4777725B2 (ja) * 2005-08-31 2011-09-21 フェリカネットワークス株式会社 携帯端末装置,サーバ装置,アプリケーション提供方法およびコンピュータプログラム
CA2636010A1 (en) * 2006-01-17 2007-07-17 Baker Hughes Inc SYSTEM AND METHOD FOR REMOTE DATA ACQUISITION AND DISTRIBUTION
US20080052181A1 (en) 2006-08-23 2008-02-28 Taram Devitt-Carolan Integrated system for providing user services
EP2084708A4 (en) * 2006-10-19 2010-11-24 Lg Electronics Inc METHOD AND DEVICE FOR ENCODING; METHOD AND DEVICE FOR DECODING
US20080120555A1 (en) * 2006-11-21 2008-05-22 Intermec Ip Corp. Wireless device grouping via common attribute
US8180735B2 (en) 2006-12-29 2012-05-15 Prodea Systems, Inc. Managed file backup and restore at remote storage locations through multi-services gateway at user premises
US9253222B2 (en) * 2007-02-22 2016-02-02 Match.Com. L.L.C. Synchronous delivery of media content in a collaborative environment
WO2008141429A1 (en) * 2007-05-17 2008-11-27 Fat Free Mobile Inc. Method and system for generating an aggregate website search database using smart indexes for searching
US20080307102A1 (en) 2007-06-08 2008-12-11 Galloway Curtis C Techniques for communicating data between a host device and an intermittently attached mobile device
EP2263190A2 (en) * 2008-02-13 2010-12-22 Ubisoft Entertainment S.A. Live-action image capture
US7899782B1 (en) 2008-02-21 2011-03-01 SmartLine Inc. Security system for synchronization of desktop and mobile device data
US8712324B2 (en) * 2008-09-26 2014-04-29 Qualcomm Incorporated Inductive signal transfer system for computing devices
US20110004888A1 (en) 2009-07-06 2011-01-06 Sudharshan Srinivasan Screen sharing method with selective access to both data and logic of a shared application using a helper application
WO2012037489A1 (en) * 2010-09-17 2012-03-22 Google Inc. Moving information between computing devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036585A1 (en) 2004-02-15 2006-02-16 King Martin T Publishing techniques for adding value to a rendered document
JP2007115217A (ja) 2005-10-22 2007-05-10 Source Japan Kk Rssフィード連動広告測定方法及び装置
WO2008137432A2 (en) 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106420B2 (en) 2018-06-11 2021-08-31 Alibaba Group Holding Limited Method, device, system and storage medium for information transmission and data processing

Also Published As

Publication number Publication date
EP2616901A1 (en) 2013-07-24
KR101855454B1 (ko) 2018-06-14
US20120070090A1 (en) 2012-03-22
US8805089B2 (en) 2014-08-12
US20120069199A1 (en) 2012-03-22
CN103229126A (zh) 2013-07-31
EP2616901B1 (en) 2017-12-06
KR20130129366A (ko) 2013-11-28
KR20180052767A (ko) 2018-05-18
US8244043B2 (en) 2012-08-14
WO2012037489A1 (en) 2012-03-22
CN103229126B (zh) 2016-04-13

Similar Documents

Publication Publication Date Title
KR101957951B1 (ko) 컴퓨팅 디바이스들 사이에서 정보를 이동시키기 위한 방법들 및 시스템들
Chang et al. Deep shot: a framework for migrating tasks across devices using mobile phone cameras
JP6214812B2 (ja) 振込処理方法および装置
KR102077354B1 (ko) 통신 시스템
US20130041938A1 (en) Dynamic Mobile Interaction Using Customized Interfaces
CN111182152B (zh) 使用机器可读码的设备认证和配对
JP2016502348A (ja) 携帯電子デバイスを用いた方法、携帯電子デバイス、およびコンピュータ・プログラム
US9058475B2 (en) Account creating and authenticating method
CN111835531B (zh) 会话处理方法、装置、计算机设备及存储介质
US11004163B2 (en) Terminal-implemented method, server-implemented method and terminal for acquiring certification document
US9398057B2 (en) System and method for group participation in a digital media presentation
JP2023554519A (ja) 電子文書の編集方法と装置及びコンピュータ機器とプログラム
RU2621293C2 (ru) Способ предоставления разрешения, способ получения разрешения и соответствующие устройства
JP6130878B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置およびその制御プログラム
KR20150015929A (ko) 퍼스널 컴퓨터를 통한 모바일 디바이스 입력 방법 및 장치
CN103942313B (zh) 网站页面的展示方法、装置及终端
US20190096130A1 (en) Virtual mobile terminal implementing system in mixed reality and control method thereof
JP2021036400A (ja) 情報処理システム、情報処理装置、情報処理方法及びプログラム
JP2019159423A (ja) 情報処理装置、データ表示方法、プログラム、通信システム、通信方法、登録情報管理装置
TWI767225B (zh) 錨點共享方法及裝置、系統、電子設備和電腦可讀儲存媒體
KR20150106480A (ko) 태그 기반의 영상 검색 방법, 이를 위한 장치 및 시스템
CN116974421A (zh) 桌面组件操作方法和装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant