KR20200113021A - 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법 - Google Patents

터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200113021A
KR20200113021A KR1020207027429A KR20207027429A KR20200113021A KR 20200113021 A KR20200113021 A KR 20200113021A KR 1020207027429 A KR1020207027429 A KR 1020207027429A KR 20207027429 A KR20207027429 A KR 20207027429A KR 20200113021 A KR20200113021 A KR 20200113021A
Authority
KR
South Korea
Prior art keywords
electronic device
application
unit
touch
user
Prior art date
Application number
KR1020207027429A
Other languages
English (en)
Other versions
KR102242267B1 (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 KR20200113021A publication Critical patent/KR20200113021A/ko
Application granted granted Critical
Publication of KR102242267B1 publication Critical patent/KR102242267B1/ko

Links

Images

Classifications

    • 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/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/029Location-based management or tracking services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/016Input arrangements with force or tactile feedback as computer generated output to the user
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • G06F3/0418Control or interface arrangements specially adapted for digitisers for error correction or compensation, e.g. based on parallax, calibration or alignment
    • G06F3/04186Touch location disambiguation
    • 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/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • 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
    • 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/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • 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/445Program loading or initiating
    • 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
    • G06F9/453Help systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/247Telephone sets including user guidance or feature selection means facilitating their use
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/30Services specially adapted for particular environments, situations or purposes
    • H04W4/40Services specially adapted for particular environments, situations or purposes for vehicles, e.g. vehicle-to-pedestrians [V2P]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • User Interface Of Digital Computer (AREA)
  • Calculators And Similar Devices (AREA)
  • Instructional Devices (AREA)
  • Navigation (AREA)
  • Traffic Control Systems (AREA)
  • Telephone Function (AREA)

Abstract

터치 감응형 디스플레이를 갖는 전자 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템들 및 방법들이 본 명세서에 개시된다. 일 태양에서, 본 방법은, 전자 디바이스 상에서, 전자 디바이스의 사용자로부터의 지시에 응답하여 애플리케이션을 실행하는 단계를 포함한다. 애플리케이션을 실행하는 동안, 본 방법은 사용 데이터를 수집하는 단계를 추가로 포함한다. 사용 데이터는 적어도, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들을 포함한다. 본 방법은 또한, 자동으로, 인간의 개입 없이, 수집된 사용 데이터에 기초하여 적어도 하나의 트리거 조건을 획득하는 단계, 및 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 연관시키는 단계를 포함한다. 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 본 방법은 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계를 포함한다.

Description

터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR PROACTIVELY IDENTIFYING AND SURFACING RELEVANT CONTENT ON A TOUCH-SENSITIVE DEVICE}
본 명세서에 개시된 실시예들은 대체로 터치 감응형 디스플레이들을 갖는 전자 디바이스들에 관한 것이고, 보다 구체적으로는, 디스플레이 및 터치 감응형 표면과 통신 상태에 있는 전자 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템들 및 방법들에 관한 것이다.
터치 감응형 디스플레이들을 갖는 핸드헬드 전자 디바이스들은 유비쿼터스(ubiquitous)이다. 이러한 유비쿼터스 핸드헬드 전자 디바이스들의 사용자들은 이제 그들의 디바이스들 상에 많은 애플리케이션들을 설치하고, 이러한 애플리케이션들을 사용하여 그들이 그들의 일상 활동을 더 효율적으로 수행하는 것을 돕는다. 그러나, 이러한 애플리케이션들에 액세스하기 위해, 사용자들은 전형적으로 그들의 디바이스들을 잠금해제하고, (예컨대, 홈 화면(home screen)을 통해 내비게이팅하여 원하는 애플리케이션과 연관된 아이콘을 찾아냄으로써 또는 검색 인터페이스 내에서 원하는 애플리케이션을 검색함으로써) 원하는 애플리케이션을 찾아내고, 이어서 또한 원하는 애플리케이션 내의 원하는 기능을 찾아내야 한다. 따라서, 사용자들은 종종, 단순히 원하는 애플리케이션을 (예컨대, 단일 터치 입력에 의해) 즉시 실행하고/하거나 원하는 기능을 수행할 수 있는 대신에, 원하는 애플리케이션들 및 그러한 애플리케이션들 내의 원하는 기능들을 찾아내는 데 상당한 시간을 소비한다.
더욱이, 많은 설치된 애플리케이션들은 사용자들에게 즉시 철저하게 검토될 수 없는 정보의 연속 스트림으로 넘쳐나게 한다. 이와 같이, 사용자들은 종종, 나중 시점에 특정 정보를 사용하거나 또는 그들이 더 일찍 주목한 특정 정보를 검토하기 위해 나중 시점으로 돌아가기를 원한다. 그러나, 종종, 사용자들은 특정 정보를 찾아낼 수 없거나 또는 그를 찾아내는 방법을 기억하지 못한다.
이와 같이, 디스플레이 및 터치 감응형 표면과 통신 상태에 있는 전자 디바이스 상의 관련 콘텐츠(예컨대, 특정 정보)를 사전행동적으로 식별 및 표면화하기 위한 직관적이고 사용하기 쉬운 시스템 및 방법을 제공하는 것이 바람직하다.
따라서, 애플리케이션들 및 그러한 애플리케이션들 내의 원하는 기능들에 신속하게 액세스하기 위한 보다 빠르고 보다 효율적인 방법들 및 인터페이스들을 갖는 전자 디바이스들이 필요하다. 또한, 그 정보가 사용자에 의해 명백히 요청되기 전에 관련 정보(예컨대, 연락처, 인근 장소들, 애플리케이션들, 뉴스 기사들, 주소들, 및 그 디바이스 상에서 이용가능한 다른 정보)를 사전행동적으로 식별 및 제공함으로써 사용자들이 매일 수신하는 정보의 연속 스트림을 관리하는 것을 돕는 전자 디바이스들이 필요하다. 그러한 방법들 및 인터페이스들은 선택적으로 애플리케이션들에 액세스하기 위한 종래의 방법들을 보완하거나 대체한다. 그러한 방법들 및 인터페이스들은 사용자들이 원하는 정보를 찾아내기 위해 보다 적은 입력들을 요구함으로써 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 디바이스들의 경우, 그러한 방법들 및 인터페이스들은 (예컨대, 다양한 기능들을 수행하기 위해 보다 적은 수의 터치 입력들을 요구함으로써) 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다. 더욱이, 그러한 방법들 및 인터페이스들은 보다 적은 수의 터치 입력들을 요구함으로써 터치 감응형 디스플레이의 수명을 연장시키는 것을 돕는다(예컨대, 원하는 정보를 찾아내기 위해 터치 감응형 디스플레이 상을 연속적으로 그리고 목적 없이 탭핑(tapping)해야 하는 대신에, 본 명세서에 개시된 방법들 및 인터페이스들은 사용자 입력을 요구하지 않고서 그 정보를 사전행동적으로 제공한다).
터치 감응형 표면들을 갖는 전자 디바이스들에 대한 사용자 인터페이스들과 연관된 상기 결함들 및 다른 문제들은 개시된 디바이스들에 의해 다루어진다. 일부 실시예들에서, 디바이스는 데스크톱 컴퓨터이다. 일부 실시예들에서, 디바이스는 휴대용(예컨대, 노트북 컴퓨터, 태블릿 컴퓨터, 또는 핸드헬드 디바이스)이다. 일부 실시예들에서, 디바이스는 터치 패드를 갖는다. 일부 실시예들에서, 디바이스는 터치 감응형 디스플레이("터치 스크린" 또는 "터치 스크린 디스플레이"로도 알려짐)를 갖는다. 일부 실시예들에서, 디바이스는 그래픽 사용자 인터페이스(GUI), 하나 이상의 프로세서들, 메모리, 및 다수의 기능들을 수행하기 위해 메모리에 저장된 하나 이상의 모듈들, 프로그램들 또는 명령어들의 세트들을 갖는다. 일부 실시예들에서, 사용자는 주로 터치 감응형 표면 상의 스타일러스 및/또는 손가락 접촉들 및 제스처들을 통해 GUI와 상호작용한다. 일부 실시예들에서, 기능들은 선택적으로 이미지 편집, 드로잉, 프레젠테이션 작성(presenting), 워드 프로세싱, 웹사이트 제작, 디스크 저작, 스프레드시트 작성, 게임하기, 전화걸기, 화상 회의, 이메일 보내기, 인스턴트 메시징(instant messaging), 피트니스 지원, 디지털 사진촬영, 디지털 비디오 녹화, 웹 브라우징, 디지털 음악 재생, 및/또는 디지털 비디오 재생을 포함한다. 이러한 기능들을 수행하기 위한 실행가능한 명령어들은, 선택적으로, 하나 이상의 프로세서들에 의한 실행을 위해 구성된 비일시적인 컴퓨터 판독가능 저장 매체 또는 다른 컴퓨터 프로그램 제품에 포함된다.
(A1) 일부 실시예들에 따르면, 방법은 터치 감응형 디스플레이(도 1c의 터치 스크린(112))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은, 전자 디바이스 상에서, 전자 디바이스의 사용자로부터의 지시에 응답하여 애플리케이션을 실행하는 단계를 포함한다. 애플리케이션을 실행하는 단계 동안, 본 방법은 사용 데이터를 수집하는 단계를 추가로 포함한다. 사용 데이터는 적어도 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들(또는 액션들의 유형들)을 포함한다. 본 방법은 또한, (i) 자동으로, 인간의 개입 없이, 수집된 사용 데이터에 기초하여 적어도 하나의 트리거 조건을 획득하는 단계, 및 (ii) 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 연관시키는 단계를 포함한다. 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 본 방법은 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계를 포함한다.
(A2) A1의 방법의 일부 실시예들에서, 적어도 하나의 트리거 조건을 획득하는 단계는, 전자 디바이스로부터 원격으로 위치되는 하나 이상의 서버들로, 사용 데이터를 전송하는 단계, 및 하나 이상의 서버들로부터 적어도 하나의 트리거 조건을 수신하는 단계를 포함한다.
(A3) A1 또는 A2의 방법의 일부 실시예들에서, 표시를 제공하는 단계는, 터치 감응형 디스플레이 상의 잠금 화면 상에, 트리거 조건과 연관된 특정 액션에 대응하는 사용자 인터페이스 객체를 디스플레이하는 단계를 포함한다.
(A4) A3의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 트리거 조건과 연관된 특정 액션의 설명을 포함한다.
(A5) A4의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 애플리케이션과 연관된 아이콘을 추가로 포함한다.
(A6) A3 내지 A5 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 사용자 인터페이스 객체에서 제1 제스처를 검출하는 단계를 추가로 포함한다. 제1 제스처를 검출하는 단계에 응답하여: 본 방법은 (i) 터치 감응형 디스플레이 상에서, 애플리케이션을 디스플레이하는 단계, 및 (ii) 애플리케이션을 디스플레이하는 동안, 트리거 조건과 연관된 특정 액션을 수행하는 단계를 포함한다.
(A7) A6의 방법의 일부 실시예들에서, 제1 제스처는 사용자 인터페이스 객체 위에서의 스와이프 제스처이다.
(A8) A3 내지 A5 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 사용자 인터페이스 객체에서 제2 제스처를 검출하는 단계를 추가로 포함한다. 제2 제스처를 검출하는 단계에 응답하여 그리고 터치 감응형 디스플레이 상에 잠금 화면을 계속해서 디스플레이하는 동안, 트리거 조건과 연관된 특정 액션을 수행하는 단계.
(A9) A8의 방법의 일부 실시예들에서, 제2 제스처는 사용자 인터페이스 객체의 미리정의된 영역에서의 단일 탭이다.
(A10) A3 내지 A9 중 임의의 하나의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 잠금 화면의 미리정의된 중심 부분에 디스플레이된다.
(A11) A1의 방법의 일부 실시예들에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계는, 특정 액션을 수행하는 단계를 포함한다.
(A12) A3의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 애플리케이션과 연관된 아이콘이고, 사용자 인터페이스 객체는 터치 감응형 디스플레이 상의 잠금 화면의 코너에 실질적으로 디스플레이된다.
(A13) A1 내지 A12 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 사용자로부터 전자 디바이스를 잠금해제하라는 지시를 수신하는 단계를 추가로 포함한다. 지시를 수신하는 단계에 응답하여, 본 방법은 터치 감응형 디스플레이 상에서, 전자 디바이스의 홈 화면을 디스플레이하는 단계를 포함한다. 본 방법은 또한, 홈 화면 상에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계를 포함한다.
(A14) A13의 방법의 일부 실시예들에서, 홈 화면은, (i) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제1 세트를 개시하기 위한 하나 이상의 사용자 인터페이스 페이지들을 포함하는 제1 부분, 및 (ii) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제2 세트를 개시하기 위한, 제1 부분에 인접하게 디스플레이되는, 제2 부분을 포함한다. 제2 부분은 제1 부분 내에 포함된 모든 사용자 인터페이스 페이지들 상에 디스플레이되고, 홈 화면 상에 표시를 제공하는 단계는, 제2 부분 위에 표시를 디스플레이하는 단계를 포함한다.
(A15) A14의 방법의 일부 실시예들에서, 애플리케이션들의 제2 세트는 애플리케이션들의 제1 세트와는 별개이고 그보다 더 작다.
(A16) A1 내지 A15 중 임의의 하나의 방법의 일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 전자 디바이스와는 별개인 제2 디바이스와 결합되었다고 결정하는 것을 포함한다.
(A17) A1 내지 A16 중 임의의 하나의 방법의 일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 결정하는 것을 포함한다.
(A18) A17의 방법의 일부 실시예들에서, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 결정하는 것은, 전자 디바이스의 가속도계로부터 모션 데이터를 모니터링하는 것, 및 모니터링된 모션 데이터에 기초하여, 전자 디바이스가 임계 시간 초과 동안 이동하지 않았다고 결정하는 것을 포함한다.
(A19) A1 내지 A18 중 임의의 하나의 방법의 일부 실시예들에서, 사용 데이터는 애플리케이션을 계속해서 실행하는 동안, 가상 어시스턴트 애플리케이션에 제공되는, 사용자로부터의 구두 지시들을 추가로 포함한다. 적어도 하나의 트리거 조건은 가상 어시스턴트 애플리케이션에 제공되는 구두 지시들에 추가로 기초한다.
(A20) A19의 방법의 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 대응하는 리마인더를 생성하라는 요청을 포함하고, 현재 상태는 구두 지시들이 제공되었을 때의 애플리케이션의 상태에 대응한다.
(A21) A20의 방법의 일부 실시예들에서, 구두 지시들이 제공되었을 때의 애플리케이션의 상태는, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지, 구두 지시들이 제공되었을 때의 애플리케이션 내에 재생 중인 콘텐츠, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 통지, 및 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지의 활성 부분으로 이루어진 그룹으로부터 선택된다.
(A22) A20의 방법의 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 관하여 용어 "this"를 포함한다.
(A23) 다른 태양에서, 방법은 하나 이상의 전자 디바이스들(예컨대, 도 5의 휴대용 다기능 디바이스(100) 및 도 5의 하나 이상의 서버들(502))에서 수행된다. 본 방법은 하나 이상의 전자 디바이스들 중 제1 전자 디바이스 상에서, 제1 전자 디바이스의 사용자로부터의 지시에 응답하여 애플리케이션을 실행하는 단계를 포함한다. 애플리케이션을 실행하는 동안, 본 방법은 자동으로, 인간의 개입 없이, 사용 데이터를 수집하는 단계를 포함하고, 사용 데이터는 적어도 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들(또는 액션들의 유형들)을 포함한다. 본 방법은, 자동으로, 인간의 개입 없이, 수집된 사용 데이터에 기초하여 적어도 하나의 트리거 조건을 확립하는 단계를 추가로 포함한다. 본 방법은 추가적으로, 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 연관시키는 단계를 포함한다. 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 본 방법은 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계를 포함한다.
(A24) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 A1 내지 A22 중 임의의 하나에 기술된 방법을 수행하게 한다.
(A25) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 디스플레이, 및 A1 내지 A22 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(A26) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 A1 내지 A22 중 임의의 하나에 기술된 방법을 수행하게 한다.
(A27) 또 하나의 추가 태양에서, 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 A1 내지 A22 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(A28) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 42의 디스플레이 유닛(4201)), 터치 감응형 표면 유닛(예컨대, 도 42의 터치 감응형 표면 유닛(4203)), 및 프로세싱 유닛(예컨대, 도 42의 프로세싱 유닛(4205))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 42는 전자 디바이스(4200)와 통합된 바와 같은 디스플레이 유닛(4201) 및 터치 감응형 표면 유닛(4203)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 터치 감응형 표면 유닛 및 디스플레이 유닛과 결합된다. 일부 실시예들에서, 터치 감응형 표면 유닛 및 디스플레이 유닛은 단일 터치 감응형 디스플레이 유닛(본 명세서에서 터치 감응형 디스플레이로도 지칭됨) 내에 통합된다. 프로세싱 유닛은 실행 유닛(예컨대, 도 42의 실행 유닛(4207)), 수집 유닛(예컨대, 도 42의 수집 유닛(4209)), 획득 유닛(예컨대, 도 42의 획득 유닛(4211)), 연관 유닛(예컨대, 도 42의 연관 유닛(4213)), 제공 유닛(예컨대, 도 42의 제공 유닛(4215)), 전송 유닛(예컨대, 도 42의 전송 유닛(4217)), 수신 유닛(예컨대, 도 42의 수신 유닛(4219)), 표시 유닛(예컨대, 도 42의 표시 유닛(4221)), 검출 유닛(예컨대, 도 42의 검출 유닛(4223)), 수행 유닛(예컨대, 도 42의 수행 유닛(4225)), 결정 유닛(예컨대, 도 42의 결정 유닛(4227)), 및 모니터링 유닛(예컨대, 도 42의 모니터링 유닛(4229))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4207 내지 4229))은, 전자 디바이스 상에서, 전자 디바이스의 사용자로부터의 지시에 응답하여 애플리케이션을 (예컨대, 실행 유닛(4207)으로) 실행하도록; 애플리케이션을 실행하는 동안, 사용 데이터를 (예컨대, 수집 유닛(4209)으로) 수집하도록 - 사용 데이터는 적어도 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들을 포함함 -; 자동으로, 인간의 개입 없이, 수집된 사용 데이터에 기초하여 적어도 하나의 트리거 조건을 (예컨대, 획득 유닛(4211)으로) 획득하도록; 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 (예컨대, 연관 유닛(4213)으로) 연관시키도록; 그리고 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 (예컨대, 제공 유닛(4215)으로) 제공하도록 구성된다.
(A29) A28의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 트리거 조건을 획득하는 것은, 전자 디바이스로부터 원격으로 위치되는 하나 이상의 서버들로, 사용 데이터를 (예컨대, 전송 유닛(4217)으로) 전송하는 것, 및 하나 이상의 서버들로부터 적어도 하나의 트리거 조건을 (예컨대, 수신 유닛(4219)으로) 수신하는 것을 포함한다.
(A30) A28 또는 A29의 전자 디바이스의 일부 실시예들에서, 표시를 제공하는 것은, 터치 감응형 디스플레이 유닛 상의 잠금 화면 상에, 트리거 조건과 연관된 특정 액션에 대응하는 사용자 인터페이스 객체를 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하는 것을 포함한다.
(A31) A30의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 트리거 조건과 연관된 특정 액션의 설명을 포함한다.
(A32) A31의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 애플리케이션과 연관된 아이콘을 추가로 포함한다.
(A33) A30 내지 A32 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자 인터페이스 객체에서 제1 제스처를 (예컨대, 검출 유닛(4223) 및/또는 터치 감응형 표면 유닛(4203)으로) 검출하도록 구성된다. 제1 제스처를 검출하는 것에 응답하여: (i) 터치 감응형 디스플레이 유닛 상에서, 애플리케이션을 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하도록, 그리고 (ii) 애플리케이션을 디스플레이하는 동안, 트리거 조건과 연관된 특정 액션을 (예컨대, 수행 유닛(4225)으로) 수행하도록.
(A34) A33의 전자 디바이스의 일부 실시예들에서, 제1 제스처는 사용자 인터페이스 객체 위에서의 스와이프 제스처이다.
(A35) A30 내지 A33 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자 인터페이스 객체에서 제2 제스처를 (예컨대, 검출 유닛(4223) 및/또는 터치 감응형 표면 유닛(4203)으로) 검출하도록 구성된다. 제2 제스처를 검출하는 것에 응답하여 그리고 터치 감응형 디스플레이 유닛 상에 잠금 화면을 계속해서 디스플레이하는 동안, 프로세싱 유닛은 트리거 조건과 연관된 특정 액션을 (예컨대, 수행 유닛(4225)으로) 수행하도록 구성된다.
(A36) A35의 전자 디바이스의 일부 실시예들에서, 제2 제스처는 사용자 인터페이스 객체의 미리정의된 영역에서의 단일 탭이다.
(A37) A30 내지 A36 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 잠금 화면의 미리정의된 중심 부분에 디스플레이된다.
(A38) A28의 전자 디바이스의 일부 실시예들에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 것은, 특정 액션을 (예컨대, 수행 유닛(4225)으로) 수행하는 것을 포함한다.
(A39) A30의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 애플리케이션과 연관된 아이콘이고, 사용자 인터페이스 객체는 터치 감응형 디스플레이 유닛 상의 잠금 화면의 코너에 실질적으로 디스플레이된다.
(A40) A28 내지 A39 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자로부터 전자 디바이스를 잠금해제하라는 지시를 (예컨대, 수신 유닛(4219)으로) 수신하도록 구성된다. 지시를 수신하는 것에 응답하여, 프로세싱 유닛은, 터치 감응형 디스플레이 유닛 상에서, 전자 디바이스의 홈 화면을 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하도록 구성된다. 프로세싱 유닛은 또한, 홈 화면 상에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 (예컨대, 제공 유닛(4215)으로) 제공하도록 구성된다.
(A41) A40의 전자 디바이스의 일부 실시예들에서, 홈 화면은, (i) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제1 세트를 개시하기 위한 하나 이상의 사용자 인터페이스 페이지들을 포함하는 제1 부분, 및 (ii) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제2 세트를 개시하기 위한, 제1 부분에 인접하게 디스플레이되는, 제2 부분을 포함한다. 제2 부분은 제1 부분 내에 포함된 모든 사용자 인터페이스 페이지들 상에 디스플레이되고, 홈 화면 상에 표시를 제공하는 것은, 제2 부분 위에 표시를 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하는 것을 포함한다.
(A42) A41의 전자 디바이스의 일부 실시예들에서, 애플리케이션들의 제2 세트는 애플리케이션들의 제1 세트와는 별개이고 그보다 더 작다.
(A43) A28 내지 A42 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 전자 디바이스와는 별개인 제2 디바이스와 결합되었다고 (예컨대, 결정 유닛(4227)으로) 결정하는 것을 포함한다.
(A44) A28 내지 A43 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 (예컨대, 결정 유닛(4227)으로) 결정하는 것을 포함한다.
(A45) A44의 전자 디바이스의 일부 실시예들에서, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 결정하는 것은, 전자 디바이스의 가속도계로부터 모션 데이터를 (예컨대, 모니터링 유닛(4229)으로) 모니터링하는 것, 및 모니터링된 모션 데이터에 기초하여, 전자 디바이스가 임계 시간 초과 동안 이동하지 않았다고 (예컨대, 결정 유닛(4227)으로) 결정하는 것을 포함한다.
(A46) A28 내지 A45 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 사용 데이터는 애플리케이션을 계속해서 실행하는 동안, 가상 어시스턴트 애플리케이션에 제공되는, 사용자로부터의 구두 지시들을 추가로 포함한다. 적어도 하나의 트리거 조건은 가상 어시스턴트 애플리케이션에 제공되는 구두 지시들에 추가로 기초한다.
(A47) A46의 전자 디바이스의 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 대응하는 리마인더를 생성하라는 요청을 포함하고, 현재 상태는 구두 지시들이 제공되었을 때의 애플리케이션의 상태에 대응한다.
(A48) A47의 전자 디바이스의 일부 실시예들에서, 구두 지시들이 제공되었을 때의 애플리케이션의 상태는, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지, 구두 지시들이 제공되었을 때의 애플리케이션 내에 재생 중인 콘텐츠, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 통지, 및 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지의 활성 부분으로 이루어진 그룹으로부터 선택된다.
(A49) A46의 전자 디바이스의 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 관하여 용어 "this"를 포함한다.
(B1) 일부 실시예들에 따르면, 방법은 터치 감응형 디스플레이(도 1c의 터치 스크린(112))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 전자 디바이스의 사용자와 연관된 사용 데이터에 기초하는 적어도 하나의 트리거 조건을 획득하는 단계를 포함하고, 사용 데이터는 전자 디바이스 상에서 애플리케이션이 실행하고 있던 동안 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들(또는 액션들의 유형들)을 포함한다. 본 방법은 또한, 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 연관시키는 단계를 포함한다. 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 본 방법은 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계를 포함한다.
(B2) B1의 방법의 일부 실시예들에서, 본 방법은 A2 내지 A22 중 임의의 하나에 기술된 방법을 추가로 포함한다.
(B3) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 B1 또는 B2에 기술된 방법을 수행하게 한다.
(B4) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 디스플레이, 및 B1 또는 B2에 기술된 방법을 수행하기 위한 수단을 포함한다.
(B5) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 B1 또는 B2에 기술된 방법을 수행하게 한다.
(B6) 또 하나의 추가 태양에서, 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 B1 또는 B2에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(B7) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 42의 디스플레이 유닛(4201)), 터치 감응형 표면 유닛(예컨대, 도 42의 터치 감응형 표면 유닛(4203)), 및 프로세싱 유닛(예컨대, 도 42의 프로세싱 유닛(4205))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 42는 전자 디바이스(4200)와 통합된 바와 같은 디스플레이 유닛(4201) 및 터치 감응형 표면 유닛(4203)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 실행 유닛(예컨대, 도 42의 실행 유닛(4207)), 수집 유닛(예컨대, 도 42의 수집 유닛(4209)), 획득 유닛(예컨대, 도 42의 획득 유닛(4211)), 연관 유닛(예컨대, 도 42의 연관 유닛(4213)), 제공 유닛(예컨대, 도 42의 제공 유닛(4215)), 전송 유닛(예컨대, 도 42의 전송 유닛(4217)), 수신 유닛(예컨대, 도 42의 수신 유닛(4219)), 표시 유닛(예컨대, 도 42의 표시 유닛(4221)), 검출 유닛(예컨대, 도 42의 검출 유닛(4223)), 수행 유닛(예컨대, 도 42의 수행 유닛(4225)), 결정 유닛(예컨대, 도 42의 결정 유닛(4227)), 및 모니터링 유닛(예컨대, 도 42의 모니터링 유닛(4229))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4207 내지 4229))은, 전자 디바이스의 사용자와 연관된 사용 데이터에 기초하는 적어도 하나의 트리거 조건을 (예컨대, 획득 유닛(4211)으로) 획득하도록 - 사용 데이터는 전자 디바이스 상에서 애플리케이션이 실행하고 있던 동안 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들을 포함함 -; 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 (예컨대, 연관 유닛(4213)으로) 연관시키도록; 그리고 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 (예컨대, 제공 유닛(4215)으로) 제공하도록 구성된다.
(B8) B7의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 트리거 조건을 획득하는 것은, 전자 디바이스로부터 원격으로 위치되는 하나 이상의 서버들로, 사용 데이터를 (예컨대, 전송 유닛(4217)으로) 전송하는 것, 및 하나 이상의 서버들로부터 적어도 하나의 트리거 조건을 (예컨대, 수신 유닛(4219)으로) 수신하는 것을 포함한다.
(B9) B7 또는 B8의 전자 디바이스의 일부 실시예들에서, 표시를 제공하는 것은, 터치 감응형 디스플레이 상의 잠금 화면 상에, 트리거 조건과 연관된 특정 액션에 대응하는 사용자 인터페이스 객체를 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하는 것을 포함한다.
(B10) B9의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 트리거 조건과 연관된 특정 액션의 설명을 포함한다.
(B11) B10의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 애플리케이션과 연관된 아이콘을 추가로 포함한다.
(B12) B9 내지 B11 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자 인터페이스 객체에서 제1 제스처를 (예컨대, 검출 유닛(4223) 및/또는 터치 감응형 표면 유닛(4203)으로) 검출하도록 구성된다. 제1 제스처를 검출하는 것에 응답하여: (i) 터치 감응형 디스플레이 상에서, 애플리케이션을 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하도록, 그리고 (ii) 애플리케이션을 디스플레이하는 동안, 트리거 조건과 연관된 특정 액션을 (예컨대, 수행 유닛(4225)으로) 수행하도록.
(B13) B12의 전자 디바이스의 일부 실시예들에서, 제1 제스처는 사용자 인터페이스 객체 위에서의 스와이프 제스처이다.
(B14) B9 내지 B12 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자 인터페이스 객체에서 제2 제스처를 (예컨대, 검출 유닛(4223) 및/또는 터치 감응형 표면 유닛(4203)으로) 검출하도록 구성된다. 제2 제스처를 검출하는 것에 응답하여 그리고 터치 감응형 디스플레이 상에 잠금 화면을 계속해서 디스플레이하는 동안, 프로세싱 유닛은 트리거 조건과 연관된 특정 액션을 (예컨대, 수행 유닛(4225)으로) 수행하도록 구성된다.
(B15) B14의 전자 디바이스의 일부 실시예들에서, 제2 제스처는 사용자 인터페이스 객체의 미리정의된 영역에서의 단일 탭이다.
(B16) B9 내지 B15 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 잠금 화면의 미리정의된 중심 부분에 디스플레이된다.
(B17) B7의 전자 디바이스의 일부 실시예들에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 것은, 특정 액션을 (예컨대, 수행 유닛(4225)으로) 수행하는 것을 포함한다.
(B18) B9의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 애플리케이션과 연관된 아이콘이고, 사용자 인터페이스 객체는 터치 감응형 디스플레이 상의 잠금 화면의 코너에 실질적으로 디스플레이된다.
(B19) B7 내지 B18 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자로부터 전자 디바이스를 잠금해제하라는 지시를 (예컨대, 수신 유닛(4219)으로) 수신하도록 구성된다. 지시를 수신하는 것에 응답하여, 프로세싱 유닛은, 터치 감응형 디스플레이 상에서, 전자 디바이스의 홈 화면을 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하도록 구성된다. 프로세싱 유닛은 또한, 홈 화면 상에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 (예컨대, 제공 유닛(4215)으로) 제공하도록 구성된다.
(B20) B19의 전자 디바이스의 일부 실시예들에서, 홈 화면은, (i) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제1 세트를 개시하기 위한 하나 이상의 사용자 인터페이스 페이지들을 포함하는 제1 부분, 및 (ii) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제2 세트를 개시하기 위한, 제1 부분에 인접하게 디스플레이되는, 제2 부분을 포함한다. 제2 부분은 제1 부분 내에 포함된 모든 사용자 인터페이스 페이지들 상에 디스플레이되고, 홈 화면 상에 표시를 제공하는 것은, 제2 부분 위에 표시를 (예컨대, 표시 유닛(4217) 및/또는 디스플레이 유닛(4201)으로) 디스플레이하는 것을 포함한다.
(B21) B20의 전자 디바이스의 일부 실시예들에서, 애플리케이션들의 제2 세트는 애플리케이션들의 제1 세트와는 별개이고 그보다 더 작다.
(B22) B7 내지 B21 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 전자 디바이스와는 별개인 제2 디바이스와 결합되었다고 (예컨대, 결정 유닛(4227)으로) 결정하는 것을 포함한다.
(B23) B7 내지 B22 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 (예컨대, 결정 유닛(4227)으로) 결정하는 것을 포함한다.
(B24) B23의 전자 디바이스의 일부 실시예들에서, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 결정하는 것은, 전자 디바이스의 가속도계로부터 모션 데이터를 (예컨대, 모니터링 유닛(4229)으로) 모니터링하는 것, 및 모니터링된 모션 데이터에 기초하여, 전자 디바이스가 임계 시간 초과 동안 이동하지 않았다고 (예컨대, 결정 유닛(4227)으로) 결정하는 것을 포함한다.
(B25) B7 내지 B24 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 사용 데이터는 애플리케이션을 계속해서 실행하는 동안, 가상 어시스턴트 애플리케이션에 제공되는, 사용자로부터의 구두 지시들을 추가로 포함한다. 적어도 하나의 트리거 조건은 가상 어시스턴트 애플리케이션에 제공되는 구두 지시들에 추가로 기초한다.
(B26) B25의 전자 디바이스의 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 대응하는 리마인더를 생성하라는 요청을 포함하고, 현재 상태는 구두 지시들이 제공되었을 때의 애플리케이션의 상태에 대응한다.
(B27) B26의 전자 디바이스의 일부 실시예들에서, 구두 지시들이 제공되었을 때의 애플리케이션의 상태는, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지, 구두 지시들이 제공되었을 때의 애플리케이션 내에 재생 중인 콘텐츠, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 통지, 및 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지의 활성 부분으로 이루어진 그룹으로부터 선택된다.
(B28) B26의 전자 디바이스의 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 관하여 용어 "this"를 포함한다.
(C1) 일부 실시예들에 따르면, 방법은 터치 감응형 디스플레이(도 1c의 터치 스크린(112))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 전자 디바이스의 사용자로부터 터치 감응형 디스플레이 상의 검색 활성화 제스처를 검출하는 단계를 포함한다. 검색 활성화 제스처를 검출하는 단계에 응답하여, 본 방법은 터치 감응형 디스플레이 상에 검색 인터페이스를 디스플레이하는 단계를 포함하는데, 검색 인터페이스는, (i) 검색 엔트리 부분, 및 (ii) 검색 엔트리 부분에서 임의의 사용자 입력을 수신하기 전에 디스플레이되는 예측 부분을 포함한다. 예측 부분은, (a) 복수의 이전에 연락된 사람들 중 개인과 연락하기 위한 적어도 하나의 어포던스 - 개인은 현재 시간에 적어도 부분적으로 기초하여 복수의 이전에 연락된 사람들로부터 자동으로 선택됨 -, 및 (b) 전자 디바이스 상에서 이용가능한 복수의 애플리케이션들 중 일 애플리케이션 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스 중 하나 이상으로 채워지고, 예측된 액션은, 전자 디바이스의 사용자와 연관된 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 자동으로 선택된다.
(C2) C1의 방법의 일부 실시예들에서, 개인은 추가로 전자 디바이스에 대응하는 위치 데이터에 적어도 부분적으로 기초하여 선택된다.
(C3) C1 또는 C2의 방법의 일부 실시예들에서, 애플리케이션 사용 이력 및 개인에 대한 연락처 정보는 전자 디바이스의 메모리로부터 인출된다.
(C4) C1 또는 C2의 방법의 일부 실시예들에서, 애플리케이션 사용 이력 및 개인에 대한 연락처 정보는 전자 디바이스로부터 원격으로 위치되는 서버로부터 인출된다.
(C5) C1 내지 C4 중 임의의 하나의 방법의 일부 실시예들에서, 예측 부분은, 추가로, 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스로 채워지고, 예측된 애플리케이션은 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 자동으로 선택된다.
(C6) C1 내지 C5 중 임의의 하나의 방법의 일부 실시예들에서, 예측 부분은, 추가로, 장소들(또는 인근 장소들)의 예측된 카테고리에 대한 적어도 하나의 어포던스로 채워지고, 장소들의 예측된 카테고리는 전자 디바이스에 대응하는 현재 시간 및 위치 데이터 중 하나 이상에 적어도 부분적으로 기초하여 자동으로 선택된다.
(C7) C1 내지 C6 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 예측 부분을 스크롤하기 위한 사용자 입력을 검출하는 단계를 추가로 포함한다. 예측 부분을 스크롤하기 위한 사용자 입력을 검출하는 단계에 응답하여, 본 방법은 사용자 입력에 따라 예측 부분을 스크롤하는 단계를 포함한다. 스크롤하는 단계에 응답하여, 본 방법은 예측 부분에 예측된 뉴스 기사에 대한 적어도 하나의 어포던스를 드러내는 단계를 포함한다(예컨대, 예측된 뉴스 기사는 사용자에게 관심 대상인 것으로 예측되는 뉴스 기사임).
(C8) C7의 방법의 일부 실시예들에서, 예측된 뉴스 기사는 전자 디바이스에 대응하는 위치 데이터에 적어도 부분적으로 기초하여 자동으로 선택된다.
(C9) C1 내지 C8 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 애플리케이션 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스의 선택을 검출하는 단계를 추가로 포함한다. 선택을 검출하는 단계에 응답하여, 본 방법은, 터치 감응형 디스플레이 상에서, 애플리케이션을 디스플레이하는 단계 및 애플리케이션 내의 예측된 액션을 실행하는 단계를 포함한다.
(C10) C3 또는 C4의 방법의 일부 실시예들에서, 본 방법은 개인과 연락하기 위한 적어도 하나의 어포던스의 선택을 검출하는 단계를 추가로 포함한다. 선택을 검출하는 단계에 응답하여, 본 방법은 개인에 대한 연락처 정보를 사용하여 개인과 연락하는 단계를 포함한다.
(C11) C5의 방법의 일부 실시예들에서, 본 방법은 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스의 선택을 검출하는 단계를 추가로 포함한다. 선택을 검출하는 단계에 응답하여, 본 방법은 터치 감응형 디스플레이 상에서, 예측된 애플리케이션을 디스플레이하는 단계를 포함한다.
(C12) C6의 방법의 일부 실시예들에서, 본 방법은 장소들의 예측된 카테고리에 대한 적어도 하나의 어포던스의 선택을 검출하는 단계를 추가로 포함한다. 선택을 검출하는 단계에 응답하여, 본 방법은 (i) 적어도 하나의 인근 장소에 대응하는 데이터를 수신하는 단계, 및 (ii) 터치 감응형 디스플레이 상에서, 적어도 하나의 인근 장소에 대응하는 수신된 데이터를 디스플레이하는 단계를 추가로 포함한다.
(C13) C7의 방법의 일부 실시예들에서, 본 방법은 예측된 뉴스 기사에 대한 적어도 하나의 어포던스의 선택을 검출하는 단계를 추가로 포함한다. 선택을 검출하는 단계에 응답하여, 본 방법은 터치 감응형 디스플레이 상에서, 예측된 뉴스 기사를 디스플레이하는 단계를 포함한다.
(C14) C1 내지 C13 중 임의의 하나의 방법의 일부 실시예들에서, 검색 활성화 제스처는 적어도 2개의 별개의 사용자 인터페이스들로부터 이용가능하고, 적어도 2개의 별개의 사용자 인터페이스들 중 제1 사용자 인터페이스는 터치 감응형 디스플레이 상의 홈 화면 페이지들의 시퀀스의 각각의 홈 화면 페이지를 디스플레이하는 것에 대응한다.
(C15) C14의 방법의 일부 실시예들에서, 각각의 홈 화면 페이지가 홈 화면 페이지들의 시퀀스 중 제1 홈 화면 페이지일 때, 검색 활성화 제스처는 (i) 전자 디바이스의 사용자에 대해 실질적으로 하방 방향으로 이동하는 제스처, 또는 (ii) 하방 방향에 실질적으로 수직이며 사용자에 대해 실질적으로 좌우 방향으로 이동하는 연속 제스처 중 하나를 포함한다.
(C16) C15의 방법의 일부 실시예들에서, 각각의 홈 화면 페이지가 홈 화면 페이지들의 시퀀스 중 제2 홈 화면 페이지일 때, 검색 활성화 제스처는 전자 디바이스의 사용자에 대해 실질적으로 하방 방향으로 이동하는 연속 제스처를 포함한다.
(C17) C14의 방법의 일부 실시예들에서, 적어도 2개의 별개의 사용자 인터페이스들의 제2 사용자 인터페이스는 터치 감응형 디스플레이 상에 애플리케이션 스위칭 인터페이스를 디스플레이하는 것에 대응한다.
(C18) C17의 방법의 일부 실시예들에서, 검색 활성화 제스처는 터치 감응형 디스플레이 상에서, 애플리케이션 스위칭 인터페이스의 미리정의된 검색 활성화 부분에서의 접촉을 포함한다.
(C19) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 C1 내지 C18 중 임의의 하나에 기술된 방법을 수행하게 한다.
(C20) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 디스플레이, 및 C1 내지 C18 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(C21) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 C1 내지 C18 중 임의의 하나에 기술된 방법을 수행하게 한다.
(C22) 또 하나의 추가 태양에서, 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 C1 내지 C18 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(C23) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 43의 디스플레이 유닛(4301)), 터치 감응형 표면 유닛(예컨대, 도 43의 터치 감응형 표면 유닛(4303)), 및 프로세싱 유닛(예컨대, 도 43의 프로세싱 유닛(4305))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 43은 전자 디바이스(4300)와 통합된 바와 같은 디스플레이 유닛(4301) 및 터치 감응형 표면 유닛(4303)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 표시 유닛(예컨대, 도 43의 표시 유닛(4309)), 검출 유닛(예컨대, 도 43의 검출 유닛(4307)), 인출 유닛(예컨대, 도 43의 인출 유닛(4311)), 채움 유닛(예컨대, 도 43의 채움 유닛(4313)), 스크롤 유닛(예컨대, 도 43의 스크롤 유닛(4315)), 노출 유닛(예컨대, 도 43의 노출 유닛(4317)), 선택 유닛(예컨대, 도 43의 선택 유닛(4319)), 연락 유닛(예컨대, 도 43의 연락 유닛(4321)), 수신 유닛(예컨대, 도 43의 수신 유닛(4323)), 및 실행 유닛(예컨대, 도 43의 실행 유닛(4325))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4307 내지 4225))은, 전자 디바이스의 사용자로부터 터치 감응형 디스플레이 상의 검색 활성화 제스처를 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록; 검색 활성화 제스처를 검출하는 것에 응답하여, 터치 감응형 디스플레이 상에 검색 인터페이스를 (예컨대, 표시 유닛(4309) 및/또는 디스플레이 유닛(4301)으로) 디스플레이하도록 구성되고, 검색 인터페이스는, (i) 검색 엔트리 부분, 및 (ii) 검색 엔트리 부분에서 임의의 사용자 입력을 수신하기 전에 디스플레이되는 예측 부분을 포함하고, 예측 부분은, (a) 복수의 이전에 연락된 사람들 중 개인과 연락하기 위한 적어도 하나의 어포던스 - 개인은 현재 시간에 적어도 부분적으로 기초하여 복수의 이전에 연락된 사람들로부터 (예컨대, 선택 유닛(4319)에 의해) 자동으로 선택됨 -, 및 (b) 전자 디바이스 상에서 이용가능한 복수의 애플리케이션들 중 일 애플리케이션 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스 중 하나 이상으로 채워지고, 예측된 액션은, 전자 디바이스의 사용자와 연관된 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4319)에 의해) 자동으로 선택된다.
(C24) C23의 전자 디바이스의 일부 실시예들에서, 개인은 추가로 전자 디바이스에 대응하는 위치 데이터에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4319)에 의해) 선택된다.
(C25) C23 또는 C24의 전자 디바이스의 일부 실시예들에서, 애플리케이션 사용 이력 및 개인에 대한 연락처 정보는 전자 디바이스의 메모리로부터 (예컨대, 인출 유닛(4311)에 의해) 인출된다.
(C26) C23 또는 C24의 전자 디바이스의 일부 실시예들에서, 애플리케이션 사용 이력 및 개인에 대한 연락처 정보는 전자 디바이스로부터 원격으로 위치되는 서버로부터 (예컨대, 인출 유닛(4311)에 의해) 인출된다.
(C27) C23 내지 C26 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 예측 부분은, 추가로, 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스로 (예컨대, 채움 유닛(4313)에 의해) 채워지고, 예측된 애플리케이션은 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4319)에 의해) 자동으로 선택된다.
(C28) C23 내지 C27 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 예측 부분은, 추가로, 장소들의 예측된 카테고리에 대한 적어도 하나의 어포던스로 (예컨대, 채움 유닛(4313)에 의해) 채워지고, 장소들의 예측된 카테고리는 전자 디바이스에 대응하는 현재 시간 및 위치 데이터 중 하나 이상에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4319)에 의해) 자동으로 선택된다.
(C29) C23 내지 C28 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 예측 부분을 스크롤하기 위한 사용자 입력을 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록 구성된다. 예측 부분을 스크롤하기 위한 사용자 입력을 검출하는 것에 응답하여, 프로세싱 유닛은 사용자 입력에 따라 예측 부분을 (예컨대, 스크롤 유닛(4319)으로) 스크롤하도록 구성된다. 스크롤하는 것에 응답하여, 프로세싱 유닛은 예측 부분에 예측된 뉴스 기사에 대한 적어도 하나의 어포던스를 (예컨대, 노출 유닛(4317)으로) 드러내도록 구성된다(예컨대, 예측된 뉴스 기사는 사용자에게 관심 대상인 것으로 예측되는 뉴스 기사임).
(C30) C7의 전자 디바이스의 일부 실시예들에서, 예측된 뉴스 기사는 전자 디바이스에 대응하는 위치 데이터에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4319)으로) 자동으로 선택된다.
(C31) C23 내지 C30 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 애플리케이션 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스의 선택을 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록 구성된다. 선택을 검출하는 것에 응답하여, 프로세싱 유닛은, 터치 감응형 디스플레이(예컨대, 디스플레이 유닛(4301)) 상에서, 애플리케이션을 (예컨대, 표시 유닛(4309)으로) 디스플레이하도록 그리고 애플리케이션 내의 예측된 액션을 (예컨대, 실행 유닛(4325)으로) 실행하도록 구성된다.
(C32) C25 또는 C26의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 개인과 연락하기 위한 적어도 하나의 어포던스의 선택을 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록 구성된다. 선택을 검출하는 것에 응답하여, 프로세싱 유닛은 개인에 대한 연락처 정보를 사용하여 개인과 (예컨대, 연락 유닛(4321)으로) 연락하도록 구성된다.
(C33) C27의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스의 선택을 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록 구성된다. 선택을 검출하는 것에 응답하여, 프로세싱 유닛은, 터치 감응형 디스플레이(예컨대, 디스플레이 유닛(4301)) 상에서, 예측된 애플리케이션을 (예컨대, 표시 유닛(4307)으로) 디스플레이하도록 구성된다.
(C34) C28의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 장소들의 예측된 카테고리에 대한 적어도 하나의 어포던스의 선택을 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록 구성된다. 선택을 검출하는 것에 응답하여, 프로세싱 유닛은 (i) 적어도 하나의 인근 장소에 대응하는 데이터를 (예컨대, 수신 유닛(4323)으로) 수신하도록, 그리고 (ii) 터치 감응형 디스플레이(예컨대, 디스플레이 유닛(4301)) 상에서, 적어도 하나의 인근 장소에 대응하는 수신된 데이터를 (예컨대, 표시 유닛(4307)으로) 디스플레이하도록 구성된다.
(C35) C29의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 예측된 뉴스 기사에 대한 적어도 하나의 어포던스의 선택을 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록 구성된다. 선택을 검출하는 것에 응답하여, 프로세싱 유닛은, 터치 감응형 디스플레이(예컨대, 디스플레이 유닛(4301)) 상에서, 예측된 뉴스 기사를 (예컨대, 표시 유닛(4307)으로) 디스플레이하도록 구성된다.
(C36) C23 내지 C35 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 검색 활성화 제스처는 적어도 2개의 별개의 사용자 인터페이스들로부터 이용가능하고, 적어도 2개의 별개의 사용자 인터페이스들 중 제1 사용자 인터페이스는 터치 감응형 디스플레이 상의 홈 화면 페이지들의 시퀀스의 각각의 홈 화면 페이지를 디스플레이하는 것에 대응한다.
(C37) C36의 전자 디바이스의 일부 실시예들에서, 각각의 홈 화면 페이지가 홈 화면 페이지들의 시퀀스 중 제1 홈 화면 페이지일 때, 검색 활성화 제스처는 (i) 전자 디바이스의 사용자에 대해 실질적으로 하방 방향으로 이동하는 제스처, 또는 (ii) 하방 방향에 실질적으로 수직이며 사용자에 대해 실질적으로 좌우 방향으로 이동하는 연속 제스처 중 하나를 포함한다.
(C38) C37의 전자 디바이스의 일부 실시예들에서, 각각의 홈 화면 페이지가 홈 화면 페이지들의 시퀀스 중 제2 홈 화면 페이지일 때, 검색 활성화 제스처는 전자 디바이스의 사용자에 대해 실질적으로 하방 방향으로 이동하는 연속 제스처를 포함한다.
(C39) C36의 전자 디바이스의 일부 실시예들에서, 적어도 2개의 별개의 사용자 인터페이스들의 제2 사용자 인터페이스는 터치 감응형 디스플레이 상에 애플리케이션 스위칭 인터페이스를 디스플레이하는 것에 대응한다.
(C40) C39의 전자 디바이스의 일부 실시예들에서, 검색 활성화 제스처는 터치 감응형 디스플레이 상에서, 애플리케이션 스위칭 인터페이스의 미리정의된 검색 활성화 부분에서의 접촉을 포함한다.
이와 같이, 디스플레이들, 터치 감응형 표면들, 및 선택적으로 터치 감응형 표면과의 접촉들의 세기를 검출하는 하나 이상의 센서들을 갖는 전자 디바이스들에는, 애플리케이션들에 사전행동적으로 액세스하고 애플리케이션들 내의 기능들을 사전행동적으로 수행하기 위한 보다 빠르고 보다 효율적인 방법들 및 인터페이스들이 제공되며, 그로써 그러한 디바이스들에서 유효성, 효율성, 및 사용자 만족도를 증가시킨다. 그러한 방법들 및 인터페이스들은 애플리케이션들 및 그와 연관된 기능들에 액세스하기 위한 종래의 방법들을 보완하거나 대체할 수 있다.
(D1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면(예컨대, 도 1d의 터치 감응형 표면(195)) 및 디스플레이(예컨대, 도 1d의 디스플레이(194))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 디스플레이 상에, 전자 디바이스 상에서 실행 중인 애플리케이션과 연관된 콘텐츠를 디스플레이하는 단계를 포함한다. 본 방법은, 터치 감응형 표면을 통해, 스와이프 제스처를 검출하는 단계를 추가로 포함하는데, 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 애플리케이션과는 별개인 검색 모드에 진입하게 한다. 본 방법은 또한, 스와이프 제스처를 검출하는 단계에 응답하여, 검색 모드에 진입하는 단계를 포함하는데, 검색 모드는 디스플레이 상에 디스플레이되는 검색 인터페이스를 포함한다. 검색 모드에 진입하는 단계와 함께, 본 방법은 콘텐츠와 연관된 정보에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정하는 단계를 포함한다. 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 본 방법은 적어도 하나의 제안된 검색 질의로 디스플레이된 검색 인터페이스를 채우는 단계를 포함한다. 이러한 방식으로, 정보를 기억하고 그를 검색 인터페이스 내에 재입력해야 하는 대신에, 디바이스는 사용자들에게 그들이 보고 있던 앱 콘텐츠에 기초하는 관련 제안들을 제공하고, 사용자는 아무것도 타이핑할 필요 없이 제안들 중 하나를 단지 선택하기만 하면 된다.
(D2) D1의 방법의 일부 실시예들에서, 스와이프 제스처를 검출하는 단계는, 현재 디스플레이되는 콘텐츠의 적어도 일부분 위에서 스와이프 제스처를 검출하는 단계를 포함한다.
(D3) D1 또는 D2의 방법의 일부 실시예들에서, 본 방법은, 스와이프 제스처를 검출하는 단계 이전에, 전자 디바이스의 홈 화면을 보려고 하는 요청에 대응하는 입력을 검출하는 단계; 및 입력을 검출하는 단계에 응답하여, 애플리케이션과 연관된 콘텐츠를 디스플레이하는 것을 중지하는 단계 및 전자 디바이스의 홈 화면의 각각의 페이지를 디스플레이하는 단계를 추가로 포함한다. 일부 실시예들에서, 각각의 페이지는 홈 화면 페이지들의 시퀀스 중 초기 페이지이고, 스와이프 제스처는 홈 화면의 초기 페이지가 디스플레이 상에 디스플레이되는 동안 검출된다.
(D4) D1 내지 D3 중 임의의 하나의 방법의 일부 실시예들에서, 검색 인터페이스는 애플리케이션에 반투명하게 오버레이하는 것으로 디스플레이된다.
(D5) D1 내지 D4 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은, 콘텐츠가 텍스트 콘텐츠를 포함한다는 결정에 따라, 텍스트 콘텐츠에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정하는 단계를 추가로 포함한다.
(D6) D5의 방법의 일부 실시예들에서, 텍스트 콘텐츠에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정하는 단계는, 텍스트 콘텐츠를 분석하여 적어도 하나의 제안된 검색 질의를 결정하는 데 사용되는 하나 이상의 미리정의된 키워드들을 검출하는 단계를 포함한다.
(D7) D1 내지 D6 중 임의의 하나의 방법의 일부 실시예들에서, 적어도 하나의 제안된 검색 질의를 결정하는 단계는 복수의 제안된 검색 질의들을 결정하는 단계를 포함하고, 검색 인터페이스를 채우는 단계는 검색 인터페이스를 복수의 제안된 검색 질의들로 채우는 단계를 포함한다.
(D8) D1 내지 D7 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은, 터치 감응형 표면을 통해, 현재 디스플레이되는 새로운 콘텐츠 위에서의 새로운 스와이프 제스처를 검출하는 단계; 및 새로운 스와이프 제스처를 검출하는 단계에 응답하여, 검색 모드에 진입하는 단계 - 검색 모드에 진입하는 단계는 디스플레이 상에 검색 인터페이스를 디스플레이하는 단계를 포함함 -; 및 검색 모드에 진입하는 단계와 함께 그리고 새로운 콘텐츠가 텍스트 콘텐츠를 포함하지 않는다는 결정에 따라, 전자 디바이스의 사용자로부터의 검색 질의들 이력의 선택된 세트에 기초하는 제안된 검색 질의들로 검색 인터페이스를 채우는 단계를 추가로 포함한다.
(D9) D8의 방법의 일부 실시예들에서, 검색 인터페이스는, 애플리케이션과는 별개인 제2 애플리케이션에 의해 제공된 위치 정보에 기초하는 관심 지점과 함께 디스플레이된다.
(D10) D8 또는 D9의 방법의 일부 실시예들에서, 검색 인터페이스는 하나 이상의 제안된 애플리케이션들을 추가로 포함한다.
(D11) D8 내지 D10 중 임의의 하나의 방법의 일부 실시예들에서, 검색 질의들 이력의 세트는 최근 검색 질의들의 빈도에 적어도 부분적으로 기초하여 선택된다.
(D12) D1 내지 D11 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 검색 모드에 진입하는 단계와 함께, 전자 디바이스 상에서 이용가능한 하나 이상의 접근성 특징부들을 사용함으로써 콘텐츠와 연관되는 정보를 획득하는 단계를 추가로 포함한다.
(D13) D12의 방법의 일부 실시예들에서, 하나 이상의 접근성 특징부들을 사용하는 것은, 하나 이상의 접근성 특징부들을 사용하여, (i) 애플리케이션 내에 현재 디스플레이되는 텍스트 콘텐츠에 자연 언어 프로세싱 알고리즘을 적용함으로써; 그리고 (ii) 자연 언어 프로세싱 알고리즘으로부터 획득된 데이터를 사용하여 콘텐츠를 설명하는 하나 이상의 키워드들을 결정함으로써, 콘텐츠와 연관되는 정보를 생성하는 것을 포함하고, 적어도 하나의 제안된 검색 질의는 하나 이상의 키워드들에 기초하여 결정된다.
(D14) D13의 방법의 일부 실시예들에서, 콘텐츠를 설명하는 하나 이상의 키워드들을 결정하는 것은 또한, (i) 애플리케이션에서 현재 디스플레이되는 비-텍스트 콘텐츠에 대응하는 메타데이터를 인출하는 것; 및 (ii) 자연 언어 프로세싱 알고리즘으로부터 획득된 데이터에 더하여, 인출된 메타데이터를 사용하여, 하나 이상의 키워드들을 결정하는 것을 포함한다.
(D15) D1 내지 D14 중 임의의 하나의 방법의 일부 실시예들에서, 검색 인터페이스는 하나 이상의 트렌딩(trending) 질의들을 추가로 포함한다.
(D16) D15의 방법의 일부 실시예들에서, 검색 인터페이스는 전자 디바이스의 사용자에게 관심 대상인 것으로 예측되는 하나 이상의 애플리케이션들을 추가로 포함한다.
(D17) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면과 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 D1 내지 D16 중 임의의 하나에 기술된 방법을 수행하게 한다.
(D18) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면과 디스플레이, 및 D1 내지 D16 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(D19) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 D1 내지 D16 중 임의의 하나에 기술된 방법을 수행하게 한다.
(D20) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 D1 내지 D16 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다. 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 D1 내지 D16 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(D21) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 44의 디스플레이 유닛(4401)), 터치 감응형 표면 유닛(예컨대, 도 44의 터치 감응형 표면 유닛(4403)), 및 프로세싱 유닛(예컨대, 도 44의 프로세싱 유닛(4405))을 포함하는 전자 디바이스가 제공된다. 프로세싱 유닛은 터치 감응형 표면 유닛 및 디스플레이 유닛과 결합된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 44는 전자 디바이스(4400)와 통합된 바와 같은 디스플레이 유닛(4401) 및 터치 감응형 표면 유닛(4403)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 터치 감응형 표면 유닛 및 디스플레이 유닛은 단일 터치 감응형 디스플레이 유닛(본 명세서에서 터치 감응형 디스플레이로도 지칭됨) 내에 통합된다. 프로세싱 유닛은 검출 유닛(예컨대, 도 44의 검출 유닛(4407)), 표시 유닛(예컨대, 도 44의 표시 유닛(4409)), 인출 유닛(예컨대, 도 44의 인출 유닛(4411)), 검색 모드 진입 유닛(예컨대, 도 44의 검색 모드 진입 유닛(4412)), 채움 유닛(예컨대, 도 44의 채움 유닛(4413)), 획득 유닛(예컨대, 도 44의 획득 유닛(4415)), 결정 유닛(예컨대, 도 44의 결정 유닛(4417)), 및 선택 유닛(예컨대, 도 44의 선택 유닛(4419))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(1007 내지 1029))은, 디스플레이 유닛(예컨대, 디스플레이 유닛(4407)) 상에, 전자 디바이스 상에서 실행 중인 애플리케이션과 연관된 콘텐츠를 (예컨대, 표시 유닛(4407)으로) 디스플레이하도록; 터치 감응형 표면 유닛(예컨대, 터치 감응형 표면 유닛(4403))을 통해, 스와이프 제스처를 (예컨대, 검출 유닛(4407)으로) 검출하도록 - 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 애플리케이션과는 별개인 검색 모드에 진입하게 함 -; 스와이프 제스처를 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4412)으로) 검색 모드에 진입하도록 - 검색 모드는 디스플레이 유닛(예컨대, 디스플레이 유닛(4407)) 상에 디스플레이되는 검색 인터페이스를 포함함 -; 검색 모드에 진입하는 것과 함께, 콘텐츠와 연관된 정보에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 (예컨대, 결정 유닛(4417)으로) 결정하도록; 그리고 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 적어도 하나의 제안된 검색 질의로 디스플레이된 검색 인터페이스를 (예컨대, 채움 유닛(4413)으로) 채우도록 구성된다.
(D22) D21의 전자 디바이스의 일부 실시예들에서, 스와이프 제스처를 검출하는 것은, 현재 디스플레이되는 콘텐츠의 적어도 일부분 위에서 스와이프 제스처를 (예컨대, 검출 유닛(4407)으로) 검출하는 것을 포함한다.
(D23) D21 또는 D22의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 스와이프 제스처를 검출하기 전에, 전자 디바이스의 홈 화면을 보려고 하는 요청에 대응하는 입력을 (예컨대, 검출 유닛(4407)으로) 검출하도록; 그리고 입력을 (예컨대, 검출 유닛(4407)으로) 검출하는 것에 응답하여, 애플리케이션과 연관된 콘텐츠를 디스플레이하는 것을 중지하도록 그리고 전자 디바이스의 홈 화면의 각각의 페이지를 (예컨대, 표시 유닛(4409)으로) 디스플레이하도록 구성되고, 각각의 페이지는 홈 화면 페이지들의 시퀀스 중 초기 페이지이고, 스와이프 제스처는 홈 화면의 초기 페이지가 디스플레이 유닛 상에 디스플레이되는 동안 (예컨대, 검출 유닛(4407)으로) 검출된다.
(D24) D21 내지 D23 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 검색 인터페이스는 애플리케이션에 반투명하게 오버레이하는 것으로 (예컨대, 표시 유닛(4409) 및/또는 디스플레이 유닛(4401)으로) 디스플레이된다.
(D25) D21 내지 D24 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 콘텐츠가 텍스트 콘텐츠를 포함한다는 결정에 따라, 텍스트 콘텐츠에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 (예컨대, 결정 유닛(4417)으로) 결정하도록 구성된다.
(D26) D25의 전자 디바이스의 일부 실시예들에서, 텍스트 콘텐츠에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정하는 것은, 텍스트 콘텐츠를 분석하여 적어도 하나의 제안된 검색 질의를 (예컨대, 결정 유닛(4417)으로) 결정하는 데 사용되는 하나 이상의 미리정의된 키워드들을 (예컨대, 검출 유닛(4407)으로) 검출하는 것을 포함한다.
(D27) D21 내지 D26 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 적어도 하나의 제안된 검색 질의를 결정하는 것은 복수의 제안된 검색 질의들을 (예컨대, 결정 유닛(4417)으로) 결정하는 것을 포함하고, 검색 인터페이스를 채우는 것은 검색 인터페이스를 복수의 제안된 검색 질의들로 (예컨대, 채움 유닛(4413)으로) 채우는 것을 포함한다.
(D28) D21 내지 D27 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 터치 감응형 표면 유닛을 통해 (예컨대, 터치 감응형 표면 유닛(4403)으로), 현재 디스플레이되는 새로운 콘텐츠 위에서의 새로운 스와이프 제스처를 (예컨대, 검출 유닛(4407)으로) 검출하도록; 그리고 새로운 스와이프 제스처를 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4412)으로) 검색 모드에 진입하도록 - 검색 모드에 진입하는 것은 디스플레이 유닛 상에 (예컨대, 디스플레이 유닛(4409)으로) 검색 인터페이스를 디스플레이하는 것을 포함함 -; 그리고, 검색 모드에 진입하는 것과 함께 그리고 새로운 콘텐츠가 텍스트 콘텐츠를 포함하지 않는다는 결정에 따라, 전자 디바이스의 사용자로부터의 검색 질의들 이력의 선택된 세트에 기초하는 제안된 검색 질의들로 검색 인터페이스를 (예컨대, 채움 유닛(4413)으로) 채우도록 구성된다.
(D29) D28의 전자 디바이스의 일부 실시예들에서, 검색 인터페이스는, 애플리케이션과는 별개인 제2 애플리케이션에 의해 제공된 위치 정보에 기초하는 관심 지점과 함께 (예컨대, 표시 유닛(4409)으로) 디스플레이된다.
(D30) D28 또는 D29의 전자 디바이스의 일부 실시예들에서, 검색 인터페이스는 하나 이상의 제안된 애플리케이션들을 추가로 포함한다.
(D31) D28 내지 D30 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 검색 질의들 이력의 세트는 최근 검색 질의들의 빈도에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4419)으로) 선택된다.
(D32) D21 내지 D31 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 검색 모드에 진입하는 것과 함께, 전자 디바이스 상에서 이용가능한 하나 이상의 접근성 특징부들을 사용함으로써 콘텐츠와 연관되는 정보를 (예컨대, 획득 유닛(4415)으로) 획득하도록 구성된다.
(D33) D32의 전자 디바이스의 일부 실시예들에서, 하나 이상의 접근성 특징부들을 사용하는 것은, 하나 이상의 접근성 특징부들을 사용하여, (i) 애플리케이션 내에 현재 디스플레이되는 텍스트 콘텐츠에 자연 언어 프로세싱 알고리즘을 적용함으로써; 그리고 (ii) 자연 언어 프로세싱 알고리즘으로부터 (예컨대, 획득 유닛(4415)으로) 획득된 데이터를 사용하여 콘텐츠를 설명하는 하나 이상의 키워드들을 (예컨대, 결정 유닛(4417)으로) 결정함으로써, 콘텐츠와 연관되는 정보를 생성하는 것을 포함하고, 적어도 하나의 제안된 검색 질의는 하나 이상의 키워드들에 기초하여 (예컨대, 결정 유닛(4417)으로) 결정된다.
(D34) D33의 전자 디바이스의 일부 실시예들에서, 콘텐츠를 설명하는 하나 이상의 키워드들을 결정하는 것은 또한, (i) 애플리케이션에서 현재 디스플레이되는 비-텍스트 콘텐츠에 대응하는 메타데이터를 (예컨대, 인출 유닛(4411)으로) 인출하는 것; 및 (ii) 자연 언어 프로세싱 알고리즘으로부터 획득된 데이터에 더하여, 인출된 메타데이터를 사용하여, 하나 이상의 키워드들을 (예컨대, 결정 유닛(4417)으로) 결정하는 것을 포함한다.
(D35) D21 내지 D34 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 검색 인터페이스는 하나 이상의 트렌딩 질의들을 추가로 포함한다.
(D36) D35의 전자 디바이스의 일부 실시예들에서, 검색 인터페이스는 전자 디바이스의 사용자에게 관심 대상인 것으로 예측되는 하나 이상의 애플리케이션들을 추가로 포함한다.
(E1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면(예컨대, 도 1d의 터치 감응형 표면(195)) 및 디스플레이(예컨대, 도 1d의 디스플레이(194))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 터치 감응형 표면을 통해, 사용자 인터페이스 위에서의 스와이프 제스처를 검출하는 단계를 포함하고, 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 한다. 본 방법은 스와이프 제스처를 검출하는 단계에 응답하여, 검색 모드에 진입하는 단계를 추가로 포함하고, 검색 모드에 진입하는 단계는, 사용자 인터페이스와는 별개인 검색 인터페이스를, 검색 인터페이스 내에 임의의 사용자 입력을 수신하기 전에, 제1 콘텐츠 항목으로 채우는 단계를 포함한다. 일부 실시예들에서, 사용자 인터페이스가, 애플리케이션들을 호출하기 위한 선택가능한 아이콘들을 포함하는 홈 화면과는 별개인 애플리케이션과 연관되는 콘텐츠를 포함한다는 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 단계는, 검색 인터페이스를, 애플리케이션과 연관되는 콘텐츠에 적어도 부분적으로 기초하는 적어도 하나의 제안된 검색 질의로 채우는 단계를 포함하고, 사용자 인터페이스가 홈 화면의 일정 페이지와 연관된다는 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 단계는, 검색 인터페이스를, 전자 디바이스의 현재 위치의 임계 거리 내에 있는 적어도 하나의 관심 지점의 선택가능한 설명을 포함하는 어포던스로 채우는 단계를 포함한다.
(E2) E1의 방법의 일부 실시예들에서, 검색 인터페이스를 어포던스로 채우는 단계는, 터치 감응형 표면 상에 검색 인터페이스의 검색 엔트리 부분을 디스플레이하는 단계를 포함하고, 본 방법은 검색 엔트리 부분에서 입력을 검출하는 단계; 및 검색 엔트리 부분에서 입력을 검출하는 단계에 응답하여, 어포던스를 디스플레이하는 것을 중지하는 단계 및 검색 인터페이스 내에 적어도 하나의 제안된 검색 질의를 디스플레이하는 단계를 추가로 포함한다.
(E3) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 E1 또는 E2에 기술된 방법을 수행하게 한다.
(E4) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 E1 또는 E2에 기술된 방법을 수행하기 위한 수단을 포함한다.
(E5) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 E1 또는 E2에 기술된 방법을 수행하게 한다.
(E6) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 E1 또는 E2에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다. 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 E1 또는 E2에 기술된 방법을 수행하기 위한 수단을 포함한다.
(E7) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 45의 디스플레이 유닛(4501)), 터치 감응형 표면 유닛(예컨대, 도 45의 터치 감응형 표면 유닛(4503)), 및 프로세싱 유닛(예컨대, 도 45의 프로세싱 유닛(4505))을 포함하는 전자 디바이스가 제공된다. 프로세싱 유닛은 터치 감응형 표면 유닛 및 디스플레이 유닛과 결합된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 45는 전자 디바이스(4500)와 통합된 바와 같은 디스플레이 유닛(4501) 및 터치 감응형 표면 유닛(4503)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 터치 감응형 표면 유닛 및 디스플레이 유닛은 단일 터치 감응형 디스플레이 유닛(본 명세서에서 터치 감응형 디스플레이로도 지칭됨) 내에 통합된다. 프로세싱 유닛은 검출 유닛(예컨대, 도 45의 검출 유닛(4507)), 표시 유닛(예컨대, 도 45의 표시 유닛(4509)), 채움 유닛(예컨대, 도 45의 채움 유닛(4511)), 및 검색 모드 진입 유닛(예컨대, 도 45의 검색 모드 진입 유닛(4513))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4507 내지 4513))은, 터치 감응형 표면 유닛(예컨대, 터치 감응형 표면 유닛(4503))을 통해, 사용자 인터페이스 위에서의 스와이프 제스처를 (예컨대, 검출 유닛(4507)으로) 검출하도록 - 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 함 -; 그리고 스와이프 제스처를 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4513)으로) 검색 모드에 진입하도록 구성되고, 검색 모드에 진입하는 것은, 사용자 인터페이스와는 별개인 검색 인터페이스를, 검색 인터페이스 내에 임의의 사용자 입력을 수신하기 전에, 제1 콘텐츠 항목으로 (예컨대, 채움 유닛(4511)으로) 채우는 것을 포함한다. 일부 실시예들에서, 사용자 인터페이스가, 애플리케이션들을 호출하기 위한 선택가능한 아이콘들을 포함하는 홈 화면과는 별개인 애플리케이션과 연관되는 콘텐츠를 포함한다는 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 것은, 검색 인터페이스를, 애플리케이션과 연관되는 콘텐츠에 적어도 부분적으로 기초하는 적어도 하나의 제안된 검색 질의로 (예컨대, 채움 유닛(4511)으로) 채우는 것을 포함하고, 사용자 인터페이스가 홈 화면의 일정 페이지와 연관된다는 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 것은, 검색 인터페이스를, 전자 디바이스의 현재 위치의 임계 거리 내에 있는 적어도 하나의 관심 지점의 선택가능한 설명을 포함하는 어포던스로 (예컨대, 채움 유닛(4511)으로) 채우는 것을 포함한다.
(E8) E7의 전자 디바이스의 일부 실시예들에서, 검색 인터페이스를 어포던스로 채우는 것은 검색 인터페이스의 검색 엔트리 부분을 (예컨대, 표시 유닛(4507) 및/또는 디스플레이 유닛(4501)으로) 디스플레이하는 것을 포함하고, 프로세싱 유닛은 추가로, 검색 엔트리 부분에서 입력을 (예컨대, 검출 유닛(4507)으로) 검출하도록; 그리고 검색 엔트리 부분에서 입력을 검출하는 것에 응답하여, 어포던스를 (예컨대, 표시 유닛(4507) 및/또는 디스플레이 유닛(4501)으로) 디스플레이하는 것을 중지하도록 그리고 검색 인터페이스 내에 적어도 하나의 제안된 검색 질의를 (예컨대, 표시 유닛(4507) 및/또는 디스플레이 유닛(4501)으로) 디스플레이하도록 구성된다.
(F1) 일부 실시예들에 따르면, 방법은 위치 센서 및 터치 감응형 표면(예컨대, 도 1d의 터치 감응형 표면(195)) 및 디스플레이(예컨대, 도 1d의 디스플레이(194))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은, 자동으로 그리고 사용자로부터의 지시들 없이, 전자 디바이스의 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 결정하는 단계; 사용자가 지리적 위치에 있는 차량을 떠났다고 결정할 시에, 지리적 위치를 식별하기 위해 위치 센서로부터 인출되는 포지셔닝 정보가 정확도 기준들을 만족하는지 여부를 결정하는 단계를 포함한다. 본 방법은, 포지셔닝 정보가 정확도 기준들을 만족하지 않는다고 결정할 시에, 사용자에게 지리적 위치에 관한 정보를 입력하라는 프롬프트(prompt)를 제공하는 단계를 추가로 포함한다. 본 방법은 또한, 프롬프트를 제공하는 단계에 응답하여, 사용자로부터 지리적 위치에 관한 정보를 수신하는 단계 및 정보를 차량 위치 정보로서 저장하는 단계를 포함한다.
(F2) 청구항 F1의 방법의 일부 실시예들에서, 본 방법은, 포지셔닝 정보가 정확도 기준들을 만족한다고 결정할 시에, 자동으로 그리고 사용자로부터의 지시들 없이, 포지셔닝 정보를 차량 위치 정보로서 저장하는 단계를 추가로 포함한다.
(F3) 청구항 F2의 방법의 일부 실시예들에서, 본 방법은, 사용자가 지리적 위치를 향해서 가고 있다는 결정에 따라, 차량 위치 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 단계를 추가로 포함한다.
(F4) 청구항 F3의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 사용자의 현재 위치에 대한 식별자 및 지리적 위치에 대한 별개의 식별자를 포함하는 지도 객체이다.
(F5) 청구항 F4의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 전자 디바이스의 잠금 화면 상에 디스플레이된다.
(F6) 청구항 F4의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 전자 디바이스로 하여금 검색 모드에 진입하게 하는 스와이프 제스처에 응답하여 디스플레이된다.
(F7) 청구항 F6의 방법의 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은 스와이프 제스처를 수신하는 것에 응답하여 수행된다.
(F8) F1 내지 F7 중 임의의 하나의 방법의 일부 실시예들에서, 프롬프트는 전자 디바이스를 통해 이용가능한 가상 어시스턴트에 의해 제공되는 오디오 프롬프트이고, 사용자로부터 정보를 수신하는 단계는, 사용자로부터 지리적 위치를 식별하는 구두 설명을 수신하는 단계를 포함하고, 사용자 인터페이스 객체를 디스플레이하는 단계는 선택가능한 어포던스를 디스플레이하는 단계를 포함하고, 선택가능한 어포던스는, 선택될 때, 디바이스로 하여금 구두 설명을 재생하게 한다.
(F9) F1 내지 F7 중 임의의 하나의 방법의 일부 실시예들에서, 프롬프트는 전자 디바이스의 디스플레이 상에 디스플레이되고, 사용자로부터 정보를 수신하는 단계는, 사용자로부터 지리적 위치를 식별하는 텍스트 설명을 수신하는 단계를 포함하고, 사용자 인터페이스 객체를 디스플레이하는 단계는 사용자로부터의 텍스트 설명을 디스플레이하는 단계를 포함한다.
(F10) F1 내지 F7 중 임의의 하나의 방법의 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은, 위치 센서로부터 수신된 새로운 포지셔닝 정보를 사용하여, 전자 디바이스가 지리적 위치를 향해서 이동 중이라고 결정하는 것을 포함한다.
(F11) F10의 방법의 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은, (i) 전자 디바이스가 임계 기간 초과 동안 상이한 지리적 위치에 머물러 있었다고 결정하는 것, 및 (ii) 새로운 포지셔닝 정보가, 전자 디바이스가 상이한 지리적 위치에서 떠나서 지리적 위치를 향해 이동 중임을 나타낸다고 결정하는 것을 포함한다.
(F12) F1 내지 F11 중 임의의 하나의 방법의 일부 실시예들에서, 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 결정하는 단계는, (i) 전자 디바이스가 임계 속력 초과로 이동 중이라고 결정함으로써 사용자가 차량 내에 있다고 결정하는 단계, (ii) (a) 전자 디바이스가 임계 기간 초과 동안 지리적 위치에 머물러 있다고 결정하는 것, (b) 전자 디바이스와 차량 사이의 통신 링크가 연결해제되었다고 결정하는 것, 및 (c) 지리적 위치가 주차장 내의 위치에 대응한다고 결정하는 것 중 하나 이상에 의해, 차량이 지리적 위치에 멈춰 있다고 결정하는 단계를 포함한다.
(F13) 청구항 F12의 방법의 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 단계는, 전자 디바이스가 임계 기간 초과 동안 지리적 위치에 머물러 있다고 결정하는 단계를 포함한다.
(F14) F12 또는 F13의 방법의 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 단계는, 전자 디바이스와 차량 사이의 통신 링크가 연결해제되었다고 결정하는 단계를 포함한다.
(F15) F12 내지 F14 중 임의의 하나의 방법의 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 단계는, 지리적 위치가 주차장 내의 위치에 대응한다고 결정하는 단계를 포함한다.
(F16) F1 내지 F15 중 임의의 하나의 방법의 일부 실시예들에서, 정확도 기준들은, 포지셔닝 정보와 연관된 GPS 판독값의 정확도가 정확도의 임계 레벨 초과일 때 만족되는 기준을 포함한다.
(F17) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 위치 센서, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 F1 내지 F16 중 임의의 하나에 기술된 방법을 수행하게 한다.
(F18) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 위치 센서, 및 F1 내지 F16 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(F19) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면, 디스플레이, 및 위치 센서를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 F1 내지 F16 중 임의의 하나에 기술된 방법을 수행하게 한다.
(F20) 또 하나의 추가 태양에서, 터치 감응형 표면, 디스플레이, 및 위치 센서를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 F1 내지 F16 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다. 하나의 추가 태양에서, 터치 감응형 표면, 디스플레이, 및 위치 센서를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 F1 내지 F16 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(F21) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 46의 디스플레이 유닛(4601)), 터치 감응형 표면 유닛(예컨대, 도 46의 터치 감응형 표면 유닛(4603)), 위치 센서 유닛(예컨대, 도 46의 위치 센서 유닛(4607)), 및 프로세싱 유닛(예컨대, 도 46의 프로세싱 유닛(4605))을 포함하는 전자 디바이스가 제공된다. 프로세싱 유닛은 터치 감응형 표면 유닛, 디스플레이 유닛 및 위치 센서 유닛과 결합된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 46은 전자 디바이스(4600)와 통합된 바와 같은 디스플레이 유닛(4601) 및 터치 감응형 표면 유닛(4603)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 터치 감응형 표면 유닛 및 디스플레이 유닛은 단일 터치 감응형 디스플레이 유닛(본 명세서에서 터치 감응형 디스플레이로도 지칭됨) 내에 통합된다. 프로세싱 유닛은 표시 유닛(예컨대, 도 46의 표시 유닛(4609)), 인출 유닛(예컨대, 도 46의 인출 유닛(4611)), 결정 유닛(예컨대, 도 46의 결정 유닛(4613)), 저장 유닛(예컨대, 도 46의 저장 유닛(4615)), 식별 유닛(예컨대, 도 46의 식별 유닛(4617)), 선택 유닛(예컨대, 도 46의 선택 유닛(4619)), 수신 유닛(예컨대, 도 46의 수신 유닛(4621)), 제공 유닛(예컨대, 도 46의 제공 유닛(4623)), 및 재생 유닛(예컨대, 도 46의 재생 유닛(4625))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4607 내지 4625))은, 자동으로 그리고 사용자로부터의 지시들 없이, 전자 디바이스의 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 (예컨대, 결정 유닛(4613)으로) 결정하도록; 사용자가 지리적 위치에 있는 차량을 떠났다고 결정할 시에, 지리적 위치를 (예컨대, 식별 유닛(4617)으로) 식별하기 위해 위치 센서 유닛(예컨대, 위치 센서 유닛(4607))으로부터 (예컨대, 인출 유닛(4611)으로) 인출되는 포지셔닝 정보가 정확도 기준들을 만족하는지 여부를 (예컨대, 결정 유닛(4613)으로) 결정하도록; 포지셔닝 정보가 정확도 기준들을 만족하지 않는다고 (예컨대, 결정 유닛(4613)으로) 결정할 시에, 사용자에게 지리적 위치에 관한 정보를 입력하라는 프롬프트를 (예컨대, 제공 유닛(4623)으로) 제공하도록; 그리고 프롬프트를 제공하는 것에 응답하여, 사용자로부터 지리적 위치에 관한 정보를 (예컨대, 수신 유닛(4621)으로) 수신하도록 그리고 그 정보를 차량 위치 정보로서 (예컨대, 저장 유닛(4615)으로) 저장하도록 구성된다.
(F22) F21의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 포지셔닝 정보가 정확도 기준들을 만족한다고 결정할 시에, 자동으로 그리고 사용자로부터의 지시들 없이, 포지셔닝 정보를 차량 위치 정보로서 (예컨대, 저장 유닛(4615)으로) 저장하도록 구성된다.
(F23) F22의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자가 지리적 위치를 향해서 가고 있다는 결정에 따라, 차량 위치 정보를 포함하는 사용자 인터페이스 객체를 (예컨대, 디스플레이 유닛(4601)과 함께 표시 유닛(4609)으로) 디스플레이하도록 구성된다.
(F24) F23의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 사용자의 현재 위치에 대한 식별자 및 지리적 위치에 대한 별개의 식별자를 포함하는 지도 객체이다.
(F25) F24의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 전자 디바이스의 잠금 화면 상에 (예컨대, 디스플레이 유닛(4601)과 함께 표시 유닛(4609)으로) 디스플레이된다.
(F26) F24의 전자 디바이스의 일부 실시예들에서, 사용자 인터페이스 객체는 전자 디바이스로 하여금 검색 모드에 진입하게 하는 스와이프 제스처에 응답하여 (예컨대, 디스플레이 유닛(4601)과 함께 표시 유닛(4609)으로) 디스플레이된다.
(F27) F26의 전자 디바이스의 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은 스와이프 제스처를 수신하는 것에 응답하여 수행된다.
(F28) F21 내지 F27 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프롬프트는 전자 디바이스를 통해 이용가능한 가상 어시스턴트에 의해 제공되는 오디오 프롬프트이고, 사용자로부터 정보를 수신하는 것은, 사용자로부터 지리적 위치를 식별하는 구두 설명을 (예컨대, 수신 유닛(4621)으로) 수신하는 것을 포함하고, 사용자 인터페이스 객체를 디스플레이하는 것은 선택가능한 어포던스를 (예컨대, 디스플레이 유닛(4601)과 함께 표시 유닛(4609)으로) 디스플레이하는 것을 포함하고, 선택가능한 어포던스는, (예컨대, 선택 유닛(4619)을 통해) 선택될 때, 디바이스로 하여금 구두 설명을 (예컨대, 재생 유닛(4625)으로) 재생하게 한다.
(F29) F21 내지 F27 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 프롬프트는 전자 디바이스의 디스플레이 상에 (예컨대, 디스플레이 유닛(4601)과 함께 표시 유닛(4609)으로) 디스플레이되고, 사용자로부터 정보를 수신하는 것은, 사용자로부터 지리적 위치를 식별하는 텍스트 설명을 (예컨대, 수신 유닛(4621)으로) 수신하는 것을 포함하고, 사용자 인터페이스 객체를 디스플레이하는 것은 사용자로부터의 텍스트 설명을 디스플레이하는 것을 포함한다.
(F30) F21 내지 F27 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은, 위치 센서 유닛(예컨대, 위치 센서 유닛(4607))으로부터 (예컨대, 수신 유닛(4621)으로) 수신된 새로운 포지셔닝 정보를 사용하여, 전자 디바이스가 지리적 위치를 향해서 이동 중이라고 (예컨대, 결정 유닛(4613)으로) 결정하는 것을 포함한다.
(F31) F30의 전자 디바이스의 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은, (i) 전자 디바이스가 임계 기간 초과 동안 상이한 지리적 위치에 머물러 있었다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것, 및 (ii) 새로운 포지셔닝 정보가, 전자 디바이스가 상이한 지리적 위치에서 떠나서 지리적 위치를 향해 이동 중임을 나타낸다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것을 포함한다.
(F32) F21 내지 F31 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 결정하는 것은, (i) 전자 디바이스가 임계 속력 초과로 이동 중이라고 (예컨대, 결정 유닛(4613)으로) 결정함으로써 사용자가 차량 내에 있다고 결정하는 것, (ii) (a) 전자 디바이스가 임계 기간 초과 동안 지리적 위치에 머물러 있다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것, (b) 전자 디바이스와 차량 사이의 통신 링크가 연결해제되었다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것, 및 (c) 지리적 위치가 주차장 내의 위치에 대응한다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것 중 하나 이상에 의해, 차량이 지리적 위치에 멈춰 있다고 결정하는 것을 포함한다.
(F33) F32의 전자 디바이스의 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 것은, 전자 디바이스가 임계 기간 초과 동안 지리적 위치에 머물러 있다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것을 포함한다.
(F34) F32 또는 F33의 전자 디바이스의 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 것은, 전자 디바이스와 차량 사이의 통신 링크가 연결해제되었다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것을 포함한다.
(F35) F32 내지 F34 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 것은, 지리적 위치가 주차장 내의 위치에 대응한다고 (예컨대, 결정 유닛(4613)으로) 결정하는 것을 포함한다.
(F36) F21 내지 F35 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 정확도 기준들은, 포지셔닝 정보와 연관된 GPS 판독값의 정확도가 정확도의 임계 레벨 초과일 때 만족되는 기준을 포함한다.
(G1) 일부 실시예들에 따르면, 방법은 위치 센서 및 터치 감응형 표면(예컨대, 도 1d의 터치 감응형 표면(195)) 및 디스플레이(예컨대, 도 1d의 디스플레이(194))를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 위치 센서를 사용하여, 전자 디바이스의 지리적 위치를 모니터링하는 단계를 포함한다. 본 방법은 모니터링된 지리적 위치에 기초하여, 전자 디바이스가 미리결정된 유형의 관심 지점의 임계 거리 내에 있다고 결정하는 단계를 추가로 포함한다. 본 방법은 또한, 전자 디바이스가 관심 지점의 임계 거리 내에 있다고 결정하는 단계에 따라, 관심 지점에서 현재 인기 있는 적어도 하나의 활동을 식별하는 단계, 및 관심 지점에서 현재 인기 있는 적어도 하나의 활동에 관한 정보를 인출하는 단계를 포함하는, 관심 지점에 관한 정보를 인출하는 단계를 포함한다. 본 방법은, 터치 감응형 표면을 통해, 제1 입력을 검출하는 단계 - 제1 입력은, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 함 -; 및 제1 입력을 검출하는 단계에 응답하여, 검색 모드에 진입하는 단계를 추가로 포함하고, 검색 모드에 진입하는 단계는, 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 디스플레이를 통해 어포던스를 제시하는 단계를 포함하는데, 어포던스는, (i) 적어도 하나의 활동에 관한 정보, 및 (ii) 적어도 하나의 활동이 관심 지점에서 현재 인기 있는 것으로 식별되었다는 표시를 포함한다.
(G2) 청구항 G1의 방법의 일부 실시예들에서, 본 방법은, 제2 입력을 검출하는 단계; 및 제2 입력을 검출하는 단계에 응답하여, 관심 지점과는 별개인 제2 관심 지점에서의 현재 활동들에 관한 이용가능한 정보를 포함하도록 어포던스를 업데이트하는 단계를 포함하고, 관심 지점은 전자 디바이스의 임계 거리 내에 있다.
(G3) G1 또는 G2의 방법의 일부 실시예들에서, 어포던스는 관심 지점들의 선택가능한 카테고리들을 추가로 포함하고, 본 방법은, 각각의 선택가능한 카테고리의 선택을 검출하는 단계; 및 선택을 검출하는 단계에 응답하여, 디바이스의 제2 임계 거리 내에 위치되는 추가 관심 지점들에 관한 정보를 포함하도록 어포던스를 업데이트하는 단계를 추가로 포함한다.
(G4) G1 내지 G3 중 임의의 하나의 방법의 일부 실시예들에서, 관심 지점은 유원지이고, 인출된 정보는 유원지에서의 놀이 기구들에 대한 현재 대기 시간들을 포함한다.
(G5) 청구항 G4의 방법의 일부 실시예들에서, 인출된 정보는 전자 디바이스의 미리정의된 거리 내에 위치되는 놀이 기구들에 대한 대기 시간들에 관한 정보를 포함한다.
(G6) G1 내지 G3 중 임의의 하나의 방법의 일부 실시예들에서, 관심 지점은 레스토랑이고, 인출된 정보는 레스토랑에서의 인기 있는 메뉴 항목들에 관한 정보를 포함한다.
(G7) 청구항 G6의 방법의 일부 실시예들에서, 인출된 정보는 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 인출된다.
(G8) G1 내지 G3 중 임의의 하나의 방법의 일부 실시예들에서, 관심 지점은 영화관이고, 인출된 정보는 영화관에 대한 상영 시간들에 관한 정보를 포함한다.
(G9) 청구항 G8의 방법의 일부 실시예들에서, 인출된 정보는 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 인출된다.
(G10) G1 내지 G9 중 임의의 하나의 방법의 일부 실시예들에서, 전자 디바이스를 잠금해제한 후에, 어포던스는 전자 디바이스의 홈 화면의 초기 페이지 위에서의 실질적으로 수평 방향으로의 스와이프에 응답하여 이용가능하다.
(G11) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 위치 센서, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 G1 내지 G10 중 임의의 하나에 기술된 방법을 수행하게 한다.
(G12) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 위치 센서, 및 G1 내지 G10 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(G13) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면, 디스플레이, 및 위치 센서를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 G1 내지 G10 중 임의의 하나에 기술된 방법을 수행하게 한다.
(G14) 또 하나의 추가 태양에서, 터치 감응형 표면, 디스플레이, 및 위치 센서를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 G1 내지 G10 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다. 하나의 추가 태양에서, 터치 감응형 표면, 디스플레이, 및 위치 센서를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 G1 내지 G10 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(G15) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 47의 디스플레이 유닛(4701)), 터치 감응형 표면 유닛(예컨대, 도 47의 터치 감응형 표면 유닛(4703)), 위치 센서 유닛(4707), 및 프로세싱 유닛(예컨대, 도 47의 프로세싱 유닛(4705))을 포함하는 전자 디바이스가 제공된다. 프로세싱 유닛은 터치 감응형 표면 유닛, 디스플레이 유닛 및 위치 센서 유닛과 결합된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(즉, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 47은 전자 디바이스(4700)와 통합된 바와 같은 디스플레이 유닛(4701) 및 터치 감응형 표면 유닛(4703)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 터치 감응형 표면 유닛 및 디스플레이 유닛은 단일 터치 감응형 디스플레이 유닛(본 명세서에서 터치 감응형 디스플레이로도 지칭됨) 내에 통합된다. 프로세싱 유닛은 검출 유닛(예컨대, 도 47의 검출 유닛(4709)), 표시 유닛(예컨대, 도 47의 표시 유닛(4711)), 인출 유닛(예컨대, 도 47의 인출 유닛(4713)), 결정 유닛(예컨대, 도 47의 결정 유닛(4715)), 식별 유닛(예컨대, 도 47의 식별 유닛(4717)), 잠금해제 유닛(예컨대, 도 47의 잠금해제 유닛(4719)), 및 검색 모드 진입 유닛(예컨대, 도 47의 검색 모드 진입 유닛(4721))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4709 내지 4721))은, 전자 디바이스의 사용자로부터 어떠한 지시들도 수신하지 않고서, 위치 센서 유닛(예컨대, 위치 센서 유닛(4707))을 사용하여, 전자 디바이스의 지리적 위치를 모니터링하도록; 모니터링된 지리적 위치에 기초하여, 전자 디바이스가 미리결정된 유형의 관심 지점의 임계 거리 내에 있다고 (예컨대, 결정 유닛(4715)으로) 결정하도록; 전자 디바이스가 관심 지점의 임계 거리 내에 있다고 결정하는 것에 따라, 관심 지점에서 현재 인기 있는 적어도 하나의 활동을 (예컨대, 식별 유닛(4717)으로) 식별하도록; 관심 지점에서 현재 인기 있는 적어도 하나의 활동에 관한 정보를 인출하는 것을 포함하는, 관심 지점에 관한 정보를 (예컨대, 인출 유닛(4713)으로) 인출하도록; 터치 감응형 표면 유닛(예컨대, 터치 감응형 표면 유닛(4703))을 통해, 제1 입력을 (예컨대, 검출 유닛(4709)으로) 검출하도록 - 제1 입력은, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 함 -; 그리고 제1 입력을 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4721)으로) 검색 모드에 진입하도록 구성되고, 검색 모드에 진입하는 것은, 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 디스플레이 유닛(예컨대, 디스플레이 유닛(4701))을 통해 어포던스를 (예컨대, 표시 유닛(4711)으로) 제시하는 것을 포함하는데, 어포던스는, (i) 적어도 하나의 활동에 관한 정보, 및 (ii) 적어도 하나의 활동이 관심 지점에서 현재 인기 있는 것으로 식별되었다는 표시를 포함한다.
(G16) G15의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛은 추가로, 제2 입력을 (예컨대, 검출 유닛(4709)으로) 검출하도록; 그리고 제2 입력을 검출하는 것에 응답하여, 관심 지점과는 별개인 제2 관심 지점에서의 현재 활동들에 관한 이용가능한 정보를 포함하도록 어포던스를 (예컨대, 표시 유닛(4711)으로) 업데이트하도록 구성되고, 관심 지점은 전자 디바이스의 임계 거리 내에 있다.
(G17) G15 또는 G16의 전자 디바이스의 일부 실시예들에서, 어포던스는 관심 지점들의 선택가능한 카테고리들을 추가로 포함하고, 프로세싱 유닛은 추가로, 각각의 선택가능한 카테고리의 선택을 (예컨대, 검출 유닛(4709)으로) 검출하도록; 그리고 선택을 검출하는 것에 응답하여, 디바이스의 제2 임계 거리 내에 위치되는 추가 관심 지점들에 관한 정보를 포함하도록 어포던스를 (예컨대, 표시 유닛(4711)으로) 업데이트하도록 구성된다.
(G18) G15 내지 G17 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 관심 지점은 유원지이고, 인출된 정보는 유원지에서의 놀이 기구들에 대한 현재 대기 시간들을 포함한다.
(G19) G18의 전자 디바이스의 일부 실시예들에서, 인출된 정보는 전자 디바이스의 미리정의된 거리 내에 위치되는 놀이 기구들에 대한 대기 시간들에 관한 정보를 포함한다.
(G20) G15 내지 G17 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 관심 지점은 레스토랑이고, 인출된 정보는 레스토랑에서의 인기 있는 메뉴 항목들에 관한 정보를 포함한다.
(G21) G20의 전자 디바이스의 일부 실시예들에서, 인출된 정보는 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 인출된다.
(G22) G15 내지 G17 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 관심 지점은 영화관이고, 인출된 정보는 영화관에 대한 상영 시간들에 관한 정보를 포함한다.
(G23) G22의 전자 디바이스의 일부 실시예들에서, 인출된 정보는 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 인출된다.
(G24) G15 내지 G23 중 임의의 하나의 전자 디바이스의 일부 실시예들에서, 전자 디바이스를 (예컨대, 잠금해제 유닛(4719)으로) 잠금해제한 후에, 어포던스는 전자 디바이스의 홈 화면의 초기 페이지 위에서의 실질적으로 수평 방향으로의 스와이프에 응답하여 이용가능하다.
(H1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 음성 통신의 적어도 일부분(예컨대, 10초 이하의 라이브 전화 통화 또는 녹음된 음성메일)을 수신하는 단계를 포함하고, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다. 본 방법은 또한 원격 디바이스의 원격 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 콘텐츠 항목을 추출하는 단계를 포함한다. 본 방법은 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능한지 여부를 결정하는 단계를 추가로 포함한다. 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 본 방법은 (i) 콘텐츠 항목과 연관되는 애플리케이션을 식별하는 단계; 및 (ii) 디스플레이 상에 콘텐츠 항목의 선택가능한 설명을 디스플레이하는 단계를 포함한다. 선택가능한 설명의 선택을 검출하는 것에 응답하여, 본 방법은, 식별된 애플리케이션으로 제시를 위해 콘텐츠 항목을 저장하는 단계(예컨대, 콘텐츠 항목이 식별된 애플리케이션에 의한 제시를 위해 이용가능하도록 콘텐츠 항목을 저장하는 단계)를 포함한다. 이러한 방식으로, 사용자들은, 논의된 상세사항들 전부를 기억하고 이어서 적절한 콘텐츠 항목들을 생성하기 위해 그러한 상세사항들을 추후에 입력할 필요 없이, 음성 통신 상에서 언급되거나 논의된 콘텐츠 항목들을 저장할 수 있다. 대신에, 전자 디바이스는 다양한 각각의 콘텐츠 항목들을 설명하는 스피치에 기초하여 콘텐츠 항목들을 검출 및 추출할 수 있고, 이어서 콘텐츠 항목의 선택가능한 설명을 제공할 수 있는데, 콘텐츠 항목의 선택가능한 설명은 전자 디바이스 상에 각각의 콘텐츠 항목을 저장하기 위하여 사용자에 의해 선택될 수 있다.
(H2) H1의 방법의 일부 실시예들에서, 콘텐츠 항목은 새로운 이벤트이다.
(H3) H1의 방법의 일부 실시예들에서, 콘텐츠 항목은 전자 디바이스 상의 캘린더 애플리케이션과 현재 연관되는 이벤트에 대한 새로운 이벤트 상세사항들이다.
(H4) H1의 방법의 일부 실시예들에서, 콘텐츠 항목은 새로운 연락처이다.
(H5) H1의 방법의 일부 실시예들에서, 콘텐츠 항목은 전자 디바이스 상의 전화 애플리케이션과 연관되는 기존의 연락처에 대한 새로운 연락처 정보이다.
(H6) H1 내지 H5 중 임의의 하나의 방법의 일부 실시예들에서, 음성 통신은 라이브 전화 통화이다.
(H7) H1 내지 H5 중 임의의 하나의 방법의 일부 실시예들에서, 음성 통신은 라이브 페이스타임(FaceTime) 통화이다.
(H8) H1 내지 H5 중 임의의 하나의 방법의 일부 실시예들에서, 음성 통신은 녹음된 음성메일이다.
(H9) H1 내지 H8 중 임의의 하나의 방법의 일부 실시예들에서, 선택가능한 설명을 디스플레이하는 단계는, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 선택가능한 설명을 디스플레이하는 단계를 포함한다. 이러한 방식으로, 사용자들은 최근 통화들을 포함하는 사용자 인터페이스로부터 직접, 추출된 콘텐츠 항목들(예컨대, 각각의 음성 통신들 동안 추출되었던 것들)에 쉽고 편리하게 액세스할 수 있다.
(H10) H9의 방법의 일부 실시예들에서, 선택가능한 설명은 콘텐츠 항목이 음성 통신과 연관된다는 표시와 함께 디스플레이된다.
(H11) H9의 방법의 일부 실시예들에서, 선택을 검출하는 것은, 최근 통화들을 포함하는 사용자 인터페이스가 디스플레이되는 동안 선택을 수신하는 것을 포함한다.
(H12) H1 내지 H11 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은, 콘텐츠 항목의 선택가능한 설명을 디스플레이하는 단계와 함께, 전자 디바이스의 사용자에게 콘텐츠 항목이 검출되었다는 피드백(예컨대, 사용자가 전화 통화 동안 그의 귀로부터 전화를 제거할 필요가 없도록 제2 디바이스 상에 사용자 인터페이스 객체의 제시 또는 전자 디바이스에 의해 생성되는 햅틱(haptic) 피드백)을 제공하는 단계를 추가로 포함한다. 이러한 방식으로, 사용자는 콘텐츠 항목이 음성 통신 동안 검출/추출되었다는 간단한 표시를 제공받고, 사용자는 이어서 콘텐츠 항목을 저장할지 여부를 결정할 수 있다.
(H13) H12의 방법의 일부 실시예들에서, 피드백을 제공하는 단계는, 전자 디바이스에 근접해 있는 상이한 전자 디바이스(예컨대, 랩톱, 텔레비전 모니터, 스마트 워치 등)로 콘텐츠 항목의 검출에 관한 정보를 전송하는 단계를 포함한다. 이러한 방식으로, 사용자는 음성 통신을 인터럽트할 필요가 없지만 여전히 검출/추출된 콘텐츠 항목에 관련된 상세사항들을 상이한 디바이스 상에서 볼 수 있다.
(H14) H1 내지 H13 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 음성 통신이 제1 물리적 위치에 관한 정보(예컨대, 전화 통화 동안 언급된 주소 또는 전화 통화 동안 논의된 레스토랑 이름 등, 추가 상세사항들은 아래에서 제공됨)를 포함한다고 결정하는 단계를 추가로 포함한다. 본 방법은 또한, 입력을 검출하는 단계, 및 입력을 검출하는 단계에 응답하여, 위치 데이터를 수용할 수 있는 애플리케이션을 여는 단계 및 애플리케이션을 제1 물리적 위치에 관한 정보로 채우는 단계를 포함한다. 이러한 방식으로, 이벤트 및 연락처 정보를 검출 및 추출하는 것에 더하여, 전자 디바이스는 음성 통신 상에서 논의된 위치 정보를 추출하고 그 위치 정보를 사용자에게 적절한 애플리케이션에서 제공할 수 있다(예컨대, 사용자가 전화 통화 상에서 논의된 특정 위치 상세사항들, 특히 사용자에게 익숙지 않을 수 있는 새로운 상세사항들을 기억하는 부담이 없도록 하여, 디바이스는 그러한 위치 상세사항들을 추출하고 그것들을 사용자에 의한 사용을 위해 디스플레이한다).
(H15) H14의 방법의 일부 실시예들에서, 애플리케이션은 지도 애플리케이션이고, 지도 애플리케이션을 제1 물리적 위치에 관한 정보로 채우는 단계는, 지도 애플리케이션 내에 디스플레이되는 지도를 제1 물리적 위치에 대응하는 위치 식별자로 채우는 단계를 포함한다. 이러한 방식으로, 사용자는 새로 추출된 위치 상세사항들을 용이하게 사용하여 새로운 목적지로 이동할 수 있고, 특정 위치가 얼마나 멀리 떨어져 있는지를 볼 수 있고, 지도 애플리케이션들에 의해 제공되는 다른 기능들을 볼 수 있다.
(H16) H1 내지 H13 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 음성 통신이 제1 물리적 위치에 관한 정보를 포함한다고 결정하는 단계를 추가로 포함한다. 본 방법은 또한, 입력(예컨대, 아래에서 상세하게 논의되는 스와이프 제스처들과 같은, 검색 활성화 제스처)을 검출하는 단계, 및 입력을 검출하는 단계에 응답하여, 검색 인터페이스를 제1 물리적 위치에 관한 정보로 채우는 단계를 포함한다. 이러한 방식으로, 특정 애플리케이션들에서 사용하기 위해 사용자들에게 위치 정보를 제공하는 것에 더하여(또는 그에 대한 대안으로서), 전자 디바이스는 또한 검색 인터페이스에서 사용하기 위해(예컨대, 관련된 관심 지점들에 대해 검색하거나, 또는 전화 번호, 메뉴 등과 같은, 제1 물리적 위치에 관한 추가 상세사항들에 대해 검색하기 위해) 위치 정보를 제공할 수 있다.
(H17) H1 내지 H16 중 임의의 하나의 방법의 일부 실시예들에서, 콘텐츠 항목을 추출하는 단계는, 미리결정된 유형의 콘텐츠를 검출하기 위해 음성 통신의 일부분을 분석하는 단계를 포함하고, 분석하는 단계는, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 음성 통신을 출력하면서 수행된다(예컨대, 음성 통신이 전자 디바이스의 사용자에게 출력되고 있는 동안 음성 통신은 실시간으로 분석된다).
(H18) H17의 방법의 일부 실시예들에서, 음성 통신을 분석하는 단계는, (i) 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 텍스트로 변환하는 단계; (ii) 텍스트에 자연 언어 프로세싱 알고리즘을 적용하여 텍스트가 하나 이상의 미리정의된 키워드들을 포함하는지 여부를 결정하는 단계; 및 (iii) 텍스트가 각각의 미리정의된 키워드를 포함한다는 결정에 따라, 음성 통신이 콘텐츠 항목을 설명하는 스피치를 포함한다고 결정하는 단계를 포함한다
(H19) H1 내지 H18 중 임의의 하나의 방법의 일부 실시예들에서, 적어도 음성 통신의 일부분을 수신하는 단계는, 전자 디바이스의 사용자로부터 음성 통신의 일부분이 분석되어야 한다는 표시를 수신하는 단계를 포함한다.
(H20) H19의 방법의 일부 실시예들에서, 표시는 하드웨어 버튼의 선택에 대응한다(예컨대, 사용자는 미리결정된 초수의 음성 통신이 분석되어야 함(예컨대, 이전 10, 15, 또는 20초)을 나타내기 위해 음성 통신이 오디오 시스템에 의해 출력되고 있는 동안 하드웨어 버튼을 선택한다). 일부 실시예들에서, 버튼은 또한, 전자 디바이스의 디스플레이 상에 사용자 선택을 위해 제시되는 버튼(예컨대, "tap here to analyze this voice communication for new content"라고 말하는 음성 통신 동안 디스플레이되는 버튼)일 수 있다.
(H21) H19의 방법의 일부 실시예들에서, 표시는 단어들 "hey Siri"를 포함하는 전자 디바이스의 사용자로부터의 커맨드에 대응한다. 따라서, 사용자는 전자 디바이스에게 음성 통신 상에서 논의된 콘텐츠 항목들(예컨대, 이벤트들, 연락처 정보, 및 물리적 위치들에 관한 정보)을 검출하기 위해 음성 통신의 일부분을 분석하기 시작하라고 쉽게 지시할 수 있다.
(H22) H1 내지 H21 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은 음성 통신의 제2 부분을 수신하는 단계를 추가로 포함하고, 제2 부분은 원격 디바이스의 원격 사용자에 의해 제공된 스피치 및 전자 디바이스의 사용자에 의해 제공된 스피치를 포함한다(예컨대, 음성 통신은 라이브 전화 통화이고 제2 부분은 사용자와 원격 사용자 사이의 논의를 포함한다). 본 방법은 또한, 원격 디바이스의 원격 사용자에 의해 제공된 스피치 및 전자 디바이스의 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 제2 콘텐츠 항목을 추출하는 단계를 포함한다. 제2 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 본 방법은 (i) 제2 콘텐츠 항목과 연관되는 제2 애플리케이션을 식별하는 단계; 및 (ii) 디스플레이 상에 제2 콘텐츠 항목의 제2 선택가능한 설명을 디스플레이하는 단계를 포함한다. 제2 선택가능한 설명의 선택을 검출하는 것에 응답하여, 본 방법은 식별된 제2 애플리케이션으로 제시를 위해 제2 콘텐츠 항목을 저장하는 단계를 포함한다.
(H23) H22의 방법의 일부 실시예들에서, 선택가능한 설명 및 제2 선택가능한 설명은, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 디스플레이된다. 이러한 방식으로, 사용자는 다수의 음성 통신들(예컨대, 다수의 전화 통화들, 음성메일들, 또는 전화 통화들과 음성메일들) 상에서 검출된 콘텐츠 항목들을 편리하게 포함하는 단일 인터페이스를 제공받는다.
(H24) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 H1 내지 H23 중 임의의 하나에 기술된 방법을 수행하게 한다.
(H25) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 H1 내지 H23 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(H26) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 H1 내지 H23 중 임의의 하나에 기술된 방법을 수행하게 한다.
(H27) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 H1 내지 H23 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(H28) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 H1 내지 H23 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(H29) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 48의 디스플레이 유닛(4801)), 터치 감응형 표면 유닛(예컨대, 도 48의 터치 감응형 표면 유닛(4803)), 및 프로세싱 유닛(예컨대, 도 48의 프로세싱 유닛(4805))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 48은 전자 디바이스(4800)와 통합된 바와 같은 디스플레이 유닛(4801) 및 터치 감응형 표면 유닛(4803)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 음성 통신 수신 유닛(예컨대, 도 48의 음성 통신 수신 유닛(4807)), 콘텐츠 항목 추출 유닛(예컨대, 도 48의 콘텐츠 항목 추출 유닛(4809)), 이용가능성 결정 유닛(예컨대, 도 48의 이용가능성 결정 유닛(4811)), 애플리케이션 식별 유닛(예컨대, 도 48의 애플리케이션 식별 유닛(4813)), 표시 유닛(예컨대, 도 48의 표시 유닛(4815)), 콘텐츠 항목 저장 유닛(예컨대, 도 48의 콘텐츠 항목 저장 유닛(4817)), 피드백 제공 유닛(예컨대, 도 48의 피드백 제공 유닛(4819)), 입력 검출 유닛(예컨대, 도 48의 입력 검출 유닛(4821)), 애플리케이션 열기 유닛(예컨대, 도 48의 수신 유닛(4823)), 채움 유닛(예컨대, 도 48의 채움 유닛(4825)), 및 음성 통신 분석 유닛(예컨대, 도 48의 음성 통신 분석 유닛(4827))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4807 내지 4827))은, (예컨대, 음성 통신 수신 유닛(4807)으로) 음성 통신의 적어도 일부분을 수신하도록 구성되고, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다. 프로세싱 유닛은 추가로, 원격 디바이스의 원격 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 (예컨대, 콘텐츠 항목 추출 유닛(4809)으로) 콘텐츠 항목을 추출하도록, 그리고 (예컨대, 이용가능성 결정 유닛(4811)으로) 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능한지 여부를 결정하도록 구성된다. 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 프로세싱 유닛은 추가로, (i) (예컨대, 애플리케이션 식별 유닛(4813)으로) 콘텐츠 항목과 연관되는 애플리케이션을 식별하도록 그리고 (ii) (예컨대, 표시 유닛(4815) 및/또는 디스플레이 유닛(4801)으로) 디스플레이 상에 콘텐츠 항목의 선택가능한 설명을 디스플레이하도록 구성된다. (예컨대, 입력 검출 유닛(4821) 및/또는 터치 감응형 표면 유닛(4803)으로) 선택가능한 설명의 선택을 검출하는 것에 응답하여, 프로세싱 유닛은 (예컨대, 콘텐츠 항목 저장 유닛(4817)으로) 식별된 애플리케이션으로 제시를 위해 콘텐츠 항목을 저장하도록 구성된다.
(H30) H29의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4907 내지 4927))은 추가로 H2 내지 H23 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(I1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 음성 통신의 적어도 일부분을 수신하는 단계를 포함하고, 음성 통신의 일부분(예컨대, 라이브 전화 통화, 녹음된 음성메일)은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다. 본 방법은 또한 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하는 단계를 포함한다. 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하는 단계에 응답하여, 본 방법은 물리적 위치에 관한 정보가 검출되었다는 표시를 제공하는 단계(예컨대, 사용자에게 햅틱 피드백을 제공하는 단계, 물리적 위치에 관한 정보를 갖는 사용자 인터페이스 객체를 디스플레이하는 단계, 또는 인근 디바이스로 그 인근 디바이스에서의 디스플레이를 위해 물리적 위치에 관한 정보를 전송하는 단계)를 포함한다. 본 방법은 추가적으로, 터치 감응형 표면을 통해, 입력을 검출하는 단계를 포함한다. 입력을 검출하는 단계에 응답하여, 본 방법은 (i) 지리적 위치 데이터를 수용하는 애플리케이션을 여는 단계; 및 (ii) 애플리케이션을 물리적 위치에 관한 정보로 채우는 단계를 포함한다. 이러한 방식으로, 사용자들은, 논의된 상세사항들 전부를 기억하고 이어서 적절한 애플리케이션에서 그러한 상세사항들을 추후에 입력할 필요 없이, 음성 통신 상에서 언급되거나 논의된 물리적 위치들에 관한 정보를 저장할 수 있다. 대신에, 전자 디바이스는 물리적 위치들을 설명하는 스피치(예컨대, 레스토랑의 설명, 물리적 위치에 대한 운전 길 안내 등)에 기초하여 물리적 위치들에 관한 정보를 검출 및 추출할 수 있고, 이어서 각각의 물리적 위치에 관한 정보가 검출되었다는 표시를 제공할 수 있다.
(I2) I1의 방법의 일부 실시예들에서, 음성 통신은 라이브 전화 통화이다.
(I3) I1의 방법의 일부 실시예들에서, 음성 통신은 라이브 페이스타임 통화이다.
(I4) I1의 방법의 일부 실시예들에서, 음성 통신은 녹음된 음성메일이다.
(I5) I1 내지 I4 중 임의의 하나의 방법의 일부 실시예들에서, 표시를 제공하는 단계는, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 물리적 위치의 선택가능한 설명을 디스플레이하는 단계를 포함한다.
(I6) I5의 방법의 일부 실시예들에서, 선택가능한 설명은 콘텐츠 항목이 음성 통신과 연관됨을 나타낸다.
(I7) I5 또는 I6의 방법의 일부 실시예들에서, 입력을 검출하는 단계는, 최근 통화들을 포함하는 사용자 인터페이스가 디스플레이되는 동안 선택가능한 설명 위에서 입력을 검출하는 단계를 포함한다.
(I8) I1 내지 I7 중 임의의 하나의 방법의 일부 실시예들에서, 표시를 제공하는 단계는, 전자 디바이스의 사용자에게 햅틱 피드백을 제공하는 단계를 포함한다.
(I9) I1 내지 I8 중 임의의 하나의 방법의 일부 실시예들에서, 표시를 제공하는 단계는, 전자 디바이스에 근접해 있는 상이한 전자 디바이스로 물리적 위치에 관한 정보를 전송하는 단계를 포함한다.
(I10) I1 내지 I9 중 임의의 하나의 방법의 일부 실시예들에서, 음성 통신이 물리적 위치를 설명하는 스피치를 포함한다고 결정하는 단계는, 물리적 위치들에 관한 정보를 검출하기 위해 음성 통신의 일부분을 분석하는 단계를 포함하고, 분석하는 단계는, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 음성 통신을 출력하면서 수행된다.
(I11) I1 내지 I10 중 임의의 하나의 방법의 일부 실시예들에서, 적어도 음성 통신의 일부분을 수신하는 단계는, 전자 디바이스의 사용자로부터 음성 통신의 일부분이 분석되어야 한다는 지시를 수신하는 단계를 포함한다.
(I12) I11의 방법의 일부 실시예들에서, 지시는 하드웨어 버튼의 선택에 대응한다. 일부 실시예들에서, 버튼은 또한, 전자 디바이스의 디스플레이 상에 사용자 선택을 위해 제시되는 버튼(예컨대, "tap here to analyze this voice communication for new content"고 말하는 음성 통신 동안 디스플레이되는 버튼)일 수 있다.
(I13) I11의 방법의 일부 실시예들에서, 지시는 단어들 "hey Siri"를 포함하는 전자 디바이스의 사용자로부터의 커맨드에 대응한다.
(I14) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 I1 내지 I13 중 임의의 하나에 기술된 방법을 수행하게 한다.
(I15) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 I1 내지 I13 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(I16) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 I1 내지 I13 중 임의의 하나에 기술된 방법을 수행하게 한다.
(I17) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 I1 내지 I13 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(I18) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 I1 내지 I13 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(I19) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 49의 디스플레이 유닛(4901)), 터치 감응형 표면 유닛(예컨대, 도 49의 터치 감응형 표면 유닛(4903)), 및 프로세싱 유닛(예컨대, 도 49의 프로세싱 유닛(4905))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 49는 전자 디바이스(4900)와 통합된 바와 같은 디스플레이 유닛(4901) 및 터치 감응형 표면 유닛(4903)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 음성 통신 수신 유닛(예컨대, 도 49의 음성 통신 수신 유닛(4907)), 콘텐츠 항목 추출 유닛(예컨대, 도 49의 콘텐츠 항목 추출 유닛(4909)), 표시 제공 유닛(예컨대, 도 49의 표시 제공 유닛(4911)), 입력 검출 유닛(예컨대, 도 49의 입력 검출 유닛(4913)), 애플리케이션 열기 유닛(예컨대, 도 49의 애플리케이션 열기 유닛(4915)), 애플리케이션 채움 유닛(예컨대, 도 49의 애플리케이션 채움 유닛(4917)), 피드백 제공 유닛(예컨대, 도 49의 피드백 제공 유닛(4919)), 및 음성 통신 분석 유닛(예컨대, 도 49의 음성 통신 분석 유닛(4921))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4907 내지 4921))은, (예컨대, 음성 통신 수신 유닛(4907)으로) 음성 통신의 적어도 일부분을 수신하도록 구성되고, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다. 프로세싱 유닛은 추가로, (예컨대, 콘텐츠 항목 추출 유닛(4909)으로) 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하도록 구성된다. 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하는 것에 응답하여, 프로세싱 유닛은 (예컨대, 콘텐츠 항목 추출 유닛(4909)으로) 물리적 위치에 관한 정보가 검출되었다는 표시를 제공하도록 구성된다. 프로세싱 유닛은 또한, 터치 감응형 표면 유닛을 통해, (예컨대, 입력 검출 유닛(4911)으로) 입력을 검출하도록 구성된다. 입력을 검출하는 것에 응답하여, 프로세싱 유닛은, (i) (예컨대, 애플리케이션 열기 유닛(4913)으로) 지리적 위치 데이터를 수용하는 애플리케이션을 열도록 그리고 (ii) (예컨대, 애플리케이션 채움 유닛(4915)으로) 애플리케이션을 물리적 위치에 관한 정보로 채우도록 구성된다.
(I20) I19의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4907 내지 4921))은 추가로 I2 내지 I13 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(J1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 디스플레이 상의 메시징 애플리케이션에서, 텍스트 입력 필드 및 대화 기록(conversation transcript)을 제시하는 단계를 포함한다. 본 방법은 또한, 메시징 애플리케이션이 디스플레이 상에 제시되는 동안, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 단계를 포함한다. 본 방법은, 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 분석하여, 분석된 콘텐츠의 일부분에 적어도 부분적으로 기초하여, 제안된 물리적 위치를 결정하는 단계를 추가로 포함한다. 본 방법은 추가적으로, 디스플레이 상의 메시징 애플리케이션 내에서, 제안된 물리적 위치를 식별하는 선택가능한 사용자 인터페이스 요소를 제시하는 단계, 및 선택가능한 사용자 인터페이스 요소의 선택을 수신하는 단계를 포함한다. 선택을 수신하는 단계에 응답하여, 본 방법은 텍스트 입력 필드에서 제안된 물리적 위치의 표현을 제시하는 단계를 포함한다. 이러한 방식으로, 전자 디바이스의 사용자는 아무것도 타이핑할 필요 없이 그리고 콘텐츠에 대해 검색할 필요 없이 필요한 콘텐츠를 편리하게 제공받는다(예컨대, 사용자는 그의 정확한 위치를 결정하기 위해 지도 애플리케이션에 액세스할 필요 없이 그의 현재 주소를 입력하도록 선택가능한 사용자 인터페이스 요소를 간단히 선택하고, 다시 메시징 애플리케이션으로 스위칭하고, 명백한 입력을 제공하여 위치 정보를 전송할 수 있다).
(J2) J1의 방법의 일부 실시예들에서, 메시징 애플리케이션은 가상 키보드를 포함하고, 선택가능한 사용자 인터페이스 요소는, 가상 키보드에 인접하게 그리고 그의 상부에 있는 제안 부분에서 디스플레이된다.
(J3) J1 또는 J2의 방법의 일부 실시예들에서, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 단계는, 대화 기록이 사용자의 현재 위치에 관한 질문을 포함함을 검출하기 위해 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 프로세싱하는 단계를 포함한다. 이러한 방식으로, 사용자는 대화 기록에서의 논의와 직접적으로 관련되는 제안된 물리적 위치를 제공받는다(예컨대, 제2 사용자의 질문 "where are you?"에 응답하여, 사용자는 사용자 인터페이스 객체를 제시받는데, 사용자 인터페이스 객체는, 선택될 때, 디바이스로 하여금 사용자의 현재 위치에 관한 정보를 제2 사용자에게 전송하게 한다).
(J4) J3의 방법의 일부 실시예들에서, 콘텐츠를 프로세싱하는 단계는, 질문(예컨대, "where are you?" 또는 "what is your home address?")을 형성하는 하나 이상의 미리정의된 키워드들을 검출하기 위해 자연 언어 프로세싱 알고리즘을 적용하는 단계를 포함한다.
(J5) J3 또는 J4의 방법의 일부 실시예들에서, 질문은 사용자와는 별개인 제2 사용자로부터 수신되는 메시지 내에 포함된다.
(J6) J1 내지 J5 중 임의의 하나의 방법의 일부 실시예들에서, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 단계는, 메시징 애플리케이션의 텍스트 입력 부분에서 사용자로부터 수신되는 타이핑 입력들을 모니터링하는 단계를 포함한다.
(J7) J1 내지 J6 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은, 사용자가 타이핑 중이고 선택가능한 사용자 인터페이스 요소를 선택하지 않았다는 결정에 따라, 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지하는 단계를 추가로 포함한다. 이러한 방식으로, 디바이스는, 사용자가 객체를 선택하는 데에 관심이 없다고 결정될 수 있는 경우 선택가능한 사용자 인터페이스 객체를 계속해서 제시하지 않는다.
(J8) J1 내지 J7 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은, 사용자가 선택가능한 사용자 인터페이스 요소를 선택하지 않을 것임을 나타내는 추가 입력을 사용자가 제공하였다는 결정에 따라, 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지하는 단계를 추가로 포함한다. 이러한 방식으로, 디바이스는, 사용자가 객체를 선택하는 데에 관심이 없다고 결정될 수 있는 경우 선택가능한 사용자 인터페이스 객체를 계속해서 제시하지 않는다.
(J9) J1 내지 J5 중 임의의 하나의 방법의 일부 실시예들에서, 제안된 물리적 위치의 표현은 전자 디바이스의 현재 지리적 위치를 식별하는 정보를 포함한다.
(J10) J1 내지 J9 중 임의의 하나의 방법의 일부 실시예들에서, 제안된 물리적 위치의 표현은 주소이다.
(J11) J1 내지 J9 중 임의의 하나의 방법의 일부 실시예들에서, 제안된 물리적 위치는 제안된 물리적 위치에 대한 식별자를 포함하는 지도 객체이다.
(J12) J1 내지 J11 중 임의의 하나의 방법의 일부 실시예들에서, 제안된 물리적 위치는, 메시징 애플리케이션 이외의 애플리케이션에서 사용자가 최근에 본 위치에 대응한다.
(J13) J1 내지 J12 중 임의의 하나의 방법의 일부 실시예들에서, 메시징 애플리케이션은 이메일 애플리케이션이다.
(J14) J1 내지 J12 중 임의의 하나의 방법의 일부 실시예들에서, 메시징 애플리케이션은 텍스트 메시징 애플리케이션이다.
(J15) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 J1 내지 J14 중 임의의 하나에 기술된 방법을 수행하게 한다.
(J16) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 J1 내지 J14 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(J17) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 J1 내지 J14 중 임의의 하나에 기술된 방법을 수행하게 한다.
(J18) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 J1 내지 J14 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(J19) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 J1 내지 J14 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(J20) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 50의 디스플레이 유닛(5001)), 터치 감응형 표면 유닛(예컨대, 도 50의 터치 감응형 표면 유닛(5003)), 및 프로세싱 유닛(예컨대, 도 50의 프로세싱 유닛(5005))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 50은 전자 디바이스(5000)와 통합된 바와 같은 디스플레이 유닛(5001) 및 터치 감응형 표면 유닛(5003)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 제시 유닛(예컨대, 도 50의 제시 유닛(5007)), 다음 입력 결정 유닛(예컨대, 도 50의 다음 입력 결정 유닛(5009)), 콘텐츠 분석 유닛(예컨대, 도 50의 콘텐츠 분석 유닛(5011)), 선택 수신 유닛(예컨대, 도 50의 선택 수신 유닛(5013)), 타이핑 입력 모니터링 유닛(예컨대, 도 50의 타이핑 입력 모니터링 유닛(5015)), 및 제시 중지 유닛(예컨대, 도 50의 제시 중지 유닛(5017))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5007 내지 5017))은, (예컨대, 제시 유닛(5007) 및/또는 디스플레이 유닛(5001)으로) 디스플레이 상의 메시징 애플리케이션에서, 텍스트 입력 필드 및 대화 기록을 제시하도록 구성된다. 메시징 애플리케이션이 디스플레이 상에 제시되는 동안, 프로세싱 유닛은 또한, (예컨대, 다음 입력 결정 유닛(5009)으로) 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하도록 구성된다. 프로세싱 유닛은 추가적으로, (예컨대, 콘텐츠 분석 유닛(5011)으로) 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 분석하여, 분석된 콘텐츠의 일부분에 적어도 부분적으로 기초하여, 제안된 물리적 위치를 결정하도록; (예컨대, 제시 유닛(5007)으로) 디스플레이 상의 메시징 애플리케이션 내에서, 제안된 물리적 위치를 식별하는 선택가능한 사용자 인터페이스 요소를 제시하도록; (예컨대, 선택 수신 유닛(5013) 및/또는 터치 감응형 표면 유닛(5003)으로) 선택가능한 사용자 인터페이스 요소의 선택을 수신하도록; 그리고 선택을 수신하는 것에 응답하여, (예컨대, 제시 유닛(5007)으로) 텍스트 입력 필드에서 제안된 물리적 위치의 표현을 제시하도록 구성된다.
(J21) J20의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5007 내지 5017))은 추가로 J2 내지 J14 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(K1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은, 제1 애플리케이션을 디스플레이하는 동안, 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보(예컨대, 지역 사업체들의 검색을 허용하는 애플리케이션에서 사용자에 의해 검색된 레스토랑)를 획득하는 단계를 포함한다. 본 방법은 또한, 제1 애플리케이션을 종료하는 단계, 및 제1 애플리케이션을 종료하는 단계 이후에, 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하는 단계를 포함한다. 일부 실시예들에서, 요청은 제1 애플리케이션에서 어떠한 입력도 수신하지 않고서 수신된다(예컨대, 요청은 제1 애플리케이션 내의 링크 또는 버튼을 클릭하는 것을 포함하지 않는다). 요청을 수신하는 단계에 응답하여 그리고 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정에 따라, 본 방법은 제2 애플리케이션을 제시하는 단계를 포함하고, 제2 애플리케이션을 제시하는 단계는, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보로 제2 애플리케이션을 채우는 단계를 포함한다. 이러한 방식으로, 사용자는 2개의 별개의 애플리케이션들 사이에서 정보를 수동으로 전송할 필요가 없다. 대신에, 디바이스는 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있음을 지능적으로 결정하고, 이어서 제1 애플리케이션에서 본 물리적 위치에 관한 정보를 제2 애플리케이션 내에 직접 채운다(예컨대, 물리적 위치에 대한 식별자를 포함하도록 제2 애플리케이션 내의 지도 객체를 채움).
(K2) K1의 방법의 일부 실시예들에서, 제2 애플리케이션을 열라는 요청을 수신하는 단계는, 제1 애플리케이션을 종료하는 단계 이후에, 제2 애플리케이션에 대한 어포던스 위에서의 입력을 검출하는 단계를 포함한다. 다시 말하면, 요청은 제1 애플리케이션 내의 링크를 클릭하는 것에 대응하지 않고, 대신에, 사용자는 제2 애플리케이션을 열라고 명백히 그리고 직접적으로 요청하고, 디바이스는 이어서, 제2 애플리케이션을, (별개의 제1 애플리케이션에서 이전에 본) 이전에 본 물리적 위치에 관한 정보로 채우도록 결정하여, 사용자가 추가로 제2 애플리케이션에서 그러한 이전에 본 물리적 위치를 연구 또는 조사할 수 있도록 한다.
(K3) K2의 방법의 일부 실시예들에서, 제2 애플리케이션에 대한 어포던스는 전자 디바이스의 홈 화면 내에 디스플레이되는 아이콘이다. 일부 실시예들에서, 홈 화면은 전자 디바이스 상에서 이용가능한 애플리케이션들을 호출하기 위한 아이콘들을 포함하는 운영 체제의 시스템-레벨 컴포넌트이다.
(K4) K2의 방법의 일부 실시예들에서, 입력을 검출하는 단계는, (i) 물리적 홈 버튼에서의 더블 탭을 검출하는 단계, (ii) 더블 탭을 검출하는 단계에 응답하여, 애플리케이션-스위칭 사용자 인터페이스를 디스플레이하는 단계, 및 (iii) 애플리케이션-스위칭 사용자 인터페이스 내로부터 어포던스의 선택을 검출하는 단계를 포함한다.
(K5) K1 내지 K4 중 임의의 하나의 방법의 일부 실시예들에서, 제2 애플리케이션을 채우는 단계는, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 단계를 포함한다.
(K6) K5의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는, 제1 물리적 위치가 제1 애플리케이션에서 최근에 보여졌다는 것을 사용자에게 알려주는 텍스트 설명을 포함한다.
(K7) K6의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 제2 애플리케이션 내에 디스플레이된 지도이고, 제2 애플리케이션을 채우는 단계는, 제1 물리적 위치의 식별자를 포함하도록 지도를 채우는 단계를 포함한다
(K8) K6 또는 K7의 방법의 일부 실시예들에서, 제2 애플리케이션에는 가상 키보드가 제시되고, 사용자 인터페이스 객체는 가상 키보드의 상부에 디스플레이된다.
(K9) K6 내지 K8 중 임의의 하나의 방법의 일부 실시예들에서, 정보를 획득하는 단계는 제2 물리적 위치에 관한 정보를 획득하는 단계를 포함하고, 사용자 인터페이스 객체를 디스플레이하는 단계는, 제2 물리적 위치에 관한 정보와 함께 사용자 인터페이스 객체를 디스플레이하는 단계를 포함한다.
(K10) K1 내지 K9 중 임의의 하나의 방법의 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정은, (i) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것; (ii) 제2 애플리케이션이 지도 상에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 것; (iii) 제2 애플리케이션이 지리적 위치 정보를 사용하여 경로 안내를 가능하게 할 수 있다고 결정하는 것; 및 (iv) 제2 애플리케이션이 지리적 위치 정보를 사용하여 운송 서비스들을 찾아내고 제공할 수 있다고 결정하는 것 중 하나 이상을 포함한다.
(K11) K10의 방법의 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정은, 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것을 포함하고, 입력 수신 필드는, 제2 애플리케이션 내에 디스플레이되는 지도 내의 검색을 허용하는 검색 상자이다.
(K12) K1 내지 K11 중 임의의 하나의 방법의 일부 실시예들에서, 본 방법은, 요청을 수신하는 단계에 응답하여, 사용자에 대한 애플리케이션 사용 이력에 기초하여, 제2 애플리케이션이 제1 애플리케이션과 연관되는지(예컨대, 제1 애플리케이션을 연 후에 임계 횟수로 열렸는지) 여부를 결정하는 단계를 추가로 포함한다.
(K13) K12의 방법의 일부 실시예들에서, 본 방법은 제2 애플리케이션을 제시하는 단계 이전에, 제1 물리적 위치를 식별하는 정보에의 액세스를 제2 애플리케이션에 제공하는 단계를 추가로 포함하고, 액세스가 제공되기 전에, 제2 애플리케이션은 제1 물리적 위치를 식별하는 정보에 액세스할 수 없었다. 이러한 방식으로, 제2 애플리케이션은 제1 애플리케이션에서 사용자에 의해 수행된 액션들에 관한 정보를 수신할 수 있어서, 사용자는 이어서 제2 애플리케이션 내에서 그 정보를 사용하는(예컨대, 제1 물리적 위치에 관한 추가 정보에 대해 검색하거나, 또는 승차 공유(ride-sharing) 서비스와 같은, 제2 애플리케이션을 통하여 이용가능한 일부 서비스에 대해 제1 물리적 위치를 사용하는) 방식을 제공받게 된다.
(K14) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 K1 내지 K13 중 임의의 하나에 기술된 방법을 수행하게 한다.
(K15) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 K1 내지 K13 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(K16) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 K1 내지 K13 중 임의의 하나에 기술된 방법을 수행하게 한다.
(K17) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 K1 내지 K13 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(K18) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 K1 내지 K13 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(K19) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 51의 디스플레이 유닛(5101)), 터치 감응형 표면 유닛(예컨대, 도 51의 터치 감응형 표면 유닛(5103)), 및 프로세싱 유닛(예컨대, 도 51의 프로세싱 유닛(5105))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 51은 전자 디바이스(5100)와 통합된 바와 같은 디스플레이 유닛(5101) 및 터치 감응형 표면 유닛(5103)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 정보 획득 유닛(예컨대, 도 51의 정보 획득 유닛(5107)), 애플리케이션 종료 유닛(예컨대, 도 51의 애플리케이션 종료 유닛(5109)), 요청 수신 유닛(예컨대, 도 51의 요청 수신 유닛(5111)), 애플리케이션 능력 결정 유닛(예컨대, 도 51의 애플리케이션 능력 결정 유닛(5113)), 애플리케이션 제시 유닛(예컨대, 도 51의 애플리케이션 제시 유닛(5115)), 애플리케이션 채움 유닛(예컨대, 도 51의 애플리케이션 채움 유닛(5117)), 입력 검출 유닛(예컨대, 도 51의 입력 검출 유닛(5119)), 애플리케이션-스위칭 사용자 인터페이스 표시 유닛(예컨대, 도 51의 애플리케이션-스위칭 사용자 인터페이스 표시 유닛(5121)), 애플리케이션 연관성 결정 유닛(예컨대, 도 51의 애플리케이션 연관성 결정 유닛(5123)), 및 액세스 제공 유닛(예컨대, 도 51의 액세스 제공 유닛(5125))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5107 내지 5125))은, 제1 애플리케이션을 디스플레이하는 동안, (예컨대, 정보 획득 유닛(5107)으로) 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하도록 구성된다. 프로세싱 유닛은 또한, (예컨대, 애플리케이션 종료 유닛(5109)으로) 제1 애플리케이션을 종료하도록, 그리고 제1 애플리케이션을 종료한 후에, (예컨대, 요청 수신 유닛(5111)으로) 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하도록 구성된다. 요청을 수신하는 것에 응답하여 그리고 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정(예컨대, 애플리케이션 능력 결정 유닛(5113)에 의해 프로세싱되거나 수행된 결정)에 따라, (예컨대, 애플리케이션 제시 유닛(5115)으로) 제2 애플리케이션을 제시하도록, 제2 애플리케이션을 제시하는 것은, (예컨대, 애플리케이션 채움 유닛(5117)으로) 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보로 제2 애플리케이션을 채우는 것을 포함한다.
(K20) K19의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5107 내지 5125))은 추가로 K2 내지 K13 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(L1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하는 단계 및 제1 입력을 검출하는 단계를 포함한다. 제1 입력을 검출하는 단계에 응답하여, 본 방법은, (i) 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하는 단계, 및 (ii) 디스플레이의 적어도 일부분 위에서, 제1 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열기 위한 제안으로, 제1 애플리케이션과는 별개인 어포던스를 제시하는 단계를 포함한다. 본 방법은 또한 어포던스에서의 제2 입력을 검출하는 단계를 포함한다. 어포던스에서의 제2 입력을 검출하는 단계에 응답하여, (i) 제2 애플리케이션을 여는 단계, 및 (ii) 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하도록 제2 애플리케이션을 채우는 단계.
상기 K1과 연관된 동작들과 비교하면, L1과 연관된 동작들은, 사용자에게 제1 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열라는 제안을 제공하기 전에 제2 애플리케이션을 열라는 특정 요청을 사용자로부터 수신하지 않는다. 이러한 방식으로, 상기 K1 및 L1 양쪽 모두와 연관된 동작들(및 이러한 방법들 각각으로부터의 일부 프로세싱 단계들을 사용하는 그의 조합들)을 제공함으로써, 전자 디바이스는, 사용자가 지리적 위치 정보를 수용할 수 있는 애플리케이션을 열기 전 또는 후에 위치 데이터를 예측적으로 사용하는 것을 허용하는 효율적인 사용자 경험을 제공할 수 있다. 추가적으로, L1에 의하면, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정은, 심지어 제2 애플리케이션을 열기 전에 수행되고, 이러한 방식으로, 입력이 애플리케이션-스위칭 사용자 인터페이스를 열라는 요청에 대응하는 L1의 실시예들에서, 애플리케이션-스위칭 사용자 인터페이스는, 그 앱이 위치 데이터를 수용할 수 있다는 것이 알려져 있는 경우 제1 물리적 위치에 관한 정보와 함께 애플리케이션들(예컨대, 제2 애플리케이션)을 열라는 제안들만을 디스플레이한다.
(L2) L1의 방법의 일부 실시예들에서, 제1 입력은 애플리케이션-스위칭 사용자 인터페이스를 열라는 요청에 대응한다(예컨대, 제1 입력은 전자 디바이스의 물리적 홈 버튼 상의 더블 탭이다).
(L3) L2의 방법의 일부 실시예들에서, 어포던스는 애플리케이션-스위칭 사용자 인터페이스 내에 제시된다.
(L4) L3의 방법의 일부 실시예들에서, 어포던스를 제시하는 단계는, 어포던스를 제시하는 것과 함께, 전자 디바이스 상에서 실행 중인 애플리케이션들의 표현들(예컨대, 애플리케이션에 대한 애플리케이션 콘텐츠의 스냅샷들)을 애플리케이션-스위칭 사용자 인터페이스 내에 제시하는 단계; 및 애플리케이션들의 표현들의 하부에 위치되는 디스플레이의 영역에서 어포던스를 제시하는 단계를 포함한다.
(L5) L1의 방법의 일부 실시예들에서, 제1 입력은 전자 디바이스의 홈 화면을 열라는 요청에 대응한다(예컨대, 제1 입력은 전자 디바이스의 물리적 홈 버튼 상의 단일 탭이다).
(L6) L5의 방법의 일부 실시예들에서, 어포던스는 홈 화면의 일부분 위에 제시된다.
(L7) L1 내지 L6 중 임의의 하나의 방법의 일부 실시예들에서, 제안은 제2 애플리케이션과 연관된 유형에 특정한 텍스트 설명을 포함한다.
(L8) L1 내지 L7 중 임의의 하나의 방법의 일부 실시예들에서, 제2 애플리케이션을 채우는 단계는, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 단계를 포함한다.
(L9) L8의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는, 제1 물리적 위치가 제1 애플리케이션에서 최근에 보여졌다는 것을 사용자에게 알려주는 텍스트 설명을 포함한다.
(L10) L9의 방법의 일부 실시예들에서, 사용자 인터페이스 객체는 제2 애플리케이션 내에 디스플레이된 지도이고, 제2 애플리케이션을 채우는 단계는, 제1 물리적 위치의 식별자를 포함하도록 지도를 채우는 단계를 포함한다
(L11) L9 또는 L10의 방법의 일부 실시예들에서, 제2 애플리케이션에는 가상 키보드가 제시되고, 사용자 인터페이스 객체는 가상 키보드의 상부에 디스플레이된다.
(L12) L1 내지 L11 중 임의의 하나의 방법의 일부 실시예들에서, 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하는 단계는, (i) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 단계; (ii) 제2 애플리케이션이 지도 상에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 단계; (iii) 제2 애플리케이션이 지리적 위치 정보를 사용하여 경로 안내를 가능하게 할 수 있다고 결정하는 단계; 및 (iv) 제2 애플리케이션이 지리적 위치 정보를 사용하여 운송 서비스들을 찾아내고 제공할 수 있다고 결정하는 단계 중 하나 이상을 포함한다.
(L13) L12의 방법의 일부 실시예들에서, 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하는 단계는, 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 단계를 포함하고, 입력 수신 필드는, 제2 애플리케이션 내에 디스플레이되는 지도 내의 검색을 허용하는 검색 상자이다.
(L14) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 L1 내지 L13 중 임의의 하나에 기술된 방법을 수행하게 한다.
(L15) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 L1 내지 L13 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(L16) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 L1 내지 L13 중 임의의 하나에 기술된 방법을 수행하게 한다.
(L17) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 L1 내지 L13 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(L18) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 L1 내지 L13 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(L19) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 52의 디스플레이 유닛(5201)), 터치 감응형 표면 유닛(예컨대, 도 52의 터치 감응형 표면 유닛(5203)), 및 프로세싱 유닛(예컨대, 도 52의 프로세싱 유닛(5205))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 52는 전자 디바이스(5200)와 통합된 바와 같은 디스플레이 유닛(5201) 및 터치 감응형 표면 유닛(5203)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 정보 획득 유닛(예컨대, 도 52의 정보 획득 유닛(5207)), 입력 검출 유닛(예컨대, 도 52의 입력 검출 유닛(5209)), 애플리케이션 식별 유닛(예컨대, 도 52의 애플리케이션 식별 유닛(5211)), 어포던스 제시 유닛(예컨대, 도 52의 어포던스 제시 유닛(5213)), 애플리케이션 열기 유닛(예컨대, 도 52의 애플리케이션 열기 유닛(5215)), 애플리케이션 채움 유닛(예컨대, 도 52의 애플리케이션 채움 유닛(5217)), 애플리케이션-스위칭 사용자 인터페이스 제시 유닛(예컨대, 도 52의 애플리케이션-스위칭 사용자 인터페이스 제시 유닛(5219)), 및 애플리케이션 능력 결정 유닛(예컨대, 도 52의 애플리케이션 능력 결정 유닛(5221))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5207 내지 5221))은 (예컨대, 정보 획득 유닛(5207)으로) 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하도록 그리고 (예컨대, 입력 검출 유닛(5209)으로) 제1 입력을 검출하도록 구성된다. 제1 입력을 검출하는 것에 응답하여, 프로세싱 유닛은, (i) (예컨대, 애플리케이션 식별 유닛(5209)으로) 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하도록, 그리고 (ii) (예컨대, 어포던스 제시 유닛(5213)으로) 디스플레이의 적어도 일부분 위에서, 제1 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열기 위한 제안으로, 제1 애플리케이션과는 별개인 어포던스를 제시하도록 구성된다. 프로세싱 유닛은 또한, (예컨대, 입력 검출 유닛(5209)으로) 어포던스에서의 제2 입력을 검출하도록 구성된다. 어포던스에서의 제2 입력을 검출하는 것에 응답하여, 프로세싱 유닛은, (i) (예컨대, 애플리케이션 열기 유닛(5215)으로) 제2 애플리케이션을 열도록, 그리고 (ii) (예컨대, 애플리케이션 채움 유닛(5217)으로) 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하도록 제2 애플리케이션을 채우도록 구성된다.
(L20) L19의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5207 내지 5221))은 추가로 L2 내지 L13 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(M1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 전자 디바이스 상에서 실행 중인 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하는 단계를 포함한다. 본 방법은 또한 사용자가 차량에 탔다고 결정하는 단계를 포함한다. 사용자가 차량에 탔다고 결정하는 단계에 응답하여, 본 방법은 사용자에게 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 프롬프트를 제공하는 단계를 포함한다. 프롬프트를 제공하는 단계에 응답하여, 본 방법은 사용자로부터 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 지시를 수신하는 단계를 포함한다. 본 방법은 제1 물리적 위치로의 경로 안내를 가능하게 하는 단계를 추가로 포함한다. 이러한 방식으로, 사용자들은 그들이 전자 디바이스 상의 애플리케이션들에서 이전에 보고 있던 물리적 위치들에 기초하여 목적지들을 라우팅하기 위한 제안들을 편리하게 제공받는다.
(M2) M1의 방법의 일부 실시예들에서, 본 방법은, 전자 디바이스에 의해 메시지가 수신되었음을 검출하는 단계 - 메시지가 제2 물리적 위치를 식별하는 정보를 포함함을 검출하는 단계를 포함함 -; 및 검출하는 단계에 응답하여, 사용자에게 제2 물리적 위치를 경로 안내를 위한 새로운 목적지로서 사용하라는 새로운 프롬프트를 제공하는 단계를 추가로 포함한다. 이러한 방식으로, 사용자들은 또한 메시지들 내에 포함된 정보(예컨대, 텍스트들, 이메일들, 음성메일들 등)에 기초하여 경로 안내를 위해 웨이포인트(waypoint)들을 동적으로 추가하거나 새로운 목적지들을 추가할 수 있다.
(M3) M2의 방법의 일부 실시예들에서, 본 방법은, 사용자로부터 제2 물리적 위치를 새로운 목적지로서 사용하라는 지시를 수신하는 것에 응답하여, 제2 물리적 위치로의 경로 안내를 가능하게 하는 단계를 추가로 포함한다.
(M4) M2 또는 M3의 방법의 일부 실시예들에서, 메시지가 제2 물리적 위치를 식별하는 정보를 포함함을 검출하는 단계는, 전자 디바이스 상에서 이용가능한 가상 어시스턴트가, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 사용자에게 메시지를 읽어 주는 동안 검출을 수행하는 단계를 포함한다. 이러한 방식으로, 사용자가 (예컨대, 전자 디바이스를 통해 이용가능한 개인 어시스턴트를 통해) 오디오 시스템에 의해 판독되고 있는 메시지를 듣고 있을 때, 전자 디바이스는 제2 물리적 위치를 식별하는 그 정보를 검출하고, 그 검출된 정보를 사용하여 제2 물리적 위치를 새로운 목적지로서 사용할 것을 제안한다. 따라서, 사용자는 운전 중 그의 관심을 도로에서 벗어나게 할 필요가 없지만, 여전히 경로 안내 설정들 및 목적지들을 동적으로 조정할 수 있다.
(M5) M2 내지 M4 중 임의의 하나의 방법의 일부 실시예들에서, 사용자가 차량에 탔다고 결정하는 단계는, 전자 디바이스가 차량과의 통신 링크를 확립했음을 검출하는 단계를 포함한다.
(M6) M2 내지 M5 중 임의의 하나의 방법의 일부 실시예들에서, 경로 안내를 가능하게 하는 단계는, 전자 디바이스의 디스플레이를 통해 경로 안내를 제공하는 단계를 포함한다.
(M7) M2 내지 M5 중 임의의 하나의 방법의 일부 실시예들에서, 경로 안내를 가능하게 하는 단계는, 제1 물리적 위치를 식별하는 정보를 차량으로 전송하는 단계를 포함한다.
(M8) M2 내지 M7 중 임의의 하나의 방법의 일부 실시예들에서, 경로 안내를 가능하게 하는 단계는, 전자 디바이스와 통신 상태에 있는 오디오 시스템(예컨대, 차량의 스피커들 또는 디바이스 자신의 내부 스피커들)을 통해 경로 안내를 제공하는 단계를 포함한다.
(M9) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 M1 내지 M8 중 임의의 하나에 기술된 방법을 수행하게 한다.
(M10) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 M1 내지 M8 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(M11) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 M1 내지 M8 중 임의의 하나에 기술된 방법을 수행하게 한다.
(M12) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 M1 내지 M8 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(M13) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 M1 내지 M8 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(M14) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 53의 디스플레이 유닛(5301)), 터치 감응형 표면 유닛(예컨대, 도 53의 터치 감응형 표면 유닛(5303)), 및 프로세싱 유닛(예컨대, 도 53의 프로세싱 유닛(5305))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 53은 전자 디바이스(5300)와 통합된 바와 같은 디스플레이 유닛(5301) 및 터치 감응형 표면 유닛(5303)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은, 정보 획득 유닛(예컨대, 도 53의 정보 획득 유닛(5307)), 차량 탑승 결정 유닛(vehicle entry determining unit)(예컨대, 도 53의 차량 탑승 결정 유닛(5309)), 프롬프트 제공 유닛(예컨대, 도 53의 프롬프트 제공 유닛(5311)), 지시 수신 유닛(예컨대, 도 53의 지시 수신 유닛(5313)), 경로 안내 가능화 유닛(예컨대, 도 53의 경로 안내 가능화 유닛(5315)), 및 메시지 검출 유닛(예컨대, 도 53의 메시지 검출 유닛(5317))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5307 내지 5317))은, (예컨대, 정보 획득 유닛(5307)으로) 전자 디바이스 상에서 실행 중인 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하도록 구성된다. 프로세싱 유닛은 또한, (예컨대, 차량 탑승 결정 유닛(5309)으로) 사용자가 차량에 탔다고 결정하도록 구성된다. 사용자가 차량에 탔다고 결정하는 것에 응답하여, 프로세싱 유닛은, (예컨대, 프롬프트 제공 유닛(5311)으로) 사용자에게 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 프롬프트를 제공하도록, 프롬프트를 제공하는 것에 응답하여, (예컨대, 지시 수신 유닛(5313)으로) 사용자로부터 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 지시를 수신하도록 구성된다. 프로세싱 유닛은 추가적으로, (예컨대, 경로 안내 가능화 유닛(5307)으로) 제1 물리적 위치로의 경로 안내를 가능하게 하도록 구성된다.
(M15) M14의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5307 내지 5317))은 추가로 M2 내지 M8 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(N1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은 제1 애플리케이션에서 콘텐츠를 제시하는 단계를 포함한다. 본 방법은 또한, 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하는 단계를 포함하고, 제2 애플리케이션은 입력 수신 필드를 포함한다. 요청을 수신하는 단계에 응답하여, 본 방법은 입력 수신 필드를 갖는 제2 애플리케이션을 제시하는 단계를 포함한다. 입력 수신 필드에서 임의의 사용자 입력을 수신하기 전에, 본 방법은, 사용자가 콘텐츠의 적어도 일부분을 입력 수신 필드 내에 붙여넣을 수 있게 하기 위한 선택가능한 사용자 인터페이스 객체를 제공하는 단계를 포함한다. 선택가능한 사용자 인터페이스 객체의 선택을 검출하는 것에 응답하여, 본 방법은 콘텐츠의 일부분을 입력 수신 필드 내에 붙여넣는 단계를 포함한다. 이러한 방식으로, 사용자들은 제1 액션에서 이전에 본 콘텐츠에 기초하여 제2 애플리케이션 내의 사전행동적 붙여넣기 액션들을 제공받는다(예컨대, 이것은 사용자들이, 제1 애플리케이션을 다시 열고, 명백한 복사 액션을 수행하고, 제2 애플리케이션을 다시 열고, 이어서 복사된 콘텐츠를 제2 애플리케이션 내에 붙여넣으라고 명백하게 요청할 필요 없이 콘텐츠를 제2 애플리케이션 내에 붙여넣을 수 있게 한다).
(N2) N1의 방법의 일부 실시예들에 따르면, 본 방법은, 선택가능한 사용자 인터페이스 객체를 제공하는 단계 이전에, 입력 수신 필드를 콘텐츠의 일부분을 수용할 수 있는 필드로서 식별하는 단계를 포함한다.
(N3) N2의 방법의 일부 실시예들에 따르면, 입력 수신 필드를 콘텐츠의 일부분을 수용할 수 있는 필드로서 식별하는 단계는, 입력 수신 필드의 선택을 검출하는 것에 응답하여 수행된다.
(N4) N1 내지 N3 중 임의의 하나의 방법의 일부 실시예들에 따르면, 콘텐츠의 일부분은 이미지에 대응한다.
(N5) N1 내지 N3 중 임의의 하나의 방법의 일부 실시예들에 따르면, 콘텐츠의 일부분은 텍스트 콘텐츠에 대응한다.
(N6) N1 내지 N3 중 임의의 하나의 방법의 일부 실시예들에 따르면, 콘텐츠의 일부분은 텍스트 콘텐츠 및 이미지에 대응한다.
(N7) N1 내지 N6 중 임의의 하나의 방법의 일부 실시예들에 따르면, 제1 애플리케이션은 웹 브라우징 애플리케이션이고, 제2 애플리케이션은 메시징 애플리케이션이다.
(N8) N1 내지 N6 중 임의의 하나의 방법의 일부 실시예들에 따르면, 제1 애플리케이션은 사진 탐색 애플리케이션이고, 제2 애플리케이션은 메시징 애플리케이션이다.
(N9) N1 내지 N8 중 임의의 하나의 방법의 일부 실시예들에 따르면, 본 방법은, 제2 애플리케이션을 열라는 요청을 수신하는 단계 이전에, 콘텐츠의 적어도 일부분을 복사하라는 요청을 수신하는 단계를 포함한다.
(N10) N1 내지 N9 중 임의의 하나의 방법의 일부 실시예들에 따르면, 선택가능한 사용자 인터페이스 객체는, 콘텐츠의 일부분이 제1 애플리케이션에서 최근에 보여졌다는 표시와 함께 디스플레이된다. 이러한 방식으로, 사용자는 붙여넣기 제안이 이루어지는 이유에 대한 명확한 표시를 제공받는다.
(N11) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 N1 내지 N10 중 임의의 하나에 기술된 방법을 수행하게 한다.
(N12) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 N1 내지 N10 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(N13) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 N1 내지 N10 중 임의의 하나에 기술된 방법을 수행하게 한다.
(N14) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 N1 내지 N10 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(N15) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 N1 내지 N10 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(N16) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 54의 디스플레이 유닛(5401)), 터치 감응형 표면 유닛(예컨대, 도 54의 터치 감응형 표면 유닛(5403)), 및 프로세싱 유닛(예컨대, 도 54의 프로세싱 유닛(5405))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 54는 전자 디바이스(5400)와 통합된 바와 같은 디스플레이 유닛(5401) 및 터치 감응형 표면 유닛(5403)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 제시 유닛(예컨대, 도 54의 제시 유닛(5407)), 요청 수신 유닛(예컨대, 도 54의 요청 수신 유닛(5409)), 사용자 인터페이스 객체 제공 유닛(예컨대, 도 54의 사용자 인터페이스 객체 제공 유닛(5411)), 사전행동적 붙여넣기 유닛(예컨대, 도 54의 사전행동적 붙여넣기 유닛(5413)), 및 능력 결정 유닛(예컨대, 도 54의 능력 결정 유닛(5415))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5407 내지 5415))은, (예컨대, 제시 유닛(5407) 및/또는 디스플레이 유닛(5401)으로) 제1 애플리케이션에서 콘텐츠를 제시하도록; (예컨대, 요청 수신 유닛 및/또는 터치 감응형 표면 유닛(5403)으로) 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하도록 - 제2 애플리케이션은 입력 수신 필드를 포함함 -; 요청을 수신하는 것에 응답하여, (예컨대, 제시 유닛(5407) 및/또는 디스플레이 유닛(5401)으로) 입력 수신 필드를 갖는 제2 애플리케이션을 제시하도록; 입력 수신 필드에서 임의의 사용자 입력을 수신하기 전에, (예컨대, 사용자 인터페이스 객체 제공 유닛(5411) 및/또는 디스플레이 유닛(5401)으로) 사용자가 콘텐츠의 적어도 일부분을 입력 수신 필드 내에 붙여넣을 수 있게 하기 위한 선택가능한 사용자 인터페이스 객체를 제공하도록; 그리고 선택가능한 사용자 인터페이스 객체의 선택을 검출하는 것에 응답하여, (예컨대, 사전행동적 붙여넣기 유닛(5413)으로) 콘텐츠의 일부분을 입력 수신 필드 내에 붙여넣도록 구성된다.
(N17) N16의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5407 내지 5415))은 추가로 N1 내지 N10 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
(O1) 일부 실시예들에 따르면, 방법은 터치 감응형 표면 및 디스플레이(일부 실시예들에서, 도 1c의 터치 스크린(112)에 대해 도시되어 있는 바와 같이, 터치 감응형 표면 및 디스플레이는 통합됨)를 갖는 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100))에서 수행된다. 본 방법은, 디스플레이 상에서, 애플리케이션과 연관되는 텍스트 콘텐츠를 제시하는 단계를 포함한다. 본 방법은 또한, 텍스트 콘텐츠의 일부분이 (i) 위치, (ii) 연락처, 또는 (iii) 이벤트와 관련하여된다고 결정하는 단계를 포함한다. 텍스트 콘텐츠의 일부분이 위치에 관련된다고 결정할 시에, 본 방법은 전자 디바이스 상의 위치 센서로부터 위치 정보를 획득하는 단계 및 획득된 위치 정보를 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하는 단계를 포함한다. 텍스트 콘텐츠의 일부분이 연락처에 관련된다고 결정할 시에, 본 방법은, 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 연락처 정보에 대한 검색을 수행하는 단계, 및 검색을 통해 인출되는, 적어도 하나의 연락처와 연관된 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하는 단계를 포함한다. 텍스트 콘텐츠의 일부분이 이벤트에 관련된다고 결정할 시에, 본 방법은, 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 이벤트 정보에 대한 새로운 검색을 수행하는 단계, 및 새로운 검색을 통해 인출되는, 적어도 하나의 이벤트에 적어도 부분적으로 기초하는 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하는 단계를 포함한다. 본 방법은, 애플리케이션 내에서, 예측된 콘텐츠 항목을 포함하는 어포던스를 디스플레이하는 단계; 터치 감응형 표면을 통해, 어포던스의 선택을 검출하는 단계; 및 선택을 검출하는 단계에 응답하여, 텍스트 콘텐츠에 인접하게 디스플레이 상에 예측된 콘텐츠 항목과 연관된 정보를 디스플레이하는 단계를 추가로 포함한다. 이러한 방식으로, 사용자들은, 아무것도 타이핑할 필요 없이 그리고 원하는 정보를 찾기 위해 전자 디바이스 상에서 이용가능한 정보를 조사할 필요 없이, 진술들을 완료하는 데(또는, 예컨대, 메시징 애플리케이션에서, 다른 사용자들이 제기한 질문들에 응답하는 데) 사용될 수 있는 예측된 콘텐츠 항목들을 편리하게 제공받는다. 예를 들어, 전자 디바이스는 전화 번호들, 현재 위치들, 새로운 이벤트들을 스케줄링하는 것에 대한 이용가능성, 기존의 이벤트들과 연관된 상세사항들을 제공하는데, 이들 모두는 사용자에 의한 어떠한 명백한 요청 또는 추가의 노력을 요구하지 않으므로, 사용자들에게 원하는 정보가 효율적으로 제공되는 것을 여전히 보장하면서, 시간을 절약한다.
(O2) O1의 방법의 일부 실시예들에 따르면, 텍스트 콘텐츠의 일부분은 애플리케이션 내에서 가장 최근에 제시된 텍스트 콘텐츠에 대응한다.
(O3) O1 또는 O2의 방법의 일부 실시예들에 따르면, 애플리케이션은 메시징 애플리케이션이고, 텍스트 콘텐츠의 일부분은 전자 디바이스와는 별개인 원격 디바이스의 원격 사용자로부터 메시징 애플리케이션에서 수신된 질문이다.
(O4) O1 또는 O2의 방법의 일부 실시예들에 따르면, 텍스트 콘텐츠의 일부분은 애플리케이션 내의 입력 수신 필드에서 전자 디바이스의 사용자에 의해 제공된 입력이다.
(O5) O1의 방법의 일부 실시예들에 따르면, 텍스트 콘텐츠의 일부분은, 텍스트 콘텐츠의 일부분을 포함하는 사용자 인터페이스 객체를 선택하는 사용자 입력에 응답하여 식별된다.
(O6) O5의 방법의 일부 실시예들에 따르면, 애플리케이션은 메시징 애플리케이션이고, 사용자 인터페이스 객체는 메시징 애플리케이션 내에 디스플레이되는 대화에서의 메시징 풍선이다.
(O7) O5 또는 O6의 방법의 일부 실시예들에 따르면, 본 방법은, 제2 사용자 인터페이스 객체의 선택을 검출하는 단계; 선택을 검출하는 단계에 응답하여, (i) 예측된 콘텐츠 항목을 갖는 어포던스를 디스플레이하는 것을 중지하는 단계, 및 (ii) 제2 사용자 인터페이스 객체와 연관된 텍스트 콘텐츠가 위치, 연락처, 또는 이벤트에 관련된다고 결정하는 단계; 및 결정하는 단계에 따라, 애플리케이션 내에 새로운 예측된 콘텐츠 항목을 디스플레이하는 단계를 추가로 포함한다. 이러한 방식으로, 사용자들은 이전에 수신된 메시지들을 선택하기 위해 메시징 대화에서 쉽게 되돌아갈 수 있고, 적절한 예측된 콘텐츠 항목들을 여전히 제공받을 수 있다.
(O8) O1 내지 O7 중 임의의 하나의 방법의 일부 실시예들에 따르면, 어포던스는 애플리케이션 내의 가상 키보드에 인접한 입력 수신 필드에 디스플레이된다.
(O9) O8의 방법의 일부 실시예들에 따르면, 입력 수신 필드는 가상 키보드에서 수신되는 타이핑 입력들을 디스플레이하는 필드이다.
(O10) O1 내지 O9 중 임의의 하나의 방법의 일부 실시예들에 따르면, 결정하는 단계는, 연락처, 이벤트, 및/또는 위치에 관련된다고 알려져 있는 저장된 패턴들을 검출하기 위해 텍스트 콘텐츠가 애플리케이션에 의해 수신될 때 텍스트 콘텐츠를 파싱(parsing)하는 단계를 포함한다.
(O11) 다른 태양에서, 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 터치 감응형 표면, 디스플레이, 하나 이상의 프로세서들, 및 하나 이상의 프로그램들을 저장하는 메모리를 포함하고, 하나 이상의 프로그램들은, 하나 이상의 프로세서들에 의해 실행될 때, 전자 디바이스로 하여금 O1 내지 O10 중 임의의 하나에 기술된 방법을 수행하게 한다.
(O12) 또 다른 태양에서, 전자 디바이스가 제공되고, 전자 디바이스는 터치 감응형 표면, 디스플레이, 및 O1 내지 O10 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(O13) 또 다른 태양에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공된다. 비일시적인 컴퓨터 판독가능 저장 매체는 실행가능한 명령어들을 저장하고, 실행가능한 명령어들은, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 전자 디바이스로 하여금 O1 내지 O10 중 임의의 하나에 기술된 방법을 수행하게 한다.
(O14) 또 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 갖는 전자 디바이스 상의 그래픽 사용자 인터페이스가 제공된다. 일부 실시예들에서, 그래픽 사용자 인터페이스는 O1 내지 O10 중 임의의 하나에 기술된 방법에 따라 디스플레이되는 사용자 인터페이스들을 포함한다.
(O15) 하나의 추가 태양에서, 터치 감응형 표면 및 디스플레이를 포함하는 전자 디바이스에서 사용하기 위한 정보 프로세싱 장치가 제공된다. 정보 프로세싱 장치는 O1 내지 O10 중 임의의 하나에 기술된 방법을 수행하기 위한 수단을 포함한다.
(O16) 하나의 추가적인 태양에서, 디스플레이 유닛(예컨대, 도 55의 디스플레이 유닛(5501)), 터치 감응형 표면 유닛(예컨대, 도 55의 터치 감응형 표면 유닛(5503)), 및 프로세싱 유닛(예컨대, 도 55의 프로세싱 유닛(5505))을 포함하는 전자 디바이스가 제공된다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 55는 전자 디바이스(5500)와 통합된 바와 같은 디스플레이 유닛(5501) 및 터치 감응형 표면 유닛(5503)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 제시 유닛(예컨대, 도 55의 제시 유닛(5507)), 결정 유닛(예컨대, 도 55의 결정 유닛(5509)), 획득 유닛(예컨대, 도 55의 획득 유닛(5511)), 검색 수행 유닛(예컨대, 도 55의 검색 수행 유닛(5513)), 정보 준비 유닛(예컨대, 도 55의 정보 준비 유닛(5515)), 어포던스 표시 유닛(예컨대, 도 55의 어포던스 표시 유닛(5517)), 및 검출 유닛(예컨대, 도 55의 검출 유닛(5519))을 포함한다. 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5507 내지 5519))은, (예컨대, 제시 유닛(5507) 및/또는 디스플레이 유닛(5501)으로) 디스플레이 상에서, 애플리케이션과 연관되는 텍스트 콘텐츠를 제시하도록; (예컨대, 결정 유닛(5509)으로) 텍스트 콘텐츠의 일부분이 (i) 위치, (ii) 연락처, 또는 (iii) 이벤트에 관련된다고 결정하도록; 텍스트 콘텐츠의 일부분이 위치에 관련된다고 결정할 시에, (예컨대, 획득 유닛(5511)으로) 전자 디바이스 상의 위치 센서로부터 위치 정보를 획득하도록 그리고 (예컨대, 정보 준비 유닛(5515)으로) 획득된 위치 정보를 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하도록; 텍스트 콘텐츠의 일부분이 연락처에 관련된다고 결정할 시에, (예컨대, 검색 수행 유닛(5513)으로) 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 연락처 정보에 대한 검색을 수행하도록 그리고 (예컨대, 정보 준비 유닛(5515)으로) 검색을 통해 인출되는, 적어도 하나의 연락처와 연관된 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하도록; 텍스트 콘텐츠의 일부분이 이벤트에 관련된다고 결정할 시에, (예컨대, 검색 수행 유닛(5513)으로) 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 이벤트 정보에 대한 새로운 검색을 수행하도록 그리고 (예컨대, 정보 준비 유닛(5515)으로) 새로운 검색을 통해 인출되는, 적어도 하나의 이벤트에 적어도 부분적으로 기초하는 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하도록; (예컨대, 어포던스 표시 유닛(5517) 및/또는 디스플레이 유닛(5501)으로) 애플리케이션 내에서, 예측된 콘텐츠 항목을 포함하는 어포던스를 디스플레이하도록; (예컨대, 검출 유닛(5519)으로) 터치 감응형 표면을 통해, 어포던스의 선택을 검출하도록; 그리고 선택을 검출하는 것에 응답하여, (예컨대, 제시 유닛(5507) 및/또는 디스플레이 유닛(5501)으로) 텍스트 콘텐츠에 인접하게 디스플레이 상에 예측된 콘텐츠 항목과 연관된 정보를 디스플레이하도록 구성된다.
(O17) O16의 전자 디바이스의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5507 내지 5519))은 추가로 O1 내지 O10 중 임의의 하나에 기술된 방법을 수행하도록 구성된다.
위에서 (그리고 아래에서 더욱 상세하게) 기술되는 바와 같이, 본 기술의 하나의 태양은 사용자들에게 관심 대상일 수 있는 콘텐츠의 사용자들에게로의 전달을 개선하기 위해 다양한 소스들로부터 입수가능한 (예컨대, 음성 통신들 동안 제공되는 스피치에 기초하는) 데이터의 수집 및 사용이다. 본 개시내용은, 일부 경우들에 있어서, 이러한 수집된 데이터가 특정 개인을 고유하게 식별하거나 또는 그와 연락하거나 그의 위치를 확인하는 데 이용될 수 있는 개인 정보 데이터를 포함할 수 있음을 고려한다. 그러한 개인 정보 데이터는 인구통계 데이터, 위치 기반 데이터, 전화 번호, 이메일 주소, 집 주소, 또는 임의의 다른 식별 정보를 포함할 수 있다.
본 개시내용은 본 기술에서의 그러한 개인 정보 데이터의 이용이 사용자들에게 이득을 주기 위해 사용될 수 있음을 인식한다. 예를 들어, 개인 정보 데이터는 사용자에게 더 큰 관심 대상인 타깃 콘텐츠를 전달하는 데 이용될 수 있다. 따라서, 그러한 개인 정보 데이터의 이용은 전달된 콘텐츠의 계산된 제어를 가능하게 한다. 게다가, 사용자에게 이득을 주는 개인 정보 데이터에 대한 다른 이용들이 또한 본 개시내용에 의해 고려된다.
본 개시내용은 그러한 개인 정보 데이터의 수집, 분석, 공개, 전달, 저장, 또는 다른 이용을 책임지고 있는 엔티티들이 잘 확립된 프라이버시 정책들 및/또는 프라이버시 관례들을 준수할 것이라는 것을 추가로 고려한다. 특히, 그러한 엔티티들은, 대체로 개인 정보 데이터를 사적이고 안전하게 유지시키기 위한 산업적 또는 행정적 요건들을 충족시키거나 넘어서는 것으로 인식되는 프라이버시 정책들 및 관례들을 구현하고 지속적으로 이용해야 한다. 예를 들어, 사용자들로부터의 개인 정보는 엔티티의 적법하며 적정한 사용들을 위해 수집되어야 하고, 이들 적법한 사용들을 벗어나서 공유되거나 판매되지 않아야 한다. 게다가, 그러한 수집은 단지 사용자들의 통지된 동의를 수신한 후에만 발생해야 한다. 부가적으로, 그러한 엔티티들은 그러한 개인 정보 데이터에 대한 액세스를 보호하고 안전하게 하며 개인 정보 데이터에 대한 액세스를 갖는 다른 사람들이 그들의 프라이버시 정책들 및 절차들을 고수한다는 것을 보장하기 위한 임의의 필요한 단계들을 취할 것이다. 게다가, 그러한 엔티티들은 널리 인정된 프라이버시 정책들 및 관례들에 대한 그들의 고수를 증명하기 위해 제3자들에 의해 그들 자신들이 평가를 받을 수 있다.
전술한 것에도 불구하고, 본 개시내용은 또한 사용자들이 개인 정보 데이터의 사용, 또는 그에 대한 액세스를 선택적으로 차단하는 실시예들을 고려한다. 즉, 본 개시내용은 그러한 개인 정보 데이터에 대한 액세스를 방지하거나 차단하기 위해 하드웨어 및/또는 소프트웨어 요소들이 제공될 수 있다는 것을 고려한다. 예를 들어, 음성 통신들을 모니터링하거나 애플리케이션들 내에서 사용자들에 의해 수행되는 액션들을 모니터링하는 경우에, 본 기술은 사용자들이 서비스들에 대한 등록 동안에 개인 정보 데이터의 수집에의 참여의 "동의함(opt in)" 또는 "동의하지 않음(opt out)"을 선택할 수 있게 하도록 구성될 수 있다. 다른 예에서, 사용자들은 타깃 콘텐츠 전달 서비스들을 위한 위치 정보를 제공하지 않도록 선택할 수 있다. 또 다른 예에서, 사용자들은 정확한 위치 정보를 제공하지 않지만 위치 구역 정보의 전달을 허용하도록 선택할 수 있다.
따라서, 본 개시내용이 하나 이상의 다양한 개시된 실시예들을 구현하기 위해 개인 정보 데이터의 사용을 광범위하게 커버하지만, 본 개시내용은 다양한 실시예들이 또한 그러한 개인 정보 데이터에 액세스할 필요 없이 구현될 수 있다는 것을 또한 고려한다. 즉, 본 기술의 다양한 실시예들은 그러한 개인 정보 데이터의 모두 또는 일부분의 결여로 인해 동작 불가능하게 되지 않는다. 예를 들어, 콘텐츠는, 사용자와 연관된 디바이스에 의해 요청되는 콘텐츠, 콘텐츠 전달 서비스들에 대해 이용가능한 다른 비-개인 정보, 또는 공개적으로 입수가능한 정보와 같은 비-개인 정보 데이터 또는 최소량의 개인 정보에 기초하여 선호도를 추론함으로써 선택되고 사용자들에게 전달될 수 있다.
전술된 다양한 실시예들이 본 명세서에 기술된 임의의 다른 실시예들과 조합될 수 있음에 주목한다. 본 명세서에 기술된 특징들 및 이점들은 모두를 포함하는 것은 아니며, 특히, 많은 추가적인 특징들 및 이점들이 도면, 명세서 및 청구범위를 고려하여 당업자에게 명백할 것이다. 그에 부가하여, 본 명세서에 사용된 표현은 주로 이해의 편의 및 설명을 위해 선택되었고, 본 발명의 요지를 상세히 기술하거나 제한하기 위해 선택되지 않았을 수 있다는 것에 주목해야 한다.
기술된 다양한 실시예들의 더 나은 이해를 위해, 유사한 도면 부호들이 도면들 전체에 걸쳐 대응하는 부분들을 나타내는 아래의 도면들과 관련하여, 아래의 발명을 실시하기 위한 구체적인 내용 섹션이 참고되어야 한다.
도 1a는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 컴퓨팅 디바이스의 고레벨 블록도이다.
도 1b는 일부 실시예들에 따른, 이벤트 처리를 위한 예시적인 컴포넌트들의 블록도이다.
도 1c는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 휴대용 다기능 디바이스의 개략도이다.
도 1d는 일부 실시예들에 따른, 디스플레이와는 별개인 터치 감응형 표면을 갖는 컴퓨팅 디바이스를 예시하기 위해 사용되는 개략도이다.
도 2는 일부 실시예들에 따른, 애플리케이션들의 메뉴에 대한 사용자 인터페이스를 예시하기 위해 사용되는 터치 스크린의 개략도이다.
도 3a 및 도 3b는 일부 실시예들에 따른, 애플리케이션 사용 데이터를 저장하기 위한 데이터 구조들을 예시하는 블록도들이다.
도 4a 및 도 4b는 일부 실시예들에 따른, 트리거 조건들을 저장하기 위한 데이터 구조들을 예시하는 블록도들이다.
도 5는 일부 실시예들에 따른, 트리거 조건 확립 시스템의 일례를 예시하는 블록도이다.
도 6a 및 도 6b는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화(예컨대, 사용자 선택에 대한 표면화)하는 방법의 흐름도 표현이다.
도 7a 및 도 7b는 일부 실시예들에 따른, 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 8a 및 도 8b는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화(예컨대, 사용자 선택에 대한 표면화)하는 방법의 흐름도 표현이다.
도 9a 내지 도 9d는 일부 실시예들에 따른, 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 10a 내지 도 10c는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상에 현재 디스플레이되고 있는 콘텐츠에 기초하여 검색 질의들을 사전행동적으로 제안하는 방법의 흐름도 표현이다.
도 11a 내지 도 11j는 일부 실시예들에 따른, 터치 감응형 디스플레이 상에 현재 디스플레이되고 있는 콘텐츠에 기초하여 검색 질의들을 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 12는 일부 실시예들에 따른, 휴리스틱(heuristic)에 기초하여 검색 모드에 진입하는 방법의 흐름도 표현이다.
도 13a 및 도 13b는 일부 실시예들에 따른, 휴리스틱에 기초하여 검색 모드에 진입하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 14는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상에 차량 위치를 사전행동적으로 제공하는 방법의 흐름도 표현이다.
도 15a 및 도 15b는 일부 실시예들에 따른, 차량 위치를 사전행동적으로 제공하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 16a 및 도 16b는 일부 실시예들에 따른, 검색 질의들에 대한 인근의 관심 지점(POI) 정보를 사전행동적으로 제공하는 방법의 흐름도 표현이다.
도 17a 내지 도 17e는 일부 실시예들에 따른, 검색 질의들에 대한 인근의 관심 지점(POI) 정보를 사전행동적으로 제공하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 18a 및 도 18b는 일부 실시예들에 따른, 음성 통신으로부터 콘텐츠 항목을 추출하고 추출된 콘텐츠 항목과 상호작용하는 방법의 흐름도 표현이다.
도 19a 내지 도 19f는 일부 실시예들에 따른, 음성 통신으로부터 추출된 콘텐츠 항목들을 디스플레이하고 그들과 상호작용하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 20은 일부 실시예들에 따른, 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하고 애플리케이션을 물리적 위치에 관한 정보로 채우는 방법의 흐름도 표현이다.
도 21a 및 도 21b는 일부 실시예들에 따른, 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하고 애플리케이션을 물리적 위치에 관한 정보로 채우기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 22a 및 도 22b는 일부 실시예들에 따른, 메시징 애플리케이션에서 사용하기 위한 물리적 위치들을 사전행동적으로 제안하는 방법의 흐름도 표현이다.
도 22c는 일부 실시예들에 따른, 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하는 방법의 흐름도 표현이다.
도 23a 내지 도 23o는 일부 실시예들에 따른, (예컨대, 사용자에 의한 용이한 선택 및 메시징 애플리케이션 내에의 포함을 위해) 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 24a 및 도 24b는 일부 실시예들에 따른, 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우는 방법의 흐름도 표현이다.
도 25a 내지 도 25j는 일부 실시예들에 따른, 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우기 위한(예컨대, 승차 공유 애플리케이션(ride-sharing application)을 검토 애플리케이션에서 사용자가 본 위치들에 관한 정보로 채우기 위한) 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 26a 및 도 26b는 일부 실시예들에 따른, 제1 애플리케이션에서 사용자가 이전에 봤던 정보를 제2 애플리케이션에서 사용하기 위해 사전행동적으로 제안하는 방법의 흐름도 표현이다.
도 27은 일부 실시예들에 따른, 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하는 방법의 흐름도 표현이다.
도 28은 일부 실시예들에 따른, 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도이다.
도 29는 일부 실시예들에 따른, 붙여넣기 액션을 사전행동적으로 제안하는 방법의 흐름도 표현이다.
도 30a 내지 도 30d는 일부 실시예들에 따른, 붙여넣기 액션을 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다.
도 31a은 일부 실시예들에 따른, 모바일 디바이스의 동적 조정을 수행하도록 구성된 모바일 디바이스를 예시한다.
도 31b는 일부 실시예들에 따른, 휴리스틱 프로세스들을 호출하기 위한 예시적인 프로세스를 예시한다.
도 31c은 일부 실시예들에 따른, 휴리스틱 프로세스를 사용하여 모바일 디바이스의 설정들을 조정하기 위한 프로세스를 예시한다.
도 31d는 일부 실시예들에 따른, 애플리케이션들의 백그라운드 페치 업데이트(background fetch updating)를 수행하기 위한 예시적인 시스템을 예시한다.
도 31e는 일부 실시예들에 따른, 모바일 디바이스(100) 상의 애플리케이션들에 대한 사용자 호출 확률들을 결정하기 위한 피어 예측을 예시한다.
도 31f은 일부 실시예들에 따른, 백그라운드 업데이트들을 수행하기 위해 애플리케이션들을 예측적으로 개시하기 위한 예시적인 프로세스의 흐름도이다.
도 31g은 일부 실시예들에 따른, 모바일 디바이스 상의 애플리케이션들을 언제 개시할지를 결정하기 위한 예시적인 프로세스의 흐름도이다.
도 31h은 일부 실시예들에 따른, 트렌딩 표(trending table)에서의 엔트리에 대한 상태 전이들을 예시하는 흐름도이다.
도 31i는 일부 실시예들에 따른, 모바일 디바이스에 푸시 통지(push notification)들을 제공하기 위한 시스템을 예시하는 블록도이다.
도 31j은 일부 실시예들에 따른, 푸시 통지 서버에서 비웨이킹 푸시(non-waking push)들을 수행하기 위한 예시적인 프로세스의 흐름도이다.
도 31k은 일부 실시예들에 따른, 낮은 우선순위 푸시 통지에 응답하여 애플리케이션의 백그라운드 업데이트를 수행하기 위한 예시적인 프로세스의 흐름도이다.
도 31l는 일부 실시예들에 따른, 높은 우선순위 푸시 통지에 응답하여 애플리케이션의 백그라운드 업데이트를 수행하기 위한 예시적인 프로세스의 흐름도이다.
도 31m은 일부 실시예들에 따른, 모바일 디바이스 상에서 데이터의 백그라운드 다운로드 및/또는 업로드를 수행하기 위한 예시적인 시스템의 블록도이다.
도 31n는 일부 실시예들에 따른, 백그라운드 다운로드들 및 업로드들을 수행하기 위한 예시적인 프로세스의 흐름도이다.
도 31o는 일부 실시예들에 따른, 모바일 디바이스 상에서 애플리케이션들에 대한 백그라운드 업데이트들을 인에이블 및/또는 디스에이블하기 위한 예시적인 그래픽 사용자 인터페이스(GUI)를 예시한다.
도 31p은 일부 실시예들에 따른, 피어 디바이스들 사이의 데이터를 공유하기 위한 예시적인 시스템을 예시한다.
도 31q은 일부 실시예들에 따른, 피어 디바이스들 사이의 데이터를 공유하기 위한 예시적인 프로세스를 예시한다.
도 32a은 일부 실시예들에 따른, 입력 질의 프리픽스(prefix)들에 기초하여 검색 결과들을 반환하는 시스템의 일 실시예의 블록도이다.
도 32b는 일부 실시예들에 따른, 입력 질의 프리픽스에 기초하여 질의 완성들 및 관련 결과들을 결정하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32c은 일부 실시예들에 따른, 집계기(aggregator) 및 다수의 검색 도메인들의 일 실시예의 블록도이다.
도 32d는 일부 실시예들에 따른, 질의 완성 검색 도메인에 대한 일 실시예의 도면이다.
도 32e는 지도 검색 도메인의 일 실시예의 도면이다. 도 32f은 일부 실시예들에 따른, 다수의 검색 도메인들로부터 질의 완성들을 결정하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32g은 일부 실시예들에 따른, 결정된 질의 완성으로부터 다수의 검색 도메인들에 걸쳐 관련 결과들을 결정하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32h은 일부 실시예들에 따른, 사용자 피드백을 피드백 검색 인덱스 내에 포함시키는 시스템의 일 실시예의 블록도이다.
도 32i는 일부 실시예들에 따른, 사용자 피드백을 인용구 검색 인덱스 내에 포함시키기 위한 프로세스의 일 실시예의 흐름도이다.
도 32j은 일부 실시예들에 따른, 사용자 검색 세션 동안 사용자 피드백을 수집하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32k은 일부 실시예들에 따른, 사용자 피드백을 피드백 인덱스 내에 포함시키기 위한 프로세스의 일 실시예의 흐름도이다.
도 32l는 일부 실시예들에 따른, 사용자 피드백을 사용하여 결과 캐시(results cache)를 업데이트하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32m은 일부 실시예들에 따른, 특성화된 질의 완성을 사용하여 멀티-도메인 검색을 수행하는 연합기(federator)의 일 실시예의 블록도이다.
도 32n는 일부 실시예들에 따른, 어휘 서비스를 사용하여 관련 결과들을 결정하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32o는 일부 실시예들에 따른, 질의 완성을 특성화하기 위한 프로세스의 일 실시예의 흐름도이다.
도 32p은 일부 실시예들에 따른, 다수의 검색 도메인들로부터 질의 완성들을 결정하기 위한 완성 모듈의 일 실시예의 블록도이다.
도 32q은 일부 실시예들에 따른, 결정된 질의 완성으로부터 다수의 검색 도메인들에 걸쳐 관련 결과들을 결정하기 위한 결과 모듈의 일 실시예의 블록도이다.
도 32r은 일부 실시예들에 따른, 사용자 검색 세션 동안 사용자 피드백을 수집하기 위한 피드백 수집 모듈의 일 실시예의 블록도이다.
도 32s는 일부 실시예들에 따른, 사용자 피드백을 피드백 인덱스 내에 포함시키기 위한 피드백 프로세싱 모듈의 일 실시예의 블록도이다.
도 32t은 일부 실시예들에 따른, 사용자 피드백을 사용하여 결과 캐시를 업데이트하기 위한 질의 결과 업데이트 모듈의 일 실시예의 블록도이다.
도 32u은 일부 실시예들에 따른, 사용자 피드백을 피드백 인덱스 내에 포함시키기 위한 피드백 프로세싱 모듈의 일 실시예의 블록도이다.
도 32v는 일부 실시예들에 따른, 사용자 피드백을 사용하여 결과 캐시를 업데이트하기 위한 질의 결과 업데이트 모듈의 일 실시예의 블록도이다.
도 33a은 종래 기술에 알려져 있는 바와 같은 컴퓨팅 디바이스 상의 로컬 검색 서브시스템 및 원격 검색 서브시스템을 블록도 형태로 예시한다.
도 33b는 일부 실시예들에 따른, 컴퓨팅 디바이스 상의 원격 검색 애플리케이션으로부터 반환된 결과들을 개선하기 위해 사용될 수 있는 로컬 학습 능력을 갖는 로컬 검색 서브시스템을 블록도 형태로 예시한다.
도 33c은 일부 실시예들에 따른, 로컬 검색 질의들, 로컬 결과들, 및 로컬 결과들에 기초한 로컬 피드백을 이용하여 질의 특징부를 국부적으로 학습하는 방법을 블록도 형태로 예시한다.
도 33d는 일부 실시예들에 따른, 로컬 검색 질의들과 원격 검색 질의들 양쪽 모두로부터 반환된 검색 결과들, 및 로컬 및 원격 검색 질의 결과들 양쪽 모두에 대한 로컬 피드백을 이용하여 질의 특징부를 국부적으로 학습하는 방법을 블록도 형태로 예시한다.
도 33e는 일부 실시예들에 따른, 원격 서비스로 전송된 질의에 응답하여 원격 서비스에 의해 로컬 디바이스로 전해진 질의 특징부를 국부적으로 학습하는 방법을 블록도 형태로 예시한다.
도 33f은 일부 실시예들에 따른, 새로운 특징부를 수신 또는 결정하고, 그 특징부를 국부적으로 훈련시키고, 그 특징부를 이용하는 방법을 블록도 형태로 예시한다.
도 33g은 일부 실시예들에 따른, 본 발명의 일부 실시예들에서 사용가능한 소프트웨어 스택(software stack)의 예시적인 실시예를 예시한다.
도 34a는 일부 실시예들에 따른, 제안된 연락처들을 위한 예시적인 데이터 아키텍처의 블록도를 예시한다.
도 34b는 일부 실시예들에 따른, 제안된 캘린더 이벤트들을 위한 예시적인 데이터 아키텍처의 블록도를 예시한다.
도 34c 내지 도 34i는 일부 실시예들에 따른, 제안된 연락처들 및 캘린더 이벤트들을 제공하기 위한 예시적인 사용자 인터페이스들을 예시한다. 도 1a, 도 1b, 도 2, 및 도 3은 이 섹션에서 기술되는 연락처 및 이벤트 정보를 제안하기 위한 기법들을 수행하기 위한 예시적인 디바이스들의 설명을 제공한다. 도 34c 내지 도 34i는 연락처 및 이벤트 정보를 제안하기 위한 예시적인 사용자 인터페이스들을 예시하고, 이러한 도면들에서의 사용자 인터페이스들은 또한 도 34j 내지 도 34t에서의 프로세스들을 포함하는, 후술되는 프로세스들을 예시하기 위해 사용된다.
도 34j 및 도 34k는 일부 실시예들에 따른, 제안된 연락처를 생성하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34l 및 도 34m는 일부 실시예들에 따른, 기존 연락처를 제안된 연락처 정보의 항목으로 업데이트하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34n 및 도 34o는 일부 실시예들에 따른, 제안된 연락처 정보를 갖는 연락처를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34p은 일부 실시예들에 따른, 메시지를 갖는 제안된 연락처 정보를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34q 및 도 34r는 일부 실시예들에 따른, 제안된 캘린더 이벤트를 생성하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34s는 일부 실시예들에 따른, 메시지를 갖는 제안된 이벤트 정보를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34t은 일부 실시예들에 따른, 메시지를 갖는 다수의 제안된 연락처 또는 이벤트 정보를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다.
도 34u는 일부 실시예들에 따른 전자 디바이스의 기능 블록도이다.
도 34v는 일부 실시예들에 따른 전자 디바이스의 기능 블록도이다.
도 35a은 일부 실시예들에 따른, 검출된 이벤트에 기초하여 애플리케이션을 제안하기 위한 방법(35_100)의 흐름도이다.
도 35b는 일부 실시예들에 따른 세그먼트화 프로세스(35_200)를 도시한다.
도 35c은 일부 실시예들에 따라 생성될 수 있는 결정 트리(35_300)를 도시한다.
도 35d는 일부 실시예들에 따른, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 애플리케이션을 제안하기 위한 방법(35_400)의 흐름도이다.
도 35e 내지 도 35h는 일부 실시예들에 따른, 다양한 정확한 수들 및 부정확한 수들에 대한 예시적인 이항 분포들의 플롯들을 도시한다.
도 35i 및 도 35j는 일부 실시예들에 따른, 부모 모델(parent model) 및 세그먼트화로부터 얻은 서브모델(sub-model)을 도시한다.
도 35k은 일부 실시예들에 따른, 하나 이상의 애플리케이션들과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하기 위한 예시적인 아키텍처(35_700)를 도시한다.
도 36a은 일부 실시예들에 따른, 트리거링 이벤트에 기초하여 애플리케이션을 식별하기 위한 방법의 흐름도이다.
도 36b는 일부 실시예들에 따른, 트리거링 이벤트를 결정하기 위한 시스템의 블록도를 도시한다.
도 36c은 일부 실시예들에 따른, 트리거링 이벤트에 기초하여 사용자에 대한 애플리케이션을 식별하기 위한 시스템의 블록도를 도시한다.
도 36d는 일부 실시예들에 따른, 다수의 예측 모델들로 애플리케이션을 식별하기 위한 시스템의 블록도를 도시한다.
도 36e는 일부 실시예들에 따른, 디바이스로 트리거링 이벤트에 기초하여 애플리케이션을 식별하는 방법의 흐름도이다.
도 36f은 일부 실시예들에 따른, 음악 애플리케이션에 대한 사용자 인터페이스를 갖는 디바이스의 단순화된 도면이다.
도 36g 및 도 36h는 일부 실시예들에 따른, 사용자 인터페이스로부터 식별된 애플리케이션을 제거하기 위한 방법들의 흐름도들이다.
도 37a은 일부 실시예들에 따른, 검출된 이벤트에 기초하여 연락할 수신자를 제안하기 위한 방법(100)의 흐름도이다.
도 37b는 일부 실시예들에 따른, 트리거링 이벤트를 결정하기 위한 시스템의 블록도를 도시한다.
도 37c은 일부 실시예들에 따른, 트리거링 이벤트에 기초하여 연락할 수신자들을 식별하기 위한 시스템의 블록도를 도시한다.
도 37d는 일부 실시예들에 따른, 이메일 애플리케이션에 대한 사용자 인터페이스에서 연락할 수신자들을 제안하는 일례를 도시한다.
도 37e는 일부 실시예들에 따른, 검색 애플리케이션에 대한 사용자 인터페이스에서 연락할 수신자들을 제안하는 일례를 도시한다.
도 37f은 일부 실시예들에 따른, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 수신자들을 제안하기 위한 방법(37_600)의 흐름도이다.
도 37g은 일부 실시예들에 따른, 연락할 수신자들을 제안하기 위한 예시적인 데이터 흐름을 도시한다.
도 37h은 일부 실시예들에 따른 상호작용 모듈의 블록도를 도시한다.
도 37i는 일부 실시예들에 따른, 연락할 수신자들을 제안하기 위해 사용자에게 사용자 인터페이스를 제공하기 위한 예시적인 아키텍처(37_900)를 도시한다.
도 38a은 일부 실시예들에 따른, 본 명세서에 기술된 다양한 기법들을 구현하도록 구성된 모바일 컴퓨팅 디바이스의 상이한 컴포넌트들의 블록도를 예시한다.
도 38b는 일부 실시예들에 따른, 도 38a의 애플리케이션 예측 엔진에 의해 구현되는 방법을 예시한다.
도 38c은 일부 실시예들에 따른, 도 1의 검색 애플리케이션에 의해 구현되는 방법을 예시한다.
도 38d는 일부 실시예들에 따른, 도 38a의 검색 애플리케이션의 예시적인 사용자 인터페이스의 개념도를 예시한다.
도 39a은 일부 실시예들에 따른, 본 명세서에 기술된 다양한 기법들을 구현하도록 구성된 모바일 컴퓨팅 디바이스의 상이한 컴포넌트들의 블록도를 예시한다.
도 39b는 일부 실시예들에 따른, 도 39a(또는 도 1a)에 예시된 모바일 컴퓨팅 디바이스의 특정 컴포넌트들을 더 상세하게 보여주는 블록도를 예시한다.
도 39c는 일부 실시예들에 따른, 예측 엔진의 고레벨 초기화 및 동작을 위한 방법을 예시한다.
도 39d는 일부 실시예들에 따른, 예측 엔진에서 예측을 동기식으로 제공하기 위한 방법을 예시한다.
도 39e는 일부 실시예들에 따른, 예측 엔진에서 예측을 비동기식으로 제공하기 위한 방법을 예시한다.
도 39f는 일부 실시예들에 따른, 소비자 애플리케이션이 예측을 동기식으로 수신하도록 요청하기 위한 방법을 예시한다.
도 39g는 일부 실시예들에 따른, 소비자 애플리케이션이 예측들을 비동기식으로 수신하도록 등록하기 위한 방법을 예시한다.
도 39h는 일부 실시예들에 따른, 예측 엔진 센터에서 예측 엔진 등록들을 관리하기 위한 방법을 예시한다.
도 39i는 일부 실시예들에 따른, 예측 엔진 센터에서 소비자 애플리케이션들에 예측들을 동기식으로 제공하기 위한 방법을 예시한다.
도 39j는 일부 실시예들에 따른, 예측 엔진 센터에서 소비자 애플리케이션들에 예측들을 비동기식으로 제공하기 위한 방법을 예시한다.
도 40a은 일부 실시예들에 따른, 컴퓨팅 디바이스의 현재 컨텍스트(context)의 변화들을 모니터링하고, 예측하고, 컨텍스트 클라이언트들에게 통지하기 위한 예시적인 시스템의 블록도이다.
도 40b는 일부 실시예들에 따른, 현재 컨텍스트를 구성할 수 있는 컨텍스트 항목들의 일례를 예시한다.
도 40c는 일부 실시예들에 따른, 현재 컨텍스트에 추가되는 새로운 컨텍스트 항목의 일례를 예시한다.
도 40d은 일부 실시예들에 따른, 예시적인 콜백 술어 데이터베이스(callback predicate database)를 예시한다.
도 40e는 일부 실시예들에 따른, 시간 경과에 따라 컨텍스트 항목들과 연관된 예시적인 상태 변화들을 예시하는 그래프이다.
도 40f는 일부 실시예들에 따른, 컨텍스트 항목들과 연관된 예시적인 이벤트 스트림들을 예시하는 그래프이다.
도 40g도 40g 실시예들에 따른, 예시적인 이벤트 스트림 이력 데이터베이스를 예시한다.
도 40h은 일부 실시예들에 따른, 컨텍스트 콜백 통지를 요청 클라이언트에게 제공하기 위한 예시적인 시스템의 블록도이다.
도 40i는 일부 실시예들에 따른, 종료된 요청 클라이언트를 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40j는 일부 실시예들에 따른, 종료된 요청 클라이언트를 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40k는 일부 실시예들에 따른, 종료된 컨텍스트 데몬(context daemon)을 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40l는 일부 실시예들에 따른, 종료된 컨텍스트 데몬을 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40m는 일부 실시예들에 따른, 종료된 컨텍스트 데몬 및 요청 클라이언트를 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40n는 일부 실시예들에 따른, 종료된 컨텍스트 데몬 및 요청 클라이언트를 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40o은 일부 실시예들에 따른, 개시 데몬(launch daemon)에 의해 수신된 디바이스 상태 정보에 기초하여 클라이언트 및/또는 컨텍스트 데몬을 재시작하도록 구성된 예시적인 시스템의 블록도이다.
도 40p는 일부 실시예들에 따른, 개시 데몬을 사용하여 컨텍스트 데몬을 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40q는 일부 실시예들에 따른, 개시 데몬을 사용하여 컨텍스트 데몬을 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40r는 일부 실시예들에 따른, 개시 데몬을 사용하여 요청 클라이언트를 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40s는 일부 실시예들에 따른, 개시 데몬을 사용하여 요청 클라이언트를 재시작하는 것을 예시하는 예시적인 시스템의 블록도이다.
도 40t는 일부 실시예들에 따른, 향후 이벤트들을 예측하기 위한 슬롯별 평균화의 일례를 예시하는 그래프이다.
도 40u는 일부 실시예들에 따른, 슬롯 가중을 예시하는 예시적인 그래프들을 도시한다.
도 40v는 일부 실시예들에 따른, 향후 컨텍스트를 예측하기 위한 예시적인 방법을 예시하는 그래프이다.
도 40w는 일부 실시예들에 따른, 슬롯별 확률들을 확률 곡선으로 변환하기 위한 예시적인 방법을 예시하는 그래프이다.
도 40x은 일부 실시예들에 따른, 예측된 향후 이벤트를 포함하는 예시적인 이벤트 스트림을 예시한다.
도 40y은 일부 실시예들에 따른, 컴퓨팅 디바이스 상에서의 컨텍스트 변화들을 클라이언트들에게 통지하기 위한 예시적인 프로세스의 흐름도이다.
도 40z는 일부 실시예들에 따른, 콜백 요청을 서비스하기 위해 컨텍스트 데몬을 재시작하기 위한 예시적인 프로세스의 흐름도이다.
도 40aa은 일부 실시예들에 따른, 콜백 통지를 수신하기 위해 콜백 클라이언트를 재시작하기 위한 예시적인 프로세스의 흐름도이다.
도 40bb은 일부 실시예들에 따른, 컨텍스트 정보 이력에 기초하여 향후 이벤트들을 예측하기 위한 예시적인 프로세스의 흐름도이다.
도 40cc는 일부 실시예들에 따른, 슬립(sleep) 컨텍스트 콜백 요청을 서비스하기 위한 예시적인 프로세스의 흐름도이다.
도 41a은 로컬 디바이스 검색 인덱스에서 사용하기 위한 애플리케이션 상태들을 인덱싱(indexing)하는 시스템의 일 실시예의 블록도이다.
도 41b는 온-디바이스(on-device) 애플리케이션 상태 검색 인덱스를 사용하여 애플리케이션 상태들을 검색하는 시스템의 일 실시예의 블록도이다.
도 41c은 다른 질의 결과들 중에서 애플리케이션 상태 질의 결과들을 디스플레이하는 사용자 인터페이스들의 실시예들의 블록도이다.
도 41d는 디바이스 상의 다수의 상이한 애플리케이션들로부터 수신되는 애플리케이션 상태들을 인덱싱하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41e는 애플리케이션 상태 인덱스를 사용하여 질의에 대한 질의 결과들을 결정하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41f는 질의 결과의 일부로서 애플리케이션 상태를 수신 및 제시하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41g은 원격 검색 인덱스에서 사용하기 위한 애플리케이션 상태들을 인덱싱하는 시스템의 일 실시예의 블록도이다.
도 41h은 원격 애플리케이션 상태 검색 인덱스를 사용하여 애플리케이션 상태들을 검색하는 시스템의 일 실시예의 블록도이다.
도 41i은 애플리케이션 상태를 애플리케이션 상태 인덱스에 추가하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41j는 애플리케이션 상태를 애플리케이션 상태 인덱싱 서비스에 익스포트(export)하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41k은 애플리케이션 상태 인덱스를 사용하여 질의 검색을 수행하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41l은 질의 결과의 일부로서 애플리케이션 상태를 수신 및 제시하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41m는 원격 검색 인덱스에서 사용하기 위한 애플리케이션 상태 뷰들을 인덱싱하는 시스템의 일 실시예의 블록도이다.
도 41n은 애플리케이션 뷰의 일 실시예의 블록도이다.
도 41o는 애플리케이션 상태를 사용하여 애플리케이션 상태 뷰를 생성하기 위한 프로세스의 일 실시예의 흐름도이다.
도 41p는 질의 결과의 일부로서 애플리케이션 상태 뷰를 포함하는 애플리케이션 상태를 수신 및 제시하기 위한 프로세스의 일 실시예의 흐름도이다.
도 42 내지 도 55는 일부 실시예들에 따른 전자 디바이스의 기능 블록도들이다.
위에서 그리고 아래에서 더욱 상세하게 논의되는 바와 같이, 애플리케이션들 및 그러한 애플리케이션들 내의 원하는 기능들에 신속하게 액세스하기 위한 보다 빠르고 보다 효율적인 방법들 및 인터페이스들을 갖는 전자 디바이스들이 필요하다. 특히, 사용자가 명백히 그것을 요청하기 전에 관련 정보를 식별 및 제공함으로써 사용자들이 반복적인 태스크들을 피하고 사전행동적 어시스턴트를 제공하는 것을 돕는 디바이스들이 필요하다. 추가적으로, 특정 기간들(예컨대, 매일 아침 잠에서 깬 후 캘린더 애플리케이션에 액세스함), 특정 장소들(예컨대, 체육관에서 음악 애플리케이션에 액세스함) 등에서 애플리케이션들 및 그러한 애플리케이션들 내의 원하는 기능들에 신속하게 액세스할 필요가 있다. 이러한 필요들을 다루고, 이러한 특정 장소들, 기간들 등에 애플리케이션들 및 그러한 애플리케이션들 내의 기능들에 신속하게 액세스하는 방식들을 사용자들에게 제공하기 위한 신규한 방법들 및 인터페이스들이 본 명세서에 개시된다. 그러한 방법들 및 인터페이스들은 선택적으로 애플리케이션들에 액세스하기 위한 종래의 방법들을 보완하거나 대체한다. 그러한 방법들 및 인터페이스들은 사용자에 대한 인지적 부담을 감소시키고 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 디바이스들의 경우, 그러한 방법들 및 인터페이스들은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다. 더욱이, 그러한 방법들 및 인터페이스들은 보다 적은 수의 터치 입력들을 요구함으로써 터치 감응형 디스플레이의 수명을 연장시키는 것을 돕는다(예컨대, 원하는 정보를 찾아내기 위해 터치 감응형 디스플레이 상을 연속적으로 그리고 목적 없이 탭핑해야 하는 대신에, 본 명세서에 개시된 방법들 및 인터페이스들은 사용자 입력을 요구하지 않고서 그 정보를 사전행동적으로 제공한다).
이하에서, 도 1a 내지 도 1e 및 도 2는 예시적인 디바이스들의 설명을 제공한다. 도 10 및 도 11은 예시적인 전자 디바이스들의 기능 블록도들을 제공한다. 도 3a, 도 3b, 도 4a 및 도 4b는 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위해 사용되는 예시적인 데이터 구조들의 블록도들이다(이러한 데이터 구조들은 도 6a 및 도 6b를 참조하여 기술되는 방법 및 도 8a 및 도 8b를 참조하여 기술되는 방법에 사용된다). 도 5는 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위해 사용되는 트리거 조건들을 확립하기 위한 예시적인 시스템을 예시하는 블록도이다(예시적인 시스템은 도 6a 및 도 6b를 참조하여 기술되는 방법 및 도 8a 및 도 8b를 참조하여 기술되는 방법에 사용된다). 도 6a 및 도 6b는 관련 콘텐츠를 사전행동적으로 식별 및 표면화하는 방법을 도시하는 흐름도이다. 도 7a 및 도 7b는 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 예시적인 사용자 인터페이스들 및 제스처들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 8a 및 도 8b는 관련 콘텐츠를 사전행동적으로 식별 및 표면화하는 방법을 도시하는 흐름도이다. 도 9a 내지 도 9d는 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 추가적인 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 3a, 도 3b, 도 4a, 도 4b, 도 5, 도 7a 및 도 7b는 도 6a 및 도 6b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 도 3a, 도 3b, 도 4a, 도 4b, 도 5, 및 도 9a 내지 도 9d는 도 8a 및 도 8b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 10a 내지 도 10c는 터치 감응형 디스플레이를 갖는 전자 디바이스 상에 현재 디스플레이되고 있는 콘텐츠에 기초하여 검색 질의들을 사전행동적으로 제안하는 방법을 도시하는 흐름도이다. 도 11a 내지 도 11j는 터치 감응형 디스플레이 상에 현재 디스플레이되고 있는 콘텐츠에 기초하여 검색 질의들을 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 11a 내지 도 11j는 도 10a 내지 도 10c의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 12는 휴리스틱에 기초하여 검색 모드에 진입하는 방법의 흐름도 표현이다. 도 13a 및 도 13b는 휴리스틱에 기초하여 검색 모드에 진입하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 13a 및 도 13b는 도 12의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 14는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상에 차량 위치를 사전행동적으로 제공하는 방법의 흐름도 표현이다. 도 15a 및 도 15b는 일부 실시예들에 따른, 차량 위치를 사전행동적으로 제공하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 15a 및 도 15b는 도 14의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 16a 및 도 16b는 일부 실시예들에 따른, 검색 질의들에 대한 인근의 관심 지점(POI) 정보를 사전행동적으로 제공하는 방법의 흐름도 표현이다. 도 17a 내지 도 17e는 일부 실시예들에 따른, 검색 질의들에 대한 인근의 관심 지점(POI) 정보를 사전행동적으로 제공하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 16a 및 도 16b는 도 17a 내지 도 17e의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 18a 및 도 18b는 일부 실시예들에 따른, 음성 통신으로부터 콘텐츠 항목을 추출하고 추출된 콘텐츠 항목과 상호작용하는 방법의 흐름도 표현이다. 도 19a 내지 도 19f는 일부 실시예들에 따른, 음성 통신으로부터 추출된 콘텐츠 항목들을 디스플레이하고 그들과 상호작용하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 19a 내지 도 19f는 도 18a 및 도 18b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 20은 일부 실시예들에 따른, 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하고 애플리케이션을 물리적 위치에 관한 정보로 채우는 방법의 흐름도 표현이다. 도 21a 및 도 21b는 일부 실시예들에 따른, 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하고 애플리케이션을 물리적 위치에 관한 정보로 채우기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 19a 내지 도 19f, 도 21a 및 도 21b는 도 20의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 22a 및 도 22b는 일부 실시예들에 따른, 메시징 애플리케이션에서 사용하기 위한 물리적 위치들을 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 23a 내지 도 23o는 일부 실시예들에 따른, (예컨대, 사용자에 의한 용이한 선택 및 메시징 애플리케이션 내에의 포함을 위해) 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 23a 내지 도 23o는 도 22a 및 도 22b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 22c는 일부 실시예들에 따른, 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 23a 내지 도 23o는 도 22c의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 24a 및 도 24b는 일부 실시예들에 따른, 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우는 방법의 흐름도 표현이다. 도 25a 내지 도 25j는 일부 실시예들에 따른, 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우기 위한(예컨대, 승차 공유 애플리케이션을 검토 애플리케이션에서 사용자가 본 위치들에 관한 정보로 채우기 위한) 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 25a 내지 도 25j는 도 24a 및 도 24b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 26a 및 도 26b는 일부 실시예들에 따른, 제1 애플리케이션에서 사용자가 이전에 봤던 정보를 제2 애플리케이션에서 사용하기 위해 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 25a 내지 도 25j는 도 26a 및 도 26b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 27은 일부 실시예들에 따른, 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 28은 일부 실시예들에 따른, 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도이다. 도 28은 도 27의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
도 29는 일부 실시예들에 따른, 붙여넣기 액션을 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 30a 내지 도 30d는 일부 실시예들에 따른, 붙여넣기 액션을 사전행동적으로 제안하기 위한 사용자 인터페이스들을 예시하기 위해 사용되는 터치 감응형 디스플레이의 개략도들이다. 도 30a 내지 도 30d는 도 29의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다.
"실시예의 추가 설명" 섹션에서의 섹션 1 내지 섹션 11은 도 1a 내지 도 30d를 참조하여 제공되는 것들을 보완하는 추가 상세사항들을 기술한다.
이제, 실시예들이 상세하게 참조될 것이며, 그 실시예들의 예들이 첨부 도면들에 예시된다. 하기의 상세한 설명에서, 많은 구체적인 상세사항들이 다양하게 기술된 실시예들의 완전한 이해를 제공하기 위해 기재된다. 그러나, 다양하게 기술된 실시예들이 이들 구체적인 상세사항 없이 실시될 수 있다는 것은 당업자에게 명백할 것이다. 다른 예들에서, 잘 알려진 방법들, 절차들, 컴포넌트들, 회로들 및 네트워크들은 실시예들의 태양들을 불필요하게 모호하게 하지 않기 위해 상세히 설명되지 않았다.
일부 예들에서, 용어들, 제1, 제2 등이 본 명세서에서 다양한 요소들을 기재하는 데 사용되지만, 이들 요소들은 이들 용어들로 제한되어서는 안 된다는 것이 또한 이해될 것이다. 이들 용어들은 하나의 요소를 다른 요소와 구별하는 데에만 사용된다. 예를 들면, 다양하게 기술된 실시예들의 범주로부터 벗어남이 없이, 제1 접촉이 제2 접촉으로 지칭될 수 있고, 유사하게, 제2 접촉이 제1 접촉으로 지칭될 수 있다. 제1 접촉 및 제2 접촉은 둘 다 접촉이지만, 그들이 동일한 접촉인 것은 아니다.
본 명세서에서 다양하게 기술된 실시예들의 설명에 사용되는 용어는 특정 실시예들을 기술하는 목적만을 위한 것이고, 제한하려는 의도는 아니다. 다양한 기술된 실시예들의 설명 및 첨부된 청구범위에 사용되는 바와 같이, 단수의 형태("a", "an", 및 "the")는 문맥상 명백히 달리 나타내지 않는다면 복수의 형태도 마찬가지로 포함하려는 것으로 의도된다. 또한, 본 명세서에서 사용되는 바와 같은 용어 "및/또는"은 열거되는 연관된 항목들 중 하나 이상의 항목의 임의의 그리고 모든 가능한 조합들을 나타내고 그들을 포괄하는 것임이 이해될 것이다. 용어들 "포함한다(include)", "포함하는(including)", "포함한다(comprise)", 및/또는 "포함하는(comprising)"은, 본 명세서에서 사용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않음이 추가로 이해될 것이다.
본 명세서에서 사용되는 바와 같이, "~는 경우(if)"라는 용어는, 선택적으로, 문맥에 따라 "~할 때(when)" 또는 "~ 시(upon)" 또는 "결정하는 것에 응답하여(in response to determining)" 또는 "검출하는 것에 응답하여(in response to detecting)"를 의미하는 것으로 해석된다. 유사하게, 구문 "결정된 경우" 또는 "[진술된 상태 또는 이벤트가] 검출된 경우"는, 선택적으로, 문맥에 따라 "결정 시" 또는 "결정하는 것에 응답하여" 또는 "[진술된 상태 또는 이벤트] 검출 시" 또는 "[진술된 상태 또는 이벤트를] 검출하는 것에 응답하여"를 의미하는 것으로 해석된다.
본 명세서의 개시내용은 터치 감응형 디스플레이의 특정 부분 또는 특정 사용자 인터페이스 요소 상에서, 그것에서, 그 위에서, 그의 상부에서, 또는 실질적으로 그 내부에서 터치 입력을 검출하는 것을 상호교환가능하게 지칭한다. 본 명세서에 사용되는 바와 같이, 특정 사용자 인터페이스 요소"에서" 검출되는 터치 입력이 또한, 문맥에 따라, 그 동일한 사용자 인터페이스 요소 "상에서", "그 위에서", "그의 상부에서", 또는 "실질적으로 그 내부에서" 검출될 수 있다. 일부 실시예들에서 그리고 아래에서 더욱 상세하게 논의되는 바와 같이, 터치 입력들을 검출하기 위한 원하는 민감도 레벨들은 전자 디바이스의 사용자에 의해 구성된다(예컨대, 사용자는, 터치 입력이 완전히 사용자 인터페이스 요소 내에 있을 때에만 터치 입력이 검출되어야 한다고 결정(및 그렇게 동작하도록 전자 디바이스를 구성)할 수 있다).
전자 디바이스들, 그러한 디바이스들에 대한 사용자 인터페이스들, 및 그러한 디바이스들을 사용하기 위한 연관된 프로세스들의 실시예들이 기술된다. 일부 실시예들에서, 디바이스는 PDA 및/또는 음악 재생기 기능들과 같은 다른 기능들을 또한 포함하는 휴대용 통신 디바이스, 예컨대 모바일 전화기이다. 휴대용 다기능 디바이스들의 예시적인 실시예들은 미국 캘리포니아주 쿠퍼티노 소재의 애플 인크.(Apple Inc.)로부터의 아이폰(iPhone)®, 아이팟 터치(iPod Touch)®, 및 아이패드(iPad)® 디바이스들을 제한 없이 포함한다. 터치 감응형 표면들(예컨대, 터치 감응형 디스플레이들 및/또는 터치 패드들)을 갖는 랩톱들 또는 태블릿 컴퓨터들과 같은 다른 휴대용 전자 디바이스들이 선택적으로 사용된다. 일부 실시예들에서, 디바이스는 휴대용 통신 디바이스가 아니라, 터치 감응형 표면(예를 들어, 터치 감응형 디스플레이 및/또는 터치 패드)을 갖는 데스크톱 컴퓨터임이 또한 이해되어야 한다.
이하의 논의에서, 디스플레이 및 터치 감응형 표면을 포함하는 전자 디바이스가 기술된다. 그러나, 전자 디바이스가 선택적으로 물리적 키보드, 마우스 및/또는 조이스틱과 같은 하나 이상의 다른 물리적 사용자 인터페이스 디바이스들을 포함한다는 것이 이해되어야 한다.
디바이스는 전형적으로, 드로잉 애플리케이션, 프레젠테이션 애플리케이션, 워드 프로세싱 애플리케이션, 웹사이트 제작 애플리케이션, 디스크 저작 애플리케이션, 스프레드시트 애플리케이션, 게임 애플리케이션, 전화 애플리케이션, 화상 회의 애플리케이션, 이메일 애플리케이션, 인스턴트 메시징 애플리케이션, 건강/피트니스 애플리케이션, 사진 관리 애플리케이션, 디지털 카메라 애플리케이션, 디지털 비디오 카메라 애플리케이션, 웹 브라우징 애플리케이션, 디지털 음악 재생기 애플리케이션, 및/또는 디지털 비디오 재생기 애플리케이션 중 하나 이상과 같은 다양한 애플리케이션들을 지원한다.
디바이스 상에서 실행되는 다양한 애플리케이션들은, 선택적으로, 터치 감응형 표면과 같은 적어도 하나의 보편적인 물리적 사용자 인터페이스 디바이스를 사용한다. 터치 감응형 표면의 하나 이상의 기능들뿐만 아니라 디바이스 상에 디스플레이되는 대응하는 정보는, 선택적으로, 하나의 애플리케이션으로부터 다음 애플리케이션으로 그리고/또는 각각의 애플리케이션 내에서 조정되고/되거나 변경된다. 이러한 방식으로, 디바이스의 (터치 감응형 표면과 같은) 통상적인 물리적 아키텍처는, 선택적으로, 사용자에게 직관적이고 투명한 사용자 인터페이스들을 이용하여 다양한 애플리케이션들을 지원한다.
이제, 터치 감응형 디스플레이들을 갖는 휴대용 전자 디바이스들의 실시예들에 주목한다. 도 1a는 일부 실시예들에 따른, 터치 감응형 디스플레이(112)를 갖는 휴대용 다기능 디바이스(100)(본 명세서에서 전자 디바이스(100) 또는 디바이스(100)로도 상호교환가능하게 지칭됨)를 예시하는 블록도이다. 터치 감응형 디스플레이(112)는 때때로 편의상 "터치 스크린"이라고 지칭되고, 때때로 터치 감응형 디스플레이 시스템으로 알려져 있거나 또는 그렇게 지칭된다. 디바이스(100)는 메모리(102)(선택적으로, 하나 이상의 컴퓨터 판독 가능 저장 매체들을 포함함), 제어기(120), 하나 이상의 프로세싱 유닛들(CPU)(122), 주변기기 인터페이스(118), RF 회로부(108), 오디오 회로부(110), 스피커(111), 마이크로폰(113), 입/출력(I/O) 서브시스템(106), 다른 입력 또는 제어 디바이스들(116), 및 외부 포트(124)를 포함한다. 디바이스(100)는 선택적으로 하나 이상의 광학 센서(optical sensor)들(164)을 포함한다. 디바이스(100)는 선택적으로 디바이스(100) 상의 접촉들의 세기를 검출하기 위한 하나 이상의 세기 센서들(165)(예를 들어, 디바이스(100)의 터치 감응형 디스플레이 시스템(112)과 같은 터치 감응형 표면)을 포함한다. 디바이스(100)는 선택적으로 디바이스(100) 상의 촉각적 출력들을 생성하기 위한(예컨대, 디바이스(100)의 터치 감응형 디스플레이 시스템(112) 또는 디바이스(100)의 터치 패드와 같은 터치 감응형 표면 상의 촉각적 출력들을 생성하기 위한) 하나 이상의 촉각적 출력 생성기들(167)을 포함한다. 이들 컴포넌트는 선택적으로 하나 이상의 통신 버스 또는 신호 라인(103)을 통해 통신한다.
명세서 및 청구범위에서 사용되는 바와 같이, 터치 감응형 표면 상의 접촉의 "세기"라는 용어는 터치 감응형 표면 상의 접촉(예컨대, 손가락 접촉)의 힘 또는 압력(단위 면적 당 힘), 또는 터치 감응형 표면 상의 접촉의 힘 또는 압력에 대한 대체물(대용물(proxy))을 지칭한다. 접촉의 세기는, 적어도 4개의 구별되는 값들을 포함하고 더 전형적으로는 수백 개(예컨대, 적어도 256개)의 구별되는 값들을 포함하는 일정 범위의 값들을 갖는다. 접촉의 세기는 다양한 접근법들, 및 다양한 센서들 또는 센서들의 조합들을 이용하여, 선택적으로 결정(또는 측정)된다. 예를 들어, 터치 감응형 표면 아래의 또는 그에 인접한 하나 이상의 힘 센서는 터치 감응형 표면 상의 다양한 지점들에서 힘을 측정하는 데 선택적으로 사용된다. 일부 구현예들에서는, 다수의 힘 센서들로부터의 힘 측정치들이 접촉의 추정되는 힘을 결정하기 위해 조합(예컨대, 가중 평균)된다. 유사하게, 스타일러스의 압력 감응형 팁(tip)이 터치 감응형 표면 상의 스타일러스의 압력을 결정하는 데 선택적으로 사용된다. 대안적으로, 터치 감응형 표면 상에서 검출된 접촉 면적의 크기 및/또는 그에 대한 변화들, 접촉 부근의 터치 감응형 표면의 커패시턴스 및/또는 그에 대한 변화들, 및/또는 접촉 부근의 터치 감응형 표면의 저항 및/또는 그에 대한 변화들은 터치 감응형 표면 상의 접촉의 힘 또는 압력에 대한 대체물로서 선택적으로 이용된다. 일부 구현예들에서, 접촉 힘 또는 압력에 대한 대체 측정치들은 세기 임계치가 초과되었는지 여부를 결정하는 데 직접 이용된다(예컨대, 세기 임계치는 대체 측정치들에 대응하는 단위로 기술된다). 일부 구현예들에서, 접촉 힘 또는 압력에 대한 대체 측정치들은 추정된 힘 또는 압력으로 변환되고, 추정된 힘 또는 압력은 세기 임계치가 초과되었는지 여부를 결정하기 위해 이용된다(예컨대, 세기 임계치는 압력의 단위로 측정된 압력 임계치이다).
명세서 및 청구범위에 사용되는 바와 같이, "촉각적 출력"이라는 용어는 디바이스의 이전 위치에 대한 디바이스의 물리적 변위, 디바이스의 다른 컴포넌트(예컨대, 하우징)에 대한 디바이스의 컴포넌트(예컨대, 터치 감응형 표면)의 물리적 변위, 또는 사용자의 촉각을 이용하여 사용자에 의해 검출될 디바이스의 질량 중심에 대한 컴포넌트의 변위를 지칭한다. 예컨대, 디바이스 또는 디바이스의 컴포넌트가 터치에 민감한 사용자의 표면(예컨대, 사용자의 손의 손가락, 손바닥, 또는 다른 부위)과 접촉하는 상황에서, 물리적 변위에 의해 생성된 촉각적 출력은 사용자에 의해 디바이스 또는 디바이스의 컴포넌트의 물리적 특성들의 인지된 변화에 대응하는 촉감(tactile sensation)으로서 해석될 것이다. 예를 들어, 터치 감응형 표면(예를 들어, 터치 감응형 디스플레이 또는 트랙패드)의 이동은 선택적으로 물리적 액추에이터 버튼의 "다운 클릭(down click)" 또는 "업 클릭(up click)"으로서 사용자에 의해 해석된다. 일부 경우들에서, 사용자는 사용자의 이동에 의해 물리적으로 눌리는(예컨대, 변위되는) 터치 감응형 표면과 연관된 물리적 액추에이터 버튼의 이동이 없는 경우에도 "다운 클릭" 또는 "업 클릭"과 같은 촉감을 느낄 것이다. 다른 예로서, 터치 감응형 표면의 이동은 선택적으로, 터치 감응형 표면의 평활도(smoothness)에서의 변화가 존재하지 않는 경우에도, 터치 감응형 표면의 "조도(roughness)"로서 사용자에 의해 해석 또는 감지된다. 사용자에 의한 터치의 이러한 해석들이 사용자의 개별화된 감각 인지(sensory perception)에 영향을 받기 쉬울 것이지만, 대다수의 사용자들에게 보편적인 많은 터치 감각 인지가 있다. 따라서, 달리 언급되지 않는 한, 촉각적 출력이 사용자의 특정한 감각 인지(예를 들어, "업 클릭", "다운 클릭", "조도")에 대응하는 것으로서 기술될 때, 생성된 촉각적 출력은 전형적인 (또는 평균적인) 사용자에 대해 기술된 감각 인지를 생성할 디바이스 또는 이의 컴포넌트의 물리적 변위에 대응한다.
디바이스(100)는 휴대용 다기능 디바이스의 일례일 뿐이고, 디바이스(100)는, 선택적으로, 도시된 것보다 더 많거나 더 적은 컴포넌트들을 갖거나, 선택적으로, 2개 이상의 컴포넌트들을 조합하거나, 또는 선택적으로 컴포넌트들의 상이한 구성 또는 배열을 갖는다는 것이 이해되어야 한다. 도 1a에 도시된 다양한 컴포넌트들은 하나 이상의 신호 프로세싱 회로 및/또는 주문형 집적 회로(application specific integrated circuit)들을 비롯한, 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현된다.
메모리(102)는 선택적으로 고속 랜덤 액세스 메모리(예컨대, DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 솔리드 스테이트 메모리 디바이스들)를 포함하며, 또한 선택적으로 하나 이상의 자기 디스크 저장 디바이스, 플래시 메모리 디바이스, 또는 다른 비휘발성 솔리드 스테이트 메모리 디바이스와 같은 비휘발성 메모리를 포함한다. 메모리(102)는 선택적으로 프로세서(들)(122)로부터 원격으로 위치된 하나 이상의 저장 디바이스들을 포함한다. CPU(122) 및 주변기기 인터페이스(118)와 같은, 디바이스(100)의 다른 컴포넌트들에 의한 메모리(102)에의 액세스는 선택적으로 제어기(120)에 의해 제어된다.
주변기기 인터페이스(118)는 디바이스의 입력 및 출력 주변기기들을 CPU(122) 및 메모리(102)에 결합하는 데 사용될 수 있다. 하나 이상의 프로세서들(122)은 디바이스(100)에 대한 다양한 기능들을 수행하기 위해 그리고 데이터를 프로세싱하기 위해 메모리(102)에 저장된 다양한 소프트웨어 프로그램들 및/또는 명령어들의 세트들을 구동 또는 실행시킨다.
일부 실시예들에서, 주변기기 인터페이스(118), CPU(122) 및 제어기(120)는 선택적으로 칩(104)과 같은 단일 칩 상에 구현된다. 일부 다른 실시예들에서, 이들은 선택적으로 별개의 칩들 상에 구현된다.
RF(radio frequency) 회로부(108)는 전자기 신호들이라고도 지칭되는 RF 신호들을 수신 및 전송한다. RF 회로부(108)는 전기 신호들을 전자기 신호들로/로부터 변환하고, 전자기 신호들을 통해 통신 네트워크들 및 다른 통신 디바이스들과 통신한다. RF 회로부(108)는, 선택적으로, 안테나 시스템, RF 송수신기, 하나 이상의 증폭기들, 튜너, 하나 이상의 발진기들, 디지털 신호 프로세서, CODEC 칩셋, SIM(subscriber identity module) 카드, 메모리 등을 제한 없이 포함하는, 이들 기능들을 수행하기 위한 주지의 회로부를 포함한다. RF 회로부(108)는, 선택적으로, 무선 통신에 의해 월드 와이드 웹(World Wide Web, WWW)으로도 지칭되는 인터넷, 인트라넷 및/또는 무선 네트워크, 예컨대 셀룰러 전화 네트워크, 무선 근거리 네트워크(local area network, LAN) 및/또는 도시권 네트워크(metropolitan area network, MAN)와 같은 네트워크들 및 다른 디바이스들과 통신한다. 무선 통신은, 선택적으로, GSM(Global System for Mobile Communications), EDGE(Enhanced Data GSM Environment), HSDPA(high-speed downlink packet access), HSUPA(high-speed uplink packet access), EV-DO(Evolution, Data-Only), HSPA, HSPA+, DC-HSPDA(Dual-Cell HSPA), LTE(long term evolution), NFC(near field communication), W-CDMA(wideband code division multiple access), CDMA(code division multiple access), TDMA(time division multiple access), 블루투스(Bluetooth), Wi-Fi(Wireless Fidelity)(예컨대, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g 및/또는 IEEE 802.11n)를 포함하지만 이들로 제한되지는 않는 복수의 통신 표준들, 프로토콜들 및 기술들 중 임의의 것을 이용한다.
오디오 회로부(110), 스피커(111) 및 마이크로폰(113)은 사용자와 디바이스(100) 사이에서 오디오 인터페이스를 제공한다. 오디오 회로부(110)는 주변기기 인터페이스(118)로부터 오디오 데이터를 수신하고, 그 오디오 데이터를 전기 신호로 변환하고, 그 전기 신호를 스피커(111)로 송신한다. 스피커(111)는 전기 신호를 사람이 들을 수 있는 음파로 변환한다. 오디오 회로부(110)는 또한 마이크로폰(113)에 의해 음파로부터 변환된 전기 신호를 수신한다. 오디오 회로부(110)는 전기 신호를 오디오 데이터로 변환하고, 프로세싱을 위해 오디오 데이터를 주변기기 인터페이스(118)로 송신한다. 오디오 데이터는, 선택적으로, 주변기기 인터페이스(118)에 의해 메모리(102) 및/또는 RF 회로부(108)로부터 인출되고/되거나 메모리(102) 및/또는 RF 회로부(108)로 전송된다. 일부 실시예들에서, 오디오 회로부(110)는 또한 헤드셋 잭을 포함한다. 헤드셋 잭은 출력-전용 헤드폰들, 또는 출력(예컨대, 한쪽 또는 양쪽 귀용 헤드폰) 및 입력(예컨대, 마이크로폰) 양쪽 모두를 갖는 헤드셋과 같은 분리가능한 오디오 입/출력 주변기기들과 오디오 회로부(110) 사이의 인터페이스를 제공한다.
I/O 서브시스템(106)은 터치 스크린(112) 및 다른 입력 제어 디바이스들(116)과 같은, 디바이스(100) 상의 입/출력 주변기기들을 주변기기 인터페이스(118)에 연결한다. I/O 서브시스템(106)은 선택적으로 디스플레이 제어기(156), 광학 센서 제어기(158), 세기 센서 제어기(159), 햅틱 피드백 제어기(161), 및 기타 입력 또는 제어 디바이스들을 위한 하나 이상의 입력 제어기들(160)을 포함한다. 하나 이상의 입력 제어기들(160)은 다른 입력 또는 제어 디바이스들(116)로부터/로 전기 신호들을 수신/전송한다. 다른 입력 제어 디바이스들(116)은 선택적으로 물리적 버튼들(예컨대, 푸시 버튼(push button), 로커 버튼(rocker button) 등), 다이얼, 슬라이더 스위치, 조이스틱, 클릭 휠 등을 포함한다. 일부 대안의 실시예들에서, 입력 제어기(들)(160)는, 선택적으로, 키보드, 적외선 포트, USB 포트, 및 마우스와 같은 포인터 디바이스 중 임의의 것에 결합된다(또는 어떤 것에도 결합되지 않는다). 하나 이상의 버튼들은 선택적으로 스피커(111) 및/또는 마이크로폰(113)의 볼륨 제어를 위한 업/다운 버튼을 포함한다. 하나 이상의 버튼들은 선택적으로 푸시 버튼을 포함한다.
터치 감응형 디스플레이(112)는 디바이스와 사용자 사이에서 입력 인터페이스 및 출력 인터페이스를 제공한다. 디스플레이 제어기(156)는 터치 스크린(112)으로부터/으로 전기 신호들을 수신하고/하거나 전송한다. 터치 스크린(112)은 사용자에게 시각적 출력을 디스플레이한다. 시각적 출력은 선택적으로 그래픽, 텍스트, 아이콘들, 비디오, 및 이들의 임의의 조합(총칭하여 "그래픽"으로 지칭됨)을 포함한다. 일부 실시예들에서, 시각적 출력의 일부 또는 전부가 사용자 인터페이스 객체들에 대응한다.
터치 스크린(112)은 햅틱 및/또는 촉각적 접촉에 기초하는 사용자로부터의 입력을 수용하는 터치 감응형 표면, 센서 또는 센서들의 세트를 갖는다. 터치 스크린(112) 및 디스플레이 제어기(156)는 (메모리(102) 내의 임의의 연관된 모듈들 및/또는 명령어들의 세트들과 함께) 터치 스크린(112) 상의 접촉(및 접촉의 임의의 이동 또는 중단)을 검출하고, 검출된 접촉을 터치 스크린(112) 상에 디스플레이되는 사용자 인터페이스 객체들(예컨대, 하나 이상의 소프트 키들, 아이콘들, 웹 페이지들 또는 이미지들)과의 상호작용으로 변환한다. 예시적인 실시예에서, 터치 스크린(112)과 사용자 사이의 접촉 지점은 사용자의 손가락 아래의 영역에 대응한다.
터치 스크린(112)은 선택적으로 LCD(liquid crystal display) 기술, LPD(light emitting polymer display) 기술, 또는 LED(light emitting diode) 기술, 또는 OLED(organic light emitting diode) 기술을 이용하지만, 다른 실시예들에서는 다른 디스플레이 기술들이 이용된다. 터치 스크린(112) 및 디스플레이 제어기(156)는 용량성, 저항성, 적외선, 및 표면 음향파 기술들뿐만 아니라 다른 근접 센서 어레이들, 또는 터치 스크린(112)과의 하나 이상의 접촉 지점들을 결정하기 위한 다른 요소들을 포함하지만 이들로 한정되지 않는, 현재 공지되어 있거나 추후에 개발되는 복수의 터치 감응형 기술들 중 임의의 것을 사용하여, 선택적으로 접촉 및 그의 임의의 이동 또는 중단을 검출한다. 예시적인 실시예에서, 미국 캘리포니아주 쿠퍼티노 소재의 애플 인크.로부터의 아이폰®, 아이팟 터치®, 및 아이패드®에서 발견되는 것과 같은 투영형 상호 용량 감지 기술(projected mutual capacitance sensing technology)이 이용된다.
터치 스크린(112)은, 선택적으로, 400 dpi를 초과하는 비디오 해상도를 갖는다. 일부 실시예들에서, 터치 스크린(112)은 적어도 600 dpi의 비디오 해상도를 갖는다. 다른 실시예들에서, 터치 스크린(112)은 적어도 1000 dpi의 비디오 해상도를 갖는다. 사용자는 선택적으로, 스타일러스 또는 손가락과 같은 임의의 적합한 물체 또는 손가락(digit)을 사용하여 터치 스크린(112)과 접촉한다. 일부 실시예들에서, 사용자 인터페이스는, 주로 손가락 기반 접촉들 및 제스처들과 협업하도록 설계된다. 일부 실시예들에서, 디바이스는 손가락 기반 입력을 사용자가 원하는 액션들을 수행하기 위한 정밀한 포인터/커서 위치 또는 커맨드로 변환한다.
일부 실시예들에서, 터치 스크린 외에도, 디바이스(100)는, 선택적으로, 특정 기능들을 활성화 또는 비활성화시키기 위한 터치 패드(도시되지 않음)를 포함한다. 일부 실시예들에서, 터치 패드는, 터치 스크린과는 달리, 시각적 출력을 디스플레이하지 않는 디바이스의 터치 감응형 영역이다. 터치 패드는, 선택적으로, 터치 스크린(112)과는 별개인 터치 감응형 표면 또는 터치 스크린에 의해 형성된 터치 감응형 표면의 연장부이다.
디바이스(100)는 또한 다양한 컴포넌트들에 전력을 공급하기 위한 전력 시스템(162)을 포함한다. 전력 시스템(162)은, 선택적으로, 전력 관리 시스템, 하나 이상의 전원들(예컨대, 배터리, 교류 전류(alternating current, AC)), 재충전 시스템, 전력 고장 검출 회로, 전력 변환기 또는 인버터, 전력 상태 표시자(예컨대, 발광 다이오드(LED)), 및 휴대용 디바이스들 내에서의 전력의 생성, 관리 및 분배와 연관된 임의의 다른 컴포넌트들을 포함한다.
디바이스(100)는 또한 선택적으로 하나 이상의 광학 센서들(164)을 포함한다. 도 1a는 I/O 서브시스템(106) 내의 광학 센서 제어기(158)에 결합된 광학 센서를 도시한다. 광학 센서(164)는 선택적으로 CCD(charge-coupled device) 또는 CMOS(complementary metal-oxide semiconductor) 포토트랜지스터들을 포함한다. 광학 센서(164)는 하나 이상의 렌즈를 통해 투영되는, 주변환경으로부터의 광을 수광하고, 그 광을 이미지를 표현하는 데이터로 변환한다. 이미징 모듈(143)(카메라 모듈로도 지칭됨)과 함께, 광학 센서(164)는 선택적으로, 정지 이미지들 또는 비디오를 캡처한다. 일부 실시예들에서, 광학 센서는 디바이스 전면 상의 터치 스크린(112)의 반대편인 디바이스(100)의 배면 상에 위치되어, 터치 감응형 디스플레이가 정지 및/또는 비디오 이미지 획득을 위한 뷰파인더로서 사용될 수 있게 한다. 일부 실시예들에서, 다른 광학 센서가 디바이스의 전면 상에 위치되어, 사용자가 터치 감응형 디스플레이 상에서 다른 화상 회의 참여자들을 보는 동안, 사용자의 이미지가 화상 회의를 위해 선택적으로 획득되게 한다.
디바이스(100)는 또한, 선택적으로, 하나 이상의 접촉 세기 센서들(165)을 포함한다. 도 1a는 I/O 서브시스템(106) 내의 세기 센서 제어기(159)에 결합된 접촉 세기 센서를 도시한다. 접촉 세기 센서(165)는, 선택적으로, 하나 이상의 압전 저항 스트레인 게이지, 용량성 힘 센서, 전기적 힘 센서, 압전 힘 센서, 광학적 힘 센서, 용량성 터치 감응형 표면, 또는 다른 세기 센서들(예컨대, 터치 감응형 표면 상의 접촉의 힘(또는 압력)을 측정하는 데 사용되는 센서들)을 포함한다. 접촉 세기 센서(165)는 주변환경으로부터 접촉 세기 정보(예컨대, 압력 정보 또는 압력 정보에 대한 대용물)를 수신한다. 일부 실시예들에서, 적어도 하나의 접촉 세기 센서는 터치 감응형 표면(예컨대, 터치 감응형 디스플레이 시스템(112))과 함께 위치(collocate)되거나 그에 근접한다. 일부 실시예들에서, 적어도 하나의 접촉 세기 센서는 디바이스(100)의 전면 상에 위치된 터치 스크린(112)의 반대편인 디바이스(100)의 배면 상에 위치된다.
디바이스(100)는 또한 선택적으로 하나 이상의 근접 센서들(166)을 포함한다. 도 1a는 주변기기 인터페이스(118)에 결합된 근접 센서(166)를 도시한다. 대안적으로, 근접 센서(166)는 I/O 서브시스템(106) 내의 입력 제어기(160)에 결합된다. 일부 실시예들에서, 근접 센서는 다기능 디바이스가 사용자의 귀 근처에 위치될 때(예컨대, 사용자가 전화 통화를 하고 있을 때) 터치 스크린(112)을 끄고 디스에이블시킨다.
디바이스(100)는 또한, 선택적으로, 하나 이상의 촉각적 출력 생성기들(167)을 포함한다. 도 1a는 I/O 서브시스템(106) 내의 햅틱 피드백 제어기(161)에 결합된 촉각적 출력 생성기를 도시한다. 촉각적 출력 생성기(167)는, 선택적으로, 스피커들 또는 다른 오디오 컴포넌트들과 같은 하나 이상의 전자음향 디바이스들 및/또는 모터, 솔레노이드, 전기활성 중합체, 압전 액추에이터, 정전 액추에이터, 또는 다른 촉각적 출력 생성 컴포넌트(예컨대, 전기 신호들을 디바이스 상의 촉각적 출력들로 변환하는 컴포넌트)와 같은, 에너지를 선형 모션(linear motion)으로 변환하는 전자기계 디바이스들을 포함한다. 접촉 세기 센서(165)는 햅틱 피드백 모듈(133)로부터 촉각적 피드백 생성 명령어들을 수신하여 디바이스(100)의 사용자에 의해 감지될 수 있는 디바이스(100) 상의 촉각적 출력들을 생성한다. 일부 실시예들에서, 적어도 하나의 촉각적 출력 생성기는 터치 감응형 표면(예컨대, 터치 감응형 디스플레이 시스템(112))과 함께 위치되거나 그에 근접하며, 선택적으로, 터치 감응형 표면을 수직으로(예컨대, 디바이스(100)의 표면 내/외로) 또는 측방향으로(예컨대, 디바이스(100)의 표면과 동일한 평면에서 전후로) 이동시킴으로써 촉각적 출력을 생성한다. 일부 실시예들에서, 적어도 하나의 촉각적 출력 생성기 센서는 디바이스(100)의 전면 상에 위치된 터치 감응형 디스플레이(112)의 반대편인 디바이스(100)의 배면 상에 위치된다.
디바이스(100)는 또한 선택적으로 하나 이상의 가속도계들(168)을 포함한다. 도 1a는 주변기기 인터페이스(118)에 결합된 가속도계(168)를 도시한다. 대안적으로, 가속도계(168)는 선택적으로 I/O 서브시스템(106) 내의 입력 제어기(160)에 결합된다. 일부 실시예들에서, 하나 이상의 가속도계로부터 수신된 데이터의 분석에 기초하여 터치 감응형 디스플레이 상에 세로보기(portrait view) 또는 가로보기(landscape view)로 정보가 디스플레이된다. 디바이스(100)는, 선택적으로, 가속도계(들)(168) 외에도, 자력계(도시되지 않음), 및 디바이스(100)의 위치 및 배향(예컨대, 세로 또는 가로)에 관한 정보를 얻기 위한 GPS(또는 GLONASS 또는 다른 글로벌 내비게이션 시스템) 수신기(도시되지 않음)를 포함한다.
일부 실시예들에서, 메모리(102)에 저장된 소프트웨어 컴포넌트들은 운영 체제(126), 사전행동적 모듈(proactive module)(163)(선택적으로, 애플리케이션 사용 데이터 테이블들(335), 트리거 조건 테이블들(402), 트리거 확립 모듈(163-1), 및/또는 사용 데이터 수집 모듈(163-2) 중 하나 이상을 포함함), 통신 모듈(또는 명령어들의 세트)(128), 접촉/모션 모듈(또는 명령어들의 세트)(130), 그래픽 모듈(또는 명령어들의 세트)(132), 텍스트 입력 모듈(또는 명령어들의 세트)(134), 글로벌 포지셔닝 시스템(GPS) 모듈(또는 명령어들의 세트)(135), 및 애플리케이션들(또는 명령어들의 세트들)(136)을 포함한다. 게다가, 일부 실시예들에서, 메모리(102)는 도 1a에 도시된 바와 같이 디바이스/글로벌 내부 상태(157)를 저장한다. 디바이스/글로벌 내부 상태(157)는: 존재하는 경우, 어떤 애플리케이션들이 현재 활성인지를 나타내는 활성 애플리케이션 상태; 어떤 애플리케이션들, 뷰들 또는 다른 정보가 터치 감응형 디스플레이(112)의 다양한 영역들을 점유하는지를 나타내는 디스플레이 상태; 디바이스의 다양한 센서들 및 입력 제어 디바이스들(116)로부터 얻어진 정보를 포함하는 센서 상태; 및 디바이스의 위치 및/또는 자세(예컨대, 디바이스의 배향)에 관한 위치 정보 중 하나 이상을 포함한다.
운영 체제(126)(예컨대, 다윈(Darwin), RTXC, 리눅스(LINUX), 유닉스(UNIX), OS X, 윈도우(WINDOWS), 또는 VxWorks와 같은 임베디드 운영 체제)는 일반적인 시스템 태스크들(예컨대, 메모리 관리, 저장 디바이스 제어, 전력 관리 등)을 제어 및 관리하기 위한 다양한 소프트웨어 컴포넌트들 및/또는 드라이버들을 포함하고, 다양한 하드웨어 및 소프트웨어 컴포넌트들 사이의 통신을 가능하게 한다.
통신 모듈(128)은 하나 이상의 외부 포트(124)를 통한 다른 디바이스들과의 통신을 용이하게 하고, 또한 RF 회로부(108) 및/또는 외부 포트(124)에 의해 수신되는 데이터를 처리하기 위한 다양한 소프트웨어 컴포넌트들을 포함한다. 외부 포트(124)(예컨대, 범용 직렬 버스(Universal Serial Bus, USB), 파이어와이어(FIREWIRE) 등)는 다른 디바이스들에 직접적으로 또는 네트워크(예컨대, 인터넷, 무선 LAN 등)를 통해 간접적으로 결합하도록 구성된다. 일부 실시예들에서, 외부 포트는 애플 인크.로부터의 아이팟 디바이스들의 일부 실시예들 상에서 사용되는 30-핀 커넥터와 동일하거나 유사하고/하거나 호환가능한 멀티 핀(예컨대, 30-핀) 커넥터이다. 다른 실시예들에서, 외부 포트는 애플 인크.로부터의 라이트닝(LIGHTNING) 커넥터들에서 사용되는 8-핀 커넥터와 동일하거나 유사하고/하거나 호환가능한 멀티 핀(예컨대, 8-핀) 커넥터이다.
접촉/모션 모듈(130)은, 선택적으로, (디스플레이 제어기(156)와 함께) 터치 스크린(112), 및 다른 터치 감응형 디바이스들(예컨대, 터치 패드 또는 물리적 클릭 휠)과의 접촉을 검출한다. 접촉/모션 모듈(130)은 접촉이 발생했는지 여부를 결정하는 것(예컨대, 손가락-다운 이벤트(finger-down event)를 검출하는 것), 접촉의 세기(예컨대, 접촉의 힘 또는 압력, 또는 접촉의 힘 또는 압력에 대한 대체물)를 결정하는 것, 접촉의 이동이 있는지 여부를 결정하여 터치 감응형 표면을 가로지르는 이동을 추적하는 것(예컨대, 하나 이상의 손가락-드래깅 이벤트(finger-dragging event)들을 검출하는 것), 및 접촉이 중지되었는지 여부를 결정하는 것(예컨대, 손가락-업 이벤트(finger-up event) 또는 접촉 중단을 검출하는 것)과 같은, 접촉의 검출에 관련된 다양한 동작들을 수행하기 위한 다양한 소프트웨어 컴포넌트들을 포함한다. 접촉/모션 모듈(130)은 터치 감응형 표면으로부터 접촉 데이터를 수신한다. 일련의 접촉 데이터에 의해 표현되는 접촉 지점의 이동을 결정하는 것은, 선택적으로, 접촉 지점의 속력(크기), 속도(크기 및 방향), 및/또는 가속도(크기 및/또는 방향의 변화)를 결정하는 것을 포함한다. 이들 동작들은, 선택적으로, 단일 접촉들(예컨대, 한 손가락 접촉들)에 또는 다수의 동시 접촉들(예컨대, "멀티터치"/다수의 손가락 접촉들)에 적용된다. 일부 실시예들에서, 접촉/모션 모듈(130) 및 디스플레이 제어기(156)는 터치 패드 상의 접촉을 검출한다.
일부 실시예들에서, 접촉/모션 모듈(130)은 하나 이상의 세기 임계치들의 세트를 이용하여, 동작이 사용자에 의해 수행되었는지 여부를 결정한다(예컨대, 사용자가 어포던스를 선택했거나 그 위를 "클릭"했는지 여부를 결정한다). 일부 실시예들에서, 적어도 세기 임계치들의 서브세트가 소프트웨어 파라미터들에 따라 결정된다(예컨대, 세기 임계치들은 특정 물리적 액추에이터들의 활성화 임계치들에 의해 결정되지 않으며, 디바이스(100)의 물리적 하드웨어를 변경함이 없이 조정될 수 있다). 예를 들면, 트랙패드 또는 터치 감응형 디스플레이의 마우스 "클릭" 임계치는 트랙패드 또는 터치 감응형 디스플레이 하드웨어를 변경함이 없이 넓은 범위의 미리정의된 임계값들 중 임의의 것으로 설정될 수 있다. 추가로, 일부 구현예들에서, 디바이스의 사용자는 (예컨대, 개별 세기 임계치들을 조정함으로써 그리고/또는 복수의 세기 임계치들을 시스템 레벨 클릭 "세기" 파라미터로 한꺼번에 조정함으로써) 세기 임계치들의 세트 중 하나 이상을 조정하기 위한 소프트웨어 설정들을 제공받는다.
접촉/모션 모듈(130)은, 선택적으로, 사용자에 의해 입력된 제스처를 검출한다. 터치 감응형 표면 상에서의 상이한 제스처들은 상이한 접촉 패턴들(예컨대, 상이한 모션들, 타이밍들, 및/또는 검출된 접촉들의 세기들)을 갖는다. 따라서, 제스처는, 선택적으로, 특정 접촉 패턴을 검출함으로써 검출된다. 예컨대, 손가락 탭 제스처(finger tap gesture)를 검출하는 것은 손가락-다운 이벤트를 검출한 다음에 손가락-다운 이벤트와 동일한 위치(또는 실질적으로 동일한 위치)(예컨대, 아이콘의 위치)에서 손가락-업(리프트오프(lift off)) 이벤트를 검출하는 것을 포함한다. 다른 예로서, 터치 감응형 표면 상에서 손가락 스와이프 제스처(finger swipe gesture)를 검출하는 것은 손가락-다운 이벤트를 검출한 다음에 하나 이상의 손가락-드래깅 이벤트를 검출하고, 일부 실시예들에서, 그에 후속하여 손가락-업(리프트오프) 이벤트를 검출하는 것을 포함한다.
그래픽 모듈(132)은, 디스플레이되는 그래픽의 시각적 효과(예컨대, 밝기, 투명도, 채도, 콘트라스트 또는 다른 시각적 속성)를 변경하기 위한 컴포넌트들을 포함하는, 터치 스크린(112) 또는 다른 디스플레이 상에서 그래픽을 렌더링 및 디스플레이하기 위한 다양한 공지된 소프트웨어 컴포넌트들을 포함한다. 본 명세서에 사용되는 바와 같이, 용어 "그래픽"은 텍스트, 웹 페이지들, 아이콘들(예를 들어, 소프트 키들을 포함한 사용자-인터페이스 객체들), 디지털 이미지들, 비디오들, 애니메이션들 등을 제한 없이 포함하는, 사용자에게 디스플레이될 수 있는 임의의 객체를 포함한다.
일부 실시예들에서, 그래픽 모듈(132)은 사용될 그래픽을 표현하는 데이터를 저장한다. 각각의 그래픽에는 선택적으로 대응하는 코드가 할당된다. 그래픽 모듈(132)은, 필요한 경우 좌표 데이터 및 다른 그래픽 속성 데이터와 함께, 디스플레이될 그래픽을 특정하는 하나 이상의 코드들을 애플리케이션들 등으로부터 수신하며, 이어서 스크린 이미지 데이터를 생성하여 디스플레이 제어기(156)에 출력한다.
햅틱 피드백 모듈(133)은 디바이스(100)와의 사용자 상호작용들에 응답하여 디바이스(100) 상의 하나 이상의 위치에서 촉각적 출력들을 생성하기 위하여 촉각적 출력 생성기(들)(167)에 의해 이용되는 명령어들을 생성하기 위한 다양한 소프트웨어 컴포넌트들을 포함한다.
선택적으로 그래픽 모듈(132)의 컴포넌트인 텍스트 입력 모듈(134)은 다양한 애플리케이션들(예컨대, 연락처 모듈(137), 이메일 클라이언트 모듈(140), IM 모듈(141), 브라우저 모듈(147), 및 텍스트 입력을 필요로 하는 임의의 다른 애플리케이션)에 텍스트를 입력하기 위한 소프트 키보드들을 제공한다.
GPS 모듈(135)은 디바이스의 위치를 결정하고, 이 정보를 다양한 애플리케이션들에서의 사용을 위해 (예컨대, 위치 기반 다이얼링에서 사용하기 위해 전화(138)에, 사진/비디오 메타데이터로서 카메라(143)에, 그리고 날씨 위젯들, 지역 옐로 페이지 위젯들 및 지도/내비게이션 위젯들과 같은 위치 기반 서비스들을 제공하는 애플리케이션들에) 제공한다.
애플리케이션들("앱(app)들")(136)은, 선택적으로, 하기의 모듈들(또는 명령어들의 세트들), 또는 이들의 서브세트 또는 수퍼세트(superset)를 포함한다:
Figure pat00001
연락처 모듈(137)(때때로 주소록 또는 연락처 목록으로 지칭됨);
Figure pat00002
전화 모듈(138);
Figure pat00003
화상 회의 모듈(139);
Figure pat00004
이메일 클라이언트 모듈(140);
Figure pat00005
인스턴트 메시징(IM) 모듈(141);
Figure pat00006
건강 모듈(142);
Figure pat00007
정지 및/또는 비디오 이미지들을 위한 카메라 모듈(143);
Figure pat00008
이미지 관리 모듈(144);
Figure pat00009
브라우저 모듈(147);
Figure pat00010
캘린더 모듈(148);
Figure pat00011
날씨 위젯(149-1), 주식 위젯(149-2), 계산기 위젯(149-3), 알람 시계 위젯(149-4), 사전 위젯(149-5), 및 사용자에 의해 얻어지는 다른 위젯들뿐 아니라 사용자-생성 위젯들(149-6) 중 하나 이상을 선택적으로 포함하는 위젯 모듈들(149);
Figure pat00012
검색 모듈(151);
Figure pat00013
비디오 재생기 모듈 및 음악 재생기 모듈로 선택적으로 구성된 비디오 및 음악 재생기 모듈(152);
Figure pat00014
메모 모듈(153);
Figure pat00015
지도 모듈(154); 및/또는
Figure pat00016
온라인 비디오 모듈(155).
선택적으로 메모리(102)에 저장된 다른 애플리케이션들(136)의 예들은 다른 워드 프로세싱 애플리케이션들, 다른 이미지 편집 애플리케이션들, 드로잉 애플리케이션들, 프레젠테이션 애플리케이션들, 웹사이트 제작 애플리케이션들, 디스크 저작 애플리케이션들, 스프레드시트 애플리케이션들, JAVA 인에이블형 애플리케이션들, 암호화, 디지털 권한 관리, 음성 인식, 사용자-생성 위젯들(149-6)을 만들기 위한 위젯 생성기 모듈, 및 음성 복제를 포함한다.
터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132) 및 텍스트 입력 모듈(134)과 함께, 연락처 모듈(137)은, 선택적으로, 하기를 비롯한, 주소록 또는 연락처 목록(예컨대, 메모리(102) 또는 메모리(370) 내의 연락처 모듈(137)에 저장됨)을 관리하는 데 사용된다: 이름(들)을 주소록에 추가하는 것; 주소록으로부터 이름(들)을 삭제하는 것; 전화번호(들), 이메일 주소(들), 물리적 주소(들) 또는 기타 정보를 이름과 연관시키는 것; 이미지를 이름과 연관시키는 것; 이름들을 카테고리화 및 분류하는 것; 전화 모듈(138), 화상 회의 모듈(139), 이메일 클라이언트 모듈(140) 또는 IM 모듈(141)에 의한 통신을 시작하고/하거나 용이하게 하기 위해 전화 번호들 또는 이메일 주소들을 제공하는 것; 및 기타 등등.
RF 회로부(108), 오디오 회로부(110), 스피커(111), 마이크로폰(113), 터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 및 텍스트 입력 모듈(134)과 함께, 전화 모듈(138)은, 선택적으로, 전화번호에 대응하는 문자들의 시퀀스를 입력하고, 주소록(137) 내의 하나 이상의 전화번호에 액세스하고, 입력된 전화번호를 수정하고, 개별 전화번호를 다이얼링하고, 대화를 하고, 대화가 완료된 때 연결해제하거나 끊는 데 사용된다. 전술된 바와 같이, 무선 통신은 선택적으로 복수의 통신 표준들, 프로토콜들 및 기술들 중 임의의 것을 사용한다.
RF 회로부(108), 오디오 회로부(110), 스피커(111), 마이크로폰(113), 터치 스크린(112), 디스플레이 제어기(156), 광학 센서(164), 광학 센서 제어기(158), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134), 연락처 목록(137) 및 전화 모듈(138)과 함께, 화상회의 모듈(139)은 사용자 지시들에 따라 사용자와 한 명 이상의 다른 참여자들 사이의 화상 회의를 시작, 수행 및 종료하도록 하는 실행가능한 명령어들을 포함한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132) 및 텍스트 입력 모듈(134)과 함께, 이메일 클라이언트 모듈(140)은 사용자 지시들에 응답하여 이메일을 작성, 송신, 수신, 및 관리하도록 하는 실행가능한 명령어들을 포함한다. 이미지 관리 모듈(144)과 함께, 이메일 클라이언트 모듈(140)은 카메라 모듈(143)로 촬영된 정지 또는 비디오 이미지들을 갖는 이메일들을 작성 및 송신하는 것을 매우 용이하게 한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132) 및 텍스트 입력 모듈(134)과 함께, 인스턴트 메시징 모듈(141)은, 인스턴트 메시지에 대응하는 문자들의 시퀀스를 입력하고, 이전에 입력된 문자들을 수정하고, (예를 들어, 전화 기반 인스턴트 메시지들을 위한 단문자 메시지 서비스(SMS) 또는 멀티미디어 메시지 서비스(Multimedia Message Service, MMS) 프로토콜을 이용하거나, 인터넷 기반 인스턴트 메시지들을 위한 XMPP, SIMPLE 또는 IMPS를 이용하여) 개별 인스턴트 메시지를 송신하고, 인스턴트 메시지들을 수신하고, 수신된 인스턴트 메시지들을 보도록 하는 실행가능한 명령어들을 포함한다. 일부 실시예들에서, 전송 및/또는 수신된 인스턴트 메시지들은 선택적으로 그래픽, 사진, 오디오 파일, 비디오 파일 및/또는 MMS 및/또는 EMS(Enhanced Messaging Service)에서 지원되는 바와 같은 다른 첨부물들을 포함한다. 본 명세서에 사용되는 바와 같이, "인스턴트 메시징"은 전화-기반 메시지들(예를 들어, SMS 또는 MMS를 이용하여 전송된 메시지들) 및 인터넷-기반 메시지들(예를 들어, XMPP, SIMPLE 또는 IMPS를 이용하여 전송된 메시지들) 양쪽 모두를 지칭한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134), GPS 모듈(135), 지도 모듈(154), 및 비디오 및 음악 재생기 모듈(146)과 함께, 건강 모듈(142)은 (예컨대, 시간, 거리, 및/또는 열량 소비 목표들과 함께) 운동들을 생성하고, 운동 센서들(워치 또는 보수계(pedometer)와 같은 스포츠 디바이스들)과 통신하고, 운동 센서 데이터를 수신하고, 운동을 모니터링하는 데 사용되는 센서들을 교정하고, 운동 동안 음악을 선택 및 재생하고, 운동 데이터를 디스플레이, 저장 및 송신하도록 하는 실행가능한 명령어들을 포함한다.
터치 스크린(112), 디스플레이 제어기(156), 광학 센서(들)(164), 광학 센서 제어기(158), 접촉 모듈(130), 그래픽 모듈(132) 및 이미지 관리 모듈(144)과 함께, 카메라 모듈(143)은, 정지 이미지들 또는 비디오(비디오 스트림을 포함함)를 캡처하고 이들을 메모리(102) 내에 저장하거나, 정지 이미지 또는 비디오의 특성들을 수정하거나, 또는 메모리(102)로부터 정지 이미지 또는 비디오를 삭제하도록 하는 실행가능한 명령어들을 포함한다.
터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134) 및 카메라 모듈(143)과 함께, 이미지 관리 모듈(144)은 정지 및/또는 비디오 이미지들을 배열하거나, 수정(예컨대, 편집)하거나, 또는 달리 조작하고, 라벨링하고, 삭제하고, (예컨대, 디지털 슬라이드 쇼 또는 앨범에) 제시하고, 저장하도록 하는 실행가능한 명령어들을 포함한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132) 및 텍스트 입력 모듈(134)과 함께, 브라우저 모듈(147)은, 웹 페이지들 또는 이들의 부분들은 물론 웹 페이지들에 링크된 첨부물들 및 다른 파일들을 검색하고, 그에 링크하며, 수신하고, 디스플레이하는 것을 비롯한, 사용자 지시들에 따라 인터넷을 브라우징하도록 하는 실행가능한 명령어들을 포함한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134), 이메일 클라이언트 모듈(140), 및 브라우저 모듈(147)과 함께, 캘린더 모듈(148)은 사용자 지시들에 따라 캘린더들 및 캘린더들과 연관된 데이터(예컨대, 캘린더 엔트리들, 할 일 목록들 등)를 생성, 디스플레이, 수정, 및 저장하도록 하는 실행가능한 명령어들을 포함한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134) 및 브라우저 모듈(147)과 함께, 위젯 모듈들(149)은 선택적으로 사용자에 의해 다운로드되어 사용되거나(예컨대, 날씨 위젯(149-1), 주식 위젯(149-2), 계산기 위젯(149-3), 알람 시계 위젯(149-4) 및 사전 위젯(149-5)) 또는 사용자에 의해 생성되는(예컨대, 사용자-생성 위젯(149-6)) 미니 애플리케이션들이다. 일부 실시예들에서, 위젯은 HTML(Hypertext Markup Language) 파일, CSS(Cascading Style Sheets) 파일 및 자바스크립트(JavaScript) 파일을 포함한다. 일부 실시예들에서, 위젯은 XML(Extensible Markup Language) 파일 및 자바스크립트 파일(예컨대, 야후(Yahoo)! 위젯들)을 포함한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134) 및 브라우저 모듈(147)과 함께, 위젯 생성기 모듈(도시되지 않음)은 사용자에 의해 위젯들을 생성(예를 들면, 웹페이지의 사용자-특정된 부분을 위젯으로 변환)하는 데 선택적으로 사용된다.
터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132) 및 텍스트 입력 모듈(134)과 함께, 검색 모듈(151)은 사용자 지시들에 따라 하나 이상의 검색 기준(예컨대, 하나 이상의 사용자-특정된 검색 용어)에 매칭되는 메모리(102) 내의 텍스트, 음악, 사운드, 이미지, 비디오, 및/또는 다른 파일들을 검색하도록 하는 실행가능한 명령어들을 포함한다. 일부 실시예들에서, 검색 모듈(151)은, 검색 엔트리 부분 및 예측 부분(예컨대, 도 6a 내지 도 9c를 참조하여 아래에서 더욱 상세하게 논의되는 도 9b의 검색 엔트리 부분(920) 및 예측 부분(930))을 디스플레이하기 위한 실행가능한 명령어들을 추가로 포함한다. 일부 실시예들에서, 검색 모듈(151)은, 사전행동적 모듈(163)과 함께, 또한, 검색 엔트리 부분에서 임의의 사용자 입력을 수신하기 전에, (도 3a 내지 도 9c를 참조하여 아래에서 더욱 상세하게 논의되는 바와 같이) 예측 부분을, 제안되거나 예측된 사람들, 애플리케이션들 내의 액션들, 애플리케이션들, 인근 장소들, 및/또는 뉴스 기사들에 대한 어포던스들로 채운다.
터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 오디오 회로부(110), 스피커(111), RF 회로부(108) 및 브라우저 모듈(147)과 함께, 비디오 및 음악 재생기 모듈(152)은, 사용자가 MP3 또는 AAC 파일들과 같은 하나 이상의 파일 포맷으로 저장된 녹음된 음악 및 다른 사운드 파일들을 다운로드 및 재생할 수 있게 하는 실행가능한 명령어들, 및 비디오들을 (예컨대, 터치 스크린(112) 상에서 또는 외부 포트(124)를 통해 외부의 연결된 디스플레이 상에서) 디스플레이하거나, 상영하거나, 또는 달리 재생하도록 하는 실행가능한 명령어들을 포함한다. 일부 실시예들에서, 디바이스(100)는 선택적으로 애플 인크.로부터의 아이팟과 같은 MP3 플레이어의 기능을 포함한다.
터치 스크린(112), 디스플레이 제어기(156), 접촉 모듈(130), 그래픽 모듈(132) 및 텍스트 입력 모듈(134)과 함께, 메모 모듈(153)은 사용자 지시들에 따라 메모들, 할 일 목록들 등을 생성 및 관리하도록 하는 실행가능한 명령어들을 포함한다.
RF 회로부(108), 터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 텍스트 입력 모듈(134), GPS 모듈(135), 및 브라우저 모듈(147)과 함께, 지도 모듈(154)은, 선택적으로, 사용자 지시들에 따라 지도들 및 지도들과 연관된 데이터(예컨대, 운전 길 안내; 특정 위치에서의 또는 그 인근의 상점들 및 다른 관심 지점들에 관한 데이터; 및 다른 위치 기반 데이터)를 수신, 디스플레이, 수정, 및 저장하는 데 사용된다.
터치 스크린(112), 디스플레이 시스템 제어기(156), 접촉 모듈(130), 그래픽 모듈(132), 오디오 회로부(110), 스피커(111), RF 회로부(108), 텍스트 입력 모듈(134), 이메일 클라이언트 모듈(140) 및 브라우저 모듈(147)과 함께, 온라인 비디오 모듈(155)은 사용자가 H.264와 같은 하나 이상의 파일 포맷의 온라인 비디오들에 액세스하고, 그들을 브라우징하고, (예컨대, 스트리밍 및/또는 다운로드에 의해) 수신하고, (예컨대, 터치 스크린 상에서 또는 외부 포트(124)를 통해 외부의 연결된 디스플레이 상에서) 재생하고, 특정한 온라인 비디오로의 링크와 함께 이메일을 전송하고, 달리 관리하게 하는 명령어들을 포함한다. 일부 실시예들에서, 이메일 클라이언트 모듈(140)보다는 오히려 인스턴트 메시징 모듈(141)이 특정 온라인 비디오로의 링크를 전송하는 데 사용된다.
도 1a에 도시된 바와 같이, 휴대용 다기능 디바이스(100)는 또한 관련 콘텐츠를 사전행동적으로 식별 및 표면화(예컨대, 애플리케이션 내의 액션에 대응하는 사용자 인터페이스 객체(예컨대, 음악 앱 내의 재생목록을 재생하기 위한 UI 객체)를 잠금 화면에 또는 검색 인터페이스 내에 표면화)하기 위한 사전행동적 모듈(163)을 포함한다. 사전행동적 모듈(163)은, 선택적으로, 하기의 모듈들(또는 명령어들의 세트들), 또는 이들의 서브세트 또는 수퍼세트를 포함한다:
Figure pat00017
애플리케이션 사용 테이블들(335);
Figure pat00018
트리거 조건 테이블들(402);
Figure pat00019
트리거 확립 모듈(163-1);
Figure pat00020
사용 데이터 수집 모듈(163-2);
Figure pat00021
사전행동적 제안 모듈(163-3); 및
Figure pat00022
(음성 통신) 콘텐츠 추출 모듈(163-4).
애플리케이션들(136), GPS 모듈(135), 운영 체제(126), I/O 서브시스템(106), RF 회로부(108), 외부 부분(124), 근접 센서(166), 오디오 회로부(110), 가속도계들(168), 스피커(111), 마이크로폰(113), 및 주변기기 인터페이스(118)와 함께, 애플리케이션 사용 테이블들(335) 및 사용 데이터 수집 모듈(163-2)은 (예컨대, 도 1a의 상기 식별된 디바이스(100)의 컴포넌트들로부터) 애플리케이션 사용 데이터를 수신하고/하거나 저장한다. 일부 실시예들에서, 애플리케이션 사용량은 사용 데이터 수집 모듈(163-2)에 보고되고, 이어서 애플리케이션 사용 테이블들(335)에 저장된다. 일부 실시예들에서, 애플리케이션 사용 데이터는 특정 애플리케이션(136)의 사용자 사용에 대응하는 모든 (또는 가장 중요하거나, 관련되거나, 또는 예측되는) 컨텍스트 사용 정보를 포함한다. 일부 실시예들에서, 각각의 특정 애플리케이션은 사용자가 애플리케이션과 상호작용하는 동안 사용 데이터를 저장하고, 그 사용 데이터는 이어서 저장을 위해 애플리케이션 사용 데이터 테이블들(335)에 보고된다(예컨대, 도 3b의 특정 애플리케이션(136-1)에 대한 사용 데이터(193)는 모든 센서 판독값들, 수행된 애플리케이션 내의 액션(in-application action)들, 디바이스 결합 정보 등을 포함하고, 이러한 사용 데이터(193)는 테이블 내에 레코드로서 저장하기 위해 애플리케이션 사용 테이블(335)로 전송된다). 예를 들어, 사용자가 브라우저 모듈(147)과 상호작용하는 동안, 애플리케이션 사용 데이터는, 애플리케이션 사용 테이블들(335)에 의해 수신 및 저장된 다른 컨텍스트 사용 정보 및 다른 센서 데이터 중에서, 디바이스(100)의 현재 GPS 좌표들(예컨대, GPS 모듈(135)에 의해 결정되는 바와 같음), 모션 데이터(예컨대, 가속도계들(168)에 의해 결정되는 바와 같음), 주변 광 데이터(예컨대, 광학 센서(164)에 의해 결정되는 바와 같음), 및 브라우저 모듈(147) 내에서 사용자에 의해 수행된 애플리케이션 내의 액션들(예컨대, 방문한 URL들, 각각의 페이지를 방문하는 데 소비한 시간)을 비롯한, 모든 컨텍스트 사용 정보를 수신하고 저장한다. 애플리케이션 사용 테이블들(335)에 관한 추가 정보가 도 3a 및 도 3b를 참조하여 아래에서 제공된다. 도 5를 참조하여 아래에서 논의되는 바와 같이, 애플리케이션 사용 데이터는, 일부 실시예들에서, 원격으로 (예컨대, 도 5의 하나 이상의 서버들(502)에) 저장된다.
트리거 조건 테이블들(402) 및 트리거 확립 모듈(163-1)은 애플리케이션 사용 테이블들(335)에 저장된 사용 데이터에 기초하여 확립되는 트리거 조건들을 수신하고/하거나 저장한다. 일부 실시예들에서, 트리거 확립 모듈(163-1)은 패턴들을 식별하기 위해 애플리케이션 사용 테이블들(335)에 저장된 데이터를 마이닝(mining)하고 분석한다. 예를 들어, 애플리케이션 사용 데이터가, 사용자가 항상 매일 3:00 PM 내지 4:00 PM 사이에 음악 애플리케이션을 개시함을 나타내는 경우, 트리거 확립 모듈(163-1)은, 만족될 때(예컨대, 하루 중 현재 시간이 3:00 PM 내지 4:00 PM의 미리결정된 시간 내에 있을 때), 디바이스(100)로 하여금 음악 애플리케이션을 개시하게 하는 (또는 적어도, 음악 애플리케이션이 이용가능하다는 표시를 사용자에게 제공하게 하는, 예컨대, 사용자가 음악 애플리케이션에 쉽게 액세스할 수 있게 하는 UI 객체를 잠금 화면 상에 디스플레이하게 하는) 트리거 조건을 생성하고 트리거 조건 테이블들(402)에 저장한다. 트리거 조건 테이블들(402)에 관한 추가 정보가 도 4a 및 도 4b를 참조하여 아래에 제공된다. 도 5를 참조하여 아래에서 논의되는 바와 같이, 일부 실시예들에서, 패턴들의 식별 및 식별된 패턴들에 기초한 트리거 조건들의 확립은 원격 서버에서(예컨대, 도 5의 하나 이상의 서버들(502)에서) 수행된다.
사전행동적 제안 모듈(163-3)은 디바이스(100)의 다른 컴포넌트들과 함께 작동하여, 전자 디바이스 상에서 이용가능한 다양한 상이한 애플리케이션들에서 사용하기 위한 콘텐츠를 사용자에게 사전행동적으로 제공한다. 예를 들어, 사전행동적 제안 모듈(163-3)은, 검색 인터페이스 내에 포함하기 위한 제안된 검색 질의들 및 다른 제안된 콘텐츠를 제공하고(예컨대, 도 10a 내지 도 10c를 참조하여 아래에서 논의되는 바와 같음), 사용자들이 그들의 주차된 차량들을 찾아내는 것을 돕는 정보를 제공하고(예컨대, 도 14를 참조하여 아래에서 논의되는 바와 같음), 인근의 관심 지점들에 관한 정보를 제공하고(예컨대, 도 16a 및 도 16b를 참조하여 아래에서 논의되는 바와 같음), 음성 통신 동안 제공되는 스피치로부터 추출된 콘텐츠 항목들을 제공하고(예컨대, 도 18a 및 도 18b를 참조하여 아래에서 논의되는 바와 같음), 사용자들이 최소 개수의 입력들로 원하는 콘텐츠를 효율적으로 찾아내는 것을 돕는(예컨대, 그 콘텐츠를 검색할 필요 없이, 사전행동적 제안 모듈(163-3)은 사용자에 의한 선택을 위해 적절한 시간에 콘텐츠가 제공됨을 보장하는 것을 도움) 많은 다른 제안들을 제공하는 것을 돕는다(예컨대, 도 20, 도 21a, 도 21b, 도 24a, 도 24b, 도 26a, 도 26b, 도 27, 및 도 29를 참조하여 아래에서 논의되는 바와 같음).
(음성 통신) 콘텐츠 추출 모듈(163-4)은 디바이스(100)의 다른 컴포넌트들과 함께 작동하여, 새로운 콘텐츠 항목에 관련되는 스피치를 식별하고 음성 통신으로부터 새로운 콘텐츠 항목들을 추출한다(예컨대, 도 18a, 도 18b 및 도 20을 참조하여 아래에서 더욱 상세하게 논의되는 바와 같이, 연락처 정보, 이벤트들에 관한 정보, 및 위치들에 관한 정보).
상기 식별된 모듈들 및 애플리케이션들 각각은 상기 설명된 하나 이상의 기능들 및 본 출원에 기술되는 방법들(예컨대, 컴퓨터 구현 방법들 및 본 명세서에 기술되는 다른 정보 프로세싱 방법들)을 수행하기 위한 실행가능한 명령어들의 세트에 대응한다. 이들 모듈들(예컨대, 명령어들의 세트들)은 개별 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없으며, 이에 따라 이들 모듈들의 다양한 서브세트들은, 선택적으로, 다양한 실시예들에서 조합되거나 다른 방식으로 재배열된다. 일부 실시예들에서, 메모리(102)는 선택적으로, 상기 식별된 모듈들 및 데이터 구조들의 서브세트를 저장한다. 또한, 메모리(102)는 선택적으로 위에서 기술되지 않은 추가의 모듈들 및 데이터 구조들을 저장한다.
일부 실시예들에서, 디바이스(100)는 디바이스 상의 미리정의된 세트의 기능들의 동작이 터치 스크린 및/또는 터치 패드를 통해 전용으로 수행되는 디바이스이다. 터치 스크린 및/또는 터치 패드를 디바이스(100)의 동작을 위한 주 입력 제어 디바이스로서 사용함으로써, 디바이스(100) 상의 (푸시 버튼들, 다이얼들 등과 같은) 물리적 입력 제어 디바이스들의 수가 선택적으로 감소된다.
전적으로 터치 스크린 및/또는 터치 패드를 통해 수행되는 미리정의된 세트의 기능들은, 선택적으로, 사용자 인터페이스들 간의 내비게이션을 포함한다. 일부 실시예들에서, 터치 패드는, 사용자에 의해 터치될 때, 디바이스(100)를 디바이스(100) 상에 디스플레이되는 임의의 사용자 인터페이스로부터 메인, 홈 또는 루트 메뉴로 내비게이팅한다. 일부 실시예들에서, "메뉴 버튼"이 터치 패드를 사용하여 구현된다. 일부 다른 실시예들에서, 메뉴 버튼은 터치 패드 대신에 물리적 푸시 버튼 또는 다른 물리적 입력 제어 디바이스이다.
도 1b는 일부 실시예들에 따른, 이벤트 처리를 위한 예시적인 컴포넌트들을 예시하는 블록도이다. 일부 실시예들에서, (도 1a에서의) 메모리(102)는 (예컨대, 운영 체제(126)에서의) 이벤트 분류기(170) 및 휴대용 다기능 디바이스(100)(도 1a)의 애플리케이션들(136) 중에서 선택된 각각의 애플리케이션(136-1)(예컨대, 애플리케이션들(136)로 메모리(102)에 저장된 전술한 애플리케이션들 중 임의의 것)을 포함한다.
이벤트 분류기(170)는 이벤트 정보를 수신하고, 이벤트 정보를 전달할 애플리케이션(136-1), 및 애플리케이션(136-1)의 애플리케이션 뷰(191)를 결정한다. 이벤트 분류기(170)는 이벤트 모니터(171) 및 이벤트 디스패처 모듈(event dispatcher module)(174)을 포함한다. 일부 실시예들에서, 애플리케이션(136-1)은 애플리케이션이 활성이거나 실행 중일 때 터치 감응형 디스플레이(112) 상에 디스플레이되는 현재 애플리케이션 뷰(들)를 나타내는 애플리케이션 내부 상태(192)를 포함한다. 일부 실시예들에서, 디바이스/글로벌 내부 상태(157)는 이벤트 분류기(170)에 의해 어느 애플리케이션(들)이 현재 활성인지 결정하는 데 이용되며, 애플리케이션 내부 상태(192)는 이벤트 분류기(170)에 의해 이벤트 정보를 전달할 애플리케이션 뷰들(191)을 결정하는 데 이용된다.
일부 실시예들에서, 애플리케이션 내부 상태(192)는 애플리케이션(136-1)이 실행을 재개할 때 이용될 재개 정보, 애플리케이션(136-1)에 의해 디스플레이되고 있거나 디스플레이될 준비가 된 정보를 나타내는 사용자 인터페이스 상태 정보, 사용자가 애플리케이션(136-1)의 이전 상태 또는 뷰로 되돌아갈 수 있게 하기 위한 상태 큐(queue), 및 사용자에 의해 취해진 이전 액션들의 재실행(redo)/실행취소(undo) 큐 중 하나 이상과 같은 추가 정보를 포함한다.
이벤트 모니터(171)는 주변기기 인터페이스(118)로부터 이벤트 정보를 수신한다. 이벤트 정보는 서브이벤트(예를 들어, 다중 터치 제스처의 일부로서 터치 감응형 디스플레이(112) 상에서의 사용자 터치)에 대한 정보를 포함한다. 주변기기 인터페이스(118)는 I/O 서브시스템(106) 또는 센서, 예컨대 근접 센서(166), 가속도계(들)(168), 및/또는 (오디오 회로부(110)를 통한) 마이크로폰(113)으로부터 수신하는 정보를 송신한다. 주변기기 인터페이스(118)가 I/O 서브시스템(106)으로부터 수신하는 정보는 터치 감응형 디스플레이(112) 또는 터치 감응형 표면으로부터의 정보를 포함한다.
일부 실시예들에서, 이벤트 모니터(171)는 요청들을 미리결정된 간격으로 주변기기 인터페이스(118)로 전송한다. 이에 응답하여, 주변기기 인터페이스(118)는 이벤트 정보를 송신한다. 다른 실시예들에서, 주변기기 인터페이스(118)는 중요한 이벤트(예컨대, 미리결정된 잡음 임계치를 초과하는 입력 및/또는 미리결정된 지속기간 초과 동안의 입력을 수신하는 것)가 있을 때에만 이벤트 정보를 송신한다.
일부 실시예들에서, 이벤트 분류기(170)는 또한 히트 뷰(hit view) 결정 모듈(172) 및/또는 활성 이벤트 인식기 결정 모듈(173)을 포함한다.
히트 뷰 결정 모듈(172)은 터치 감응형 디스플레이(112)가 하나 초과의 뷰를 디스플레이할 때 하나 이상의 뷰들 내에서 서브이벤트가 발생한 곳을 결정하기 위한 소프트웨어 절차들을 제공한다. 뷰들은 사용자가 디스플레이 상에서 볼 수 있는 제어부들 및 다른 요소들로 구성된다.
애플리케이션과 연관된 사용자 인터페이스의 다른 태양은 본 명세서에서 때때로 애플리케이션 뷰들 또는 사용자 인터페이스 윈도우(user interface window)들로 지칭되는 한 세트의 뷰들이며, 여기서 정보가 디스플레이되고 터치 기반 제스처가 발생한다. 터치가 검출되는 (각각의 애플리케이션의) 애플리케이션 뷰들은 선택적으로 애플리케이션의 프로그램 또는 뷰 계층구조 내의 프로그램 레벨들에 대응한다. 예를 들면, 터치가 검출되는 최하위 레벨의 뷰는 선택적으로 히트 뷰라고 지칭되고, 적절한 입력들로서 인식되는 이벤트들의 세트는 선택적으로 터치 기반 제스처를 시작하는 초기 터치의 히트 뷰에 적어도 부분적으로 기초하여 결정된다.
히트 뷰 결정 모듈(172)은 터치 기반 제스처의 서브이벤트들에 관련된 정보를 수신한다. 애플리케이션이 계층구조에서 체계화된 다수의 뷰들을 갖는 경우, 히트 뷰 결정 모듈(172)은 히트 뷰를, 서브이벤트를 처리해야 하는 계층구조 내의 최하위 뷰로서 식별한다. 대부분의 상황들에서, 히트 뷰는 시작하는 서브이벤트(예컨대, 이벤트 또는 잠재적 이벤트를 형성하는 서브이벤트들의 시퀀스에서의 제1 서브이벤트)가 발생하는 최하위 레벨 뷰이다. 일단 히트 뷰가 히트 뷰 결정 모듈에 의해 식별되면, 히트 뷰는 전형적으로 그것이 히트 뷰로서 식별되게 하는 것과 동일한 터치나 입력 소스에 관련된 모든 서브이벤트들을 수신한다.
활성 이벤트 인식기 결정 모듈(173)은 뷰 계층구조 내에서 어느 뷰 또는 뷰들이 서브이벤트들의 특정 시퀀스를 수신해야 하는지를 결정한다. 일부 실시예들에서, 활성 이벤트 인식기 결정 모듈(173)은 히트 뷰만이 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 다른 실시예들에서, 활성 이벤트 인식기 결정 모듈(173)은 서브이벤트의 물리적 위치를 포함하는 모든 뷰들이 적극 참여 뷰(actively involved view)들인 것으로 결정하고, 그에 따라 모든 적극 참여 뷰들이 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 다른 실시예들에서, 터치 서브이벤트들이 전적으로 하나의 특정 뷰와 연관된 영역으로 한정되었더라도, 계층구조 내의 상위 뷰들은 여전히 적극 참여 뷰들로서 유지될 것이다.
이벤트 디스패처 모듈(174)은 이벤트 정보를 이벤트 인식기(예컨대, 이벤트 인식기(180))에 송달한다. 활성 이벤트 인식기 결정 모듈(173)을 포함하는 실시예들에서, 이벤트 디스패처 모듈(174)은 이벤트 정보를 활성 이벤트 인식기 결정 모듈(173)에 의해 결정된 이벤트 인식기에 전달한다. 일부 실시예들에서, 이벤트 디스패처 모듈(174)은 이벤트 큐 내에 이벤트 정보를 저장하는데, 이벤트 정보는 각자의 이벤트 수신기(182)에 의해 인출된다.
일부 실시예들에서, 운영 체제(126)는 이벤트 분류기(170)를 포함한다. 대안적으로, 애플리케이션(136-1)은 이벤트 분류기(170)를 포함한다. 또 다른 실시예들에서, 이벤트 분류기(170)는 독립형 모듈이거나 접촉/모션 모듈(130)과 같이 메모리(102)에 저장된 다른 모듈의 일부이다.
일부 실시예들에서, 애플리케이션(136-1)은 복수의 이벤트 핸들러들(190) 및 하나 이상의 애플리케이션 뷰들(191)을 포함하며, 이들의 각각은 애플리케이션의 사용자 인터페이스의 각각의 뷰 내에 발생하는 터치 이벤트들을 처리하기 위한 명령어들을 포함한다. 애플리케이션(136-1)의 각각의 애플리케이션 뷰(191)는 하나 이상의 이벤트 인식기들(180)을 포함한다. 전형적으로, 각자의 애플리케이션 뷰(191)는 복수의 이벤트 인식기들(180)을 포함한다. 다른 실시예들에서, 이벤트 인식기들(180) 중 하나 이상은 사용자 인터페이스 키트(도시되지 않음) 또는 애플리케이션(136-1)이 방법들 및 다른 속성들을 물려받는 상위 레벨 객체와 같은 별개의 모듈의 일부이다. 일부 실시예들에서, 각각의 이벤트 핸들러(190)는 데이터 업데이터(176), 객체 업데이터(177), GUI 업데이터(178), 및/또는 이벤트 분류기(170)로부터 수신된 이벤트 데이터(179) 중 하나 이상을 포함한다. 이벤트 핸들러(190)는 선택적으로 데이터 업데이터(176), 객체 업데이터(177) 또는 GUI 업데이터(178)를 이용하거나 호출하여 애플리케이션 내부 상태(192)를 업데이트한다. 대안적으로, 애플리케이션 뷰들(191) 중 하나 이상은 하나 이상의 각자의 이벤트 핸들러(190)를 포함한다. 또한, 일부 실시예들에서, 데이터 업데이터(176), 객체 업데이터(177), 및 GUI 업데이터(178) 중 하나 이상은 각자의 애플리케이션 뷰(191) 내에 포함된다.
각자의 이벤트 인식기(180)는 이벤트 분류기(170)로부터 이벤트 정보(예컨대, 이벤트 데이터(179))를 수신하고 그 이벤트 정보로부터 이벤트를 식별한다. 이벤트 인식기(180)는 이벤트 수신기(182) 및 이벤트 비교기(184)를 포함한다. 일부 실시예들에서, 이벤트 인식기(180)는 또한 적어도 메타데이터(183) 및 이벤트 전달 명령어들(188)(선택적으로 서브이벤트 전달 명령어들을 포함함)의 서브세트를 포함한다.
이벤트 수신기(182)는 이벤트 분류기(170)로부터 이벤트 정보를 수신한다. 이벤트 정보는 서브이벤트, 예를 들어 터치 또는 터치 이동에 관한 정보를 포함한다. 서브이벤트에 따라, 이벤트 정보는 또한 서브이벤트의 위치와 같은 추가 정보를 포함한다. 서브이벤트가 터치의 모션과 관련되는 경우, 이벤트 정보는 또한 선택적으로 서브이벤트의 속력 및 방향을 포함한다. 일부 실시예들에서, 이벤트들은 하나의 배향으로부터 다른 배향으로(예컨대, 세로로부터 가로로, 또는 그 반대로)의 디바이스의 회전을 포함하며, 이벤트 정보는 디바이스의 현재 배향(디바이스 자세로도 지칭됨)에 관한 대응하는 정보를 포함한다.
이벤트 비교기(184)는 이벤트 정보를 미리정의된 이벤트 또는 서브이벤트 정의들과 비교하고, 그 비교에 기초하여, 이벤트 또는 서브이벤트를 결정하거나, 이벤트 또는 서브이벤트의 상태를 결정 또는 업데이트한다. 일부 실시예들에서, 이벤트 비교기(184)는 이벤트 정의들(186)을 포함한다. 이벤트 정의들(186)은 이벤트들(예컨대, 서브이벤트들의 미리정의된 시퀀스들), 예를 들어 이벤트 1(187-1), 이벤트 2(187-2) 등의 정의들을 포함한다. 일부 실시예들에서, 이벤트(187) 내의 서브이벤트들은, 예를 들어, 터치 시작, 터치 종료, 터치 이동, 터치 취소, 및 다중 터치를 포함한다. 일례에서, 이벤트 1(187-1)에 대한 정의는 디스플레이된 객체 상의 더블 탭이다. 더블 탭은, 예를 들면 미리결정된 페이즈(phase) 동안의 디스플레이된 객체 상에의 제1 터치(터치 시작), 미리결정된 페이즈 동안의 제1 리프트 오프(터치 종료), 미리결정된 페이즈 동안의 디스플레이된 객체 상에의 제2 터치(터치 시작), 및 미리결정된 페이즈 동안의 제2 리프트 오프(터치 종료)를 포함한다. 다른 예에서, 이벤트 2(187-2)에 대한 정의는 디스플레이된 객체 상의 드래깅이다. 드래깅은, 예를 들어 미리결정된 페이즈 동안의 디스플레이된 객체 상에서의 터치(또는 접촉), 터치 감응형 디스플레이(112)를 가로지르는 터치의 이동, 및 터치의 리프트 오프(터치 종료)를 포함한다. 일부 실시예들에서, 이벤트는 또한 하나 이상의 연관된 이벤트 핸들러들(190)에 대한 정보를 포함한다.
일부 실시예들에서, 이벤트 정의(186)는 각자의 사용자 인터페이스 객체에 대한 이벤트의 정의를 포함한다. 일부 실시예들에서, 이벤트 비교기(184)는 어느 사용자 인터페이스 객체가 서브이벤트와 연관되어 있는지 결정하도록 히트 테스트(hit test)를 수행한다. 예를 들어, 3개의 사용자 인터페이스 객체들이 터치 감응형 디스플레이(112) 상에 디스플레이된 애플리케이션 뷰에서, 터치 감응형 디스플레이(112) 상에서 터치가 검출되는 경우, 이벤트 비교기(184)는 3개의 사용자 인터페이스 객체들 중 어느 것이 터치(서브이벤트)와 관련되는지를 결정하도록 히트 테스트를 수행한다. 각각의 디스플레이된 객체가 개별 이벤트 핸들러(190)와 연관된 경우, 이벤트 비교기는 어느 이벤트 핸들러(190)가 활성화되어야 하는지 결정하는 데 히트 테스트의 결과를 이용한다. 예를 들어, 이벤트 비교기(184)는 히트 테스트를 트리거하는 객체 및 서브이벤트와 연관된 이벤트 핸들러를 선택한다.
일부 실시예들에서, 각각의 이벤트(187)에 대한 정의는 또한 서브이벤트들의 시퀀스가 이벤트 인식기의 이벤트 유형에 대응하는지 대응하지 않는지 여부가 결정된 후까지 이벤트 정보의 전달을 지연하는 지연된 액션들을 포함한다.
개별 이벤트 인식기(180)가 일련의 서브이벤트들이 이벤트 정의들(186) 내의 이벤트들 중 어떠한 것과도 매칭되지 않는 것으로 결정하면, 개별 이벤트 인식기(180)는 이벤트 불가능, 이벤트 실패, 또는 이벤트 종료 상태에 진입하고, 그 후 개별 이벤트 인식기는 터치 기반 제스처의 후속적인 서브이벤트들을 무시한다. 이러한 상황에서, 만일 있다면, 히트 뷰에 대해 활성 상태로 유지되는 다른 이벤트 인식기들이 진행 중인 터치 기반 제스처의 서브이벤트들을 계속해서 추적 및 프로세싱한다.
일부 실시예들에서, 개별 이벤트 인식기(180)는 이벤트 전달 시스템이 어떻게 적극 참여 이벤트 인식기들에 대한 서브이벤트 전달을 수행해야 하는지를 나타내는 구성가능한 속성들, 플래그(flag)들, 및/또는 목록들을 갖는 메타데이터(183)를 포함한다. 일부 실시예들에서, 메타데이터(183)는 이벤트 인식기들이 어떻게 서로 상호작용하는지, 또는 상호작용할 수 있는지를 나타내는 구성가능한 속성들, 플래그들, 및/또는 목록들을 포함한다. 일부 실시예들에서, 메타데이터(183)는, 서브이벤트들이 뷰 또는 프로그램 계층구조에서의 다양한 레벨들에 전달되는지 여부를 나타내는 구성가능한 속성들, 플래그들, 및/또는 목록들을 포함한다.
일부 실시예들에서, 각자의 이벤트 인식기(180)는 이벤트의 하나 이상의 특정 서브이벤트가 인식될 때 이벤트와 연관된 이벤트 핸들러(190)를 활성화한다. 일부 실시예들에서, 각자의 이벤트 인식기(180)는 이벤트와 연관된 이벤트 정보를 이벤트 핸들러(190)에 전달한다. 이벤트 핸들러(190)를 활성화시키는 것은 각자의 히트 뷰에 서브이벤트들을 전송(및 지연 전송)하는 것과는 별개이다. 일부 실시예들에서, 이벤트 인식기(180)는 인식된 이벤트와 연관된 플래그를 보내고, 그 플래그와 연관된 이벤트 핸들러(190)는 그 플래그를 캐치하고 미리정의된 프로세스를 수행한다.
일부 실시예들에서, 이벤트 전달 명령어들(188)은 이벤트 핸들러를 활성화하지 않고 서브이벤트에 관한 이벤트 정보를 전달하는 서브이벤트 전달 명령어들을 포함한다. 대신에, 서브이벤트 전달 명령어들은 일련의 서브이벤트들과 연관된 이벤트 핸들러들에 또는 적극 참여 뷰들에 이벤트 정보를 전달한다. 일련의 서브이벤트들 또는 적극 참여 뷰들과 연관된 이벤트 핸들러들은 이벤트 정보를 수신하고 미리결정된 프로세스를 수행한다.
일부 실시예들에서, 데이터 업데이터(176)는 애플리케이션(136-1)에서 이용되는 데이터를 생성 및 업데이트한다. 예를 들어, 데이터 업데이터(176)는 연락처 모듈(137)에서 이용되는 전화번호를 업데이트하거나, 비디오 및 음악 재생기 모듈(145)에서 이용되는 비디오 파일을 저장한다. 일부 실시예들에서, 객체 업데이터(177)는 애플리케이션(136-1)에서 이용되는 객체들을 생성 및 업데이트한다. 예를 들어, 객체 업데이터(176)는 새로운 사용자 인터페이스 객체를 생성하거나, 또는 사용자 인터페이스 객체의 위치를 업데이트한다. GUI 업데이터(178)는 GUI를 업데이트한다. 예를 들어, GUI 업데이터(178)는 터치 감응형 디스플레이 상의 디스플레이를 위해 디스플레이 정보를 준비하고 이를 그래픽 모듈(132)에 전송한다.
일부 실시예들에서, 이벤트 핸들러(들)(190)는 데이터 업데이터(176), 객체 업데이터(177), 및 GUI 업데이터(178)를 포함하거나 이들에 액세스한다. 일부 실시예들에서, 데이터 업데이터(176), 객체 업데이터(177), 및 GUI 업데이터(178)는 각자의 애플리케이션(136-1) 또는 애플리케이션 뷰(191)의 단일 모듈 내에 포함된다. 다른 실시예들에서, 이들은 2개 이상의 소프트웨어 모듈들 내에 포함된다.
일부 실시예들에서, 각각의 특정 애플리케이션(136-1)은 사용자가 애플리케이션과 상호작용하는 동안 사용 데이터를 저장하고, 그 사용 데이터는 이어서 저장을 위해 애플리케이션 사용 데이터 테이블들(335)에 보고된다(예컨대, 도 3b의 특정 애플리케이션(136-1)에 대한 사용 데이터(193)는 모든 센서 판독값들, 수행된 애플리케이션 내의 액션들, 디바이스 결합 정보 등을 포함하고, 이러한 사용 데이터(193)는 테이블 내에 레코드로서 저장하기 위해 특정 애플리케이션에 대한 각각의 애플리케이션 사용 테이블(335)로 전송된다). 일부 실시예들에서, 사용 데이터(193)는 특정 애플리케이션(136-1)이 사용 중인 동안(예컨대, 사용자가 특정 애플리케이션(136-1)과 적극적으로 상호작용함) 사용 데이터 수집 모듈(163-2)에 의해 보고된 바와 같은 데이터를 저장한다.
터치 감응형 디스플레이 상의 사용자 터치들의 이벤트 처리에 관하여 전술한 논의는 또한 입력 디바이스들을 갖는 다기능 디바이스들(100)을 작동시키기 위한 다른 형태들의 사용자 입력들에도 적용되지만, 그 모두가 터치 스크린들 상에서 시작되는 것이 아니라는 것을 이해해야 한다. 예를 들어, 선택적으로 단일 또는 복수의 키보드 누름 또는 유지; 터치 패드 상에서의, 탭, 드래그, 스크롤 등과 같은 접촉 이동들; 펜 스타일러스 입력들; 디바이스의 이동; 구두 지시들; 검출된 눈 이동들; 생체측정 입력들; 및/또는 이들의 임의의 조합으로 조정된 마우스 이동 및 마우스 버튼 누름은, 인식될 이벤트를 정의하는 서브이벤트들에 대응하는 입력들로서 선택적으로 이용된다.
도 1c는 일부 실시예들에 따른, 터치 감응형 디스플레이(예컨대, 터치 스크린(112))를 갖는 휴대용 다기능 디바이스(예컨대, 휴대용 다기능 디바이스(100))의 개략도이다. 이러한 실시예에서뿐만 아니라 후술되는 다른 실시예들에서, 사용자는, 예를 들어 하나 이상의 손가락들 또는 하나 이상의 스타일러스들을 이용하여, 스크린 상에서 제스처를 행함으로써 그래픽들 중 하나 이상을 선택할 수 있다. 일부 실시예들에서, 하나 이상의 그래픽들의 선택은 사용자가 하나 이상의 그래픽들과의 접촉을 중단할 때 (예컨대, 손가락을 스크린에서 리프트오프함으로써) 발생한다. 일부 실시예들에서, 제스처는 선택적으로, 디바이스(100)와 접촉한 손가락의 하나 이상의 탭 제스처들(예컨대, 스크린 상의 터치들과 그에 이은 리프트오프의 시퀀스), 하나 이상의 스와이프 제스처들(스크린의 표면을 따른 제스처 동안의 연속 접촉, 예컨대, 좌에서 우로, 우에서 좌로, 위로 및/또는 아래로), 및/또는 롤링(예컨대, 우에서 좌로, 좌에서 우로, 위로 및/또는 아래로)을 포함한다. 일부 구현예들 또는 상황들에서, 그래픽과 부주의하여 접촉되면 그 그래픽은 선택되지 않는다. 예를 들면, 애플리케이션을 개시하기 위한 제스처가 탭 제스처일 때, 애플리케이션 어포던스(예컨대, 아이콘) 위를 스윕(sweep)하는 스와이프 제스처는 선택적으로, 대응하는 애플리케이션을 개시하지(예컨대, 열지) 않는다.
디바이스(100)는 또한 선택적으로 "홈" 또는 메뉴 버튼(204)과 같은 하나 이상의 물리적 버튼들을 포함한다. 전술된 바와 같이, 메뉴 버튼(204)은 선택적으로, 디바이스(100) 상에서 선택적으로 실행되는 애플리케이션들의 세트 내의 임의의 애플리케이션(136)으로 내비게이팅하는 데 사용된다. 대안적으로, 일부 실시예들에서, 메뉴 버튼은 터치 스크린(112) 상에 디스플레이된 GUI에서 소프트 키로서 구현된다.
일 실시예에서, 디바이스(100)는 터치 스크린(112), 메뉴 버튼(204), 디바이스의 전원을 온/오프하고 디바이스를 잠그기 위한 푸시 버튼(206), 볼륨 조절 버튼(들)(208), 가입자 식별 모듈(SIM) 카드 슬롯(210), 헤드셋 잭(212), 및 도킹/충전 외부 포트(124)를 포함한다. 푸시 버튼(206)은 선택적으로 버튼을 누르고 버튼을 미리정의된 시간 간격 동안 누른 상태로 유지함으로써 디바이스에서 전력을 온/오프시키고/시키거나; 버튼을 누르고 미리정의된 시간 간격이 경과하기 전에 버튼을 누름해제함으로써 디바이스를 잠그고/잠그거나 디바이스를 잠금해제하거나 잠금해제 프로세스를 시작하는 데 사용된다. 대안의 실시예에서, 디바이스(100)는 또한 마이크로폰(113)을 통해 일부 기능들의 활성화 또는 비활성화를 위한 구두 입력을 수용한다. 디바이스(100)는 또한, 선택적으로, 터치 스크린(112) 상의 접촉들의 세기를 검출하기 위한 하나 이상의 접촉 세기 센서들(165) 및/또는 디바이스(100)의 사용자에 대한 촉각적 출력들을 생성하기 위한 하나 이상의 촉각적 출력 생성기들(167)을 포함한다.
도 1d는 디스플레이(194)(예컨대, 터치 스크린(112))와는 별개인 터치 감응형 표면(195)(예컨대, 태블릿 또는 터치 패드)을 갖는 디바이스(예컨대, 도 1a의 디바이스(100)) 상의 사용자 인터페이스를 예시하기 위해 사용되는 개략도이다. 일부 실시예들에서, 터치 감응형 표면(195)은, 터치 감응형 표면(195) 상의 접촉들의 세기를 검출하기 위한 하나 이상의 접촉 세기 센서들(예컨대, 접촉 세기 센서(들)(359) 중 하나 이상) 및/또는 터치 감응형 표면(195)의 사용자에 대한 촉각적 출력들을 생성하기 위한 하나 이상의 촉각적 출력 생성기(들)(357)를 포함한다.
후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 스크린(112) 상의 입력들을 참조하여 제공될 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이와 별개인 터치 감응형 표면 상의 입력들을 검출한다. 일부 실시예들에서, 터치 감응형 표면(예컨대, 도 1d의 195)은 디스플레이(예컨대, 194) 상의 주축(예컨대, 도 1d의 198)에 대응하는 주축(예컨대, 도 1d의 199)을 갖는다. 이러한 실시예들에 따르면, 디바이스는 디스플레이 상의 각각의 위치들에 대응하는 위치들(예컨대, 도 1d에서, 197-1은 196-1에 대응하고, 197-2는 196-2에 대응함)에서 터치 감응형 표면(195)과의 접촉들(예컨대, 도 1d의 197-1 및 197-2)을 검출한다. 이러한 방식으로, 터치 감응형 표면(예컨대, 도 1d의 195) 상에서 디바이스에 의해 검출된 사용자 입력들(예컨대, 접촉들(197-1, 197-2) 및 그의 이동들)은 터치 감응형 표면이 디스플레이와 별개일 때 디바이스에 의해 다기능 디바이스의 디스플레이(예컨대, 도 1d의 194) 상의 사용자 인터페이스를 조작하는 데 사용된다. 유사한 방법들이, 선택적으로, 본 명세서에 기술된 다른 사용자 인터페이스들에 이용된다는 것이 이해되어야 한다.
추가로, 하기의 예들이 손가락 입력들(예컨대, 손가락 접촉들, 손가락 탭 제스처들, 손가락 스와이프 제스처들)을 주로 참조하여 주어지는 반면, 일부 실시예들에서, 손가락 입력들 중 하나 이상은 다른 입력 디바이스로부터의 입력(예컨대, 마우스 기반 입력 또는 스타일러스 입력)으로 대체된다는 것이 이해되어야 한다. 예컨대, 스와이프 제스처는, 선택적으로, 마우스 클릭(예컨대, 접촉 대신) 및 뒤이어 스와이프의 경로를 따른 커서의 이동(예컨대, 접촉의 이동 대신)으로 대체된다. 다른 예로서, (예컨대, 접촉의 검출 및 뒤이어 접촉을 검출하는 것을 중지하는 것 대신에) 커서가 탭 제스처의 위치 위에 위치되는 동안에 탭 제스처가 선택적으로 마우스 클릭으로 대체된다. 유사하게, 다수의 사용자 입력들이 동시에 검출되는 경우, 다수의 컴퓨터 마우스들이 선택적으로 동시에 사용되거나, 또는 마우스와 손가락 접촉들이 선택적으로 동시에 사용된다는 것이 이해되어야 한다.
본 명세서에 사용되는 바와 같이, 용어 "포커스 선택자(focus selector)"는 사용자가 상호작용하고 있는 사용자 인터페이스의 현재 부분을 나타내는 입력 요소를 지칭한다. 커서 또는 다른 위치 마커(location marker)를 포함하는 일부 구현예들에서, 커서는 "포커스 선택자"로서 작용하여, 커서가 특정 사용자 인터페이스 요소(예컨대, 버튼, 윈도우, 슬라이더 또는 다른 사용자 인터페이스 요소) 위에 있는 동안 터치 감응형 표면(예컨대, 도 1d의 터치 감응형 표면(195)(터치 감응형 표면(195)은 일부 실시예들에서 터치 패드임)) 상에서 입력(예컨대, 누르기 입력)이 검출될 때, 특정 사용자 인터페이스 요소가 검출된 입력에 따라 조정되게 된다. 터치 스크린 디스플레이 상의 사용자 인터페이스 요소들과의 직접적인 상호작용을 가능하게 하는 터치 스크린 디스플레이(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112) 또는 터치 스크린(112))을 포함하는 일부 구현예들에서, 터치 스크린 상에서 검출된 접촉은 "포커스 선택자"로서 작용하여, 입력(예컨대, 접촉에 의한 누르기 입력)이 터치 스크린 디스플레이 상에서 특정 사용자 인터페이스 요소(예컨대, 버튼, 윈도우, 슬라이더 또는 다른 사용자 인터페이스 요소)의 위치에서 검출될 때, 특정 사용자 인터페이스 요소가 검출된 입력에 따라 조정되게 된다. 일부 구현예들에서, (예컨대, 탭 키 또는 화살표 키들을 사용하여 포커스를 하나의 버튼으로부터 다른 버튼으로 이동시킴으로써) 터치 스크린 디스플레이 상의 대응하는 커서의 이동 또는 접촉의 이동 없이 포커스가 사용자 인터페이스의 하나의 영역으로부터 사용자 인터페이스의 다른 영역으로 이동되며; 이러한 구현예들에서, 포커스 선택자는 사용자 인터페이스의 상이한 영역들 사이에서의 포커스의 이동에 따라 움직인다. 포커스 선택자가 가지는 특정 형태와 무관하게, 포커스 선택자는 일반적으로 (예컨대, 사용자가 상호작용하고자 하는 사용자 인터페이스의 요소를 디바이스에 나타내는 것에 의해) 사용자 인터페이스와의 사용자의 의도된 상호작용을 전달하기 위해 사용자에 의해 제어되는 사용자 인터페이스 요소(또는 터치 스크린 디스플레이 상의 접촉)이다. 예를 들어, 터치 감응형 표면(예컨대, 터치 패드 또는 터치 감응형 디스플레이) 상에서 누르기 입력이 검출되는 동안 각자의 버튼 위의 포커스 선택자(예컨대, 커서, 접촉 또는 선택 상자)의 위치는 (디바이스의 디스플레이 상에 보여지는 다른 사용자 인터페이스 요소들과 달리) 사용자가 각자의 버튼을 활성화시키려고 하고 있다는 것을 나타낼 것이다.
도 4c는 디스플레이(194) 및 터치 감응형 표면(195)과 통신 상태에 있는 예시적인 전자 디바이스들을 예시한다. 적어도 전자 디바이스들의 서브세트의 경우, 디스플레이(194) 및/또는 터치 감응형 표면(195)은 일부 실시예들에 따른 전자 디바이스 내에 통합된다. 아래에서 더욱 상세하게 기술되는 예들은 전자 디바이스(예컨대, 도 1a 및 도 1b의 휴대용 다기능 디바이스(100))와 통신 상태에 있는 터치 감응형 표면(195) 및 디스플레이(194)를 참조하여 기술되지만, 일부 실시예들에 따르면, 터치 감응형 표면 및/또는 디스플레이가 전자 디바이스와 통합되는 한편, 다른 실시예들에서는 터치 감응형 표면 및 디스플레이 중 하나 이상이 전자 디바이스와는 별개인 것이 이해되어야 한다. 추가로, 일부 실시예들에서, 전자 디바이스는 통합된 디스플레이 및/또는 통합된 터치 감응형 표면을 갖고, 전자 디바이스와는 별개인 하나 이상의 추가 디스플레이들 및/또는 터치 감응형 표면들과 통신 상태에 있다.
일부 실시예들에서, 도 6a, 도 6b, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 내지 도 9d, 도 10a 내지 도 10c, 도 11a 내지 도 11j, 도 12, 도 13a, 도 13b, 도 14, 도 15a, 도 15b, 도 16a, 도 16b, 도 17a 내지 도 17e, 도 18a, 도 18b, 도 19a 내지 도 19f, 도 20, 도 21a, 도 21b, 도 22a 내지 도 22c, 도 23a 내지 도 23o, 도 24a, 도 24b, 도 25a 내지 도 25j, 도 26a, 도 26b, 도 27, 도 28, 도 29, 도 30a 내지 도 30d를 참조하여 후술되는 동작들 전부는 사용자 인터페이스 내비게이션 로직(480)을 갖는 단일 전자 디바이스(예컨대, 도 4c를 참조하여 후술되는 컴퓨팅 디바이스 A) 상에서 수행된다. 그러나, 흔히 다수의 상이한 전자 디바이스들이 함께 링크되어, 도 6a, 도 6b, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 내지 도 9d, 도 10a 내지 도 10c, 도 11a 내지 도 11j, 도 12, 도 13a, 도 13b, 도 14, 도 15a, 도 15b, 도 16a, 도 16b, 도 17a 내지 도 17e, 도 18a, 도 18b, 도 19a 내지 도 19f, 도 20, 도 21a, 도 21b, 도 22a 내지 도 22c, 도 23a 내지 도 23o, 도 24a, 도 24b, 도 25a 내지 도 25j, 도 26a, 도 26b, 도 27, 도 28, 도 29, 도 30a 내지 도 30d를 참조하여 후술되는 동작들을 수행한다는 것이 이해되어야 한다(예컨대, 사용자 인터페이스 내비게이션 로직(480)을 갖는 전자 디바이스가 디스플레이(194)를 갖는 별개의 전자 디바이스 및/또는 터치 감응형 표면(195)을 갖는 별개의 전자 디바이스와 통신한다). 이러한 실시예들 중 임의의 것에서, 도 6a, 도 6b, 도 7a, 도 7b, 도 8a, 도 8b, 도 9a 내지 도 9d, 도 10a 내지 도 10c, 도 11a 내지 도 11j, 도 12, 도 13a, 도 13b, 도 14, 도 15a, 도 15b, 도 16a, 도 16b, 도 17a 내지 도 17e, 도 18a, 도 18b, 도 19a 내지 도 19f, 도 20, 도 21a, 도 21b, 도 22a 내지 도 22c, 도 23a 내지 도 23o, 도 24a, 도 24b, 도 25a 내지 도 25j, 도 26a, 도 26b, 도 27, 도 28, 도 29, 도 30a 내지 도 30d를 참조하여 후술되는 전자 디바이스는, 사용자 인터페이스 내비게이션 로직(480)을 포함하는 전자 디바이스(또는 디바이스들)이다. 추가로, 사용자 인터페이스 내비게이션 로직(480)이 다양한 실시예들에서 복수의 별개의 모듈들 또는 전자 디바이스들 사이에서 분할될 수 있지만; 본 명세서에서의 설명의 목적을 위해, 사용자 인터페이스 내비게이션 로직(480)이 실시예들의 다른 태양들을 불필요하게 모호하게 하지 않기 위해 주로 단일 전자 디바이스 내에 상주하는 것으로 지칭될 것이라는 것이 이해되어야 한다.
일부 실시예들에서, 사용자 인터페이스 내비게이션 로직(480)은 하나 이상의 모듈들(예컨대, 도 1c를 참조하여 상기에 더욱 상세하게 기술된 바와 같은 하나 이상의 객체 업데이터들(177) 및 하나 이상의 GUI 업데이터들(178)을 포함하는 하나 이상의 이벤트 핸들러들(190))을 포함하는데, 하나 이상의 모듈들은 해석된 입력들을 수신하고, 이러한 해석된 입력들에 응답하여, 후속하여 디스플레이 상의 그래픽 사용자 인터페이스를 업데이트하는 데 사용되는 해석된 입력들에 따라 그래픽 사용자 인터페이스를 업데이트하기 위한 명령어들을 생성한다. 일부 실시예들에서, 해석된 입력은, (예컨대, 도 1a, 도 1b 및 도 3의 접촉 모션(130)에 의해) 검출되고/되거나, (예컨대, 도 1c의 이벤트 인식기(180)에 의해) 인식되고/되거나 (예컨대, 도 1c의 이벤트 분류기(170)에 의해) 우선순위가 정해진 입력이다. 일부 실시예들에서, 해석된 입력들은 전자 디바이스에서 모듈들에 의해 생성된다(예컨대, 전자 디바이스는 원시(raw) 접촉 입력 데이터를 수신하여 원시 접촉 입력 데이터로부터의 제스처들을 식별한다). 일부 실시예들에서, 해석된 입력들의 일부 또는 전부는 해석된 입력들로서 전자 디바이스에 의해 수신된다(예컨대, 터치 감응형 표면(195)을 포함하는 전자 디바이스가 원시 접촉 입력 데이터를 프로세싱하여 원시 접촉 입력 데이터로부터의 제스처들을 식별하고, 제스처들을 나타내는 정보를 사용자 인터페이스 내비게이션 로직(480)을 포함하는 전자 디바이스로 전송한다).
일부 실시예들에서, 디스플레이(194) 및 터치 감응형 표면(195) 양쪽 모두는 사용자 인터페이스 내비게이션 로직(480)을 포함하는 전자 디바이스(예컨대, 도 4c의 컴퓨팅 디바이스 A)와 통합된다. 예를 들어, 전자 디바이스는 통합된 디스플레이(예컨대, 도 3의 340) 및 터치 패드(예컨대, 도 3의 355)를 갖는 데스크톱 컴퓨터 또는 랩톱 컴퓨터일 수 있다. 다른 예로서, 전자 디바이스는 터치 스크린(예컨대, 도 2의 112)을 갖는 휴대용 다기능 디바이스(100)(예컨대, 스마트폰, PDA, 태블릿 컴퓨터 등)일 수 있다.
일부 실시예들에서, 터치 감응형 표면(195)은 전자 디바이스와 통합되는 반면, 디스플레이(194)는 사용자 인터페이스 내비게이션 로직(480)을 포함하는 전자 디바이스(예컨대, 도 4c의 컴퓨팅 디바이스 B)와 통합되지 않는다. 예를 들어, 전자 디바이스는 별개의 디스플레이(예컨대, 컴퓨터 모니터, 텔레비전 등)에 (유선 또는 무선 연결을 통해) 연결되는 통합된 터치 패드(예컨대, 도 3의 355)를 갖는 디바이스(예컨대, 데스크톱 컴퓨터 또는 랩톱 컴퓨터)일 수 있다. 다른 예로서, 전자 디바이스는 별개의 디스플레이(예컨대, 컴퓨터 모니터, 텔레비전 등)에 (유선 또는 무선 연결을 통해) 연결되는 터치 스크린(예컨대, 도 2의 112)을 갖는 휴대용 다기능 디바이스(100)(예컨대, 스마트폰, PDA, 태블릿 컴퓨터 등)일 수 있다.
일부 실시예들에서, 디스플레이(194)는 전자 디바이스와 통합되는 반면, 터치 감응형 표면(195)은 사용자 인터페이스 내비게이션 로직(480)을 포함하는 전자 디바이스(예컨대, 도 4c의 컴퓨팅 디바이스 C)와 통합되지 않는다. 예를 들어, 전자 디바이스는 별개의 터치 감응형 표면(예컨대, 원격 터치 패드, 휴대용 다기능 디바이스 등)에 (유선 또는 무선 연결을 통해) 연결되는 통합된 디스플레이(예컨대, 도 3의 340)를 갖는 디바이스(예컨대, 데스크톱 컴퓨터, 랩톱 컴퓨터, 통합된 셋톱 박스를 갖는 텔레비전)일 수 있다. 다른 예로서, 전자 디바이스는 별개의 터치 감응형 표면(예컨대, 원격 터치 패드, 원격 터치 패드로서의 역할을 하는 터치 스크린을 갖는 다른 휴대용 다기능 디바이스 등)에 (유선 또는 무선 연결을 통해) 연결되는 터치 스크린(예컨대, 도 2의 112)을 갖는 휴대용 다기능 디바이스(100)(예컨대, 스마트폰, PDA, 태블릿 컴퓨터 등)일 수 있다.
일부 실시예들에서, 디스플레이(194)도 터치 감응형 표면(195)도 사용자 인터페이스 내비게이션 로직(480)을 포함하는 전자 디바이스(예컨대, 도 4c의 컴퓨팅 디바이스 D)와 통합되지 않는다. 예를 들어, 전자 디바이스는 별개의 터치 감응형 표면(예컨대, 원격 터치 패드, 휴대용 다기능 디바이스 등) 및 별개의 디스플레이(예컨대, 컴퓨터 모니터, 텔레비전 등)에 (유선 또는 무선 연결을 통해) 연결되는 독립형 전자 디바이스(예컨대, 데스크톱 컴퓨터, 랩톱 컴퓨터, 콘솔, 셋톱 박스 등)일 수 있다. 다른 예로서, 전자 디바이스는 별개의 터치 감응형 표면(예컨대, 원격 터치 패드, 원격 터치 패드로서의 역할을 하는 터치 스크린을 갖는 다른 휴대용 다기능 디바이스 등)에 (유선 또는 무선 연결을 통해) 연결되는 터치 스크린(예컨대, 도 2의 112)을 갖는 휴대용 다기능 디바이스(100)(예컨대, 스마트폰, PDA, 태블릿 컴퓨터 등)일 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스는 통합된 오디오 시스템을 갖는다. 일부 실시예들에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스와는 별개인 오디오 시스템과 통신 상태에 있다. 일부 실시예들에서, 오디오 시스템(예컨대, 텔레비전 유닛 내에 통합된 오디오 시스템)은 별개의 디스플레이(194)와 통합된다. 일부 실시예들에서, 오디오 시스템(예컨대, 스테레오 시스템)은 컴퓨팅 디바이스 및 디스플레이(194)와는 별개인 독립형 시스템이다.
이제, 디바이스(100)와 같은, 디스플레이 및 터치 감응형 표면을 갖는 전자 디바이스 상에 구현될 수 있는 사용자 인터페이스("UI") 실시예들 및 연관된 프로세스들에 주목한다.
도 2는 일부 실시예들에 따른, 애플리케이션들의 메뉴에 대한 사용자 인터페이스를 예시하기 위해 사용되는 터치 스크린의 개략도이다. 유사한 사용자 인터페이스들이 선택적으로 디바이스(100)(도 1a) 상에 구현된다. 일부 실시예들에서, 터치 스크린(112) 상에 디스플레이된 사용자 인터페이스는 하기의 요소들, 또는 이들의 서브세트 또는 수퍼세트를 포함한다:
Figure pat00023
셀룰러 및 Wi-Fi 신호들과 같은 무선 통신(들)에 대한 신호 강도 표시자(들)(202);
Figure pat00024
시간(203);
Figure pat00025
블루투스 표시자(205);
Figure pat00026
배터리 상태 표시자(206);
Figure pat00027
다음과 같은, 빈번하게 사용되는 애플리케이션들에 대한 아이콘들을 갖는 트레이(209):
o 부재 중 전화들 또는 음성메일 메시지들의 개수의 표시자(214)를 선택적으로 포함하는 "전화"라고 라벨링된 전화 모듈(138)에 대한 아이콘(216);
o 읽지 않은 이메일들의 개수의 표시자(210)를 선택적으로 포함하는 "메일"이라고 라벨링된 이메일 클라이언트 모듈(140)에 대한 아이콘(218);
o "브라우저"라고 라벨링된 브라우저 모듈(147)에 대한 아이콘(220);및
o 아이팟(애플 인크.의 상표) 모듈(152)로도 지칭되는, "아이팟"이라고 라벨링된 비디오 및 음악 재생기 모듈(152)에 대한 아이콘(222);및
Figure pat00028
다음과 같은, 다른 애플리케이션들에 대한 아이콘들:
o "메시지"라고 라벨링된 IM 모듈(141)에 대한 아이콘(224);
o "캘린더"라고 라벨링된 캘린더 모듈(148)에 대한 아이콘(226);
o "사진"이라고 라벨링된 이미지 관리 모듈(144)에 대한 아이콘(228);
o "카메라"라고 라벨링된 카메라 모듈(143)에 대한 아이콘(230);
o "온라인 비디오"라고 라벨링된 온라인 비디오 모듈(155)에 대한 아이콘(232);
o "주식"이라고 라벨링된 주식 위젯(149-2)에 대한 아이콘(234);
o "지도"라고 라벨링된 지도 모듈(154)에 대한 아이콘(236);
o "날씨"라고 라벨링된 날씨 위젯(149-1)에 대한 아이콘(238);
o "시계"라고 라벨링된 알람 시계 위젯(149-4)에 대한 아이콘(240);
o "건강"이라고 라벨링된 건강 모듈(142)에 대한 아이콘(242);
o "메모"라고 라벨링된 메모 모듈(153)에 대한 아이콘(244);
o 디바이스(100) 및 그의 다양한 애플리케이션들에 대한 설정에의 액세스를 제공하는, 설정 애플리케이션 또는 모듈에 대한 아이콘(246); 및
o 앱 스토어, 아이튠즈(iTunes), 음성 메모, 및 유틸리티와 같은 추가 애플리케이션들에 대한 다른 아이콘들.
도 2에 예시된 아이콘 라벨들은 단지 예시일 뿐이라는 것에 주목해야 한다. 다른 라벨들이 선택적으로 다양한 애플리케이션 아이콘들에 대해 사용된다. 예를 들어, 건강 모듈(142)에 대한 아이콘(242)은 대안적으로 "피트니스 지원", "운동", "운동 지원", "신체활동", "신체활동 지원", 또는 "피트니스"라고 라벨링된다. 일부 실시예들에서, 각자의 애플리케이션 아이콘에 대한 라벨은 각자의 애플리케이션 아이콘에 대응하는 애플리케이션의 이름을 포함한다. 일부 실시예들에서, 특정 애플리케이션 아이콘에 대한 라벨은 특정 애플리케이션 아이콘에 대응하는 애플리케이션의 이름과는 별개이다.
도 3a 및 도 3b는 일부 실시예들에 따른, 애플리케이션 사용 데이터를 저장하기 위한 데이터 구조들을 예시하는 블록도들이다. 도 3a에 도시된 바와 같이, 애플리케이션 사용 데이터 테이블들(335)은, 디바이스(100) 상에 설치된 각각의 애플리케이션에 대한 테이블들의 집합으로서 선택적으로 구현되는, 데이터 구조들(335)의 집합을 포함하는데, 테이블들 각각은 전자 디바이스 상에 설치된 대응하는 각자의 애플리케이션과 연관된 사용 데이터를 저장한다(예컨대, 애플리케이션 1 사용 데이터 테이블(335-1)은 애플리케이션 1에 대한 사용 데이터를 저장하고, 애플리케이션 사용 데이터 테이블(335-2)은 애플리케이션 2에 대한 사용 데이터를 저장한다). 일부 실시예들에서, 애플리케이션 사용 데이터 테이블들의 집합에서의 각각의 테이블(예컨대, 테이블(335-1, 335-2, 335-3 … 335-N))은 전자 디바이스 상에 설치된 하나 초과의 애플리케이션에 대한 사용 데이터를 저장한다(예컨대, 테이블(335-1)은 잠재적으로 관련된 데이터의 효율적인 저장을 위해, 일반적인 애플리케이션 개발자 또는 애플리케이션 벤더(vendor)에 의해 각각 제공되는 관련된 애플리케이션들에 대한 사용 데이터를 저장한다).
일부 실시예들에서, 하나 이상의 애플리케이션 사용 데이터 테이블들(335)(예컨대, 애플리케이션 1 사용 데이터 테이블(335-1))은 디바이스(100) 상에 설치된 애플리케이션들과 연관된 사용 데이터를 저장하기 위해 사용된다. 도 3b에 예시된 바와 같이, 애플리케이션 1 사용 데이터 테이블(335-1)은 다수의 사용 엔트리들을 포함한다. 일부 실시예들에서, 사용 엔트리들은 개별 레코드들(340-1 내지 340-z), 및 선택적으로, 헤더(340-0)에 저장된다. 헤더(340-0)는, 일부 실시예들에서, 테이블 내에 저장된 정보의 각각의 필드(예컨대, 각각의 필드는 레코드들 각각과 연관됨)의 간략한 설명을 포함한다. 예를 들어, 헤더(340-0)는 각각의 레코드(340-1 내지 340-z)가 사용 엔트리를 고유하게 식별하는 엔트리 ID를 포함한다는 것을 나타낸다. 일부 실시예들에서, 애플리케이션 1 사용 데이터 테이블(335-1)은 엔트리 ID 필드에 더하여, 추가 필드들, 예컨대, 사용 엔트리가 언제 생성되었고/되었거나 테이블(335-1)에 언제 저장되었는지를 식별하는 타임스탬프 필드, 및 다른 애플리케이션 사용 데이터 테이블들(335)에 저장될 수 있는 관련된 사용 엔트리들을 식별하는 관련된 사용 엔트리 필드를 포함한다.
일부 실시예들에서, 애플리케이션 1 사용 데이터 테이블(335-1) 내의 각각의 레코드는, 사용자가 애플리케이션 1과 상호작용하는 동안 수집된 사용 데이터를 포함하는 하나 이상의 사용 엔트리들을 포함한다(예컨대, 사용자가 애플리케이션 1을 개시할 때마다, 수집된 사용 데이터를 저장하기 위해 새로운 사용 엔트리가 생성된다). 일부 실시예들에서, 테이블에서의 각각의 사용 엔트리는 하기의 정보 및 데이터 구조들, 또는 이들의 서브세트 또는 수퍼세트를 저장한다:
Figure pat00029
애플리케이션 내에서 사용자에 의해 수행된 인앱 액션(in-app action)들(예컨대, 수행된 인앱 액션들(340-1(a)))(일부 실시예들에서, 이러한 액션들은 애플리케이션에 의해 디바이스에 보고됨)을 식별하는 정보 - 예를 들어 애플리케이션은 사용자가 특정 재생목록 내에서 특정 노래를 재생하였다는 것을 사용 데이터 수집 모듈(163-2)에 보고함 -;
Figure pat00030
다른 애플리케이션들(예컨대, 시스템-레벨 애플리케이션들) 내에서 사용자에 의해 수행된 다른 액션들(예컨대, 수행된 다른 액션들(340-1(b))), 예컨대 구두 지시들을 가상 어시스턴트 애플리케이션에 제공하는 것 또는 검색 애플리케이션(예컨대, 도 1a의 검색 모듈(151)) 내에서 정보의 항목에 대한 검색을 수행하는 것을 식별하는 정보;
Figure pat00031
선택적으로 하기를 포함하는, 사용자가 사용 엔트리와 연관된 애플리케이션과 상호작용하는 동안 디바이스(100) 상의 센서들에 의해 수집된 데이터를 포함하는 센서 데이터(예컨대, 사용 데이터(340-1(c))):
o 하루 중 시간(예컨대, 하루 중 시간(340-1(d))) 정보;
o 사용자가 애플리케이션을 개시한 시간에서의 현재 위치 및 애플리케이션을 실행하고 있는 동안 사용자가 방문한 다른 위치들을 식별하는 위치 데이터(예컨대, 위치 데이터(340-1(e)))(예컨대, GPS 모듈(132)에 의해 보고되는 바와 같음);
o (주변 광 데이터, 고도 데이터, 압력 판독값들, 모션 데이터 등과 같은) 사용자가 애플리케이션과 상호작용하는 동안 수집된 다른 센서 데이터(예컨대, 다른 센서 데이터(340-1(f)));
Figure pat00032
사용자가 애플리케이션과 상호작용하는 동안 디바이스(100)와 결합된 외부 디바이스들을 식별하는 디바이스 결합 정보(예컨대, 디바이스 결합 정보(340-1(g)))(예컨대, 예시적인 외부 디바이스가 헤드폰 잭에 연결된 한 쌍의 헤드폰들일 수 있거나 또는 다른 예시적인 디바이스가 블루투스를 통해 연결된 디바이스(예컨대, 자동차에서의 스피커들 또는 자동차와 연관된 핸즈프리 시스템)일 수 있음); 및
Figure pat00033
사용자가 애플리케이션과 상호작용하는 동안 수집된 다른 정보(예컨대, 다른 정보(340-1(h)))(예컨대, 사용자의 애플페이(APPLE PAY) 사용에 관한 정보와 같은, 거래 완료에 관한 정보).
일부 실시예들에서, 애플리케이션의 각각의 사용 엔트리가 사용자에 의해 수행된 액션 유형을 식별하는 정보를 추가로 포함하는 반면, 다른 실시예들에서는, 수행된 인앱 액션들을 식별하는 정보가 액션 유형들을 결정하거나 유도하는 데 사용된다.
일부 실시예들에서, 애플리케이션 사용 데이터 테이블들(335)은 또한 디바이스(100)의 사용자들과 연관된 프라이버시 설정들에 관한 정보를 저장한다. 예를 들어, 디바이스(100)의 사용자들은 각각의 애플리케이션에 대한 사용 데이터의 수집과 연관된 프라이버시 설정들을 구성할 수 있다. 일부 실시예들에서, 사용자들은 각각의 사용 엔트리 내에 포함된 모든 정보(예컨대, 수행된 인앱 액션들, 수행된 다른 액션들, 센서 데이터, 디바이스 결합 정보, 및 다른 정보)에 대한 데이터 수집 설정들을 제어할 수 있다. 예를 들어, 사용자는, 디바이스(100)(또는 그의 컴포넌트, 예컨대 사용 데이터 수집 모듈(163-2))가 위치 데이터를 수집하지 않지만, 브라우저 모듈(147)에 대해 수행된 인앱 액션들에 관한 정보를 수집하도록 프라이버시 설정을 구성할 수 있다. 다른 예로서, 사용자는, 디바이스(100)가 수행된 인앱 액션들에 관한 정보를 수집하지 않지만, 온라인 비디오 모듈(155)에 대한 위치 데이터를 수집하도록 프라이버시 설정을 구성할 수 있다. 이러한 방식으로, 사용자들은 디바이스(100) 상의 사용 데이터의 수집을 제어할 수 있고, 디바이스(100) 상에서 이용가능한 각각의 애플리케이션에 대한 사용 데이터의 수집에 관한 이들의 개인 선호도들에 기초하여 적절한 프라이버시 설정들을 구성할 수 있다.
도 4a 및 도 4b는 일부 실시예들에 따른, 트리거 조건들을 저장하기 위한 데이터 구조들을 예시하는 블록도들이다. 도 4a에 도시된 바와 같이, 사전행동적 트리거 조건 테이블들(402)은, 디바이스(100) 상에 설치된 각각의 애플리케이션에 대한 테이블들의 집합으로서 선택적으로 구현되는, 데이터 구조들(402)의 집합을 포함하는데, 테이블들 각각은 각자의 애플리케이션과 연관된 트리거 조건들을 저장한다(예컨대, 애플리케이션 1 트리거 조건 테이블(402-1)은 애플리케이션 1과 연관되는 트리거 조건들(예컨대, 만족될 때, 디바이스(100)로 하여금 애플리케이션 1을 개시하거나 사용하게 하는 트리거 조건들)을 저장한다). 일부 실시예들에서, 애플리케이션 사용 데이터 테이블들의 집합에서의 각각의 테이블(예컨대, 테이블(335-1, 335-2, 335-3 … 335-N))은 전자 디바이스 상에 설치된 하나 초과의 애플리케이션과 연관된 트리거 조건들을 저장한다(예컨대, 테이블(335-1)은 잠재적으로 관련된 데이터의 효율적인 저장을 위해, 일반적인 애플리케이션 개발자 또는 애플리케이션 벤더에 의해 각각 제공되는 관련된 애플리케이션들에 대한 트리거 조건들을 저장한다).
일부 실시예들에서, 하나 이상의 사전행동적 트리거 조건 테이블들(402)(예컨대, 애플리케이션 1 트리거 조건 테이블(402-1))은 디바이스(100) 상에 설치된 애플리케이션들과 연관된 트리거 조건들을 저장하기 위해 사용된다. 예를 들어, 도 4b에 예시된 바와 같이, 애플리케이션 1 트리거 조건 테이블(402-1)은 애플리케이션 1과 연관되는 각각의 트리거 조건에 대한 다수의 전제 조건들 및 연관된 액션들을 식별하는 정보를 포함한다. 도 4b에 도시된 바와 같이, 애플리케이션 1 트리거 조건 테이블(402-1)은 레코드들(414-1 내지 414-z)을 포함하고, 선택적으로 헤더(414-0)를 포함한다. 헤더(414-0)는, 일부 실시예들에서, 테이블 내에 저장된 정보의 각각의 필드(예컨대, 각각의 필드는 레코드들 각각과 연관됨)의 간략한 설명을 포함한다. 각각의 레코드(예컨대, 레코드(414-1))는 디바이스(100)가 각각의 트리거 조건을 만족시키기 위한 전제 조건들을 결정할 수 있게 하는 정보를 포함한다. 일부 실시예들에서, 레코드(414-1)의 전제 1은 다수의 전제 조건들(예컨대, 센서 판독값들)을 포함하거나 식별하는데, 다수의 전제 조건들은, 검출될 때, 디바이스(100)로 하여금 연관된 액션(예컨대, 액션 4)을 수행하게 한다.
특정 예로서, 전제 1은, 하루 중 시간이 4:00 PM 내지 4:30 PM 사이에 있고; (예컨대, GPS 모듈(135)에 의해 보고되는 바와 같은) 위치 데이터가, 사용자가 여전히 그의 사무실 근처에 (예컨대, 그의 직장 주소의 미리결정된 거리 내에) 있음을 보여주고; 가속도계 데이터가, 사용자가 (예컨대, 가속도계들(168)에 의해 보고되는 바와 같이) 이동 중임을 보여주는 경우, 디바이스(100)가 전제 1과 연관된 트리거 조건을 검출하고 액션 4를 수행해야 함을 나타낼 수 있다(예컨대, 액션 4는 인스턴트 메시징 모듈(141)과 연관되고, 모듈(141)로 하여금 사용자의 배우자에게 그/그녀가 직장에서 집으로 돌아가고 있음을 나타내는 메시지를 전송하게 한다(또는 사용자가 메시지를 전송하고 싶어하는지 여부를 사용자에게 질문하는 다이얼로그를 제시한다)). 일부 실시예들에서, 전제 조건들은 트리거 확립 모듈(163-1)(도 1a)에 의해 식별된 사용자 거동의 패턴에 기초하여 식별된다. 일부 실시예들에서, 트리거 확립 모듈(163-1)은, 사용 데이터 수집 모듈(163-2) 및 애플리케이션 사용 데이터 테이블들(335)과 함께, 애플리케이션 사용 데이터 테이블들에 저장된 데이터를 마이닝하여 사용자 거동의 패턴들을 식별한다. 이전의 예를 계속하면, 사용자가 그의 직장의 미리결정된 거리 내에 있는 동안 그리고 사용자가 이동 중인 동안, 사용자가 4:00 PM 내지 4:30 PM 사이에 그의 배우자에게 메시지를 전송한 것을 별개의 3일간 관찰한 후에, 트리거 확립 모듈(163-1)은 대응하는 트리거 조건을 생성하여 전제 조건들이 관찰될 때 메시지를 자동으로 전송한다(또는 메시지를 자동으로 전송하기 위한 허가를 위해 사용자에게 질문한다). 일부 실시예들에서, 트리거 확립 모듈(163-1)은 애플리케이션 사용 데이터 테이블들(335)을 미리정의된 간격들(예컨대, 매 시간, 4시간마다, 매일, 또는 디바이스가 외부 전원에 연결될 때)로 분석하거나 마이닝하고, 이러한 미리정의된 간격들로만 트리거 조건들을 생성한다. 일부 실시예들에서, 사용자는 트리거 조건이 생성되어야 하는지를 확인한다(예컨대, 디바이스(100)는 전제 조건들 및 연관된 액션을 설명하는 다이얼로그를 사용자에게 제시하고, 사용자는 이어서 트리거 조건의 생성을 확인하거나 거절한다). 예를 들어, 예시적인 다이얼로그는 텍스트 "I've noticed that you always text your wife that you are on your way home at this time of day. Would you like to send her a text saying: I'm heading home now?"를 포함한다.
도 5는 일부 실시예들에 따른, 예시적인 트리거 조건 확립 시스템을 예시하는 블록도이다. 도 5에 도시된 바와 같이, 트리거 조건 확립 시스템(500)은 휴대용 다기능 디바이스(100)를 포함하고, 또한 하나 이상의 서버들(502)을 포함한다. 휴대용 다기능 디바이스(100)는 하나 이상의 네트워크들을 통해 하나 이상의 서버들(502)과 통신한다. 하나 이상의 네트워크들(예컨대, 네트워크(들)(520))은 트리거 조건 확립 시스템(500)의 각각의 컴포넌트를 트리거 조건 확립 시스템(500)의 다른 컴포넌트들과 통신가능하게 연결한다. 일부 실시예들에서, 하나 이상의 네트워크들(520)은 공중 통신 네트워크들, 사설 통신 네트워크들, 또는 공중 통신 네트워크들과 사설 통신 네트워크들 양쪽 모두의 조합을 포함한다. 예를 들어, 하나 이상의 네트워크들(520)은 인터넷, 다른 광역 네트워크(WAN), 근거리 네트워크(LAN), 가상 사설 네트워크(VPN), 도시권 네트워크(MAN), 피어-투-피어(peer-to-peer) 네트워크, 및/또는 애드 혹(ad-hoc) 연결들과 같은 임의의 네트워크(또는 네트워크들의 조합)일 수 있다.
일부 실시예들에서, 하나 이상의 사전행동적 트리거 조건 테이블들(402)이 휴대용 다기능 디바이스(100) 상에 저장되고, 하나 이상의 다른 사전행동적 트리거 조건 테이블들(402)이 하나 이상의 서버들(502) 상에 저장된다. 일부 실시예들에서, 휴대용 다기능 디바이스(100)가 사전행동적 트리거 조건 테이블들(402)을 저장하는 반면, 다른 실시예들에서는, 하나 이상의 서버들(502)이 사전행동적 트리거 조건 테이블들(402)을 저장한다. 유사하게, 일부 실시예들에서, 하나 이상의 애플리케이션 사용 데이터 테이블들(335)이 휴대용 다기능 디바이스(100) 상에 저장되고, 하나 이상의 다른 애플리케이션 사용 데이터 테이블들(335)이 하나 이상의 서버들(502) 상에 저장된다. 일부 실시예들에서, 휴대용 다기능 디바이스(100)가 애플리케이션 사용 데이터 테이블들(335)을 저장하는 반면, 다른 실시예들에서는, 하나 이상의 서버들(502)이 애플리케이션 사용 데이터 테이블들(335)을 저장한다.
하나 이상의 사전행동적 트리거 조건 테이블들(402) 또는 하나 이상의 애플리케이션 사용 데이터 테이블들(335)이 하나 이상의 서버들(502) 상에 저장되는 실시예들에서, 트리거 확립 모듈(163-1) 및 사용 데이터 수집 모듈(163-2) 각각에 의해 수행되는 기능들 중 일부는 하나 이상의 서버들(502)에서 수행된다. 이러한 실시예들에서, 네트워크들(520)을 통해 하나 이상의 서버들(502)과 디바이스(100) 사이에서 정보가 교환된다. 예를 들어, 하나 이상의 서버들(502)이 온라인 비디오 모듈(155)에 대한 사전행동적 트리거 조건 테이블들(402)을 저장하는 경우, 일부 실시예들에서, 디바이스(100)는 온라인 비디오 모듈(155)에 대응하는 하나 이상의 사용 엔트리들을 하나 이상의 서버들(502)로 전송한다. 일부 실시예들에서, 하나 이상의 서버들(502)은 이어서 (도 4a 및 도 4b를 참조하여 상기 논의된 바와 같이) 수신된 사용 데이터를 마이닝하여 사용 패턴들을 식별하고 트리거 조건들을 생성하고, 생성된 트리거 조건들을 디바이스(100)로 전송한다. 일부 실시예들에서, 온라인 비디오 모듈(155)과 연관된 데이터(예컨대, 하나 이상의 비디오 스트림들에 대한 데이터)를 수신하는 동안, 디바이스(100) 및 하나 이상의 서버들(502)은 사용 데이터와 트리거 조건들을 교환한다. 일부 실시예들에서, 하나 이상의 서버들(502)은 또한 생성된 트리거 조건들을 검출하여서(예컨대, 하나 이상의 비디오 스트림들에 대해 데이터의 교환 동안 수신된 사용 데이터에 기초하여, 서버는 트리거 조건들이 만족되었다고 결정할 수 있음), 트리거 조건들이 디바이스(100)로 전혀 전송될 필요가 없도록 할 수 있다. 일부 실시예들에서, 하나 이상의 서버들(502)로 전송되는 사용 데이터는 제한된 범주의 것이어서, 그것이 사용자의 온라인 비디오 모듈(155)의 사용에 관한 정보만을 포함하도록 한다(전술된 바와 같이, 사용자는 또한 사용 데이터의 집합을 커버하는 프라이버시 설정들을 구성해야 하고, 이러한 프라이버시 설정들은, 일부 실시예들에서, 또한 사용자가 하나 이상의 서버들(502)과의 사용 데이터의 교환을 구성할 수 있게 한다(예컨대, 어떤 유형의 데이터가 전송되어야 하는지 그리고 어떤 것이 전송되지 않아야 하는지를 구성할 수 있게 한다).
일부 실시예들에서, 섹션 1 내지 섹션 11을 참조하여 아래에서 논의되는 데이터 구조들이 또한 본 명세서에 논의되는 방법들 중 임의의 것을 구현 및/또는 개선하는 것을 돕기 위해 사용된다. 예를 들어, 도 1 내지 도 11을 참조하여 아래에서 논의되는 예측 엔진들은 트리거 조건들을 확립하는 것을 돕기 위해 사용되고/되거나, 섹션 1 내지 섹션 11에서 논의되는 다른 기법들은 또한 애플리케이션 사용 이력들을 모니터링하는 것을 돕기 위해 사용된다.
도 6a 및 도 6b는 일부 실시예들에 따른, 관련 콘텐츠를 사전행동적으로 식별 및 표면화하는 방법(600)의 흐름도 표현을 예시한다. 도 3a, 도 3b, 도 4a, 도 4b, 도 5, 도 7a 및 도 7b는 도 6a 및 도 6b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(600)은 전자 디바이스(예컨대, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(600)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(600)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(600)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)), 애플리케이션 사용 데이터 테이블들(예컨대, 애플리케이션 사용 데이터 테이블들(335)), 트리거 조건 테이블들(예컨대, 트리거 조건 테이블들(402)), 트리거 확립 모듈(예컨대, 트리거 확립 모듈(163-1)), 사용 데이터 수집 모듈(예컨대, 사용 데이터 수집 모듈(163-2)), 사전행동적 제안 모듈(예컨대, 사전행동적 제안 모듈(163-3)), 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 하나 이상의 접촉 세기 센서들(예컨대, 접촉 세기 센서들(165)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(600)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(600)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 직관적인 방식을 제공한다. 본 방법은 다양한 기능들을 수행하기 위해 보다 적은 터치 입력들을 요구함으로써 보다 효율적인 인간-기계 인터페이스들을 생성한다. 배터리-작동형 전자 디바이스들의 경우, 보다 빠르고 보다 효율적으로 관련 콘텐츠를 사전행동적으로 식별 및 표면화하는 것이 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 6a에 도시된 바와 같이, 디바이스는, 전자 디바이스 상에서, 전자 디바이스의 사용자로부터의 지시에 응답하여 애플리케이션을 실행한다(602). 일부 실시예들에서, 사용자로부터의 지시는, 가상 어시스턴트 애플리케이션(예컨대, 도 1a의 운영 체제(126)에 의해 관리되는 가상 어시스턴트 애플리케이션)에게 애플리케이션을 실행하도록 지시하는 사용자로부터 수신된 음성 커맨드 또는 애플리케이션과 연관된 아이콘 위의 터치 입력이다. 애플리케이션을 실행하는 동안, 디바이스(또는 그의 컴포넌트, 예컨대 사용 데이터 수집 모듈(163-2))는 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들을 포함하는 사용 데이터를 수집한다(604). 일부 실시예들에서, 사용 데이터는, 하나 이상의 액션들을 포함하는 대신에 또는 그에 더하여, 하나 이상의 액션들 각각과 연관된 액션 유형을 식별하는 정보를 포함한다. 예를 들어, 사용 데이터는, 음악 재생기 모듈(152)과 상호작용하는 동안, 사용자가 제1 재생목록에 대해 검색하고, 제1 재생목록 내에서 내비게이팅하고, 제1 재생목록 내의 제1 트랙을 선택하고, 이어서 제2 재생목록에 대해 검색하였음을 식별하는 정보를 포함한다(예컨대, 사용 데이터는 음악 재생기 모듈(152) 내에서 사용자에 의해 수행된 하나 이상의 액션들 각각을 포함한다). 이러한 방식으로, 사용 데이터는 수행된 개별 액션들(예컨대, 사용자가 제1 재생목록의 제1 트랙에 대해 검색하고 그를 재생하였음) 각각에 관한 정보를 포함하고, 또한 액션 유형들(검색, 내비게이팅, 선택 등)을 식별하는 정보를 포함한다. 일부 실시예들에서, 사용 데이터 수집 모듈(163-2)은 하나 이상의 액션들을 수집하고, 이어서 트리거 확립 모듈(163-1)은 추후에 하나 이상의 액션들 각각에 액션 유형을 할당한다.
일부 실시예들에서, 수집된 사용 데이터는, 애플리케이션과 연관되는 애플리케이션 사용 데이터 테이블 내의 (도 3a 및 도 3b를 참조하여 전술된 바와 같은) 사용 엔트리에 저장된다. 일부 실시예들에서, 수집된 사용 데이터는 (도 3b를 참조하여 상기 설명된 바와 같이) 사용자에 의해 수행된 인앱 액션들, 사용자에 의해 수행된 다른 액션들(예컨대, 가상 어시스턴트 애플리케이션과의 상호작용들, 검색 인터페이스(예컨대, 검색 모듈(151))와의 상호작용들, 및 운영 체제(126)에 의해 관리되는 애플리케이션들과의 다른 상호작용들), 캘린더 이벤트들과 연관된 정보, 및 디바이스(100) 상의 센서들로부터 획득된 추가 데이터를 포함한다.
일부 실시예들에서, 사용 데이터는 애플리케이션을 계속해서 실행하는 동안, 가상 어시스턴트 애플리케이션에 제공되는, 사용자로부터의 구두 지시들을 포함하고, 적어도 하나의 트리거 조건은 가상 어시스턴트 애플리케이션에 제공된 구두 지시들에 추가로 기초한다(618). 일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 대응하는 (예컨대, 그의 재현/재실행을 언급하거나 요구하는) 리마인더를 생성하라는 요청을 포함하고, 현재 상태는 구두 지시들이 제공되었을 때의 애플리케이션의 상태에 대응한다(예컨대, 도 1b의 하나 이상의 애플리케이션 뷰들(191)). 일부 실시예들에서, 구두 지시들이 제공되었을 때의 애플리케이션의 상태는, 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지, 구두 지시들이 제공되었을 때의 애플리케이션 내에 재생 중인 콘텐츠(예컨대, 현재 재생 중인 오디오 트랙), 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 통지(예컨대, 사용자가 브라우저 모듈(147)과 상호작용하는 동안 디스플레이되는 인스턴트 메시징 모듈(141)로부터의 통지), 및 구두 지시들이 제공되었을 때의 애플리케이션 내에 디스플레이된 페이지의 활성 부분(예컨대, 웹 페이지 내의 현재 재생 중인 비디오 콘텐츠)으로 이루어진 그룹으로부터 선택된다. 추가 예들로서, 애플리케이션의 현재 상태는 또한 (i) 구두 지시들이 제공될 때의 애플리케이션 내에서 사용자가 현재 보고 있는 특정 페이지의 식별자(예컨대, 현재 디스플레이된 웹페이지에 대한 URL), 또는 애플리케이션 내에서 현재 페이지로 내비게이팅하기 전에 사용자가 취한 액션들의(예컨대, 현재 디스플레이된 웹페이지 이전에 사용자가 방문한 URL들) 이력에 대응할 수 있다.
일부 실시예들에서, 구두 지시들은 애플리케이션의 현재 상태에 관하여 용어 "this" 또는 "that"을 포함한다. 예를 들어, 사용자는 인스턴트 메시징 모듈(141)로부터의 통지가 디스플레이되는 동안 "remind me of 'this'"라는 지시를 가상 어시스턴트 애플리케이션에 제공하고, 이에 응답하여, 가상 어시스턴트 애플리케이션은 디바이스(100)로 하여금 통지 내에 디스플레이된 콘텐츠에 대응하는 리마인더를 생성하게 한다. 다른 예로서, 사용자는 사용자가 온라인 비디오 모듈(155)에서의 특정 비디오 콘텐츠를 시청하는 동안 "remind me to watch 'this'"라는 지시를 가상 어시스턴트 애플리케이션에 제공하고, 이에 응답하여, 가상 어시스턴트 애플리케이션은 디바이스(100)로 하여금 특정 비디오 콘텐츠에 대응하는 리마인더를 생성하게 한다. 일부 실시예들에서, 디바이스(100)는 구두 지시들이 제공되었을 때의 애플리케이션의 현재 상태에 관한 정보를 애플리케이션 자체로부터 수신한다(예컨대, 이전의 예를 계속하면, 온라인 비디오 모듈(155)은 그의 현재 상태를 다시 디바이스(100)에, 또는 그의 컴포넌트, 예컨대 사전행동적 모듈(163)에 보고하고, 이러한 방식으로, 사전행동적 모듈(163)은 특정 비디오 콘텐츠를 식별하는 정보를 수신한다).
디바이스는 이어서, 자동으로 그리고 인간의 개입 없이, 수집된 사용 데이터에 기초하여 적어도 하나의 트리거 조건을 획득한다(606). 일부 실시예들에서, 적어도 하나의 트리거 조건은 디바이스 상에서 확립되는 반면, 다른 실시예들에서, 트리거 조건은 서버(예컨대, 도 5의 하나 이상의 서버들(502))로부터 획득되는데, 서버는 (도 5를 참조하여 상기 설명된 바와 같이) 디바이스로부터 하나 이상의 서버들(502)로 전송된 사용 데이터에 기초하여 트리거 조건을 확립하였다(612). 일부 실시예들에서, 적어도 하나의 트리거 조건은, 만족될 때, 디바이스(또는 그의 컴포넌트, 예컨대 사전행동적 모듈(163))로 하여금 사용자가 적어도 하나의 트리거 조건과 연관되는 액션을 (예컨대, 임의의 입력 없이 또는 사용자로부터의 구두 입력 또는 단일 터치만으로) 쉽게 수행할 수 있게 한다. 예를 들어, 하나의 예시적인 트리거는, 2:00 PM 내지 2:30 PM 사이에, (예컨대, 가속도계들(168)에 의해 보고되는 바와 같은) 가속도계 데이터가, 사용자가 이전에 방문한 GPS 좌표들 사이에서(예컨대, 사용자에 대한 직장 주소 근처에 위치된 2개의 자주 방문하는 빌딩들 사이에서) 걷고 있음을 나타내는 동안, 디바이스가 자동으로 (그리고 사용자로부터의 어떠한 입력도 없이) 음악 애플리케이션(예컨대, 도 1a의 음악 재생기(152))을 열고 특정 재생목록을 재생하기 시작해야 한다는 것을 나타낼 수 있다. 일부 실시예들에서, 이러한 예시적인 트리거는, 사용 데이터를 수집하고, 음악 재생기(152)와 연관된 수집된 사용 데이터가, 사용자가 평일마다 2:00 PM 내지 2:30 PM 사이에 이전에 방문한 GPS 좌표들 사이에서 걷는 동안 음악 재생기(152)를 열고 특정 재생목록을 재생함을 나타낸다고 결정한 후에, (하나 이상의 서버들(502)에 의해 또는 디바이스(100)에 의해) 확립되었다. 이러한 방식으로, 디바이스(또는 서버)는 수집된 사용 데이터에 기초하여 패턴을 식별하고 인식한다. 사용자에 대해 자동으로 액션을 수행함으로써(예컨대, 특정 재생목록을 재생함으로써), 사용자는, 디바이스를 잠금해제하고, 음악 재생기(152)에 대해 검색하고, 특정 재생목록에 대해 검색하고, 이어서 특정 재생목록을 재생하는 어떠한 시간도 낭비할 필요가 없다.
일부 실시예들에서, 본 방법은 또한, 소정의 사용 데이터를 수집하도록 사용자가 디바이스에게 허가했는지를 확인하고/하거나 트리거 조건들을 확립하도록 사용자가 디바이스에게 허가했는지를 검증하기 위해, 트리거 조건들을 확립하거나 획득하기 전에 디바이스의 사용자와 연관된 프라이버시 설정들을 체크하는 단계를 포함한다(예컨대, 사용자는 디바이스로 하여금 텍스트 메시지들을 자동으로 전송하게 하는 트리거 조건들을 디바이스가 확립하지 못하도록 설정을 구성할 수 있다).
디바이스(또는 그의 컴포넌트, 예컨대 트리거 조건 확립 모듈(163-1))는 또한 (예컨대, 도 4a 및 도 4b의 사전행동적 트리거 조건 테이블(402)에 특정 액션과 함께 트리거 조건을 만족시키기 위한 전제 조건들을 저장함으로써) 적어도 하나의 트리거 조건을 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들의 특정 액션과 (또는 특정 액션에 대응하는 특정 액션 유형과) 연관시킨다(608). 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 디바이스는 사용자에게 트리거 조건과 연관된 특정 액션(또는 특정 액션 유형)이 이용가능하다는 표시를 제공한다(610). 일부 실시예들에서, 사용자에게 표시를 제공하는 것은, 특정 액션을 개시하기 위해 (또는 특정 액션 유형에 대응하는 액션을 수행하기 위해) 사용자 인터페이스 객체(예컨대, 도 7a의 UI 객체(702))를 표면화하는 것, 특정 액션을 수행하는 애플리케이션과 연관된 아이콘(예컨대, 도 7a의 터치 스크린(112)의 하부 좌측 코너에 도시된 바와 같은, 애플리케이션 아이콘(710))을 표면화하는 것, 또는 (상기 특정 재생목록의 예에 기술된 바와 같이) 특정 액션을 간단히 수행하는 것을 포함한다. 일부 실시예들에서, 디바이스는, 또한 특정 액션(또는 특정 액션과 동일한 특정 액션 유형의 것인 액션)을 (자동으로 그리고 인간의 개입 없이) 간단히 수행하면서, 사용자 인터페이스 객체 및/또는 아이콘을 표면화한다.
일부 실시예들에서, 적어도 하나의 트리거 조건을 획득하는 것은, 전자 디바이스로부터 원격으로 위치되는 하나 이상의 서버들(예컨대, 도 5의 서버들(502))로 사용 데이터를 전송하는 것, 및 하나 이상의 서버들로부터 적어도 하나의 트리거 조건을 수신하는 것을 포함한다(612). 예를 들어, 이러한 실시예들에 따라, 전자 디바이스는 (네트워크들(520)을 통해) 하나 이상의 사용 엔트리들(예컨대, 도 3b의 사용 엔트리 1)을 서버들(502)로 전송하고, 사용 데이터에 기초하여, 서버들(502)은 적어도 하나의 트리거 조건을 확립한다. 이 예를 계속하면, 서버들(502)은 이어서 (네트워크들(520)을 사용하여) 적어도 하나의 트리거 조건(예컨대, 사전행동적 트리거 조건 테이블(402-1)에 저장되는, 전제 조건들 및 연관된 액션들)을 디바이스(100)로 전송한다.
일부 실시예들에서, 표시를 제공하는 것은, 터치 감응형 디스플레이 상의 잠금 화면 상에, 트리거 조건과 연관된 특정 액션에 대응하는 사용자 인터페이스 객체를 디스플레이하는 것을 포함한다(614). 일부 실시예들에서, 사용자 인터페이스 객체는 잠금 화면의 미리정의된 중심 부분에 디스플레이된다(예컨대, 도 7a에 도시된 바와 같이, UI 객체(702)는 실질적으로 잠금 화면의 중간에 디스플레이된다). 예를 들어, 디바이스는 잠금 화면(도 7a) 상에 UI 객체(702)를 디스플레이함으로써 표시를 제공한다. 도 7a에 도시된 바와 같이, UI 객체(702)는 예측된 액션(706)을 포함한다. 일부 실시예들에서, 예측된 액션(706)은 적어도 하나의 트리거 조건과 연관된 액션의 설명이다(다시 말하면, 사용자 인터페이스 객체는 트리거 조건(616)과 연관된 특정 액션의 설명, 예컨대 "Swipe to Play Track 2 of Walking Playlist"를 포함한다). 일부 실시예들에서, UI 객체(702)는 또한 선택적으로, UI 객체(702)가 디스플레이되고 있는 이유에 대한 정보를 사용자에게 제공하는 추가 정보(704)를 포함한다. 일부 실시예들에서, 추가 정보(704)는 트리거 조건을 검출하기 위해 사용된 사용 데이터(예컨대, 센서 데이터(340-1(c)))의 설명 및/또는 적어도 하나의 트리거 조건에 대한 전제 조건들(예컨대, 도 4b의 레코드(414-1)의 전제 1)의 설명을 포함한다. 예를 들어, 추가 정보(704)는, 하루 중 이러한 특정 시간에 그리고 사용자가 걷고 있는 동안 사용자가 종종 walking playlist를 듣기 때문에 예측된 액션(706)이 디스플레이되고 있음을 나타낸다. 일부 실시예들에서, 추가 정보(704)를 선택하는 것(예컨대, 추가 정보(704)의 상부에서 탭핑하는 것)은, 디바이스(100)로 하여금 사용자가 사용 데이터의 수집 및 트리거 조건들의 생성과 연관된 프라이버시 설정들을 변경할 수 있게 하는 사용자 인터페이스를 디스플레이하게 한다.
일부 실시예들에서, UI 객체(702)는 또한 선택적으로 예측된 액션(706)과 연관되는 애플리케이션 아이콘(710)을 포함한다(616). 예를 들어, 애플리케이션 아이콘(710)은 (도 7a에 도시된 바와 같이) 음악 재생기(152)에 대한 아이콘이다. 일부 실시예들에서, UI 객체(702)는 또한 어포던스(708)를 포함하는데, 어포던스는, 선택될 때, 디바이스로 하여금 예측된 액션을 수행하게 한다(예컨대, 디바이스로 하여금 walking playlist의 트랙 2를 재생하기 시작하게 한다). 일부 실시예들에서, 사용자 인터페이스 객체(예컨대, 사용자 인터페이스 객체(702))는 트리거 조건과 연관된 특정 액션(예컨대, 상기 설명된 바와 같이, 예측된 액션(706))의 설명을 포함한다. 일부 실시예들에서, 사용자 인터페이스 객체(702)는 애플리케이션과 연관된 아이콘(예컨대, UI 객체(702) 내에 디스플레이되는 애플리케이션 아이콘(710))을 추가로 포함한다. 일부 실시예들에서, 사용자 인터페이스 객체(702)는 스누즈 버튼(snooze button)을 추가로 포함하는데, 스누즈 버튼은, 선택될 때, 디바이스로 하여금 UI 객체(702)를 디스플레이하는 것을 중지하게 하고 사용자에 의해 선택되거나 미리구성된 기간 이후에 UI 객체(702)를 다시 디스플레이하게 한다. 예를 들어, 사용자는 2시간 동안 UI 객체(702)를 스누즈하도록 선택하고, 2시간 후에, 디바이스는 이어서 UI 객체(702)를 다시 디스플레이한다. 다른 예로서, 사용자는 이용가능할 때까지 UI 객체(702)를 스누즈하도록 선택하고, 일부 실시예들에서, 디바이스(100)는 캘린더 모듈(148)을 검색하여 사용자의 스케줄에서의 다음 개방 슬롯을 식별하고, 식별된 다음 개방 슬롯 동안 UI 객체(702)를 다시 디스플레이한다.
일부 실시예들에서, 디바이스는 사용자 인터페이스 객체에서 제1 제스처를 검출한다(622). 제1 제스처를 검출하는 것에 응답하여, 디바이스는 터치 감응형 디스플레이 상에서, 애플리케이션을 디스플레이하고, 애플리케이션을 디스플레이하는 동안, 트리거 조건과 연관된 특정 액션을 수행한다(624). 일부 실시예들에서, 제1 제스처는 사용자 인터페이스 객체 위에서의 스와이프 제스처이다. 일부 실시예들에서, 사용자 인터페이스 객체 위에서 스와이프 제스처를 검출하는 것에 응답하여, 디바이스는 또한 애플리케이션을 디스플레이하기 전에 자신을 잠금해제한다(다른 실시예들에서, 애플리케이션은 잠금 화면 상에 곧장 디스플레이된다). 일부 실시예들에서, 제1 제스처는 UI 객체(702) 내에 디스플레이된 텍스트에 의해 나타내진다(예컨대, 예측된 액션(706) 내의 텍스트는 제1 제스처의 설명, 예컨대, "Swipe to …"을 포함한다). 예를 들어 그리고 도 7a를 참조하면, 사용자는 UI 객체(702)의 상부에서 터치 감응형 표면과 접촉하고, 터치 감응형 표면과의 접촉을 중단하지 않고서, 사용자는 UI 객체(702)를 가로질러 실질적으로 수평 방향으로 접촉을 이동시킨다. UI 객체(702) 위에서 사용자로부터의 이러한 스와이프 제스처를 검출하는 것에 응답하여, 디바이스는 음악 재생기(152)를 디스플레이하고, walking playlist의 트랙 2를 재생하기 시작한다.
대안적으로, 제1 제스처를 검출하는 대신에, 일부 실시예들에서, 디바이스는 사용자 인터페이스 객체에서 제2 제스처(예를 들어, 상기 논의된 제1 제스처와는 별개의 제스처, 예컨대 사용자 인터페이스 객체의 미리정의된 영역(예컨대, 어포던스(708)와 같은 재생 버튼)에서의 단일 탭)를 검출한다(626). 제2 제스처를 검출하는 것에 응답하여 그리고 터치 감응형 디스플레이 상에 잠금 화면을 계속해서 디스플레이하는 동안, 디바이스는 트리거 조건과 연관된 특정 액션을 수행한다(628). 다시 말하면, 디바이스는 잠금 화면으로부터 곧장 특정 액션을 수행하고, 애플리케이션을 디스플레이하지 않고서, 잠금 화면을 계속해서 디스플레이한다.
일부 실시예들에서, 동작들(622 내지 628)에 관하여 상기 논의된 제1 및 제2 제스처들은 동일한 제스처이지만, 이들은 UI 객체(702) 내에 디스플레이된 상이한 객체들 위에서 수행된다. 예를 들어, 제1 제스처는 예측된 액션(706) 위에서의 스와이프 제스처인 반면, 제2 제스처는 어포던스(708) 위에서의 스와이프 제스처이다. 다른 예로서, 제1 제스처는 예측된 액션(706) 위에서의 단일 탭이고, 제2 제스처는 어포던스(708) 위에서의 단일 탭이다.
일부 실시예들에서, 사용자에게 특정 액션이 이용가능하다는 표시를 제공하는 것은, 특정 액션이 실행을 위해 이용가능하다는 것을 사용자가 알도록 하는 것을 포함한다. 일부 실시예들에서, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 것은, 특정 액션을 수행하는 것을 포함한다. 일부 실시예들에서, 표시는 특정 액션의 수행에 의해 사용자에게 제공된다(예컨대, 사용자는 원하는 재생목록이 지금 재생 중이라는 것을 들음). 일부 실시예들에서, UI 객체(702)는 잠금 화면 상에 디스플레이되고, 특정 액션은 또한 어떠한 사용자 입력(예컨대, 상기 논의된 제1 및 제2 제스처들)도 수신하지 않고서 수행된다.
일부 실시예들에서, UI 객체(702)를 디스플레이하는 대신에(또는 그에 더하여), 디바이스는 실질적으로 잠금 화면의 코너에 애플리케이션과 연관된 아이콘을 디스플레이한다(예컨대, 도 7a에 도시된 바와 같이, 애플리케이션 아이콘(710)은 실질적으로 터치 스크린(112)의 하부 좌측 코너에 디스플레이된다).
일부 실시예들에서, 디바이스는 사용자로부터 전자 디바이스를 잠금해제하라는 지시를 수신한다(예컨대, 홈 버튼(204) 위에서의 연장된 접촉 이후에 사용자의 지문을 유효한 것으로 인식함). 지시를 수신하는 것에 응답하여(예컨대, 디바이스를 잠금해제하고 잠금 화면을 디스플레이하는 것을 중지한 후에), 디바이스는 터치 감응형 디스플레이 상에서, 디바이스의 홈 화면을 디스플레이하고, 홈 화면 상에서, 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 사용자에게 제공한다(620). 도 7b에 도시된 바와 같이, UI 객체(702)는, 디바이스를 잠금해제하라는 지시를 수신한 후에 홈 화면의 스프링보드(springboard) 섹션(또는 애플리케이션 런처(application launcher))에 오버레이하는 것으로 디스플레이된다. 일부 실시예들에서, UI 객체(702)를 홈 화면의 상부에 디스플레이하는 대신에 또는 그에 더하여, 디바이스는 또한 홈 화면의 도크(dock) 섹션에 오버레이하는 하부 부분의 애플리케이션 아이콘(710)을 디스플레이한다. 일부 실시예들에서, 홈 화면은, (i) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제1 세트를 개시하기 위한 하나 이상의 사용자 인터페이스 페이지들을 포함하는 제1 부분(예컨대, 제1 부분은 홈 화면의 스프링보드 섹션의 모든 개별 페이지들로 이루어짐), 및 (ii) 전자 디바이스 상에서 이용가능한 애플리케이션들의 제2 세트를 개시하기 위한, 제1 부분에 인접하게(예컨대, 아래에) 디스플레이되는 제2 부분을 포함하고, 제2 부분은 제1 부분 내에 포함된 모든 사용자 인터페이스 페이지들 상에 디스플레이된다(예컨대, 제2 부분은 도크 섹션이다). 일부 실시예들에서, 홈 화면 상에 표시를 제공하는 것은, 제2 부분 위에 표시를 디스플레이하는 것을 포함한다(예컨대, 도 7b에 도시된 바와 같이, 애플리케이션 아이콘(710)을 포함하는 하부 부분은 도크 부분 위에 디스플레이된다). 일부 실시예들에서, 애플리케이션들의 제2 세트는 애플리케이션들의 제1 세트와는 별개이고 그 보다 더 작다(예컨대, 도크 섹션 내에 디스플레이되는 애플리케이션들의 제2 세트는 사용자에 대한 즐겨찾기 애플리케이션들에 대응하는 아이콘들의 선택된 세트이다).
일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 전자 디바이스와는 별개인 제2 디바이스와 결합되었다고 결정하는 것을 포함한다. 예를 들어, 제2 디바이스는 헤드셋 잭(212)을 통해 디바이스에 결합되는 한 쌍의 헤드폰들이고, 적어도 하나의 트리거 조건은 (예컨대, 사용자가 헤드폰들을 연결한 후에 항상 개시하는 팟캐스트(podcast) 애플리케이션 내에서 사용자의 즐겨찾기 팟캐스트를 개시하는 것을 포함하는 특정 액션을 실행하기 전에) 한 쌍의 헤드폰들이 디바이스에 결합되었음을 나타내는 전제 조건을 포함한다. 다른 예로서, 제2 디바이스는 사용자의 자동차와 연관된 블루투스 스피커 또는 다른 핸즈프리 디바이스이고, 적어도 하나의 트리거 조건은 (예컨대, 하루 중 시간 및 사용자의 위치가, 사용자의 엄마에게 전화를 거는 특정 액션에 대한 추가 전제 조건들에 매칭되는 경우 사용자의 엄마에게 전화를 거는 것을 포함하는 특정 액션을 실행하기 전에) 자동차의 블루투스 스피커가 디바이스에 결합되었음을 나타내는 전제 조건을 포함한다. 외부 디바이스의 결합 및 결합에 응답하여 액션을 수행하는 것에 관한 추가 상세사항들이 아래의 섹션 6에서 (예컨대, 섹션 6의 도 36a을 참조하여) 제공된다.
일부 실시예들에서, 적어도 하나의 트리거 조건이 만족되었다고 결정하는 것은, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 위치에 도착하였다고 결정하는 것을 포함한다. 일부 실시예들에서, 디바이스는 사용자가 자주 방문하는 위치들(예컨대, 그 위치들과 연관된 특정 GPS 좌표들 또는 거리 주소(street address)들)을 모니터링하고, 이 정보를 사용하여 사용자와 연관된 집 또는 직장 위치를 확인한다. 일부 실시예들에서, 디바이스는 사용자에 의해 입력되거나 그로부터 수신된 (저장된 연락처들과 같은) 정보에 기초하여 이러한 위치들에 대한 주소들을 결정한다. 일부 실시예들에서, 전자 디바이스가 사용자와 연관된 집 또는 직장 위치에 대응하는 주소에 도착하였다고 결정하는 것은, 전자 디바이스의 가속도계로부터 모션 데이터를 모니터링하는 것, 및 모니터링된 모션 데이터에 기초하여, 전자 디바이스가 임계 시간 초과 동안 움직이지 않았다고(예컨대, 사용자가 집에 정착하고 10분간 움직이지 않았음) 결정하는 것을 포함한다. 이러한 방식으로, 예를 들어, 디바이스는, 단지 사용자가 그의 집의 진입로에 도착할 때 대신에, 사용자가 실제로 그의 집에 정착하였을 때 적어도 하나의 트리거 조건과 연관된 특정 액션이 수행되는 것을 보장한다.
전술된 방법(600)의 일부 실시예들에서, 본 방법은 획득 동작(606)에서 시작하고, 선택적으로, 실행 동작(602) 및 수집 동작(604)을 포함한다. 다시 말하면, 이러한 실시예들에서, 방법(600)은 전자 디바이스의 사용자와 연관된 사용 데이터에 기초하는 적어도 하나의 트리거 조건을 획득하는 단계 - 사용 데이터는 전자 디바이스 상에서 애플리케이션이 실행하고 있던 동안 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들을 포함함 -; 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 연관시키는 단계; 및 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 제공하는 단계를 포함한다.
도 6a 및 도 6b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법(800))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 6a 및 도 6b와 관련하여 전술된 방법(600)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(600)을 참조하여 전술된 사용자 인터페이스 객체들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(800))을 참조하여 본 명세서에 기술되는 사용자 인터페이스 객체들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(600)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 8a 및 도 8b는 일부 실시예들에 따른, 관련 콘텐츠를 사전행동적으로 식별 및 표면화하는 방법(800)의 흐름도 표현을 예시한다. 도 3a, 도 3b, 도 4a, 도 4b, 도 5, 및 도 9a 내지 도 9d는 도 8a 및 도 8b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 일부 실시예들에서, 도 9a 내지 도 9d에 예시된 사용자 인터페이스들은 제로-키워드(zero-keyword) 검색으로 지칭된다. 제로-키워드 검색은 사용자로부터의 어떠한 입력도 없이 수행되는 검색이고(예컨대, 검색 엔트리 상자가 빈 채로 남아 있음), 사용자가, 예를 들어, 사용자가 다음에 검색할 것 같은 가능성이 있는 (또는 그러할 것으로 예측되는) 사람들, 애플리케이션들, 애플리케이션들 내에서의 액션들, 인근 장소들, 및/또는 뉴스 기사들을 볼 수 있게 한다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(800)은 전자 디바이스(예컨대, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(800)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(800)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(800)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)), 애플리케이션 사용 데이터 테이블들(예컨대, 애플리케이션 사용 데이터 테이블들(335)), 트리거 조건 테이블들(예컨대, 트리거 조건 테이블들(402)), 트리거 확립 모듈(예컨대, 트리거 확립 모듈(163-1)), 사용 데이터 수집 모듈(예컨대, 사용 데이터 수집 모듈(163-2)), 사전행동적 제안 모듈(예컨대, 사전행동적 제안 모듈(163-3)), 검색 모듈(예컨대, 검색모듈(151), 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 하나 이상의 접촉 세기 센서들(예컨대, 접촉 세기 센서들(165)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(800)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(800)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 관련 콘텐츠를 (사용자가 관련 콘텐츠를 명백히 요구하기 전에, 예컨대, 사용자가 검색 인터페이스의 검색 엔트리 부분에 임의의 텍스트를 입력하기 전에) 사전행동적으로 식별 및 표면화하기 위한 자동화 방법을 제공한다. 이 방법은 애플리케이션들에 액세스할 때 사용자의 인지적 부담을 감소시키며, 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성한다.
도 8a에 도시된 바와 같이, 디바이스는 터치 감응형 디스플레이 상의 검색 활성화 제스처를 검출한다(802). 예를 들어, 도 9a에 도시된 바와 같이, 디바이스는 검색 활성화 제스처(902-1)(예컨대, 터치 감응형 디스플레이 상의 접촉 및 뒤이은 실질적으로 수직 방향으로(예컨대, 하방으로)의 접촉의 연속 이동)를 검출한다. 다른 예로서, 도 9a에 또한 도시되어 있는 바와 같이, 디바이스는 검색 활성화 제스처(902-2)(예컨대, 터치 감응형 표면 상의 접촉 및 뒤이은 실질적으로 수평 방향으로(예컨대, 우측으로)의 접촉의 연속 이동)를 검출한다. 일부 실시예들에서, 검색 활성화 제스처는 적어도 2개의 별개의 사용자 인터페이스들로부터 이용가능하고, 적어도 2개의 별개의 사용자 인터페이스들 중 제1 사용자 인터페이스는 터치 감응형 디스플레이 상의 홈 화면 페이지들의 시퀀스의 각각의 홈 화면 페이지를 디스플레이하는 것에 대응한다.
일부 실시예들에서, 각각의 홈 화면 페이지가 (예컨대, 도 9a에 도시된 바와 같이) 홈 화면 페이지들의 시퀀스 중 제1 홈 화면 페이지일 때, 검색 활성화 제스처는 (i) 전자 디바이스의 사용자에 대해 실질적으로 하방 방향으로 이동하는 제스처(예컨대, 제스처(902-1)), 또는 (ii) 하방 방향에 실질적으로 수직이며 사용자에 대해 실질적으로 좌우 방향으로 이동하는 연속 제스처(예컨대, 제스처(902-2)) 중 하나를 포함한다. 일부 실시예들에서, 각각의 홈 화면 페이지가 홈 화면 페이지들의 시퀀스 중 제2 홈 화면 페이지일 때(다시 말하면, 제1 홈 화면 페이지가 아닐 때), 검색 활성화 제스처는 전자 디바이스의 사용자에 대해 실질적으로 하방 방향으로 이동하는 연속 제스처이다(다시 말하면, 검색 활성화 제스처(902-1)만이 이용가능하고 제스처(902-2)는 이용가능하지 않다).
일부 실시예들에서, 적어도 2개의 별개의 사용자 인터페이스들의 제2 사용자 인터페이스는 (예컨대, 홈 버튼(204) 상에서의 사용자 더블 탭핑에 응답하여) 터치 감응형 디스플레이 상에 애플리케이션 스위칭 인터페이스를 디스플레이하는 것에 대응한다. 일부 실시예들에서, 검색 활성화 제스처는 터치 감응형 디스플레이 상에서, 애플리케이션 스위칭 인터페이스의 미리정의된 검색 활성화 부분에서의 접촉을 포함한다(예컨대, 애플리케이션 스위칭 인터페이스는 애플리케이션 스위칭 인터페이스의 상부 부분 내에 디스플레이되는 미리정의된 검색 활성화 부분인 (도 9b의 검색 엔트리 부분(920)과 유사한) 검색 엔트리 부분을 포함한다).
검색 활성화 제스처를 검출하는 것에 응답하여, 디바이스는 터치 감응형 디스플레이 상에 검색 인터페이스를 디스플레이하는데(804), 검색 인터페이스는, (a) 검색 엔트리 부분(예컨대, 도 9b의 검색 질의로서 사용될 사용자로부터의 입력을 수신하기 위한 검색 엔트리 부분(920)) 및 (b) 검색 엔트리 부분에서 임의의 사용자 입력을 수신하기 전에 디스플레이되는 예측 부분(예컨대, 도 9b의 예측 부분(930))을 포함한다(806). 예측 부분은 (a) 복수의 이전에 연락된 사람들 중 개인과 연락하기 위한 적어도 하나의 어포던스(예컨대, 도 9b의 제안된 사람들(940) 섹션 내에 디스플레이되는 어포던스들), 및 (b) 전자 디바이스 상에서 이용가능한 복수의 애플리케이션들 중 일 애플리케이션(예컨대, "딥 링크(deep link)") 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스(예컨대, 도 9b의 제안된 액션들(950) 섹션) 중 하나 이상으로 채워진다. 애플리케이션 "내"는, 애플리케이션 내의 특정 페이지, 뷰, 또는 상태(예컨대, 도 1b의 애플리케이션 뷰들(191) 중 하나)로의 링크를 나타내는 예측된 액션을 실행하기 위한 적어도 하나의 어포던스를 지칭한다. 다시 말하면, 예측된 액션을 실행하기 위한 적어도 하나의 어포던스는, 선택될 때, 단지 애플리케이션을 개시하고 애플리케이션과의 이전의 상호작용으로부터의 콘텐츠 또는 디폴트 콘텐츠를 디스플레이하는 것만이 아니라, 대신에, 딥 링크에 대응하는 특정 페이지, 뷰, 또는 상태를 디스플레이한다.
일부 실시예들에서, 현재 시간에 적어도 부분적으로 기초하여 복수의 이전에 연락된 사람들로부터 (예컨대, 디바이스(100) 또는 사전행동적 모듈(163)에 의해) 개인이 자동으로 선택된다. 예를 들어, 매일 5:30 PM 쯤에, 사용자가 여전히 직장(직장 위치는 도 6a 및 도 6b를 참조하여 상기 설명된 바와 같이 결정됨)에 있는 동안, 사용자는 그의 룸메이트(roommate)에게 그가 집으로 가고 있음을 나타내는 텍스트를 전송하여서, 예측 부분이 룸메이트와 연관되는 어포던스를 포함하도록 한다(예컨대, P-1이 룸메이트에 대한 것임).
일부 실시예들에서, 예측된 액션은, 전자 디바이스의 사용자와 연관된 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 (예컨대, 디바이스(100) 또는 사전행동적 모듈(163)에 의해) 자동으로 선택된다(예컨대, (도 3a 및 도 3b의 하나 이상의 애플리케이션 사용 테이블들(335)에 의해 제공되는 바와 같은) 애플리케이션 사용 이력이, 매일 2:15 PM 쯤에 사용자가 (상기 논의된 바와 같이, 검색 활성화 제스처를 제공함으로써) 검색 인터페이스를 열고, "음악"에 대해 검색하고, 특정 음악 앱 검색 결과를 선택하고, 이어서 "walking playlist"를 재생한다는 것을 나타내면, 이러한 애플리케이션 사용 이력에 기초하여, 예측 부분은, 검색 엔트리 부분에서 임의의 사용자 입력을 수신하기 전에, (예컨대, 도 9b의 제안된 액션들(950) 섹션 내에 디스플레이되는 콘텐츠에 의해 보여지는 바와 같이) 음악 앱 내의 재생목록을 재생하기 시작하는 어포던스를 포함한다). 일부 실시예들에서, 애플리케이션 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스는 또한 (애플리케이션 사용 이력 대신에 또는 그에 더하여) 현재 시간에 적어도 부분적으로 기초하여(예컨대, 사용자가 전형적으로 예측된 액션을 수행하는 것과 거의 동시에 사용자가 검색 활성화 제스처를 제공하는 것에 기초하여) 선택된다. 일부 실시예들에서(그리고 도 9b에 도시된 바와 같이), 예측된 액션을 실행하기 위한 적어도 하나의 어포던스는 사용자 인터페이스 객체(702)에 대응하고, 따라서, 사용자 인터페이스 객체(702)에 관한 상기(도 6a, 도 6b, 도 7a 및 도 7b)에 제공된 상세사항들은 제안된 액션들 섹션(950) 및 그 내에 디스플레이된 콘텐츠에도 또한 적용된다.
일부 실시예들에서, 개인은 추가로 전자 디바이스에 대응하는 위치 데이터에 적어도 부분적으로 기초하여 선택된다(예컨대, 사용자가 아침에 그의 직장과 연관된 주소에 도착할 때 사용자는 그의 중요한 다른 사람과 자주 연락한다). 일부 실시예들에서, 애플리케이션 사용 이력 및 개인에 대한 연락처 정보는 전자 디바이스의 메모리(예컨대, 도 1a의 디바이스(100)의 메모리(102))로부터 인출된다. 일부 실시예들에서, 애플리케이션 사용 이력 및 개인에 대한 연락처 정보는 전자 디바이스로부터 원격으로 위치되는 서버(예컨대, 도 5의 하나 이상의 서버들(502))로부터 인출된다.
일부 실시예들에서, 예측 부분은, 추가로, 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스(예컨대, 도 9b의 제안된 앱들(955) 섹션)로 채워진다(808). 일부 실시예들에서, 예측된 애플리케이션은 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 (디바이스(100)에 의해) 자동으로 선택된다. 예를 들어, 애플리케이션 사용 이력(예컨대, 도 3a 및 도 3b의 애플리케이션 사용 데이터 테이블들(335) 중 하나의 애플리케이션 사용 데이터 테이블 내의 하나 이상의 레코드들)은, 사용자가 매일 아침 9:00 AM 쯤에 그가 그의 집 주소에 있을 때 캘린더 모듈(143)(도 1a)을 여는 것을 나타내고, 따라서, 제안된 앱들(955) 섹션은 현재 시간이 9:00 AM 쯤이고 위치 데이터가 사용자가 그의 집 주소에 있음을 나타낼 때 캘린더 모듈(143)에 대한 어포던스를 포함한다. 추가 예로서, 애플리케이션 사용 이력이, 날씨 애플리케이션(예컨대, 도 1a의 날씨 위젯(149-1))이 연속 3일간 5:15 AM 쯤에 개시되었음을 나타내고, 지금이 5:17 AM이면(예컨대, 사용자가 검색 활성화 제스처를 사용하여 스포트라이트(spotlight)를 개시할 때 현재 시간이 5:17 AM임), 전자 디바이스는, 이러한 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 예측 부분에서의 예측된 애플리케이션들 중 하나로서의 날씨 애플리케이션으로 검색 인터페이스를 채운다. 일부 실시예들에서, 예측된 애플리케이션들 및 예측 액션들은 단일 섹션 내에 디스플레이되는데, 그 단일 섹션에서 예측된 액션들은 예측된 애플리케이션들 위에 디스플레이된다. 전술한 예들에서 언급된 바와 같이, 일부 실시예들에서, 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스는 또한 (애플리케이션 사용 이력 대신에 또는 그에 더하여) 현재 시간에 적어도 부분적으로 기초하여(예컨대, 사용자가 전형적으로 예측된 애플리케이션을 사용하는 것과 거의 동시에 사용자가 검색 활성화 제스처를 제공하는 것에 기초하여) 선택된다.
일부 실시예들에서, 제안된 앱들(955) 섹션을 채우기 위해, 디바이스(100)(또는 그의 컴포넌트, 예컨대 사전행동적 모듈(163))는 트리거를 위한 전제 조건들 중 임의의 것(예컨대, 도 4a 및 도 4b의 트리거 조건 테이블들(402) 중 하나의 트리거 조건 테이블에 저장된 전제)이 만족되는지 여부를 결정하고, 특정 트리거가 만족된다는 결정에 따라, 디바이스(100)는 그에 따라 제안된 앱들(955) 섹션을 채운다(예컨대, 트리거와 연관되는 애플리케이션, 예컨대 이전의 예들에서의 캘린더 모듈(143) 또는 날씨 위젯(149-1)에 대응하는 어포던스를 추가한다). 일부 실시예들에서, 검색 인터페이스 내의 다른 섹션들(예컨대, 섹션들(940, 950, 955, 960, 990))은 유사한 결정 프로세스를 사용하여 채워진다(간결함을 위해, 이들 상세사항들은 본 명세서에서 반복되지 않는다).
일부 실시예들에서, 예측 부분은 추가로 인근 장소들의 예측된 카테고리에 대한 적어도 하나의 어포던스(예컨대, 도 9b의 제안된 장소들(960) 섹션)로 채워지고(808), 장소들(예컨대, 인근 장소들)의 예측된 카테고리는 디바이스에 대응하는 현재 시간 및 위치 데이터 중 하나 이상에 적어도 부분적으로 기초하여 자동으로 선택된다. 예를 들어, 하루 중 현재 시간은 7:30 AM 쯤이고, 위치 데이터는, 디바이스가 인기 있는 커피 숍들(커피 숍들의 인기도는, 일부 실시예들에서, 많은 별개의 사용자들과 연관된 많은 디바이스(100)에 걸쳐 사용 데이터를 크라우드-소싱(crowd-sourcing)함으로써 결정됨) 근처에 있음(그의 미리결정된 거리 내에 있음)을 나타내고, 그에 따라서, 디바이스(100)는 제안된 장소들(960) 섹션을 "커피 숍들"에 대한 어포던스로 채운다. 일부 실시예들에서, 제안된 장소들(960) 섹션은 (장소들의 예측된 카테고리에 더하여 또는 그 대신에) 현재 시간에 기초한 인근 장소들에 대한 예측된 검색에 대응하는 정보로 채워진다. 다시 말하면, 대략 현재 시간에 사용자에 의해 수행된 이전의 검색들(예컨대, 검색 모듈(151) 또는 브라우저 모듈(147) 내에서의 검색들)에 기초하여, 디바이스는 사용자가 다시 수행할 가능성이 있는 검색을 사전행동적으로 예측한다. 예를 들어, 이전의 4번의 경우들(또는 일부 다른 임계 횟수의 경우들)에 사용자가 7:20 AM 내지 8:00 AM 사이에서 "커피"에 대해 검색하였다는 것에 기초하여, 디바이스(예컨대, 트리거 확립 모듈(163-1))는, 검색 활성화 제스처를 검출하는 것에 응답하여, 제안된 장소들(960) 섹션을 "커피 숍들"에 대한 어포던스로 채운다. 다른 실시예들에서, 제안된 카테고리들은 디바이스의 현재 위치에만 기초하고 시간에 기초하지 않는다. 예를 들어, 인근의 커피 숍들로 링크하는 어포던스가 디스플레이된다. 이러한 방식으로, 사용자는 "커피"에 대한 검색을 수동으로 다시 수행할 필요가 없고, 대신에 "커피 숍들" 또는 "음식" 어포던스를 간단히 선택하고 인근의 커피 숍들의 목록을 빠르게 볼 수 있다. 일부 실시예들에서, 이전의 검색 이력은 다른 정보(예컨대, 도 3b의 다른 정보(340-1(h)))로서 그리고/또는 수행된 다른 액션들(예컨대, 도 3b의 수행된 다른 액션들(340-1(b)))로서 하나 이상의 사용 엔트리들과 함께 저장된다.
일부 실시예들에서, 디바이스는 예측 부분을 스크롤하기 위한 사용자 입력(예컨대, 도 9b의 스크롤 제스처(970))을 검출하고, 예측 부분을 스크롤하기 위한 사용자 입력을 검출하는 것에 응답하여, 디바이스는 사용자 입력에 따라 예측 부분을 스크롤한다(예컨대, 검색 인터페이스를 하방 방향으로 스크롤하거나 또는 검색 인터페이스 내의 예측 부분만을 스크롤한다). 스크롤하는 것에 응답하여, 디바이스는 예측 부분에 예측된 뉴스 기사에 대한 적어도 하나의 어포던스(예컨대, 도 9c의 제안된 뉴스 기사들(990) 섹션)를 드러낸다. 일부 실시예들에서, 예측된 뉴스 기사(들)는 전자 디바이스에 대응하는 위치 데이터에 적어도 부분적으로 기초하여 (디바이스(100)에 의해) 자동으로 선택된다. 일부 실시예들에서, 제안된 뉴스 기사들(990) 섹션은 스크롤 입력을 요구하지 않고서 디스플레이된다. 일부 실시예들에서, 예측된 뉴스 기사는 선택적으로 (위치 데이터에 더하여 또는 그 대신에), 현재 시간(예컨대, 사용자가 대략 현재 시간(예컨대, 디바이스로 하여금 예측 부분(930)을 갖는 검색 인터페이스를 디스플레이하게 한 검색 활성화 제스처를 사용자가 제공한 시간)에 임계 횟수(예컨대, 3번)보다 더 많이 유사 또는 관련된 기사들을 읽었음), 사용자에 대응하는 이전의 검색 이력(예컨대, 사용자가 임계 횟수(예컨대, 3번)보다 더 많이 예측된 뉴스 기사와 유사하거나 또는 그에 관련되는 기사들에 대해 검색하였음), 트위터(Twitter) 또는 페이스북(Facebook)과 같은 소셜 미디어에서 다른 사용자들, 즉, 사용자의 친구들에 의해 수행된 검색들을 통한 뉴스 스토리와 연관된 트렌딩 데이터(trending data) 등에 적어도 부분적으로 기초하여 선택된다.
일부 실시예들에서, 섹션들(940, 950, 955, 960, 990)이 예측 부분(930) 내에서 디스플레이되는 특정 순서는, 사용자가 섹션들 각각에 대한 원하는 순서를 선택할 수 있도록 구성가능하다. 예를 들어, 사용자는, 제안된 앱들(955) 섹션이 첫 번째로 디스플레이되고, 제안된 사람들(940) 섹션이 두 번째로 디스플레이되고, 제안된 액션들(950) 섹션이 세 번째로 디스플레이되고, 제안된 뉴스 기사들(990) 섹션이 네 번째로 디스플레이되고, 제안된 장소들(960) 섹션이 마지막으로 디스플레이되도록 하는 순서를 구성할 수 있다. 일부 실시예들에서, 예측 부분(930)은 섹션들(940, 950, 955, 960, 990) 중 임의의 2개를 포함한다. 다른 실시예들에서, 예측 부분(930)은 섹션들(940, 950, 9550, 960, 990) 중 임의의 3개를 포함한다. 또 다른 실시예들에서, 예측 부분(930)은 섹션들(940, 950, 955, 960, 990) 중 임의의 4개를 포함한다. 또 다른 실시예들에서, 예측 부분(930)은 섹션들(940, 950, 955, 960, 990) 전부를 포함한다. 일부 실시예들에서, 사용자는 섹션들(940, 950, 955, 960, 990) 중 어느 것이 그리고 얼마나 많은 섹션들이 예측 부분(930) 내에 디스플레이되어야 하는지에 대한 선호도를 구성한다.
추가로, 사용자는, 일부 실시예들에서, 섹션들(940, 950, 955, 960, 990) 각각을 채우는 데 사용되는 데이터(예컨대, 현재 시간, 애플리케이션 사용 이력, 위치 데이터, 다른 센서 데이터 등)에 주어지는 가중치들을 구성할 수 있다. 예를 들어, 사용자는, 예측 부분(930)의 제안된 사람들(940) 섹션 내에 디스플레이하기 위한 어포던스들을 결정할 때 현재 시간이 위치 데이터보다 더 크게 가중되도록 선호도를 구성한다.
이제 도 8b로 돌아가면, 일부 실시예들에서, 전술된 섹션들(940, 950, 955, 960, 990) 각각 내에 디스플레이되는 어포던스들은 각각, 사용자가, 제안된 액션, 제안된 앱, 제안된 장소, 또는 제안된 뉴스 기사 중 하나를 선택할 수 있도록 선택가능하다(각각은 아래에 순서대로 논의됨).
제안된 사람들(940) 섹션 내에 디스플레이되는 어포던스들의 선택에 대해, 일부 실시예들에서, 디바이스는 개인과 연락하기 위한 적어도 하나의 어포던스의 선택을 검출한다(810). 일부 실시예들에서, 디바이스는 적어도 하나의 어포던스 위에서의 단일 터치 입력(예컨대, 제안된 사람들(940) 섹션 내에 디스플레이되는 P-1에 대응하는 어포던스 위에서의 단일 탭)을 검출한다. 일부 실시예들에서, 개인과 연락하기 위한 적어도 하나의 어포던스의 선택을 검출하는 것에 응답하여, 디바이스는 개인에 대한 연락처 정보(예컨대, 상기 논의된 바와 같이, 디바이스로부터 또는 하나 이상의 서버들로부터 인출되는 연락처 정보)를 사용하여 개인과 연락한다(또는 개인과 연락하기 위해, 상이한 통신 매체들, 예컨대, 텍스트, 이메일, 전화 등을 제안한다). 예를 들어, P-1에 대응하는 어포던스 위에서의 단일 탭을 검출하는 것에 응답하여, 디바이스는 사용자의 룸메이트에게 "on my way home"이라고 적혀 있는 텍스트 메시지를 전송한다. 일부 실시예들에서, 디바이스는 P-1과 자동으로 연락하는 반면, 다른 실시예들에서, 디바이스는 인스턴트 메시징 모듈(141)을 디스플레이하고, 모듈(141) 내의 인터페이스를 메시지(예컨대, "on my way home")로 미리 채우고, 이어서 메시지를 전송하기 전에 사용자로부터의 요청(예컨대, 사용자에 의한 음성 커맨드 또는 전송 버튼의 선택)을 기다린다. 이러한 방식으로, 디바이스의 사용자는 개인(예컨대, P-1)과 편리하고 신속하게 연락할 수 있고, 또한 검색 엔트리 부분에 어떠한 텍스트도 입력할 필요 없이 관련(또는 원하는) 메시지를 전송할 수 있다(따라서, 사용자가 텍스트를 입력해야만 하고 개인을 찾아낼 수 없었던 경우의 불만 및 시간을 덜어줌).
제안된 액션들(950) 섹션 내에 디스플레이되는 어포던스들의 선택에 대해, 일부 실시예들에서, 디바이스는 예측된 액션을 실행하기 위한 적어도 하나의 어포던스의 선택을 검출한다(812). 예를 들어, 디바이스는 제안된 액션들(950) 섹션 내에서의 단일 터치 입력(예컨대, 음악 재생기(152)에 대한 아이콘 위에서의 탭 또는 텍스트 "Tap to Play Track 2 of Walking Playlist" 위에서의 탭)을 검출한다. 일부 실시예들에서, 예측된 액션을 실행하기 위한 적어도 하나의 어포던스의 선택을 검출하는 것에 응답하여, 디바이스는 터치 감응형 디스플레이 상에서 애플리케이션을 디스플레이하고 디스플레이된 애플리케이션 내의 예측된 액션을 실행한다. 다시 말하면, 디바이스는 검색 인터페이스(예컨대, 검색 엔트리 및 예측 부분들을 갖는 검색 모듈(151))를 디스플레이하는 것을 중지하고, 대신에, 애플리케이션을 개시 및 디스플레이하고, 디스플레이된 애플리케이션 내의 예측된 액션을 실행한다. 예를 들어, 텍스트 "Tap to Play Track 2 of Walking Playlist" 위에서의 단일 탭을 검출하는 것에 응답하여, 디바이스는 음악 재생기 모듈(152)을 디스플레이하고, walking playlist의 트랙 2를 재생함으로써 예측된 액션을 실행한다. 이러한 방식으로, 디바이스의 사용자는 관련(또는 원하는) 애플리케이션(예컨대, 음악 재생기 모듈)에 편리하고 신속하게 액세스할 수 있고, 또한 검색 엔트리 부분에 어떠한 텍스트도 입력할 필요 없이 원하는 애플리케이션 내의 원하는 기능을 실행할 수 있다(따라서, 사용자가 텍스트를 입력해야만 하고 음악 재생기 모듈을 찾아낼 수 없었던 경우의 불만 및 시간을 덜어줌).
제안된 앱들(955) 섹션 내에 디스플레이되는 어포던스들의 선택에 대해, 일부 실시예들에서, 디바이스는 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스의 선택을 검출한다(814). 일부 실시예들에서, 디바이스는 적어도 하나의 어포던스 위에서의 단일 터치 입력(예컨대, 브라우저 앱(147)에 대한 아이콘에 대한 어포던스 위에서의 단일 탭)을 검출한다. 일부 실시예들에서, 예측된 애플리케이션을 실행하기 위한 적어도 하나의 어포던스의 선택을 검출하는 것에 응답하여, 디바이스는 터치 감응형 디스플레이 상에서 예측된 애플리케이션을 디스플레이한다(예컨대, 디바이스는 검색 엔트리 부분 및 예측 부분을 갖는 검색 인터페이스를 디스플레이하는 것을 중지하고, 대신에, 터치 감응형 디스플레이 상에서 예측된 애플리케이션을 열고 디스플레이한다). 예를 들어, 브라우저 앱(147)에 대한 아이콘에 대응하는 어포던스 위에서의 단일 탭을 검출하는 것에 응답하여, 디바이스는 브라우저 앱(147)(예컨대, 도 1a의 브라우저 모듈(147))을 디스플레이한다. 이러한 방식으로, 디바이스의 사용자는 검색 엔트리 부분에 어떠한 텍스트도 입력할 필요 없이 관련(또는 원하는) 애플리케이션(예컨대, 브라우저 애플리케이션)에 편리하고 신속하게 액세스할 수 있다(따라서, 사용자가 텍스트를 입력해야만 하고 브라우저 애플리케이션을 찾아낼 수 없었던 경우의 불만 및 시간을 덜어줌).
제안된 장소들(960) 섹션 내에 디스플레이되는 어포던스들의 선택에 대해, 일부 실시예들에서, 디바이스는 장소들(예컨대, 인근 장소들)의 예측된 카테고리에 대한 적어도 하나의 어포던스의 선택을 검출한다(816). 일부 실시예들에서, 디바이스는 적어도 하나의 어포던스 위에서의 단일 터치 입력(예컨대, "커피 숍들"에 대한 어포던스 위에서의 단일 탭)을 검출한다. 일부 실시예들에서, 장소들의 예측된 카테고리를 실행하기 위한 적어도 하나의 어포던스의 선택을 검출하는 것에 응답하여, 디바이스는, (i) 적어도 하나의 인근 장소에 대응하는 데이터(예컨대, 지도 모듈(154)에 의해 결정되는 바와 같은, 적어도 하나의 인근 장소에 대한 GPS 좌표들 또는 주소 정보)를 수신하고, (ii) 터치 감응형 디스플레이 상에서, 적어도 하나의 인근 장소에 대응하는 수신된 데이터를 디스플레이한다(예컨대, 검색 인터페이스를 디스플레이하는 것을 중지하고, 지도 모듈(154)을 개시하고, 적어도 하나의 인근 장소에 대한 GPS 좌표들을 나타내는 점(dot)과 같은, 수신된 데이터에 대응하는 디스플레이된 지도 내의 사용자 인터페이스 요소를 포함하는 지도 모듈(154)을 디스플레이한다). 일부 실시예들에서, 수신 단계 및 디스플레이 단계는 실질적으로 동시에 수행된다. 예를 들어, "커피 숍들"에 대응하는 어포던스 위에서의 단일 탭을 검출하는 것에 응답하여, 디바이스는 커피를 제공하는 인근 카페에 대한 GPS 좌표들을 인출하고, 동시에, 지도 모듈(154)을 디스플레이하고, GPS 좌표들을 수신한 후에, 카페에 대한 GPS 좌표들을 나타내는 점을 디스플레이한다. 이러한 방식으로, 디바이스의 사용자는 검색 엔트리 부분에 어떠한 텍스트도 입력할 필요 없이 관련(또는 원하는) 관심 지점(예컨대, 상기 논의된 카페)을 편리하고 신속하게 찾아낼 수 있다(따라서, 사용자가 텍스트를 입력해야만 하고 카페 또는 어떠한 커피 숍도 찾아낼 수 없었던 경우의 불만 및 시간을 덜어줌). 일부 실시예들에서, 장소들의 예측된 카테고리에 대한 적어도 하나의 어포던스의 선택을 수신하기 전에 상기 논의된 데이터 수신 동작이 수행된다(또는 적어도 부분적으로 수행된다). 이러한 방식으로, 인근 장소들에 대응하는 데이터가 미리 로딩되고, 장소들의 예측된 카테고리에 대한 적어도 하나의 어포던스의 선택을 수신한 후에 지도 상에 신속하게 디스플레이된다.
제안된 뉴스 기사들(990) 섹션 내에 디스플레이되는 어포던스들의 선택에 대해, 일부 실시예들에서, 디바이스는 예측된 뉴스 기사에 대한 적어도 하나의 어포던스의 선택을 검출한다(818). 일부 실시예들에서, 디바이스는 적어도 하나의 어포던스 위에서의 단일 터치 입력(예컨대, 도 9c의 뉴스 1에 대한 어포던스 위에서의 단일 탭)을 검출한다. 일부 실시예들에서, 예측된 뉴스 기사에 대한 적어도 하나의 어포던스의 선택을 검출하는 것에 응답하여, 디바이스는 터치 감응형 디스플레이 상에서 예측된 뉴스 기사를 디스플레이한다(예컨대, 디바이스는 검색 엔트리 부분 및 예측 부분을 갖는 검색 인터페이스를 디스플레이하는 것을 중지하고, 대신에, 브라우저 모듈(147) 내에서 예측된 뉴스 기사를 열고 디스플레이한다). 예를 들어, 뉴스 1에 대응하는 어포던스 위에서의 단일 탭을 검출하는 것에 응답하여, 디바이스는 브라우저 앱(147)(예컨대, 도 1a의 브라우저 모듈(147)) 내에서 뉴스 1에 대응하는 뉴스 기사를 디스플레이한다. 이러한 방식으로, 디바이스의 사용자는 검색 엔트리 부분에 어떠한 텍스트도 입력할 필요 없이 관련(또는 원하는) 뉴스 기사(예컨대, 브라우저 애플리케이션)에 편리하고 신속하게 액세스할 수 있다(따라서, 사용자가 텍스트를 입력해야만 하고 예측된 뉴스 기사를 찾아낼 수 없었던 경우의 불만 및 시간을 덜어줌).
일부 실시예들에서, 검색 인터페이스 내에 포함되는 예측된/제안된 콘텐츠 항목들은, (예컨대, 방법들(600, 800), 또는 본 명세서에 논의되는 다른 방법들 중 임의의 것과 함께) 섹션 1 내지 섹션 11을 참조하여 아래에서 논의되는 기법들에 기초하여 선택된다.
도 8a 및 도 8b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법(600))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 8a 및 도 8b와 관련하여 전술된 방법(800)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(800)을 참조하여 전술된 사용자 인터페이스 객체들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(600))을 참조하여 본 명세서에 기술되는 사용자 인터페이스 객체들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(800)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 10a 내지 도 10c는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상에 현재 디스플레이되고 있는 콘텐츠에 기초하여 검색 질의들을 사전행동적으로 제안하는 방법(1000)의 흐름도 표현을 예시한다. 도 11a 내지 도 11j는 도 10a 내지 도 10c의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(1000)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(1000)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(1000)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(1000)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(1000)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(1000)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 관련 콘텐츠(예컨대, 제안된 검색 질의들)를 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은 전자 디바이스 상에서 검색을 수행하기 위해 보다 적은 터치 입력들을 요구하여(예컨대, 사용자는 단지 제안된 검색 질의를 선택하기만 하면 되고 어떠한 텍스트도 타이핑할 필요가 없음), 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성하고, 사용자들이 관련 검색들을 신속하게 실행할 수 있게 한다. 제안된 검색 질의들을 제공함으로써, 방법(1000)은 또한, 액션들을 보다 신속하게 수행하는 것을 돕기 위해 사전행동적 어시스턴트가 디바이스 상에서 이용가능하다는 것을 사용자들이 알도록 보장하는 데 도움이 된다(따라서, 사용자의 디바이스에 대한 사용자 만족도를 개선한다). 배터리-작동형 전자 디바이스들의 경우, 방법(1000)은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 10a에 도시된 바와 같이, 디바이스는, 디스플레이 상에, 전자 디바이스 상에서 실행 중인 애플리케이션과 연관된 콘텐츠를 디스플레이한다(1002). 예를 들어, 도 11a에 도시된 바와 같이, 전자 디바이스(100) 상에서 실행 중인 이메일 애플리케이션과 연관된 콘텐츠가 터치 스크린(112) 상에 디스플레이된다. 콘텐츠는 적어도 이메일의 송신자 이름 및/또는 주소(예컨대, "From: John Applecore"), 제목 텍스트(예컨대, "Where to next?"), 및 이메일의 본문을 포함한다. 일부 실시예들에서, 이메일의 본문은 이미지(1108)를 포함할 수 있고/있거나 텍스트(1110)를 포함할 수 있다.
애플리케이션을 디스플레이하는 동안, 디바이스는 터치 감응형 표면을 통해, 스와이프 제스처를 검출하는데, 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 애플리케이션과는 별개인 검색 모드에 진입하게 한다(1004). 일부 실시예들에서, 스와이프 제스처를 검출하는 것은, 현재 디스플레이되는 콘텐츠의 적어도 일부분 위에서 스와이프 제스처를 검출하는 것을 포함한다(1006). 일부 실시예들에서, 스와이프 제스처는 (예컨대, 도 11b에 도시된 것과 같이) 애플리케이션 위에 검색 인터페이스를 호출하는 데 사용된다. 일부 실시예들에서, 스와이프 제스처는, 애플리케이션을 통하여 수신되며 애플리케이션과 연관된 콘텐츠 내에 포함되는 임의의 사용자 인터페이스 필드 내에서 수신되지 않는 제1 스와이프 제스처이다(예컨대, 제1 스와이프 제스처는 애플리케이션에서 디스플레이될 수 있는 검색 상자 내의 탭이 아니다). 일부 실시예들에서, 제1 스와이프 제스처는 전자 디바이스로 하여금 애플리케이션과는 별개인 전자 디바이스의 검색 모드에 진입하게 하는데, 검색 모드는 (예컨대, 아래에서 더욱 상세하게 논의되며 도 11b, 도 11d, 및 도 11f 내지 도 11j에 도시된 검색 인터페이스와 같은) 검색 인터페이스의 디스플레이를 포함한다.
일부 실시예들에서, 제1 스와이프 제스처는 터치 감응형 디스플레이 위에서 하방 방향으로 스와이프함으로써(그리고 적어도 임계 거리(예컨대, 2, 3, 4 cm)를 이동함으로써) 언제라도 이용가능하다(예컨대, 도 11a 및 도 11e에 각각 도시된 바와 같은 하방 스와이프(1102-1, 1102-3)). 일부 실시예들에서, 스와이프 제스처는, 애플리케이션이 터치 감응형 디스플레이 상에 현재 디스플레이되는 동안 검출되고(예컨대, 상기 논의된 제1 스와이프 제스처), 스와이프 제스처는 애플리케이션에 대해 현재 디스플레이되는 콘텐츠의 상부에서 검출된다. 예를 들어, 도 11a 및 도 11e에서, 하방 스와이프 제스처들(1102-1, 1102-3)은 이메일 애플리케이션이 현재 디스플레이되는 동안 이메일 콘텐츠의 상부에서 검출된다.
일부 실시예들에서, 또한 디바이스로 하여금 검색 모드에 진입하게 하는 제2 스와이프 제스처가 또한 나중에(예컨대, 애플리케이션을 종료한 후에) 이용가능하다. 일부 실시예들에서, 스와이프 제스처를 검출하기 전에, 디바이스는 전자 디바이스의 홈 화면을 보려고 하는 요청에 대응하는 입력을 검출하고, 입력을 검출하는 것에 응답하여, 디바이스는 애플리케이션과 연관된 콘텐츠를 디스플레이하는 것을 중지하고 전자 디바이스의 홈 화면의 각각의 페이지를 디스플레이한다(1008). 일부 실시예들에서, 각각의 페이지는 홈 화면 페이지들의 시퀀스 중 초기 페이지(예컨대, 홈 화면 페이지들의 시퀀스 중 제1 페이지)이고, 스와이프 제스처(예컨대, 제2 스와이프 제스처)는 홈 화면의 초기 페이지가 디스플레이 상에 디스플레이되는 동안 검출된다.
예를 들어, 도 11a 및 도 11e에 도시된 바와 같이, 사용자는, 애플리케이션이 디스플레이되는 동안 디바이스의 물리적 홈 버튼(204)을 탭핑(1106)함으로써 애플리케이션을 종료하고 도 11c에 도시된 바와 같은 홈 화면 보기로 스위칭한다. 도 11c에서, 홈 화면 페이지 표시자의 하이라이트된 제1 점(1112-1)에 의해 그리고 홈 화면의 나머지 점들(1112-2)을 하이라이트하지 않음으로써 나타낸 바와 같이 홈 화면의 제1 페이지가 디스플레이된다. 홈 화면의 제1 페이지를 보는 동안, 사용자는 실질적으로 수평 방향(예컨대, 도 11e의 스와이프 제스처(1104-1)에 대해 도시된 좌우 방향)으로 스와이프함으로써 제2 스와이프 제스처를 제공할 수 있다. 제2 스와이프 제스처를 수신하는 것에 응답하여, 전자 디바이스는, (도 11d를 참조하여 아래에서 더욱 상세하게 논의되는 바와 같이) 터치 감응형 디스플레이 상에 검색 인터페이스를 디스플레이하는 것을 포함하는, 검색 모드에 진입한다.
스와이프 제스처를 검출하는 것에 응답하여, 디바이스는 검색 모드에 진입하는데, 검색 모드는 디스플레이 상에 디스플레이되는 검색 인터페이스를 포함한다(1010). 예시적인 검색 인터페이스들이 도 11b 및 도 11d에 도시되어 있다. 일부 실시예들에서, 검색 인터페이스, 예컨대 도 11b의 검색 인터페이스(1115)는 애플리케이션에 반투명하게 오버레이하는 것으로 디스플레이된다(1012). 일부 실시예들에서, 검색 인터페이스는 (예컨대, 도 11b의 검색 인터페이스(1115)에 대해 도시된 바와 같이) 애플리케이션 위에서의 반투명한 오버레이로서 디스플레이된다. 일부 실시예들에서, 검색 인터페이스(1115)는, 검색 인터페이스(1115)의 애니메이션이 재생되도록 점차적으로 디스플레이되어, 예컨대 일 측부로부터 점점 또렷해지고(fading in)/지거나 내측 전이(transitioning in)되게 된다. 도 11b에서, 검색 인터페이스(1115)는 이메일 애플리케이션에 반투명하게 오버레이하는 것으로 디스플레이되어서, 이메일 애플리케이션이 터치 감응형 디스플레이(112) 상의 검색 인터페이스(1115) 아래에서 부분적으로 보인 채로 남아 있도록 된다. 일부 실시예들에서, 검색 인터페이스는 상기 논의된 제2 스와이프 제스처에 응답하여 도 11g 내지 도 11j에 도시된 바와 같이 홈 화면에 반투명하게 오버레이하는 것으로 디스플레이된다.
일부 실시예들에서, 검색 인터페이스는 사용자와 연관되는 소셜 네트워크의 구성원들에 의해 수행된 하나 이상의 트렌딩 질의들, 예컨대 하나 이상의 트렌딩 용어들을 추가로 포함한다(1014). 일부 실시예들에서, 하나 이상의 트렌딩 질의들은 하나 이상의 트렌딩 용어들을 포함하는데, 하나 이상의 트렌딩 용어들은 (i) 인기 있는 뉴스 항목들, (ii) 전자 디바이스의 현재 위치(예컨대, 사용자가 그의 집 이외의 위치를 방문 중인 경우(예컨대, 도쿄)), 및/또는 (iii) 관광객들 등에게 관심 대상인 것으로 알려져 있는 항목들에 기초한다. 예를 들어, 트렌딩 검색들(1160)이 도 11b 및 도 11d에서 선택적인 것으로 도시되어 있고, 하나 이상의 트렌딩 용어들은, 예컨대 "Patagonia", "Ecuador", "Mt. Rainier" 등을 포함한다. 일부 실시예들에서, 검색 인터페이스는 또한 트렌딩 GIF들(예컨대, 사람들이 GIF를 공유하고 싶게끔 하는 콘텐츠에서의 "Congrats!"와 같은 감정 문구들에 기초함)을 포함한다.
검색 모드에 진입하는 것과 함께, 디바이스는 콘텐츠와 연관된 정보에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정한다(1018). 일부 실시예들에서, 이러한 결정은 검색 인터페이스(1115)의 애니메이션이 재생됨에 따라, 예컨대 검색 인터페이스(1115)가 점차적으로 드러남에 따라 수행된다. 다른 실시예들에서, 이러한 결정은 스와이프 제스처가 심지어 수신되기 전에 수행된다.
일부 실시예들에서, 콘텐츠가 텍스트 콘텐츠를 포함한다는 결정에 따라, 디바이스는 텍스트 콘텐츠에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정한다(1022). 일부 실시예들에서, 텍스트 콘텐츠에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 결정하는 것은, 텍스트 콘텐츠를 분석하여 적어도 하나의 제안된 검색 질의를 결정하는 데 사용되는 하나 이상의 미리정의된 키워드들을 검출하는 것을 포함한다(1024). 일부 실시예들에서, 하나 이상의 미리정의된 키워드들은, 미리정의된 키워드들에 대한 적어도 150,000개의 엔트리들을 갖는 제1 데이터 구조를 포함하는, 전자 디바이스 상에 저장된 하나 이상의 데이터 구조들에 저장된다. 이러한 방식으로, 디바이스는, 콘텐츠에서 신속하게 검출될 수 있으며 이어서 제안된 검색 질의들로서 사용자에게 제공될 수 있는 다수의 공통 용어들을 포함하고, 이것은 검색 인터페이스에서 사용자로부터의 어떠한 입력도 요구하지 않고서 전부 행해진다. 일부 실시예들에서, 하나 이상의 데이터 구조들의 제2 데이터 구조가 컨텍스트 키트(context kit)와 연관되는데, 컨텍스트 키트는 제2 데이터 구조를 활용(leveraging)하여, 콘텐츠에 대한 컨텍스트를 식별하고 이어서 콘텐츠에 대해 식별된 컨텍스트에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 식별한다. 일부 실시예들에서, 제2 데이터 구조는 온-디바이스 인덱스(예컨대, 전자 디바이스에 특정한 위키피디아(Wikipedia) 인덱스)이다. 일부 실시예들에서, 제안된 검색 질의들은 제1 데이터 구조 및 제2 데이터 구조 양쪽 모두를 사용하여 결정되고, 이어서 제안된 검색 질의들은 집계되고 (에컨대, 검색 인터페이스 내에 그리고 임의의 사용자 입력을 수신하기 전에) 사용자에게 제시된다. 일부 실시예들에서, 제1 데이터 구조 및 제2 데이터 구조 양쪽 모두를 활용하는 것은 또한, 전자 디바이스가, 동일한 이름을 갖지만 상이한 주소들/전화들을 갖는 사업체들을 구별하는 것을 도울 수 있게 한다.
예를 들어, 도 11a에서, 이메일 애플리케이션과 연관된 콘텐츠는 텍스트 콘텐츠, 예컨대 송신자 및/또는 수신자 정보, 제목 라인, 및 이메일 본문 내의 텍스트, 즉, "I love Ecuador!"등을 포함한다. 텍스트 콘텐츠에 적어도 부분적으로 기초하여, 디바이스는 적어도 하나의 제안된 검색 질의를 결정하고, 도 11b에 도시된 바와 같은 검색 결과들, 예컨대 Ecuador, John Applecore, Guide Service, Cayambe, Antisana 등을 디스플레이한다. 용어 "Ecuador"는 제1 데이터 구조에서의 엔트리들의 일부로서 전자 디바이스 상에 저장된 미리정의된 키워드일 수 있는 반면, 다른 엔트리들은, 제1 데이터 구조를 활용하면서 제2 데이터 구조를 사용하여 그리고 콘텐츠에 대한 컨텍스트에 기초하여 식별될 수 있다.
일부 실시예들에서, 적어도 하나의 제안된 검색 질의를 결정하는 것은 복수의 제안된 검색 질의들을 결정하는 것을 포함하고, 검색 인터페이스를 채우는 것은 검색 인터페이스를 복수의 제안된 검색 질의들로 채우는 것을 포함한다(1026). 도 11b에 도시된 바와 같이, 제안된 검색들(1150)에서 하나의 제안된 검색 질의 "Ecuador"가 디스플레이된다. 선택적으로, 도 11b에서 점선에 의해 나타낸 바와 같이, 제안된 검색들(1150) 섹션에는, 복수의 제안된 검색 질의들, 예컨대 "John Applecore", "Guide Service", "Cayambe", 및 "Antisana" 등이 "Ecuador"에 더하여 디스플레이된다.
일부 실시예들에서, 검색 모드에 진입하는 것과 함께, 디바이스는 전자 디바이스 상에서 이용가능한 하나 이상의 접근성 특징부(accessibility feature)들을 사용함으로써 (검색 인터페이스를 디스플레이하기 전에 그리고/또는 그 후에) 콘텐츠와 연관되는 정보를 획득한다(1036). 일부 실시예들에서, 전자 디바이스의 운영 체제는 전자 디바이스 상의 일부 애플리케이션들(예컨대, 운영 체제의 제공자 이외의 회사들에 의해 개발된 제3자 애플리케이션들)에 현재 디스플레이되는 콘텐츠(또는 그의 지식)에 직접 액세스하지 않는다. 이와 같이, 운영 체제는 API들(예컨대, 접근성 API들) 및 다른 특징부들을 사용함으로써 콘텐츠에 관한 정보를 획득하는데, 이 특징부들은 전자 디바이스 상에서 이용가능하고 운영 체제가 제3자 애플리케이션들 내에 디스플레이되는 콘텐츠에 대해 학습할 수 있게 한다.
일부 실시예들에서, 하나 이상의 접근성 특징부들을 사용하는 것은, 하나 이상의 접근성 특징부들을 사용하여, (i) 애플리케이션 내에 현재 디스플레이되는 텍스트 콘텐츠에 자연 언어 프로세싱 알고리즘을 적용함으로써; 그리고 (ii) 자연 언어 프로세싱 알고리즘으로부터 획득된 데이터를 사용하여 콘텐츠를 설명하는 하나 이상의 키워드들을 결정함으로써, 콘텐츠와 연관되는 정보를 생성하는 것을 포함하고, 적어도 하나의 제안된 검색 질의는 하나 이상의 키워드들에 기초하여 결정된다(1038). (예컨대, 전자 디바이스 상에서 하나 이상의 접근성 특징부들로서 이용가능한 보이스오버(VoiceOver), 구술(Dictation), 및 스피크 스크린(Speak Screen)과 같은 기능들을 제공하는 데 사용되는 자연 언어 프로세싱 알고리즘). 일부 실시예들에서, 콘텐츠와 연관되는 정보는, 이름들, 주소들, 전화 번호들, 인스턴트 메시징 핸들들, 및 이메일 주소들을 비롯한, 애플리케이션에서 현재 디스플레이되는 콘텐츠로부터 추출되는(예컨대, 상기 논의된 자연 언어 프로세싱 알고리즘을 사용하여 추출되는) 정보를 포함한다.
일부 실시예들에서, 콘텐츠를 설명하는 하나 이상의 키워드들을 결정하는 것은 또한, (i) 애플리케이션에서 현재 디스플레이되는 비-텍스트 콘텐츠에 대응하는 메타데이터를 인출하는 것; 및 (ii) 자연 언어 프로세싱 알고리즘으로부터 획득된 데이터에 더하여, 인출된 메타데이터를 사용하여, 하나 이상의 키워드들을 결정하는 것을 포함한다(1040). 비-텍스트 콘텐츠의 일례는 애플리케이션 내에 디스플레이되는 이미지(예컨대, 도 11a의 이미지(1108) 및 도 11e의 하나 이상의 이미지들(1114))이다. 일부 실시예들에서, 하나 이상의 정보 태그들(예컨대, HTML 태그들, CSS 디스크립터(descriptor)들, 및 다른 유사한 메타데이터)은 이미지와 연관되고, 하나 이상의 접근성 특징부들이 이미지에 대해 학습하는 것을 돕는 데 사용될 수 있다(예컨대, 정보 태그들 중 하나가 이미지의 유형을 기술하고/하거나 이미지에서 디스플레이되는 것에 관한 상세사항들을 제공할 수 있다).
일부 실시예들에서(특히, 비-텍스트 콘텐츠만이 애플리케이션에서 디스플레이될 때), 자연 언어 프로세싱 알고리즘은 이용되지 않고, 대신에, 인출된 메타데이터만이 하나 이상의 키워드들을 결정하는 데 사용된다. 일부 실시예들에서, 애플리케이션에서 이전에 제공되었던 사용자로부터의 입력들이 또한, 하나 이상의 키워드들을 결정하는 것을 돕기 위해 사용된다. 예를 들어, 사용자가 주소 및/또는 전화 번호를 찾아내기 위해 특정 레스토랑 이름에 대해 검색하고, 그 레스토랑의 이름은 또한, (예컨대, 레스토랑 이름이 애플리케이션에서 현재 디스플레이되지 않고 이전 입력 또는 검색 질의로서만 사용되었더라도) 콘텐츠를 설명하는 하나 이상의 키워드들을 결정하는 것을 돕기 위해 사용될 수 있다.
도 10c로 돌아가면, 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 디바이스는 디스플레이된 검색 인터페이스를 적어도 하나의 제안된 검색 질의로 채운다(1020). 일부 실시예들에서, 검색 인터페이스는 검색 입력 부분(예컨대, 도 11b, 도 11d, 및 도 11f 내지 도 11j의 검색 인터페이스(1115)의 상부 부분에 있는 검색 엔트리 부분(1120)) 및 검색 결과 부분(예컨대, 도 11b, 도 11d, 및 도 11f 내지 도 11j의 검색 입력 부분(1120) 바로 아래의 검색 결과 부분(1130))을 포함하고, 적어도 하나의 제안된 검색 질의는 검색 결과 부분 내에 디스플레이된다. 예를 들어, 도 11b에서, 제안된 검색들(1150)은 적어도 하나의 제안된 검색 질의, 예컨대, "Ecuador", "John Applecore", "Guide Service", "Cayambe", "Antisana"를 포함하고, 적어도 하나의 제안된 질의는 검색 결과 부분(1130) 내에 디스플레이된다.
일부 실시예들에서, 상기 논의된 제1 스와이프 제스처는 홈 화면의 임의의 페이지가 디스플레이되는 동안에도 이용가능하다. 예를 들어, 도 11a 및 도 11b에 도시된 바와 같이 제1 스와이프 제스처(1102-1)를 사용하여 애플리케이션 위에서 검색 모드에 진입할 수 있는 것에 더하여, 사용자는 또한 제1 스와이프 제스처를 사용하여 홈 화면의 임의의 페이지 위에서 검색 모드에 진입할 수 있다. 도 11c에서, 실질적으로 수직 방향(예컨대, 하방)으로의 스와이프(1104-2)에 응답하여, 디바이스는 검색 모드에 진입하고, 도 11d에 도시된 바와 같이 검색 인터페이스(1105)를 디스플레이한다. 이러한 방식으로, 사용자가 검색 모드에 진입하도록 선택할 때마다, 사용자에게는 애플리케이션에서 최근에 본 콘텐츠에 관련되는 관련 검색 질의들이 제시된다. 도 11c가, 홈 화면 페이지 표시자의 제1 점(1112-1)을 하이라이트하고 홈 화면 페이지 표시자의 나머지 점들(1112-2)을 하이라이트하지 않음으로써 나타낸 바와 같은, 홈 화면의 제1 페이지 위에서의 스와이프 제스처(1104-2)를 검출하는 것을 예시하지만, 스와이프 제스처(1104-2)는 홈 화면의 임의의 페이지 위에서, 예컨대 나머지 점들(1112-2) 중 하나가 하이라이트되고 제1 점(1112-1)이 하이라이트되지 않은 경우의 홈 화면의 초기 페이지보다 상위의 페이지 위에서 검출될 수 있다.
일부 실시예들에서, 디바이스는 터치 감응형 표면을 통해, 현재 디스플레이되는 새로운 콘텐츠 위에서의 새로운 스와이프 제스처를 검출한다(1028). 새로운 스와이프 제스처를 검출하는 것에 응답하여, 디바이스는 검색 모드에 진입한다. 일부 실시예들에서, 검색 모드에 진입하는 것은, 디스플레이 상에 검색 인터페이스를 디스플레이하는 것을 포함한다. 검색 모드에 진입하는 것과 함께 그리고 새로운 콘텐츠가 텍스트 콘텐츠를 포함하지 않는다는 결정에 따라, 일부 실시예들에서, 디바이스는, 전자 디바이스의 사용자로부터의 검색 질의들 이력의 선택된 세트에 기초하는 제안된 검색 질의들로 검색 인터페이스를 채운다.
예를 들어, 도 11a에 도시된 바와 같은 이메일 콘텐츠를 보고 검색 인터페이스를 종료한 후에, 사용자는 Ecuador의 사진(1114-1)(도 11e)과 함께 Mount Rainier의 사진(1114-2)(도 11e)을 보았다. 두 이미지들은 텍스트 콘텐츠를 포함하지 않는다. 후속하여, 도 11e에 도시된 바와 같이, 새로운 스와이프 제스처(1102-3)가 검출된다. 새로운 스와이프 제스처(1102-3)를 검출하는 것에 응답하여, 디바이스는 검색 모드에 진입하고, 도 11f에 도시된 바와 같이 디스플레이 상에 검색 인터페이스(1115)를 디스플레이한다. 도 11f에서, "Mount Rainier"가 검색 질의 이력으로서 보여지고, 최근 검색들(1155) 섹션에 디스플레이된다.
일부 실시예들에서, 검색 인터페이스는, 애플리케이션과는 별개인 제2 애플리케이션에 의해 제공되는 위치 정보에 기초하는 관심 지점과 함께 디스플레이된다(1130). 예를 들어, 상기 예를 계속하면, 이미지와 연관된 태그들 및/또는 메타데이터에 기초하여, 이미징 애플리케이션과 같은 제2 애플리케이션에 의해 Mt. Rainier의 위치 정보가 획득된다. 새로운 스와이프 제스처(1102-3)(도 11e)에 응답하여, 검색 인터페이스(1115)는, 도 11f에 도시된 바와 같이, 제안된 장소들 섹션(1154)에서 관심 지점, 즉, Mt. Rainier(1157-1)와 함께 디스플레이된다.
일부 실시예들에서, 관심 지점은 단지 비-텍스트 콘텐츠 위에서의 새로운 스와이프 제스처에 응답하여서만 디스플레이되는 것은 아니다. 관심 지점은 텍스트 콘텐츠 위에서의 새로운 스와이프 제스처에 응답하여 디스플레이될 수 있다. 예를 들어, 사용자가 제1 애플리케이션(예컨대, 옐프(YELP) 애플리케이션)에서 레스토랑들에 대해 검색 중이었던 시나리오에서, 사용자는 이어서 텍스트 메시징 애플리케이션(예컨대, 그 애플리케이션)을 사용하는 것으로 스위칭하였고, 사용자는 이어서 텍스트 메시징 애플리케이션 위에서 스와이프 제스처를 제공하였고, 이에 응답하여, 디바이스는 제1 애플리케이션과의 사용자의 이전 상호작용들에 기초한 제안된 검색 질의로서 관심 지점(예컨대, 도 11f의 Best Sushi(1157-2))을 포함하도록 검색 인터페이스를 미리 채운다.
일부 실시예들에서, 검색 인터페이스는 하나 이상의 제안된 애플리케이션들을 추가로 포함한다(1032). 제안된 애플리케이션들은, 사용자와 연관된 애플리케이션 사용 이력에 기초하여 전자 디바이스의 사용자에게 관심 대상인 것으로 예측되는 애플리케이션들이다(애플리케이션 사용 이력은 도 3a 및 도 3b를 참조하여 상기에 논의되어 있다). 일부 실시예들에서, 검색 질의들 이력의 세트는 최근 검색 질의들의 빈도에 적어도 부분적으로 기초하여(예컨대, 언제 그리고 얼마나 빈번하게 각각의 검색 질의 이력이 사용자에 의해 수행되었는지에 기초하여) 선택된다. 예를 들어, 도 11d에 도시된 바와 같이, 애플리케이션 사용 이력에 기초하여, 애플리케이션들, 즉, 건강(242), 도서(242), 지도(236) 애플리케이션들이 제안된 앱들(1162) 섹션에서 사용자에게 제안된다. 이러한 애플리케이션 제안들은 최근 검색 질의들의 빈도에 적어도 부분적으로 기초하여 선택될 수 있다. 일부 실시예들에서, 전자 디바이스 상에 설치되어 있지 않은 애플리케이션이 사용자에게 관심 대상인 것으로 예측된다. 설치되어 있지 않은 애플리케이션(237)의 이름은 다른 제안된 애플리케이션들과 함께 디스플레이되고, 애플리케이션 설치로의 링크가 제공된다.
일부 실시예들에서, 하나 이상의 제안된 애플리케이션들은 단지 비-텍스트 콘텐츠 위에서의 새로운 스와이프에 응답하여서만 디스플레이되는 것은 아니다. 예를 들어, 도 11d 및 도 11e에 도시된 바와 같이, 홈 화면 위에서(예컨대, 홈 화면의 임의의 페이지 위에서) 스와이프 제스처(1104-2)를 검출하는 것에 응답하여, 검색 인터페이스(1115)의 검색 결과 부분(1130)에서 제안된 앱들(1155)이 선택적으로 디스플레이된다.
도 11b, 도 11d, 및 도 11f가, 제안된 검색 결과들을 카테고리들로 그룹화하며 검색 인터페이스(1115)의 상이한 섹션들에서 제안된 검색들을 디스플레이하는 것을 예시하지만, 다른 디스플레이 포맷들이 사용자에게 보여진다. 예를 들어, 제안된 검색 결과들은 블렌딩될 수 있다. 도 9d에 도시된 바와 같이, 관심 지점들, 제안된 장소들, 최근 검색들, 및 제안된 애플리케이션들이 "My Location & Recently Viewed" 내에 함께 디스플레이된다. 일부 실시예들에서, 제안된 검색들을 블렌딩하는 것은 미리정의된 규칙들의 세트에 따라 수행된다. 예를 들어, 검색 결과 스폿들의 최대 개수(예컨대, 8개)가, 제안된 검색들에 기여하는 소스들 각각으로부터 올 수 있다. 미리결정된 우선순위가 제안된 검색들(예컨대, 연결들, 이력적인, 이어서 미설치된 히어로 자산(hero asset))의 순서를 결정하는 데 사용된다. 다른 예에서, 미리결정된 규칙들의 세트는 다음을 포함한다: (i) 각각의 유형의 제안된 검색 결과들에 대해, 그것은 그것이 기여할 수 있는 결과들의 최대 개수 및 위치를 갖고; (ii) 소정 유형의 제안된 검색 결과들(예컨대, 설치되지 않은 애플리케이션들)에 대해, 최대 개수의 결과들이 블렌딩된 결과들에 기여할 수 있고(예컨대, 각각이 1을 기여함); (iii) 또는 이력 결과들에 대해, 그것은 사용자에게 달려 있다. 예를 들어, 일부 실시예들에서, 검색 질의들 이력의 세트는 최근 검색 질의들의 빈도에 적어도 부분적으로 기초하여 선택된다(1034). (예컨대, 언제 그리고 얼마나 빈번하게 각각의 검색 질의 이력이 사용자에 의해 수행되었는지에 기초하여).
일부 실시예들에서, 사용자에게 최대 관심 대상인 것으로 예측되는 하나 이상의 제안된 애플리케이션들만이 검색 활성화 제스처에 응답하여 디스플레이된다. 예를 들어, 검색 활성화 제스처(예컨대, 도 11c의 스와이프(1104))를 수신하는 것에 응답하여, 디바이스는 검색 모드에 진입하고, 도 11g 내지 도 11j에 도시된 바와 같이 터치 감응형 디스플레이 상에 반투명한 검색 인터페이스를 디스플레이한다. 검색 인터페이스는 검색 입력 부분(1120) 및 검색 결과 부분(1130)을 포함한다. 예를 들어, 도 11g에 도시된 바와 같이, 애플리케이션들을 제안하는 것이 사용자에게 최대 관심 대상인 것으로 예측된다. 다수의 애플리케이션들이 검색 결과 부분(1130)에서 디스플레이된다.
일부 실시예들에서, 제안된 애플리케이션은 위치 정보를 사용하여, 사용자에게 최대 관심 대상인 것으로 예측되는 콘텐츠를 제안한다. 예를 들어, 도 11h에서, "Find My Car" 애플리케이션이 사용자에게 최대 관심 대상인 것으로 예측된다. 검색 결과 부분(1130)에서, "Find My Car" 애플리케이션에 대한 사용자 인터페이스가 디스플레이된다. 애플리케이션은 사용자의 위치 정보를 사용하여, 지도 상에 핀(pin)을 디스플레이하고, 점에 의해 나타낸 차량에 대한 사용자의 상대 위치를 보여준다. 다른 예에서, 사용자의 위치 및/또는 전술된 다른 정보(예컨대, 사용 데이터, 텍스트 콘텐츠, 및/또는 비-텍스트 콘텐츠 등)에 기초하여, 인근의 관심 지점들을 디스플레이하는 애플리케이션이 사용자에게 최대 관심 대상인 것으로 예측된다. 도 11i에서, 검색 결과 부분(1130)은 관심 지점, 예컨대, "Go Japanese Fusion"으로 명명되는 "음식" 카테고리 내의 레스토랑을 포함한다. "음식" 카테고리는 이중 원으로 나타낸 바와 같이 하이라이트되고, 인근 레스토랑 "Go Japanese Fusion"은 사용자의 위치 정보 및 레스토랑의 위치에 기초하여 찾아내진다. 다른 예에서, 도 11j에 도시된 바와 같이, "음식" 카테고리 내의 다수의 관심 지점들이 사용자에게 최대 관심 대상인 것으로 예측되고, 이러한 관심 지점들, 예컨대, 음식 카테고리 내의 Caffe Macs, Out Steakhouse, 및 Chip Mexican Grill이 디스플레이되고, "음식" 카테고리가 하이라이트된다.
도 10a 내지 도 10c에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(600, 800))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 10a 내지 도 10c와 관련하여 전술된 방법(1000)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(1000)을 참조하여 전술된 사용자 인터페이스 객체들(예컨대, 검색 인터페이스 내에 디스플레이된 것들)은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(600, 800))을 참조하여 본 명세서에 기술되는 사용자 인터페이스 객체들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 방법(1000)의 태양들은 선택적으로 아래에서 논의되는 방법(1200)의 태양들에 의해 상호교환되거나 보완된다(그리고 그 반대로도 가능하다). 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(1000)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 12는 일부 실시예들에 따른, 검색 모드에 진입하는 방법(1200)의 흐름도 표현을 예시한다. 도 13a 및 도 13b는 도 12의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(1200)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(1200)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(1200)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(1200)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(1200)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(1200)은 어디에서 제스처가 수신되는지에 응답하여 전자 디바이스 상의 관련 콘텐츠(예컨대, 사용자의 현재 위치와 관련되는 콘텐츠에 대한 제안된 검색 질의들 또는 어포던스들)를 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은 사용자들이 원하는 콘텐츠를 최소 개수의 사용자 입력들로 효율적으로 식별 및 선택하여, 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성할 수 있게 한다(예컨대, 디바이스는 인근의 관심 지점들에 대한 제안된 검색 질의들 및 콘텐츠를 제공하고, 사용자는 이들을 검색하고 찾아낼 필요 없이, 이들을 단지 선택하기만 하면 된다). 배터리-작동형 전자 디바이스들의 경우, 보다 빠르고 보다 효율적으로 관련 콘텐츠를 사전행동적으로 식별 및 표면화하는 것이 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 12에 도시된 바와 같이, 디바이스는 터치 감응형 표면을 통해, 사용자 인터페이스 위에서의 스와이프 제스처를 검출한다(1202). 일부 실시예들에서, 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 한다. 스와이프 제스처를 검출하는 것에 응답하여, 디바이스는 검색 모드에 진입한다. 일부 실시예들에서, 검색 모드에 진입하는 것은, 사용자 인터페이스와는 별개인 검색 인터페이스를, 검색 인터페이스 내에 임의의 사용자 입력을 수신하기 전에(예컨대, 검색 인터페이스 내의 검색 상자에 어떠한 텍스트도 입력되지 않음, 검색 상자 내에 어떠한 입력도 수신되지 않음(검색 상자 내에 어떠한 탭도 없음) 등), 제1 콘텐츠 항목으로 채우는 것을 포함한다.
일부 실시예들에서, 사용자 인터페이스가, 애플리케이션들을 호출하기 위한 선택가능한 아이콘들을 포함하는 홈 화면과는 별개인 애플리케이션과 연관되는 콘텐츠를 포함한다는 (그리고, 그에 따라서, 스와이프 제스처가 앱-특정 콘텐츠 위에서 검출되었다는) 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 것은, 검색 인터페이스를, 애플리케이션과 연관되는 콘텐츠에 적어도 부분적으로 기초하는 적어도 하나의 제안된 검색 질의로 채우는 것을 포함한다. 예를 들어, 도 11a 및 도 11b를 참조하여 상기에 설명된 바와 같이, "John Applecore"의 콘텐츠, Ecuador 이미지, 및/또는 "I love Ecuador" 텍스트(도 11a)를 갖는 이메일 애플리케이션 위에서의 스와이프 제스처(1102)에 응답하여, 검색 인터페이스(1115)가 채워진다(도 11b). 검색 인터페이스(1115)는 이메일 애플리케이션과 연관된 콘텐츠에 적어도 부분적으로 기초하는 적어도 하나의 제안된 검색 질의, 예컨대, "Ecuador", "John Applecore"를 포함한다. 다른 예에서, 도 11e 및 도 11f를 참조하여 상기에 설명된 바와 같이, Ecuador의 콘텐츠 및/또는 Mt. Rainier 이미지(도 11e)를 갖는 이미지 애플리케이션 위에서의 스와이프 제스처(1102)에 응답하여, 검색 인터페이스(1115)가 채워진다(도 11f). 검색 인터페이스(1115)는 이미지 콘텐츠에 적어도 부분적으로 기초하는 적어도 하나의 제안된 검색 질의, 예컨대, "Ecuador", "Mount Rainier"를 포함한다.
일부 실시예들에서, 사용자 인터페이스가 홈 화면의 일정 페이지와 연관된다는 결정에 따라(예컨대, 스와이프 제스처가 초기 홈 화면 페이지 위에 있었음, 도 11c), 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 것은, 검색 인터페이스를, 전자 디바이스의 현재 위치의 임계 거리 내에 있는 적어도 하나의 관심 지점의 선택가능한 설명을 포함하는 어포던스로 채우는 것을 포함한다. 예를 들어, 디바이스가 일부 레스토랑들을 갖는 쇼핑몰 가까이에 있을 때, 제안된 검색 질의들 대신에 그러한 레스토랑들에 관한 정보를 디스플레이하는데, 이는 그 레스토랑들에 관한 정보가 쇼핑몰에 대한 사용자의 근접성에 기초하여 사용자에게 최대 관심 대상인 것으로 예측되기 때문이다. 도 11i 및 도 11j를 참조하여 상기에 설명된 예에서, 홈 화면 위에서의 스와이프 제스처(1104)를 검출하는 것(도 11c)에 응답하여, 도 11d에 도시된 바와 같이 제안된 검색 질의 인터페이스를 디스플레이하는 대신에, 검색 인터페이스의 검색 결과 부분(1130)에서 적어도 하나의 인근의 관심 지점, 예컨대, "Go Japanese Fusion" 레스토랑(도 11i), "Caffe Macs", "Out Steakhouse", "Chip Mexican Grill"(도 11j)이 디스플레이된다. 도 11i 및 도 11j에서, 각각의 관심 지점은 어포던스를 포함하고 선택가능한 설명을 포함하는데, 이는, 선택될 시에, 관심 지점에 관한 더 많은 정보를 제공하고, 예컨대, 관심 지점의 아이콘 및/또는 설명을 선택하는 것은 더 많은 설명, 가격, 메뉴, 및/또는 거리 정보를 제공한다.
일부 실시예들에서, 검색 인터페이스를 제안된 검색 질의들로 채울지 또는 인근의 관심 지점에 대한 어포던스로 채울지 여부에 대한 결정은, 추가적으로 또는 대안적으로, 애플리케이션에 대한 콘텐츠를 디스플레이한 이후로 미리결정된 기간이 경과되었는지 여부에 기초한다. 예를 들어, (i) 스와이프 제스처가 홈 화면 페이지 위에서 검출되었고(예컨대, 스와이프 제스처가 콘텐츠 위에서 검출되지 않았음) (ii) 애플리케이션과 연관되는 콘텐츠를 디스플레이한 이후의 기간이 임계 기간 미만이라는 결정에 따라, 검색 인터페이스는 여전히 적어도 하나의 제안된 검색 질의로 채워진다. 따라서, 그러한 실시예들에서, 스와이프 제스처가 콘텐츠 위에서 검출되지 않았다는 결정은, 콘텐츠를 디스플레이한 이후의 기간이 임계 기간을 충족하거나 초과한다는 결정(예컨대, 콘텐츠를 너무 오래 전에, 즉, 2분, 3분 전에 본 경우)을 포함하고, 그러면 디바이스는, 사용자가 그 콘텐츠에 기초하는 제안된 검색 질의들에 관심이 있을 가능성이 없다고 결정하고, 대신에, 검색 인터페이스는 적어도 하나의 관심 지점의 선택가능한 설명을 포함하는 어포던스로 채워진다. 이러한 방식으로, 디바이스가 애플리케이션과 연관되는 콘텐츠가 최근에 디스플레이되었다고 결정하는 경우, 사용자는 여전히 제안된 검색 질의들을 제공받는다.
일부 실시예들에서, 검색 인터페이스를 어포던스로 채우는 것은, 검색 인터페이스의 검색 엔트리 부분을 디스플레이하는 것을 포함한다(1204). 일부 실시예들에서, 디바이스는 검색 엔트리 부분에서 입력을 검출하고; 검색 엔트리 부분에서 입력(예컨대, 탭)을 검출하는 것에 응답하여, 전자 디바이스는 어포던스를 디스플레이하는 것을 중지하고, 검색 인터페이스 내에 적어도 하나의 제안된 검색 질의를 디스플레이한다(1206). 예를 들어, 도 13a에 도시된 바와 같이, 검색 인터페이스는 검색 엔트리 부분(1120) 및 인근의 관심 지점들(예컨대, 도 13a에 도시된 바와 같은 인근 레스토랑들 및 다른 인근의 관심 지점들에 대한 관심있는 선택가능한 카테고리들)에 대한 적어도 하나의 어포던스를 갖는 검색 결과 부분(1130)을 포함한다. 인근의 관심 지점들과 함께 검색 인터페이스를 디스플레이하는 동안, 검색 엔트리 부분(1120)에서의 입력(1302)이 검출되는데, 예컨대, 사용자는 도 13a에 도시된 바와 같이 입력(1302)으로 검색 상자 내를 탭핑한다. 입력(1302)을 검출하는 것에 응답하여, 도 13b에서, 디바이스는 인근의 관심 지점들과 연관된 적어도 하나의 어포던스를 디스플레이하는 것을 중지하고, 검색 결과 부분(1130)에서 제안된 검색 질의들, 예컨대 Ecuador, Mount Rainier, Best Sushi 등을 디스플레이한다. 따라서, 디바이스는 제안된 검색 질의들과 제안된 관심 지점들 사이에서 신속하게 스위칭할 수 있다(이 예에서, 검색 상자 내에서의 사용자의 탭은, 그가 제안된 관심 지점들에 관심이 없다는 것을 나타내고, 이에 따라서, 디바이스는 상이한 유형의 제안된 콘텐츠, 예컨대 다른 애플리케이션들에서 이전에 본 콘텐츠에 기초하는 제안된 검색 질의들을 제공하려고 시도한다).
적어도 하나의 관심 지점의 선택가능한 설명에 관한 추가 상세사항들은 도 16a, 도 16b, 및 도 17a 내지 도 17e를 참조하여 아래에서 제공된다. 검색 인터페이스를 적어도 하나의 제안된 검색 질의로 채우는 것에 관한 추가 상세사항들은 도 10a 내지 도 10c 및 도 11a 내지 도 11j를 참조하여 상기에 제공되어 있다.
도 12에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(600, 800, 1000))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 12와 관련하여 전술된 방법(1200)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(1200)을 참조하여 전술된 사용자 인터페이스 객체들 및/또는 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(600, 800, 1000))을 참조하여 본 명세서에 기술되는 사용자 인터페이스 객체들 및/또는 동작들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(1200)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 14는 일부 실시예들에 따른, 터치 감응형 디스플레이를 갖는 전자 디바이스 상에 차량 위치 정보를 사전행동적으로 제공하는 방법(1400)의 흐름도 표현을 예시한다. 도 15a 및 도 15b는 도 14의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(1400)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(1400)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(1400)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(1400)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 하나 이상의 위치 센서들(예컨대, 가속도계(들)(168), 자력계 및/또는 GPS 수신기), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(1400)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(1400)은 사용자들이 위치 정보를 즉시 필요로 할 때에 그 정보를 사전행동적으로 제공하기 위한 직관적인 방식을 제공한다. 본 방법은 사용자들이 그들 스스로 차량 위치 정보를 찾아내려고 시도하도록 요구하지 않고서 그 정보를 사전행동적으로 제공함으로써 그리고 사용자가 주차된 차량으로 돌아오는 것으로 결정된 시간에 그 정보를 제공함으로써 보다 효율적인 인간-기계 인터페이스들을 생성한다. 배터리-작동형 전자 디바이스들의 경우, 방법(1400)은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 14에 도시된 바와 같이, 디바이스는 자동으로 그리고 사용자로부터의 지시들 없이(1402), 후술되는 단계들(1404, 1406)을 수행한다. 단계(1404)에서, 디바이스는 전자 디바이스의 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 결정한다.
일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 것은, 전자 디바이스가 임계 기간 초과 동안 지리적 위치에 머물러 있다고 결정하는 것을 포함하는데, 예컨대, 디바이스가 임계 속력 초과로 이동한 후에 대략 2분 동안 한 장소에 있어서, 따라서 이것은 차량이 지금 주차되어 있다는 표시를 제공한다. 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 것은, 전자 디바이스와 차량 사이의 통신 링크가 연결해제되었다고 결정하는 것을 포함하는데, 예컨대, 디바이스가 차량과의 블루투스 연결을 상실하고/하거나 사용자가 디바이스와 차량을 연결하는 케이블을 제거하는 등을 하여, 이에 따라 차량이 정지되고/되거나 차량의 엔진이 꺼졌다는 표시를 제공한다. 일부 실시예들에서, 차량이 지리적 위치에 멈춰 있다고 결정하는 것은, 지리적 위치가 주차장 내의 위치에 대응한다고 결정하는 것을 포함하는데, 예컨대, 현재 GPS 좌표들을 지도 애플리케이션에 연결하여 (또는 그로 전송하여) 이러한 결정을 수행하고 지리적 위치가 주차장 내에 있는지 여부에 대한 결정을 수신한다.
일부 실시예들에서, 차량이 지리적 위치에 멈춰 있는지 여부를 결정하기 위해 상기 결정들 중 하나 이상만이 수행되고, 다른 실시예들에서는 그 결정들 중 2개 이상이 수행되는 반면, 또 다른 실시예들에서는, 차량이 지리적 위치에 멈춰 있는지 여부를 평가하기 위해 그 결정들 3개 전부가 수행된다. 예를 들어, 일부 실시예들에서, 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 결정하는 것은, (i) 전술된 바와 같이 전자 디바이스가 임계 속력 초과로 이동 중이라고 결정함으로써 사용자가 차량 내에 있다고 결정하는 것, (ii) (a) 전술된 바와 같이 전자 디바이스가 임계 기간 초과 동안 지리적 위치에 머물러 있다고 결정하는 것, (b) 전술된 바와 같이 전자 디바이스와 차량 사이의 통신 링크가 연결해제되었다고 결정하는 것, 및 (c) 전술된 바와 같이 지리적 위치가 주차장 내의 위치에 대응한다고 결정하는 것 중 하나 이상에 의해, 차량이 지리적 위치에 멈춰 있다고 결정하는 것을 포함한다.
단계(1406)에서, 디바이스는 추가로, 사용자가 차량을 떠났는지 여부를 결정한다. 일부 실시예들에서, 디바이스는, 디바이스의 현재 위치가 지리적 위치로부터 임계 거리보다 더 멀리 떨어져 있다고 결정함으로써 그 결정을 수행한다. 일부 실시예들에서, 디바이스는, 사용자가 차량과의 연결로부터 디바이스를 물리적으로 속박해제(untether)하였거나 또는 사용자가 디바이스와 차량 사이의 무선 연결(예컨대, 블루투스 또는 WiFi 기반 연결)을 중단하였다고 결정함으로써 그 결정을 수행한다. 사용자가 지리적 위치에 있는 차량을 떠났음을 (충분히 높은 신뢰도로) 확립하는 데 사용되는 결정들에 관한 추가 상세사항들은 아래에서 제공된다.
사용자가 지리적 위치에 있는 차량을 떠났다고 결정할 시에, 디바이스는 지리적 위치를 식별하기 위해 위치 센서로부터 인출되는 포지셔닝 정보가 정확도 기준들을 만족하는지 여부를 결정한다(1408). 일부 실시예들에서, 정확도 기준들은, 포지셔닝 정보와 연관된 GPS 판독값의 정확도가 정확도의 임계 레벨(예컨대, 10 미터 이하의 원형 공산 오차(circular error probability)) 초과일 때 만족되는 기준을 포함한다.
포지셔닝 정보가 정확도 기준들을 만족하지 않는다고 결정할 시에(1408 - 아니오), 디바이스는 사용자에게 지리적 위치에 관한 정보를 입력하라는 프롬프트를 제공하고, 프롬프트를 제공하는 것에 응답하여, 디바이스는 사용자로부터 지리적 위치에 관한 정보를 수신하고 그 정보를 차량 위치 정보로서 저장한다(1410). 일부 실시예들에서, 프롬프트는 전자 디바이스를 통해 이용가능한 가상 어시스턴트에 의해 제공되는 오디오 프롬프트이다. 프롬프트가 오디오 프롬프트일 때, 사용자로부터 정보를 수신하는 것은, 사용자로부터 지리적 위치를 식별하는 구두 설명을 수신하는 것을 포함한다. 일부 실시예들에서, 가상 어시스턴트로부터의 프롬프트는, 사용자에게 지리적 위치에 있는 차량의 사진을 촬영하고/하거나 차량을 둘러싸는 영역의 사진을 촬영하라고 지시한다. 일부 실시예들에서, 사용자는 지리적 위치의 구두 설명을 제공하라는 지시를 받는다.
일부 실시예들에서, 포지셔닝 정보가 정확도 기준들을 만족한다고 결정할 시에(1408 - 예), 디바이스는, 자동으로 그리고 사용자로부터의 지시들 없이, 포지셔닝 정보를 차량 위치 정보로서 저장한다(1412). 일부 실시예들에서, 포지셔닝 정보가 충분히 정확한 경우(예컨대, 정확도 기준들을 만족하는 경우), 어떠한 프롬프트도 사용자에게 제공되지 않는다. 다른 실시예들에서, 포지셔닝 정보가 충분히 정확하더라도, 디바이스는 여전히 사용자에게 (동작(1410)을 참조하여 상기에 설명된 바와 같이, 구두로, 텍스트로, 또는 사진을 촬영함으로써) 지리적 위치에 관한 추가 상세사항들을 제공하도록 프롬프트하여, 이러한 추가 상세사항들을 저장하고, 예를 들어, 사용자가 그의 차량으로 돌아오고 있는 시간에 디바이스가 강한 GPS 신호를 갖지 않는 경우 이들을 사용자에게 제시한다.
일부 실시예들에서, 디바이스는 추가로 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정한다(1414). 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은, 위치 센서로부터 수신된 새로운 포지셔닝 정보를 사용하여, 전자 디바이스가 지리적 위치를 향해서 이동 중이라고 결정하는 것을 포함한다. 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것은, (i) 전자 디바이스가 임계 기간 초과 동안 상이한 지리적 위치에(예컨대, 쇼핑몰, 레스토랑, 사용자에 대한 알려진 집 또는 직장 주소 등과 연관된 위치/포지션에) 머물러 있었다고 결정하는 것; 및 (ii) 새로운 포지셔닝 정보가, 전자 디바이스가 상이한 지리적 위치에서 떠나서 그 지리적 위치를 향해 이동 중임을 나타낸다고 결정하는 것을 포함한다. 일부 실시예들에서, 디바이스는 추가적으로 또는 대안적으로, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하기 위해 (예컨대, 이미지들에서의 공통 또는 오버랩되는 시각적 요소들을 인식함으로써) 지리적 위치의 촬영된 사진을 사용자의 현재 위치의 이미지와 비교한다. 일부 실시예들에서, 디바이스는 추가적으로 또는 대안적으로, 사용자가 차량과의 데이터 연결을 확립하거나 또는 그에 대해 검색할 수 있게 하는 설정 사용자 인터페이스에 사용자가 액세스하고 있음을 검출하고, 이러한 방식으로, 디바이스는 사용자가 지리적 위치를 향해서 가고 있다는 표시를 갖는다.
일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있다는 결정에 따라, 디바이스는 차량 위치 정보를 포함하는 사용자 인터페이스 객체를 디스플레이한다. 일부 실시예들에서, 사용자 인터페이스 객체는 사용자의 현재 위치에 대한 식별자 및 지리적 위치에 대한 별개의 식별자를 포함하는 지도 객체이다. 예를 들어, 도 15a에 도시된 바와 같이, 검색 사용자 인터페이스는 검색 입력 부분(1120) 및 검색 결과 부분(1130)을 포함하는데, 검색 결과 부분은, 점에 의해 식별되는 지리적 위치 및 위치 라벨 "Infinite Loop 2"에서의 차량 위치 정보 및 별도로 핀에 의해 식별되는 사용자의 현재 위치를 포함하는 지도 객체이다.
일부 실시예들에서, 사용자 인터페이스 객체는 전자 디바이스의 잠금 화면 상에 디스플레이된다. 예를 들어, 도 15b에 도시된 바와 같이, 지도 객체는 잠금 화면 상에 디스플레이된다. 따라서, 자동으로 그리고 사용자로부터의 지시들 없이, 디바이스는, 비교적 정확한 위치 정보에 기초하여 차량을 찾는 것이 사용자의 관심 대상일 것으로 예측하고, 사용자가 전자 디바이스를 잠금해제하지 않고서 차량 위치를 나타내는 지도를 제공한다.
일부 실시예들에서, 사용자 인터페이스 객체는 전자 디바이스로 하여금 검색 모드에 진입하게 하는 스와이프 제스처에 응답하여 디스플레이된다. 일부 실시예들에서, 사용자가 지리적 위치를 향해서 가고 있는지 여부를 결정하는 것이, 동일한 스와이프 제스처를 수신하는 것에 응답하여 수행된다. 따라서, 동일한 스와이프 제스처는 디바이스로 하여금 사용자가 지리적 위치를 향해서 가고 있다고 결정하게 하고, 비교적 정확한 위치 정보에 기초하여 사용자 인터페이스 객체를 디스플레이한다.
일부 실시예들에서, 검색 모드는, 사용자 인터페이스 객체, 예컨대 지리적 위치에 대응하는 식별자를 포함하는 지도 객체를 포함하도록 미리 채워지는 검색 인터페이스를 디스플레이하는 것을 포함한다. 다시 말하면, 검색 인터페이스 내에 사용자로부터의 임의의 사용자 입력을 수신하기 전에(예컨대, 사용자가 임의의 검색 질의들을 입력하기 전에), 검색 인터페이스는 지도 객체를 포함하도록 채워져서, 사용자가 그의 차량을 주차한 지리적 위치에 대한 시각적 리마인더에의 신속한 액세스를 제공받도록 한다(예컨대, 도 15a의 사용자 인터페이스 객체(1130) 또는 사용자 인터페이스 객체(1525) 또는 양쪽 모두). 일부 실시예들에서, 스와이프 제스처는 실질적으로 좌우 방향으로 있고, 스와이프 제스처는 전자 디바이스가 홈 화면의 초기 페이지를 디스플레이하고 있는 동안 사용자에 의해 제공된다(예컨대, 도 11c의 1104-1). 일부 상황들에서, 스와이프 제스처는 실질적으로 하방 방향으로 있고, 애플리케이션과 연관되는 콘텐츠를 보는 동안 사용자에 의해 제공된다(예컨대, 도 11a 및 도 11e의 1102).
일부 실시예들에서, (동작(1414)을 참조하여 상기 논의된 바와 같이) 사용자가 지리적 위치를 향해서 가고 있다고 결정하는 것과 함께, 디바이스는 또한, 전자 디바이스의 위치 센서와 연관된 현재 GPS 신호가, 디바이스가 다시 지리적 위치로의 정확한 길 안내를 제공할 수 있도록 하기에 충분히 강한지 여부를 결정하고, GPS 신호가 충분히 강하지 않다는 결정에 따라, 이어서 디바이스는 포지셔닝 정보 및 사용자로부터의 추가 상세사항들 양쪽 모두를 제공하여서, 사용자가 그의 주차된 차량을 찾아내는 것을 돕기 위해 양쪽 모두의 정보에 의존할 수 있게 한다.
일부 실시예들에서, 프롬프트는 (동작(1410)을 참조하여 상기에 논의된 바와 같이) 전자 디바이스를 통해 이용가능한 가상 어시스턴트에 의해 제공되는 오디오 프롬프트이고, 사용자로부터 정보를 수신하는 것은, 사용자로부터 지리적 위치를 식별하는 구두 설명을 수신하는 것을 포함하고, 사용자 인터페이스 객체를 디스플레이하는 것은, 선택가능한 어포던스(예컨대, 도 15a 및 도 15b의 어포던스(1502))를 디스플레이하는 것을 포함하는데, 선택가능한 어포던스는, 선택될 때, 디바이스로 하여금 구두 설명을 재생하게 한다. 일부 실시예들에서, 가상 어시스턴트로부터의 프롬프트는, 사용자에게 지리적 위치에 있는 차량의 사진을 촬영하고/하거나 차량을 둘러싸는 영역의 하나 이상의 사진들/비디오들을 촬영하라고 지시하고, 사용자 인터페이스 객체를 디스플레이하는 것은, 선택가능한 어포던스(예컨대, 도 15a 및 도 15b의 어포던스(1502))를 디스플레이하는 것을 포함하는데, 선택가능한 어포던스는, 선택될 때, 디바이스로 하여금 기록된 미디어를 재생하게 한다. 일부 실시예들에서, 선택가능한 어포던스는 (어포던스(1502)에 대해 도시된 바와 같이) 지도 객체에 근접하게 디스플레이되는 반면, 다른 실시예들에서, 선택가능한 어포던스는 그 자체로 디스플레이된다(특히, 포지셔닝 정보가 정확도 기준들을 만족하지 않는 상황들에서, 이러한 다른 디스플레이 포맷의 일례가 도 15a 및 도 15b의 어포던스(1535)에 대해 도시되어 있다). 일부 실시예들에서(사용자-제공 위치 정보에 더하여 포지셔닝 정보가 제공되었는지 여부에 따라), 일단 사용자가 그의 주차된 차량을 향해서 가고 있다고 결정되면 어포던스들(1130, 1535) 중 하나 또는 양쪽 모두가 디스플레이된다.
일부 실시예들에서, 사용자 인터페이스 객체/어포던스(예컨대, 1130, 1535, 또는 양쪽 모두)는 주차된 차량에 도착하기 위한 추정된 거리를 포함한다(예컨대, 사용자 인터페이스 객체(1130)는 상부 우측 코너에 "0.3 mi"를 포함한다).
일부 실시예들에서, 프롬프트는 전자 디바이스의 디스플레이 상에 디스플레이되고, 사용자로부터 정보를 수신하는 것은, 사용자로부터 지리적 위치를 식별하는 텍스트 설명을 수신하는 것을 포함하고, 사용자 인터페이스 객체를 디스플레이하는 것은 사용자로부터의 텍스트 설명을 디스플레이하는 것을 포함한다. 다른 실시예들에서, 사용자가 텍스트 설명에 액세스하게 하는 선택가능한 어포던스가 디스플레이된다. 예를 들어, 어포던스(1535)(도 15a 및 도 15b)의 선택에 응답하여, 디바이스는 사용자로부터의 텍스트 설명을 포함하는 메모 애플리케이션을 연다.
도 14에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(600, 800, 1000, 1200))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 14와 관련하여 전술된 방법(1400)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(1400)을 참조하여 전술된 사용자 인터페이스 객체들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(600, 800, 1000, 1200))을 참조하여 본 명세서에 기술되는 사용자 인터페이스 객체들의 특성들 중 하나 이상을 갖는다. 추가로, 섹션 1 내지 섹션 11을 참조하여 후술되는 상세사항들, 동작들, 및 데이터 구조들은 또한 방법(1400)과 함께 이용될 수 있다(예컨대, 섹션 6을 참조하여 논의되는 상세사항들은, 사용자의 주차된 차량의 위치를 포함하는 사용자 인터페이스 객체들을 언제 제시할지를 결정하는 것을 돕기 위해 사용될 수 있고, 섹션 5를 참조하여 논의되는 상세사항들은, 사용자가 전형적으로 그의 차량을 주차하고 이어서 나중에 돌아오는 시기에 관련되는 사용자 패턴들을 식별 및 학습하는 것을 돕기 위해 사용될 수 있고, 섹션 10에 관련되는 상세사항들은, 컨텍스트 정보에 의존함으로써 차량 위치 정보를 개선하는 것을 돕기 위해 이용될 수 있다). 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 다른 관련 상세사항들은 방법(1400)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 16a 및 도 16b는 일부 실시예들에 따른, 인근의 관심 지점(POI)들에 관한 정보를 사전행동적으로 제공하는 방법(1600)의 흐름도 표현을 예시한다. 도 17a 내지 도 17e는 도 16a 및 도 16b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(1600)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(1600)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(1600)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(1600)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 하나 이상의 위치 센서들(예컨대, 가속도계(들)(168), 자력계 및/또는 GPS 수신기), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(1600)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(1600)은 사용자가 그 스스로 관심 지점 정보에 대해 검색하고 그를 찾아내도록 요구하지 않고서 전자 디바이스 상에 그 정보를 사전행동적으로 제공한다(그리고 이어서 사용자가 특정 POI의 소정 거리 내에 있을 때 그 정보를 표면화한다). 본 방법은, 따라서, 원하는 액션을 수행하기 위해 더 적은 터치 입력들을 요구함으로써(예컨대, 인근 POI들에 관한 정보를 봄으로써) 보다 효율적인 인간-기계 인터페이스들을 생성한다. 배터리-작동형 전자 디바이스들의 경우, 방법(1600)은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 16a에 도시된 바와 같이, 전자 디바이스의 사용자로부터 어떠한 지시들도 수신하지 않고서, 디바이스는 위치 센서를 사용하여, 전자 디바이스의 지리적 위치를 모니터링한다(1602). 또한 전자 디바이스의 사용자로부터 어떠한 지시들도 수신하지 않고서, 디바이스는, 모니터링된 지리적 위치에 기초하여, 전자 디바이스가 미리결정된 유형의 관심 지점(예컨대, 레스토랑, 유원지, 또는 영화관과 같은 활동 제안들이 이용가능한 관심 지점)의 임계 거리 내에 있다고 결정한다.
일부 실시예들에서, 미리결정된 유형의 관심 지점들은, 사용자가 자주 방문하는 관심 지점들에 기초하여 결정된다. 일부 실시예들에서, 관심 지점들은 또한, 현재 텍스트 메시지들, 이메일들, 및/또는 사용자의 소셜 네트워크와 연관된 다른 데이터에 기초하여 사용자에게 관심 대상인 것으로 예측되는 관심 지점들을 포함한다.
여전히 전자 디바이스의 사용자로부터 어떠한 지시들도 수신하지 않고서, 전자 디바이스가 관심 지점의 임계 거리 내에 있다고 결정하는 것에 따라, 디바이스는 관심 지점에서 현재 인기 있는 적어도 하나의 활동을 식별하고, 관심 지점에서 현재 인기 있는 적어도 하나의 활동(예컨대, 현재 인기 있는 놀이 기구들, 인기 있는 메뉴 항목들, 인기 있는 영화들 등)에 관한 정보를 인출하는 것을 포함하는, 관심 지점에 관한 정보를 인출한다. 일부 실시예들에서, 사용자의 소셜 네트워크에서의 임계 개수(예컨대, 5 초과) 또는 임계 백분율(예컨대, 5% 또는 10%)의 개인들이 적어도 하나의 활동에 관련되는 무언가를 포스팅했는지 여부에 기초하여 인기도가 평가된다. 일부 실시예들에서, 디바이스는 사용자가 자주 방문하는 관심 지점들 (및/또는 전술된 바와 같이, 텍스트 메시지들, 이메일들, 또는 사용자의 소셜 네트워크 내의 활동에 기초하여 지금 당장의 관심 대상인 것으로 결정되는 관심 지점들)의 미리결정된 개수(예컨대, 5, 10, 또는 20개)의 목록을 유지하고, 디바이스는 사용자가 그들 중 임의의 것의 임계 거리(예컨대, 1 마일, 1.5 마일, 2 마일) 내에 있을 때 그러한 관심 지점들에서의 현재 활동들에 관한 정보를 인출한다.
여전히 도 16a를 참조하면, 관심 지점에 관한 정보를 인출한 후에, 디바이스는 터치 감응형 표면을 통해 제1 입력을 검출하는데, 제1 입력은, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 한다(1616). 일부 실시예들에서, 검색 모드는 전체 전자 디바이스에 걸쳐서(예컨대, 단일 애플리케이션 내뿐만 아니라, (온-디바이스 및 어딘가 다른 곳의 양쪽 모두에서) 애플리케이션들 및 콘텐츠 소스들에 걸쳐서) 검색을 수행하는 것을 허용하는 시스템-레벨 검색 모드이다. 일부 실시예들에서, 제1 입력은, 디바이스가 홈 화면의 초기 페이지를 디스플레이하고 있는 동안 수신되는 터치 감응형 표면을 가로지른 방향으로의 스와이프 제스처(예컨대, 도 11c의 실질적으로 좌우로의 스와이프 제스처(1104-1))에 대응한다.
일부 실시예들에서, 디바이스가 관심 지점의 임계 거리 내에 있다고 결정하는 것에 따라, 디바이스는 또한 잠금 화면 상에 어포던스를 디스플레이하는데, 어포던스는 관심 지점에서의 현재 활동들에 관한 정보가 이용가능함을 나타낸다. 이러한 실시예들에서, 제1 입력은 관심 지점에서의 현재 활동들에 관한 이용가능한 정보를 보려고 하는 요청에 대응한다. 예를 들어, 도 17d에 도시된 바와 같이, 레스토랑 정보 객체는 잠금 화면 상에 디스플레이된다. 레스토랑의 아이콘 및/또는 설명은 선택가능하고, 레스토랑에 관한 더 많은 정보, 예컨대 메뉴 정보가 이용가능하다는 것을 나타낸다. 제1 입력, 예컨대 "View Menu" 링크 상에서의 탭에 응답하여, (예컨대, 잠금 화면 바로 위에 또는 디바이스를 잠금해제하고 메뉴를 보기 위한 적절한 애플리케이션을 여는 것에 의해) 메뉴가 디스플레이된다. 일부 실시예들에서, 도 17a 내지 도 17e에 도시된 사용자 인터페이스 객체들/어포던스들 중 임의의 것(예컨대, 1713, 1715, 및 그 내부에 포함된 콘텐츠)이 검색 인터페이스 내에 또는 잠금 화면 내에 (또는 양쪽 모두에) 제시될 수 있다.
도 16b로 돌아가면, 제1 입력을 검출하는 것에 응답하여, 디바이스는 검색 모드에 진입한다(1618). 일부 실시예들에서, 검색 모드에 진입하는 것은, 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에(예컨대, 검색 인터페이스 내의 검색 상자에서 어떠한 검색 용어들도 입력되지 않았고 어떠한 입력도 수신되지 않았음), 디스플레이를 통해 어포던스를 제시하는 것을 포함하는데, 어포던스는, (i) 적어도 하나의 활동에 관한 정보, 및 (ii) 적어도 하나의 활동이 관심 지점에서 현재 인기 있는 것으로 식별되었다는 표시, 예컨대, 인근 레스토랑에서의 인기 있는 메뉴 항목들(예컨대, 도 17c 및 도 17d의 어포던스(1715)), 인근 유원지에서의 놀이 기구 대기 시간들(예컨대, 도 17a 및 도 17b의 어포던스(1713)), 인근 영화관에서의 현재 상영 시간들 등을 포함한다.
예를 들어, 도 17a에 도시된 바와 같이, 일부 실시예들에서, 관심 지점은 유원지이고, 인출된 정보는 유원지에서의 놀이 기구들에 대한 현재 대기 시간들을 포함한다(1604). 일부 실시예들에서 그리고 도 17a에 도시된 바와 같이, 전자 디바이스는 인출된 정보를 사용하여 모든 놀이 기구들에 대한 평균 대기 시간(예컨대, 1시간)을 제시하고, 사용자는 각각의 개별 놀이 기구에 대한 대기 시간들을 보기 위한 링크를 선택할 수 있다. 도 17b에 도시된 바와 같이, 일부 실시예들에서, 인출된 정보의 부분은 전자 디바이스의 미리정의된 거리 내에 위치되는 놀기 기구들에 대한 대기 시간들에 관한 정보를 포함하는데(1606), 예컨대, 3개의 놀이 기구들/게임들이 전자 디바이스로부터 대략 100 내지 150 피트의 거리 내에 있고, (놀이 기구 대기 시간들을 보도록 요청하는 사용자로부터 입력, 예컨대 도 17a에 도시된 "View Wait Times" 텍스트 위에서의 입력을 수신한 후에) 각각의 놀이 기구/게임에 대한 대기 시간이 디스플레이된다.
다른 예로서, 도 17c에 도시된 바와 같이, 관심 지점은 레스토랑이고, 인출된 정보는 레스토랑에서의 인기 있는 메뉴 항목들에 관한 정보를 포함한다(1608). 일부 실시예들에서, 인출된 정보는 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 인출된다(1610). 예를 들어, 도 17c에서, 레스토랑 "Go Japanese Fusion"에서의 인기 있는 메뉴 항목 "Yakiniku Koji"가 어포던스(1715) 내에 디스플레이되고, 인기 있는 메뉴 항목은 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 인출된 정보에 기초하여 결정될 수 있다.
하나의 추가 예로서, 관심 지점은 영화관일 수 있고, 인출된 정보는 영화관에 대한 상영 시간들에 관한 정보를 포함한다(1612). 일부 실시예들에서, 상영 시간들에 관한 인출된 정보는 전자 디바이스의 사용자와 연관되는 소셜 네트워크로부터 (예컨대, 사용자의 소셜 네트워크에서 개인들에 의해 최근에 포스팅된 정보에 기초하여) 인출된다(1614).
일부 실시예들에서, 디바이스는 제2 입력, 예컨대 도 17a 내지 도 17d의 어포던스들(1713, 1715)에 대해 도시된 show more 링크와 같은, 어포던스 근처에(예컨대, 상부에) 디스플레이되는 show more 링크의 선택을 검출하고, 제2 입력을 검출하는 것에 응답하여, 디바이스는, 관심 지점과는 별개인 제2 관심 지점에서의 현재 활동들에 관한 이용가능한 정보를 포함하도록 어포던스를 업데이트한다(1620). 일부 실시예들에서, 제2 관심 지점은 또한 전자 디바이스의 임계 거리 내에 있다. 예를 들어, 사용자가 도 17d에 도시된 show more 링크를 선택하는 것에 응답하여, 디바이스는, 도 17c에 도시된 바와 같이, 전자 디바이스의 1 마일 내에 있는 레스토랑들 및 상이한 레스토랑 "Out Steakhouse"에서의 음식에 관한 이용가능한 정보를 포함하도록 어포던스(1715)를 업데이트한다. 달리 말하면, 어포던스(1715)에는 초기에 "Go Japanese Fusion"에 관한 정보만이 제시되고, 제2 입력에 응답하여, 어포던스(1715)는 제2 관심 지점에 관한 정보(예컨대, 도 17c에서 점선들 내에 도시된 "Out Steakhouse"에 관한 정보)를 포함하도록 업데이트된다. 일부 실시예들에서, 제2 입력을 검출하는 것에 응답하여 관심 지점과는 별개인 하나 초과의 관심 지점들이 디스플레이되는데, 예컨대, 디바이스는 관심 지점에 더하여 2개 이상의 새로운 레스토랑들에 관한 이용가능한 정보를 포함하도록 레스토랑 정보 어포던스를 업데이트한다. 일부 실시예들에서, 동일한 기능(즉, show more 링크의 선택에 응답하여 사용자가 추가 관심 지점들에 관한 정보를 볼 수 있게 하는 기능)이 또한, 잠금 화면 상에 제시되는 어포던스들(예컨대, 도 17d의 잠금 화면 상에 도시된 어포던스(1715))에 대해서도 이용가능하다.
일부 실시예들에서, 어포던스는 관심 지점들의 선택가능한 카테고리들을 추가로 포함하고(1622), 디바이스는 각각의 선택가능한 카테고리의 선택을 검출하고, 선택을 검출하는 것에 응답하여, 디바이스의 제2 임계 거리 내에 위치되는 추가 관심 지점들에 관한 정보를 포함하도록 어포던스를 업데이트하는데(1624), 예컨대, 제2 임계치는 사용자에게 관심 대상일 수 있는 관심 지점들을 캡처하기 위해 임계 거리보다 더 큰데, 이는 그들이 가장 가까운 관심 지점들을 아직 선택하지 않았기 때문이다. 예를 들어, 제1 임계 거리는 100 피트이다. 디바이스는 전자 디바이스가 관심 지점으로부터 대략 50 피트 떨어져 있을 때 도 17c 및 도 17d에 도시된 바와 같은 "Go Japanese Fusion"을 관심 지점으로서 디스플레이한다. "음식" 카테고리의 선택을 검출하는 것에 응답하여, 도 17e에 도시된 바와 같이, 디바이스의 100 피트 초과이지만 1 마일 내에 위치되는 추가 관심 지점들, 예컨대 "Out Steakhouse" 및 "Chip Mexican Grill"이 디스플레이된다.
일부 실시예들에서, 전자 디바이스를 잠금해제한 후에, 사용자 인터페이스 객체는 전자 디바이스의 홈 화면의 초기 페이지 위에서의 실질적으로 수평 방향으로의 스와이프(예컨대, 도 11c의 좌우 스와이프(1104-1))에 응답하여 이용가능하다(1626).
도 16a 및 도 16b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(600, 800, 1000, 1200, 1400))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 16과 관련하여 전술된 방법(1600)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(1600)을 참조하여 전술된 사용자 인터페이스 객체들 및/또는 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(600, 800, 1000, 1200, 1400))을 참조하여 본 명세서에 기술되는 사용자 인터페이스 객체들 및/또는 동작들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(1600)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 18a 및 도 18b는 일부 실시예들에 따른, 음성 통신으로부터 콘텐츠 항목을 추출하고 추출된 콘텐츠 항목과 상호작용하는 방법(1800)의 흐름도 표현이다. 도 19a 내지 도 19f는 도 18a 및 도 18b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(1800)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(1800)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(1800)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(1800)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(1800)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(1800)은, 음성 통신들로부터 콘텐츠 항목들을 추출하고 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 이들을 사용자에게 제시하기 위한 직관적인 방식을 제공한다. 본 방법은 사용자로부터 요구되는 입력들의 개수를 감소시켜서(예컨대, 디바이스는 연락처들, 위치들, 및 이벤트들에 대한 관련 정보를 자동으로 추출하고, 디바이스 상의 저장 및 사용을 위해 그 정보를 준비함), 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성하고 사용자들이 음성 통신들 상에서 논의되는 것에 기초하여 새로운 콘텐츠 항목들을 추가하는 것을 돕는다. 배터리-작동형 전자 디바이스들의 경우, 본 방법은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시키는 것을 돕는다.
도 18a에 도시된 바와 같이, 디바이스는 음성 통신의 적어도 일부분을 수신하는데, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다(1801). 일부 실시예들에서, 음성 통신은 라이브 전화 통화, 라이브 비디오 통화(예컨대, 페이스타임 통화), 또는 녹음된 음성메일이다(1803). 일부 실시예들에서, 음성 통신은 사용자와 원격 사용자 사이의 라이브 전화 통화(또는 페이스타임 통화)이고, 따라서, 음성 통신은 사용자 및 원격 사용자 양쪽 모두에 의해 제공된 스피치를 포함한다. 다른 실시예들에서, 음성 통신은 원격 사용자에 의해 사용자에게 전송되는 녹음된 음성메일이고, 녹음된 음성메일은 원격 디바이스로부터 전자 디바이스로 통신 네트워크를 통해 전달되고, 녹음된 음성메일은 이어서 추후 재생을 위해 전자 디바이스 상에 저장된다.
일부 실시예들에서, 음성 통신의 일부분은 전자 디바이스의 사용자로부터의 지시에 기초하여 식별된다(1805). 예를 들어, 일부분은 하드웨어 버튼의 사용자의 선택에 기초하여 분석을 위해 전자 디바이스의 사용자에 의해 플래깅되고(flagged)(예컨대, 사용자는 단지 볼륨 버튼과 같은, 하드웨어 버튼을 탭핑하고), 이에 응답하여, 디바이스는 음성 통신의 미리정의된 양(예컨대, 이전 10, 9, 8, 또는 7초)을 분석하여 콘텐츠 항목들을 검출/추출하기 시작한다. 일부 실시예들에서, 버튼은 또한, 전자 디바이스의 디스플레이 상에 사용자 선택을 위해 제시되는 버튼(예컨대, 텍스트 "tap here to analyze this voice communication for new content"를 포함하는 음성 통신 동안 도 21b에 도시된 것과 유사한 사용자 인터페이스 상에 디스플레이되는 버튼)일 수 있다.
일부 실시예들에서, 사용자로부터의 지시는 문구 "hey Siri"를 포함하는 구두 커맨드(예컨대, "hey Siri, please save that", 또는 "hey Siri, please remember that", 또는 "hey Siri, please grab the event details that were just mentioned" 등)에 대응한다. 일부 실시예들에서, 사용자로부터의 구두 지시는 디바이스가 새로운 콘텐츠를 검출하기 위해 음성 통신을 분석하기 시작하게 하는 임의의 미리정의된 문구이다(예컨대, 문구는 영어 이외의 일부 다른 언어로 존재할 수 있거나, 또는 문구는 상이한 단어들, 예컨대 "Siri, please analyze this call" 또는 "Siri, please begin analyzing" 또는 그런 취지의 무언가를 포함할 수 있다).
일부 실시예들에서, 디바이스는 음성 통신의 임의의 일부분을 영구 메모리에 기록 또는 유지하지 않고, 대신에 디바이스는 단지 음성 통신의 일부분(예컨대, 한 번에 10초)을 분석하고, 이어서 모든 기록된 데이터를 즉시 삭제하고, 분석에 기초하여 추출된 콘텐츠 항목만을 저장한다(아래에서 더욱 상세하게 논의되는 바와 같음). 이러한 방식으로, 추출된 콘텐츠 항목들은 사용자가 이용가능하게 되지만, 음성 통신의 실제 콘텐츠는 저장되지 않으므로, 사용자 프라이버시를 보호하는 것을 돕는다.
일부 실시예들에서, 디바이스는 미리결정된 유형의 콘텐츠를 검출하기 위해 음성 통신의 일부분(예컨대, 디바이스의 사용자와 상이한 디바이스의 다른 원격으로 위치된 사용자 사이의 녹음된 음성메일 또는 라이브 전화 통화의 사용자에 의해 플래깅되는 부분, 또는 추출을 위해 새로운 콘텐츠를 포함하는 것으로 디바이스에 의해 자동으로 식별되는 부분)을 분석한다(1807). 일부 실시예들에서, 음성 통신을 분석하는 것은, 원격 사용자에 의해 제공된 스피치(및, 적용가능한 경우, 전자 디바이스의 사용자에 의해 제공된 스피치)를 텍스트로 변환하는 것; 텍스트에 자연 언어 프로세싱 알고리즘을 적용하여 텍스트가 하나 이상의 미리정의된 키워드들을 포함하는지 여부를 결정하는 것; 및 텍스트가 각각의 미리정의된 키워드를 포함한다는 결정에 따라, 음성 통신이 콘텐츠 항목을 설명하는 스피치를 포함한다고 결정하는 것을 포함한다(1809).
달리 말하면, 음성 통신은 스피치-텍스트 프로세싱 알고리즘들을 거치고, 스피치-텍스트 프로세싱에 의해 생성되는 텍스트에 대해 자연 언어 프로세싱이 수행되고, 이어서 전자 디바이스는 텍스트가 하나 이상의 미리정의된 키워드들 중 임의의 것을 포함하는지 여부를 결정한다. 일부 실시예들에서, (예컨대, 스피치-텍스트 및 자연 언어 프로세싱 동작들을 수행하는 것을 돕기 위해) 자동 스피치 인식 알고리즘이 이용된다. 일부 실시예들에서, 하나 이상의 미리정의된 키워드들은 텍스트 내의 핵심 문구들/문자열들을 식별하는 데 사용되는 데이터 검출기들을 포함하고, 그것들은 제안된 출력(예를 들어, 위에서 논의된 선택가능한 설명)을 제공하는 데 사용된다. 일부 실시예들에서, (스피치를 텍스트로 변환하고 그 텍스트를 프로세싱하여 새로운 콘텐츠를 검출하는) 이러한 전체 프로세스는 모두 전자 디바이스 상에서 수행되고, 이러한 동작들을 수행하는 것을 돕기 위해 서버들 또는 임의의 외부 디바이스들이 전혀 사용되지 않고, 이러한 방식으로, 사용자의 프라이버시가 유지되고 보호된다. 일부 실시예들에서, 음성 통신을 분석하는 동안 원형 버퍼가 사용되고(예컨대, 10초 이하의 음성 통신을 포함하는 작은 원형 버퍼), 원형 버퍼 내의 데이터는 스피치를 저장하며 기록하는 데 사용되고, 이는 또한 전체 대화가 기록, 모니터링 또는 저장되는 것이 아니기 때문에 프라이버시를 보호한다. 이러한 방식으로, 디바이스는 새로운 이벤트들, 새로운 연락처 정보, 및 다른 새로운 콘텐츠 항목들을 검출하기 위해 음성 통신들을 신속하고 효율적으로 프로세싱할 수 있다.
일부 실시예들에서, 음성 통신으로부터 추출될 수 있는 소정 유형의 콘텐츠(예컨대, 전화 번호들)에 대해, 하나 이상의 미리정의된 키워드들에 대한 검색 대신에 또는 그에 더하여, 디바이스는 또한 자연 언어 프로세싱 알고리즘에 의해 생성된 텍스트가 미리정의된 자릿수(예컨대, 미국 전화 번호들의 경우 10 또는 11)를 포함하는지 여부를 체크한다. 일부 실시예들에서, 기법들 양쪽 모두가 사용된다(예컨대, 디바이스는 "전화 번호"와 같은 미리정의된 키워드를 찾고, 이어서 곧 참조된 전화 번호를 찾아내기 위해 텍스트 내에서 미리 정의된 자릿수에 대해 검색한다).
일부 실시예들에서, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 음성 통신이 출력되는 동안 분석(예를 들어, 동작들(1807, 1809))이 수행된다. 일부 실시예들에서, 미리결정된 유형의 콘텐츠는, 음성 통신 상에서 논의되며 연락처들, 이벤트들, 및/또는 위치 정보에 관련되는 정보 콘텐츠를 포함한다(음성 통신들로부터의 위치 정보의 검출 및 추출에 관한 추가 상세사항들이 아래에서 제공된다). 예를 들어, 미리결정된 유형의 콘텐츠를 검출하기 위해 음성 통신을 분석하는 것은, 새로운 연락처 정보(연락처들 및 기존의 연락처들에 대한 새로운 연락처 정보를 포함함) 및 새로운 이벤트들(또는 기존의 이벤트들을 수정하는 것에 관련된 콘텐츠)을 검출하기 위해 분석하는 것을 포함한다. 일부 실시예들에서, 오디오 시스템은 디바이스의 내부 스피커, 외부 헤드폰들, 또는 외부 오디오 시스템, 예컨대 스피커들 또는 차량의 스테레오 시스템이다.
일부 실시예들에서, 디바이스는 원격 디바이스의 원격 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 콘텐츠 항목을 추출한다(1811)(예컨대, 스피치는 콘텐츠 항목, 예컨대 다가오는 이벤트에 관한 상세사항들(시작 시간, 종료 시간, 위치, 참석자들 등), 연락처 정보(전화 번호들, 연락처 이름, 고용주 이름 등), 레스토랑 이름, 전화 번호, 관심 지점으로의 길 안내, 및 스피치로부터 콘텐츠 항목을 추출하는 데 사용될 수 있는 다른 서술적 상세사항들을 식별하거나 설명한다). 일부 실시예들에서, 콘텐트 항목은 또한 전자 디바이스의 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 추출된다(예컨대, 두 사용자들이 이벤트 상세사항들을 논의하고 있고, 디바이스는 두 사용자들에 의해 제공된 스피치에 기초하여 그러한 이벤트 상세사항들을 추출한다)(1815).
일부 실시예들에서, 콘텐츠 항목은 새로운 이벤트, 전자 디바이스 상의 캘린더 애플리케이션과 현재 연관되는 이벤트에 대한 새로운 이벤트 상세사항들, 새로운 연락처, 전자 디바이스 상의 전화 애플리케이션과 연관되는 기존의 연락처에 대한 새로운 콘텐츠 정보이다(1813).
일부 실시예들에서, 전자 디바이스는 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능한지 여부를 결정한다(1817).
이제 도 18b로 돌아가면, 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 전자 디바이스는, 콘텐츠 항목과 연관되는 애플리케이션을 식별하고, 디스플레이 상에 콘텐츠 항목의 선택가능한 설명을 디스플레이한다(1821). 도 19a는 사용자가 현재 음성 통신(예컨대, 라이브 전화 통화)에 참여하고 있는 동안 선택가능한 설명(1902)이 디스플레이되는 하나의 예시적인 사용자 인터페이스를 도시한다. 도 19a에 도시된 바와 같이, 선택가능한 설명(1902)은 식별된 연관된 애플리케이션에 대한 아이콘(예컨대, 캘린더 애플리케이션에 대한 아이콘), 콘텐츠 항목의 설명(예컨대, 이 전화 통화 상에서 새로운 이벤트가 발견되었음을 나타내는 텍스트), 및 콘텐츠 항목에 관한 상세사항들(예컨대, 새로운 이벤트와 연관되는 이벤트 상세사항들)을 포함한다.
일부 실시예들에서, 선택가능한 설명을 디스플레이하는 것은, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 선택가능한 설명을 디스플레이하는 것을 포함한다(1823). 일부 실시예들에서, 최근 통화들을 포함하는 사용자 인터페이스는 음성 통신이 완료된 후에 디스플레이된다(즉, 선택가능한 설명(1902)이 사용자가 통화 중인 동안 먼저 보여지고, 이어서 최근 통화들을 포함하는 사용자 인터페이스가 통화 종료 시에 보여진다). 예를 들어, 도 19b는 음성 통신들로부터 추출된 콘텐츠 항목들에 대한 선택가능한 설명들(1901, 1903, 1905)을 포함하는 예시적인 사용자 인터페이스를 예시한다. 특히, 선택가능한 설명(1901)은 제1 전화 통화 상에서 새로운 이벤트가 발견되었음을 나타내고, 선택가능한 설명(1903)은 제2 전화 통화 상에서 새로운 연락처 정보가 발견되었음을 나타내고, 선택가능한 설명(1905)은 제3 전화 통화 상에서 위치들이 발견되었음을 나타낸다. 상기 논의된 바와 같이, 음성 통신은 또한 녹음된 음성메일일 수 있고, 따라서, 도 19b에 도시된 사용자 인터페이스는 또한 전화 애플리케이션의 음성메일 탭에 디스플레이될 수 있다.
일부 실시예들에서, 선택가능한 설명은 콘텐츠 항목이 음성 통신과 연관된다는 표시와 함께 디스플레이된다. 예를 들어, 선택가능한 설명들(1901 내지 1905) 각각은 그들이 추출된 음성 통신에 인접하게 디스플레이되는데, 그것들은 사용자들에게 각각의 추출된 콘텐츠 항목과 연관되는 각각의 음성 통신의 명확한 표시를 제공한다.
콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 전자 디바이스는 또한 사용자에게 새로운 콘텐츠 항목이 검출되었다는 피드백을 제공한다(1825). 일부 실시예들에서, 피드백을 제공하는 것은 선택가능한 설명을 디스플레이하는 것과 함께 수행된다(즉, 피드백을 제공하는 것 및 디스플레이하는 것은 실질적으로 동시 방식으로 수행되어, 사용자가 햅틱 피드백을 수신할 수 있는 데, 이는 이어서 음성 통신 동안 선택가능한 설명(1902)이 보여지는 디스플레이를 그가 보도록 안내한다). 일부 실시예들에서, 피드백을 제공하는 것은, 전자 디바이스에 근접해 있는 상이한 전자 디바이스로 콘텐츠 항목의 검출에 관한 정보를 전송하는 것을 포함한다(예컨대, 인근 랩톱 또는 워치로 정보를 전송하여, 사용자가 검출된 새로운 콘텐츠 항목에 관한 상세사항들을 보기 위해 귀로부터 전화를 제거할 필요가 없도록 한다)(1827).
일부 실시예들에서, 선택가능한 설명의 선택(도 19a 또는 도 19b 중 어느 하나에 도시된 사용자 인터페이스에서 제공된 사용자 입력)을 검출하는 것에 응답하여, 전자 디바이스는 식별된 애플리케이션으로 제시를 위해 콘텐츠 항목을 저장한다(1829). 선택가능한 설명은 사용자가 음성 통신을 듣고 있는 동안 (예컨대, 도 19a의 선택가능한 설명(1902) 위에서 탭핑함으로써) 또는 최근 통화들을 포함하는 사용자 인터페이스로부터 선택가능한 설명을 선택함으로써(예컨대, 도 19b의 선택가능한 설명(1901) 위에서 탭핑함으로써) 선택될 수 있다(1831). 선택에 응답하여, 콘텐츠 항목은 식별된 애플리케이션(예컨대, 추출된 콘텐츠 항목의 유형에 따라, 캘린더 애플리케이션 또는 연락처 애플리케이션)과 함께 저장된다. 예를 들어, 선택가능한 설명(1902 또는 1901) 중 어느 하나의 선택에 응답하여, 전자 디바이스는 새로운 이벤트 생성 사용자 인터페이스를 열고, 새로운 이벤트 생성 사용자 인터페이스를 음성 통신의 일부분으로부터 추출된 상세사항들로 채운다(예컨대, 도 19c에 도시된 사용자 인터페이스는 제목, 위치, 시작 시간, 종료 시간 등을 포함하도록 채워진다).
다른 예로서, 선택 가능한 설명(1903)의 선택에 응답하여, 전자 디바이스는 (예컨대, 도 19d 및 도 19e 각각의 새로운 연락처의 생성 또는 기존 연락처에 대한 새로운 연락처 상세사항들의 추가를 허용하기 위해) 연락처 애플리케이션에 대한 사용자 인터페이스를 열고, 사용자 인터페이스를 음성 통신의 일부분으로부터 추출된 상세사항들로 채운다(예컨대, 도 19d에 도시된 사용자 인터페이스는 이름, 성, 전화 번호들, 이메일 주소들 등을 포함하고, 도 19e에 도시된 사용자 인터페이스는 기존 연락처에 대한 새로운 휴대폰 번호를 포함한다).
일부 실시예들에서, 전자 디바이스는 또한 음성 통신 동안 언급되거나 논의된 물리적 위치들에 관한 정보를 검출/추출한다. 특히 그리고 도 18b를 다시 참조하면, 전자 디바이스는 음성 통신이 제1 물리적 위치에 관한 정보(예컨대, 지리적 위치에 대한 참조 또는 제1 지리적 위치에 도달하기 위해 제공되는 길 안내)를 포함한다고 결정한다(1833). 전자 디바이스는 또한 입력(예컨대, 입력)을 검출하고(1835), 입력을 검출하는 것에 응답하여, 전자 디바이스는 입력이 지리적 위치 데이터를 수용하는 애플리케이션을 열라는 요청에 대응하는지, 또는 입력이 전자 디바이스 상의 콘텐츠에 대해 검색하라는 요청(예컨대, 본 명세서에 논의되는 검색-활성화 제스처들 중 임의의 것)에 대응하는지 여부에 따라 동작(1837) 또는 동작(1839)을 수행한다.
입력이 지리적 위치 데이터를 수용하는 애플리케이션을 열라는 요청에 대응한다는 결정에 따라, 전자 디바이스는 위치 데이터를 수용할 수 있는 애플리케이션을 열고, 애플리케이션을 제 1 물리적 위치에 관한 정보(라이브 전화 통화 상에서 논의되는 레스토랑 이름 또는 그 레스토랑 이름을 사용하여 전자 디바이스에 의해 검색된 전화 번호와 같은, 음성 통신에 포함된 정보 또는 그에 기초하는 정보일 수 있음)로 채운다(1839). 예를 들어, 도 19f에 도시된 바와 같이, 애플리케이션은 지도 애플리케이션이고, 지도 애플리케이션을 제1 물리적 위치에 관한 정보로 채우는 것은 지도 애플리케이션 내에 디스플레이된 지도를 제1 물리적 위치에 대응하는 위치 식별자로 채우는 것을 포함한다(또는 도 19f에 도시된 바와 같이, 복수의 위치 식별자들이 음성 통신 동안 논의/추출된 각각의 물리적 위치에 대해 디스플레이된다).
입력이 검색 모드에 진입하라는 요청에 대응한다는 결정에 따라, 전자 디바이스는 검색 인터페이스를 제1 물리적 위치에 관한 정보(라이브 전화 통화 상에서 논의되는 레스토랑 이름 또는 그 레스토랑 이름을 사용하여 전자 디바이스에 의해 검색된 전화 번호와 같은, 음성 통신에 포함된 정보 또는 그에 기초하는 정보일 수 있음)로 채운다(1837). 예를 들어, 도 13b를 참조하여 상기 논의된 검색 인터페이스는 제1 물리적 위치에 관한 정보를 제안된 검색들(1150) 중 하나로서 포함하도록 채워질 수 있다(예컨대, 요청은 전화 애플리케이션을 통하여 수신된다).
일부 실시예들에서, 음성 통신은 다수의 다양한 콘텐츠 항목들(예컨대, 기존 연락처들에 대한 다수의 새로운 연락처들 또는 새로운 연락처 정보, 다수의 물리적 위치들, 및 새로운 또는 기존 이벤트들에 관한 다수의 상세사항들, 또는 이들의 조합들)을 설명하는 (단일 사용자로부터 또는 음성 통신 동안 말하는 양쪽 모두인 다수의 사용자들로부터의) 스피치를 포함할 수 있고, 전자 디바이스는 이러한 콘텐츠 항목들 각각이 음성 통신으로부터 추출됨을 보장하도록 구성된다. 예를 들어, 방법(1800)은 또한 전자 디바이스가 음성 통신의 제2 부분을 수신하게 하는 단계를 포함한다(예컨대, 제2 부분은 원격 디바이스의 원격 사용자 및 전자 디바이스의 사용자 중 하나 이상에 의해 제공된 스피치를 포함한다). 일부 실시예들에서, 전자 디바이스는, 원격 디바이스의 원격 사용자에 의해 제공된 스피치 및 전자 디바이스의 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 제2 콘텐츠 항목을 추출한다. 제2 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 전자 디바이스는 제2 콘텐츠 항목과 연관되는 제2 애플리케이션을 식별하고, 디스플레이 상에 제2 콘텐츠 항목의 제2 선택가능한 설명을 디스플레이한다(예컨대, 도 19a에 도시된 사용자 인터페이스는 하나 초과의 선택가능한 설명(1902)을 포함할 수 있고/있거나 도 19b에 도시된 사용자 인터페이스는, 다수의 콘텐츠 항목들이 각각의 연관된 음성 통신으로부터 추출된 경우 적용가능한 바와 같은, 하나 초과의 선택가능한 설명(1901, 1903, 또는 1905)을 포함할 수 있다). 제2 선택가능한 설명의 선택을 검출하는 것에 응답하여, 전자 디바이스는 (제1 콘텐츠 항목을 참조하여 상기 논의된 바와 같이) 식별된 제2 애플리케이션으로 제시를 위해 제2 콘텐츠 항목을 저장한다.
일부 실시예들에서, 선택가능한 설명 또는 제2 선택가능한 설명이 선택된 후에, 전자 디바이스는 최근 통화들을 포함하는 사용자 인터페이스 내에 각각의 선택가능한 설명을 디스플레이하는 것을 중지한다. 일부 실시예들에서, 각각의 선택가능한 설명은 또한, 선택될 때, 전자 디바이스로 하여금 각각의 선택가능한 설명을 디스플레이하는 것을 중지하게 하는 제거 어포던스(예컨대, "x")와 함께 디스플레이된다(도 19a 및 도 19b에 도시된 선택가능한 설명들에 대해 도시된 바와 같음).
도 18a 및 도 18b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법(2000))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 18a 및 도 18b와 관련하여 전술된 방법(1800)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(1800)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(2000))을 참조하여 본 명세서에 기술되는 동작들로 구현되거나 그를 포함한다. 추가적으로, 아래의 섹션 4: "구조화된 제안"에서 제공되는 상세사항들은 또한 방법(2000)과 함께 이용될 수 있다(예컨대, 메시지들 내에서 연락처들 및 이벤트들에 관한 정보를 검출하는 것에 관련된 섹션 4에서 논의되는 상세사항들은 또한 동일한 정보를 음성 통신들로부터 추출하는 데 사용될 수 있다). 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(1800)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
일부 실시예들에서, 상기 방법(1800) 및 아래의 방법(2000)을 참조하여 기술되는 기법들은 또한 음성 통신들로부터 추출될 수 있는 다른 유형의 콘텐츠를 검출하는 데 사용된다. 예를 들어, 전화 번호들은 (예컨대, 새로운 또는 기존 연락처들에 대해) 연락처 정보로서 저장하기 위해 또는 즉시 사용을 위해 추출되고 사용자에게 제시될 수 있다(예컨대, 사용자는 전화 통화를 하고 새로운 전화 번호를 포함하는 답변 메시지를 듣고, 메시지가 이러한 새로운 전화 번호를 포함함을 검출하는 것에 응답하여, 디바이스는 전화 번호를, 예컨대 도 21b에 도시된 것과 같은 사용자 인터페이스 상에, 제시하여, 사용자가 새로운 전화 번호로 신속하고 쉽게 전화할 수 있도록 한다).
방법들(1800, 2000)의 일부 실시예들에서, 디바이스가 새로운 콘텐츠(예컨대, 위치들, 전화 번호들, 연락처 정보들, 또는 그 밖의 다른 무엇)를 검출할 때마다 새로운 콘텐츠가 사용을 위해 이용가능하다는 명확한 표시를 사용자에게 제공하기 위해 햅틱 피드백이 제공된다.
도 20은 일부 실시예들에 따른, 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하고 애플리케이션을 물리적 위치에 관한 정보로 채우는 방법의 흐름도 표현이다. 도 19a 내지 도 19f, 도 21a 및 도 21b는 도 20의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2000)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2000)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2000)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2000)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2000)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(2000)은, 음성 통신들로부터 콘텐츠 항목들을 추출하고 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 이들을 사용자에게 제시하기 위한 직관적인 방식을 제공한다. 본 방법은 사용자로부터 요구되는 입력들의 개수를 감소시켜서(예컨대, 디바이스는 물리적 위치들에 대한 관련 정보를 자동으로 추출하고, 디바이스 상의 저장 및 사용을 위해 그 정보를 준비함), 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성하고 사용자들이 음성 통신들 상에서 논의되는 것에 기초하여 물리적 위치들에 관한 정보를 상기하는 것을 돕는다. 배터리-작동형 전자 디바이스들의 경우, 본 방법은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시키는 것을 돕는다.
도 20에 도시된 바와 같이, 디바이스는 음성 통신의 적어도 일부분을 수신하는데, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다(2001). 일부 실시예들에서, 음성 통신은 라이브 전화 통화, 라이브 비디오 통화(예컨대, 페이스타임 통화), 또는 녹음된 음성메일이다(2003). 음성 통신들의 예들에 관한 추가 상세사항들(및 그의 연관된 부분들)은 도 18a 및 도 18b를 참조하여 상기에 제공되어 있다. 일부 실시예들에서, 음성 통신의 일부분은 전자 디바이스의 사용자로부터 수신된 지시에 기초하여 식별된다(2005). 사용자로부터 수신된 지시들의 예들에 관한 추가 상세사항들은 도 18a 및 도 18b를 참조하여 상기에 제공되어 있다(예컨대, 지시는 사용자로부터의 구두 커맨드 또는 하드웨어 버튼의 선택에 대응할 수 있다).
일부 실시예들에서, 디바이스는 물리적 위치들에 관한 정보를 검출하기 위해 음성 통신의 일부분을 분석하고, 분석하는 것은, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 음성 통신을 출력하면서 수행된다(2007). 일부 실시예들에서, 오디오 시스템은 디바이스의 내부 스피커, 외부 헤드폰들, 외부 오디오 시스템, 예컨대 스피커들 또는 차량의 스테레오 시스템일 수 있다. 이러한 분석 동작(2007)에 관한 추가 정보 및 스피치-텍스트 프로세싱의 다른 예들은 상기에 제공되어 있다(그리고 이러한 기법들은 또한 물리적 위치들을 검출하는 것에 적용된다).
일부 실시예들에서, 전자 디바이스는 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정한다(2009). 일부 실시예들에서, 물리적 위치를 식별하는 스피치는 특정 관심 지점으로의 운전 길 안내를 논의하는 스피치, 레스토랑(또는 다른 관심 지점)의 이름을 언급하는 스피치 등을 포함한다. 일부 실시예들에서, 물리적 위치는 임의의 관심 지점(예컨대, 레스토랑, 집, 유원지 등)에 대응할 수 있고, 물리적 위치를 식별하는 스피치는, 거리 주소를 언급하는 스피치, 물리적 위치에 대한 위치 정보(GPS 좌표들, 위도/경도 등)를 언급하는 스피치, 및 지도 상에서 물리적 위치를 찾아내기 위해 (디바이스에 의해) 사용될 수 있는 정보를 제공하는 다른 관련된 스피치를 포함할 수 있다. 일부 실시예들에서, 물리적 위치는 또한 명명된 위치 또는 물리적으로 주소지정 가능한 위치로 지칭된다.
일부 실시예들에서, 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하는 것에 응답하여, 전자 디바이스는 물리적 위치에 관한 정보가 검출되었다는 표시를 제공한다(2011)(예컨대, 디바이스는 햅틱 피드백을 제공하고/하거나 선택을 위한 UI 객체, 예컨대 도 21a 및 도 21b에 각각 도시된 사용자 인터페이스 객체(2101 또는 2103)를 디스플레이한다). 일부 실시예들에서, 표시를 제공하는 것은, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 물리적 위치의 선택가능한 설명을 디스플레이하는 것(예컨대, 도 19b의 선택가능한 설명(1905)), 또는 음성 통신과 연관되는 사용자 인터페이스 내에 물리적 위치의 선택가능한 설명을 디스플레이하는 것(예컨대, 도 21a 및 도 21b 각각의 선택가능한 설명(2101, 2103)), 또는 그러한 사용자 인터페이스들 양쪽 모두 내에(예컨대, 음성 통신이 진행 중인 동안 음성 통신과 연관되는 사용자 인터페이스 내에 그리고 음성 통신이 끝난 후에 최근 통화들을 포함하는 사용자 인터페이스 내에) 물리적 위치의 선택가능한 설명을 디스플레이하는 것을 포함한다(2013). 일부 실시예들에서, 선택가능한 설명은 콘텐츠 항목이 음성 통신과 연관됨을 나타낸다(예컨대, 선택가능한 설명은, 도 19b에 도시된 바와 같이, 음성 통신을 위한 식별자 아래에 디스플레이되거나, 또는 선택가능한 설명은 (도 21a 및 도 21b에 도시된 바와 같이) 음성 통신과 연관된 사용자 인터페이스 내에 디스플레이된다).
일부 실시예들에서, 표시를 제공하는 것은, 전자 디바이스의 사용자에게 햅틱 피드백을 제공하는 것을 포함한다(2015).
일부 실시예들에서, 표시를 제공하는 것은, 전자 디바이스에 근접해 있는 상이한 전자 디바이스로 물리적 위치에 관한 정보를 전송하는 것을 포함한다(2017)(예컨대, 정보는 인근 랩톱 또는 워치에서의 제시를 위해 전송되어, 사용자가 검출된 새로운 콘텐츠 항목에 관한 상세사항들을 보기 위해 귀로부터 전화를 제거할 필요가 없도록 된다).
일부 실시예들에서, 전자 디바이스는 터치 감응형 표면을 통해 입력(예컨대, 입력은 (음성 통신의 종료 이후에 나중에 수신되는) 지리적 위치 데이터를 수용하는 애플리케이션을 열라는 요청에 대응하거나, 또는 입력은 음성 통신 동안 또는 그 후에 디스플레이되는 물리적 위치의 선택가능한 설명의 선택에 대응함)을 검출하고, 입력을 검출하는 것에 응답하여, 디바이스는 지리적 위치 데이터를 수용하는 애플리케이션을 열고 그 애플리케이션을 물리적 위치에 관한 정보로 채운다(2019).
일부 실시예들에서, 입력을 검출하는 것은, 최근 통화들을 포함하는 사용자 인터페이스가 디스플레이되는 동안 선택가능한 설명 위에서의 입력(예컨대, 도 19a의 선택가능한 설명(1905) 위에서의 선택 또는 탭)을 검출하는 것을 포함한다. 예를 들어, 도 19a의 선택가능한 설명(1905) 위에서의 접촉을 검출하는 것에 응답하여, 전자 디바이스는 지도 애플리케이션(또는 지도 객체를 디스플레이할 수 있는 애플리케이션, 예컨대 승차 공유 애플리케이션)을 열고, 지도 애플리케이션을 물리적 위치에 관한 정보(예컨대, 도 19f에 도시된 바와 같은, 물리적 위치를 식별하는 핀)로 채운다.
일부 실시예들에서, 입력을 검출하는 것은, 음성 통신과 연관되는 사용자 인터페이스가 디스플레이되는 동안 선택가능한 설명 위에서의 입력(예컨대, 도 21a 및 도 21b의 선택가능한 설명(2101 또는 2103) 위에서의 선택 또는 탭)을 검출하는 것을 포함한다. 예를 들어, 도 21a의 선택가능한 설명(2101) 위에서의 접촉을 검출하는 것에 응답하여, 전자 디바이스는 지도 애플리케이션(또는 지도 객체를 디스플레이할 수 있는 애플리케이션, 예컨대 승차 공유 애플리케이션)을 열고, 지도 애플리케이션을 물리적 위치에 관한 정보(예컨대, 도 19f에 도시된 바와 같은, 물리적 위치를 식별하는 핀)로 채운다. 다른 예로서, 선택가능한 설명(2103)(도 21b) 위에서의 접촉을 검출하는 것에 응답하여, 디바이스는 지도 애플리케이션(또는 물리적 목적지에 대한 경로 안내를 제공할 수 있는 애플리케이션)을 열고, 지도 애플리케이션을 물리적 위치에 관한 정보(예컨대, 도 19f에 도시된 바와 같은, 물리적 위치를 식별하는 핀, 및 음성 통신 동안 제공된 스피치에 기초하여 추출된 물리적 위치로의 길 안내)로 채운다.
일부 실시예들에서, 애플리케이션이 입력의 검출에 응답하여 채워지기 때문에, 채우는 것은 애플리케이션 내에서 임의의 추가 사용자 입력을 수신하기 전에 수행된다(예컨대, 지도 애플리케이션 내에서 임의의 사용자 입력을 요구하지 않고서 그리고 지도 애플리케이션이 열릴 때 도 19f에 도시된 지도 애플리케이션 내에 핀들이 채워진다). 이러한 방식으로, 사용자는 음성 통신 동안 스피치로부터 추출된 정보에만 기초하여 물리적 위치에 관한 정보를 제시받고, 사용자는 애플리케이션을 정보로 채우도록 하는 어떠한 여분의 입력도 제공하지 않는다(다시 말하면, 애플리케이션이 정보로 미리 채워진다).
일부 다른 실시예들에서, 검출된 지리적 위치는 사용자가 나중에 적절한 애플리케이션(예컨대, 지리적 위치 정보를 수용할 수 있는 애플리케이션)을 열 때마다 적절한 애플리케이션에 디스플레이하기 위해 저장되고, 따라서, 음성 통신 동안 사용자에게 어떠한 표시도 제공되지 않는다.
도 20에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법(1800))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 20과 관련하여 전술된 방법(2000)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2000)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법(1800))을 참조하여 본 명세서에 기술되는 동작들로 구현되거나 그에 의해 보완된다. 추가적으로, 아래의 섹션 4: "구조화된 제안"에서 제공되는 상세사항들은 또한 방법(2000)과 함께 이용될 수 있다(예컨대, 메시지들 내에서 연락처들 및 이벤트들에 관한 정보를 검출하는 것에 관련된 섹션 4에서 논의되는 상세사항들은 또한 동일한 정보를 음성 통신들로부터 추출하는 데 사용될 수 있다). 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2000)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 22a 및 도 22b는 일부 실시예들에 따른, 메시징 애플리케이션에서 사용하기 위한 물리적 위치들을 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 23a 내지 도 23o는 도 22a 및 도 22b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2200)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2200)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2200)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2200)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2200)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(2200)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상의 메시징 애플리케이션에서 사용하기 위한 물리적 위치들을 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은 메시징 애플리케이션에서 물리적 위치들에 관한 관련 정보를 추가하기 위한 사용자로부터의 입력들의 개수를 감소시켜서, 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 전자 디바이스들의 경우, 메시징 애플리케이션에서 사용하기 위한 물리적 위치들을 사전행동적으로 제안하는 것은 (예컨대, 사용자가 메시징 애플리케이션 내에 그것을 입력하기 전에 이러한 정보에 대해 목적없이 검색해야 할 때의 시간 및 에너지-소모 동작들을 절약함으로써) 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 22a에 도시된 바와 같이, 전자 디바이스는 디스플레이 상의 메시징 애플리케이션(예컨대, 데스크톱, 랩톱, 스마트 폰, 또는 스마트 워치 상의 이메일 또는 iMessage 애플리케이션)에서, 텍스트 입력 필드 및 대화 기록을 제시한다(2201). 일부 실시예들에서, 대화 기록은 하나 이상의 사용자들 사이에서 교환된 메시지들(예컨대, 이메일 메시지들, 텍스트 메시지들, 오디오 메시지들, 비디오 메시지들, 사진 메시지들 등)을 포함한다. 일부 실시예들에서, 대화 기록은 텍스트 입력 필드를 포함한다(예컨대, 도 23a에 도시된 바와 같이, 대화 기록(2301)은 새로운 이메일 응답을 작성하는 동안 사용자에 의해 타이핑된 텍스트를 포함한다). 일부 실시예들에서, 대화 기록 및 텍스트 입력 필드는 별개이다(예컨대, 도 23c에 도시된 바와 같이, 대화 기록(2303)은, 사용자가 새로운 메시지를 작성할 수 있는 별개의 텍스트 입력 필드(2305)의 실질적으로 위에 위치된다). 일부 실시예들(예컨대, 전자 디바이스가 디스플레이와 통신 상태에 있고 디스플레이가 데스크톱 또는 스마트 TV 디바이스와 같은 디바이스로부터 물리적으로 분리된 채로 유지되는 실시예들)에서, 제시하는 것은, 디스플레이가 제시하게 하는 것을 포함한다(예컨대, 디바이스는 디스플레이가 텍스트 입력 필드 및 대화 기록(및 아래에서 논의되는 다른 사용자 인터페이스 요소들)을 렌더링할 수 있도록 디스플레이에 정보를 제공한다).
메시징 애플리케이션이 디스플레이 상에 제시되는 동안, 전자 디바이스는 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보(예컨대, 주소, 또는 디바이스에 의해 결정되는 바와 같은 사용자의 현재 위치)라고 결정한다(2203). 일부 실시예들에서, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 것은, 대화 기록이 사용자의 현재 위치에 관한 질문을 포함함을 검출하기 위해 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 프로세싱하는 것을 포함한다(2205)(예컨대, 도 23a와 도 23b, 및 도 23c와 도 23d에 도시된 바와 같이, 제2 사용자가 "where are you"라고 사용자에게 질문하는 메시지를 전송한다). 일부 실시예들에서, 콘텐츠를 프로세싱하는 것은, 질문을 형성하는 하나 이상의 미리정의된 키워드들을 검출하기 위해 자연 언어 프로세싱 알고리즘을 적용하는 것을 포함한다. 일부 실시예들에서, 하나 이상의 키워드들은 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠에서 전자 디바이스에 의해 직접 검색될 수 있는 반면, 다른 실시예들에서, 하나 이상의 키워드들은 의미 분석을 수행하여 하나 이상의 키워드들에 대해 필적하는 문구들(예컨대, 짧은 의미 거리만큼 떨어져 있는 단어들)을 찾음으로써 검출되고, 일부 실시예들에서는, 이러한 기법들 양쪽 모두가 사용된다. 일부 실시예들에서, 질문은 사용자와는 별개인 제2 사용자로부터 수신되는 메시지 내에 포함된다(2209)(도 23a와 도 23b, 및 도 23c와 도 23d에 도시된 바와 같음).
일부 실시예들에서, 전자 디바이스는 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 분석하여, 분석된 콘텐츠(예컨대, 가장 최근에 수신된 메시지로부터의 콘텐츠)의 일부분에 적어도 부분적으로 기초하여, 제안된 물리적 위치를 결정한다(2211). 일부 실시예들에서, 제안된 물리적 위치는, 메시징 애플리케이션 이외의 애플리케이션에서 사용자가 최근에 본 위치에 대응한다(2213). (예컨대, 사용자는 "we should grab dinner at [최근에 본 주소 자동 삽입]"라고 타이핑하기 시작한다.) 예를 들어, 사용자는 이전에 (도 25a에 도시된 것과 같은) 검토-검색 애플리케이션을 사용하여 레스토랑들에 대해 검색하였고, 디바이스는 이어서 검토-검색 애플리케이션에서의 레스토랑들에 대한 그러한 검색에 기초하는 정보를 사용하여 제안된 물리적 위치를 식별한다.
일부 실시예들에서, 전자 디바이스는 디스플레이 상의 메시징 애플리케이션 내에서, 제안된 물리적 위치를 식별하는 선택가능한 사용자 인터페이스 요소를 제시한다(2215). 예를 들어, 메시징 애플리케이션은 가상 키보드를 포함하고, 선택가능한 사용자 인터페이스 요소는, 가상 키보드에 인접하게 그리고 그의 상부에 있는 제안 부분에서 디스플레이된다(2217). 도 23a에 도시된 바와 같이, 제안 부분(2307)은 선택가능한 사용자 인터페이스 요소를 포함하는데, 선택가능한 사용자 인터페이스 요소는, 선택될 때, (도 23b에 도시된 바와 같이) 디바이스로 하여금 텍스트 입력 필드에 사용자의 현재 위치를 포함하게 한다. 일부 실시예들에서, 2307에 도시된 선택가능한 UI 요소의 선택은 디바이스로 하여금 사용자의 현재 위치를 원격 사용자에게 새로운 메시지로 즉시 전송하게 한다.
이제 도 22b로 돌아가면, 일부 실시예들에서, 전자 디바이스는 선택가능한 사용자 인터페이스 요소의 선택을 수신한다(2219). 선택을 수신하는 것에 응답하여, 전자 디바이스는 텍스트 입력 필드에서 제안된 물리적 위치의 표현을 제시한다(2221). 일부 실시예들에서, 제안된 물리적 위치의 표현은 전자 디바이스의 현재 지리적 위치를 식별하는 정보를 포함한다(2223)(예컨대, 전자 디바이스의 위치 센서로부터, 현재 지리적 위치를 식별하는 GPS 정보가 인출되고, (도 23b 및 도 23d에 도시된 바와 같이) 그 정보는 이어서 이 표현 내에 제시된다). 도 23b 및 도 23d에 도시된 바와 같이, 일부 실시예들에서, 제안된 물리적 위치의 표현은 제안된 물리적 위치에 대한 식별자를 포함하는 지도 객체이다(2227).
일부 실시예들에서, 제안된 물리적 위치의 표현은 주소이다(2225). 예를 들어, 도 23e를 참조하면, 제안 부분(2307)에 도시된 선택가능한 사용자 인터페이스 요소의 선택을 검출하는 것에 응답하여, 디바이스는 제안 부분(2307)에 도시된 주소를 포함하도록 텍스트 입력 필드를 업데이트한다. 일부 실시예들에서, 주소는 사용자 자신의 주소들(집, 직장 등), (도 23g 및 도 23h에 도시된 바와 같은) 디바이스에 저장된 연락처들의 주소들, 전자 디바이스 상에서 사용자가 최근에 본 주소들(예컨대, 도 23f에 도시된 바와 같은, 일부 다른 애플리케이션 내에서 본 레스토랑 위치들), 이러한 또는 다른 대화 기록들에서 사용자에게 전송된 주소, 또는 다른 사용자들에 의해 (예컨대, 이메일, 소셜 네트워킹 애플리케이션 등을 통해) 사용자와 공유된 주소에 대응할 수 있다.
일부 실시예들에서, 사용자가 타이핑 중(즉, 사용자는, 예컨대 도 23e에 도시된 것과 같은 가상 키보드를 통해, 메시징 애플리케이션 내로 텍스트를 계속 입력하고 있음)이고 (예컨대, 사용자가 선택가능한 사용자 인터페이스 요소를 선택하지 않을 것이라는 것이 합리적으로 확실한, 2초, 3초, 4초와 같은 미리정의된 기간 이후에) 선택가능한 사용자 인터페이스 요소를 선택하지 않았다는 결정에 따라, 디바이스는 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지한다(2229). 일부 실시예들에서, 일단 사용자가 타이핑하기 시작하면, 디바이스는 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지한다.
일부 실시예들에서, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 것은, 메시징 애플리케이션의 텍스트 입력 부분에서 사용자로부터 수신되는 타이핑 입력들을 모니터링하는 것을 포함한다. 그러한 실시예들에서, 본 방법은, 타이핑 입력들을 모니터링하는 동안, 타이핑 입력들 중 임의의 것이 하나 이상의 트리거링 문구들에 매칭되는지 여부를 결정하는 단계 - 각각의 트리거링 문구는 각각의 콘텐츠 항목과의 연관성을 가짐 -; 타이핑 입력들의 시퀀스가 제1 트리거링 문구에 매칭된다는 결정에 따라, 디바이스 상에, 제1 트리거링 문구와 연관되는 제안된 콘텐츠 항목을 디스플레이하는 단계; 및
제안된 콘텐츠 항목의 선택을 검출하는 단계, 및 선택을 검출하는 단계에 응답하여, 제안된 콘텐츠 항목에 관한 정보를 메시징 애플리케이션의 텍스트-입력 부분 내에 디스플레이하는 단계를 추가로 포함한다. 일부 실시예들에서, 사용자가 선택가능한 사용자 인터페이스 요소를 선택하지 않을 것임을 나타내는 추가 입력을 사용자가 제공하였다는 결정에 따라(예컨대, 계속된 키스트로크들이 더 이상 트리거 문구에 매칭되지 않음), 전자 디바이스는 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지한다(2231).
일부 실시예들에서, 디바이스는 선택가능한 사용자 인터페이스 객체를 최초로 디스플레이한 이후로 미리결정된 기간(예컨대, 약 10초)이 경과되었다는 결정에 따라 선택가능한 사용자 인터페이스 객체를 제시하는 것을 중지한다.
일부 실시예들에서, 본 방법(2200)과 연관된 기법들은 또한 추가적인 유형의 애플리케이션들(메시징 애플리케이션들 이외의, 예컨대 문서-저작 애플리케이션들)을 통해 그리고 추가적인 객체 유형들(물리적 위치들에 더하여, 예컨대 연락처들 및 이벤트들)에 대해 이용가능하다. 예를 들어, 도 23i 및 도 23j에 도시된 바와 같이, 일부 실시예들은 또한 전자 디바이스들이 (도 22c 및 방법(2280)을 참조하여 아래에서 더욱 상세하게 논의되는) 이벤트들을 스케줄링하기 위한 이용가능성 윈도우들을 사전행동적으로 제안할 수 있게 한다. 추가적으로, 도 23k 내지 도 23j에 도시된 바와 같이, 일부 실시예들은 또한, 전자 디바이스들이 (디바이스 상에 저장된 연락처들에 대한 또는 사용자에 대한 전화 번호들과 같은) 연락처 정보를 사전행동적으로 제안하거나 또는 (예컨대, 도 23m에 도시된 바와 같이) 이전 대화들에 기초하는 적절한 응답들을 사전행동적으로 제안하거나 또는 (예컨대, 도 23o에 도시된 바와 같이) 적절한 참조 문서들을 사전행동적으로 제안할 수 있게 한다. 아래의 방법(2280)은 또한, 다른 유형의 애플리케이션들 및 추가적인 객체 유형들에 관한 일부 추가 상세사항들을 제공한다. 일부 실시예들에서, 방법(2200, 2280)의 다양한 태양들이 조합되고/되거나 교환되고/되거나 뒤바뀐다.
도 22a 및 도 22b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2280, 2900))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 22a 및 도 22b와 관련하여 전술된 방법(2200)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2200)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2280, 2900))의 하나 이상의 동작들 또는 특징들을 포함한다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2200)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 22c는 일부 실시예들에 따른, 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 23a 내지 도 23o는 도 22c의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2280)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2280)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2280)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2280)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2280)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(2280)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은, 연락처들, 위치들, 또는 이벤트들에 관한 정보를 찾아내며 애플리케이션에서 사용하기 위해 그 정보를 입력하기 위한 사용자들로부터 요구되는 입력들의 개수를 감소시켜서, 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 전자 디바이스들의 경우, 위치들, 이벤트들, 또는 연락처들에 관련된 정보를 사전행동적으로 제안하는 것은, (자동으로 정보를 상기시키고 즉각적인 사용을 위해 그것을 관련 시간들에 사용자들에게 제시함으로써) 전자 디바이스들에 대한 사용자 만족도를 개선하고, 전력을 절약하고, 배터리 충전들 사이의 시간을 증가시킨다.
도 22c에 도시된 바와 같이, 전자 디바이스는 디스플레이 상에서, 애플리케이션과 연관되는 텍스트 콘텐츠를 제시한다(2281). 일부 실시예들에서, 애플리케이션은 문서-승인 애플리케이션(예컨대, 메모 애플리케이션, 워드 프로세싱 애플리케이션 등), 또는 메시징 애플리케이션(예컨대, 이메일 또는 텍스트 메시징 애플리케이션), 또는 텍스트를 입력 수신 필드에 입력하기 위해 가상 키보드가 디스플레이되는 임의의 다른 애플리케이션이다.
일부 실시예들에서, 디바이스는, 텍스트 콘텐츠의 일부분이 (i) 위치(예컨대, 전자 디바이스의 위치 센서를 통해 이용가능한 현재 위치 정보), (ii) 연락처(예컨대, 전자 디바이스 상의 연락처 애플리케이션을 통해 이용가능한 정보), 또는 (iii) 이벤트(예컨대, 전자 디바이스 상의 캘린더 애플리케이션을 통해 이용가능한 정보)에 관련된다고(또는 텍스트 콘텐츠의 일부분이 그를 언급한다고) 결정한다(2283). 일부 실시예들에서, 텍스트 콘텐츠의 일부분은 (예컨대, 도 23a 내지 도 23o에 도시된 예들과 같은) 위치, 연락처, 또는 이벤트에 관한 정보로 가장 잘 완성되는 진술/질문이다. 일부 실시예들에서, 텍스트 콘텐츠의 일부분은 애플리케이션에서 가장 최근에 제시된 텍스트 콘텐츠(예컨대, 사용자에 의해 타이핑된 텍스트 콘텐츠 또는 원격 사용자로부터의 메시지에서 수신된 텍스트 콘텐츠)에 대응한다(2285). 예를 들어, 일부분은 메모 또는 메시징 앱에서 사용자에 의해 타이핑된 현재 텍스트이다(예컨대, 도 23a의 "Currently I'm at", 도 23e의 "My address is", 도 23h의 "John's address is", 도 23i의 "I'm free at", 도 23k의 "my phone number is", 도 23l의 "Call me at", 및 도 23m의 "what kind of neoplasm"). 달리 말하면, 텍스트 콘텐츠의 일부분은 애플리케이션 내의 입력 수신 필드(예컨대, 도 23c의 인스턴트 메시징 애플리케이션의 필드(2305), 또는 도 23a의 이메일 애플리케이션의 필드(2301))에서 전자 디바이스의 사용자에 의해 제공된 입력(즉, 타이핑 입력들의 시퀀스)이다(예컨대, 사용자는 가상 키보드에서 타이핑 입력들의 시퀀스를 제공하거나 또는 구술을 사용하여 텍스트를 입력 수신 필드에 추가함).
일부 실시예들에서, 텍스트 콘텐츠의 일부분은 대화 기록에서 일부 다른 사용자로부터의 가장 최근에 수신된 메시지이다. 예를 들어, 애플리케이션은 메시징 애플리케이션이고, 텍스트 콘텐츠의 일부분은 전자 디바이스와는 별개인 원격 디바이스의 원격 사용자로부터 메시징 애플리케이션에서 수신된 질문이다(예컨대, 도 23c의 "where are you?", 도 23f의 "where's the restaurant?", 도 23g의 "What's John's addr?", 도 23j의 "what time works for dinner?", 및 도 23o의 "Do you know about neoplasms?").
일부 실시예들에서, 텍스트 콘텐츠의 일부분이 (i) 위치(2289), (ii) 연락처(2291), 또는 (iii) 이벤트(2293)에 관련된다고 결정할 시에, 전자 디바이스는, (일부 실시예들에서, 서버로부터 어떠한 정보도 인출할 필요 없이) 전자 디바이스 상에서 이용가능한 적절한 콘텐츠 항목을 식별하도록, 그리고 애플리케이션에서 사용하기 위해 사용자에게 그 콘텐츠 항목을 제시하도록(예컨대, 질문에 응답하거나 또는 사용자 자신의 타이핑 입력들을 효율적으로 완성하도록) 진행한다. 이러한 방식으로, 사용자들은, 현재 애플리케이션을 떠나고, 적절한 콘텐츠에 대해 검색하고, 그 콘텐츠를 복사 또는 기억하고, 현재 애플리케이션으로 돌아가고, 이어서 그 콘텐츠를 현재 애플리케이션에 포함시킬 필요 없이, 애플리케이션들 내에 연락처들, 이벤트들, 및 위치들에 관한 정보를 신속하고 쉽게 포함시킬 수 있다(이에 의해 사용자가 애플리케이션들 내에 연락처들, 이벤트들, 및 위치들에 관한 정보를 포함시키기 위해 필요한 입력들의 개수를 감소시킨다).
보다 구체적으로는, (i)에 대해, 텍스트 콘텐츠의 일부분이 위치에 관련된다고 결정할 시에, 전자 디바이스는, 전자 디바이스 상의 위치 센서로부터 위치 정보를 획득하고 획득된 위치 정보를 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비한다(2289). 예를 들어, (도 23c에 도시된 바와 같이) 원격 사용자로부터 수신된 메시지 내의 문구 "Where are you?"를 포함하는 텍스트 콘텐츠의 일부분에 기초하여, 디바이스는 일부분이 위치에 관련된다고 결정하고, 디바이스는 이어서 디바이스 상의 GPS 센서로부터 정보를 획득하고 그 정보를 예측된 콘텐츠 항목으로서 제시하기 위해 준비한다(사용자의 현재 위치를 포함하는 지도 객체가 원격 사용자에게 전송되는 도 23d 참조). 다른 예로서, (도 23a에 도시된 바와 같이) 사용자가 새로운 이메일을 타이핑 중일 때의 문구 "I'm at"을 포함하는 텍스트 콘텐츠의 일부분에 기초하여, 디바이스는 일부분이 위치에 관련된다고 결정하고, 디바이스는 이어서 디바이스 상의 GPS 센서로부터 정보를 획득하고 그 정보를 예측된 콘텐츠 항목으로서 제시하기 위해 준비한다(사용자의 현재 위치를 포함하는 지도 객체가 사용자가 준비 중인 새로운 이메일 내에 포함되는 도 23b 참조). 추가적인 예들이 도 23e(예컨대, 디바이스는 사용자가 "My address is"를 타이핑하는 것에 기초하여 텍스트 콘텐츠의 일부분이 위치에 관련되는 정보를 포함한다고 결정함) 및 도 23f(예컨대, 디바이스는 사용자가 텍스트 "Where's the restaurant"를 포함하는 메시지를 수신하는 것에 기초하여 텍스트 콘텐츠의 일부분이 위치에 관련되는 정보를 포함한다고 결정함)에 도시되어 있다. 도 23f에 도시된 바와 같이, 일부 실시예들에서, 디바이스는 상이한 애플리케이션과의 사용자의 이전 상호작용들에 기초하여 위치 정보를 획득한다(예컨대, 사용자는 클라우드-소싱된 검토들을 제공하는 애플리케이션과 같은, 상이한 애플리케이션에서 레스토랑 애플리케이션들에 대해 검색하고, 따라서 위치 센서는 정보를 획득하는 데 사용되지 않는다). 2개의 상이한 애플리케이션들 사이에서 정보를 공유하는 것에 관한 추가 상세사항들은 방법들(2400, 2500, 2800)을 참조하여 아래에서 더욱 상세하게 논의되는데, 간결함을 위해 그 상세사항들이 여기서 반복되지 않는다.
(ii)에 대해, 텍스트 콘텐츠의 일부분이 연락처에 관련된다고 결정할 시에, 전자 디바이스는, 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 연락처 정보에 대한 검색을 수행하고, 검색을 통해 인출되는, 적어도 하나의 연락처와 연관된 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비한다(2291). 예를 들어, 텍스트 콘텐츠의 일부분은 "What's John's addr?"(도 23g), "John's address is"(도 23h) 또는 "My phone number is"(도 23k) 또는 "Call me at"(도 23l)이고, 디바이스는 연락처 애플리케이션과 함께 저장된 연락처 정보를 분석하여 그 일부분에 대해 응답하는 것으로 예측되는 연락처 정보를 인출하고, 그 인출된 연락처 정보를 예측된 콘텐츠 항목으로서 제공한다.
(iii)에 대해, 텍스트 콘텐츠의 일부분이 이벤트에 관련된다고 결정할 시에, 전자 디바이스는, 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 이벤트 정보에 대한 새로운 검색을 수행하고, 새로운 검색을 통해 인출되는, 적어도 하나의 이벤트에 적어도 부분적으로 기초하는 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비한다(2293). 일부 실시예들에서, 적어도 하나의 이벤트에 적어도 부분적으로 기초하는 정보는 이벤트 상세사항들(예컨대, 이벤트 시간, 지속기간, 위치) 또는 이벤트 상세사항들로부터 도출되는 정보(예컨대, 도 23i 및 도 23j에 도시된 바와 같은, 새로운 이벤트를 스케줄링하기 위한 사용자의 이용가능성)일 수 있다. 예를 들어, 텍스트 콘텐츠의 일부분은 "What conference room is the meeting in?" 또는 "What time does the conference start at?"이고, 디바이스는 캘린더 애플리케이션과 함께 저장된 이벤트들과 연관된 정보를 분석하여 그 질문에 응답하는 정보를 인출하고, 그 인출된 정보를 예측된 콘텐츠 항목들로서 제공한다.
상기 논의된 바와 같이, 전자 디바이스는, 애플리케이션 내에, 예측된 콘텐츠 항목을 포함하는 어포던스를 디스플레이한다(2294)(예컨대, "Add Current Location"에 대한 어포던스가 도 23a의 제안 부분(2307) 내에 도시되어 있고, "Send My Current Location"에 대한 어포던스가 도 23c의 제안 부분(2309) 내에 도시되어 있고, 그 외 다른 예들에 대한 어포던스들이 도 23e, 도 23f, 도 23g, 도 23h, 도 23i, 도 23j, 도 23k, 도 23l, 도 23m, 도 23n, 및 도 23o의 제안 부분들(2307 또는 2309) 내에 도시되어 있다). 전자 디바이스는 또한, 터치 감응형 표면을 통해, 어포던스의 선택을 검출하고(2295); 선택을 검출하는 것에 응답하여, 디바이스는 텍스트 콘텐츠에 인접하게 디스플레이 상에 예측된 콘텐츠 항목과 연관된 정보를 디스플레이한다(2297)(예컨대, "Add Current Location"에 대한 어포던스의 선택에 응답하여 사용자의 현재 위치를 갖는 지도 객체가 디스플레이된다(도 23b)).
일부 실시예들에서, 텍스트 콘텐츠의 일부분은, 텍스트 콘텐츠의 일부분을 포함하는 사용자 인터페이스 객체를 선택하는 사용자 입력에 응답하여 식별된다(2287). 예를 들어, 애플리케이션은 메시징 애플리케이션이고, 사용자 인터페이스 객체는 메시징 애플리케이션 내에 디스플레이되는 대화에서의 메시징 풍선이다. 이러한 방식으로, 사용자들은 애플리케이션에서 디스플레이되는 특정 부분들에 대한 예측된 콘텐츠 항목들을 인출할 수 있어서, 그들이 특정 부분에 응답하는 것을 잊어버린 경우, 그 부분과 연관된 사용자 인터페이스 객체를 선택하여 그 특정 부분에 대한 예측된 콘텐츠 항목들을 쉽게 볼 수 있도록 한다. 특정 예로서, 도 23m을 참조하면, 텍스트 콘텐츠의 일부분은 초기에 가장 최근에 디스플레이된 텍스트 콘텐츠(예컨대, "What kind of neoplasm?")이고, 따라서, 제안 부분(2309)은 그 일부분에 응답하는 텍스트 제안들(예컨대, "benign" 및 "malignant")에 대한 어포던스들을 포함한다. 디바이스는 이어서 제2 사용자 인터페이스 객체(예컨대, 가장 최근에 디스플레이된 텍스트 콘텐츠 이전에 수신되었던 "btw, where are you?"의 텍스트 콘텐츠를 포함하는 제2 메시지 풍선)의 선택(예컨대, 도 23m의 입력(2350))을 검출한다. 선택을 검출하는 것에 응답하여, 디바이스는, 예측된 콘텐츠 항목을 갖는 어포던스를 디스플레이하는 것을 중지하고, 제2 사용자 인터페이스 객체와 연관된 텍스트 콘텐츠가 위치, 연락처, 또는 이벤트에 관련된다고 결정하고(이 예에서, 디바이스는 "where are you?"가 위치에 관련된다고 결정함), 결정하는 것에 따라, 디바이스는 애플리케이션 내에 새로운 예측된 콘텐츠 항목(예컨대, 도 23n의 제안 부분(2309) 내의 "Send my current location"을 포함하는 어포던스)을 디스플레이한다(2299).
전술한 단락에서 언급된 바와 같이, 일부 실시예들에서, 디바이스는 또한 텍스트 콘텐츠의 일부분이 전자 디바이스 상에서 이용가능한 (연락처들, 위치들, 및 이벤트들에 더하여) 다른 유형의 정보에 관련되는지 여부를 결정할 수 있다. 예를 들어, 디바이스는, 일부 다른 사용자로부터 수신된 또는 사용자가 저작 중인 문서에서, 이메일들의 교환에서 사용자에 의해 논의되었던 정보, 또는 다른 지식 근원들로부터의 정보에 관련되는 질문(예컨대, what kind of neoplasm)을 검출할 수 있다. 추가적으로, 일부 실시예들에서, 전자 디바이스는 문서들이 애플리케이션에서 텍스트 콘텐츠의 특정 부분에 응답한다고 결정한다(예컨대, 도 23o에 도시된 바와 같이, "Do you know about neoplasms?"의 질문에 응답하는 것으로 2개의 상이한 문서들이 제안되어 있다). 일부 실시예들에서, 2개의 상이한 문서들 중 어느 하나의 선택에 응답하여, 디바이스는 각각의 문서를 열고 사용자가 애플리케이션으로 돌아가기 전에 문서를 검토하도록 할 수 있다.
일부 실시예들에서, 제안된 부분들 내에 디스플레이되며 예측된 콘텐츠 항목들을 포함하는 어포던스들은 애플리케이션 내의 가상 키보드에 인접하게(예컨대, 그의 상부에) 디스플레이된다. 예를 들어, 도 23a에 도시된 바와 같이, "Add Current Location"에 대한 어포던스는 가상 키보드의 상부에 있는 제안 부분(2307) 내에 디스플레이된다.
일부 실시예들에서, 예측된 콘텐츠 항목과 연관되며 텍스트 콘텐츠에 인접하게 디스플레이되는 정보는 입력 수신 필드 내에 디스플레이되고, 입력 수신 필드는 가상 키보드에서 수신된 타이핑 입력들을 디스플레이하는 필드이다(예컨대, 필드(2305)가 가상 키보드의 상부에 있는 도 23d의 입력 수신 필드(2305)에 대해 도시된 바와 같이, 예컨대 메시징 애플리케이션에서, 가상 키보드의 상부에 디스플레이되는 입력 수신 필드 또는 메모 애플리케이션에 도시된 것과 같은 문서).
일부 실시예들에서, 결정 동작(2283)은 연락처, 이벤트, 및/또는 위치에 관련된다고 알려져 있는 저장된 패턴들을 검출하기 위해 텍스트 콘텐츠가 애플리케이션에 의해 수신될 때(예컨대, 사용자가 타이핑할 때 또는 메시지들이 애플리케이션에 의해 수신될 때) 텍스트 콘텐츠를 파싱하는 것을 포함한다. 일부 실시예들에서, 저장된 패턴들의 검출을 수행하기 위해 신경 회로망이 훈련되고/되거나 유한 상태 문법이 검출을 위해 사용되고, 이어서 검출 이후에, 전자 디바이스는 (예컨대, 아래의 섹션 9에서 논의되는, 하나 이상의 예측 모델들을 사용하여) 정보를 시스템-레벨 서비스로 전달하여 적절한 예측된 콘텐츠 항목들을 인출한다.
도 22c에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2200, 2900))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 22c와 관련하여 전술된 방법(2280)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2280)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2200, 2900))을 참조하여 본 명세서에 기술되는 동작들 중 하나 이상을 사용하거나 또는 그의 하나 이상의 특성들을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2280)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 24a 및 도 24b는 일부 실시예들에 따른, 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우는 방법의 흐름도 표현이다. 도 25a 내지 도 25j는 도 24a 및 도 24b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2400)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2400)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2400)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2400)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2400)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(2400)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우기 위한 직관적인 방식을 제공한다. 본 방법은 제1 애플리케이션으로부터의 애플리케이션을 상이한 제2 애플리케이션에서 사용하기 위한 사용자로부터의 입력들의 개수를 감소시켜서, 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 전자 디바이스들의 경우, 애플리케이션을 상이한 애플리케이션에서 사용자가 이전에 봤던 정보로 사전행동적으로 채우는 것은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 24a에 도시된 바와 같이, 제1 애플리케이션을 디스플레이하는 동안, 전자 디바이스는 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득한다(2401). 예를 들어, 제1 애플리케이션은 터치 감응형 디스플레이 상에 현재 디스플레이되는 포어그라운드(foreground) 애플리케이션이다(예컨대, 제1 애플리케이션은 도 25a에 도시된 것과 같은, 크라우드-소싱된 검토들을 제공하는 애플리케이션이다). 일부 실시예들에서, 획득하는 것은 제1 애플리케이션이 위치 데이터에 관한 정보를 전자 디바이스의 운영 체제 컴포넌트로 전송하는 것을 포함하거나, 또는 획득하는 것은 정보를 획득하기 위해 접근성 특징부를 사용하는 것을 포함한다. 정보를 획득하기 위한 접근성 특징부의 사용에 관한 상세사항들은 상기에 제공되어 있다(예컨대, 방법(1800)을 참조하여 상기에 제공된 설명들, 특히, 동작들(1807, 1809)을 참조하여 상기에 제공된 것들 참조).
일부 실시예들에서, 전자 디바이스는 제1 애플리케이션을 종료한다(2403)(예컨대, 사용자는 제1 애플리케이션의 종료 및 홈 화면의 보기를 요청하기 위해 홈 하드웨어 버튼을 탭핑하거나, 또는 사용자는 제1 애플리케이션의 종료 및 애플리케이션-스위칭 사용자 인터페이스의 보기를 요청하기 위해 홈 하드웨어 버튼을 더블 탭핑한다). 제1 애플리케이션을 종료한 후에, 전자 디바이스는 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신한다(2405). 일부 실시예들에서, 제2 애플리케이션을 열라는 요청을 수신하는 것은, 제1 애플리케이션을 종료한 후에, 제2 애플리케이션에 대한 어포던스 위에서의 입력을 검출하는 것을 포함한다(2407)(다시 말하면, 요청은 제1 애플리케이션 내의 링크를 클릭하는 것에 대응하지 않는다). 예를 들어, 사용자는 홈 화면으로부터 제2 애플리케이션을 선택한다(예컨대, 사용자는 도 25b의 홈 화면 상에 디스플레이된 승차 공유 애플리케이션에 대한 아이콘(어포던스) 위를 탭핑한다). 일부 실시예들에서, 홈 화면은 전자 디바이스 상에서 이용가능한 애플리케이션들을 호출하기 위한 아이콘들을 포함하는 운영 체제의 시스템-레벨 컴포넌트이다.
다른 예로서, 사용자는 앱-스위칭 사용자 인터페이스로부터 제2 애플리케이션을 선택한다(예컨대, 사용자는 도 25c의 앱-스위칭 사용자 인터페이스 내에 포함되는 승차 공유 애플리케이션의 표현을 탭핑한다). 보다 구체적으로, 이러한 다른 예에서, 입력을 검출하는 것은, 물리적 홈 버튼(예컨대, 홈(204))에서의 더블 탭을 검출하는 것, 더블 탭을 검출하는 것에 응답하여, 애플리케이션-스위칭 사용자 인터페이스를 디스플레이하는 것, 및 애플리케이션-스위칭 사용자 인터페이스 내로부터 어포던스의 선택을 검출하는 것을 포함한다(2411).
동작(2405)과 관련한 하나의 추가 예로서, 사용자는, 선택될 때, 디바이스로 하여금 제2 애플리케이션을 열게 하는 사용자 인터페이스 객체(예컨대, 도 25b 및 도 25c의 어포던스(2503))를 선택한다. 일부 실시예들에서, 요청은 제1 애플리케이션에서 어떠한 입력도 수신하지 않고서 수신된다(예컨대, 요청은 제1 애플리케이션 내의 링크 또는 버튼을 클릭하는 것을 포함하지 않는다).
요청을 수신하는 것에 응답하여, 전자 디바이스는 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있는지 여부를 결정한다(2413). 일부 실시예들에서, 이러한 결정 동작(2413)은, (i) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 이를 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것; (ii) 제2 애플리케이션이 지도 상에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 것; (iii) 제2 애플리케이션이 지리적 위치 정보를 사용하여 경로 안내를 가능하게 할 수 있다고 결정하는 것; 및 (iv) 제2 애플리케이션이 지리적 위치 정보를 사용하여 운송 서비스들을 찾아내고 이를 제공할 수 있다고 결정하는 것 중 하나 이상을 포함한다(2415). 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다고 결정하는 것은, 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 이를 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것을 포함하고, 입력 수신 필드는, 제2 애플리케이션 내에 디스플레이되는 지도 내의 검색을 허용하는 검색 상자이다. 예를 들어, 제2 애플리케이션은 그러한 입력 수신 필드를 포함하는 승차 공유 애플리케이션이거나(도 25e에 도시된 바와 같이, 예시적인 승차 공유 애플리케이션은 디스플레이된 지도 내의 검색을 허용하는 입력 수신 필드(2507)를 포함함), 또는 제2 애플리케이션은 (도 25f에 도시된 바와 같이) 그러한 입력 수신 필드를 또한 포함하는 지도 애플리케이션이다.
이제 도 24b로 돌아가면, 일부 실시예들에서, 요청을 수신하는 것에 응답하여, 전자 디바이스는, 사용자에 대한 애플리케이션 사용 이력에 기초하여, 제2 애플리케이션이 제1 애플리케이션과 연관되는지(예컨대, 제1 애플리케이션을 연 후에 임계 횟수로 열렸는지) 여부를 결정하고, 또한 (상기 논의된 바와 같이) 제2 애플리케이션이 위치 데이터를 수용하며 이를 프로세싱할 수 있다고 결정한다. 다시 말하면, 전자 디바이스는 일부 실시예들에서, 제2 애플리케이션이 위치 데이터를 수용하는 필드를 갖고 있고, 사용자가 제1 애플리케이션을 연 후에 제2 애플리케이션을 종종 연 것에 의해서 제1 애플리케이션과 제2 애플리케이션이 연결되어 있다고 결정한다. 일부 실시예들에서, 제2 애플리케이션을 제시하기 전에, 전자 디바이스는 제1 물리적 위치를 식별하는 정보에의 액세스를 제2 애플리케이션에 제공하고, 액세스가 제공되기 전에, 제2 애플리케이션은 제1 물리적 위치를 식별하는 정보에 액세스할 수 없었다(2417). 예를 들어, 제2 애플리케이션은 이전에 사용자가 제1 애플리케이션에서 보고 있었던 것에 관한 정보에 액세스할 수 없었고, 제2 애플리케이션에서 입력 수신 필드를 채우기 위해 제1 지리적 위치를 식별하는 정보를 사용하는 제한된 목적을 위한 액세스만이 현재 제공되고 있다. 이러한 방식으로, 디바이스가, 사용자가 종종 제1 애플리케이션과 제2 애플리케이션을 함께 사용하는 것을 알기 때문에, 디바이스는 (제1 앱과 제2 앱 사이의 연결을 확립하는 데 사용되는 그러한 입력들 이외에) 사용자로부터 어떠한 입력도 요구하지 않고서 텍스트 입력 필드들을 사전행동적으로 채울 수 있다.
일부 실시예들에서, 요청을 수신하는 것에 응답하여 그리고 (동작들(2413, 2415)을 참조하여 상기 논의된) 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정에 따라, 전자 디바이스는 제2 애플리케이션을 제시하고, 제2 애플리케이션을 제시하는 것은, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보로 제2 애플리케이션을 채우는 것을 포함한다. 일부 실시예들에서, 제2 애플리케이션을 채우는 것은, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 것을 포함한다(2421). 예를 들어, 도 25d에 도시된 바와 같이, 사용자 인터페이스 객체(2505)는 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보(예컨대, 도 25a에 도시된 바와 같이, 제1 애플리케이션에서 사용자가 본 레스토랑에 대한 주소)를 포함한다. 일부 실시예들에서, 사용자 인터페이스 객체(2505)는 레스토랑의 이름을 포함할 수 있다(예컨대, 주소에 더하여 또는 그 대신에 "Gary Danko", 또는 UI 객체(2505)는 레스토랑의 위치에 관한 다른 관련 정보를 포함할 수 있다). 일부 실시예들에서, 사용자 인터페이스 객체는 제1 물리적 위치가 제1 애플리케이션에서 최근에 보여졌다는 것을 사용자에게 알려주는 텍스트 설명을 포함한다(2423)(예컨대, 도 25d에 도시된 바와 같이, 제1 애플리케이션과 연관되는 아이콘이 사용자 인터페이스 객체(2505) 내에 포함된다).
일부 실시예들에서, 사용자 인터페이스 객체는 제2 애플리케이션 내에 디스플레이된 지도(예컨대, 도 25d에 도시된 지도)이고, 제2 애플리케이션을 채우는 것은, 제1 물리적 위치의 식별자를 포함하도록 지도를 채우는 것을 포함한다(2425). 일부 실시예들에서, 전자 디바이스는, 제1 물리적 위치의 이름, 제1 물리적 위치에 대한 전화 번호, 제1 물리적 위치에 대한 주소, 또는 제1 물리적 위치를 식별하는 (그리고 그에 관한 검색을 수행하는 것을 허용하는) 일부 다른 정보를 사용하여 특정 지리적 위치를 찾고, 그 특정 지리적 위치가 제2 애플리케이션 내에 채워진다. 일부 실시예들에서, 제2 애플리케이션에는 가상 키보드가 제시되고, 사용자 인터페이스 객체는 가상 키보드의 상부에 디스플레이된다(2427)(예컨대, 도 25d에 도시된 바와 같이, 사용자 인터페이스 객체(2505)는 가상 키보드의 상부에 디스플레이된다).
일부 실시예들에서, 정보를 획득하는 것은 제2 물리적 위치에 관한 정보를 획득하는 것을 포함하고, 사용자 인터페이스 객체를 디스플레이하는 것은, 제2 물리적 위치에 관한 정보와 함께 사용자 인터페이스 객체를 디스플레이하는 것을 포함한다(2429). (예컨대, 지도는 제1 및 제2 물리적 위치들 양쪽 모두에 대한 식별자들을 포함함) 및/또는 어포던스는 제1 및 제2 물리적 위치들에 관한 정보를 포함한다. 일부 실시예들에서, 요청을 수신하는 것(예컨대, 동작(2405))은 제1 또는 제2 물리적 위치들 중 하나의 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열라는 요청을 수신하는 것을 포함한다(예컨대, 도 25g 및 도 25h에 도시된 것과 같은, 사용자 인터페이스 객체(2503)가 도시되고, 사용자는 제1 애플리케이션에서 이전에 봤던 물리적 위치들 중 어느 하나를 선택할 수 있다).
일부 실시예들에서, 지도 애플리케이션 내의 사용자의 검색이 또한 물리적 위치들(예컨대, 상기 논의된 제1 및 제2 물리적 위치들)에 관한 정보를 획득하는 데 사용될 수 있다. 도 25f에 도시된 바와 같이, 사용자는 위치에 대해 검색하고 결과들(2511A, 2511B, 2511C, 2511D)을 비롯한 다수의 검색 결과들을 수신할 수 있다. 일부 실시예들에서, 사용자는 결과들 중 하나, 예컨대 도 25f에 도시된 바와 같은 2511A를 선택할 수 있고, 그 위치는 이어서 지도 상에 하이라이트된다. 검색을 수행한 후에, 사용자는 검색 결과들의 일부였던 물리적 위치들을 이용하기 위한 옵션들을 제시받을 수 있다(예컨대, 도 25g에 도시된 바와 같이, 사용자 인터페이스 객체(2505)는 이러한 위치들 중 어느 하나로 차를 타고 가기 위해 물리적 위치들 중 적어도 2개에 기초하는 정보를 사용하기 위한 옵션들을 제시받는다). 일부 실시예들에서, 도 25g의 사용자 인터페이스 객체(2505)는 또한 (도 25h에 도시된 바와 같은) 애플리케이션-스위칭 사용자 인터페이스를 통해 이용가능하다. 일부 실시예들에서, (도 25g 또는 도 25h의 앱-스위칭 또는 홈 화면으로부터) 사용자 인터페이스 객체(2505)에 도시된 물리적 위치들 중 하나의 물리적 위치의 선택을 수신하는 것에 응답하여, 사용자는 적절한 애플리케이션(예컨대, 도 25i의 승차 공유 애플리케이션)으로 이동되고, 그 애플리케이션은 선택된 물리적 위치에 기초하는 정보로 채워진다(예컨대, 사용자 인터페이스 객체(2505)가 도 25i에 도시되어 있고 주소를 포함한다).
위치 데이터의 공유가 상기 방법(2400)을 설명하는 데에 있어서의 주된 예로서 사용되지만, 상기 논의된 동일한 방법 및 기법들은 또한 2개의 상이한 애플리케이션들 사이에서의 다른 유형의 데이터의 공유에도 적용된다. 예를 들어, 소셜 네트워킹 애플리케이션들(예컨대, 페이스북)과 소셜 공유 애플리케이션들(예컨대, 트위터) 사이에서 검색 질의들을 공유하는 것이 또한 방법(2400)을 참조하여 전술된 기법들을 사용함으로써 가능화된다. 예를 들어, 사용자가 페이스북에서 이름을 검색한 후에, 사용자는 트위터에서 그 동일한 이름을 또한 검색하기 위한 제안을 제공받는다. 다른 예로서, 다가오는 모임들에 대한 참석자 목록들이 캘린더 애플리케이션과 이메일 애플리케이션 사이에서 공유될 수 있어서, 사용자가 캘린더 애플리케이션에서 다가오는 모임을 보았고 이어서 그들이 이메일 애플리케이션을 사용하는 것으로 스위칭하고 그들이 "작성(compose)" 버튼을 두드리는 경우, 새로운 이메일에 대한 수신자 목록은 다가오는 모임에 대한 참석자들의 목록을 포함하도록 채워지게 된다.
도 24a 및 도 24b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2600, 2700))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 24a 및 도 24b와 관련하여 전술된 방법(2400)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2400)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2600, 2700))을 참조하여 본 명세서에 기술되는 동작들을 포함하거나 또는 그의 하나 이상의 특성들을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2400)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 26a 및 도 26b는 일부 실시예들에 따른, 제1 애플리케이션에서 사용자가 이전에 봤던 정보를 제2 애플리케이션에서 사용하기 위해 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 25a 내지 도 25j는 도 26a 및 도 26b의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2600)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2600)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2600)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2600)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2600)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(2600)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 제1 애플리케이션에서 사용자가 이전에 봤던 정보를 제2 애플리케이션에서 사용하기 위해 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은 사용자들에게 유용한 정보를 상기시킴으로써, 사용자들이 그 정보를 인출하기 위해 다수의 입력들을 수행할 필요 없이, 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 전자 디바이스들의 경우, 제1 애플리케이션에서 사용자가 이전에 봤던 정보를 제2 애플리케이션에서 사용하기 위해 사전행동적으로 제안하는 것은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 26a에 도시된 바와 같이, 전자 디바이스는 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득한다(2601). 동작(2401)을 참조하여 전술된 상세사항들은 동작(2601)에도 또한 적용된다. 전자 디바이스는 제1 입력을 검출한다(2603). 일부 실시예들에서, 제1 입력은 애플리케이션-스위칭 사용자 인터페이스를 열라는 요청에 대응한다(2605)(예컨대, 제1 입력은 전자 디바이스의 물리적 홈 버튼 상의 더블 탭이다). 일부 실시예들에서, 제1 입력은 전자 디바이스의 홈 화면을 열라는 요청에 대응한다(2607). (예컨대, 제1 입력은 전자 디바이스의 물리적 홈 버튼 상의 단일 탭이다). 일부 실시예들에서, 제1 입력은, 디바이스로 하여금 애플리케이션들을 적어도 부분적으로 종료하거나 스위칭하게 하는 입력이다.
제1 입력을 검출하는 것에 응답하여, 전자 디바이스는 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별한다(2609). 일부 실시예들에서, 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하는 것은, (i) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 이를 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것; (ii) 제2 애플리케이션이 지도 상에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 것; (iii) 제2 애플리케이션이 지리적 위치 정보를 사용하여 경로 안내를 가능하게 할 수 있다고 결정하는 것; 및 (iv) 제2 애플리케이션이 지리적 위치 정보를 사용하여 운송 서비스들을 찾아내고 이를 제공할 수 있다고 결정하는 것 중 하나 이상을 포함한다(2611). 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다고 식별하는 것은, 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 이를 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것을 포함하고, 입력 수신 필드는, 제2 애플리케이션 내에 디스플레이되는 지도 내의 검색을 허용하는 검색 상자이다.
제1 입력을 검출하는 것에 응답하여, (제2 애플리케이션을 식별하는 것에 더하여) 전자 디바이스는 디스플레이의 적어도 일부분 위에서, 제1 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열기 위한 제안으로, 제1 애플리케이션과는 별개인 어포던스를 제시한다(2613). 예를 들어, 제1 입력이 홈 화면을 열라는 요청에 대응하는 경우, 전자 디바이스는 홈 화면의 일부분 위에 제시한다(2617)(예컨대, 도 25b 및 도 25g에 도시된 바와 같이, 어포던스(2505)가 홈 화면의 상부 부분 위에 디스플레이된다). 다른 예로서, 제1 입력이 애플리케이션-스위칭 사용자 인터페이스를 열라는 요청에 대응하는 경우, 전자 디바이스는 애플리케이션-스위칭 사용자 인터페이스 내에 어포던스를 제시한다(2615)(예컨대, 도 25h의 어포던스(2505)에 대해 도시된 바와 같이, 어포던스는 전자 디바이스 상에서 실행 중인 애플리케이션의 표현들 아래에 위치되는 디스플레이의 영역에 제시된다). 일부 실시예들에서, 제안은 제2 애플리케이션과 연관된 유형에 특정한 텍스트 설명을 포함한다(2619)(예컨대, 제1 물리적 위치를 식별하는 정보를 사용하여 제2 애플리케이션에서 수행될 액션의 설명 또는 제2 애플리케이션 내에서 검색을 수행하는 것의 설명, 예컨대, 당신은 위치 X로 차를 타고 가기를 원합니까? 대 당신은 주소 X를 찾기를 원합니까?). 일부 실시예들에서, 제2 애플리케이션과 연관된 유형은 제2 애플리케이션을 통해 이용가능한 기능들(예컨대, 제2 애플리케이션이 어떻게 위치 정보를 사용하는지 그리고 제2 애플리케이션의 위치 정보 사용에 기초하여 어떤 기능들이 이용가능한지)에 기초하여 결정된다.
이제 도 25b로 돌아가면, 전자 디바이스는 어포던스에서 제2 입력을 검출한다(2621). 어포던스에서의 제2 입력을 검출하는 것에 응답하여, 전자 디바이스는 제2 애플리케이션을 열고, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하도록 제2 애플리케이션을 채운다(2623). 동작들(2627, 2629, 2631)은 방법(2400)을 참조하여 상기 논의된 동작들(2423, 2425, 2427)에 각각 대응하고, 상기 논의들은 방법(2600)에도 또한 적용된다(간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다).
방법(2400)과 비교하면, 방법(2600)은, 사용자에게 제1 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열라는 제안을 제공하기 전에 제2 애플리케이션을 열라는 특정 요청을 사용자로부터 수신하지 않는다. 이러한 방식으로, 방법들(2400, 2600) 양쪽 모두와 연관된 동작들(및 이러한 방법들 각각으로부터의 일부 프로세싱 단계들을 사용하는 그의 조합들)을 행함으로써, 전자 디바이스는, 사용자가 지리적 위치 정보를 수용할 수 있는 애플리케이션을 열기 전 또는 후에 위치 데이터를 예측적으로 사용하는 것을 허용하는 효율적인 사용자 경험을 제공할 수 있다. 추가적으로, (방법(2600)에서의) 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정은 심지어 제2 애플리케이션을 열기 전에 수행되고, 이러한 방식으로, 애플리케이션-스위칭 사용자 인터페이스는 앱이 위치 데이터를 수용할 수 있다는 것이 알려져 있는 경우 이전에 본 위치 정보로 앱을 여는 것만을 제안한다. 간결함을 위해, 방법(2400)에 관한 일부 상세사항들이 방법(2600)에 대해 여기서 반복되지 않았지만, (제1 및 제2 애플리케이션들이 위치 데이터를 직접 공유할 수 있다는 것과 같이) 그러한 상세사항들은 여전히 방법(2600)에 적용가능하다.
도 26a 및 도 26b에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2400, 2700))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 26a 및 도 26b와 관련하여 전술된 방법(2600)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2600)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2400, 2700))을 참조하여 본 명세서에 기술되는 동작들을 사용하거나 또는 동작들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2600)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 27은 일부 실시예들에 따른, 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 28은 도 27의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2700)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2700)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2700)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2700)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2700)에서의 일부 동작들은 선택적으로 조합되고/되거나 일부 동작들의 순서는 선택적으로 변경된다.
후술되는 바와 같이, 방법(2700)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은 경로 안내를 위해 물리적 위치를 사용하기 위해 더 적은 입력들을 요구함으로써 (또는 전혀 입력을 요구하지 않음으로써) 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 전자 디바이스들의 경우, 차량에서 경로 안내를 위한 목적지로서 사용하기 위한 물리적 위치를 사전행동적으로 제안하는 것은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 27에 도시된 바와 같이, 전자 디바이스는 전자 디바이스 상에서 실행 중인 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득한다(2701). 전자 디바이스는 사용자가 차량에 탔다고 결정한다(2703). 일부 실시예들에서, 사용자가 차량에 탔다고 결정하는 것은, 전자 디바이스가 차량과의 통신 링크를 확립했음을 검출하는 것을 포함한다(2705). 다른 실시예들에서, 사용자가 차량에 탔다고 결정하는 것은, 사용자가 차량에 대한 저장된 위치의 미리결정된 거리 내에 있음을 검출하여, 그들이 심지어 차량에 타기 전에 제1 지리적 위치를 경로 안내를 위한 목적지로서 사용하는 것에 관해 사용자에게 프롬프트하도록 하는 것을 포함할 수 있다. 일부 실시예들에서, 방법(1400)을 참조하여 상기 논의된 다른 결정들 중 임의의 것이 또한 사용자가 차량에 탔음을 규명하는 데 이용될 수 있다.
사용자가 차량에 탔다고 결정하는 것에 응답하여, 전자 디바이스는 사용자에게 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 프롬프트를 (예컨대, 도 28에 도시된 사용자 인터페이스 객체(2801)와 같은, 디바이스 상의 사용자 인터페이스 객체에서, 또는 Siri로부터의 프롬프트를 통해, 또는 양쪽 모두로) 제공한다(2707). 프롬프트를 제공하는 것에 응답하여, 전자 디바이스는 사용자로부터 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 지시를 수신한다(2709).
이어서, 전자 디바이스는 제1 물리적 위치로의 경로 안내를 가능하게 한다(2711). 일부 실시예들에서, 경로 안내를 가능하게 하는 것은, 전자 디바이스의 디스플레이를 통해 경로 안내를 제공하는 것(2713)을 포함한다. 일부 실시예들에서, 경로 안내를 가능하게 하는 것은, 제1 물리적 위치를 식별하는 정보를 차량으로 전송하는 것(2715)을 포함한다. 일부 실시예들에서, 경로 안내를 가능하게 하는 것은, 전자 디바이스와 통신 상태에 있는 오디오 시스템(예컨대, 차량의 스피커들 또는 디바이스 자신의 내부 스피커들)을 통해 경로 안내를 제공하는 것(2717)을 포함한다. 일부 실시예들에서, 사용자가 경로 안내를 정확하게 따르는 것을 보장하기 위해 동작들(2713, 2715, 2717) 중 2개 이상이 수행된다.
일부 실시예들에서, 전자 디바이스는, 메시지(음성메일, 텍스트, 이메일, 또는 다른 소셜 미디어 메시지)가 전자 디바이스에 의해 수신되었음을 검출하는데, 그 메시지가 제2 물리적 위치를 식별하는 정보를 포함함을 검출하는 것을 포함한다(2719)(일부 실시예들에서, 방법들(1800, 2000)을 참조하여 상기 논의된 기법들 중 하나 이상이 검출을 수행하는 데 이용된다). 일부 실시예들에서, 메시지가 제2 물리적 위치를 식별하는 정보를 포함함을 검출하는 것은, 전자 디바이스 상에서 이용가능한 가상 어시스턴트가, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 사용자에게 메시지를 읽어 주는 동안(예컨대, Siri가 디바이스의 스피커들을 통해 또는 차량의 오디오 시스템을 통해 메시지를 읽어 주는 동안) 검출을 수행하는 것을 포함한다.
일부 실시예들에서, 검출하는 것에 응답하여, 전자 디바이스는 사용자에게 제2 물리적 위치를 경로 안내를 위한 새로운 목적지로서 사용하라는 새로운 프롬프트를 제공한다(2723)(예컨대, 제2 물리적 위치는 새로운 모임 장소, 예컨대 사용자가 운전 중인 동안 변경되었던 레스토랑 위치에 대응할 수 있는 반면, 다른 실시예들에서, 제2 물리적 위치는 사용자가 제1 물리적 위치에 도달한 후에까지 식별되지 않는다). 일부 실시예들에서, 사용자로부터 제2 물리적 위치를 새로운 목적지로서 사용하라는 지시를 수신하는 것에 응답하여, 전자 디바이스는 (예컨대, 동작들(2711, 2713, 2715, 2717)을 참조하여 상기 논의된 가능화 기법들 중 하나 이상을 사용하여) 제2 물리적 위치로의 경로 안내를 가능하게 한다(2725).
도 27에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2400, 2600))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 27과 관련하여 전술된 방법(2700)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2700)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2400, 2600))을 참조하여 본 명세서에 기술되는 동작들을 사용하거나 또는 동작들의 하나 이상의 특성들을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2700)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
도 29는 일부 실시예들에 따른, 붙여넣기 액션을 사전행동적으로 제안하는 방법의 흐름도 표현이다. 도 30a 내지 도 30d는 도 29의 방법들 및/또는 프로세스들을 예시하기 위해 사용된다. 후속하는 예들 중 일부가 (터치 감응형 표면과 디스플레이가 조합된) 터치 감응형 디스플레이 상의 입력들을 참조하여 주어질 것이지만, 일부 실시예들에서, 디바이스는 도 1d에 도시된 바와 같이 디스플레이(194)와 별개인 터치 감응형 표면(195) 상의 입력들을 검출한다.
일부 실시예들에서, 방법(2900)은 전자 디바이스(예컨대, 도 1e의 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D 중 어느 하나에 따라 구성된, 도 1a의 휴대용 다기능 디바이스(100)) 및/또는 전자 디바이스의 하나 이상의 컴포넌트들(예컨대, I/O 서브시스템(106), 운영 체제(126) 등)에 의해 수행된다. 일부 실시예들에서, 방법(2900)은, 비일시적인 컴퓨터 판독가능 저장 매체에 저장되며 디바이스의 하나 이상의 프로세서들, 예컨대 디바이스(100)(도 1a)의 하나 이상의 프로세서들(122)에 의해 실행되는 명령어들에 의해 통제된다. 설명의 용이함을 위해, 하기는 디바이스(100)에 의해 수행되는 바와 같은 방법(2900)을 기술한다. 일부 실시예들에서, 도 1a를 참조하면, 방법(2900)의 동작들은, 적어도 부분적으로, 사전행동적 모듈(예컨대, 사전행동적 모듈(163)) 및 그의 컴포넌트들, 접촉/모션 모듈(예컨대, 접촉/모션 모듈(130)), 그래픽 모듈(예컨대, 그래픽 모듈(132)), 및 터치 감응형 디스플레이(예컨대, 터치 감응형 디스플레이 시스템(112))에 의해 수행되거나 또는 그를 사용한다. 방법(2900)의 일부 동작들이 선택적으로 조합되고/되거나 일부 동작들의 순서가 선택적으로 변경된다.
후술되는 바와 같이, 방법(2900)은 터치 감응형 디스플레이를 갖는 전자 디바이스 상에서 붙여넣기 액션을 사전행동적으로 제안하기 위한 직관적인 방식을 제공한다. 본 방법은 붙여넣기 액션들을 수행하기 위해 사용자로부터 요구되는 입력들을 감소시켜서, 이에 의해 보다 효율적인 인간-기계 인터페이스를 생성한다. 배터리-작동형 전자 디바이스들의 경우, 붙여넣기 액션을 사전행동적으로 제안하는 것은 전력을 절약하고 배터리 충전들 사이의 시간을 증가시킨다.
도 29에 도시된 바와 같이, 전자 디바이스는 제1 애플리케이션에서 콘텐츠를 제시한다(2901)(예컨대, 도 30a에 도시된 바와 같이, 디바이스는, "check out big time band, they are really good!"이라고 적혀 있는 원격 사용자로부터의 메시지를 포함하는, 메시징 애플리케이션에 대응하는 콘텐츠를 제시한다). 일부 실시예들에서, 전자 디바이스는 콘텐츠의 적어도 일부분을 복사하라는 요청을 수신한다(2903)(예컨대, 사용자는 텍스트 "big time band"를 복사한다). 일부 실시예들에서, 콘텐츠의 일부분을 복사하라는 요청이 전혀 수신되지 않는다(다시 말하면, 사용자는 콘텐츠 중 임의의 것을 복사하라고 요청하지 않고서 제1 애플리케이션에서 콘텐츠를 단지 본다).
전자 디바이스는, 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하는데, 제2 애플리케이션은 입력 수신 필드(예컨대, 도 30c의 입력 수신 필드(3011))를 포함한다(2905). 예를 들어, 도 30b에 도시된 바와 같이, 사용자는 제2 애플리케이션(예컨대, 도 30b에 도시된 예에서 브라우저 애플리케이션)에 대한 아이콘 위에서의 입력(예컨대, 접촉(3003))을 제공하는데, 입력은 제2 애플리케이션을 열라는 요청에 대응한다. 도 30c에 도시된 바와 같이, 요청을 수신하는 것에 응답하여, 전자 디바이스는 입력 수신 필드(예컨대, 도 30c의 입력 수신 필드(3011))를 갖는 제2 애플리케이션을 제시한다(2907).
일부 실시예들에서, 전자 디바이스는 입력 수신 필드를 콘텐츠의 일부분을 수용할 수 있는 필드로서 식별한다(2909). 일부 실시예들에서, 식별하는 것은 입력 수신 필드의 선택(예컨대, 사용자가 도 30c의 입력 수신 필드(3011) 내를 탭핑함)을 검출하는 것에 응답하여 수행된다(2911). 달리 말하면, 사용자는 제1 입력 수신 필드 내에 포커스를 두고, 전자 디바이스는 이어서 제1 입력 수신 필드가 콘텐츠의 사전행동적으로 복사된 일부분을 수용할 수 있는지 여부를 결정한다.
일부 실시예들에서, 입력 수신 필드에서 임의의 사용자 입력을 수신하기 전에, 전자 디바이스는 사용자가 콘텐츠의 적어도 일부분을 입력 수신 필드 내에 붙여넣을 수 있게 하기 위한 선택가능한 사용자 인터페이스 객체(또는 도 30c의 제안 부분(3007) 내에 도시된 것들과 같은, 하나 초과의 선택가능한 사용자 인터페이스 객체)를 제공한다(2913). 예를 들어, 제2 애플리케이션 내의 가상 키보드의 실질적으로 상부에 디스플레이되는 제안 부분(3007)은 콘텐츠의 일부분에 기초하는 2개의 제안된 항목들(예컨대, "big time band" 및 "big time band videos")로 채워진다. 선택가능한 사용자 인터페이스 객체의 선택(예컨대, 도 30c의 입력(3009))을 검출하는 것에 응답하여, 전자 디바이스는 콘텐츠의 일부분을 입력 수신 필드 내에 붙여넣는다(2915)(예컨대, 도 30d에 도시된 바와 같이, "big time band videos"가 입력 수신 필드(3011) 내에 붙여넣어진다). 이러한 사전행동적 붙여넣기 기능을 제공함으로써, 사용자들은 제2 애플리케이션을 떠나고, 제1 애플리케이션을 다시 열고, 제1 애플리케이션으로부터 일부분을 복사하고, 제2 애플리케이션을 다시 열고, 이어서 제2 애플리케이션에서 붙여넣기 액션을 수행할 필요가 없다. 대신에, 사용자는, 사용자가 붙여넣고 싶어하는 콘텐츠의 일부분과 연관된 선택가능한 사용자 인터페이스 객체를 간단히 선택함으로써, 동일한 붙여넣기 기능을 수행하기 위한 상당한 수의 여분의 입력들을 덜어주어서, 전자 디바이스에 대한 보다 효율적이고 에너지 절약적인 사용자 인터페이스들을 생성한다.
일부 실시예들에서, 콘텐츠의 일부분은 이미지, 텍스트 콘텐츠, 또는 텍스트 콘텐츠 및 이미지에 대응한다(2915). 이러한 방식으로, 전자 디바이스는 제2 애플리케이션에 의해 수용될 수 있는 데이터에 따라, 다양한 콘텐츠 유형들에 대한 붙여넣기 액션들을 사전행동적으로 제안할 수 있다.
일부 실시예들에서, 선택가능한 사용자 인터페이스 객체는, 콘텐츠의 일부분이 제1 애플리케이션에서 최근에 보여졌다는 표시와 함께 디스플레이된다(예컨대, 도 30c의 제안 부분(3007)은 "you recently viewed a message related to 'big time band'"와 같은 텍스트 설명을 포함한다). 이러한 방식으로, 사용자는 붙여넣기 제안이 이루어지는 이유에 대한 명확한 표시를 제공받는다.
일부 실시예들에서, 사용자 인터페이스 객체는 또한, 제1 애플리케이션에서 보여졌던 콘텐츠에 기초하는 액션을 수행하기 위한 옵션을 사용자에게 제공하는 애플리케이션-스위칭 사용자 인터페이스 또는 홈 화면의 일부분 위에 제시될 수 있다. 일부 실시예들에서, 이러한 사용자 인터페이스 객체는 제2 애플리케이션을 열라는 요청 이전에 제시되고(동작(2905)), 제1 애플리케이션 위에, 홈 화면 위에, 또는 애플리케이션-스위칭 사용자 인터페이스 위에 제시될 수 있다. 도 30b에 사용자 인터페이스 객체(3005)에 대한 일례가 도시된다. 예시적인 사용자 인터페이스 객체(3005)는 사용자가 제1 애플리케이션에서 제시되었던 텍스트를 사용하여 검색을 수행할 수 있게 한다(예컨대, "big time band"에 대한 시스템-범위 검색(예컨대, 스포트라이트 검색(Spotlight Search))을 수행하거나, 또는 특정 애플리케이션(예컨대, 사파리(Safari))을 열고 그러한 검색을 수행할 수 있게 한다).
메시징 애플리케이션 및 브라우저 애플리케이션이 상기 주된 예들로서 사용되지만, 많은 다른 유형의 애플리케이션들이 방법(2900)과 연관된 기법들로부터 이익을 얻는다. 예를 들어, 제1 애플리케이션은 사진 탐색 애플리케이션일 수 있고, 제2 애플리케이션은 메시징 애플리케이션일 수 있다(예컨대, 메시징 애플리케이션에서 제시되는 사전행동적 붙여넣기 제안들은 사진 탐색 애플리케이션에서 사용자가 본 사진들에 대응하도록 된다).
도 29에서의 동작들이 기술된 특정 순서는 단지 일례이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서임을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 본 명세서에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 또한, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2200, 2900))과 관련하여 본 명세서에 기술된 다른 프로세스들의 상세사항들이 도 29와 관련하여 전술된 방법(2900)과 유사한 방식으로 또한 적용가능하다는 것에 주목해야 한다. 예를 들어, 방법(2900)을 참조하여 전술된 동작들은 선택적으로, 본 명세서에 기술된 다른 방법들(예컨대, 방법들(2200, 2900))을 참조하여 본 명세서에 기술되는 동작들을 사용하거나 또는 동작들의 특성들 중 하나 이상을 갖는다. 일부 실시예들에서, 섹션 1 내지 섹션 11로부터의 임의의 관련 상세사항들은 방법(2900)과 함께 임의의 적합한 목적을 위해 이용될 수 있다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다.
물리적 위치들에 관한 정보를 제안하는 것에 관한 추가 상세사항들이 또한 아래에서 제공되고, 방법들(2200, 2280, 2900, 2400, 2600, 2700)을 보완하는 데 사용될 수 있다. 일부 실시예들에서, 방법들(2200, 2280, 2900, 2400, 2600, 2700)(또는 본 명세서에 기술된 임의의 다른 방법)은 또한, 웹 브라우징 애플리케이션(예컨대, 미국 캘리포니아주 쿠퍼티노 소재의 애플 인크로부터의 사파리)에서 사용자가 본 위치들, (예컨대, 페이스트보드(pasteboard)로) 사용자에 의해 복사되었던 주소들, 다가오는 캘린더 이벤트들과 연관되는 위치들(예컨대, 이벤트가 1시간, 30분 등과 같은 미리결정된 기간 내에 발생하도록 스케줄링되는 경우, 그 이벤트와 연관된 위치가 또한 승차 공유 또는 다른 애플리케이션에서 사용자에게 용이한 제안 및 사용을 위해 이용가능하게 될 수 있음), 및 전자 디바이스 상의 가상 어시스턴트(예컨대, 애플 인크의 Siri, 예컨대 사용자가 인근에 있는 레스토랑들에 대해 Siri에게 질문할 때, 그러한 레스토랑들에 관한 정보가 다른 애플리케이션들에 의한 사용을 위해 또는 사용자가 다른 애플리케이션들에서 사용하기 위한 제안들로서 이용가능하게 될 수 있음)와의 상호작용들에서 사용자에 의해 논의되는 위치들로부터 물리적 위치들(또는 다른 유형의 콘텐츠)에 관한 정보를 획득한다.
일부 실시예들에서, 위치들은 그 위치들에 관련된 임의의 이전 사용자 상호작용들 없이 다른 애플리케이션들에 의한 사용을 위해 또는 사용자에 의한 사용을 위한 제안들로서 이용가능하게 된다. 예를 들어, 특정 위치가 다가오는 캘린더 이벤트와 연관되는 경우, 사용자가 다가오는 캘린더 이벤트 또는 특정 위치를 최근에 살펴보지 않았더라도, 그 특정 위치는 승차 공유 애플리케이션에서 사용을 위해 사전행동적으로 제안될 수 있다.
일부 실시예들에서, (예컨대, 본 명세서에 논의되는 기법들 중 임의의 것을 사용하여 이용가능하게 되는 위치들에 대한) 위치 제안들은 전자 디바이스(예컨대, 디바이스(100))의 다양한 애플리케이션들 및 컴포넌트들 전체에 걸쳐 제공된다. 예를 들어, 위치 제안들은, 일부 실시예들에서, 하기 내로부터 이용가능하게 된다:
Figure pat00034
예컨대, 도 25d의 사용자 인터페이스 객체(2505)를 참조하여 논의된 바와 같은 가상 키보드(퀵타입 바(QuickType bar)로도 지칭됨)의 상부의 제안 부분;
Figure pat00035
예컨대, 도 25c의 사용자 인터페이스 객체(2503)를 참조하여 논의된 바와 같은 애플리케이션-스위칭 사용자 인터페이스;
Figure pat00036
요구되는 임의의 사용자 액션이 없는, 주 화면 상의, 지도 애플리케이션;
Figure pat00037
(예컨대, 사용자가 홈 화면의 제1 페이지 위에서 실질적으로 좌우 방향으로 스와이프하는 것에 응답하여 이용가능하게 되는 홈-좌측 인터페이스 내에 보여지는 것과 같은) 지도 위젯 - 일부 실시예들에서, 증가하는 세기로 사용자가 (즉) 지도 위젯 위에서 제스처를 수행하는 것은, 지도 위젯 내에서 제안된 위치들의 디스플레이를 야기함 -;
Figure pat00038
(예컨대, 방법(2700)에 대해 논의된 바와 같이) 요구되는 임의의 사용자 액션이 없는, 주 화면 상의, 카플레이(CarPlay) 지도 애플리케이션;
Figure pat00039
(예컨대, 도 11b의 그것과 같은, 검색 인터페이스 내의 위치에 대응하는 검색 질의 제안을 보여주기 위한) 검색 인터페이스; 및
Figure pat00040
디바이스(100)의 가상 어시스턴트 컴포넌트(예컨대, "navigate me there" 또는 "call this place"와 같은 사용자로부터의 텍스트 또는 구두 질문에 응답하여, 가상 어시스턴트는 본 명세서에 논의되는 기법들 중 임의의 것에 따라 결정되는 제안된 위치들에 기초하여 "there" 및 "this"에 대한 참조들을 명확화할 수 있음).
일부 실시예들에서, 위치들을 가상 어시스턴트 애플리케이션에 의한 사용을 위해 이용가능하게 하는 것을 참조하면, 디바이스(100)는 사용자가 포어그라운드 애플리케이션에서 현재 보고 있는 데이터에 기초하여 "navigate me there" 또는 "call this place"와 같은 질문들에 응답할 수 있다. 일부 실시예들에서, 가상 어시스턴트에 제기되는 질문들에 응답하기 위해 서버로 제출되는 임의의 요청들은 프라이버시-보호 방식으로 수행된다. 예를 들어, "navigate me there"를 해결하고 그에 응답할 때, 가상 어시스턴트와 연관된 서버로 요청이 전송되고, 임의의 다른 사용자 식별 정보 없이 그리고 위치 데이터를 명백하게 광고하지 않고서, 위치가 현재 앱에서 이용가능하다는 표시만이 서버로 제공된다. 일부 실시예들에서, 서버는 커맨드/질문을 해석하고 그에 응답하고, 디바이스(100)에게 적절한 위치(예컨대, 포어그라운드 위치에서 사용자가 본 위치 또는 일부 다른 적절한 위치, 예컨대 다가오는 캘린더 이벤트에 대한 위치)로의 내비게이션을 시작하라고 지시한다.
일부 실시예들에서, 사용자가 텍스트 콘텐츠를 복사하는 경우, 디바이스(100)는 자동으로 (즉, 그렇게 하라는 사용자로부터의 어떤 명백한 지시 없이) 복사된 텍스트 콘텐츠가 위치 정보(예컨대, 주소 또는 레스토랑 이름과 같이 주소를 인출하는 데 사용될 수 있는 일부 다른 정보)를 포함하는지 여부를 결정한다. 복사된 텍스트 콘텐츠가 위치 정보를 포함한다는 결정에 따라, 디바이스(100)는, 위치 정보를 디스플레이 및 사용할 수 있는 다른 시스템 컴포넌트들(예컨대, 많은 다른 것들 중에서, 퀵타입 바 및 애플리케이션-스위칭 사용자 인터페이스와 같은, 상기에 제공된 예들)에 의한 사용을 위해 주소를 광고한다. 예를 들어, 사용자가 주소를 갖는 텍스트 메시지를 수신하고, 사용자는 이어서 그 주소를 복사하고, 입력(예컨대, 애플리케이션-스위칭 사용자 인터페이스를 가져오기 위해 홈 버튼 상의 더블 탭들)을 제공하고, 입력에 응답하여, 디바이스(100)는 사용자 인터페이스 객체, 예컨대 "Get directions to <주소> in Maps"라고 적혀 있는 배너(banner)(예컨대, 상기 논의된 사용자 인터페이스(2503)) 또는 위치가 애플리케이션에서 사용하기 위해 이용가능하다는 일부 다른 적절한 지시 문구를 디스플레이한다.
일부 실시예들에서, (예컨대, 퀵타입 바 내에서, 애플리케이션-스위칭 사용자 인터페이스 내에서 등) 사용자에 의한 사용을 위해 제안되는 위치 정보는, 그 위치 정보를 사용하고자 하는 애플리케이션의 유형에 따라 다르다. 예를 들어, 사용자가 크라우드-소싱된 검토 애플리케이션(예컨대, 옐프(Yelp))에서 소정 위치를 보고 사용자가 이어서 승차 공유 애플리케이션(예컨대, 우버(Uber))으로 내비게이팅하는 경우, 사용자는 그들이 이전에 보고 있었던 위치에 대응하는 전체 주소를 알 수 있다. 그러나, 사용자가 대신에 날씨 애플리케이션으로 내비게이팅하는 경우, 사용자는 완전한 주소 대신에, 그들이 이전에 보고 있었던 위치에 대한 시(city) 및 주(state) 내에서만 제시될 수 있는데, 이는 날씨 애플리케이션이 시 및 주 정보만을 필요로 하고 완전한 주소들을 필요로 하지 않기 때문이다. 일부 실시예들에서, 애플리케이션들은 위치 정보가 제공되어야 하는 세밀성(granularity)의 레벨을 특정할 수 있고, 제안되는 위치 정보는 이어서 그에 따라서 (예컨대, 승차 공유 애플리케이션의 경우 세밀성의 제1 레벨에서 그리고 날씨 애플리케이션의 경우 세밀성의 제2 레벨에서) 제공된다.
일부 실시예들에서, 제안된 위치의 사용자 선택에 응답하여 삽입되는 위치 정보는 트리거링 문구에 의존한다. 예를 들어, 사용자가 크라우드-소싱된 검토 애플리케이션에서 위치를 보고 이후에 메시징 애플리케이션으로 스위칭하여 "let's meet at"이라고 타이핑하기 시작하는 경우, 디바이스는 사용자가 크라우드-소싱된 검토 애플리케이션에서 이전에 보고 있었던 위치를 (예컨대, 도 23f의 사용자 인터페이스 객체(2309) 내에) 디스플레이할 수 있다. 일부 실시예들에서, 사용자가 제안된 위치를 선택하는 경우(예컨대, 사용자 인터페이스 객체(2309) 상에서 탭핑하는 경우), 디바이스는 레스토랑 이름 및 레스토랑에 대한 주소 양쪽 모두를 삽입할 수 있다(그리고 또한, 메뉴, 전화 번호 등으로의 링크와 같은, 다른 관련 정보를 삽입할 수 있다). 일부 실시예들에서, 사용자가 "the address is"를 타이핑한 경우, 제안의 사용자 선택에 응답하여, (트리거 문구 "the address is"가 주소만이 필요함을 나타내기 때문에, 이름 또는 다른 상세사항들 대신에) 주소만이 삽입될 수 있다. 일부 실시예들에서, 디바이스(100)는, 세밀성의 다양한 레벨들에서 이러한 정보를 선택적으로 제공하기 위해, 제안을 위해 이용가능한 특정 위치의 하나 초과의 표현을 유지한다. 예를 들어, 사용자가 크라우드-소싱된 검토 애플리케이션 내로부터 주소를 복사하는 경우, 디바이스(100)는 복사된 주소를 유지할 수 있고, (예컨대, 전화 번호, 레스토랑 이름, 메뉴로의 링크 등을 비롯한) 크라우드-소싱 검토 애플리케이션으로부터 이용가능한 다른 정보를 추가적으로 저장할 수 있다.
일부 실시예들에서, 디바이스(100)(또는 컴포넌트, 예컨대 도 1a의 사전행동적 모듈)는, 특정 이벤트 또는 그의 연관된 위치와의 임의의 사용자 상호작용을 수신하지 않고서도, 캘린더 이벤트들을 사전행동적으로 모니터링하고, 다가오는 이벤트들(예컨대, 시작 시간이 30분, 1시간, 또는 1.5시간과 같은, 미리결정된 시간 내에 있는 이벤트들)과 연관되는 위치들을 제안한다. 일부 실시예들에서, 미리결정된 시간을 조정하기 위해 트래픽 조건들이 고려된다.
일부 실시예들에서, 애플리케이션이 (예컨대, 도 25c의 사용자 인터페이스 객체(2503)에서 Gary Danko에 대한 위치를 사용하도록 제안되는 승차 공유 애플리케이션과 같은, 애플리케이션-스위칭 사용자 인터페이스에서) 위치 정보를 제안받을 때, 그 애플리케이션은 애플리케이션을 식별하는 것을 돕는 다양한 컨텍스트 정보/휴리스틱에 기초하여(예컨대, 애플리케이션 사용 패턴들, 하루 중 시간, 요일, 애플리케이션 설치의 최신성 등에 기초하여, 그리고 보다 상세사항들은 섹션 8을 참조하여 아래에 제공됨) 선택된다. 일부 실시예들에서, 각각의 애플리케이션이 얼마나 최근에 사용되었는지가, 애플리케이션을 식별하기 위해 이용되는 추가적인 요인이다(예컨대, 사용자가 최근에 저녁식사하러 갔었고 거기에 가기 위해 승차 공유 애플리케이션을 사용하였던 경우, 디바이스(100)는 사용자가 약 1시간 후에 집으로 돌아가려고 함을 결정할 수 있고, 승차 공유 애플리케이션이 매우 최근에 사용되었기 때문에 승차 공유 애플리케이션을 제안할 것이다).
전술된 바와 같이, 방법들(2200, 2280, 2900, 2400, 2600, 2700) 중 임의의 방법(또는 본 명세서에 기술된 임의의 다른 방법)은 물리적 위치들에 관한 정보를 식별, 저장, 및 제공하는 것과 함께 상기 상세사항들을 이용할 수 있다.
실시예의 추가 설명
아래의 섹션 1 내지 섹션 11에 제공되는 추가 설명들은 상기에 제공되는 것들을 보완하는 추가 상세사항들을 제공한다. 일부 상황들 또는 실시예들에서, 전술된 방법들(예컨대, 방법들(600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2280, 2400, 2600, 2700, 2900)) 중 임의의 방법은, 그 방법들 중 임의의 방법의 동작을 개선 또는 개량하는 데 적절한 바와 같은, 섹션 1 내지 섹션 11을 참조하여 아래에 제공된 상세사항들 중 일부를 사용할 수 있다. 당업자는 아래의 섹션 1 내지 섹션 11에서의 설명들이 (예컨대, 도 1a 내지 도 30d를 참조하여) 본 명세서에 제공된 개시내용들을 보완하는 많은 방식들을 이해할 것이다.
섹션 1: 모바일 디바이스의 동적 조정
이 섹션 "모바일 디바이스의 동적 조정"에서의 내용은, 일부 실시예들에 따른, 사용자 활동, 피어 이벤트 데이터, 시스템 데이터, 투표자(voter) 피드백, 시스템 이벤트들의 적응적 예측, 및/또는 열적 조건들에 기초하여 모바일 디바이스를 동적으로 조정하는 것에 관한 것이고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어 그리고 아래에서 더욱 상세하게 기술되는 바와 같이, 이 섹션은 애플리케이션들이 하루 중 언제 사용/호출될지를 예측하는 것을 기술하고, 또한 애플리케이션이 가까운 미래에 사용자에 의해 호출될 가능성이 있는지 여부를 결정하기 위해 사용 통계치들을 체크하는 것을 기술하는데, 이는 예컨대, 방법(600)의 동작들(604, 608) 및 방법(800)의 동작(808)에 관하여 본 명세서에 제공된 개시내용들을 보완한다. 다른 예로서, 섹션 1은 속성과 연관된 이벤트가 하루 중 어떤 시간에 발생할 가능성이 있는지(예컨대, 24시간 기간 동안, 사용자가 메일 애플리케이션과 같은 특정 유형의 애플리케이션을 개시할 가능성 있는 시간들)를 나타내기 위해 사용되는 시간 예측(temporal forecast)들을 기술하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대 사용 데이터의 수집/저장(도 3a 및 도 3b) 및 트리거 조건들의 생성/저장(도 4a 및 도 4b)에 관련되며 방법(800)의 동작(808)에 관련된 것들을 보완한다. 하나의 추가 예로서, 섹션 1은, 시간 예측들을 개선하고, 특정 애플리케이션이 특정 기간 동안 개시될 가능성에 대한 백분율 값들을 할당하는 파노라마 예측(panorama forecast)들을 생성하기 위해 추가 데이터(위치 데이터, 모션 데이터 등)의 사용을 논의하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대 트리거 조건들의 생성/저장(도 4a 및 도 4b)에 관련된 것들을 보완한다. 또 다른 예로서, 섹션 1은 예측된 이벤트들의 실행을 관리하기 위해 투표 시스템의 사용을 기술하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대 사용 데이터의 수집/저장(도 3a 및 도 3b) 및 트리거 조건들의 생성/저장(도 4a 및 도 4b)에 관련되며 방법(800)의 동작(808)에 관련된 것들을 보완한다. 또 하나의 추가 예로서, 섹션 1은 (다양한 유형의 예측들에 기초하여) 속성과 연관된 이벤트가 일정 기간 내에 발생할 가능성을 예측하는 것을 기술하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대 사용 데이터의 수집/저장(도 3a 및 도 3b) 및 트리거 조건들의 생성/저장(도 4a 및 도 4b)에 관련된 것들을 보완한다. 하나의 추가 예로서, 섹션 1은 (예컨대, 방법들(600, 800) 또는 상기 논의된 다른 방법들 중 임의의 방법이 에너지 효율적인 방식으로 동작하는 것을 보장하기 위해) 전력을 절약하는 것에 관해 본 명세서에 제공된 개시내용들을 보완하는 열적 조건들의 관리를 기술한다.
모바일 디바이스의 동적 조정의 개요
일부 구현예들에서, 모바일 디바이스(예컨대, 도 1a의 디바이스(100))는 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 모바일 디바이스는 시스템 설정에 대한 조정을 트리거할 수 있는 하나 이상의 이벤트들의 발생을 검출하도록 구성될 수 있다.
일부 구현예들에서, 모바일 디바이스는 미리정의된 그리고/또는 동적으로 정의된 속성들로 구성될 수 있다. 속성들은 시스템 이벤트들을 추적하기 위해 시스템에 의해 사용될 수 있다. 속성 이벤트들은 저장될 수 있고, 나중에 속성 이벤트들의 향후 발생들을 예측하는 데 사용될 수 있다. 저장된 속성 이벤트들은 모바일 디바이스에 의해 수행되는 프로세싱에 관한 결정들을 하기 위해 시스템에 의해 사용될 수 있다. 속성들은 시스템 상의 향후 이벤트들 또는 활동들을 지원하도록 리소스들의 예산책정을 허용하는 예산들과 연관될 수 있다.
일부 구현예들에서, 모바일 디바이스 상에서 구동되는 다양한 애플리케이션들, 기능들 및 프로세스들은 속성 이벤트들을 제출할 수 있다. 애플리케이션들, 기능들 및 프로세스들은 나중에, 제출된 이벤트들에 기초하여 예측들을 요청할 수 있다. 애플리케이션들, 기능들 및 프로세스들은 속성들과 연관된 예산들 및 보고된 이벤트들과 연관된 비용들에 기초하여 예산책정을 수행할 수 있다. 애플리케이션들, 기능들 및 프로세스들은 예를 들어, 모바일 디바이스의 운영 체제 또는 제3자 애플리케이션과 연관될 수 있다.
일부 구현예들에서, 모바일 디바이스는 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 모바일 디바이스는 애플리케이션들이 언제 사용자에 의해 호출되는지를 추적할 수 있다. 호출 정보에 기초하여, 모바일 디바이스는 애플리케이션들이 하루 중 언제 호출되는지를 예측할 수 있다. 이어서, 모바일 디바이스는, 사용자가 애플리케이션들을 호출하고 업데이트된 콘텐츠를 애플리케이션이 다운로드하기를 기다릴 필요 없이 현재 업데이트된 콘텐츠를 볼 수 있도록, 우선적으로 애플리케이션들을 개시하고 업데이트들을 다운로드할 수 있다.
일부 구현예들에서, 모바일 디바이스는, 새로운 콘텐츠가 애플리케이션들이 다운로드하는 데 이용 가능하다는 것을 나타내는, 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다. 모바일 디바이스는 푸시 통지들과 연관된 애플리케이션들을 백그라운드에서 개시하고 새로운 콘텐츠를 다운로드할 수 있다. 콘텐츠가 다운로드된 후에, 모바일 디바이스는 푸시 통지가 수신되었음을 사용자에게 나타내는 그래픽 인터페이스를 제시할 수 있다. 이어서, 사용자는 애플리케이션들을 호출하고 업데이트된 콘텐츠를 볼 수 있다.
일부 구현예들에서, 모바일 디바이스는 모바일 디바이스 상의 애플리케이션들에 대한 콘텐츠의 다운로드들 및/또는 업로드들을 프로세스를 벗어나서 수행하도록 구성될 수 있다. 예를 들면, 전용 프로세스는 모바일 디바이스 상의 애플리케이션들에 대한 콘텐츠를 다운로드하고/하거나 업로드하기 위하여 모바일 디바이스 상에 구성될 수 있다.
애플리케이션들은 업로드/다운로드가 수행되는 동안 보류되거나 종료될 수 있다. 애플리케이션들은 업로드/다운로드가 완료될 때 호출될 수 있다.
일부 구현예들에서, 애플리케이션을 구동하거나 네트워크 인터페이스에 액세스하기 전에, 모바일 디바이스는 배터리 전력 및 셀룰러 데이터 사용 예산들을 체크하여 충분한 전력 및 데이터가 사용자 호출된 동작(user invoked operation)들에 이용 가능하다는 것을 보장하도록 구성될 수 있다. 백그라운드에서 애플리케이션을 개시하기 전에, 모바일 디바이스는 사용 통계치를 체크하여 애플리케이션이 가까운 미래에 사용자에 의해 호출될 가능성이 있는지 여부를 결정할 수 있다.
일부 구현예들에서, 속성 이벤트 데이터는 동일한 사용자에 의해 소유된 모바일 디바이스들 사이에서 공유될 수 있다. 모바일 디바이스는 피어 디바이스로부터 이벤트 데이터를 수신하고, 수신된 이벤트 데이터에 기초하여 피어 디바이스와 관련된 상호작용들 또는 동작들에 관한 결정들을 할 수 있다. 이벤트 데이터는 예측, 통계치, 및/또는 원시(예를 들어, 미처리된) 이벤트 데이터로서 공유될 수 있다. 모바일 디바이스는 예를 들어, 수신된 이벤트 데이터에 기초하여 피어 디바이스와 통신할지 여부를 결정할 수 있다.
특정 구현예들은 적어도 하기 이점들을 제공한다: 검출된 이벤트들에 응답하여 모바일 디바이스의 컴포넌트들을 동적으로 조정함으로써 배터리 전력이 절약될 수 있다. 사용자가 언제 애플리케이션들을 호출할지를 예상하고, 애플리케이션을 호출할 시에 사용자가 업데이트된 콘텐츠를 보도록 콘텐츠를 다운로드함으로써, 사용자 경험이 향상될 수 있다.
하나 이상의 구현예들의 상세사항들이 첨부 도면 및 이하의 설명에서 기재된다. 다른 특징들, 태양들, 및 잠재적 이점들이 설명 및 도면으로부터 그리고 청구범위로부터 명백해질 것이다.
모바일 디바이스의 동적 조정의 상세한 설명
개요
배터리 수명, 전력 요건들, 열 관리 및 성능 사이에서의 절충(tradeoff)들을 용이하게 하도록 다양한 시스템 이벤트들에 기초하여 모바일 디바이스의 적응을 가능하게 하기 위한 시스템 아키텍처가 이 섹션에서 기술된다. 시스템은 시스템 이벤트들로부터 학습하는 휴리스틱 프로세스들의 세트 및 기반 이벤트(underlying event) 수집 아키텍처를 제공하여, 사용자 경험의 현저한 저하 없이 배터리 수명을 최대화한다. 시스템은 시스템 정의된 속성 및 클라이언트 정의된 속성을 모니터링하고, 시스템 정의된 속성 및 클라이언트 정의된 속성을 사용하여 향후 이벤트들의 발생을 예상하거나 예측할 수 있다. 이러한 시스템은 동적으로 수집된 통계치 및/또는 명확하게 특정된 사용자 의도에 기초하여 디바이스 성능에 대한 사용자의 기대뿐만 아니라 시스템의 향후 거동을 예상할 수 있다. 시스템은 예상된 시스템 거동에 대한 사용자 경험을 향상시키기 위하여 어느 하드웨어 및 소프트웨어 제어 파라미터들을 설정할지 그리고 그 파라미터들을 어떤 값들로 설정할지를 결정할 수 있다. 시스템은 시스템 모니터링 및 하드웨어 제어를 활용하여, 모바일 디바이스에 이용 가능한 시스템 및 네트워크 리소스들을 확장하면서 사용자 경험에서의 전체적인 향상을 달성한다. 따라서, 시스템은 사용자 경험에 대한 영향을 최소화하면서 시스템 및 네트워크 리소스들을 최대화할 수 있다.
데이터 수집 ― 사용자 중심 통계치
도 31a은 모바일 디바이스(31_100)의 동적 조정을 수행하도록 구성된 예시적인 모바일 디바이스(31_100)를 예시한다. 일부 구현예들에서, 모바일 디바이스(31_100)는 디바이스 상태, 네트워크 상태, 시스템 서비스(예를 들어, 데몬) 및 사용자 거동에 관련된 이벤트들을 수집하는 샘플링 데몬(31_102)을 포함할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 애플리케이션, 센서 및 모바일 디바이스(31_100)에 의해 수신된 사용자 입력에 관련된 통계치를 수집하고 통계치를 이벤트 데이터 저장소(31_104)에 저장할 수 있다. 통계치는, 이벤트로서 보고된 미리정의된 또는 클라이언트 정의된 속성들을 사용하여 모바일 디바이스(31_100) 상에서 구동되는 다양한 클라이언트들(예를 들어, 애플리케이션, 유틸리티, 기능, 제3자 애플리케이션 등)에 의해 샘플링 데몬(31_102)에 보고될 수 있다.
데이터 수집 - 이벤트 및 속성
일부 구현예들에서, 모바일 디바이스(31_100)는 시스템 및/또는 애플리케이션 이벤트들을 수집하기 위한 프레임워크로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)는, 모바일 디바이스(31_100)의 다양한 애플리케이션들, 유틸리티들 및 다른 컴포넌트들이 나중의 통계 분석을 위해 샘플링 데몬(31_102)에 이벤트들을 제출할 수 있게 하는, API(Application Programming interface)들로 구성될 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)에 의해 이벤트 데이터 저장소(31_104)에 기록된 각각의 이벤트는, 속성 이름(예를 들어, "bundleId"), 속성 값(예를 들어, "contacts"), 익명화된 비콘 정보, 익명화된 위치 정보, 날짜 정보(예를 들어, 이벤트의 GMT 날짜), 시간 정보(예를 들어, 이벤트의 현지화된 24시간), 네트워크 품질 정보, 프로세서 이용 메트릭, 디스크 입/출력 메트릭, 현재 사용자의 식별 및/또는 이벤트의 유형(예를 들어, 시작, 중지, 발생함)을 포함할 수 있다. 예를 들어, 속성 이름은 이벤트와 연관된 속성의 유형을 식별할 수 있다. 속성 이름은 예를 들어, 샘플링 데몬(31_102)에 의해 추적되는 특정 메트릭을 식별하는 데 사용될 수 있다. 속성 값은 속성과 연관된 값(예를 들어, 문자열, 정수, 부동 소수점)일 수 있다. 익명화된 비콘 정보는, 비콘 정보를 사용자 또는 디바이스에 묶거나 연관시키지 않고 모바일 디바이스의 범위 내에 어느 무선 비콘들(예를 들어, 블루투스, 저전력 블루투스(Bluetooth Low Energy), Wi-Fi 등)이 있는지를 나타낼 수 있다. 유사하게, 익명화된 위치 정보는 사용자 또는 디바이스에 위치 정보를 묶거나 연관시키지 않고 모바일 디바이스의 위치를 식별할 수 있다. 예를 들어, 위치 정보는 모바일 디바이스(31_100) 상에 구성된 다양한 송수신기들을 사용하여 위성 데이터(예를 들어, 글로벌 포지셔닝 위성 시스템), 셀룰러 데이터, Wi-Fi 데이터, 블루투스 데이터로부터 도출될 수 있다. 네트워크 품질 정보는 이벤트가 발생했을 때 모바일 디바이스(31_100)에 의해 검출되는 바와 같은 모바일 디바이스의 네트워크(예를 들어, Wi-Fi, 셀룰러, 위성 등) 연결의 품질을 나타낼 수 있다.
일부 구현예들에서, 각 이벤트에 대한 이벤트 데이터는 이벤트가 발생, 시작 또는 중지되었음을 나타낼 수 있다. 예를 들어, 시간 어카운팅(time accounting)(예를 들어, 지속기간 어카운팅)이 속성에 대한 시작 이벤트 및 중지 이벤트를 나타내는 동일한 속성에 대한 이벤트들의 쌍들에 대해 수행될 수 있다. 예를 들어, 샘플링 데몬(31_102)은 값 "contacts"를 갖는 속성 "bundleId"에 대한 시작 이벤트를 수신할 수 있다. 나중에, 샘플링 데몬(102)은 값 "contacts"를 갖는 속성 "bundleId"에 대한 중지 이벤트를 수신할 수 있다. 샘플링 데몬(31_102)은 시작 이벤트의 시간을 중지 이벤트의 시간과 비교하여 "contacts" 애플리케이션이 얼마나 오랫동안 활성 상태였는지를(예를 들어, 지속기간) 결정할 수 있다. 일부 구현예들에서, 시간 어카운팅의 대상이 아닌 이벤트들은 포인트 이벤트들(예를 들어, 단일 발생)로서 기록될 수 있다. 예를 들어, 이벤트의 시간에서 순간 배터리 레벨을 특정하는 "batteryLevel" 시스템 속성과 연관된 이벤트는 단순히 이벤트의 발생으로서 기록될 수 있다.
아래의 표 1은 샘플링 데몬(31_102)에 의해 이벤트 데이터 저장소(31_104)에 기록된 속성 이벤트 엔트리들의 예를 제공한다. 첫 번째 엔트리는 "contacts" 애플리케이션이 사용자 "Fred"에 의해 호출되었음을 나타내는 "bundleId" 이벤트를 기록한다. 이 "bundleId" 이벤트는 Fred가 연락처 애플리케이션을 사용하기 시작했음을 나타내는 시작 이벤트이다. 두 번째 엔트리는 모바일 디바이스(31_100)의 배터리 레벨이 46%임을 나타내는 "batteryLevel" 이벤트 엔트리이고; 이 이벤트는 발생 유형 이벤트(예를 들어, 단일 포인트 이벤트)이다. 세 번째 엔트리는 값 "George"와 연관된 "personName" 이벤트이다. "personName" 이벤트는 사용자 Fred가 연락처 애플리케이션에서 연락처 "George"에 대한 연락처 정보에 액세스했다는 사실을 기록하는 데 사용되며; 이는 발생 유형 이벤트이다. 네 번째 엔트리는 "contacts" 애플리케이션이 사용자 "Fred"에 의해 닫혔거나 숨겨졌음을 나타내는 "bundleId" 이벤트를 기록한다. 이 bundleId 이벤트는 Fred가 연락처 애플리케이션을 사용하는 것을 중지했음을 나타내는 중지 이벤트이다. "bundleId" 속성에 대한 시작 및 중지 이벤트들을 기록함으로써, 샘플링 데몬(31_102)은 사용자 Fred가 시작 및 중지 이벤트들에 대응하는 타임스탬프들에 기초하여 2014년 5월 12일에 8분 동안 연락처 애플리케이션을 사용했음을 결정할 수 있다. 이 속성 이벤트 정보는 예를 들어, 모바일 디바이스(31_100) 상의 애플리케이션들에 관련된 그리고 특히 연락처 애플리케이션에 관한 사용자 활동을 예측하는 데 사용될 수 있다.
[표 1]
Figure pat00041
미리정의된 속성
일부 구현예들에서, 이벤트 데이터는 잘 알려진 또는 미리정의된 속성들을 사용하여 샘플링 데몬(31_102)에 제출될 수 있다. 잘 알려진 또는 미리정의된 속성들은 이벤트 데이터를 샘플링 데몬(31_102)에 제출하기 위해 모바일 디바이스(31_100)의 다양한 애플리케이션들, 유틸리티들, 기능들 또는 다른 컴포넌트들에 의해 사용될 수 있는 일반적인 시스템 속성들일 수 있다. 속성 정의(예를 들어, 속성 이름, 연관된 값의 데이터 유형 등)가 미리 정의되어 있지만, 미리정의된 속성에 할당되는 값들은 이벤트마다 다를 수 있다. 예를 들어, 모바일 디바이스(31_100)는 미리정의된 속성들인, 애플리케이션들을 식별하기 위한 "bundleId" 및 관심 대상인 사람들을 식별하기 위한 "personName"으로 구성될 수 있다. "bundleId"에 할당된 값들은 모바일 디바이스(31_100) 상에서 어느 애플리케이션이 활성 상태인지에 기초하여 달라질 수 있다. "personName"에 할당된 값들은 사용자 입력에 기초하여 달라질 수 있다. 예를 들어 사용자가 "George"로부터의 이메일 메시지를 선택하는 경우, "personName" 속성 값은 "George"로 설정될 수 있다. 사용자가 "Bob"과 연관된 연락처 엔트리를 선택하는 경우, "personName" 속성 값은 "Bob"으로 설정될 수 있다. 모바일 디바이스(31_100)의 애플리케이션, 유틸리티, 기능 또는 다른 컴포넌트가 미리정의된 속성들을 사용하여 샘플링 데몬(31_102)에 이벤트를 제출하는 경우, 애플리케이션, 유틸리티, 기능 또는 다른 컴포넌트는 그 이벤트에 대한 미리정의된 속성과 연관될 값을 특정할 수 있다. 미리정의된 또는 잘 알려진 시스템 이벤트들의 예들이 하기의 단락들에서 설명된다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100) 상에 설치된 애플리케이션(예를 들어, 애플리케이션 번들)에 대한 이름 또는 식별자를 특정하는 미리정의된 속성(예를 들어, "system.bundleId")으로 구성될 수 있다. 애플리케이션이 개시될 때, 애플리케이션 관리자(31_106)(예를 들어, 애플리케이션들을 개시하는 것을 담당함)는 샘플링 데몬(31_102)의 API를 사용하여, 애플리케이션의 식별자 또는 이름(예를 들어, 연락처 애플리케이션에 대한 "contacts")을 "system.bundleId" 시스템 속성에 대한 값으로서 제출할 수 있다. 샘플링 데몬(31_102)은 "contacts" 애플리케이션의 개시의 발생을, 전술한 바와 같이, 예를 들어, 다른 이벤트 데이터와 함께, 이벤트 데이터 저장소(31_104) 내의 이벤트로서 기록할 수 있다. 대안적으로, 애플리케이션은 샘플링 데몬(31_102)의 API를 사용하여, 각각 애플리케이션 "contacts"가 호출될 때 및 애플리케이션이 숨겨지거나 닫힐 때에 대응하는 시작 및 중지 이벤트들을 나타낼 수 있다. 예를 들어, "bundleId" 속성은 모바일 디바이스(31_100) 상의 애플리케이션 개시 이벤트들을 기록하는 데 사용될 수 있다. "bundleId" 속성은 모바일 디바이스(31_100) 상의 애플리케이션 종료 이벤트들을 기록하는 데 사용될 수 있다. 단지 이벤트의 발생보다는, "bundleId" 속성과 연관된 시작 및 중지 이벤트들을 특정함으로써, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)의 사용자에 의해 "contacts" 애플리케이션이 얼마나 오랫동안 사용되었는지를 결정할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 사용자 또는 모바일 디바이스(31_100)의 사용자에게 관심 대상인 사람의 이름 또는 식별자를 특정하는 미리정의된 속성(예를 들어, "system.personName")으로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)에 로그인하거나, 웨이크(wake)하거나 다른 식으로 액세스할 시에, 모바일 디바이스(31_100)의 현재 사용자를 식별하는 "personName" 속성과 연관된 이벤트가 생성되어 샘플링 데몬(31_102)에 제출될 수 있다. 사용자가 다른 사람과 연관된 데이터에 액세스하는 경우, 다른 사람을 사용자에게 관심 대상인 사람으로서 식별하는 "personName" 속성 이벤트가 생성되어 샘플링 데몬(31_102)에 제출될 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 위치를 나타내는 미리정의된 속성(예를 들어, "system.anonymizedLocation")으로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)는 이벤트가 생성될 때 모바일 디바이스(31_100)의 위치를 특정하는 "anonymizedLocation" 속성과 연관된 이벤트를 생성하여 샘플링 데몬(31_102)에 제출할 수 있다. 위치 데이터는, 위치가 나중에 특정 사용자 또는 디바이스에 묶이거나 연관될 수 없도록, 익명화될 수 있다. "anonymizedLocation" 속성 이벤트는 예를 들어, 사용자가 모바일 디바이스(31_100)의 위치-기반 서비스를 사용할 때마다 생성되고 저장될 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 비행기 모드(airplane mode)가 온 또는 오프임을 나타내는 미리정의된 속성(예를 들어, "system.airplaneMode")으로 구성될 수 있다. 예를 들어, 사용자가 비행기 모드를 켜거나 끄는 경우, 모바일 디바이스(31_100)는 이벤트 시의 비행기 모드 상태를 나타내는 이벤트를 생성하여 샘플링 데몬(31_102)에 제출할 수 있다. 예를 들어, "airplaneMode" 속성의 값은 비행기 모드가 켜져 있을 때 참(예를 들어, 1)으로 설정되고, 비행기 모드가 오프일 때 거짓(예를 들어, 0)으로 설정될 수 있다. 샘플링 데몬(31_102)은 결국, "airplaneMode" 속성 값을 포함하는 "airplaneMode" 이벤트를 이벤트 데이터 저장소(31_104)에 저장할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 전력 케이블이 플러그인되거나 플러그인되지 않았음을 나타내는 미리정의된 속성(예를 들어, "system.cablePlugin")으로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)가 전력 케이블이 언플러그되었음을 검출할 때, 모바일 디바이스(31_100)는 "cablePlugin" 속성 값이 거짓(예를 들어, 0)임을 나타내는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)가 전력 케이블이 모바일 디바이스(31_100)에 플러그인되었음을 검출할 때, 모바일 디바이스(31_100)는 "cablePlugin" 속성이 참(예를 들어, 1)임을 나타내는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "cablePlugin" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 디스플레이 화면이 잠겨 있는지 또는 잠금해제되어 있는지를 나타내는 미리정의된 속성(예를 들어, "system.screenLock")으로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 디스플레이 화면이 언제 (예를 들어, 시스템에 의해 또는 사용자에 의해) 잠겼는지 또는 (예를 들어, 사용자에 의해) 잠금해제되었는지를 검출할 수 있다. 디스플레이 화면의 잠금 또는 잠금해제를 검출할 시에, 모바일 디바이스(31_100)는 "screenLock" 속성을 포함하는 이벤트를 생성하고, 이벤트에 대한 "screenLock" 속성 값을 참(예를 들어, 잠김, 정수 1) 또는 거짓(예를 들어, 잠금해제됨, 정수 0)으로 설정하여 모바일 디바이스(31_100)의 디스플레이 화면이 잠겼는지 또는 잠금해제되었는지 여부를 나타낼 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "screenLock" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)가 슬립 모드에 있는지 여부를 나타내는 미리정의된 속성(예를 들어, "system.sleepWake")으로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)가 언제 슬립 모드에 진입하는지를 검출할 수 있다. 모바일 디바이스(31_100)는 모바일 디바이스(31_100)가 언제 슬립 모드를 종료하는지를(예를 들어, 웨이크하는지를) 검출할 수 있다. 슬립 모드에 진입하거나 종료하는 것을 검출할 시에, 모바일 디바이스는, "sleepWake" 속성을 포함하고 속성 값을 참 또는 거짓(예를 들어, 각각, 정수 1 또는 0)으로 설정하여 "sleepWake" 이벤트 시 모바일 디바이스(31_100)의 슬립 모드 상태를 나타내는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "sleepWake" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 디스플레이가 점등되어 있는지를 나타내는 미리정의된 속성(예를 들어, "system.backlight")으로 구성될 수 있다. "backlight" 속성은 백라이트의 세기 또는 레벨을 나타내는 값을 할당받을 수 있다. 예를 들어, 모바일 디바이스(31_100)의 사용자는 모바일 디바이스(31_100)의 디스플레이의 조명(백라이트)의 세기를 조정할 수 있다. 주변 조명이 밝을 때 사용자는 백라이트의 세기를 증가시킬 수 있다. 주변 조명이 어두울 때 사용자는 백라이트의 세기를 감소시킬 수 있다. 백라이트 설정의 변화를 검출할 시에, 모바일 디바이스(31_100)는, "backlight" 속성을 포함하고 속성 값을 조정된 백라이트 설정값(예를 들어, 세기 레벨)으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "backlight" 변화 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 주변광 센서에 의해 검출된 바와 같은 주변광 세기 값을 나타내는 미리정의된 속성(예를 들어, "system.ALS")으로 구성될 수 있다. "ALS" 속성은 모바일 디바이스(31_100)를 둘러싸는 주변광의 세기 또는 레벨을 나타내는 값을 할당받을 수 있다. 예를 들어, 모바일 디바이스(31_100)의 주변광 센서는 주변광의 세기의 변화를 검출할 수 있다. 모바일 디바이스(31_100)는 세기의 변화가 소정 임계값을 초과함을 결정할 수 있다. 임계값을 초과하는 주변광의 변화를 검출할 시에, 모바일 디바이스(31_100)는, "ALS" 속성을 포함하고 속성 값을 검출된 주변광 세기 값으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "ALS" 변화 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는, 모바일 디바이스(31_100)의 근접 센서가 모바일 디바이스(31_100)의 디스플레이가 물체(예를 들어, 테이블 상에서, 사용자의 얼굴 등) 근처에 있음을 검출할 때를 나타내는 미리정의된 속성(예를 들어, "system.proximity")으로 구성될 수 있다. "proximity" 속성은 모바일 디바이스의 디스플레이가 물체에 근접해 있는지를 나타내는 값(예를 들어, 참, 거짓, 0, 1)을 할당받을 수 있다. 예를 들어, 모바일 디바이스(31_100)의 근접 센서는 근접의 변화를 검출할 수 있다. 근접의 변화를 검출할 시에, 모바일 디바이스(31_100)는, "proximity" 속성을 포함하고 속성 값을 모바일 디바이스(31_100)가 물체에 근접해 있을 때 참(예를 들어, 1)으로 설정하고 모바일 디바이스(31_100)가 물체에 근접해 있지 않을 때 거짓(예를 들어, 0)으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "proximity" 변화 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)에 의해 검출된 모션의 유형을 나타내는 미리정의된 속성(예를 들어, "system.motionState")으로 구성될 수 있다. "motionState" 속성은 모바일 디바이스가 정지 상태인지, 움직이는 중인지, 달리는 중인지, 운전 중인지, 걷는 중인지 등을 나타내는 값을 할당받을 수 있다. 예를 들어, 모바일 디바이스(31_100)의 모션 센서(예를 들어, 가속도계)는 모바일 디바이스(31_100)의 움직임을 검출할 수 있다. 모바일 디바이스(31_100)는 검출된 움직임에서 검출되는 모션의 패턴들에 기초하여, 검출된 움직임을 분류할 수 있다. 모션의 패턴들은 사용자가 정지 상태일 때, 움직이는 중일 때, 달리는 중일 때, 운전 중일 때, 걷는 중일 때 등과 같은 사용자 활동들로 분류될 수 있다. 움직임의 변화를 검출할 시에, 모바일 디바이스(31_100)는, "motionState" 속성을 포함하고 속성 값을 검출되는 움직임의 유형(예를 들어, 정지, 달리기, 걷기,
운전 등)으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "motionState" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)에 의해 검출된 네트워크 연결의 품질을 나타내는 미리정의된 속성(예를 들어, "system.networkQuality")으로 구성될 수 있다. "networkQuality" 속성은 n초(예를 들어, 1밀리초, 2초 등)의 기간에 걸쳐 네트워크 처리량 값을 나타내는 값을 할당받을 수 있다. 예를 들어, 모바일 디바이스(31_100)는 데이터 네트워크(예를 들어, 셀룰러 데이터, 위성 데이터, Wi-Fi, 인터넷 등)에 연결될 수 있다. 모바일 디바이스(31_100)는 일정 기간(예를 들어, 5초)에 걸쳐 네트워크 연결의 데이터 처리량을 모니터링할 수 있다. 모바일 디바이스는 초당 전송되는 데이터의 양(예를 들어, 비트/초, 바이트/초 등)을 계산할 수 있다. 처리량의 변화를 검출하거나 새로운 네트워크 연결을 생성할 시에, 모바일 디바이스(31_100)는, "networkQuality" 속성을 포함하고 속성 값을 계산된 처리량 값으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "networkQuality" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 내부 배터리의 순간 충전 레벨을 나타내는 미리정의된 속성(예를 들어, "system.batteryLevel")으로 구성될 수 있다. "batteryLevel" 속성은 배터리의 충전 레벨(예를 들어, 백분율)을 나타내는 값을 할당받을 수 있다. 예를 들어, 모바일 디바이스(31_100)는 배터리의 충전 레벨을 주기적으로(예를 들어, 5초마다, 1분마다, 15분마다 등으로) 결정하고, 배터리의 충전 레벨을 기록하기 위해 "batteryLevel" 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 배터리 충전 레벨을 모니터링하고, 충전 레벨이 임계량만큼 언제 변화하는지를 결정하고, 배터리의 충전 레벨을 기록하기 위해 "batteryLevel "이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "batteryLevel" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 열 레벨(thermal level)을 나타내는 미리정의된 속성(예를 들어, "system.thermalLevel")으로 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100)의 열 레벨은 모바일 디바이스의 현재 동작 온도(예를 들어, 섭씨 온도)일 수 있다. 모바일 디바이스(31_100)의 열 레벨은 온도 값들의 범위를 표현하는 레벨(예를 들어, 고, 중, 저, 정상, 비정상 등)일 수 있다. 예를 들어, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 열 상태를 모니터링하기 위한 유틸리티 또는 기능으로 구성될 수 있다. 온도의 변화 또는 열 레벨의 변화를 검출할 시에, 모바일 디바이스(31_100)의 열 유틸리티는, "thermalLevel" 속성을 포함하고 속성 값을 동작 온도 또는 현재 열 레벨로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "thermalLevel" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 n초(예를 들어, 2밀리초, 3초 등)의 기간에 걸쳐 모바일 디바이스(31_100)의 에너지 사용량을 나타내는 미리정의된 속성(예를 들어, "system.energy")으로 구성될 수 있다. 예를 들어, 사용자가 모바일 디바이스(31_100)의 기능(예를 들어, 애플리케이션의 호출, 디스플레이의 조명, 데이터의 전송 등)을 호출할 때, 모바일 디바이스(31_100)는 그 기능이 실행되고 있는 기간에 걸쳐 에너지 사용량을 모니터링하여 각각의 활동 또는 기능이 얼마나 많은 에너지를 사용하는지를 추정할 수 있다. 이어서, 모바일 디바이스(31_100)는, "energy" 속성을 포함하고 속성 값을 계산된 평균 에너지 사용량으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "energy" 이벤트를 제출할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 n초(예를 들어, 2밀리초, 3초 등)의 기간에 걸쳐 모바일 디바이스(31_100)의 네트워크 데이터 사용량을 나타내는 미리정의된 속성(예를 들어, "system.networkBytes")으로 구성될 수 있다. 예를 들어, 사용자가 모바일 디바이스(31_100)의 네트워크 연결을 통해 데이터의 전송을 요구하는 기능을 호출하거나 동작을 시작할 때, 모바일 디바이스(31_100)는 일정 기간에 걸쳐 네트워크 데이터 사용량을 모니터링하여 각각의 활동 또는 기능이 얼마나 많은 네트워크 데이터를 사용하거나 전송하는지를 추정할 수 있다. 이어서, 모바일 디바이스(31_100)는, "networkBytes" 속성을 포함하고 속성 값을 계산된 평균 네트워크 데이터 사용량으로 설정하는 이벤트를 생성할 수 있다. 모바일 디바이스(31_100)는 이벤트 데이터 저장소(31_104)에 저장하기 위해 샘플링 데몬(31_102)에 "networkBytes" 이벤트를 제출할 수 있다.
다른 미리정의된 속성들은, 모바일 디바이스(31_100)가 자신의 배터리를 충전하고 있는지 여부를 나타내는 참/거짓(예를 들어, 1/0) 속성 값을 갖는 "system.chargingStatus" 속성, (예를 들어, batteryLevel에 비례하는, mAh 단위로) 현재의 배터리 충전을 나타내는 속성 값을 갖는 "system.batteryCapacity" 속성, 및 피어 디바이스들의 출현들을 추적하는 디바이스 식별자(예를 들어, 문자열) 속성 값을 갖는 "system.devicePresence" 속성을 포함할 수 있다. 예를 들어, "devicePresence" 속성은 피어-투-피어 데이터 공유를 스케줄링할 때 피어 디바이스들의 출현을 예측하는 데 사용될 수 있다.
커스텀 속성
일부 구현예들에서, 클라이언트-특정 속성들은 샘플링 데몬(31_102)의 클라이언트들에 의해 동적으로 정의될 수 있다. 예를 들어, (예를 들어, 샘플링 데몬(31_102) 또는 운영 체제에서) 미리정의되고 모바일 디바이스(31_100) 상에 구성된 속성들을 사용하는 대신에, 클라이언트들(예를 들어, 제3자 애플리케이션들)은 그들 자신의 이벤트 속성들을 동적으로 정의할 수 있다. 예를 들어, 이메일 애플리케이션은 동적으로(예를 들면, 런타임 시) "mailbox" 속성을 생성할 수 있다. 이메일 애플리케이션("mailapp")은 샘플링 데몬(31_102)의 API를 사용하여 속성 이름(예를 들어, "mailapp.mailbox") 및 속성 값 유형(예를 들어, 문자열, 정수, 부동 소수점)을 정의할 수 있다. 클라이언트가 새로운 커스텀 속성을 생성(등록)했으면, 클라이언트는 그 속성을 사용하여 이벤트 데이터 저장소(31_104)에 저장될 이벤트들을 생성할 수 있다. 예를 들어, 메일앱은 "mailbox" 속성을 사용하여, 이메일 애플리케이션에서 사용자가 어느 메일함에 액세스하고 있는지를 보고할 수 있다. 사용자가 "work" 메일함에 액세스하고 있는 경우, 메일앱은 "mailapp.mailbox" 속성을 사용하여 이벤트를 생성하고 속성의 값을 "work"로 설정하여 사용자가 "work" 메일함에 액세스하고 있음을 기록할 수 있다. 이어서, 샘플링 데몬(31_102) 및 클라이언트는 저장된 메일함 이벤트 정보를 사용하여, 예를 들어, 사용자가 향후에 "work" 메일함에 언제 액세스할 가능성이 있는지를 예측할 수 있다.
일부 구현예들에서, 클라이언트 애플리케이션이 모바일 디바이스(31_100)로부터 제거(예를 들어, 삭제, 설치해제)되는 경우, 클라이언트 애플리케이션에 의해 생성된 속성들은 모바일 디바이스(31_100)로부터 삭제될 수 있다. 또한, 클라이언트 애플리케이션이 제거되는 경우, 클라이언트 애플리케이션과 연관된 이벤트 데이터는 삭제될 수 있다. 예를 들어, 모바일 디바이스(31_100)로부터 메일앱이 삭제되는 경우, 속성 "mailapp.mailbox"는 메일앱과 연관된 모든 이벤트 데이터와 함께 모바일 디바이스(31_100)로부터 삭제될 수 있다.
예시적인 이벤트 생성 클라이언트
일부 구현예들에서, 샘플링 데몬(31_102)은 애플리케이션 관리자 프로세스(31_106)로부터 애플리케이션 이벤트들(예를 들어, "system.bundleId" 이벤트들)을 수신할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 모바일 디바이스(31_100) 상에서 애플리케이션들(예를 들어, 애플리케이션(31_108))을 시작하고, 중지하고, 모니터링하는 프로세스일 수 있다. 일부 구현예들에서, 애플리케이션 관리자(31_106)는 모바일 디바이스(31_100) 상에서 구동되는 애플리케이션들에 대한 시작 및 중지 횟수(예를 들어, "bundleId" 시작 및 중지 이벤트들)를 샘플링 데몬(31_102)에 보고할 수 있다. 예를 들면, 사용자가 애플리케이션을 호출하거나 개시하는 경우, 애플리케이션 관리자(31_106)는 애플리케이션의 이름 또는 식별자를 특정하는 호출된 애플리케이션에 대한 "bundleId" 시작 이벤트를 제출함으로써 애플리케이션 호출을 샘플링 데몬(31_102)에 통지할 수 있다. 일부 구현예들에서, 애플리케이션 관리자(31_106)는 푸시 통지, 사용자 호출 또는 예상되거나 예측된 사용자 애플리케이션 호출에 응답하여 애플리케이션 개시가 시작되었음을 샘플링 데몬(31_102)에 나타낼 수 있다. 애플리케이션이 종료되는 경우, 애플리케이션 관리자(31_106)는 애플리케이션의 이름 또는 식별자를 특정하는 애플리케이션에 대한 "bundleId" 중지 이벤트를 제출함으로써 애플리케이션이 더 이상 구동되고 있지 않음을 샘플링 데몬(31_102)에 통지할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 애플리케이션 시작 및 종료 이벤트들(예를 들어, "bundleId" 속성 이벤트들)을 사용하여 애플리케이션 당 사용 횟수의 이력을 생성할 수 있다. 예를 들면, 애플리케이션 당 사용 횟수의 이력은, 애플리케이션의 각 실행에 대한, 애플리케이션의 최종 실행 이래로 경과한 시간의 양 및 실행 지속기간을 포함할 수 있다. 샘플링 데몬(31_102)은 사용자 호출된 애플리케이션 개시들 및/또는 시스템 개시된(예를 들어, 자동으로 개시된) 애플리케이션들의 별개의 이력을 유지할 수 있다. 따라서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100) 상에서 실행되는 모든 애플리케이션들에 대한 사용 통계치를 유지할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 전력 모니터 프로세스(31_108)로부터 전력 이벤트들을 수신할 수 있다. 예를 들면, 전력 모니터(31_109)는 모바일 디바이스(31_100)에 대한 배터리 용량, 방전, 사용량 및 충전 특성들을 모니터링할 수 있다. 전력 모니터(31_109)는 모바일 디바이스(31_100)가 언제 외부 전원들에 플러그인되는지 그리고 모바일 디바이스(31_100)가 언제 배터리 전력을 공급받는지를 결정할 수 있다. 전력 모니터(31_109)는 모바일 디바이스(31_100)가 외부 전원에 플러그인될 때 샘플링 데몬(31_102)에 통지할 수 있다. 예를 들면, 전력 모니터(31_109)는, 모바일 디바이스(31_100)가 외부 전원에 플러그인됨을 전력 모니터가 검출할 때, 1(예를 들어, 참)의 "cablePlugin" 속성 값을 갖는 "cablePlugin" 이벤트를 샘플링 데몬(31_102)에 송신할 수 있다. 이벤트는 외부 전원이 연결되는 시간에서의 배터리 충전을 포함할 수 있다. 전력 모니터(31_109)는 배터리 사용량을 보고하기 위해 샘플링 데몬(31_102)에 "energy" 속성 이벤트들을 송신할 수 있다.
일부 구현예들에서, 전력 모니터(31_109)는 모바일 디바이스(31_100)가 외부 전원으로부터 연결해제될 때 샘플링 데몬(31_102)에 통지할 수 있다. 예를 들면, 전력 모니터(31_109)는, 모바일 디바이스(31_100)가 외부 전원으로부터 연결해제됨을 전력 모니터가 검출할 때, 0(예를 들어, 거짓)의 "cablePlugin" 속성 값을 갖는 "cablePlugin" 이벤트를 샘플링 데몬(31_102)에 송신할 수 있다. 메시지는 외부 전원이 연결해제되는 시간에서의 배터리 충전을 포함할 수 있다. 따라서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)의 배터리들의 충전 분배(예를 들어, 시간에 따른 충전)를 설명하는 통계치를 유지할 수 있다. 충전 분배 통계치는 최종 충전 이래로의 시간의 양(예를 들면, 외부 전원에 플러그인된 이래로의 시간) 및 충전에 기인한 배터리 충전의 변화(예를 들면, 충전의 시작 레벨, 충전의 종료 레벨)를 포함할 수 있다.
일부 구현예들에서, 전력 모니터(31_109)는 하루 종일의 배터리 충전의 변화들을 샘플링 데몬(31_102)에 통지할 수 있다. 예를 들면, 전력 모니터(31_109)는 애플리케이션들이 언제 시작하고 중지하는지를 통지받고, 통지들에 응답하여, 그 기간 동안 방전되는 배터리 전력의 양 및 배터리에 남은 충전의 양을 결정하며, 이 정보를 샘플링 데몬(31_102)에 전송할 수 있다. 예를 들어, 전력 모니터(31_109)는 애플리케이션이 활성 상태였던 기간에 걸쳐 소비된 에너지의 양을 나타내기 위해 샘플링 데몬(31_102)에 "system.energy" 이벤트를 송신할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 열 데몬(31_110)으로부터 디바이스 온도 통계치를 수신할 수 있다. 예를 들면, 열 데몬(31_110)은 하나 이상의 온도 센서를 사용하여 모바일 디바이스(31_100)의 동작 온도 상태들을 모니터링할 수 있다. 열 데몬(31_110)은 샘플링 데몬(31_102)에 온도 변화들을 주기적으로 보고하도록 구성될 수 있다. 예를 들면, 열 데몬(31_110)은 5초마다 모바일 디바이스(31_100)의 동작 온도를 결정하고 모바일 디바이스(31_100)의 온도 또는 열 레벨을 샘플링 데몬(31_102)에 보고할 수 있다. 예를 들어, 열 데몬(31_110)은 샘플링 데몬(31_102)에 "system.thermalLevel" 이벤트를 송신하여 모바일 디바이스(31_100)의 현재 동작 온도 또는 열 레벨을 보고할 수 있다. 샘플링 데몬(31_102)은 보고된 온도들을 이벤트 데이터 저장소(31_104)에 저장할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 디바이스 설정 프로세스(31_112)로부터 디바이스 설정 통계치를 수신할 수 있다. 예를 들면, 디바이스 설정 프로세스(31_112)는 모바일 디바이스(31_100)의 운영 체제의 기능 또는 프로세스일 수 있다. 디바이스 설정 프로세스(31_112)는 예를 들어, 사용자 입력을 수신하여, 비행기 모드 켜기/끄기, Wi-Fi 켜기/끄기, 로밍 켜기/끄기 등과 같은 다양한 디바이스 설정을 조정할 수 있다. 디바이스 설정 프로세스(31_112)는 디바이스 설정에 대한 변화들을 샘플링 데몬(31_102)에 보고할 수 있다. 각각의 디바이스 설정은 대응하는 미리정의된 이벤트 속성을 가질 수 있다. 예를 들면, 디바이스 설정 프로세스(31_112)는 사용자가 모바일 디바이스(31_100) 상에서 비행기 모드를 켜거나 끌 때 샘플링 데몬(31_102)에 "system.airplaneMode" 이벤트를 송신할 수 있다. 샘플링 데몬(31_102)은 수신된 이벤트들 및 속성 값들에 기초하여 디바이스 설정에 대한 통계치를 생성하고 저장할 수 있다. 예를 들면, 설정이 인에이블되는(또는 디스에이블되는) 각 시간에 대하여, 샘플링 데몬(31_102)은 설정이 이전에 인에이블된 이래로 경과한 시간의 양 및 설정이 인에이블되었던 시간의 양(예를 들어, 지속기간)을 나타내는 데이터를 저장할 수 있다.
유사하게, 일부 구현예들에서, 샘플링 데몬(31_102)은 다른 이벤트들이 발생할 때 다른 모바일 디바이스(31_100) 컴포넌트들(예를 들어, 디바이스 센서들(31_114))로부터 통지들을 수신할 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 모바일 디바이스의 화면이 켜지거나 꺼질 때(예를 들어, "system.backlight" 이벤트), 모바일 디바이스(31_100)가 사용자의 얼굴 옆에서 유지될 때(예를 들어, "system.proximity" 이벤트), 셀 타워 핸드오프(cell tower handoff)가 검출될 때, 기저대역 프로세서가 검색 모드에 있을 때(예를 들어, "system.btlescan" 이벤트), 모바일 디바이스(31_100)가 사용자가 걷고 있고/있거나, 달리고 있고/있거나, 운전하고 있음을 검출할 때(예를 들어, "system.motionState" 이벤트) 통지들을 수신할 수 있다. 각각의 경우에서, 샘플링 데몬(31_102)은 이벤트의 시작 및 종료 시에 통지를 수신할 수 있다. 각각의 경우에서, 샘플링 데몬(31_102)은 이벤트가 마지막으로 검출된 이래로 경과한 시간의 양 및 이벤트의 지속기간을 나타내는 통계치를 생성하고 저장할 수 있다. 샘플링 데몬(31_102)은 다른 이벤트 통지들을 수신하고 다른 통계치를 생성할 수 있는데, 이는 특정 사용 경우들 및 시나리오들에 관하여 이하 더 설명되는 바와 같다.
애플리케이션 이벤트
일부 구현예들에서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100) 상의 애플리케이션들로부터 이벤트 정보를 수신할 수 있다. 예를 들어, 모바일 디바이스(31_100) 상의 애플리케이션들은 미리정의된 또는 동적으로 정의된 속성들을 포함하는 이벤트들을 샘플링 데몬(31_102)에 생성하여 다양한 애플리케이션-특정 이벤트들을 추적할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 캘린더 애플리케이션(31_116)으로부터 캘린더 이벤트들(예를 들어, "calendar.appointment", "calendar.meeting", 또는 "calendar.reminder" 속성 등을 포함함)을 수신할 수 있다. 캘린더 이벤트들은 위치들, 시간들, 또는 다양한 캘린더 이벤트들 또는 기능들과 연관된 다른 데이터를 특정하는 값들을 갖는 "calendar.appointment", "calendar.meeting", 또는 "calendar.reminder" 속성을 포함할 수 있다. 샘플링 데몬(31_102)은 예를 들어, 속성 이름, 속성 지속기간 및/또는 속성이 발생하도록 스케줄링된 시간을 저장할 수 있다. 일부 구현예들에서, 샘플링 데몬(31_102)은 시계 애플리케이션(31_118)으로부터 시계 이벤트들(예를 들어, "clock.alarm" 속성을 포함함)을 수신할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 속성 이름(예를 들어, "clock.alarm") 및 알람이 발생하도록 스케줄링된 시간을 나타내는 값을 저장할 수 있다. 샘플링 데몬(31_102)은 다른 애플리케이션들(예를 들어, 미디어 애플리케이션, 패스북(passbook) 애플리케이션 등)로부터 이벤트 정보를 수신할 수 있는데, 이는 이하 더 설명되는 바와 같다.
애플리케이션 통계치
일부 구현예들에서, 샘플링 데몬(31_102)은 애플리케이션 개시 이벤트들에 걸쳐 애플리케이션 통계치를 수집할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 애플리케이션의 많은 호출들에 걸쳐 각 애플리케이션에 대한 통계치(예를 들어, 이벤트들, "bundleId" 속성 값들)를 수집할 수 있다. 예를 들면, 각 애플리케이션은 동일한 애플리케이션의 상이한 버전들이 별개의 애플리케이션들로서 취급될 수 있도록 자신의 실행파일(executable)의 파일시스템 경로의 해시(hash) 및 실행파일의 콘텐츠의 해시를 이용하여 식별될 수 있다. 애플리케이션 해시 값은 예를 들어, "bundleId" 이벤트에서 "bundleId" 속성에 대한 값으로서 샘플링 데몬(31_102)에 제출될 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 각 애플리케이션에 대한 백그라운드 태스크 완료 표명 이벤트들을 추적하는 카운터를 유지할 수 있다. 예를 들면, 애플리케이션이 백그라운드 태스크로서 구동될 때마다(예를 들어, 포어그라운드에서 볼 수 없고/없거나 사용자에 의해 현재 사용되고 있지 않음), 애플리케이션 또는 애플리케이션 관리자(31_106)는 애플리케이션이 종료되거나 보류될 때 샘플링 데몬(31_102)에 통지할 수 있고 샘플링 데몬(31_102)은 카운터를 증분시킬 수 있다. 샘플링 데몬(31_102)은 애플리케이션이 백그라운드에서 구동된 애플리케이션 개시들에 걸쳐 누적 초수를 추적하는 카운터를 유지할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 "bundleId" 시작 및 중지 이벤트들을 분석하여 애플리케이션들이 언제 시작되고 중지되는지를 결정하고, 시작 및 중지 이벤트들의 타임스탬프들을 사용하여 애플리케이션이 얼마나 오랫동안 구동되었는지를 결정할 수 있다. 일부 구현예들에서, 샘플링 데몬(31_102)은, 데이터 연결들의 개수를 카운트하고, 네트워크 데이터 트래픽의 양을 (예를 들어, 바이트들로) 추적하고, 파일시스템 동작들의 지속기간 및 크기를 추적하고/하거나 각 애플리케이션과 연관된 스레드(thread)들의 개수를 추적하는 별개의 카운터들을 유지할 수 있다. 샘플링 데몬(31_102)은 예를 들어, 애플리케이션 개시들에 걸쳐 애플리케이션이 활성 상태를 유지하는 누적 시간의 양의 카운트를 유지할 수 있다. 이들은 샘플링 데몬(31_102)에 의해 수신되고 이벤트 데이터 저장소(31_104)에 저장된 이벤트들 및 속성 데이터에 기초하여 샘플링 데몬(31_102)에 의해 생성될 수 있는 애플리케이션 통계치의 유형들의 단지 일부 예들이다. 다른 통계치가 이하 더 설명하는 바와 같이 생성되거나 수집될 수 있다.
휴리스틱
일부 구현예들에서, 모바일 디바이스(31_100)는 샘플링 데몬(31_102)에 의해 검출된 이벤트들에 기초하여 디바이스 컴포넌트들의 설정을 조정할 수 있는 휴리스틱 프로세스들로 구성될 수 있다. 예를 들면, 휴리스틱 프로세스들(31_120)은 하나 이상의 트리거 이벤트에 응답하여 그리고/또는 샘플링 데몬(31_102)에 의해 수집되거나 생성된 통계치에 기초하여 다양한 시스템 설정(예를 들어, CPU 전력, 기저대역 프로세서 전력, 디스플레이 조명 등)을 조정하도록 구성되는(예를 들어, 프로그래밍되는) 하나 이상의 프로세스를 포함할 수 있다.
일부 구현예들에서, 휴리스틱 프로세스(31_120)는 미리정의된 세트의 기준들이 충족될 때(예를 들어, 소정 트리거 이벤트의 발생) 호출되거나 활성화되도록 샘플링 데몬(31_102)에 등록할 수 있다. 트리거 이벤트들은 미디어 재생기 애플리케이션의 호출(예를 들어, "bundleId" 이벤트) 또는 사용자가 걷기, 달리기, 운전 등을 시작했음을 검출하는 것(예를 들어, "motionState" 이벤트)을 포함할 수 있다. 트리거 이벤트는 소정 특성, 데이터, 통계치, 이벤트, 속성, 속성 값 등이 이벤트 데이터(31_104)에서 또는 샘플링 데몬(31_102)에 의해 검출될 때 휴리스틱 프로세스(31_120)를 호출하도록 일반화될 수 있다. 예를 들면, 휴리스틱 프로세스(31_120)는 샘플링 데몬(31_102)이 애플리케이션 시작 통지(예를 들어, 특정 애플리케이션을 특정하는 "bundleId" 시작 이벤트) 또는 소정 임계값 초과의 온도(예를 들어, "thermalLevel" 이벤트)를 수신할 때 호출될 수 있다. 휴리스틱 프로세스(31_120)는 샘플링 데몬(31_102)이 특정된 속성 또는 속성 값과 연관된 이벤트를 수신할 때 호출될 수 있다. 휴리스틱 프로세스(31_120)는 단일 이벤트가 발생하거나 통계치가 관찰될 때 호출되도록 등록할 수 있다. 휴리스틱 프로세스(31_120)는 이벤트, 데이터, 속성, 속성 값 및/또는 통계치의 조합이 관찰되거나 검출될 때 호출되도록 등록할 수 있다. 휴리스틱 프로세스(31_120)는 특정 사용자 입력(예를 들어, "airplaneMode" 이벤트, "sleepWake" 이벤트 등)에 응답하여 트리거되거나 호출될 수 있다. 샘플링 프로세스(31_102)가 휴리스틱 프로세스(31_120)가 등록한 이벤트들을 검출하는 경우, 샘플링 프로세스(31_102)는 휴리스틱 프로세스(31_120)를 호출할 수 있다.
일부 구현예들에서, 휴리스틱 프로세스(31_120)가 호출되는 경우, 휴리스틱 프로세스(31_120)는 샘플링 데몬(31_102)과 통신하여 이벤트 데이터 저장소(31_104)로부터 이벤트 데이터를 인출할 수 있다. 휴리스틱 프로세스(31_120)는, 이벤트 데이터, 및/또는 모바일 디바이스(31_100)의 성능을 향상시키기 위하여, 모바일 디바이스(31_100)를 사용하는 동안 사용자의 경험을 향상시키기 위하여, 그리고/또는 모바일 디바이스(31_100)가 갖는 향후 문제점들을 방지하기 위하여 시스템 설정을 어떻게 조정할지를 결정하도록 휴리스틱 프로세스(31_120)가 자체적으로 수집하는 다른 데이터를 프로세싱할 수 있다.
일부 구현예들에서, 휴리스틱 프로세스(31_120)는 모바일 디바이스(31_100)의 다양한 디바이스 컴포넌트들(31_122)의 설정의 변화를 야기할 수 있는 설정 추천들을 할 수 있다. 예를 들면, 디바이스 컴포넌트들은 CPU, GPU, 기저대역 프로세서, 디스플레이, GPS, 블루투스, Wi-Fi, 진동 모터 및 다른 컴포넌트들을 포함할 수 있다.
일부 구현예들에서, 휴리스틱 프로세스(31_120)는 제어 멀티플렉서(31_124)에 설정 추천들을 할 수 있다. 예를 들면, 제어 멀티플렉서(31_124)는 휴리스틱 프로세스들(31_120)에 의해 제공된 컴포넌트 설정들 사이에서 중재하는 프로세스, 및 모바일 디바이스(31_100)의 컴포넌트들의 설정에 영향을 주거나 그것들을 변경하는 모바일 디바이스(31_100)의 다른 프로세스들 및/또는 기능들일 수 있다. 예를 들면, 열 데몬(31_110)은 모바일 디바이스(31_100)가 열 이벤트(예를 들어, 임계 온도 초과) 중에 있음을 검출하는 것에 기초하여, CPU 전력, 디스플레이 밝기, 기저대역 프로세서 전력 및 다른 컴포넌트 설정들을 조정하도록 구성되는 휴리스틱 프로세스일 수 있다. 그러나, 휴리스틱 프로세스(31_120)는 CPU 전력, 디스플레이 밝기, 기저대역 프로세서 전력 및 다른 컴포넌트 설정들도 조정하도록 구성될 수 있다. 따라서, 일부 구현예들에서, 휴리스틱 프로세스(31_120) 및 열 데몬(31_110)은 제어 멀티플렉서(31_124)에 설정 조정 추천들을 할 수 있고, 제어 멀티플렉서(31_124)는 어떤 설정 조정들을 행할지를 결정할 수 있다. 예를 들면, 제어 멀티플렉서(31_124)는 프로세스들의 우선순위를 정하고 추천 프로세스의 우선순위에 기초하여 조정들을 수행할 수 있다. 따라서, 열 데몬(31_110)이 휴리스틱 프로세스(31_120)보다 더 높은 우선순위 프로세스인 경우, 제어 멀티플렉서(31_124)는 휴리스틱 프로세스(31_120) 대신에 열 데몬(31_110)의 추천들에 따라 CPU, 디스플레이, 기저대역 프로세서 등의 설정을 조정할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 다수의 휴리스틱 프로세스들(31_120)로 구성될 수 있다. 휴리스틱 프로세스들(31_120)은 무선으로(over the air) 구성되거나 재구성될 수 있다. 예를 들면, 각 휴리스틱 프로세스(31_120)의 파라미터들(예를 들어, 트리거, 임계값, 기준, 및 출력)은 네트워크(예를 들어, 셀룰러 데이터 연결, Wi-Fi 연결 등)를 통해 설정되거나 조정될 수 있다. 일부 구현예들에서, 새로운 휴리스틱 프로세스들(31_120)이 모바일 디바이스(31_100)에 추가될 수 있다. 예를 들면, 트리거 이벤트들, 통계 데이터 및 디바이스 설정들 사이의 시간에 따른 새로운 상관관계들이 시스템 개발자들에 의해 결정될 수 있다. 이러한 새로운 상관관계들이 식별됨에 따라, 새로운 휴리스틱 프로세스들(31_120)은 새로 결정된 관계들을 설명하기 위해 시스템 설정을 조정하도록 개발될 수 있다. 일부 구현예들에서, 새로운 휴리스틱 프로세스들(31_120)은 네트워크를 통해 모바일 디바이스(31_100)에 추가될 수 있다. 예를 들면, 새로운 휴리스틱 프로세스들(31_120)은 무선으로(예를 들어, 셀룰러 데이터 연결, Wi-Fi 연결 등) 모바일 디바이스(31_100) 상에 다운로드되거나 설치될 수 있다.
예시적인 휴리스틱 프로세스
일부 구현예들에서, 휴리스틱 프로세스(31_120)는 모바일 디바이스(31_100)의 시스템 설정을 조정하여 모바일 디바이스(31_100)가 사용자의 주머니 안에 있을 때 너무 뜨거워지는 것을 방지하도록 구성될 수 있다. 예를 들면, 이러한 핫-인-포켓(hot-in-pocket) 휴리스틱 프로세스는, 모바일 디바이스의 디스플레이가 꺼져있을 때(예를 들어, "system.backlight" 이벤트가 0/거짓의 속성 값을 가짐) 그리고 모바일 디바이스(31_100)가 어떠한 엔터테인먼트 미디어(예를 들어, 음악, 영화, 비디오 등)도 재생하고 있지 않을 때 호출되도록 샘플링 데몬(31_102)에 등록하도록 구성될 수 있다. 호출될 때, 핫-인-포켓 휴리스틱은 예를 들면, CPU 전력 및 GPU 전력을 감소시켜 모바일 디바이스(31_100)의 동작 온도를 감소시키기 위한 추천들을 할 수 있다.
일부 구현예들에서, 휴리스틱 프로세스(31_120)는 모바일 디바이스의 디스플레이가 사용되고 있지 않을 때(예를 들어, "system.backlight" 이벤트가 0/거짓의 속성 값을 가짐) 위치 정확도를 조정하도록 구성될 수 있다. 예를 들면, 모바일 디바이스의 디스플레이가 사용되고 있지 않은 경우(예를 들어, 전술한 "backlight" 속성 이벤트에 의해 나타낸 바와 같이, 디스플레이가 꺼짐), 모바일 디바이스(31_100)는 사용자에게 지도 정보 또는 길 안내를 디스플레이할 수 없다. 따라서, 사용자는 모바일 디바이스(31_100)의 위치 서비스들을 사용할 가능성이 없고, 위치 서비스들(예를 들어, GPS 위치, Wi-Fi 위치, 셀룰러 위치 등)은 더 적은 전력을 사용하도록 조정될 수 있다. 위치 정확도 휴리스틱 프로세스는 모바일 디바이스의 디스플레이가 꺼져 있을 때 호출되도록 샘플링 데몬(31_102)에 등록할 수 있다. 호출될 때, 휴리스틱 프로세스는 모바일 디바이스(31_100)의 에너지 리소스들을 보존하기 위해 GPS 프로세서, Wi-Fi 송신기, 셀룰러 송신기, 기저대역 프로세서의 전력 레벨들을 조정하거나 모바일 디바이스(31_100)의 위치를 결정하는 데 사용되는 프로세스들을 종료할 수 있다.
일부 구현예들에서, 휴리스틱 프로세스(31_120)는 사용자의 거동에 응답하여 모바일 디바이스의 주변광 센서의 설정을 조정하도록 구성될 수 있다. 예를 들면, 이러한 사용자-적응(user-adaptive) 주변광 센서(ALS) 휴리스틱 프로세스는, 주변광 센서가 모바일 디바이스(31_100)를 둘러싸는 주변광의 변화를 검출했음을, 주변광 센서 시스템이 디스플레이의 밝기를 조정했음을, 그리고/또는 사용자가 디스플레이의 밝기를 조정하기 위한 입력을 제공했음을 나타내는 데이터(예를 들어, "ALS" 속성 이벤트)를 샘플링 데몬(31_102)이 수신할 때, 샘플링 데몬(31_102)에 의해 호출될 수 있다.
호출될 때, 사용자-적응 ALS 휴리스틱은, ALS 디스플레이 조정들 및 사용자 시작된 디스플레이 조정들에 관하여 샘플링 데몬(31_102)으로부터 추가 정보를 요청하여, ALS가 디스플레이 밝기를 올리거나 내리도록 조정하고 사용자가 반대 방향으로 디스플레이 밝기를 조정하는 때를 나타내는 사용자 입력의 패턴이 있는지를 결정할 수 있다(예를 들어, "system.ALS" 이벤트 및 뒤이은 "system.backlight" 이벤트). 예를 들면, 사용자는 직장까지 버스나 기차를 탈 수 있다. 타고 있는 동안 버스 조명은 켜지고 꺼질 수 있다. 주변광 센서는 주변광의 변화를 검출하고, 조명이 켜지는 경우 디스플레이 밝기를 증가시킬 수 있다. 조명은 일시적으로만 켜지므로, 사용자는 조명이 다시 꺼지는 경우 디스플레이 밝기를 감소시킬 수 있다. 사용자 입력의 이러한 패턴은, ALS 디스플레이 조정에 응답하여 어떠한 환경 또는 컨텍스트 하에서 사용자가 디스플레이 밝기를 조정하는지를 결정하기 위해, 휴리스틱 프로세스에 의해 (예를 들어, "backlight" 속성 이벤트들을 통해) 추적되고 하루 중 시간, 캘린더나 알람 이벤트 엔트리, 또는 이동 패턴에 상관시킬 수 있다. 사용자-적응 ALS 휴리스틱 프로세스가 입력의 패턴 및 컨텍스트를 결정하면, 휴리스틱 프로세스는 ALS의 설정을 더 또는 덜 적극적이 되도록 조정할 수 있다. 예를 들면, ALS는 하루 중 결정된 시간 동안 더 또는 덜 자주 주변광의 레벨, 캘린더나 알람 엔트리, 또는 이동 패턴을 체크하도록 조정되고 이에 따라 디스플레이 밝기를 조정할 수 있다.
상기 휴리스틱 프로세스들은 휴리스틱 프로세스들 및 이 섹션에 설명된 시스템에서 그것들이 어떻게 구현될 수 있는지의 몇 가지 예들이다. 다른 휴리스틱 프로세스들이 구현될 수 있고 시간이 지남에 따라 그것들이 개발될 때 시스템에 추가될 수 있다. 예를 들면, 추가 휴리스틱 프로세스들은, 온도 측정, 사용자 입력, 시계 이벤트(예를 들어, 알람), 캘린더 이벤트 및/또는 모바일 디바이스 상에서 발생하고 검출되는 다른 이벤트들에 관련된 이벤트들 또는 이벤트들의 패턴들을 검출하는 것에 응답하여, CPU, GPU, 기저대역 프로세서들, 또는 모바일 디바이스의 다른 컴포넌트들을 조정하도록 구성되거나 프로그래밍될 수 있다.
예시적인 휴리스틱 등록 및 호출 프로세스
도 31b는 휴리스틱 프로세스들을 호출하기 위한 예시적인 프로세스(31_200)를 예시한다. 단계(31_202)에서, 샘플링 데몬(31_102)이 초기화될 수 있다. 예를 들면, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)의 시동 동안 초기화될 수 있다.
단계(31_204)에서, 샘플링 데몬(31_102)은 샘플링 데몬(31_102)의 초기화 동안 모바일 디바이스(31_100) 상에 구성된 휴리스틱 프로세스들을 호출할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 각 휴리스틱 프로세스(31_120)로 하여금 모바일 디바이스(31_100) 상에서 실행되고 그것들의 초기화 서브루틴(initialization subroutine)들을 통해 구동되게 할 수 있다.
단계(31_206)에서, 샘플링 데몬(31_102)은 각 휴리스틱 프로세스(31_120)로부터 이벤트 등록 메시지들을 수신할 수 있다. 예를 들면, 휴리스틱 프로세스들(31_120)의 초기화 서브루틴들 동안, 휴리스틱 프로세스들(31_120)은 어느 속성 이벤트들이 휴리스틱 프로세스(31_120)의 호출을 트리거해야 하는 것인지를 나타내는 정보를 샘플링 데몬(31_102)에 송신할 수 있다. 샘플링 데몬(31_102)은 등록 정보를, 예를 들어, 이벤트 데이터 저장소(31_104)와 같은 데이터베이스에 저장할 수 있다. 등록 정보는, 특정된 이벤트가 검출될 때 샘플링 데몬(31_102)이 휴리스틱 프로세스(31_120)를 호출할 수 있도록, 휴리스틱 프로세스의 식별(예를 들어, 실행파일 이름, 파일 시스템 경로 등) 및 이벤트 기준들(속성, 속성 값, 임계치, 범위 등의 식별)을 포함할 수 있다.
단계(31_208)에서, 샘플링 데몬(31_102)은 속성 이벤트 데이터를 수신할 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 전술한 바와 같이, 애플리케이션 관리자(31_106), 센서들(31_114), 캘린더(31_116) 및 시계(31_118)를 포함하는 다양한 시스템 컴포넌트들로부터 속성 이벤트 데이터를 수신할 수 있다.
단계(31_210)에서, 샘플링 데몬(31_102)은 수신된 속성 이벤트 데이터를 휴리스틱 등록 데이터와 비교할 수 있다. 예를 들면, 속성 이벤트 데이터가 샘플링 데몬(31_102)에 보고됨에 따라, 샘플링 데몬(31_102)은 이벤트 데이터(예를 들어, 속성 값들), 또는 이벤트 데이터로부터 생성된 통계치를, 휴리스틱 프로세스(31_120)로부터 수신된 등록 정보와 비교할 수 있다.
단계(31_212)에서, 샘플링 데몬(31_102)은 단계(31_210)에서 수행된 비교에 기초하여 휴리스틱 프로세스를 호출할 수 있다. 예를 들면, 이벤트 데이터(예를 들어, 속성 데이터) 및/또는 통계치가 휴리스틱 프로세스(31_120)에 대한 휴리스틱 등록 데이터에서 특정된 기준을 충족하는 경우, 샘플링 데몬(31_102)은 휴리스틱 프로세스(31_120)를 호출할 수 있다. 예를 들면, 이벤트 데이터 및/또는 통계 데이터가 등록 동안 휴리스틱 프로세스에 의해 이벤트에 대해 특정된 소정 임계값을 가로지르는 경우, 휴리스틱 프로세스는 샘플링 데몬(31_102)에 의해 호출될 수 있다. 대안적으로, 특정 속성 이벤트의 단순한 발생은 휴리스틱 프로세스(31_120)의 호출을 야기할 수 있다.
도 31c은 휴리스틱 프로세스(31_120)를 사용하여 모바일 디바이스(31_100)의 설정을 조정하기 위한 프로세스(31_300)를 예시한다. 단계(31_302)에서, 휴리스틱 프로세스(31_120)가 초기화된다. 예를 들면, 휴리스틱 프로세스(31_120)는, 휴리스틱 프로세스(31_120)가 자신의 초기화 서브루틴들을 통해 구동될 수 있도록 샘플링 데몬(31_102)에 의해 호출될 수 있다. 예를 들면, 호출은 휴리스틱 프로세스(31_120)가 이러한 호출 동안 자신의 초기화 서브루틴들을 통해 구동되어야 함을 나타내도록 파라미터화될 수 있다.
단계(31_304)에서, 휴리스틱 프로세스(31_120)는 시스템 이벤트들에 대해 샘플링 데몬(31_102)에 등록할 수 있다. 예를 들면, 초기화 동안, 휴리스틱 프로세스(31_120)는 이벤트들, 임계치들, 속성들, 속성 값들 또는 휴리스틱 프로세스(31_120)를 호출하기 위한 다른 기준들의 식별을 포함하는 메시지를 샘플링 데몬(31_102)에 송신할 수 있다. 이벤트가 발생하고/하거나 기준들이 충족되는 경우, 샘플링 데몬(31_102)은 휴리스틱 프로세스(31_120)를 호출할 수 있다.
단계(31_306)에서, 휴리스틱 프로세스(31_120)는 셧다운되거나 종료될 수 있다. 예를 들면, 휴리스틱 프로세스(31_120)는 등록 기준들이 휴리스틱 프로세스(31_120)에 대해 충족될 때까지 시스템에 의해 필요하지 않다. 따라서, 디바이스 리소스들(예를 들어, 배터리 전력, 처리 전력 등)을 보존하기 위하여, 휴리스틱 프로세스(31_120)는 그것이 필요해질(예를 들어, 샘플링 데몬(31_102)에 의해 트리거될) 때까지 종료되거나, 셧다운되거나 또는 보류된다.
단계(31_308)에서, 휴리스틱 프로세스(31_120)는 재시작될 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 등록 메시지에서 휴리스틱 프로세스(31_120)에 의해 특정된 기준들이 충족되었음을 샘플링 데몬(31_102)이 결정할 때, 휴리스틱 프로세스(31_120)를 호출할 수 있다.
단계(31_310)에서, 휴리스틱 프로세스(31_120)는 샘플링 데몬(31_102)으로부터 이벤트 데이터를 획득할 수 있다. 예를 들어, 재시작되면, 휴리스틱 프로세스(31_120)는 추가 속성 이벤트 데이터에 대해 샘플링 데몬(31_102)에 질의할 수 있다. 휴리스틱 프로세스(31_120)는 다른 시스템 리소스, 프로세스, 센서 등과 상호작용하여, 필요에 따라 데이터를 수집하도록 구성될 수 있다.
단계(31_312)에서, 휴리스틱 프로세스(31_120)는 이벤트 데이터를 프로세싱하여 컴포넌트 설정을 결정할 수 있다. 예를 들면, 휴리스틱 프로세스(31_120)는 샘플링 데몬(31_102)으로부터의 이벤트 데이터 및/또는 통계치 및/또는 시스템의 다른 컴포넌트들로부터 수집된 데이터를 사용하여 모바일 디바이스(31_100)의 다양한 컴포넌트들의 설정을 어떻게 조정하는지를 결정할 수 있다. 예를 들어, 휴리스틱 프로세스(31_120)가 모바일 디바이스(31_100)가 너무 뜨겁다고 결정하는 경우, 휴리스틱 프로세스(31_120)는 모바일 디바이스(31_100)의 어떤 전력 설정이 모바일 디바이스(31_100)의 동작 온도를 감소시킬 것인지를 결정할 수 있다.
단계(31_314)에서, 휴리스틱 프로세스(31_120)는 결정된 컴포넌트 설정을 제어 멀티플렉서(31_124)에 전송할 수 있다. 예를 들면, 제어 멀티플렉서(31_124)는 휴리스틱 프로세스(31_120) 및 다른 시스템 컴포넌트들(예를 들어, 열 데몬(31_110))로부터 수신된 디바이스 설정 추천들을 중재할 수 있다. 이어서, 제어 멀티플렉서(31_124)는 수신된 설정 추천들에 따라 모바일 디바이스(31_100)의 다양한 컴포넌트들(예를 들어, CPU, GPU, 기저대역 프로세서, 디스플레이 등)을 조정할 수 있다.
이벤트를 예측
일부 구현예들에서, 이벤트 데이터 저장소(31_104)에 저장된 속성 이벤트 데이터(예를 들어, 데이터 이력)는 향후 이벤트들의 발생을 예측하기 위해 샘플링 데몬(31_102)에 의해 사용될 수 있다. 예를 들어, "bundleId" 속성 이벤트들이 분석되어, 사용자가 애플리케이션들(예를 들어, 임의의 애플리케이션 또는 특정 애플리케이션)을 언제 호출할 것인지를 예측할 수 있다. 특정 이메일 폴더(예를 들어, "work" 폴더로 설정된 "mailbox" 속성 값)를 특정하는 "mailapp.mailbox" 이벤트가 분석되어, 사용자가 "mailapp" 애플리케이션의 특정 이메일 폴더를 언제 사용할 것인지를 예측할 수 있다.
이벤트 이력 윈도우 스펙(Event History Window Specification)
일부 구현예들에서, 이벤트 예측은 이벤트 이력 윈도우 스펙에 기초하여 생성될 수 있다. 예를 들어, 윈도우 스펙은, 클라이언트가 이벤트 예측의 기초로 원하는 관심 기간, 또는 관심 반복 기간을 특정하기 위해 클라이언트에 의해 생성될 수 있다. 윈도우 스펙은 시작 시간, 종료 시간, 반복 폭, 및 반복 빈도의 4개 구성요소를 포함할 수 있다. 시작 시간은 윈도우가 시작되어야 할 때의 날짜 및/또는 시간을 이력에서 나타낼 수 있다. 종료 시간은 윈도우가 종료되어야 할 때의 날짜 및/또는 시간을 이력에서 나타낼 수 있다. 반복 폭은 클라이언트에게 관심 대상인 시간의 블록(예를 들어, 시작 시간에서 시작하여 4시간)을 나타낼 수 있다. 반복 빈도는 시작 시간에서 시작하여 시간의 블록이 얼마나 자주 반복되어야 하는지를(예를 들어, 8시간마다, 2일마다, 매주, 2주마다 등) 나타낼 수 있다.
일부 구현예들에서, 이벤트 예측을 생성할 때, 특정된 시간 블록(예를 들어, 관심 기간) 내에 발생하는 이벤트들만이 분석될 것이다. 예를 들어, 현재 날짜가 2014년 5월 13일인 경우, 윈도우 스펙은 2014년 5월 11일 오후 12:00의 시작 날짜, 5월 12일 오후 12시의 종료 날짜, 1시간의 반복 폭, 및 4시간의 반복 빈도를 특정할 수 있다. 이 윈도우 스펙은, 샘플링 데몬(31_102)으로 하여금 2014년 5월 11일 오후 12:00에 시작하여 2014년 5월 12일 오후 12:00에 종료하는 4시간마다 발생하는 각각의 1시간 블록(예를 들어, 관심 기간) 내의 이벤트 데이터를 분석하게 할 것이다(예를 들어, 블록 1: 2014년 5월 11일 오후 12:00-1:00; 블록 2: 2014년 5월 11일 오후 4:00-5:00; 블록 3: 2014년 5월 11일 오후 8:00-9:00 등). 일부 구현예들에서, 반복 폭이 특정되지 않으면, 시작 시간에서 종료 시간까지의 전체 기간이 이벤트들을 예측하기 위해 분석될 것이다.
일부 구현예들에서, 샘플링 데몬(31_102)은 이벤트 이력 윈도우 스펙을 자동으로 생성할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 이벤트 데이터 저장소(31_104)에 저장된 이벤트 데이터 이력에서 패턴들을 식별할 수 있다. 클라이언트가 "bundleId" 이벤트들에 대한 예측을 요청하지만 윈도우 스펙을 제공하지 않는 경우, 샘플링 데몬(31_102)은 예를 들어, 애플리케이션들이 전형적으로 오전 8:00-9:00, 오전 11:30-오후 1:30, 그리고 오후 7:00-11:00에 사용자에 의해 호출됨을 나타내는, "bundleId" 속성/이벤트에 대한 패턴을 식별할 수 있다. 샘플링 데몬(31_102)은 그 기간들을 포함하고 하루 중 다른 시간들을 제외하는 윈도우 스펙을 자동으로 생성하여, 요청된 예측이 요청된 속성과 관련되는 기간들에 포커스를 맞추도록 할 수 있다. 유사하게, 샘플링 데몬(31_102)은 특정(예를 들어, 특정된) 속성 값에 대한 이벤트 이력 윈도우 스펙을 자동으로 생성할 수 있다. 예를 들어, 클라이언트가 "mailapp"의 속성 값을 갖는 "bundleId" 이벤트들에 대한 예측을 요청하는 경우, 샘플링 데몬(31_102)은 이벤트 데이터 이력을 분석하여 "mailapp" 값에 관련된 발생들의 패턴들을 식별할 수 있다. "mailapp" "bundleId" 속성 값이 매일 오전 10:00, 오후 12:00 그리고 오후 5:00에 이벤트 데이터 이력에 기록되는 경우, 샘플링 데몬(31_102)은 하루 중 그 시간들 즈음의 관심 기간들을 특정하는 윈도우 스펙을 생성할 수 있다.
시간 예측
일부 구현예들에서, 속성 또는 속성 값에 대해 시간 예측이 생성될 수 있다. 시간 예측은 예를 들어, 속성 또는 속성 값과 연관된 이벤트가 하루 중 어떤 시간에 발생할 가능성이 있는지를 나타낼 수 있다. 예를 들어, 샘플링 데몬(31_102)의 클라이언트는 지난 주(예를 들어, 지난 7일)에 걸쳐 "bundleId" 속성(예를 들어, 애플리케이션 개시들)에 대한 시간 예측을 요청할 수 있다. 예측을 생성하기 위해, 24시간 하루가 96개의 15분 타임슬롯들로 분할될 수 있다. 지난 7일 각각에서 특정 타임슬롯(예를 들어, 오후 1:00-1:15)에 대해, 샘플링 데몬(31_102)은 "bundleId" 이벤트가 발생했는지를 결정하고 타임슬롯에 대한 점수를 생성할 수 있다. "bundleId" 이벤트가 7일 중 2일에서 특정 타임슬롯 동안 발생했으면, 특정 타임슬롯 동안(예를 들어, 오후 1:00-1:15) "bundleId" 이벤트가 발생할 가능성(예를 들어, 점수)은 0.29(예를 들어, 2를 7로 나눈 값)이다. "bundleId" 이벤트가 7일 중 4일에서 다른 타임슬롯(예를 들어, 오후 12:15-12:30) 동안 발생했으면, 그 타임슬롯 동안 "bundleId" 이벤트가 발생할 가능성(예를 들어, 점수)은 0.57(예를 들어, 4를 7로 나눈 값)이다.
유사하게, 클라이언트는 특정 속성 값에 대한 시간 예측을 요청할 수 있다. 예를 들어, "bundleId" 속성(예를 들어, "bundleId" 이벤트)에 대한 시간 예측을 요청하는 대신에, 클라이언트는 "bundleId" 속성 값이 "mailapp"인 "bundleId" 이벤트에 대한 시간 예측을 요청할 수 있다. 따라서, 클라이언트는, 사용자가 하루 중 어떤 시간(예를 들어, 15분 타임슬롯)에 "mailapp" 애플리케이션을 호출할 가능성이 있을 것인지에 대한 표시를 수신할 수 있다.
일부 구현예들에서, 시간 예측은 이벤트 이력 윈도우 스펙에 기초하여 생성될 수 있다. 예를 들어, 클라이언트가 4시간의 관심 기간을 특정하는 윈도우 스펙을 제공하는 경우, 시간 예측은 4시간의 관심 기간 내에 있는 15분 타임슬롯들에 대한 가능성 점수들만을 생성할 것이다. 예를 들어, 관심 기간이 지난 3일 각각 동안 오후 12:00-4:00에 대응하는 경우, 4시간의 관심 기간 동안 16개의 타임슬롯들이 생성될 것이고 16개의 15분 타임슬롯들 각각에 대해 점수가 생성될 것이다. 특정된 4시간의 관심 기간 이외의 타임슬롯들에 대해서는 점수들이 생성되지 않을 것이다.
피어 예측
일부 구현예들에서, 샘플링 데몬(31_102)은 속성들에 대한 피어 예측들을 생성할 수 있다. 예를 들어, 피어 예측은 관심 기간 동안 발생하는 속성에 대한 값들의 상대적 가능성들을, 동일한 속성의 모든 값들(예를 들어, 발생들)에 대해 나타낼 수 있다. 예를 들어, 샘플링 데몬(31_102)의 클라이언트는 요청과 함께 제출된 윈도우 스펙에 의해 특정된 바와 같은 관심 기간(예를 들어, 오전 11:00 - 오후 1:00)에 걸쳐 "bundleId" 속성의 피어 예측을 요청할 수 있다. 관심 기간 동안, 속성 값들 "mailapp", "contacts", "calendar", "webbrowser", "mailapp", "webbrowser", "mailapp"을 갖는 "bundleId" 이벤트들이 발생하면, "mailapp"이 발생하는 상대적 가능성(즉, 점수)은 0.43(예를 들어, 3/7)이고, "webbrowser"가 발생하는 상대적 가능성은 0.29(예를 들어, 2/7)이며, "contacts" 또는 "calendar"가 발생하는 상대적 가능성들은 0.14(예를 들어, 1/7)이다.
일부 구현예들에서, 샘플링 데몬(31_102)의 클라이언트는 속성에 대한 피어 예측을 요청할 수 있다. 예를 들어, 클라이언트가 속성에 대한 값을 특정하지 않고 속성에 대한 피어 예측을 요청하면, 샘플링 데몬(31_102)은 피어 예측을 생성하고, 관심 기간 내의 속성의 모든 값들에 대한 다양한 확률 점수들을 반환할 것이다. 위의 예시적인 피어 예측을 사용하면, 샘플링 데몬(31_102)은 속성 값들 및 점수들의 목록을 요청 클라이언트에 반환할 것이며, 그 예는 다음과 같을 것이다: "mailapp":0.43; "webbrowser":0.29; "contacts":0.14; "calendar":0.14.
일부 구현예들에서, 샘플링 데몬(31_102)의 클라이언트는 속성 값에 대한 피어 예측을 요청할 수 있다. 예를 들어, 클라이언트는 "mailapp"의 값을 갖는 "bundleId" 속성에 대한 피어 예측을 요청할 수 있다. 샘플링 데몬(31_102)은 전술한 바와 같이, 클라이언트에 의해 제공된 윈도우 스펙에 따라 "bundleId" 속성에 대한 피어 예측을 생성할 수 있다. 예를 들어, 샘플링 데몬(31_102)은, "mailapp"이 발생하는 상대적 가능성(즉, 점수)이 0.43(예를 들어, 3/7)이고, "webbrowser"가 발생하는 상대적 가능성은 0.29(예를 들어, 2/7)이며, "contacts" 또는 "calendar"가 발생하는 상대적 가능성들은 0.14(예를 들어, 1/7)인 것을 계산할 수 있다. 샘플링 데몬(31_102)은 요청된 "mailapp" 값에 대한 점수(예를 들어, 0.43)를 클라이언트에 반환할 수 있다. 요청된 값이 윈도우 스펙에 의해 특정된 관심 기간 내에 나타나지 않으면, 0의 값이 클라이언트에 반환될 것이다.
파노라마 예측
일부 구현예들에서, 파노라마 예측은 속성 이벤트의 발생을 예측하기 위해 생성될 수 있다. 예를 들어, 전술한 시간 및 피어 예측들은 단일 속성 또는 속성 값에 대한 이벤트들의 발생의 상대적 빈도를 사용하여 그 속성의 향후 발생들을 예측한다. 이 "frequency" 예측 유형(예를 들어, 발생의 빈도)은 예측 요청에 특정된 속성 또는 속성 값과 연관된 데이터만을 사용한다. 반면에, "파노라마" 예측은 예측 요청에 특정된 속성 또는 속성 값에 대해 수신된 이벤트 데이터 내의 다른 데이터(예를 들어, 위치 데이터, 비콘 데이터, 네트워크 품질 등)를 사용할 수 있다. 일부 구현예들에서, 파노라마 예측은 다른 속성들 또는 속성 값들과 연관된 이벤트들로부터의 데이터를 사용할 수 있다. 예를 들어, 클라이언트가 특정된 속성 또는 속성 값에 대한 시간 예측 또는 피어 예측을 요청하고 또한 예측 유형(즉, 예측 특징(flavor))이 파노라마임을 특정하는 경우, 샘플링 데몬(31_102)은 특정된 속성 또는 속성 값에 대한 이벤트 데이터 및 다른 속성들 및 속성 값에 대한 이벤트 데이터를 분석하여, 특정된 이벤트와 샘플링 데몬(31_102)에 의해 수신된 다른 이벤트들 사이의 상관관계들을 식별할 것이다. 예를 들어, 값 "mailapp"을 갖는 속성 "bundleId"에 대한 빈도 예측은 오전 9:00의 15분 타임슬롯에 0.4의 점수를 할당할 수 있다. 그러나, 파노라마 예측은 "mailapp" 속성 값과 사용자의 직장 위치 사이에 강한 상관관계가 있음을 결정할 수 있다. 예를 들어, 파노라마 예측은, 사용자가 직장과 연관된 위치에 있으면, 메일앱이 오전 9:00의 15분 타임슬롯 내의 시간의 90%로 호출된다는 것을 결정할 수 있다. 따라서, 샘플링 데몬(31_102)은 오전 9:00의 15분 타임슬롯에 대한 "mailapp" 예측 점수에 더 높은 점수(예를 들어, 0.9)를 할당할 수 있다.
유사하게, 샘플링 데몬(31_102)은, "mailapp" "bundleId" 속성 값과, "motionState" 속성 값 "stationary"와 연관된 이벤트의 발생 사이에서 강한 상관관계를 발견할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 메일앱 애플리케이션의 사용과 정지 상태인 모바일 디바이스(31_100) 사이의 상관관계가 95%임을 결정할 수 있다. 샘플링 데몬(31_102)은 메일앱의 사용과 이동 중인 모바일 디바이스(31_100) 사이의 상관관계가 5%임을 결정할 수 있다. 따라서, 샘플링 데몬(31_102)은 모바일 디바이스가 이동 중인지 정지 상태인지에 기초하여 특정 타임슬롯에 대한 "mailapp" 속성 값에 대해 예측 점수(예를 들어, 0.95 또는 0.05)를 조정할 수 있다.
스코어보드 - 빈도 대 파노라마
일부 구현예들에서, 샘플링 데몬(31_102)은 어느 예측 유형이 이벤트들의 더 나은 예측자인지를 추적할 수 있다. 예를 들어, 샘플링 데몬(31_102)이 속성 이벤트를 수신하는 경우, 샘플링 데몬(31_102)은 수신된 이벤트와 연관된 속성 또는 속성 값에 대한 빈도 및 파노라마 예측들을 생성할 수 있고, 어느 예측 유형이 수신된 속성 이벤트의 더 나은 예측자였을지를 결정할 수 있다. 다르게 말하면, 샘플링 데몬(31_102)은, 속성 이벤트가 수신되기 직전에 예측들이 생성되었다면 빈도 예측 유형 또는 파노라마 예측 유형이 수신된 속성 이벤트의 더 나은 예측자였을지를 결정할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 각각의 예측 유형(예를 들어, 디폴트, 파노라마)에 대한 스코어보드를 유지할 수 있다. 예를 들어, 샘플링 데몬(31_102)이 빈도 예측 유형이 수신된 이벤트에 대한 더 나은 예측자였을 것임을 결정할 때마다, 샘플링 데몬(31_102)은 빈도 예측 유형에 대한 점수(예를 들어, 카운터)를 증분시킬 수 있다. 샘플링 데몬(31_102)이 파노라마 예측 유형이 수신된 이벤트에 대한 더 나은 예측자였을 것임을 결정할 때마다, 샘플링 데몬(31_102)은 파노라마 예측 유형에 대한 점수(예를 들어, 카운터)를 증분시킬 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 각각의 예측 유형(예를 들어, 빈도, 파노라마)에 대해 생성된 점수들에 기초하여 디폴트 예측 유형을 결정할 수 있다. 예를 들어, 스코어보드 프로세스가 파노라마 예측 유형에 대해 더 높은 점수를 생성한다면, 파노라마가 디폴트 예측 유형으로서 할당될 것이다. 스코어보드 프로세스가 빈도 예측 유형에 대해 더 높은 점수를 생성한다면, 빈도가 디폴트 예측 유형으로서 할당될 것이다. 클라이언트가 피어 또는 시간 예측을 요청하는 경우, 클라이언트는 예측 유형(예를 들어, 파노라마, 빈도, 디폴트)을 특정할 수 있다. 클라이언트가 예측 유형을 특정하지 않는 경우, 디폴트 예측 유형이 피어 및/또는 시간 예측들을 생성하는 데 사용될 것이다.
속성 통계치
일부 구현예들에서, 클라이언트는 샘플링 데몬(31_102)이 속성 또는 속성 값에 대한 통계치를 생성할 것을 요청할 수 있다. 예를 들어, 예측 생성과 유사하게, 클라이언트는, 속성 또는 속성 값에 대한 통계치가 생성되어야 하는 이력 윈도우를 특정할 수 있다. 샘플링 데몬(31_102)은 특정된 속성 또는 속성 값에 대한 통계치를 생성할 때 특정된 이력 윈도우 내에서 발생하는 속성 이벤트들을 분석할 것이다. 클라이언트 요청은 이하의 통계치 중 어느 것이 샘플링 데몬(31_102)에 의해 생성되어야 하는지를 특정할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 속성 또는 속성 값에 대한 "카운트" 통계치를 생성할 수 있다. 예를 들어, "카운트" 통계치는 특정된 이력 윈도우 내에서 발생하는 특정된 속성 또는 속성 값과 연관된 이벤트들의 수를 카운트할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 속성 값들에 기초하여 통계치를 생성할 수 있다. 예를 들어, 특정된 이력 윈도우 내의 속성에 대한 첫 번째 값 및/또는 마지막 값을, 클라이언트가 요청할 수 있고 샘플링 데몬(31_102)은 반환할 수 있다. 특정된 이력 윈도우 내의 특정된 속성과 연관된 모든 값들에 대한 최소, 최대, 평균, 모드(mode) 및 표준편차를, 클라이언트가 요청할 수 있고 샘플링 데몬(31_102)은 반환할 수 있다. 샘플링 데몬(31_102)은 어떤 값들이 요청된 백분위수들(예를 들어, 10번째, 25번째, 50번째, 75번째, 90번째 등)과 연관되는지를 생성하거나 결정할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 지속기간 통계치를 생성할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 속성의 시작 이벤트를 속성의 중지 이벤트와 비교함으로써 속성 값과 연관된 지속기간을 결정할 수 있다. 시작 이벤트가 발생했을 때와 중지 이벤트가 발생했을 때 사이의 시간 차이는 이벤트의 지속기간일 것이다. 일부 구현예들에서, 특정된 이력 윈도우 내의 특정된 속성 또는 속성 값과 연관된 모든 지속기간들에 대한 최소, 최대, 평균, 모드 및 표준편차를, 클라이언트가 요청할 수 있고 샘플링 데몬(31_102)은 반환할 수 있다. 샘플링 데몬(31_102)은 어떤 지속기간 값들이 요청된 백분위수들(예를 들어, 10번째, 25번째, 50번째, 75번째, 90번째 등)과 연관되는지를 생성하거나 결정할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 이벤트 간격 통계치를 생성할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 속성 이벤트의 제1 발생을 속성 이벤트의 후속 발생과 비교함으로써 속성 값과 연관된 이벤트의 도달 또는 그 보고와 연관된 시간 간격을 결정할 수 있다. 제1 이벤트가 발생했을 때와 후속 이벤트가 발생했을 때 사이의 시간 차이는 이벤트의 발생들 사이의 시간 간격일 것이다. 일부 구현예들에서, 특정된 이력 윈도우 내의 특정된 속성 또는 속성 값과 연관된 모든 시간 간격 값들에 대한 최소, 최대, 평균, 모드 및 표준편차를, 클라이언트가 요청할 수 있고 샘플링 데몬(31_102)은 반환할 수 있다. 샘플링 데몬(31_102)은 어떤 간격 값들이 요청된 백분위수들(예를 들어, 10번째, 25번째, 50번째, 75번째, 90번째 등)과 연관되는지를 생성하거나 결정할 수 있다.
애플리케이션을 최신 상태로 유지 - 업데이트들을 페칭(Fetching Updates)
도 31d는 애플리케이션들의 백그라운드 페치 업데이트를 수행하기 위한 예시적인 시스템(31_400)을 예시한다. 일부 구현예들에서, 모바일 디바이스(31_100)는, 사용자가 애플리케이션들을 호출할 것을 예상하여 애플리케이션들이 콘텐츠를 다운로드하고 그것들의 인터페이스들을 업데이트할 수 있도록, 모바일 디바이스(31_100)의 백그라운드 프로세스들로서 애플리케이션들을 예측적으로 개시하도록 구성될 수 있다. 예를 들면, 샘플링 데몬(31_102)에 의해 유지된 사용자 애플리케이션 개시 데이터 이력(예를 들어, "system.bundleId" 시작 이벤트들)은 사용자가 모바일 디바이스(31_100)의 애플리케이션들을 언제 호출할지를 예측(예상)하는 데 사용될 수 있다. 이러한 예측된 애플리케이션들은 사용자 호출 이전에 애플리케이션 관리자(31_106)에 의해 개시되어, 사용자 호출된 애플리케이션이 현재 콘텐츠를 다운로드하고 애플리케이션들의 그래픽 인터페이스들을 업데이트하는 것을 사용자가 기다릴 필요가 없게 할 수 있다.
애플리케이션을 언제 개시할지 결정 - 시간 예측
일부 구현예들에서, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)으로부터 애플리케이션 호출 예측을 요청할 수 있다. 예를 들어, 샘플링 데몬(31_102)은, 애플리케이션 관리자(31_106)로 하여금 모바일 디바이스(31_100) 상의 애플리케이션 개시들(예를 들어, "bundleId" 시작 이벤트들)의 시간 예측을 요청할 수 있게 하는 인터페이스를 제공할 수 있다. 샘플링 데몬(31_102)은 사용자가 언제 모바일 디바이스(31_100) 상의 애플리케이션들을 호출했는지를 나타내는 이벤트들(예를 들어, "bundleId" 시작 이벤트들)을 수신할 수 있으며, 이는 전술한 바와 같다. 애플리케이션 관리자(31_106)가 "bundleId" 속성에 대한 시간 예측을 요청하는 경우, 샘플링 데몬(31_102)은 이벤트 데이터 저장소(31_104)에 저장된 "bundleId" 이벤트들을 분석하여, 하루 중 언제(예를 들어, 어느 15분 타임슬롯에서) 애플리케이션들이 전형적으로 사용자에 의해 호출되는지를 결정할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 전술한 시간 예측 메커니즘을 사용하여, 하루 중 특정 시간 또는 기간이 사용자에 의한 애플리케이션 호출을 포함할 확률을 계산할 수 있다.
일부 구현예들에서, 애플리케이션 관리자(31_106)는 애플리케이션 관리자(31_106)의 초기화 동안 샘플링 데몬(31_102)으로부터 "bundleId" 속성에 대한 시간 예측을 요청할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 모바일 디바이스(31_100)의 시동 동안 호출되거나 개시될 수 있다. 애플리케이션 관리자(31_106)가 초기화하는 동안, 애플리케이션 관리자(31_106)는 다음 24시간 동안의 애플리케이션 호출들(예를 들어, "bundleId" 시작 이벤트들)의 시간 예측을 요청할 수 있다. 초기 24시간 기간이 경과했으면, 애플리케이션 관리자(31_106)는 다른 24시간 시간 예측을 요청할 수 있다. 이러한 24시간 예측 사이클은 예를 들어, 모바일 디바이스(31_100)가 꺼질 때까지 계속될 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 24시간 기간 동안의 애플리케이션 호출(예를 들어, "bundleId" 시작 이벤트) 시간 예측을 생성할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 24시간 기간을 96개의 15분 타임슬롯들로 분할할 수 있다. 샘플링 데몬(31_102)은, 샘플링 데몬(31_102)에 의해 수집되고 이벤트 데이터 저장소(31_104)에 저장된 애플리케이션 개시 데이터 이력(예를 들어, "bundleId" 시작 이벤트 데이터)에 기초하여, 동작의 이전 날들의 수(예를 들어, 1 내지 7)에 걸쳐 어느 애플리케이션들이 호출되었는지 그리고 몇 시에 애플리케이션들이 호출되었는지를 결정할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)이 "bundleId" 속성에 대한 시간 예측을 생성하는 경우, 각각의 15분 타임슬롯은 (예를 들어, 임의의) 애플리케이션이 그 15분 타임슬롯 내에서 호출될 확률에 따라 순위가 매겨질 수 있으며, 이는 시간 예측 섹션에서 전술한 바와 같다.
96개의 타임슬롯들 각각에 대한 애플리케이션 호출 확률들이 계산되면, 샘플링 데몬(31_102)은 가장 큰, 0이 아닌(non-zero) 확률들을 갖는 타임슬롯들의 수(예를 들어, 최대 64)를 선택하고 타임슬롯들을 식별하는 정보를 애플리케이션 관리자(31_106)에 반환할 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 가능한(probable) 사용자 호출된 애플리케이션 개시들에 대응하는 15분 타임스롯들(예를 들어, 0보다 큰 점수를 갖는 타임슬롯들)의 시작에 대응하는 시간들의 목록(예를 들어, 오후 12:00, 오후 1:45 등)을 애플리케이션 관리자(31_106)에 송신할 수 있다.
일부 구현예들에서, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)에 의해 제공된 타임슬롯들에 기초하여 타이머들을 설정할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)에 의해 식별된 타임슬롯들에 대응하는 하나 이상의 타이머(예를 들어, 알람)를 생성하거나 설정할 수 있다. 각 타이머가 (예컨대, 오후 12시에) 울릴 때, 애플리케이션 관리자(31_106)는 (예컨대, 슬리핑하고 있고, 보류되어 있고, 등등의 경우) 웨이크하고, 어느 애플리케이션들이 현재 15분 타임슬롯에 대해 개시되어야 하는지를 결정할 수 있다. 따라서, 타이머들은 대응하는 타임슬롯 내에서 사용자에 의해 호출될 가능성이 있는 애플리케이션들에 대한 페치 백그라운드 업데이트를 트리거할 수 있다.
일부 구현예들에서, 다른 이벤트들이 애플리케이션들에 대한 페치 백그라운드 업데이트를 트리거할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)에 다양한 이벤트들에 대한 관심을 등록할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 셀룰러 무선장치, 기저대역 프로세서를 켜는 것 또는 네트워크 연결(예를 들어, 셀룰러 또는 Wi-Fi)을 확립하는 것에 관련된 이벤트들(예를 들어, 속성들)에 대한 관심을 등록하여, 애플리케이션 관리자(31_106)가 이들 이벤트들이 발생할 때 통지받을 수 있고 백그라운드 애플리케이션 개시를 트리거하여 애플리케이션 업데이트가 활성 네트워크 연결을 이용할 수 있게 할 수 있다. 모바일 디바이스(31_100)를 잠금해제하는 것, 디스플레이를 켜는 것 및/또는 기타 상호작용들은 백그라운드 애플리케이션 개시 및 페치 업데이트를 트리거할 수 있고, 이는 이하 더 설명되는 바와 같다. 일부 구현예들에서, 애플리케이션 관리자(31_106)는, 임의의 백그라운드 업데이트가 이전의 분들의 수(number of minutes)(예를 들어, 7) 내에서 수행되었다면 백그라운드 애플리케이션 개시 및 페치 업데이트를 트리거하지 않을 것이다.
어떤 애플리케이션들을 개시할지 결정 - 피어 예측
일부 구현예들에서, 애플리케이션 관리자(31_106)는, 샘플링 데몬(31_102)이 현재 시간에 대해 개시할 애플리케이션들의 목록을 제공할 것을 요청할 수 있다. 예를 들어, 15분 타임슬롯에 대해 타이머가 울리거나(예를 들어, 만료되거나) 트리거링 이벤트가 검출되는 경우, 애플리케이션 관리자는 샘플링 데몬(31_102)이 현재 타임슬롯에 대해 어느 애플리케이션들을 개시할지를 결정할 수 있도록 "bundleId" 속성에 대한 샘플링 데몬(31_102)으로부터의 피어 예측을 요청할 수 있다. 이어서, 샘플링 데몬(31_102)은, 애플리케이션 식별자들의 목록, 및 각각의 애플리케이션이 대략 현재 시간에 사용자에 의해 호출될 확률을 나타내는 대응하는 점수들을 포함하는 피어 예측들을 생성할 수 있다.
도 31e는 모바일 디바이스(31_100) 상의 애플리케이션들에 대한 사용자 호출 확률들을 결정하기 위한 피어 예측을 예시한다. 예를 들어, 다이어그램(31_500)은 최근 이력 윈도우 스펙(예를 들어, 이전 2시간)에 대한 피어 예측을 예시한다. 다이어그램(31_530)은 일단위 이력 윈도우 스펙(예를 들어, 이전 7일 동안 매일 4시간 블록들)에 대한 피어 예측을 예시한다. 다이어그램(31_560)은 주단위 이력 윈도우 스펙(예를 들어, 7일마다 한번, 4시간 블록)에 대한 피어 예측을 예시한다. 일부 구현예들에서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100) 상의 애플리케이션들에 대한 사용자 호출 확률들을 결정하기 위해 상이한 중첩하는 윈도우 스펙들에 대한 피어 예측들을 사용하여 시계열(time series) 모델링을 수행할 수 있다. 애플리케이션이 피어 예측들에서 나타나지 않으면, 애플리케이션은 0의 확률 값을 할당받을 수 있다.
일부 구현예들에서, 시계열 모델링은 상이한 시간 윈도우들에 대한 피어 예측들을 생성함으로써 수행될 수 있다. 예를 들어, 최근, 일단위 및 주단위 피어 예측들은 최근, 일단위 및 주단위 이벤트 이력 윈도우 스펙들에 기초하여 생성할 수 있다. 이어서, 현재 시간에 어느 애플리케이션들을 개시할지를 결정하기 위해 최근, 일단위 및 주단위 피어 예측들이 조합될 수 있으며, 이는 이하 더 설명되는 바와 같다.
일부 구현예들에서, 사용자 호출 확률들은 최근 애플리케이션 호출들에 기초하여 생성될 수 있다. 예를 들어, 사용자 호출 확률들은, 이전 2시간을 관심 기간으로서 특정하는 윈도우 스펙(예를 들어, 지난 2시간 내의 사용자 시작된 애플리케이션 개시들)으로 "bundleId" 속성에 대한 피어 예측을 수행함으로써, 생성될 수 있다.
다이어그램(31_500)에 의해 예시된 바와 같이, 애플리케이션 개시 데이터 이력(예를 들어, "bundleId" 이벤트 데이터)은 이전 2시간 내에 개시되었던 애플리케이션들의 수(예를 들어, 4)를 나타낼 수 있다. 예를 들면, 점들 및 원들은 애플리케이션들을 표현할 수 있으며, 여기서 빈 원들은 단일의 특정 애플리케이션(예를 들어, 이메일, 소셜 네트워킹 애플리케이션 등)을 표현할 수 있고 빈 원들은 다른 애플리케이션의 호출을 표현한다. 최근 이력(예를 들어, 이전 2시간)을 사용하는 특정 애플리케이션과 연관된 피어 예측 확률 점수는, 이전 2시간 내에서 특정 애플리케이션의 호출 수(예를 들어, 2)를 애플리케이션 호출들의 총수(예를 들어, 4)로 나눔으로써 계산될 수 있다. 예시된 경우에서, 최근 애플리케이션 개시 데이터 이력을 사용하는 특정 애플리케이션과 연관된 확률은 2/4 또는 50%이다.
사용자 호출 확률들은 애플리케이션 개시들의 일단위 이력(예를 들어, 이전 7일 각각 동안 현재 시간 +-2시간에서 개시되었던 애플리케이션들)에 기초하여 생성될 수 있다. 예를 들어, 사용자 호출 확률들은, 하루 중 현재 시간 +-2시간(예를 들어, 4시간 반복 폭)을 24시간의 반복 빈도를 갖는(예를 들어, 24시간마다 반복 폭을 반복함) 관심 기간(예를 들어, 지난 2시간 내의 사용자 시작된 애플리케이션 개시들)으로서 특정하는 윈도우 스펙으로 "bundleId" 속성에 대한 피어 예측을 수행함으로써, 생성될 수 있다.
다이어그램(31_530)은 애플리케이션에 대한 사용자 호출 확률을 결정하는 데 사용될 수 있는 애플리케이션 개시들의 일단위 이력(예를 들어, "bundleId" 시작 이벤트들)을 예시한다. 예를 들면, 다이어그램(31_530)의 각 박스는, 특정 애플리케이션(예를 들어, 빈 원)에 대한 사용자 호출 확률(예를 들어, 피어 예측 점수)을 결정하기 위하여 분석될 수 있는 일정 수(예를 들어, 7)의 이전 날들(예를 들어, 피어 예측의 윈도우 스펙에 특정된 바와 같음) 각각에서의 시간 윈도우(예를 들어, 하루 중 현재 시간 +-2시간)를 표현한다. 일단위 데이터 이력을 사용하는 특정 애플리케이션과 연관된 확률은, 모든 윈도우들에서의 특정 애플리케이션들의 호출들의 수(예를 들어, 6)를, 모든 윈도우들에서의 애플리케이션 호출들의 총수(예를 들어, 22)로 나눔으로써 계산될 수 있다. 예시된 경우에서, 일단위 개시 데이터 이력을 사용하는 특정 애플리케이션과 연관된 확률은 6/22 또는 27%이다.
사용자 호출 확률들은 애플리케이션 개시들의 주단위 이력(예를 들어, 7일 전 현재 시간 +-2시간에서 개시되었던 애플리케이션들)에 기초하여 생성될 수 있다. 예를 들어, 사용자 호출 확률들은, 하루 중 현재 시간+-2시간(예를 들어, 4시간 반복 폭)을 7일의 반복 빈도를 갖는(예를 들어, 7일마다 반복 폭을 반복함) 관심 기간(예를 들어, 지난 2시간 내의 사용자 시작된 애플리케이션 개시들)으로서 특정하는 윈도우 스펙으로 "bundleId" 속성에 대한 피어 예측을 수행함으로써, 생성될 수 있다.
다이어그램(31_560)은 애플리케이션에 대한 사용자 호출 확률을 결정하는 데 사용될 수 있는 애플리케이션 개시들의 주단위 이력(예를 들어, "bundleId" 시작 이벤트들)을 예시한다. 예를 들어, 현재 날짜 및 시간이 수요일 오후 1시이면, 애플리케이션에 대한 사용자 호출 확률(예를 들어, 피어 예측 점수)은 이전 수요일 중에 오후 1시에 또는 대략 오후 1시에서의 시간 윈도우 동안(예를 들어, +-2시간) 개시된 애플리케이션들에 기초될 수 있다. 예시된 경우에서, 주단위 애플리케이션 개시 데이터 이력을 사용하는 특정 애플리케이션(예를 들어, 빈 원)과 연관된 확률은 1/4 또는 25%이다.
일부 구현예들에서, 최근, 일단위 및 주단위 사용자 호출 확률들은 각 애플리케이션에 대한 점수를 생성하기 위하여 조합될 수 있다. 예를 들면, 최근, 일단위 및 주단위 확률들은 최근(r), 일단위(d) 및 주단위(w) 확률들의 가중 평균을 계산함으로써 조합될 수 있다. 각 확률은 연관된 가중치를 가질 수 있으며, 각 가중치는 각 확률의 경험적으로 결정된 미리정의된 중요성에 대응할 수 있다. 모든 가중치들의 합은 1과 같을 수 있다. 예를 들면, 최근 개시들에 기초한 확률에 대한 가중치는 0.6일 수 있고, 일단위 확률에 대한 가중치는 0.3일 수 있으며, 주단위 확률에 대한 가중치는 0.1일 수 있다. 따라서, 조합된 확률 점수는 0.6(r), 0.3(d) 및 0.1(w)의 합(예를 들어, 점수 = 0.6r + 0.3d + 0.1w)일 수 있다.
도 31d를 다시 참조하면, 확률 점수가 최근, 일단위 및 주단위 확률들에 기초하여 각 애플리케이션에 대해 결정되면, 샘플링 데몬(31_102)은 가장 높은 0이 아닌 확률 점수들을 갖는 구성가능한 수(예를 들어, 3)의 애플리케이션들을 백그라운드 페치 다운로드/업데이트를 수행하도록 개시하기 위해 애플리케이션 관리자(31_106)에 추천할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은, 백그라운드 업데이트(예를 들어, 페칭) 애플리케이션 업데이트를 지원하지 않는 애플리케이션들, 사용자가 백그라운드 업데이트를 끈 애플리케이션들, 백그라운드 업데이트에서 제외된 애플리케이션들, 및/또는 포어그라운드 애플리케이션이 이미 최신일 가능성이 있으므로 모바일 디바이스(31_100)의 디스플레이 상의 포어그라운드 내에 있거나 사용자에 의해 현재 사용 중인 애플리케이션을, 전술한 "무엇을 개시할지(what to launch)" 분석으로부터 배제할 수 있다.
일부 구현예들에서, 애플리케이션 관리자(31_106)가 샘플링 데몬(31_102)으로부터 그 추천된 애플리케이션들을 수신하면, 애플리케이션 관리자(31_106)는 추천된 애플리케이션들 각각을 개시해도 좋은지를 샘플링 데몬(31_102)에 질의할 수 있다. 샘플링 데몬(31_102)은 (아래에서 설명되는) 자신의 로컬 승인 제어 메커니즘을 사용하여 애플리케이션 관리자가 특정 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 추천된 애플리케이션들 중 하나를 식별하는 속성 값을 갖는 "bundleId" 속성을 샘플링 데몬(31_102)에 송신할 수 있고, 샘플링 데몬(31_102)이 속성 값에 대한 승인 제어를 수행할 것을 요청할 수 있다.
로컬 승인 제어
일부 구현예들에서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100) 상의 속성 이벤트들에 대한 승인 제어를 수행할 수 있다. 예를 들어, 클라이언트 애플리케이션이 속성과 연관된 활동, 행동, 기능, 이벤트 등을 수행할 수 있는지 여부를 결정하기 위해, 속성 또는 속성 값에 대해 승인 제어가 수행될 수 있다. 예를 들어, 샘플링 데몬(31_102)의 클라이언트는 "mailapp"의 값을 갖는 속성 "bundleId"의 승인을 요청할 수 있다. 승인 요청을 수신하는 것에 응답하여, 샘플링 데몬은 클라이언트가 "mailapp" 속성 값과 연관된 활동을 수행할(예를 들어, "mailapp" 애플리케이션을 실행할) 수 있는지 여부를 결정할 수 있다.
일부 구현예들에서, 승인 제어는 예산들 및 투표자들로부터의 피드백에 기초하여 수행될 수 있다. 예를 들어, 샘플링 데몬(31_102)이 승인 제어 요청을 수신하는 경우, 그 요청은 속성 이벤트를 허용하는 것(예를 들어, 애플리케이션을 개시하는 것, "bundleId" 시작 이벤트)과 연관된 비용을 포함할 수 있다. 샘플링 데몬(31_102)은 시스템-범위 데이터 예산, 시스템-범위 에너지 예산 및/또는 특정 속성 예산들을 체크하여, 속성과 연관된 예산들이 속성 이벤트를 커버하기에 충분한 남아있는 크레디트를 갖는지 여부를 결정할 수 있다. 속성과 연관된 예산이 없으면(예를 들어, 속성이 예산책정된 속성이 아님), 속성 이벤트는 진행되도록 허용될 수 있다(예를 들어, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "좋음(ok)" 값을 반환할 것이다). 속성과 연관된 예산이 있으며 연관된 예산 내에 이벤트의 비용을 커버하기에 충분한 크레디트가 남아있지 않으면, 속성 이벤트는 진행하도록 허용되지 않을 것이다(예를 들어, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "아니오(no)" 값을 반환할 것이다).
속성과 연관된 예산이 있으며 예산 내에 이벤트의 비용을 커버하기에 충분한 크레디트가 남아있는 경우, 투표자들은 속성이 진행하도록 허용하는 것에 대해 투표하도록 요청될 것이다. 모든 투표자들이 '예'로 투표하면, 속성 이벤트는 진행하도록 허용될 것이다(예를 들어, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "좋음" 값을 반환할 것이다). 임의의 투표자가 '아니오'로 투표하면, 속성 이벤트는 진행하도록 허용되지 않을 것이다(예를 들어, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "아니오" 값을 반환할 것이다). 예산 및 투표자에 관한 상세사항들은 아래 단락에서 설명된다.
일부 구현예들에서, 속성 또는 속성 값이 승인 제어 요청 이전의 기간(예를 들어, 7일, 1개월 등)에서 샘플링 데몬(31_102)에 이벤트로 보고되지 않았다면, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "절대 안됨(never)" 값을 반환할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 속성 또는 속성 값과 연관된 이벤트를 언제 허용하거나 인정할지를 결정하기 위해 시간 또는 피어 예측을 생성할 수 있다. 예를 들어, 발생할 것으로 예상되지 않는 이벤트를 선점할 필요가 없다(예를 들어, 사용자에 의해 호출되지 않을 애플리케이션들에 대한 데이터를 프리페치할 필요가 없음).
승인 제어 - 예산
일부 구현예들에서, 샘플링 데몬(31_102)은 속성들 또는 속성 값들과 연관된 예산들에 기초하여 승인 제어를 수행할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 속성 또는 속성 값과 연관된 예산에 기초하여 속성 또는 속성 값과 연관된 활동(예를 들어, 이벤트)을 허용(예를 들어, 인정)할지 여부를 결정할 수 있다. 일부 구현예들에서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)에 대해 구성된 시스템-범위 에너지 예산 및/또는 시스템-범위 데이터 예산에 기초하여 속성 또는 속성 값을 인정하는 것이 좋은지 여부를 결정할 수 있다. 샘플링 데몬(31_102)은, 현재 시간 기간(예를 들어, 현재 시간)에 대한 남아있는 데이터 및 에너지 예산들을 계속해서 추적하기 위한 카운터들을 포함하는, 어카운팅 데이터 저장소(31_402)에 예산을 저장할 수 있다. 클라이언트가 속성 또는 속성 값에 대해 수행될 승인 제어를 요청하는 경우, 클라이언트는 속성 또는 속성 값과 연관된 이벤트가 발생하도록 허용하거나 인정하는 비용을 나타내는 수를 특정할 수 있다. 속성과 연관된 예산에 충분한 크레디트가 있는 경우, 속성 이벤트는 아래에 설명된 투표자들에 의해 투표될 것이다. 속성과 연관된 예산에 충분한 크레디트가 있지 않은 경우, 속성 이벤트는 진행하도록 허용되지 않을 것이다.
시스템-범위 에너지 예산
일부 구현예들에서, 샘플링 데몬(31_102)은 에너지 예산에 기초하여 속성 또는 속성 값을 인정해도 좋은지 여부를 결정할 수 있다. 예를 들면, 에너지 예산은 밀리암페어아워(milliamp hours) 단위로 모바일 디바이스의 배터리의 용량의 백분율(예를 들어, 5%)일 수 있다.
일부 구현예들에서, 에너지 예산은 24시간 기간 내의 각 시간에 분배될 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 수집되어 이벤트 데이터 저장소(31_104)에 저장된 배터리 이용 통계치(예를 들어, "system.energy" 이벤트들)를 활용하여, 24시간 기간 내의 각 시간에 대한 통상의 배터리 사용량 이력을 반영하는 분배를 결정할 수 있다. 예를 들면, 각 시간에는 이력적으로 또는 통계적으로 결정된 에너지 사용 분배 또는 애플리케이션 사용 예측에 기초하여 에너지 예산의 백분율이 할당될 수 있으며, 이는 전술한 바와 같다. 각 시간은 적어도 0보다 큰(예를 들어, 0.1%, 1% 등) 최소량의 에너지 예산을 가질 것이다. 예를 들면, 에너지 예산의 10%는 데이터를 사용하지 않는 시간들에 분배될 수 있고, 에너지 예산의 나머지 90%는 에너지 또는 애플리케이션 사용 이력에 따라 활성의 사용 시간들에 분배될 수 있다. 각 시간이 경과함에 따라, 현재 에너지 예산은 새로운/현재 시간에 대한 에너지 예산으로 보충될 것이다. 이전 시간에서 남은 임의의 에너지 예산은 현재 시간의 예산에 추가될 것이다.
일부 구현예들에서, 어카운팅 데이터 저장소(31_402)는 얼마나 많은 에너지 예산이 이용 가능하게 남아있는지 결정하기 위한 카운터를 포함할 수 있다. 예를 들면, 어카운팅 데이터 저장소(31_402)는 현재 시간에 대한 에너지 예산으로 초기화되는 하나 이상의 카운터를 포함할 수 있다. 에너지 예산이 속성 이벤트에 의해 사용되는 경우, 에너지 예산은 대응하는 양만큼 감소될 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 애플리케이션이 "bundleId" 시작 또는 중지 이벤트를 사용하여 개시되거나 종료될 때 샘플링 데몬(31_102)에 통지할 수 있다. 결국, 샘플링 데몬(31_102)은 애플리케이션이 개시될 때 그리고 애플리케이션이 종료될 때 전력 모니터(31_109)에 통지할 수 있다. 시작 및 중지 횟수에 기초하여, 전력 모니터(31_109)는 애플리케이션에 의해 얼마나 많은 에너지가 사용되었는지를 결정할 수 있다. 전력 모니터(31_109)는 애플리케이션에 의해 사용된 전력의 양을 샘플링 데몬(31_102)에 (예를 들어, "system.energy" 속성 이벤트를 제출함으로써) 전송할 수 있고, 샘플링 데몬(31_102)은 사용된 전력의 양만큼 적절한 카운터를 감소시킬 수 있다.
일부 구현예들에서, 현재 시간을 위한 어떠한 에너지 예산도 남아있지 않은 경우, 샘플링 데몬(31_102)은 속성에 대한 승인 요청을 거절할 수 있다. 예를 들어, 어카운팅 데이터 저장소(31_402) 내의 에너지 예산 카운터들이 0으로 감소될 때, 어떠한 에너지 예산도 남지 않으며, 에너지 예산에 묶이는 속성들과 연관된 어떠한 활동, 이벤트 등도 인정될 수 없다. 속성 이벤트의 비용을 커버하기에 충분한 에너지 예산이 현재 시간에 대해 남아 있다면, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "예" 값을 반환하고 속성 이벤트가 진행하도록 허용할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은, 모바일 디바이스(31_100)가 외부 전원에 플러그인될 때 승인 제어 결정을 에너지 예산에 기초하지 않을 것이다. 예를 들면, 0의 남은 에너지 예산은 모바일 디바이스(31_100)가 외부 전원에 플러그인될 때 속성 이벤트들을 방지하지 않을 것이다.
시스템-범위 데이터 예산
일부 구현예들에서, 샘플링 데몬(31_102)은 데이터 예산에 기초하여 속성을 인정해도 좋은지 여부를 결정할 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 샘플링 데몬(31_102)에 의해 수집되고 이벤트 데이터 저장소(31_104)에 저장되는 통계 데이터(예를 들어, "system.networkBytes" 속성 이벤트들)에 기초하여 모바일 디바이스(31_100)에 의해 소비된 네트워크 데이터의 평균량을 결정할 수 있다. 네트워크 데이터 예산은 사용자/모바일 디바이스(31_100)에 의해 소비되는 평균 일단위 네트워크 데이터의 백분율로서 계산될 수 있다. 대안적으로, 네트워크 데이터 예산들은 미리정의된 또는 구성가능한 값들일 수 있다.
일부 구현예들에서, 네트워크 데이터 예산들은 24시간 기간 내에서 각 시간에 분배될 수 있다. 예를 들면, 각 시간에는 최소 예산(예를 들어, 0.2 MB)이 할당될 수 있다. 네트워크 데이터 예산의 남은 양은 네트워크 데이터 사용 이력에 따라 24시간들 각각에 분배될 수 있다. 예를 들면, 샘플링 데몬(31_102)은 하루 중 각 시간에서 얼마나 많은 네트워크 데이터가 소비되는지를 이력 통계 데이터(예를 들어, "system.networkBytes" 속성 이벤트들)에 기초하여 결정하고 각 시간에서 소비된 데이터의 양들에 따라 백분율들을 할당할 수 있다. 각 시간이 경과함에 따라, 현재 데이터 예산은 새로운/현재 시간에 대한 데이터 예산으로 보충될 것이다. 이전 시간에서 남은 임의의 데이터 예산은 현재 시간의 데이터 예산에 추가될 수 있다.
일부 구현예들에서, 어카운팅 데이터 저장소(31_402)는 네트워크 데이터 예산들에 대한 데이터 카운터들을 유지할 수 있다. 네트워크 데이터가 소비됨에 따라, 데이터 카운터들은 소비된 네트워크 데이터의 양에 따라 감소될 수 있다. 예를 들면, 소비된 네트워크 데이터의 양은 애플리케이션 관리자(31_106)에 의해 샘플링 데몬(31_102)에 제공된 애플리케이션 시작 및 중지 이벤트들(예를 들어, "bundleId" 시작 또는 중지 이벤트들)에 기초하여 결정될 수 있다. 대안적으로, 소비된 네트워크 데이터의 양은 네트워크 인터페이스를 관리하는 프로세스에 의해 제공될 수 있다(예를 들어, 네트워크 데몬(31_406), 백그라운드 전송 데몬(31_1302)). 예를 들어, 네트워크 인터페이스 관리 프로세스는 애플리케이션이 얼마나 많은 데이터를 소비하는지를 결정하기 위해 애플리케이션 시작 및 중지 이벤트들(예를 들어, "bundleId" 이벤트들)과 상관될 수 있는 "system.networkBytes" 이벤트들을 샘플링 데몬(31_102)에 보고할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 어느 네트워크 인터페이스 유형(예를 들어, 셀룰러 또는 Wi-Fi)이 네트워크 데이터를 소비하는 데 사용되는지를 계속해서 추적하고 네트워크 인터페이스 유형에 기초하여 소비된 네트워크 데이터의 양을 결정할 수 있다. 소비된 네트워크 데이터의 양은 각 인터페이스 유형에 할당된 가중치들 또는 계수들에 따라 조정될 수 있다. 예를 들면, 셀룰러 데이터 인터페이스 상에서 소비되는 네트워크 데이터는 일(1)의 계수가 할당될 수 있다. Wi-Fi 인터페이스 상에서 소비되는 네트워크 데이터는 십분의 일(0.1)의 계수가 할당될 수 있다. 소비된 총 네트워크 데이터는 10으로 나뉜 소비된 Wi-Fi 데이터에 소비된 셀룰러 데이터를 더함으로써 계산될 수 있다(예를 들어, 총 데이터 = 1*셀룰러 데이터 + 0.1*Wi-Fi). 따라서, Wi-Fi를 통해 소비된 데이터는 셀룰러 데이터 연결을 통해 소비된 데이터보다 훨씬 적게 데이터 예산에 영향을 줄 것이다.
일부 구현예들에서, 현재 시간에 대한 어떠한 데이터 예산도 남아있지 않은 경우, 샘플링 데몬(31_102)은 승인 제어 요청에 "아니오" 응답으로 응답할 수 있다. 예를 들어, 어카운팅 데이터 저장소(31_402) 내의 데이터 예산 카운터들이 0으로 감소될 때, 데이터 예산은 남지 않으며, 데이터 예산에 묶이는 속성들과 연관된 어떠한 활동도 허용되지 않을 것이다. 속성 이벤트의 데이터 비용을 커버하기에 충분한 데이터 예산이 현재 시간에 남아있다면, 샘플링 데몬(31_102)은 승인 제어 요청에 "예" 응답으로 응답할 수 있다.
속성 예산
일부 구현예들에서, 속성은 예산과 연관될 수 있다. 예를 들어, 미리정의된 속성 또는 커스텀(동적으로 정의된) 속성은 샘플링 데몬(31_102)의 API를 통해 예산과 연관될 수 있다. 샘플링 데몬(31_102)의 클라이언트(예를 들어, 애플리케이션, 유틸리티, 기능, 제3자 애플리케이션 등)는 속성을 클라이언트 정의된 예산과 연관시키도록 샘플링 데몬(31_102)에 요청할 수 있다. 예산은 예를 들어, 크레디트들의 수일 수 있다.
예산이 할당되면, 예산책정된 속성과 연관된 보고된 이벤트들은 이벤트와 연관된 비용을 나타낼 수 있고, 예산은 특정된 비용에 따라 감소될 수 있다. 예를 들어, 미리정의된 시스템 속성 "system.btlescan"은 모바일 디바이스(31_100)가 다른 저전력 블루투스 디바이스들로부터의 신호들에 대한 스캔을 언제 수행하는지를 나타내기 위해 모바일 디바이스(31_100) 상에 구성될 수 있다. 블루투스 LE 스캔은 예를 들어, 백그라운드 태스크로서 구동될 수 있다. 블루투스 LE 스캔은 블루투스 무선장치가 켜질 것을 요구하며, 이는 결국, 모바일 디바이스(31_100)의 배터리로부터의 에너지를 소비한다. 블루투스 LE 스캔이 너무 많은 에너지를 소비하는 것을 방지하기 위해, "btlescan" 속성은 예산(예를 들어, 24 크레디트)을 할당받을 수 있다. "btlescan" 이벤트가 생성되어 샘플링 데몬(31_102)에 보고될 때마다, 이벤트는 비용(예를 들어, 1)으로 보고될 수 있다. 비용은 예산에서 감산될 수 있어서, "btlescan" 속성이 이벤트에서 보고될 때마다 24의 예산은 1씩 감소된다.
일부 구현예들에서, 속성 예산은 일정 기간에 걸쳐 분배될 수 있다. 예를 들어, "btlescan" 속성 예산은 24시간 기간에 걸쳐 균등하게 분배되어, "btlescan" 속성이 시간당 1 크레디트만 소비하도록 할 수 있다. 일부 구현예들에서, 속성 예산은 일정 기간의 끝에서 보충될 수 있다. 예를 들어, "btlescan" 속성 예산에 대한 기간이 24시간인 경우, "btlescan" 속성 예산은 24시간마다 보충될 수 있다.
일부 구현예들에서, 속성과 연관된 예산은 다른 예산의 서브세트(예를 들어, 서브-예산)일 수 있다. 예를 들어, 속성에 대한 예산은 전술한 시스템-범위 데이터 또는 시스템-범위 에너지 예산들과 같은 다른 예산의 일부분으로서 특정될 수 있다. 예를 들어, "mailapp.mailbox" 속성은 시스템에 대해 할당된 데이터 예산의 5%인 예산과 연관될 수 있다. "btlescan" 속성은 시스템에 대해 할당된 에너지 예산의 3%인 예산과 연관될 수 있다. 서브-예산(예를 들어, "mailbox" 예산)은, 서브-예산을 감소시키면 또한 수퍼-예산(super-budget)이 감소하도록, 수퍼-예산(예를 들어, 시스템 데이터 예산)에 묶일 수 있다. 일부 구현예들에서, 수퍼-예산이 0으로 감소되면, 서브-예산은 또한 0으로 감소된다. 예를 들어, 시스템 데이터 예산이 0인 경우, "mailbox" 속성 예산을 감소시킬 "mailbox" 속성에 대한 어떠한 이벤트도 보고되지 않았더라도, "mailbox" 속성 예산은 또한 0일 것이다.
일부 구현예들에서, 샘플링 데몬(31_102) 클라이언트들은, 샘플링 데몬(31_102)이 속성에 대해 남겨진 예산의 양을 반환할 것을 요청할 수 있다. 예를 들어, 클라이언트는 "btlescan" 속성에 대해 남아있는 예산에 대해 샘플링 데몬(31_102)에 요청할 수 있다. 24개의 예산책정된 크레디트 중 3개가 사용되었다면, 샘플링 데몬(31_102)은 값 21을 요청 클라이언트에 반환할 수 있다.
일부 구현예들에서, 클라이언트는, 연관된 속성에 대한 예산 내에 크레디트가 남아있지 않을 때 특정된 수의 예산책정된 크레디트들의 비용이 드는 이벤트를 보고할 수 있다. 샘플링 데몬(31_102)이 예산 내에 남아있는 크레디트가 없을 때 1 크레디트의 비용이 드는 이벤트(예를 들어, "btlescan" 이벤트)를 수신하는 경우, 샘플링 데몬(31_102)은 예산을 감소시키고(예를 들어, -1) 이벤트를 보고한 클라이언트에 오류를 반환할 수 있다. 오류는 예를 들어, 속성이 남아있는 예산이 없음을 나타낼 수 있다.
속성 예산 형성
일부 구현예들에서, 속성 예산은 사용 정보 이력에 기초하여 분배될 수 있다. 예를 들어, 이벤트들이 예산책정된 속성에 대해 보고됨에 따라, 속성에 대한 예산을 사용하라는 요청들(예를 들어, 비용과 연관된 이벤트들)이 시간에 따라 추적될 수 있다. 예를 들어, "btlescan" 속성에 대해 24의 예산이 할당되면, 예산은 초기에 24시간 기간에 걸쳐 균등하게 할당될 수 있으며, 이는 전술한 바와 같다. 이벤트들이 예산과 연관된 속성에 대해 시간에 따라 보고됨에 따라, 샘플링 데몬(31_102)은 보고된 이벤트들을 분석하여 이벤트들이 24시간 기간 중 언제 발생할 가능성이 가장 높은지를 결정할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 "btlescan" 이벤트가 대략 오전 8시, 오후 12시 및 오후 6시에 자주 발생하지만 대략 오전 2시에는 거의 발생하지 않음을 결정할 수 있다. 샘플링 데몬(31_102)은 이 이벤트 빈도 정보를 사용하여 24시간 기간에 걸쳐 "btlescan" 속성의 예산의 분배를 형성할 수 있다. 예를 들어, 샘플링 데몬은 오전 8시, 오후 12시 및 오후 6시에 대응하는 각각의 타임슬롯에 대해 2의 예산 크레디트를 할당하고, 오전 2시와 연관된 타임슬롯에 대해서는 0의 예산 크레디트를 할당할 수 있다.
승인 제어 - 투표자
일부 구현예들에서, 샘플링 데몬(31_102)은 모바일 디바이스(31_100) 상에서 구동되는 다른 소프트웨어(예를 들어, 플러그인, 유틸리티, 애플리케이션, 휴리스틱 프로세스)로부터의 피드백에 기초하여 승인 제어를 수행할 수 있다. 예를 들어, 승인 제어를 위한 투표자로서 샘플링 데몬(31_102)과 함께 작동하도록 다른 소프트웨어가 구성될 수 있다. 예를 들어, 여러 투표자들(예를 들어, 애플리케이션, 유틸리티, 데몬, 휴리스틱 등)이 승인 제어 결정에 대해 투표하기 위해 샘플링 데몬(31_102)에 등록될 수 있다. 예를 들어, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)의 열 상태를 모니터링하는 투표자, 모바일 디바이스(31_100)의 CPU 사용량을 모니터링하는 투표자 및/또는 모바일 디바이스(31_100)의 배터리 전력 레벨을 모니터링하는 투표자와 인터페이스하도록 구성될 수 있다. 샘플링 데몬(31_102)이 승인 제어 요청을 수신하는 경우, 각 투표자(예를 들어, 열, CPU 및 배터리)는 특정된 속성과 연관된 활동이 허용되어야 하는지 여부에 대해 투표하도록 요청받을 수 있다. 모든 투표자들이 '예'로 투표하면, 속성은 인정될 것이다(예를 들어, 속성과 연관된 활동이 일어나도록 허용될 것이다). 단일 투표자가 '아니오'로 투표하면, 속성은 인정되지 않을 것이다(예를 들어, 속성과 연관된 활동은 허용되지 않을 것이다). 일부 구현예들에서, 투표자들은 승인 제어 시스템에 추가적 기능을 제공하기 위해 샘플링 데몬(31_102)에 동적으로(예를 들어, 런타임 시) 추가될 수 있는 플러그인 소프트웨어로서 구성될 수 있다. 일부 구현예들에서, 투표자들은 속성 또는 속성 값과 연관된 이벤트를 인정 또는 허용할지 여부를 결정할 때 전술한 시간 및 피어 예측 메커니즘들을 사용할 수 있다.
네트워크 데몬
일부 구현예들에서, 네트워크 데몬(31_406)은 승인 제어 투표자로서 구성될 수 있다. 네트워크 데몬(31_406)은, 네트워크 데몬(31_406)으로 하여금 샘플링 데몬(31_102)으로부터 투표 요청들을 수신하고 투표(예를 들어, 예, 아니오) 응답들을 샘플링 데몬(31_102)에 제공할 수 있게 하는 샘플링 데몬(31_102)의 투표 API를 사용하도록 구성될 수 있다. 예를 들어, 네트워크 데몬(31_406)은 속성 및/또는 속성 값을 포함하는 투표 요청을 샘플링 데몬(31_102)으로부터 수신할 수 있다. 네트워크 데몬(31_406)은, 예를 들어, 모바일 디바이스(31_100)가 음성 통화에 연결되고 Wi-Fi 네트워크 연결에 연결되지 않을 때 샘플링 데몬(31_102)이 속성 또는 속성 값과 연관된 이벤트를 인정하거나 허용해서는 안된다는 것을 나타낼 수 있다. 예를 들면, 백그라운드 업데이트 프로세스들(예를 들어, 페치 프로세스들)이 음성 통화의 품질을 감소시키거나 그와 간섭하는 것을 방지하기 위하여, 네트워크 데몬(31_406)은 사용자가 음성 통화에 연결되고 Wi-Fi 연결에 연결되지 않을 때 백그라운드 업데이트 프로세스를 개시하는 것과 연관된 이벤트들(예를 들어, "bundleId" 시작 이벤트들)을 허용하지 않을 것이다. 따라서, 네트워크 데몬(31_406)은 모바일 디바이스(31_100)가 호에 연결되고 Wi-Fi에 연결되지 않을 때 투표 요청에 응답하여 "아니오" 값을 반환할 수 있다.
일부 구현예들에서, 네트워크 데몬(31_406)은 모바일 디바이스(31_100)가 품질이 나쁜 셀룰러 네트워크 연결을 가질 때 샘플링 데몬(31_102)이 속성 이벤트를 허용 또는 인정해서는 안된다는 것을 나타낼 수 있다. 품질이 나쁜 셀룰러 연결은 전송 속도 및/또는 처리율이 미리정의된 임계값들 미만인 경우 결정될 수 있다. 예를 들면, 모바일 디바이스(31_100)가 품질이 나쁜 셀룰러 네트워크 연결을 갖고 Wi-Fi에 연결되지 않은 경우, 네트워크 데몬(31_406)은, 샘플링 데몬(31_102)이 투표자 요청을 할 때 "아니오" 값을 반환함으로써, 품질이 나쁜 네트워크 연결을 이용함으로써(예를 들어, 품질이 나쁜 셀룰러 연결을 통해 데이터를 다운로드하거나 업로드하는 것을 시도할 애플리케이션을 개시하는 것) 배터리 에너지 및 셀룰러 데이터를 낭비할 속성 이벤트의 승인 또는 실행을 방지할 수 있다.
일부 구현예들에서, 네트워크 데몬(31_406)이 품질이 나쁜 네트워크 상태 또는 네트워크 데이터 사용량 또는 시스템 성능에 영향을 미칠 소정의 다른 상태를 나타내는 정보를 갖지 않는 경우, 네트워크 데몬(31_406)은 요청된 속성의 승인에 대해 "예"로 투표할 수 있다.
열 데몬
일부 구현예들에서, 열 데몬(31_110) 애플리케이션은 승인 제어 투표자로서 구성될 수 있다. 열 데몬(31_110)은, 열 데몬(31_110)으로 하여금 샘플링 데몬(31_102)으로부터 투표 요청들을 수신하고 투표(예를 들어, 예, 아니오) 응답들을 샘플링 데몬(31_102)에 제공할 수 있게 하는 샘플링 데몬(31_102)의 투표 API를 사용하도록 구성될 수 있다. 예를 들어, 열 데몬은 속성 및/또는 속성 값을 포함하는 투표 요청을 샘플링 데몬(31_102)으로부터 수신할 수 있다. 열 데몬(31_110)은, 열 데몬(31_110)이 열 이벤트를 검출했을 때 샘플링 데몬(31_102)이 속성 또는 속성 값과 연관된 이벤트를 인정하거나 허용해서는 안된다는 것을 나타낼 수 있다. 예를 들어, 열 데몬(31_110)은 모바일 디바이스(31_100)의 온도를 모니터링할 수 있고, "thermalLevel" 속성 및 대응하는 온도 값을 포함하는 이벤트들을 생성함으로써 샘플링 데몬(31_102)에 온도 값들을 보고할 수 있다.
일부 구현예들에서, 열 데몬(31_110)이 모바일 디바이스(31_100)의 온도가 임계 온도 값을 초과함을 결정하는 경우, 열 데몬(31_110)은, 또한 샘플링 데몬(31_102)이 열 데몬(31_110)에 속성(예를 들어, "bundleId") 이벤트에 대해 투표하라는 요청을 송신할 때 "아니오" 값을 반환함으로써, 열 데몬(31_102)이 모바일 디바이스(31_100)의 동작 온도를 증가시킬 수 있는 속성 이벤트들을 허용하는 것을 방지할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 비정상적 열 상태가 현재 존재할 때 단지 열 데몬(31_110)으로부터 투표를 요구할 것이다. 예를 들어, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)가 정상적 열 상태에서 동작하고 있는지 여부를 나타내는 열 상태 값(예를 들어, 참, 거짓)을 유지할 수 있다. 모바일 디바이스(31_100)의 현재 열 상태가 정상인 경우, 열 상태 값은 예를 들어, 참일 수 있다. 모바일 디바이스(31_100)의 현재 열 상태가 비정상인(예를 들어, 임계 온도 초과로, 너무 높은)경우, 열 상태 값은 거짓일 수 있다. 초기에, 열 상태 값은 참(예를 들어, 정상 동작 온도)으로 설정될 수 있다. 동작 온도가 임계 온도를 초과하여 상승했음을 검출할 시에, 열 데몬(31_110)은 비정상적 동작 온도(예를 들어, 거짓)를 나타내는 열 상태 값에 대한 업데이트된 값을 샘플링 데몬(31_102)에 송신할 수 있다. 모바일 디바이스(31_100)가 임계 온도보다 낮은 온도로 냉각되면, 열 데몬(31_110)은 정상 동작 온도(예를 들어, 참)를 나타내도록 열 상태 값을 업데이트할 수 있다.
샘플링 데몬(31_102)이 속성에 대한 승인 제어 요청을 수신하는 경우, 샘플링 데몬(31_102)은 열 상태 값을 체크하여 열 데몬(31_110)에게 속성 이벤트의 승인(허용)에 대해 투표할 것을 요구할지 여부를 결정할 수 있다. 열 상태 값이 정상 동작 온도를 나타내는 경우(예를 들어, 값이 참), 샘플링 데몬(31_102)은 열 상태 값을 열 데몬(31_110)으로부터의 "예" 투표로서 해석할 것이다.
열 상태 값이 비정상 동작 온도를 나타내는 경우(예를 들어, 값이 거짓), 샘플링 데몬(31_102)은 열 데몬(31_110)이 특정 속성 또는 속성 값에 대해 투표할 수 있도록 열 데몬(31_110)에 속성 및/또는 속성 값을 송신할 것이다.
일부 구현예들에서, 열 데몬(31_110)은 모바일 디바이스(31_100)의 현재 열 상태 및 속성에 대한 피어 예측에 기초하여 속성들 및/또는 속성 값들에 대해 어떻게 투표할지를(예를 들어, 예, 아니오) 결정할 수 있다. 예를 들어, 열 데몬(31_110)은 샘플링 데몬(31_102)으로부터 속성에 대한 피어 예측을 요청할 수 있다. 열 데몬(31_110)은 관심 기간 내에 현재 시간(예를 들어, +-1시간, 2시간 등)을 포함하는 윈도우 스펙을 생성함으로써 현재 시간에 대한 피어 예측을 요청할 수 있다. 열 데몬(31_110)은, 관심 기간에서 나타나는 속성의 각 값에 대한 가능성 점수들을 나타내는 피어 예측을 샘플링 데몬(31_102)으로부터 수신할 수 있다. 예를 들어, 열 데몬(31_110)이 "bundleId" 속성에 대한 피어 예측을 요청하는 경우, 열 데몬(31_110)은 "bundleId" 값들(예를 들어, 애플리케이션 식별자들) 및 연관된 예측(예를 들어, 확률, 가능성) 점수들의 목록을 수신할 수 있다. 예를 들어, 관심 기간 동안, 속성 값들 "mailapp", "contacts", "calendar", "webbrowser", "mailapp", "webbrowser", "mailapp"을 갖는 "bundleId" 이벤트들이 발생하는 경우, "mailapp"이 발생하는 상대적 가능성(즉, 점수)은 0.43(예를 들어, 3/7)이고, "webbrowser"가 발생하는 상대적 가능성은 0.29(예를 들어, 2/7)이며, "contacts" 또는 "calendar"가 발생하는 상대적 가능성들은 0.14(예를 들어, 1/7)이다. 일부 구현예들에서, 열 데몬(31_110)은 점수에 따라 속성 값들의 목록을 순서화할 수 있다(예를 들어, 상단에서 최고 점수, 하단에서 최저 점수). 예를 들어, 위의 "bundleId" 속성 값들에 대한 순서화된 목록은 위에서 아래로 다음과 같다: "mailapp";"webbrowser";"contacts";및 "calendar".
일부 구현예들에서, 열 데몬(31_110)은 속성 값이 순서화된 목록 내에서 어디에 있는지에 기초하여 속성 값에 대해 언제 '예'로 투표할지를 결정할 수 있다. 예를 들어, 열 데몬(31_110)에 의해 고려 중인 속성 값이 샘플링 데몬(31_102)으로부터 수신된 피어 예측 목록 내에 있지 않은 경우, 속성 값은 열 데몬(31_110)으로부터 '아니오' 투표를 받을 것이다. 속성 값이 피어 예측 목록 내에 있고 목록 내의 임계 레벨(예를 들어, 지수) 미만인 경우(예를 들어, 점수들에 기초한 속성들의 하위 25% 내), 열 데몬(31_110)은 속성에 대해 '아니오'로 투표할 것이다. 속성 값이 피어 예측 목록 내에 있고 목록 내의 임계 레벨 초과인 경우(예를 들어, 점수들에 기초한 속성들의 상위 75% 내), 열 데몬(31_110)은 속성에 대해 '예'로 투표할 것이다. 투표가 결정되면, 열 데몬(31_110)은 샘플링 데몬(31_102)에 '예'(예를 들어, 참) 또는 '아니오'(예를 들어, 거짓) 투표를 반환할 것이다.
일부 구현예들에서, 열 데몬(31_110)은 모든 속성 값들에 대해 '아니오'로 투표하는 것을 피하기 위해(예를 들어, 일부 속성 이벤트들이 발생하도록) 최대 임계 레벨로 구성될 수 있다. 최대 임계 레벨은 순서화된 피어 예측 목록에서 속성 값들의 50%(예를 들어, 상위 50%는 '예' 투표를 얻고, 하위 50%는 '아니오' 투표를 얻음)일 수 있다. 따라서, 열 데몬(31_110)은 '아니오' 투표를 수신할 속성 값들로부터 '예' 투표를 수신할 속성 값들을 분리시키는 임계 레벨을, 최저 점수들을 갖는 속성 값들의 0%에서 50%까지 조정할 수 있다.
일부 구현예들에서, '예' 또는 '아니오' 투표들을 결정하기 위한 임계 레벨은 모바일 디바이스(31_100)의 열 레벨(예를 들어, 온도)에 비례할 수 있다. 예를 들어, 열 데몬(31_110)은 최대 동작 열 레벨(Lh) 및 정상 동작 레벨(Ln)로 구성될 수 있다. 열 데몬(31_100)은 현재의 동작 열 레벨(Lc)을 결정할 수 있고, 모바일 디바이스(31_100)가 현재 동작하고 있는 열 범위(예를 들어, Lh-Ln)의 백분위수(예를 들어, Lc-Ln / Lh-Ln = %)를 결정할 수 있다. 열 데몬(31_110)은 계산된 백분위수를 사용하여 0 내지 50% 속성 값들의 어느 부분이 '아니오' 투표를 받아야 하는지를 결정할 수 있다. 예를 들어, 현재의 동작 열 레벨이 열 범위의 65%인 것으로 계산되면, 피어 예측 점수에 의한 속성 값들의 하위 32.5%는 열 데몬(31_110)으로부터 '아니오' 투표를 받을 것이다. 따라서, 가장 중요한 속성 값들이 '예' 투표를 받는 반면에 가장 중요하지 않은 속성 값들은 '아니오' 투표를 받을 것이다. 위의 "bundleId" 예를 다시 참조하면, 위의 "bundleId" 속성 값들의 순서화된 목록이 위에서 아래로 "mailapp";"webbrowser";"contacts";및 "calendar"인 경우, "calendar"는 '아니오' 투표를 받을 것이고, "mailapp", "webbrowser", 및 "contacts"는 '예' 투표를 받을 것이다(예를 들어, "mailapp", "webbrowser", 및 "contacts"는 가장 많이 사용되는 애플리케이션들이다). 예를 들어, 애플리케이션 관리자(31_106)가 어떤 애플리케이션들을 개시할지를 결정하기 위해 "bundleId" 속성에 대한 승인 제어 요청을 했다면, "mailapp", "webbrowser", 및 "contacts" 애플리케이션들이 개시될 것이고 "calendar" 애플리케이션은 개시되지 않을 것이다.
다른 예로서, 열 데몬(31_110)은 "mailapp.mailbox" 속성에 대해 투표하도록 요청될 수 있다. 가장 자주 액세스되는 폴더로부터 가장 덜 자주 액세스되는 폴더를 나타내는 메일 폴더들의 순서화된 목록(예를 들어, "inbox"; "personal"; "work"; "family"; "spam"; 및 "trash")를 생성하는 "mailapp.mailbox" 속성 값들에 대해, 피어 예측이 생성될 수 있다. 속성 값들의 하위 32.5%가 '아니오' 투표를 받게 되면, "spam" 및 "trash"는 '아니오' 투표를 받을 것이다. 예를 들어, "mailbox" 애플리케이션이 어느 폴더들에 대해 이메일을 페치할지를 결정하기 위해 "mailapp.mailbox" 속성에 대한 승인 제어 요청을 했다면, "mailapp" 애플리케이션은 "inbox", "personal" "work", 및 "family" 폴더들에 대한 이메일을 페치할 것이며 "spam" 및 "trash" 폴더들에 대한 이메일은 페치하지 않을 것이다. 일부 구현예들에서, 열 데몬(31_110)으로부터 '아니오' 투표를 받은 속성들 또는 속성 값들은, 샘플링 데몬(31_102)에 의해 유지되는 열 상태 값이 정상 동작 온도(예를 들어, 참 값)를 나타내도록 리셋될 때 통지될 수 있다. 예를 들어, 샘플링 데몬(31_102)은 '아니오' 투표를 받은 클라이언트들, 속성들 및 속성 값들을 식별하는 데이터를 저장할 수 있다. 열 데몬(31_110)으로부터 업데이트된 열 상태 값(예를 들어, 참)을 수신할 시에, 샘플링 데몬(31_102)은 이전에 거절된 속성 또는 속성 값에 대한 다른 승인 제어 요청을 시도하도록 클라이언트에게 프롬프트하기 위해 '아니오' 투표를 받은 클라이언트들에게 통지를 송신할 수 있다. 일부 구현예들에서, 클라이언트들은 샘플링 데몬(31_102)으로부터의 프롬프트 없이 승인 제어 요청을 재송신할 수 있다. 예를 들어, 클라이언트는 일정 기간이 경과한 후 클라이언트로 하여금 승인 제어 요청을 재시도하게 하는 내부 타이머를 가질 수 있다.
활동 모니터
일부 구현예들에서, 활동 모니터 애플리케이션(408)은 승인 제어 투표자로서 구성될 수 있다. 활동 모니터(31_408)는, 활동 모니터(31_408)가 샘플링 데몬(31_102)으로부터 투표 요청들을 수신하고 투표(예를 들어, 예, 아니오) 응답들을 샘플링 데몬(31_102)에 제공할 수 있게 하는 샘플링 데몬(31_102)의 투표 API를 사용하도록 구성될 수 있다. 예를 들어, 활동 모니터(31_408)는 속성 및/또는 속성 값을 포함하는 투표 요청을 샘플링 데몬(31_102)으로부터 수신할 수 있다. 활동 모니터(31_408)는, 모바일 디바이스(31_100)가 메모리 리소스들 또는 CPU 리소스들의 임계량(예를 들어, 90%) 초과를 사용하고 있을 때 샘플링 데몬(31_102)이 속성 또는 속성 값과 연관된 이벤트를 인정하거나 허용해서는 안된다는 것을 나타낼 수 있다. 예를 들면, 모바일 디바이스(31_100)가 모바일 디바이스(31_100)의 메모리 리소스들 또는 CPU 리소스들의 대부분을 사용하고 있는 많은 애플리케이션들 또는 프로세스들을 이미 구동하고 있으면, 백그라운드에서 추가 애플리케이션들을 개시하는 것은 남아있는 메모리 리소스들을 다 써버림으로써 모바일 디바이스(31_100)의 성능을 감소시킬 가능성이 있을 것이다. 따라서, 활동 모니터(31_408)가 메모리 또는 CPU 사용량이 임계값(예를 들어, 75%)을 초과함을 결정하는 경우, 활동 모니터(31_408)는, 샘플링 데몬(31_102)이 "bundleId" 속성 이벤트에 대해 투표하라는 요청을 송신할 때 "아니오" 값을 반환함으로써, 애플리케이션 관리자(31_106)가 추가 애플리케이션들을 개시하는 것을 방지할 수 있다. 활동 모니터(31_408)가 모바일 디바이스(31_100)의 메모리 및/또는 CPU 리소스들이 임계 사용량보다 낮음을 결정하는 경우, 활동 모니터(31_408)는 샘플링 데몬(31_102)으로부터의 투표 요청에 응답하여 "예" 값을 반환할 수 있다.
백그라운드 페치 애플리케이션을 개시
일부 구현예들에서, 애플리케이션 관리자(31_106)가 샘플링 데몬(31_102)에 승인 제어 요청을 하고 "예" 응답을 수신하는 경우, 애플리케이션 관리자(31_106)는 모바일 디바이스(31_100)의 동작 환경의 백그라운드에서 식별된 애플리케이션(예를 들어, "bundleId" 속성 값에 의해 식별된 바와 같은, 애플리케이션(31_108))을 호출하거나 개시할 수 있다. 예를 들면, 애플리케이션(31_108)은, 애플리케이션(31_108)이 개시되었는지가 사용자에게 명백하게 되지 않도록, 백그라운드에서 개시될 수 있다. 이어서, 애플리케이션(31_108)은 네트워크(예를 들어, 인터넷)를 통해 콘텐츠 서버(31_404)와 통신하여, 사용자에게 디스플레이하기 위한 업데이트된 콘텐츠를 다운로드할 수 있다. 따라서, 사용자가 애플리케이션(31_108)을 후속적으로 선택하는 경우(예를 들어, 애플리케이션을 포어그라운드로 가져옴), 사용자는, 애플리케이션(31_108)이 서버(31_404)로부터 콘텐츠를 다운로드하고 애플리케이션의 사용자 인터페이스들을 리프레시하도록 기다릴 필요 없이 현재 및 최신 콘텐츠를 제시받을 수 있다.
일부 구현예들에서, 애플리케이션 관리자(31_106)는, 모바일 디바이스(31_100)가 충전되고 있고 Wi-Fi에 연결되어 있을 때 백그라운드 페치 인에이블된 애플리케이션들을 개시하도록 구성될 수 있다. 예를 들면, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)가 (예를 들어, "cablePlugin" 속성 이벤트들에 기초하여) 외부 전원에 연결되고 (예를 들어, 수신된 이벤트들에 기초하여) Wi-Fi를 통해 네트워크(예를 들어, 인터넷)에 연결되는 때를 결정할 수 있고, 애플리케이션 관리자(31_106)로 하여금 이전 시간의 양(예를 들어, 7일) 내에서 사용된 페치 인에이블된 애플리케이션들을 개시하게 하는 신호를 애플리케이션 관리자(31_106)에 송신할 수 있다.
예시적인 백그라운드 페치 프로세스
도 31f은 백그라운드 업데이트들을 수행하기 위하여 애플리케이션들을 예측적으로 개시하기 위한 예시적인 프로세스(31_600)의 흐름도이다. 예를 들면, 프로세스(31_600)는 도 31d의 콘텐츠 서버(31_404)와 같은 네트워크 리소스들로부터 데이터 업데이트들을 페치하도록 구성된 백그라운드 애플리케이션들을 언제 개시할지를 결정하기 위해 애플리케이션 관리자(31_106) 및 샘플링 데몬(31_102)에 의해 수행될 수 있다. 프로세스(31_600)의 단계들에 관련된 추가 설명은 위에서 도 31d 및 도 31e를 참조하여 발견될 수 있다.
단계(31_602)에서, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)으로부터 애플리케이션 호출 예측을 수신할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 모바일 디바이스(31_100)의 시동 동안 개시될 수 있다. 그것의 초기화 동안, 애플리케이션 관리자(31_106)는 다음 24시간 기간에 걸쳐 모바일 디바이스(31_100)의 사용자에 의해 호출될 가능성이 있는 애플리케이션들의 예측을 요청할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 속성 "bundleId"에 대한 시간 예측을 요청할 수 있다. 이러한 예측은 애플리케이션들을 언제 개시할지를 나타낼 수 있다. 예를 들어, 24시간 기간은 15분 블록들로 분할될 수 있고, 각 15분 블록은 사용자가 15분 블록 동안 애플리케이션을 호출할 확률과 연관될 수 있다. 애플리케이션 관리자(31_106)로 반환된 예측은 사용자가 애플리케이션을 호출할 가능성이 있는 시간의 64개의 15분 블록들까지 식별할 수 있다.
단계(31_604)에서, 애플리케이션 관리자(31_106)는 애플리케이션 개시 예측에 기초하여 타이머들을 설정할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)에 의해 애플리케이션 관리자(31_106)로 반환된 애플리케이션 개시 예측에서 식별된 15분 블록들 각각에 대하여 타이머 또는 알람을 설정할 수 있다.
단계(31_606)에서, 애플리케이션 관리자(31_106)는 무슨 애플리케이션들을 개시할지를 식별할 것을 샘플링 데몬(31_102)에 요청할 수 있다. 예를 들면, 타이머가 만료되거나 알람이 울릴 때, 애플리케이션 관리자는, 슬리핑하고 있거나 또는 보류되어 있는 경우, 웨이크할 수 있고, 시간의 현재 15분 블록에 대해 개시할 애플리케이션들의 목록을 샘플링 데몬(31_102)으로부터 요청할 수 있다. 샘플링 데몬(31_102)은 모바일 디바이스(31_100) 상의 백그라운드에서 개시되어야 하는 애플리케이션들의 목록을 반환할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 속성 "bundleId"에 대한 피어 예측을 요청할 수 있다. 피어 예측은 현재의 15분 타임슬롯에서 "bundleId" 속성의 어떤 값들이 보고될 가능성이 가장 높은지(예를 들어, 어떤 애플리케이션들이 사용자에 의해 호출될 가능성이 가장 높은지)를 나타낼 수 있다.
단계(31_607)에서, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)에 애플리케이션을 개시해도 좋은지 여부를 질의하는 요청을 송신할 수 있다. 예를 들면, "bundleId" 피어 예측 요청에 대한 응답으로 샘플링 데몬(31_102)에 의해 식별된 각 애플리케이션에 대하여, 애플리케이션 관리자(31_106)는 애플리케이션을 개시해도 좋은지 여부를 샘플링 데몬(31_102)에 질의할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는, 샘플링 데몬(31_102)이 애플리케이션 관리자(31_106)가 개시하려고 시도하고 있는 애플리케이션에 대응하는 "bundleId" 속성의 특정 값에 대한 승인 제어를 수행할 것을 요청할 수 있다. 샘플링 데몬(31_102)은 애플리케이션을 개시해도 좋다면 승인 제어 요청으로부터 "예"를, 애플리케이션을 개시해서는 안된다면 "아니오"를, 또는 애플리케이션을 개시해서는 절대 안된다면 "절대 안됨(never)"을 반환할 수 있다.
단계(31_610)에서, 애플리케이션 관리자(31_106)는 애플리케이션을 개시할 수 있다. 예를 들면, 샘플링 데몬(31_102)이 승인 제어 요청에 대한 "좋음"(예를 들어, 좋음, 예, 참 등) 응답을 반환하는 경우, 애플리케이션 관리자(31_106)는 모바일 디바이스(31_100)의 백그라운드 프로세스로서 애플리케이션을 개시할 것이다. 샘플링 데몬(31_102)이 승인 제어 요청에 대해 "아니오" 또는 "절대 안됨" 응답을 반환하면, 애플리케이션 관리자(31_106)는 애플리케이션을 개시하지 않을 것이다.
단계(31_612)에서, 애플리케이션 관리자(31_106)는 애플리케이션 개시 통지를 샘플링 데몬(31_102)에 전송할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 개시된 애플리케이션의 실행을 기록하기 위해 샘플링 데몬(31_102)에 "bundleId" 시작 이벤트를 전송할 수 있다.
단계(31_614)에서, 애플리케이션 관리자(31_106)는 개시된 애플리케이션이 종료되었음을 검출할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 개시된 애플리케이션이 모바일 디바이스(31_100) 상에서 더 이상 구동되지 않고 있을 때를 결정할 수 있다.
단계(31_616)에서, 애플리케이션 관리자(31_106)는 애플리케이션 종료 통지를 샘플링 데몬(31_102)에 전송할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 애플리케이션의 종료를 기록하기 위해 샘플링 데몬(31_102)에 "bundleId" 종료 이벤트를 전송할 수 있다.
도 31g은 모바일 디바이스(31_100) 상에서 애플리케이션들을 언제 개시할지를 결정하기 위한 예시적인 프로세스(31_700)의 흐름도이다. 예를 들면, 프로세스(31_700)는 애플리케이션을 언제 개시할지, 무슨 애플리케이션을 개시해야 하는지, 그리고 애플리케이션 사용 통계치(예를 들어, "bundleId" 속성 이벤트 데이터), 데이터와 에너지 예산들, 및 모바일 디바이스 동작 및 환경 조건들에 기초하여 애플리케이션들을 개시해도 좋은지 여부를 결정하는 데 사용될 수 있으며, 이는 도 31d를 참조하여 상세하게 전술한 바와 같다.
단계(31_702)에서, 샘플링 데몬(31_102)은 애플리케이션 관리자(31_106)로부터 애플리케이션 개시 예측 요청을 수신할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)으로부터 다음 24시간 동안 "bundleId" 속성에 대한 시간 예측을 요청할 수 있다. 24시간 기간이 경과했으면, 애플리케이션 관리자(31_106)는 후속 24시간 기간 동안 "bundleId" 속성에 대한 시간 예측을 요청할 수 있다. 예를 들어, 애플리케이션 관리자(31_106)는 24시간마다 "bundleId" 속성에 대한 시간 예측을 요청할 수 있다.
단계(31_704)에서, 샘플링 데몬(31_102)은 애플리케이션 개시 예측을 결정할 수 있다. 예를 들면, 애플리케이션 개시 예측(예를 들어, "bundleId" 속성에 대한 시간 예측)은 사용자 시작된 애플리케이션 개시들이 24시간 기간 동안 언제 발생할 가능성이 있는지를 예측하는 데 사용될 수 있다. 24시간 기간은 15분 시간 블록들로 분할될 수 있다. 각각의 15분 시간 블록(예를 들어, 24시간 기간 내에 96개의 15분 시간 블록들이 있음)에 대하여, 샘플링 데몬(31_102)은 사용자 호출 통계치(예를 들어, "bundleId" 시작 이벤트들) 이력을 사용하여 사용자 시작된 애플리케이션 개시가 15분 시간 블록에서 발생할 확률을 결정할 수 있으며, 이는 도 31d를 참조하여 전술한 바와 같다.
단계(31_706)에서, 샘플링 데몬(31_102)은 애플리케이션 개시 예측을 애플리케이션 관리자(31_106)에 전송할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 사용자 시작된 애플리케이션 개시의 가장 높은 0이 아닌 확률을 갖는 최대 64개의 15분 블록들을 선택할 수 있다. 선택된 15분 블록들 각각은 15분 블록에 대한 시작 시간(예를 들어, 오후 12:45)에 의해 식별될 수 있다. 샘플링 데몬(31_102)은 애플리케이션 개시 예측(예를 들어, "bundleId" 속성에 대한 시간 예측)으로서 15분 블록 식별자들의 목록을 애플리케이션 관리자(31_106)에 송신할 수 있다.
단계(31_708)에서, 샘플링 데몬(31_102)은 현재 시간에 무슨 애플리케이션들을 개시할지에 대한 요청을 수신할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는, 현재 시간에 또는 대략 현재 시간에 어느 애플리케이션들이 개시되어야 하는지를 샘플링 데몬(31_102)이 결정하도록 하기 위해, 샘플링 데몬(31_102)에 요청을 송신할 수 있다. 예를 들어, 요청은 현재 15분 타임슬롯에 대한 "bundleId" 속성에 대한 피어 예측에 대한 요청일 수 있다.
단계(31_710)에서, 샘플링 데몬(31_102)은 이벤트 데이터 이력에 기초하여 현재 시간에 대해 애플리케이션들에 점수를 매길 수 있다. 샘플링 데몬(31_102)은 샘플링 데몬(31_102)에 의해 수집된 사용자 시작된 애플리케이션 개시 데이터(예를 들어, "bundleId" 속성 시작 이벤트 데이터) 이력에 기초하여 가까운 미래에 사용자가 어느 애플리케이션들을 개시할 가능성이 있는지를 결정할 수 있다. 샘플링 데몬(31_102)은 최근 애플리케이션 개시 데이터, 일단위 애플리케이션 개시 데이터 및/또는 주단위 애플리케이션 개시 데이터를 활용하여, 사용자가 현재 시간에 또는 대략 현재 시간에 애플리케이션을 호출할 가능성 이력에 기초하여 애플리케이션들에 점수를 매길 수 있으며, 이는 도 31d 및 도 31e를 참조하여 전술한 바와 같다.
단계(31_712)에서, 샘플링 데몬(31_102)은 애플리케이션들 및 애플리케이션 점수들을 애플리케이션 관리자(31_106)에 전송할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 가장 높은 점수들(예를 들어, 사용자에 의해 호출될 가장 높은 확률)을 갖는 애플리케이션들(예를 들어, "bundleId" 속성 값들)의 수(예를 들어, 3)를 선택하여 애플리케이션 관리자(31_106)에 전송할 수 있다. 샘플링 데몬(31_102)은 이전 시간 기간(예를 들어, 이전 5분) 내에서 개시된 애플리케이션들을 배제할 수 있다. 샘플링 데몬(31_102)은 가장 높은 점수가 매겨진 애플리케이션들 및 그것들 각자의 점수들을 식별하는 정보를 애플리케이션 관리자(31_106)에 전송할 수 있으며, 이는 도 31d를 참조하여 전술한 바와 같다.
단계(31_714)에서, 샘플링 데몬(31_102)은 애플리케이션을 개시해도 좋은지 여부를 결정하기 위해 애플리케이션 관리자(31_106)로부터 요청을 수신할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 애플리케이션(예를 들어, "bundleId" 값)을 식별하는 승인 제어 요청을 수신할 수 있다.
단계(31_716)에서, 샘플링 데몬(31_102)은 현재 모바일 디바이스 상태 및 예산들이 애플리케이션 개시를 허용함을 결정할 수 있다. 예를 들어, 승인 제어 요청에 응답하여, 샘플링 데몬(31_102)은 시스템-범위 데이터 및 에너지 예산들, 속성 예산들 및 투표자 피드백을 체크하여, 애플리케이션이 모바일 디바이스(31_100) 상의 백그라운드 태스크로서 개시되어야 하는지 여부를 결정할 수 있으며, 이는 도 31d를 참조하여 위에서 상세히 기술된 바와 같다.
단계(31_718)에서, 샘플링 데몬(31_102)은 식별된 애플리케이션을 개시해도 좋다는 것을 나타내는 응답을 애플리케이션 관리자(31_106)에 전송할 수 있다. 예를 들면, 상태들이 백그라운드 애플리케이션 개시에 대해 양호하면, 샘플링 데몬(31_102)은 애플리케이션 관리자(31_106)가 식별된 애플리케이션을 개시할 수 있도록 승인 제어 요청에 응답하여 "예" 값(예를 들어, 좋음, 예, 참 등)을 애플리케이션 관리자(31_106)에 반환할 수 있다.
단기간 트렌딩
일부 구현예들에서, 샘플링 데몬(31_102)은 속성들이 트렌딩한 때를 검출하도록 구성될 수 있다. 예를 들어, 클라이언트 애플리케이션은 특정 속성에 대한 관심을 샘플링 데몬(31_102)에 등록할 수 있다. 샘플링 데몬(31_102)이 특정 속성이 트렌딩하다는 것을 검출하는 경우, 샘플링 데몬(31_102)은 특정 속성이 트렌딩하다는 것을 클라이언트에게 통지할 수 있다.
예를 들어, 애플리케이션 관리자(31_106)는 "bundleId" 속성(또는 "bundleId" 속성의 특정 값)에 대한 관심을 등록할 수 있다. 샘플링 데몬(31_102)이 "bundleId" 속성(또는 그 값)이 트렌딩하다는 것을 결정하는 경우, 샘플링 데몬(31_102)은 애플리케이션 관리자(31_106)에게 트렌드를 통지하여, 애플리케이션 관리자(31_106)가 모바일 디바이스(31_100) 상의 백그라운드에서 트렌딩 애플리케이션을 예측적으로 개시하도록 할 수 있다. 예를 들면, 애플리케이션은 애플리케이션이 모바일 디바이스(31_100)의 사용자에 의해 반복적으로 호출되고 있다면 트렌딩하다. 일부 경우들에서, 트렌딩 애플리케이션은, 새로운 애플리케이션이거나 또는, 트렌드 이전에, 전술한 "bundleId" 속성 피어 예측에 포함될 수 없는 거의 사용되지 않은 애플리케이션이다. 따라서, 트렌딩 애플리케이션은 전술한 애플리케이션 개시 예측 방법들을 사용하여 최신상태로 유지되지 않을 수도 있다.
속성 트렌드 검출의 목적은 샘플링 데몬(31_102)에 반복적으로 보고되고 있는 속성들(예를 들어, 속성 이벤트들)을 검출하는 것, 및 그를 이용하여 속성들이 개시되는 대략적인 카덴스(cadence)(예를 들어, 주기성)를, 보다 작은 카덴스를 보고하는 것 위주로 결정하는 것이다. 샘플링 데몬(31_102)에 반복적으로 보고되고 있는 속성들은 "트렌딩"으로 지칭된다. 이어서, 결정된 카덴스는, 트렌딩 속성과 연관된 다음 이벤트를 예상하여 기능들 또는 동작들을 수행하기 위해 샘플링 데몬(31_102) 클라이언트들에 의해 사용될 수 있다.
예를 들어, 결정된 카덴스는, 사용자가 애플리케이션들을 호출할 때 애플리케이션들이 업데이트되도록, 애플리케이션 관리자(31_106)를 트리거하여 백그라운드에서 트렌딩 애플리케이션들을 개시할 타이머들을 설정하기 위하여 애플리케이션 관리자(31_106)에 의해 사용될 수 있으며, 이는 전술한 바와 같다. 예를 들면, 카덴스가 애플리케이션에 대해 5분이면, 애플리케이션 관리자(31_106)는, 4분마다 만료될 것이고 애플리케이션 관리자(31_106)로 하여금 애플리케이션이 업데이트된 콘텐츠를 수신하고 사용자에 의해 다시 호출되기 전에 애플리케이션의 인터페이스들을 업데이트할 수 있도록 애플리케이션을 개시하게 할 타이머를 설정할 수 있다.
일부 구현예들에서, 이 섹션에 기술된 트렌드 검출 메커니즘들은 반복되는 소프트웨어 또는 네트워크 통지들, 애플리케이션 충돌들 등과 같은, 애플리케이션 개시들 이외의 기타 시스템 이벤트 트렌드들을 검출하는 데 사용될 수 있다. 예를 들어, 클라이언트들은 임의의 속성 또는 속성 값에 대한 관심을 등록할 수 있고, 관심 속성들이 트렌딩할 때 통지들을 수신할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 다수의 속성들의 거동을 추적하는 데 사용될 수 있는 트렌딩 표를 유지할 수 있다. 트렌딩 표는 속성 값 식별 필드(attribute value identification field; ATTID), 상태 필드(STATE), 마지막 개시 타임스탬프(last launch timestamp; LLT), 개시들 사이의 시간의 양을 나타내는 개시-간 카덴스(inter-launch cadence; ILC), 및 신뢰도 필드(C)를 포함할 수 있다.
도 31h은 트렌딩 표 내의 엔트리(예를 들어, 애플리케이션)에 대한 상태 전이들을 예시하는 흐름도(31_800)이다. 초기에 단계(31_802)에서, 트렌딩 표는, ATTID, LLT, ILC 및 C 필드들이 비어있고(예를 들어, N/A), STATE가 "무효"(I)로 설정된 빈 엔트리들(예를 들어, 기록들)을 포함할 수 있다. 속성 이벤트가 시간(t)에서 보고되는 경우, 트렌딩 표는 이용 가능한 엔트리(예를 들어, 상태(I)에서의 엔트리)에 대하여 스캐닝된다. 가능한 무효 엔트리들 중에서, 사용할 엔트리를 선택하기 위해 다양한 방법들이 사용될 수 있다. 예를 들면, 랜덤 무효 엔트리(random invalid entry)가 선택될 수 있다. 대안적으로, 무효 엔트리는 트렌딩 표 내의 모든 빈 엔트리들이 연속적인 순서로 유지되도록 선택될 수 있다. 어떠한 무효 엔트리도 존재하지 않으면, 과도(T) 상태에서 가장 오래된 엔트리(또는 랜덤 엔트리)가 새로 개시된 애플리케이션을 추적하기 위해 선택될 수 있다. 어떠한 I 또는 T 상태 엔트리들도 존재하지 않는다면, 가장 오래된 새로운(N) 상태 엔트리가 새로 보고된 속성 이벤트를 추적하기 위해 선택될 수 있다.
단계(31_804)에서, 트렌딩 표 엔트리가 선택되면, 새로 보고된 속성 이벤트를 추적하기 위한 선택된 엔트리의 STATE 필드는 새로운(N)으로 설정될 수 있고, ATTID는 새로 보고된 속성의 속성 값으로 설정될 수 있고, LLT 필드는 현재 시간(t)(예를 들어, 벽시계 시간)으로 설정될 수 있으며, ILC 및 C 필드들은 미리정의된 최소 값들(ILC_MIN(예를 들어, 1분) 및 C_MIN(예를 들어, 0))로 설정된다.
단계(31_806)에서, 시간(t')에서 동일한 속성 이벤트의 다음 보고 시에, 속성에 대한 표 내의 엔트리는 그것이 여전히 존재하고 축출되지 않았다면 발견된다(예를 들면, 다른 속성을 추적하기 위해 선택됨). 엔트리의 STATE는 과도(T)로 설정되고, ILC는 LLT와 현재 시스템 시간 사이의 차이(예를 들어, t'-t 또는 t'-LLT)로 설정되며, C 필드는 증분된다(예를 들어, 미리정의된 값 C_DELTA만큼). 대안적으로, ILC 필드는 그것의 오래된 그리고 새로운 값들의 어떤 다른 함수, 예를 들어 이동 평균(running average)으로 설정될 수 있다.
단계(31_808)에서, 시간(t'')에서 동일한 속성 이벤트의 다음 보고 시에, 속성에 대한 표 내의 엔트리는 그것이 여전히 존재하고 축출되지 않았다면 발견된다(예를 들면, 다른 속성을 추적하기 위해 선택됨). 엔트리의 STATE는 계속 과도(T)로 설정될 수 있고, ILC는 LLT와 현재 (예를 들어, 벽) 시계 시간 사이의 차이(예를 들어, t"-t' 또는 t"-LLT)로 설정되며, C 필드는 다시 증분된다(예를 들어, 미리정의된 값 C_DELTA만큼).
단계(31_810)에서, 속성 이벤트의 여러 보고들 후에, 트렌딩 표 엔트리의 C 값이 임계값(예를 들어, C_HIGHTHRESHOLD)에 도달(예를 들어, 동일)하면, 단계(31_811)에서, 속성 엔트리의 상태는 STATE = A로 변경될 수 있다. 단계(31_810)에서, 트렌딩 표 엔트리의 C 값이 임계값(예를 들어, C_HIGHTHRESHOLD)에 도달하지 않는다면, 엔트리의 값들은 단계(31_808)에 따라 업데이트될 수 있다.
상태 "A"에 있는 동안 속성 이벤트가 보고될 때는 언제든지, 마지막 보고와 현재 보고의 시간 사이의 시간이 소정 시간의 양 내에 있으면(예를 들어, ILC_EPSILON = 5분), 속성 엔트리의 신뢰도(C) 필드는 그것이 미리정의된 최대 값(예를 들어, C_MAX)에 도달할 때까지 증분된다. 트렌딩 표 내의 속성 엔트리가 활성(A) 상태에 있는 경우, 엔트리의 ILC 값은 개시의 레이트(예를 들어, 카덴스)의 추정으로서 사용될 수 있고 엔트리의 ATTID는 트렌딩 속성 값을 식별하는 데 사용될 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 속성 값(ATTID) 및 카덴스 값(ILC)을 클라이언트에게 송신하여, 클라이언트가 속성 값과 연관된 다음 이벤트를 예상하여 어떤 동작 또는 기능을 수행하도록 할 수 있다. 예를 들어, 속성 값 및 카덴스 값은 애플리케이션 관리자(31_106)에 송신되어, 애플리케이션 관리자(31_106)가 애플리케이션의 사용자 호출을 예상하여 백그라운드에서 식별된 애플리케이션(예를 들어, ATTID, "bundleId" 속성 값)을 개시함으로써, 사용자가 애플리케이션을 개시하기 전에 애플리케이션이 업데이트된 콘텐츠를 수신할 수 있도록 할 수 있으며, 이는 전술한 바와 같다. 예를 들면, 애플리케이션 관리자(31_106)는, 사용자가 애플리케이션을 호출하는 것을 예상하여 애플리케이션 관리자(31_106)를 웨이크하여 애플리케이션을 개시할 카덴스 값에 기초하여 타이머를 시작할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 검출된 속성 트렌드에 기초하여 속성 이벤트의 예상된 다음 발생을 클라이언트들에게 통지할 수 있다. 예를 들어, 샘플링 데몬(31_102)은, 트렌딩 애플리케이션이 애플리케이션 관리자(31_106)에 의해 개시되어야 함을 나타내는 신호 또는 통지를 애플리케이션 관리자(31_106)에 송신할 수 있다. 애플리케이션 관리자(31_106)는 애플리케이션 식별자(예를 들어, "bundleId" 속성 값)를 샘플링 데몬(31_102)에 송신함으로써 애플리케이션에 대한 관심을 등록할 수 있다. 샘플링 데몬(31_102)은 (예를 들어, 보고된 "bundleId" 시작 이벤트들에 기초하여) 사용자 호출에 대한 애플리케이션을 모니터링하여 애플리케이션이 트렌딩한지를 결정할 수 있고, 이는 전술한 바와 같다. 애플리케이션이 트렌딩한 경우, 샘플링 데몬(31_102)은 전술한 바와 같이 호출의 카덴스를 결정하고, 카덴스에 기초하여 결정된 시간에 통지 또는 신호를 애플리케이션 관리자(31_106)에 송신할 수 있다. 예를 들면, 카덴스가 4분이면, 샘플링 데몬(31_102)은 3분마다(예를 들어, 이벤트의 다음 발생보다 소정 시간 기간 전에) 신호를 애플리케이션 관리자(31_106)에 송신하여 애플리케이션 관리자(31_106)로 하여금 애플리케이션을 개시하게 할 수 있다. 카덴스가 6분으로 변경되면, 샘플링 데몬(31_102)은 카덴스 변경을 검출하고 애플리케이션 관리자(31_106)가 언제 시그널링되는지를 조정할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 3분마다 대신에 5분마다 애플리케이션을 개시하도록 애플리케이션 관리자(31_106)를 시그널링하여 감소된 카덴스에 대해 조정될 수 있다(예를 들어, 호출들 사이에 증가된 시간 기간).
임의의 이유(예를 들어, 새로운 엔트리 추가, 기존의 엔트리 업데이트 등)에 대한 속성 트렌딩 표의 각 검사에서, 마지막 개시 이래로의 시간이 그것들의 ILC보다 ILC_EPSILON만큼 큰 STATE = T 또는 STATE = A 내의 모든 엔트리들은 그것들의 C 값들이 감소되게 할 것이다. 그 지점에서 C 값이 최소 임계값(예를 들어, C_LOWTHRESHOLD) 미만으로 떨어지는 임의의 엔트리는 강등된다. 엔트리는, 예를 들면, 상태 A 에서 상태 T로, 또는 상태 T에서 상태 I로 강등될 수 있다.
일부 구현예들에서, 전술한 트렌드 검출 메커니즘은 애플리케이션 호출들 또는 개시들 외에 트렌딩 이벤트들을 검출하는 데 사용될 수 있다. 예를 들면, 전술한 트렌드 검출 방법 및 트렌딩 표는 모바일 디바이스(31_100) 상에서의 임의의 반복되는 이벤트(예를 들어, 임의의 속성 이벤트)를 검출하고 추적하는 데 사용될 수 있다. 트렌딩 이벤트는 화면 터치, 네트워크 연결, 애플리케이션 고장, 네트워크 침입의 발생 및/또는 샘플링 데몬(31_102)에 보고되거나 시그널링될 수 있는 임의의 다른 이벤트를 포함할 수 있다.
푸시 통지
도 31i는 푸시 통지들을 모바일 디바이스(31_100)에 제공하기 위한 시스템을 예시하는 블록도(31_900)이다. 일부 구현예들에서, 모바일 디바이스(31_100)는 푸시 통지들을 수신하도록 구성될 수 있다. 예를 들면, 푸시 통지는, 푸시 제공자(31_902)에 의해 시작되고 푸시 통지 서버(31_906)를 통해 모바일 디바이스(31_100) 상에서 구동되는 푸시 서비스 데몬(31_904)에 송신되는 메시지일 수 있다.
일부 구현예들에서, 푸시 제공자(31_902)는 애플리케이션(31_908)에 의해 모바일 디바이스(31_100)의 사용자에게 제시되는 사용자 승인 요청을 통해 푸시 통지들을 모바일 디바이스(31_100)에 송신하기 위하여 승인을 수신할 수 있다. 예를 들면, 푸시 제공자(31_902)는 애플리케이션(31_908)을 생성(예를 들어, 프로그래밍, 개발)한 동일한 벤더에 의해 소유되고, 운영되고/되거나 유지되는 서버일 수 있다. 푸시 제공자(31_902)는, 애플리케이션(31_908)이 푸시 제공자(31_902)가 푸시 통지들을 모바일 디바이스(31_100)로 송신하라는 승인을 요청하는 사용자 인터페이스를 모바일 디바이스(31_100) 상에 보여주고 사용자가 푸시 통지들이 승인됨을 나타내는 경우, 사용자로부터 승인을 수신하여 푸시 통지들을 모바일 디바이스(31_100)(예를 들어, 푸시 서비스 데몬(31_904))에 송신할 수 있다. 예를 들면, 사용자는 애플리케이션(31_908)에 의해 보여지는 사용자 인터페이스 상의 버튼을 선택하여 푸시 통지들이 푸시 제공자(31_902) 및/또는 애플리케이션(31_908)에 대해 승인됨을 나타낼 수 있다. 이어서, 푸시 제공자(31_902)는 모바일 디바이스(31_100)를 식별하고 모바일 디바이스(31_100)에 푸시 통지들을 라우팅하는 데 사용될 수 있는 디바이스 토큰을 수신할 수 있다. 예를 들면, 푸시 통지 서버(31_906)는 푸시 통지를 갖는 디바이스 토큰을 수신하고, 디바이스 토큰을 사용하여 어느 모바일 디바이스(31_100)가 푸시 통지를 수신해야 하는지를 결정할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 승인된 푸시 애플리케이션들을 식별하는 정보를 푸시 통지 서버(31_906)에 송신할 수 있다. 예를 들면, 모바일 디바이스(31_100)는 푸시 통지 필터들(31_914) 및 모바일 디바이스(31_100)에 대한 디바이스 토큰을 포함하는 메시지(31_926)를 푸시 통지 서버(31_906)에 송신할 수 있다. 푸시 통지 서버(31_906)는 푸시 통지 서버(31_906)에 의해 서비스되는 각 모바일 디바이스에 대해 푸시 필터들(31_914)에 대한 디바이스 토큰들(예를 들어, 모바일 디바이스(31_100)에 대한 식별자)의 맵핑을 저장할 수 있다. 푸시 필터들(31_914)은 예를 들면, 모바일 디바이스(31_100) 상에서 푸시 통지들을 수신하도록 승인을 받은 애플리케이션들을 식별하는 정보를 포함할 수 있다.
일부 구현예들에서, 푸시 필터들(31_914)은 모바일 디바이스(31_100)의 사용자에 의해 승인되지 않은 애플리케이션들에 대한 푸시 통지들을 필터링(예를 들어, 송신을 방지)하기 위하여 푸시 통지 서버(31_906)에 의해 사용될 수 있다. 푸시 제공자(31_902)에 의해 푸시 통지 서버(31_906)로 송신된 각 푸시 통지는 푸시 제공자(31_902) 및 모바일 디바이스(31_100)와 연관된 애플리케이션(31_908)을 식별하는 정보(예를 들어, 식별자)를 포함할 수 있다(예를 들어, 디바이스 토큰).
통지 서버(31_906)가 푸시 통지를 수신하는 경우, 통지 서버(31_906)는 모바일 디바이스 식별 정보(예를 들어, 디바이스 토큰)를 사용하여, 수신된 푸시 통지에 어느 푸시 필터들(31_914)을 적용할지를 결정할 수 있다. 통지 서버(31_906)는 푸시 통지 내의 애플리케이션 식별 정보를 식별된 모바일 디바이스에 대한 푸시 필터들(31_914)과 비교하여, 푸시 제공자(31_902)와 연관되고 푸시 통지에서 식별된 애플리케이션이 푸시 필터(31_914)에서 식별되는지 여부를 결정할 수 있다. 푸시 통지와 연관된 애플리케이션이 푸시 필터들(31_914)에서 식별되면, 통지 서버(31_906)는 푸시 제공자(31_902)로부터 수신된 푸시 통지를 모바일 디바이스(31_100)에 전송할 수 있다. 푸시 통지에서 식별된 애플리케이션이 푸시 필터들(31_914)에서 식별되지 않으면, 통지 서버는 푸시 제공자(31_902)로부터 수신된 푸시 통지를 모바일 디바이스(31_100)에 전송하지 않을 것이고 푸시 통지를 삭제할 수 있다.
비웨이킹 푸시 통지
일부 구현예들에서, 통지 서버(31_906)는 높은 우선순위 푸시 통지들 및 낮은 우선순위 푸시 통지들을 처리하도록 구성될 수 있다. 예를 들면, 푸시 제공자(31_902)는 높은 우선순위 푸시 통지(31_910) 및/또는 낮은 우선순위 푸시 통지(31_912)를 푸시 통지 서버(31_906)에 송신할 수 있다. 푸시 제공자(31_902)는 예를 들어, 푸시 통지 서버(31_906) 및 모바일 디바이스(31_100)에 송신된 푸시 통지 내에 포함된 데이터에서 푸시 통지의 우선순위를 특정함으로써 높은 우선순위 또는 낮은 우선순위로서 푸시 통지를 식별할 수 있다.
일부 구현예들에서, 푸시 통지 서버(31_906)는 높은 우선순위 푸시 통지(31_910)와 상이하게 낮은 우선순위 푸시 통지(31_912)를 처리할 수 있다. 예를 들면, 푸시 통지 서버(31_906)는 높은 우선순위 푸시(31_910)에 포함된 애플리케이션 식별 정보를 푸시 필터들(31_914) 내의 승인된 애플리케이션 식별 정보와 비교하여 높은 우선순위 푸시 통지(31_910)가 모바일 디바이스(31_100)에 전송될 수 있는지 여부를 결정하도록 구성될 수 있다. 높은 우선순위 푸시 통지(31_910) 내의 애플리케이션 식별 정보가 푸시 필터들(31_914) 내의 승인된 애플리케이션 식별자와 매칭되면, 푸시 통지 서버(31_906)는 높은 우선순위 푸시 통지를 모바일 디바이스(31_100)에 전송할 수 있다. 높은 우선순위 푸시 통지(31_910) 내의 애플리케이션 식별 정보가 푸시 필터들(31_914) 내의 승인된 애플리케이션 식별자와 매칭되지 않으면, 푸시 통지 서버(31_906)는 높은 우선순위 푸시 통지를 모바일 디바이스(31_100)에 전송하지 않을 것이다.
일부 구현예들에서, 푸시 통지 서버(31_906)는 낮은 우선순위 푸시 통지들의 전달을 지연시키도록 구성될 수 있다. 예를 들면, 모바일 디바이스(31_100)가 푸시 통지 서버(31_906)로부터 푸시 통지를 수신하는 경우, 푸시 통지의 수신은 모바일 디바이스(31_100)로 하여금 (예를 들면, 슬립 또는 저전력 상태에 있으면) 웨이크업하게 한다. 모바일 디바이스(31_100)가 웨이크하는 경우, 모바일 디바이스(31_100)는 배터리를 소모하거나, 셀룰러 데이터를 사용하거나, 모바일 디바이스(31_100)로 하여금 뜨거워지게 하거나, 그렇지 않으면 모바일 디바이스(31_100)에 영향을 줄 수 있는 다양한 서브시스템들 및 프로세서들을 켤 것이다. 모바일 디바이스(31_100)로의 낮은 우선순위 푸시 통지들의 전달을 방지하거나 지연시킴으로써, 모바일 디바이스(31_100)는 예를 들면, 네트워크(예를 들어, 셀룰러 데이터) 및 시스템(예를 들어, 배터리) 리소스들을 보존할 수 있다.
일부 구현예들에서, 푸시 통지 필터들(31_914)은 웨이크 목록(31_916) 및 비웨이크 목록(31_918)을 포함할 수 있다. 웨이크 목록(31_916)은 낮은 우선순위 푸시 통지들이 모바일 디바이스(31_100)에 전달되어야 하는 애플리케이션을 식별할 수 있다. 일부 구현예들에서, 애플리케이션이 모바일 디바이스(31_100)에서 푸시 통지들을 수신하도록 승인되는 경우, 애플리케이션 식별 정보는 디폴트로 웨이크 목록(31_914)에 추가된다. 비웨이크 목록(31_918)은 낮은 우선순위 푸시 통지들이 지연되어야 하는 승인된 애플리케이션들을 식별할 수 있다. 비웨이크 목록(31_918)을 채우기 위한 그리고/또는 웨이크 목록(31_916)과 비웨이크 목록(31_918)을 조작하기 위한 특정 메커니즘은 푸시 통지 시작된 백그라운드 업데이트들을 설명할 때 이하에서 더 상세히 설명된다. 일부 구현예들에서, 높은 우선순위 푸시 통지들은 푸시 통지 서버(31_906)에서 지연되지 않을 것이고, 높은 우선순위 푸시 통지에서 식별된 애플리케이션이 푸시 필터들(31_914)에서 식별되는 한(예를 들어, 웨이크 목록(31_914) 및/또는 비웨이크 목록(31_918)) 모바일 디바이스(31_100)에 전달될 것이다.
일부 구현예들에서, 푸시 통지 서버(31_906)가 낮은 우선순위 푸시 통지(31_912)를 수신하는 경우, 푸시 통지 서버(31_906)는 낮은 우선순위 푸시 통지(31_912) 내의 애플리케이션 식별자를 웨이크 목록(31_916) 및/또는 비웨이크 목록(31_918)과 비교할 수 있다. 예를 들면, 낮은 우선순위 푸시 통지(31_912) 내의 애플리케이션 식별 정보가 웨이크 목록(31_916) 내의 승인된 애플리케이션 식별자와 매칭되면, 낮은 우선순위 푸시 통지(31_912)는 통지 메시지(31_920)로 모바일 디바이스(31_100)에 전달될 것이다.
일부 구현예들에서, 비웨이크 목록(31_918)에서 식별된 애플리케이션들과 연관된 낮은 우선순위 푸시 통지들의 전달은 지연될 수 있다. 예를 들면, 낮은 우선순위 푸시 통지(31_912)에서 식별된 애플리케이션이 또한 비웨이크 목록(31_918)에서 식별되면, 낮은 우선순위 푸시 통지(31_912)는 푸시 통지 데이터 저장소(31_922)에 저장될 수 있고 모바일 디바이스(31_100)에 즉시 전달되지 않을 수 있다. 일부 구현예들에서, 푸시 통지(높은 우선순위 또는 낮은 우선순위)에 의해 식별된 모바일 디바이스(31_100)가 푸시 통지 서버(31_906)에 현재 연결되어 있지 않으면, 연결해제된 모바일 디바이스(31_100)에 대한 푸시 통지는 모바일 디바이스(31_100)로의 이후 전달을 위해 푸시 통지 데이터 저장소(31_922)에 저장될 수 있다.
일부 구현예들에서, 푸시 데이터 저장소(31_922)에 저장된 푸시 통지들은, 저장된 푸시 통지와 연관된 애플리케이션 식별자가 비웨이크 목록(31_918)으로부터 웨이크 목록(31_916)으로 이동될 때까지 또는 네트워크 연결이 푸시 통지 서버(31_906)와 모바일 디바이스(31_100) 사이에 확립될 때까지, 푸시 데이터 저장소(31_922)에 남아있을 것이다.
예를 들면, 푸시 통지 서버(31_906)와 모바일 디바이스(31_100) 사이의 네트워크 연결은, 다른(높은 우선순위 또는 낮은 우선순위) 푸시 통지가 모바일 디바이스(31_100)에 전달되는 경우 또는 모바일 디바이스(31_100)가 다른 전송들(31_924)(예를 들어, 상태 메시지, 심장박동 메시지, 킵 얼라이브 메시지(keep alive message) 등)을 푸시 통지 서버(31_906)에 송신하는 경우, 확립될 수 있다. 예를 들면, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)가 일정 기간(예를 들어, 5분) 동안 활성화될 것임을 나타내는 메시지(31_924)를 푸시 통지 서버(31_905)에 송신할 수 있고, 푸시 통지 서버(31_906)는 특정된 활성 기간 동안 모든 수신된 푸시 통지들을 모바일 디바이스(31_100)에 송신할 수 있다. 일부 구현예들에서, 네트워크 연결이 모바일 디바이스(31_100)와 푸시 통지 서버(31_906) 사이에 확립되는 경우, 푸시 통지 저장소(31_922)에 저장된 모든 푸시 통지들은 모바일 디바이스(31_100)에 전달될 것이다. 예를 들면, 푸시 통지 데이터 저장소(31_922)에 저장된 푸시 통지들은 모바일 디바이스(31_100)와 푸시 통지 서버(31_906) 사이의 다른 전송들에 의해 생성된 연결들을 통해 전송될 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100)는 푸시 통지 서버(31_906)와의 2개의 상이한 통신 채널들을 확립할 수 있다. 예를 들면, 2개의 통신 채널들은 동시에 또는 상이한 시간에서 확립될 수 있다. 모바일 디바이스(31_100)는 예를 들면, 푸시 통지 서버(31_906)에 대한 셀룰러 데이터 연결 및/또는 Wi-Fi 연결을 가질 수 있다. 일부 구현예들에서, 모바일 디바이스(31_100)는 각 통신 채널에 대하여 상이한 푸시 필터들(31_914)을 생성하고 푸시 통지 서버(31_906)에 전송할 수 있다. 예를 들면, 셀룰러 데이터 연결은, 셀룰러 데이터 연결에 걸쳐 높은 우선순위 및 낮은 우선순위 푸시 통지들을 언제 송신할지를 결정하기 위해 제1 세트의 푸시 필터들(31_914)과 연관될 수 있다. Wi-Fi 데이터 연결은, Wi-Fi 데이터 연결에 걸쳐 높은 우선순위 및 낮은 우선순위 푸시 통지들을 언제 송신할지를 결정하기 위해 셀룰러 데이터 푸시 필터들과 동일하거나 상이한 제2 세트의 푸시 필터들(31_914)과 연관될 수 있다. 푸시 통지 서버(31_906)가 푸시 통지를 수신하는 경우, 푸시 통지 서버는 푸시 통지에서 식별된 애플리케이션을, 푸시 통지 서버(31_906)가 푸시 통지를 모바일 디바이스(31_100)에 전송하는 데 사용할 통신 채널(예를 들어, Wi-Fi, 셀룰러)에 대한 푸시 통지 필터들과 비교할 수 있다.
푸시 시작된 백그라운드 업데이트
일부 구현예들에서, 모바일 디바이스(31_100)에 의한 푸시 통지들의 수신은 모바일 디바이스(31_100) 상에서 애플리케이션들의 백그라운드 업데이트를 트리거할 수 있다. 예를 들면, 모바일 디바이스(31_100)(예를 들어, 푸시 서비스 데몬(31_904))가 푸시 통지 서버(31_906)로부터 푸시 통지 메시지(31_920)를 수신하는 경우, 푸시 서비스 데몬(31_904)은 푸시 통지 메시지(31_920) 내의 애플리케이션 식별자를 모바일 디바이스(31_100) 상에 저장된 푸시 필터들(31_928)과 비교하여 푸시 통지 메시지(31_920)가 적절하게 전달되었거나 푸시 통지 서버(31_906)에 의해 필터링되었어야 했는지(예를 들어, 전달되지 않았음)를 결정할 수 있다. 예를 들면, 푸시 필터들(31_928), 웨이크 목록(31_930) 및 비웨이크 목록(31_932)은 각각 푸시 필터들(31_914), 웨이크 목록(31_916) 및 비웨이크 목록(31_918)에 대응할 수 있다. 일부 구현예들에서, 푸시 서비스 데몬(31_904)이 푸시 통지 메시지(31_920)가 모바일 디바이스(31_100)에 전달되지 않았어야 함을 결정하면, 푸시 통지 메시지(31_902)는 삭제될 것이다.
낮은 우선순위 푸시 통지
일부 구현예들에서, 모바일 디바이스(31_100)에 의해 수신된 푸시 통지 메시지(31_920)는 낮은 우선순위 푸시 통지를 포함할 수 있다. 예를 들면, 낮은 우선순위 푸시 통지는 콘텐츠 업데이트들이 푸시 통지와 연관된 애플리케이션에 이용 가능함을 나타낼 수 있다. 따라서, 낮은 우선순위 푸시 통지가 애플리케이션(31_908)의 개시를 야기하는 경우, 애플리케이션(31_908)은 하나 이상의 네트워크 리소스(예를 들어, 푸시 제공자(31_902))로부터 업데이트된 콘텐츠를 다운로드할 수 있다.
일부 구현예들에서, 푸시 서비스 데몬(31_904)이 모바일 디바이스(31_100) 상의 애플리케이션(예를 들어, 애플리케이션(31_908))과 연관된 낮은 우선순위 푸시 통지를 수신하는 경우, 푸시 서비스 데몬(31_904)은 수신된 낮은 우선순위 푸시 통지와 연관된 애플리케이션을 개시해도 좋은지 여부를 샘플링 데몬(31_102)에 질의할 수 있다. 예를 들면, 푸시 서비스 데몬(31_904)은 수신된 낮은 우선순위 푸시 통지와 연관된 애플리케이션에 대한 식별자(예를 들어, "bundleId" 속성 값)를 샘플링 데몬(31_102)에 송신함으로써 샘플링 데몬(31_102)이 승인 제어를 수행할 것을 요청할 수 있다. 샘플링 데몬(31_102)은 도 31d를 참조하여 전술한 바와 같이, 데이터 예산들, 에너지 예산들, 속성 예산들 및 투표자 피드백을 체크함으로써 승인 제어를 수행할 수 있다. 샘플링 데몬(31_102)은 승인 제어 프로세스의 결과에 기초하여 낮은 우선순위 푸시 통지에 의해 식별된 애플리케이션을 개시하는 것이 좋은지 여부를 나타내는 값을 푸시 서비스 데몬(31_904)으로 반환할 수 있다.
일부 구현예들에서, 승인 제어 요청으로부터 반환된 값이 애플리케이션을 개시해도 좋다는 "예"를 나타내면, 푸시 서비스 데몬(31_904)은 애플리케이션 관리자(31_106)에 낮은 우선순위 푸시 통지를 송신할 것이고, 애플리케이션 관리자(31_106)는 애플리케이션(예를 들어, 애플리케이션(31_908))을 호출할 수 있다. 이어서, 애플리케이션(31_908)은 네트워크(예를 들어, 인터넷)를 통해 푸시 제공자(31_902)와 통신하여 푸시 제공자(31_902)로부터 업데이트된 콘텐츠를 수신할 수 있다.
일부 구현예들에서, 승인 제어 요청으로부터 반환된 값이 애플리케이션을 개시해서는 안된다는 "아니오"를 나타내면, 푸시 서비스 데몬(31_904)은 푸시 통지 데이터 저장소(31_934)에 낮은 우선순위 푸시 통지를 저장할 것이다. 예를 들면, 낮은 우선순위 푸시 통지를 저장하는 경우, 푸시 서비스 데몬(31_904)은 푸시 통지에서 식별된 애플리케이션에 대해 수신된 마지막 푸시 통지만을 저장할 것이다. 일부 구현예들에서, 샘플링 데몬(31_102)이 푸시 서비스 데몬(31_904)이 지금 당장 애플리케이션을 개시해서는 안됨을 나타내는 경우(예를 들어, 승인 제어 응답이 "아니오"임), 푸시 서비스 데몬(31_904)은 애플리케이션에 대한 애플리케이션 식별자를 웨이크 목록(31_930)으로부터 비웨이크 목록(31_932)으로 이동시킬 수 있다. 예를 들면, 샘플링 데몬(31_102)이 모바일 디바이스의 예산, 및/또는 상태가 애플리케이션을 개시하는 것을 허용하지 않음을 결정하면, 푸시 통지 서버(31_906)로 하여금 애플리케이션과 연관된 추가의 낮은 우선순위 푸시 통지들에 대해 모바일 디바이스(31_100)를 웨이크하게 하는 것은 단지 모바일 디바이스(31_100)의 데이터 및 에너지 예산들을 더 소비하거나 환경 조건들이 나빠지게 할 것이다(예를 들면, 디바이스가 뜨거워지게 함). 따라서, 애플리케이션 식별자를 비웨이크 목록(31_932)으로 이동시키고 업데이트된 필터들(31_928)(예를 들어, 웨이크 목록(31_930) 및 비웨이크 목록(31_932))을 포함하는 푸시 통지 서버(31_906)에 메시지(31_926)를 송신함으로써, 통지 서버(31_906)는 그 자신의 푸시 필터들(31_914), 웨이크 목록(31_916) 및 비웨이크 목록(31_918)을 업데이트하여 변경들을 푸시 필터들(31_928)에 반영하고, 애플리케이션에 대한 추가의 낮은 우선순위 푸시 통지들이 모바일 디바이스(31_100)에 전달되는 것을 방지할 수 있다.
일부 구현예들에서, 승인 제어 요청으로부터 반환된 값이 애플리케이션을 개시해서는 "절대 안됨"을 나타내면, 푸시 서비스 데몬(31_904)은 낮은 우선순위 푸시 통지를 삭제하고 푸시 필터들(31_928)로부터 푸시 통지와 연관된 애플리케이션 식별자를 제거할 것이다. 업데이트된 푸시 필터들은 푸시 통지 서버(31_906)에 송신될 수 있고, 푸시 통지 서버(31_906) 상의 푸시 필터들(31_914)은 푸시 통지 서버(31_906)가 더이상 애플리케이션 식별자와 연관된 푸시 통지들을 송신하는 것을 방지하도록 업데이트될 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 푸시 서비스 데몬(31_904)에 "중지" 신호를 송신하여 향후 낮은 우선순위 푸시 통지들이 푸시 통지 서버(31_906)로부터 모바일 디바이스(31_100)로 송신되는 것을 일시적으로 방지할 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 데이터 예산이 현재 시간에 대해 고갈되고, 에너지 예산이 현재 시간에 대해 고갈되고, 시스템이 열 이벤트(예를 들어, 모바일 디바이스(31_100)가 너무 뜨거움)를 경험하고 있고, 모바일 디바이스(31_100)가 품질이 나쁜 셀룰러 연결을 갖고 모바일 디바이스(31_100)가 Wi-Fi에 연결되지 않고/않거나 모바일 디바이스(31_100)가 음성 통화에 연결되고 Wi-Fi에 연결되어 있지 않음을 샘플링 데몬(31_102)이 결정하는 경우, 중지 신호를 푸시 서비스 데몬(31_904)에 송신할 수 있다. 푸시 서비스 데몬(31_904)이 중지 신호를 수신하는 경우, 푸시 서비스 데몬(31_904)은 웨이크 목록(31_930) 내의 애플리케이션 식별자들을 비웨이크 목록(31_932)으로 이동시키고, 업데이트된 푸시 필터들(31_928)을 푸시 통지 서버(31_906)에 전송하여 푸시 필터들(31_914)을 업데이트할 수 있다. 따라서, 푸시 통지 서버(31_906)는 향후 낮은 우선순위 푸시 통지들이 모바일 디바이스(31_100)를 웨이크하고 모바일 디바이스(31_100)의 예산들, 제한들 및 동작 상태들에 영향을 주는 것을 일시적으로 방지할 것이다.
일부 구현예들에서, 샘플링 데몬(31_102)은 재시도 신호를 푸시 서비스 데몬(31_904)에 전송할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 예산들, 네트워크 연결들, 제한들 및 디바이스 상태들의 상태를 모니터링할 수 있고, 푸시 데이터 예산이 고갈되지 않은 경우, 에너지 예산이 고갈되지 않은 경우, 모바일 디바이스(31_100)가 열 이벤트를 경험하고 있지 않는 경우, 모바일 디바이스(31_100)가 양호한 품질의 셀룰러 연결을 갖거나 Wi-Fi에 연결된 경우, 모바일 디바이스(31_100)가 음성 통화에 연결되지 않은 경우, 그리고 개시 레이트 제한들이 리셋된 경우 재시도 메시지를 푸시 서비스 데몬(31_904)에 송신할 것이다. 푸시 서비스 데몬(31_904)이 재시도 신호를 수신하면, 푸시 서비스 데몬(31_904)은 푸시 통지 데이터 저장소(31_934) 내의 각 푸시 통지에 대한 승인 제어 요청을 샘플링 데몬(31_102)에 송신하여 저장된 푸시 통지들과 연관된 각 애플리케이션(예를 들어, "bundleId" 속성 값)을 개시해도 좋은지 여부를 결정할 것이다.
샘플링 데몬(31_102)이 승인 제어 요청으로부터 "예"를 반환하면, 푸시 서비스 데몬(31_904)은 푸시 통지를 애플리케이션 관리자(31_106)에 송신할 수 있고, 애플리케이션 관리자(31_106)는 푸시 통지와 연관된 애플리케이션을 모바일 디바이스(31_100) 상에서 백그라운드 프로세스로서 개시할 수 있으며, 이는 전술한 바와 같다. 애플리케이션이 개시되면, 애플리케이션은 콘텐츠 또는 데이터 업데이트들을 다운로드하고 다운로드된 데이터에 기초하여 애플리케이션들 사용자 인터페이스들을 업데이트할 수 있다. 애플리케이션 관리자(31_106)는 낮은 우선순위 푸시 통지와 연관된 애플리케이션을 개시해도 좋은지 여부를 샘플링 데몬(31_102)에 질의하지 않을 것이다.
높은 우선순위 푸시 통지
일부 구현예들에서, 모바일 디바이스(31_100)에 의해 수신된 푸시 통지 메시지(31_920)는 높은 우선순위 푸시 통지를 포함할 수 있다. 예를 들면, 높은 우선순위 푸시 통지는 콘텐츠 업데이트들이 푸시 통지와 연관된 애플리케이션에 이용 가능함을 나타낼 수 있다. 따라서, 높은 우선순위 푸시 통지가 애플리케이션의 호출을 야기하는 경우, 애플리케이션은 하나 이상의 네트워크 리소스로부터 업데이트된 콘텐츠를 다운로드할 수 있다. 일부 구현예들에서, 높은 우선순위 푸시 통지가 푸시 서비스 데몬(31_904)에 의해 수신되는 경우, 푸시 서비스 데몬(31_904)은 샘플링 데몬(31_102)에 승인 제어 요청을 하지 않으면서 높은 우선순위 푸시 통지를 애플리케이션 관리자(31_106)에 송신할 것이다.
일부 구현예들에서, 애플리케이션 관리자(31_106)가 애플리케이션과 연관된 푸시 통지를 수신하는 경우, 애플리케이션 관리자(31_106)는 샘플링 데몬(31_102)에 승인 제어 요청을 할 것이다. 승인 제어 요청에 응답하여, 샘플링 데몬(31_102)은 전술한 바와 같이 "예", "아니오" 또는 "절대 안됨" 응답들로 응답할 수 있다. 애플리케이션 관리자(31_106)가 승인 제어 요청에 대해 "예" 응답을 수신하는 경우, 애플리케이션 관리자(31_106)는 수신된 높은 우선순위 푸시 통지와 연관된 애플리케이션을 모바일 디바이스(31_100) 상에서 백그라운드 프로세스로서 개시할 수 있다.
일부 구현예들에서, 애플리케이션 관리자(31_106)가 승인 제어 요청에 대해 "아니오" 응답을 수신하는 경우, 애플리케이션 관리자(31_106)는 높은 우선순위 푸시 통지 저장소(31_936)에 높은 우선순위 푸시 통지를 저장할 수 있다. 애플리케이션 관리자(31_106)가 "절대 안됨" 응답을 수신하는 경우, 애플리케이션 관리자(31_106)는 높은 우선순위 푸시 통지를 삭제하고 푸시 통지와 연관된 애플리케이션에 대한 푸시 통지 데이터 저장소(31_936)에 저장된 임의의 푸시 통지들을 삭제할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 "재시도 승인" 신호를 애플리케이션 관리자(31_106)에 송신할 수 있다. 예를 들면, 애플리케이션 관리자(31_106)가 샘플링 데몬(31_102)으로부터 "재시도 승인" 메시지를 수신하는 경우, 애플리케이션 관리자(31_106)는 높은 우선순위 푸시 통지 데이터 저장소(31_936)에서 각각의 높은 우선순위 푸시 통지와 연관된 애플리케이션들에 대한 승인 제어 요청을 하고 승인 제어 요청에 응답하여 "예" 응답이 수신되는 경우 각각의 애플리케이션들을 백그라운드 프로세스들로서 개시할 수 있다.
푸시 통지의 디스플레이를 지연시킴
일부 구현예들에서, 높은 우선순위 푸시 통지들은 그래픽 사용자 인터페이스가 모바일 디바이스(31_100) 상에 디스플레이되게 할 수 있다. 예를 들면, 높은 우선순위 푸시 통지의 수신은, 배너, 풍선 또는 다른 그래픽 객체가 모바일 디바이스(31_100)의 그래픽 사용자 인터페이스 상에 디스플레이되게 할 수 있다. 그래픽 객체는 예를 들면, 수신된 푸시 통지의 주제 또는 콘텐츠를 나타내는 정보를 포함할 수 있다.
일부 구현예들에서, 애플리케이션 관리자(31_106)가 높은 우선순위 푸시 통지를 수신하는 경우, 애플리케이션 관리자(31_106)는 통지가 모바일 디바이스(31_100)의 그래픽 사용자 인터페이스 상에 디스플레이되게 할 수 있다. 그러나, 높은 우선순위 푸시 통지가 높은 우선순위 푸시 통지와 연관된 애플리케이션에 다운로드될 데이터 업데이트들이 있음을 나타내는 경우, 애플리케이션은 푸시 통지가 디스플레이되기 전에 모바일 디바이스(31_100)의 백그라운드에서 개시될 수 있다. 예를 들면, 애플리케이션 관리자(31_106)는 높은 우선순위 푸시 통지와 연관된 애플리케이션을 개시하는 것과 사용자에게 푸시 통지를 알리는 그래픽 객체(예를 들어, 배너)를 디스플레이하는 것 사이에 지연되는 시간의 양(예를 들어, 30 초)으로 구성될 수 있다. 지연은 예를 들면, 사용자에 의해 호출되기 전에 콘텐츠 업데이트들을 다운로드하고 애플리케이션의 사용자 인터페이스들을 업데이트하기에 충분한 시간을 애플리케이션에 허용할 수 있다. 따라서, 사용자가 그래픽 객체에 입력을 제공하거나 그렇지 않으면 높은 우선순위 푸시 통지와 연관된 애플리케이션을 호출하는 경우, 애플리케이션의 사용자 인터페이스들은 최신일 것이고, 사용자는 애플리케이션에 대한 업데이트들을 기다리도록 강요받지 않을 것이다. 일부 구현예들에서, 애플리케이션 관리자(31_106)가 높은 우선순위 푸시 통지와 연관된 애플리케이션을 개시할 수 없으면, 모바일 디바이스(31_100)는 그래픽 객체(예를 들어, 배너)를 디스플레이하여 높은 우선순위 푸시 통지가 수신되었음을 사용자에게 통지할 것이다.
예시적인 푸시 통지 프로세스
도 31j은 푸시 통지 서버(31_906)에서 비웨이킹 푸시들을 수행하기 위한 예시적인 프로세스(1000)의 흐름도이다. 단계(31_1002)에서, 푸시 통지 서버(31_906)는 푸시 통지를 수신할 수 있다. 예를 들면, 푸시 통지 서버(31_906)는 푸시 통지 제공자(31_902)(예를 들어, 애플리케이션 벤더에 의해 운영되는 서버)로부터 푸시 통지를 수신할 수 있다.
단계(31_1004)에서, 푸시 통지 서버(31_906)는 푸시 통지가 낮은 우선순위 푸시 통지임을 결정할 수 있다. 예를 들면, 푸시 통지 제공자는 푸시 통지의 우선순위를 특정하는 푸시 통시 내의 데이터를 포함할 수 있다. 푸시 통지 서버(31_906)는 푸시 통지의 콘텐츠를 분석하여 푸시 통지의 우선순위를 결정할 수 있다.
단계(31_1006)에서, 푸시 통지 서버(31_906)는 푸시 통지를 푸시 통지 필터와 비교할 수 있다. 예를 들면, 푸시 통지는 낮은 우선순위 푸시 통지가 지향되는 모바일 디바이스(31_100) 상에 설치되거나 구성된 애플리케이션을 식별할 수 있다. 푸시 통지는 예를 들면, 애플리케이션 식별자(예를 들어, "bundleId" 속성 값)를 포함할 수 있다. 푸시 통지 서버(31_906)는 푸시 통지 내의 애플리케이션 식별자를 푸시 통지 필터의 비웨이크 목록(31_918) 내의 애플리케이션 식별자들과 비교할 수 있다.
단계(31_1008)에서, 푸시 통지 서버(31_906)는 낮은 우선순위 푸시 통지가 저장되어야 함을 결정할 수 있다. 예를 들면, 낮은 우선순위 푸시 통지로부터의 애플리케이션 식별자가 푸시 통지 필터의 비웨이크 목록(31_918)에 있으면, 푸시 통지 서버(31_906)는 낮은 우선순위 푸시가 푸시 통지 데이터 저장소(31_922) 내에 저장되어야 함을 결정할 수 있다.
단계(31_1010)에서, 단계(31_1008)에서의 결정에 기초하여, 낮은 우선순위 푸시 통지는 푸시 통지 서버(31_906)의 데이터베이스 또는 데이터 저장소(31_922)에 저장되고 모바일 디바이스(31_100)에 즉시 송신되지 않을 것이다.
단계(31_1012)에서, 푸시 통지 서버(31_906)는 모바일 디바이스(31_100)에 대한 네트워크 연결이 확립되었음을 결정할 수 있다. 예를 들면, 푸시 통지 서버(31_906)는 모바일 디바이스(31_100)에 대해 네트워크 연결을 생성하여 다른 높은 우선순위 푸시 또는 낮은 우선순위 푸시를 전달할 수 있다. 모바일 디바이스(31_100)는 푸시 통지 서버(31_906)에 대해 네트워크 연결을 확립하여 통지 필터 변화, 주기적 상태 업데이트, 킵 얼라이브 메시지 또는 다른 메시지들을 푸시 통지 서버(31_906)에 송신할 수 있다.
단계(31_1014)에서, 푸시 통지 서버(31_906)는 모바일 디바이스(31_100)에 대한 네트워크 연결이 확립되었음을 결정하는 것에 응답하여 저장된 푸시 통지들을 송신할 수 있다. 예를 들면, 푸시 통지 서버(31_906)는 푸시 통지 서버(31_906)에 저장된 낮은 우선순위 푸시 통지들을 모바일 디바이스(31_100)에 송신할 수 있다.
도 31k은 낮은 우선순위 푸시 통지에 응답하여 애플리케이션의 백그라운드 업데이트를 수행하기 위한 예시적인 프로세스(1100)의 흐름도이다. 단계(31_1102)에서, 모바일 디바이스(31_100)는 푸시 통지 서버(31_906)로부터 낮은 우선순위 푸시 통지를 수신할 수 있다.
단계(31_1104)에서, 모바일 디바이스(31_100)는 낮은 우선순위 푸시 통지와 연관된 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 예를 들면, 애플리케이션은 모바일 디바이스(31_100) 상에서 백그라운드 프로세스로서 개시될 수 있다. 모바일 디바이스(31_100)는 전술한 승인 제어 프로세스를 사용하여 애플리케이션을 개시하는 것이 좋은지 여부를 결정할 수 있다. 예를 들어, 모바일 디바이스(31_100)(예를 들어, 샘플링 데몬(31_102))는 모바일 디바이스(31_100)에 대하여 결정된 데이터, 에너지 및/또는 속성 예산들에 기초하여 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 모바일 디바이스(31_100)는 다양한 투표자들로부터의 응답들에 기초한 모바일 디바이스의 상태들 및/또는 모바일 디바이스의 네트워크 연결들의 상태에 기초하여 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 애플리케이션을 개시해도 좋은지 여부(예를 들어, 승인 제어)를 결정하기 위한 상세사항들은 도 31d를 참조하여 위에서 더 상세하게 설명되었다.
단계(31_1106)에서, 모바일 디바이스(31_100)는 디바이스 상태들, 예산들, 제한들 및 다른 데이터가 애플리케이션을 개시해서는 안된다는 것을 나타내는 경우 낮은 우선순위 푸시 통지를 저장할 수 있다. 예를 들면, 모바일 디바이스(31_100)는 낮은 우선순위 푸시 통지들을 데이터베이스 또는 모바일 디바이스(31_100) 상의 다른 데이터 저장소에 저장할 수 있다.
단계(31_1108)에서, 모바일 디바이스(31_100)는 백그라운드 애플리케이션을 개시해서는 안된다는 것을 결정하는 것에 응답하여 그것의 푸시 통지 필터들을 업데이트할 수 있다. 예를 들면, 모바일 디바이스(31_100)는 낮은 우선순위 푸시 통지와 연관된 애플리케이션을 모바일 디바이스(31_100) 상의 푸시 통지 필터들의 비웨이크 목록으로 이동시킬 수 있다.
단계(31_1110)에서, 모바일 디바이스(31_100)는 업데이트된 통지 필터들을 푸시 통지 서버(31_906)에 전송할 수 있다. 푸시 통지 서버(31_906)는 모바일 디바이스(31_100)로부터 수신된 필터들에 기초한 그 자신의 푸시 통지 필터들을 업데이트하여, 낮은 우선순위 푸시 통지들을 모바일 디바이스(31_100)에 언제 전송하고 언제 전송하지 않는지를 결정할 수 있다.
단계(31_1112)에서, 모바일 디바이스(31_100)는 낮은 우선순위 푸시 통지들과 연관된 애플리케이션을 개시하는 것을 재시도해도 좋음을 결정할 수 있다. 예를 들면, 모바일 디바이스(31_100)는, 전술한 바와 같이, 예산들, 제한들 및 디바이스 상태들이, 모바일 디바이스(31_100) 상에서 추가의 백그라운드 애플리케이션들을 개시하는 것을 허용함을 결정할 수 있다.
단계(31_1114)에서, 모바일 디바이스(31_100)는 저장된 낮은 우선순위 푸시 통지와 연관된 특정 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 예를 들면, 모바일 디바이스(31_100)의 샘플링 데몬(31_102)은 모바일 디바이스(100) 상에 구성된 예산들이 현재 시간에 대해 리셋되거나 보충되었음을, 그리고 모바일 디바이스(31_100)의 환경 조건들 및 네트워크 연결들이 특정 백그라운드 애플리케이션을 개시하기에 충분히 양호함을 결정하기 위해 승인 제어를 수행할 수 있다.
단계(31_1116)에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)가 애플리케이션을 개시해도 좋음을 결정하는 경우 특정 애플리케이션을 개시할 수 있다. 예를 들면, 특정 애플리케이션은 백그라운드 프로세스로서 개시되어, 사용자가 애플리케이션을 호출하기 전에 새로운 콘텐츠를 다운로드하고 애플리케이션의 사용자 인터페이스들을 업데이트할 수 있다. 이러한 프로세스는 사용자로 하여금 애플리케이션을 호출하게 하고, 다운로드될 콘텐츠 업데이트들 그리고 리프레시될 애플리케이션의 사용자 인터페이스들을 기다리지 않아도 되게 할 것이다.
도 31l는 높은 우선순위 푸시 통지에 응답하여 애플리케이션의 백그라운드 업데이트를 수행하기 위한 예시적인 프로세스(1200)의 흐름도이다. 단계(31_1202)에서, 모바일 디바이스(31_100)는 높은 우선순위 푸시 통지를 수신할 수 있다.
단계(31_1204)에서, 모바일 디바이스(31_100)는 높은 우선순위 푸시 통지와 연관된 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 예를 들면, 모바일 디바이스(31_100)의 샘플링 데몬(31_102)은 모바일 디바이스(31_100)의 예산들 및 환경 조건들(예를 들어, 디바이스 상태, 네트워크 상태 등)에 기초하여 애플리케이션을 개시해도 좋은지 여부를 결정하기 위해 승인 제어를 수행할 수 있다.
단계(31_1206)에서, 모바일 디바이스(31_100)는, 높은 우선순위 푸시 통지와 연관된 애플리케이션을 개시해서는 안되는 경우(예를 들어, 승인 제어가 "아니오"를 반환함) 높은 우선순위 푸시 통지를 저장할 수 있다. 예를 들면, 모바일 디바이스(31_100)는 데이터베이스, 큐, 또는 다른 적절한 데이터 구조에 높은 우선순위 푸시 통지를 저장할 수 있다.
단계(31_1208)에서, 모바일 디바이스(31_100)는 저장된 높은 우선순위 푸시 통지들과 연관된 애플리케이션들을 개시하는 것을 재시도해도 좋음을 결정할 수 있다. 예를 들면, 모바일 디바이스(31_100)는, 상기 승인 제어 설명에서 논의된 바와 같이, 데이터, 에너지 및/또는 속성 예산들이 보충되었거나, 디바이스 상태들이 개선되었거나, 네트워크 상태들이 개선되었거나, 또는 모바일 디바이스(31_100)의 다른 상태들이 변경된 경우, 애플리케이션들을 개시하는 것을 재시도해도 좋음을 결정할 수 있다.
단계(31_1210)에서, 모바일 디바이스(31_100)는 저장된 높은 우선순위 푸시 통지와 연관된 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다. 예를 들면, 모바일 디바이스(31_100)는 상기 논의된 기준들에 기초하여 애플리케이션을 개시해도 좋은지 여부를 결정할 수 있다.
단계(31_1212)에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100) 상의 백그라운드에서 애플리케이션을 개시할 수 있다. 예를 들면, 애플리케이션은 애플리케이션이 네트워크(예를 들어, 인터넷) 상에서 네트워크 리소스(예를 들어, 콘텐츠 서버)로부터 업데이트된 콘텐츠를 다운로드할 수 있도록 모바일 디바이스(31_100) 상에서 백그라운드 프로세스로서 개시될 수 있다.
단계(31_1214)에서, 모바일 디바이스(31_100)는 사용자에게 푸시 통지를 보여주기 전에 일정 기간을 기다릴 수 있다. 예를 들면, 모바일 디바이스는 수신된 높은 우선순위 푸시 통지를 사용자에게 통지하기 전에 애플리케이션이 일정 기간 동안 콘텐츠를 다운로드하게 하도록 구성될 수 있다.
단계(31_1216)에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 사용자 인터페이스 상에 푸시 통지를 제시할 수 있다. 예를 들면, 모바일 디바이스(31_100)는 높은 우선순위 푸시 통지를 설명하는 정보를 포함하는 그래픽 객체(예를 들어, 배너)를 제시할 수 있다. 사용자는 예를 들면, 그래픽 객체를 선택하여 애플리케이션을 호출할 수 있다. 사용자에게 통지가 보여지기 전에 애플리케이션은 콘텐츠를 다운로드할 시간이 있었으므로, 사용자가 애플리케이션을 호출하는 경우, 애플리케이션은 사용자로 하여금 업데이트된 콘텐츠가 네트워크로부터 다운로드되기를 기다리도록 강요하지 않으면서 업데이트된 콘텐츠를 사용자에게 디스플레이할 수 있을 것이다.
백그라운드 업로드/다운로드
도 31m은 모바일 디바이스(31_100) 상에서 데이터의 백그라운드 다운로드 및/또는 업로드를 수행하기 위한 예시적인 시스템(31_1300)의 블록도이다. 백그라운드 다운로드 및/또는 업로드는 사용자로부터의 명백한 입력 없이 애플리케이션에 의해 시작되는 네트워크 데이터 전송일 수 있다. 예를 들면, 백그라운드 다운로드는 사용자가 비디오 게임 애플리케이션을 재생하는 동안 비디오 게임의 다음 레벨을 인출하기 위해 수행될 수 있다. 반대로, 포어그라운드 다운로드 또는 업로드는, 다운로드 또는 업로드가 발생해야 한다는 사용자로부터의 명백한 지시에 응답하여 수행되는 네트워크 데이터 전송일 수 있다. 예를 들면, 포어그라운드 다운로드는 사진, 영화 또는 문서를 다운로드하기 위해 웹페이지 링크를 선택하는 사용자에 의해 시작될 수 있다. 유사하게는, 백그라운드 업로드들은 네트워크 리소스(예를 들어, 서버)에 데이터를 업로드하라는 명백한 사용자 요청이 사용자로부터 수신되었는지 여부에 기초하여 포어그라운드 업로드들과 구별될 수 있다.
일부 구현예들에서, 포어그라운드 다운로드/업로드(예를 들어, 사용자에 의해 명백히 요청된 다운로드/업로드)는 사용자를 위해 즉시 수행된다. 예를 들면, 사용자 요청된 다운로드/업로드는 즉시 수행되고 제약들을 예산책정하는 것 또는 다른 고려의 대상이 아니다. 포어그라운드 다운로드/업로드는 셀룰러 데이터 연결을 통해 수행될 수 있다. 반대로, 백그라운드 다운로드 및/또는 업로드는 우발적으로(opportunistically) 그리고 제약들을 예산책정하는 것 및 모바일 디바이스(31_100)의 온도와 같은 환경 조건들을 고려하는 것 내에서 수행될 수 있다. 예를 들어, 속성이 전술한 승인 제어 메커니즘에 의해 승인되는 경우, 속성 또는 속성 값에 대해 백그라운드 다운로드 또는 업로드가 수행될 수 있다. 일부 구현예들에서, 백그라운드 다운로드 및/또는 업로드는 Wi-Fi 네트워크 연결들로 제한될 수 있다.
일부 구현예들에서, 시스템(31_1300)은 백그라운드 전송 데몬(31_1302)을 포함할 수 있다. 일부 구현예들에서, 백그라운드 전송 데몬(31_1302)은 모바일 디바이스(31_100) 상에서 구동되는 애플리케이션들 또는 프로세스들 대신에 데이터 또는 콘텐츠의 백그라운드 다운로드 및 업로드를 수행하도록 구성될 수 있다. 예를 들면, 백그라운드 전송 데몬(31_1302)은 애플리케이션(31_1304) 대신에 애플리케이션(31_1304)과 서버(31_1306) 사이에서 백그라운드 다운로드 및/또는 업로드를 수행할 수 있다. 따라서, 백그라운드 다운로드/업로드는 애플리케이션(31_1304)으로부터의 프로세스를 벗어나 수행될 수 있다(예를 들면, 다운로드/업로드를 요청하는 프로세스에서/에 의해 수행되지 않음).
일부 구현예들에서, 애플리케이션(31_1304)은 백그라운드 전송 데몬(31_1304)에 데이터를 다운로드하거나 업로드하라는 요청을 송신함으로써 백그라운드 다운로드/업로드를 시작할 수 있다. 예를 들면, 데이터(예를 들어, 콘텐츠)를 다운로드하라는 요청은, 데이터가 다운로드될 수 있는 네트워크 위치를 식별할 수 있다. 데이터를 업로드하라는 요청은 데이터가 업로드될 수 있는 네트워크 위치 및 데이터가 모바일 디바이스(31_100) 상에서 현재 저장되어 있는 위치를 식별할 수 있다. 요청은 또한 애플리케이션(31_1304)을 식별할 수 있다. 요청이 이루어지면, 애플리케이션(31_1304)은, 백그라운드 다운로드/업로드가 백그라운드 전송 데몬(31_1304)에 의해 수행되고 있는 동안 애플리케이션이 모바일 디바이스(31_100) 상에서 컴퓨팅 및/또는 네트워크 리소스들을 계속해서 소비하지 않도록, 셧다운되거나 보류될 수 있다.
일부 구현예들에서, 데이터의 백그라운드 업로드 또는 다운로드를 수행하라는 요청을 수신할 시에, 백그라운드 전송 데몬(31_1302)은 네트워크를 통해 백그라운드 전송 데몬(31_1302)이 데이터 전송을 수행해도 좋은지 여부를 결정하라는 요청을 샘플링 데몬(31_102)에 송신할 수 있다. 예를 들어, 백그라운드 전송 데몬(31_1302)은 샘플링 데몬(31_102)이 데이터 전송을 위한 승인 제어를 수행할 것을 요청할 수 있다. 승인 제어 요청에서, 백그라운드 전송 데몬(31_1302)은 백그라운드 전송 데몬(31_1302)에 대한 식별자(예를 들어, "bundleId" 속성 값) 또는 백그라운드 전송을 요청하는 애플리케이션에 대한 식별자를 제공하여, 승인 제어가 백그라운드 전송 데몬 또는 애플리케이션 상에서 수행되도록 할 수 있다. 승인 제어 요청은 시스템-범위 데이터 예산으로부터 공제될 요청의 비용으로서 전송될 데이터의 양을 포함할 수 있다.
백그라운드 전송 데몬(31_1302)으로부터 승인 제어 요청을 수신하는 것에 응답하여, 샘플링 데몬(31_102)은 시스템-범위 데이터 및/또는 에너지 예산들이 현재 시간에 대해 고갈되었는지 여부를 결정할 수 있다. 일부 구현예들에서, 샘플링 데몬(31_102)이 모바일 디바이스(31_100)가 외부 전원에 연결되어 있음을 결정하면, 샘플링 데몬(31_102)은 에너지 예산에 기초하여 백그라운드 다운로드/업로드를 방지하지 않을 것이다. 샘플링 데몬(31_102)은 모바일 디바이스(31_100)가 Wi-Fi에 연결되었는지 여부를 결정할 수 있다. 샘플링 데몬(31_102)은 또한 모바일 디바이스(31_100)가 열 이벤트(예를 들어, 미리정의된 임계값 초과의 동작 온도) 중에 있는지 여부를 결정할 수 있다. 일부 구현예들에서, 샘플링 데몬(31_102)이 데이터 예산이 고갈되고 모바일 디바이스(31_100)가 Wi-Fi에 연결되지 않음을, 에너지 예산이 고갈되고 모바일 디바이스(31_100)가 외부 전원에 연결되지 않음을, 또는 모바일 디바이스(31_100)가 열 이벤트 중에 있음을 결정하면, 샘플링 데몬(31_102)은 백그라운드 전송 데몬(31_1302)에 의한 승인 제어 요청에 대하여 "아니오" 응답을 반환할 것이다.
일부 구현예들에서, 백그라운드 전송 데몬(31_1302)이 샘플링 데몬(31_102)으로부터 승인 제어 요청에 대해 "아니오" 응답을 수신하는 경우, 프로세스(31_1302)는 애플리케이션(31_1304)으로부터의 백그라운드 다운로드/업로드 요청을 요청 저장소(31_1308)에 저장할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 재시도 신호를 백그라운드 전송 데몬(31_1302)에 송신할 수 있다. 예를 들면, 샘플링 데몬(31_102)은, 데이터 및 에너지 예산들이 보충되는 경우 그리고 시스템이 더이상 열 이벤트를 경험하고 있지 않는 경우, 백그라운드 전송 데몬(31_1302)에 재시도 신호를 송신할 수 있다. 샘플링 데몬(31_102)은, 모바일 디바이스(31_100)가 Wi-Fi에 연결되고, 외부 전원에 연결되는 경우 그리고 시스템이 열 이벤트를 경험하고 있지 않는 경우에 백그라운드 전송 데몬(31_1302)에 재시도 신호를 송신할 수 있다. 예를 들어, Wi-Fi에 연결되면, 데이터 사용량을 제어할 필요가 없을 수 있다. 유사하게, 외부 전원에 연결되면, 배터리 전력을 절약할 필요가 없을 수 있다. 따라서, 데이터 및 에너지 예산들은 승인 제어를 수행할 때 샘플링 데몬(31_102)에 의해 무시될 수 있다.
일부 구현예들에서, 재시도 신호가 백그라운드 전송 데몬(31_1302)에 의해 수신되는 경우, 백그라운드 전송 데몬(31_1302)은 승인 제어 요청을 샘플링 데몬(31_102)에 송신할 수 있다.
샘플링 데몬(31_102)이 승인 제어 요청에 응답하여 "좋음" 응답을 반환하는 경우, 백그라운드 전송 데몬(31_1302)은 애플리케이션(31_1304)에 대하여 백그라운드 다운로드 또는 업로드를 수행할 수 있다. 백그라운드 다운로드가 완료되면, 백그라운드 전송 데몬(31_1302)은 애플리케이션(31_1304)을 웨이크하거나 호출하고 다운로드된 데이터를 애플리케이션(31_1304)에 제공할 수 있다.
일부 구현예들에서, 백그라운드 전송 데몬(31_1302)은 백그라운드 다운로드/업로드가 시작하고 종료할 때 샘플링 데몬(31_102)에 통지할 수 있어, 샘플링 데몬(31_102)이 모바일 디바이스(31_100) 상에서 수행되는 백그라운드 다운로드/업로드에 대해 예산들을 조정하고 통계치들을 유지하게 할 수 있다. 예를 들어, 백그라운드 전송 데몬(31_1302)은 샘플링 데몬(31_102)에 "backgroundTransfer" 속성 시작 또는 중지 이벤트를 송신할 수 있다. 일부 구현예들에서, 백그라운드 전송 데몬(31_1302)은, 샘플링 데몬(31_102)이 모바일 디바이스(31_100) 상에서 수행되는 백그라운드 다운로드/업로드에 대해 예산들을 조정하고 통계치들을 유지할 수 있도록 셀룰러 데이터를 통해, Wi-Fi를 통해 그리고/또는 전체로서 전송되는 바이트들의 수(예를 들어, "system.networkBytes" 속성 이벤트)를 전송할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 백그라운드 전송 데몬(31_1302)에 타임아웃 값을 반환할 수 있다. 예를 들면, 타임아웃 값은 백그라운드 전송 데몬이 백그라운드 다운로드 또는 업로드를 수행해야 하는 일정 기간(예를 들어, 5분)을 나타낼 수 있다. 타임아웃 기간이 경과하는 경우, 백그라운드 전송 데몬(31_1302)은 백그라운드 다운로드 또는 업로드를 보류할 것이다.
일부 구현예들에서, 타임아웃 값은 현재 시간에 대한 남은 에너지 예산들에 기초될 수 있다. 예를 들면, 샘플링 데몬(31_102)은 샘플링 데몬(31_102)에 의해 수집된 이벤트 데이터 이력에 기초하여 Wi-Fi를 통해 다운로드 또는 업로드를 수행하는 동안 얼마나 많은 에너지가 각 초 당 소비되는지를 결정할 수 있다. 샘플링 데몬(31_102)은 백그라운드 다운로드 또는 업로드를 수행하는 동안 에너지가 소비되는 레이트로 남은 에너지 예산을 나눔으로써 타임아웃 기간을 결정할 수 있다(예를 들면, 에너지 예산/소비된 에너지/시간 = 타임아웃 기간).
일부 구현예들에서, 백그라운드 다운로드 및/또는 업로드는 재개 가능하다. 예를 들면, 모바일 디바이스(31_100)가 WI-Fi 범위 밖으로 이동하면, 백그라운드 다운로드/업로드는 보류될 수 있다(예를 들어, 일시 중지). 모바일 디바이스(31_100)가 Wi-Fi 범위에 재진입하는 경우, 보류된 다운로드/업로드가 재개될 수 있다. 유사하게는, 백그라운드 다운로드/업로드가 에너지 예산 범위 밖에서 구동되면(예를 들어, 타임아웃 기간이 경과함), 백그라운드 다운로드/업로드가 보류될 수 있다. 추가 예산이 할당되는 경우(예를 들면, 다음 시간에서), 보류된 다운로드/업로드가 재개될 수 있다.
일부 구현예들에서, 백그라운드 다운로드/업로드는 네트워크 연결의 품질에 기초하여 보류될 수 있다. 예를 들면, 모바일 디바이스(31_100)가 모바일 디바이스(31_100)와 서비싱 셀룰러 타워(servicing cellular tower) 사이에 양호한 셀룰러 데이터 연결을, 그리고 셀룰러 타워와 모바일 디바이스(31_100)가 그로 또는 그로부터 데이터를 전송하는 서버 사이에 양호한 데이터 연결을 가질 수 있더라도, 모바일 디바이스(31_100)는 서버에 대해 양호한 연결을 갖지 않을 수 있다. 예를 들면, 모바일 디바이스(31_100)와 서버 사이의 전송 속도는 느릴 수 있거나 셀룰러 인터페이스의 처리율은 낮을 수 있다. 백그라운드 다운로드/업로드의 전송 속도가 임계 전송 속도 값 미만으로 떨어지고/지거나 백그라운드 다운로드/업로드의 처리율이 임계 처리율 값 미만으로 떨어지면, 백그라운드 다운로드/업로드(예를 들어, 데이터 전송)는 더 양호한 네트워크 연결이 이용 가능할 때까지 검출된 품질이 나쁜 네트워크 연결에 기초하여 보류되거나 일시 중지될 수 있다. 예를 들어, Wi-Fi 연결이 이용 가능하게 되면, 보류된 백그라운드 다운로드/업로드는 Wi-Fi 연결을 통해 재개될 수 있다.
일부 구현예들에서, 백그라운드 전송 데몬(31_1302)은 한 번에 수행될 수 있는 백그라운드 다운로드 및/또는 업로드의 수에 대한 제한으로 구성될 수 있다. 예를 들면, 백그라운드 전송 데몬(31_1302)은 동시에 발생하는 백그라운드 다운로드 및/또는 업로드의 수를 3개로 제한할 수 있다.
예시적인 백그라운드 다운로드/업로드 프로세스
도 31n는 백그라운드 다운로드 및 업로드를 수행하기 위한 예시적인 프로세스(31_1400)의 흐름도이다. 예를 들면, 백그라운드 다운로드 및/또는 업로드는 백그라운드 전송 데몬(31_1302)에 의해 모바일 디바이스(31_100) 상의 애플리케이션들 대신에 수행될 수 있다.
단계(31_1402)에서, 백그라운드 전송 요청이 수신될 수 있다. 예를 들면, 백그라운드 전송 데몬(31_1302)은 모바일 디바이스(31_100) 상에서 구동되는 애플리케이션으로부터 백그라운드 다운로드/업로드 요청을 수신할 수 있다. 애플리케이션이 요청을 하면, 애플리케이션은 예를 들면 종료되거나 보류될 수 있다. 요청은 애플리케이션을 식별하고 데이터에 대한 소스 및/또는 목적지 위치들을 식별할 수 있다. 예를 들면, 데이터를 다운로드하는 경우, 소스 위치는 서버에 대한 네트워크 어드레스일 수 있고 목적지 위치는 모바일 디바이스(31_100)의 파일 시스템 내의 디렉토리일 수 있다. 데이터를 업로드하는 경우, 소스 위치는 파일 시스템 위치일 수 있고 목적지는 네트워크 위치일 수 있다.
단계(31_1404)에서, 모바일 디바이스(31_100)는 예산들 및 디바이스 상태들이 데이터 전송을 허용하지 않음을 결정할 수 있다. 예를 들어, 백그라운드 전송 데몬(31_1302)은 백그라운드 전송 데몬(31_1302), 백그라운드 전송이 수행되고 있는 애플리케이션, 및/또는 전송될 데이터의 양을 식별하는 승인 제어 요청을 샘플링 데몬(31_102)에 함으로써, 요청된 백그라운드 전송을 수행하는 것이 좋은지 여부를 샘플링 데몬(31_102)에 질의할 수 있다. 샘플링 데몬(31_102)은 에너지 및 데이터 예산들이 고갈되는지 여부 및 모바일 디바이스(31_100)가 열 이벤트 중에 있는지 여부를 결정할 수 있다. 예산들이 고갈되면 또는 모바일 디바이스(31_100)가 열 이벤트 중에 있으면, 샘플링 데몬(31_102)은 백그라운드 데이터 전송을 수행해서는 안된다는 것을 나타내는 메시지를 백그라운드 전송 데몬(31_1302)에 송신할 수 있다(예를 들어, 승인 제어가 "아니오"를 반환함).
단계(31_1406)에서, 모바일 디바이스(31_100)는 백그라운드 전송 요청을 저장할 수 있다. 예를 들어, 백그라운드 전송 데몬(31_1302)은 샘플링 데몬(31_102)이 승인 제어 요청에 응답하여 "아니오" 값을 반환할 때 전송 요청 저장소에 전송 요청을 저장할 수 있다.
단계(31_1408)에서, 모바일 디바이스(31_100)는 백그라운드 전송을 재시도해도 좋음을 결정할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 데이터 및 에너지 예산들이 보충되었음을 그리고 모바일 디바이스(31_100)가 열 이벤트 중에 있지 않음을 결정할 수 있다. 샘플링 데몬(31_102)은 재시도 메시지를 백그라운드 전송 데몬(31_1302)에 송신할 수 있다. 이어서, 백그라운드 전송 데몬(31_1302)은 저장된 전송 요청들 각각에 대해 다른 승인 제어 요청을 함으로써 전송 요청 저장소에 저장된 요청된 전송들을 수행하려고 시도할 수 있다.
단계(31_1410)에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_100)의 예산들 및 상태들이 백그라운드 데이터 전송을 허용함을 결정할 수 있다. 예를 들면, 백그라운드 전송 데몬(31_1302)은 요청된 백그라운드 전송을 수행해도 좋은지 여부를 샘플링 데몬(31_102)에 질의할 수 있다. 샘플링 데몬(31_102)은 에너지 및 데이터 예산들이 보충되었음을 그리고 모바일 디바이스(31_100)가 열 이벤트 중에 있지 않음을 결정하기 위해 승인 제어를 수행할 수 있다. 예산들이 고갈되지 않으면 그리고 모바일 디바이스(31_100)가 열 이벤트 중에 있지 않으면, 샘플링 데몬(31_102)은 백그라운드 데이터 전송을 수행해도 좋음을 나타내는 메시지를 백그라운드 전송 데몬(31_1302)에 송신할 수 있다.
단계(31_1412)에서, 모바일 디바이스(31_100)는 백그라운드 전송을 수행할 수 있다. 예를 들면, 백그라운드 전송 데몬(31_1302)은 요청 애플리케이션에 대해 요청된 백그라운드 다운로드 또는 백그라운드 업로드를 수행할 수 있다. 백그라운드 전송 데몬(31_1302)은 (예를 들어, "backgroundTransfer" 속성 시작 및 중지 이벤트들을 사용하여) 백그라운드 전송이 시작되고 종료될 때 샘플링 데몬(31_102)에 통지할 수 있다. 백그라운드 전송 데몬(31_1302)은 (예를 들어, "networkBytes" 속성 이벤트를 사용하여) 백그라운드 다운로드 또는 업로드 동안 전송되는 바이트들의 수를 샘플링 데몬에 알리는 메시지를 송신할 수 있다. 백그라운드 전송이 완료되면, 백그라운드 전송 데몬(31_1302)은 백그라운드 전송 요청을 한 애플리케이션을 호출(예를 들어, 개시 또는 웨이크)하고 완료 상태 정보(예를 들어, 성공, 오류, 다운로드된 데이터 등)를 요청 애플리케이션에 송신할 수 있다.
백그라운드 업데이트를 인에이블/디스에이블
도 31o는 모바일 디바이스 상에서 애플리케이션들에 대한 백그라운드 업데이트들을 인에이블 및/또는 디스에이블하기 위한 예시적인 그래픽 사용자 인터페이스(GUI)(31_1500)를 예시한다. 예를 들면, GUI(31_1500)는 모바일 디바이스(31_100) 상의 애플리케이션에 대한 백그라운드 업데이트 설정을 조정하기 위하여 사용자 입력을 수신하기 위한 모바일 디바이스(31_100)의 디스플레이 상에 보여지는 인터페이스일 수 있다.
일부 구현예들에서, GUI(31_1500)로의 사용자 입력은 전술한 바와 같이, 사용자 호출 예측에 기초하여 애플리케이션들에 대해 수행되는 것으로부터 백그라운드 업데이트들을 인에이블 또는 디스에이블할 수 있다. 예를 들면, 샘플링 데몬(31_102) 및/또는 애플리케이션 관리자(31_106)는 백그라운드 업데이트들이 애플리케이션에 대해 인에이블되거나 디스에이블되는지 여부를 결정하고, 애플리케이션이 애플리케이션 관리자(31_106)에 의해 개시되는 것을 방지하거나 애플리케이션이 샘플링 데몬(31_102)에 의해 생성된 애플리케이션 호출 예측 내에 포함되는 것을 방지할 수 있다. 예를 들어, 백그라운드 업데이트들이 애플리케이션에 대해 디스에이블되면, 샘플링 데몬(31_102)은 애플리케이션 관리자(31_106)에 의해 요청된 사용자 호출된 애플리케이션 예측에 애플리케이션을 포함하지 않을 것이다. 따라서, 애플리케이션 관리자(31_106)는 백그라운드 업데이트들이 디스에이블될 때 애플리케이션을 개시하지 않을 것이다. 반대로, 백그라운드 업데이트들이 애플리케이션에 대해 인에이블되면, 애플리케이션은 전술한 바와 같이 사용자 호출 확률들에 기초하여 샘플링 데몬(31_102)에 의해 생성된 애플리케이션 호출 예측에 포함될 수 있다.
일부 구현예들에서, GUI(31_1500)로의 사용자 입력은 전술한 바와 같이 푸시 통지가 수신될 때 애플리케이션에 대해 수행되는 것으로부터 백그라운드 업데이트들을 인에이블 또는 디스에이블할 수 있다. 예를 들면, 샘플링 데몬(31_102), 애플리케이션 관리자(31_106) 및/또는 푸시 서비스 데몬(31_904)은, 백그라운드 업데이트들이 애플리케이션에 대해 인에이블되거나 디스에이블되는지 여부를 결정하고, 푸시 통지를 수신하는 것에 응답하여 애플리케이션 관리자(31_106)에 의해 애플리케이션이 개시되는 것을 방지할 수 있다. 예를 들면, 백그라운드 업데이트들이 애플리케이션에 대해 디스에이블되고 푸시 통지가 애플리케이션에 대해 수신되면, 애플리케이션 관리자(31_106)는 푸시 통지에 응답하여 업데이트들을 다운로드하기 위해 애플리케이션을 개시하지 않을 것이다.
일부 구현예들에서, GUI(31_1500)는 백그라운드 업데이트들을 수행하도록 구성된 애플리케이션들(31_1502 내지 31_1514)을 디스플레이할 수 있다. 예를 들면, 애플리케이션들(31_1502 내지 31_1514)은 애플리케이션 관리자(31_106)에 의해 개시될 때 모바일 디바이스(31_100) 상에서 백그라운드 프로세스들로서 구동되도록 구성되거나 프로그래밍될 수 있다. 백그라운드 프로세스로서 구동되는 경우, 애플리케이션들(31_1502 내지 31_1514)은 다양한 네트워크 리소스들과 통신하여 현재 또는 업데이트된 콘텐츠를 다운로드할 수 있다. 이어서, 애플리케이션들(31_1502 내지 31_1514)은 모바일 디바이스(31_100)의 사용자에 의해 호출될 때 업데이트된 콘텐츠를 보여주기 위하여 그것들 각자의 사용자 인터페이스들을 업데이트할 수 있다. 일부 구현예들에서, 백그라운드 업데이트들을 수행하도록 구성되지 않거나 프로그래밍되지 않은 애플리케이션들은 GUI(31_1500) 상에 디스플레이되지 않을 것이다.
일부 구현예들에서, 사용자는 GUI(31_1500)에 입력을 제공하여 애플리케이션에 대한 백그라운드 업데이트들을 인에이블 및/또는 디스에이블할 수 있다. 예를 들면, 사용자는 토글(31_1516)에 관하여 모바일 디바이스(31_100)에 입력(예를 들어, 터치 입력)을 제공하여 애플리케이션(31_1502)에 대한 백그라운드 업데이트들을 켜거나 끌 수 있다. 사용자는 토글(31_1518)에 관하여 모바일 디바이스(31_100)에 입력(예를 들어, 터치 입력)을 제공하여 애플리케이션(31_1508)에 대한 백그라운드 업데이트들을 켜거나 끌 수 있다.
일부 구현예들에서, 추가 옵션들이 GUI(31_1500)를 통해 백그라운드 업데이트 애플리케이션에 대해 특정될 수 있다. 예를 들면, 사용자는 애플리케이션(31_1514)과 연관된 그래픽 객체(31_1510)를 선택하여, 추가 백그라운드 업데이트 옵션들을 특정하기 위한 그래픽 사용자 인터페이스(도시되지 않음)를 호출할 수 있다. 백그라운드 업데이트 옵션들은 예를 들면, 애플리케이션(31_1514)에 대한 백그라운드 업데이트들을 켜고/켜거나 끄기 위한 시작 시간 및 종료 시간을 포함할 수 있다.
피어 디바이스들 사이의 데이터 공유
도 31p은 피어 디바이스들 사이에서 데이터를 공유하기 위한 예시적인 시스템을 예시한다. 일부 구현예들에서, 모바일 디바이스(31_100)는 모바일 디바이스(31_1600)와 이벤트 데이터, 시스템 데이터 및/또는 이벤트 예측들을 공유할 수 있다. 예를 들어, 모바일 디바이스(31_100) 및 모바일 디바이스(31_1600)는 동일한 사용자에 의해 소유된 디바이스들일 수 있다. 따라서, 모바일 디바이스(31_100)와 모바일 디바이스(31_1600) 사이에서 각 디바이스에 대한 사용자의 활동들에 관한 정보를 공유하는 것이 유익할 수 있다.
일부 구현예들에서, 모바일 디바이스(31_1600)는 전술한 모바일 디바이스(31_100)와 유사하게 구성될 수 있다. 예를 들어, 모바일 디바이스(31_1600)는 상기 단락들에 기술된 기능들(예를 들어, 속성, 속성 이벤트, 예측, 승인 제어 등)을 제공하는 샘플링 데몬(31_1602)으로 구성될 수 있다.
일부 구현예들에서, 모바일 디바이스(31_100) 및 모바일 디바이스(31_1600)는 각각 아이덴티티 서비스 데몬(31_1620) 및 아이덴티티 서비스 데몬(31_1610)으로 구성될 수 있다. 예를 들어, 아이덴티티 서비스 데몬(31_1620, 31_1610)은 모바일 디바이스(31_100)와 모바일 디바이스(31_1600) 사이에서 정보를 통신하도록 구성될 수 있다. 아이덴티티 서비스 데몬은 다양한 피어-투-피어 및 네트워크 연결들을 통해 동일한 사용자에 의해 소유된 디바이스들 사이에서 데이터를 공유하는 데 사용될 수 있다. 예를 들어, 아이덴티티 서비스 데몬(31_1620) 및 아이덴티티 서비스 데몬(31_1610)은 블루투스, 저전력 블루투스, Wi-Fi, LAN, WAN 및/또는 인터넷 연결들을 통해 정보를 교환할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_1602)(및 샘플링 데몬(31_102))은 이벤트 예측들 및 시스템 상태 정보를 동일한 사용자에 의해 소유된 다른 디바이스들 상에서 구동되는 다른 샘플링 데몬과 공유하도록 구성될 수 있다. 예를 들어, 모바일 디바이스(31_100) 및 모바일 디바이스(31_1600)가 동일한 사용자에 의해 소유되면, 샘플링 데몬(31_102) 및 샘플링 데몬(31_1602)은 이벤트 예측 정보 및/또는 시스템 상태 정보(예를 들어, 배터리 상태)를 교환할 수 있다. 예를 들어, 샘플링 데몬(31_1602)은 아이덴티티 서비스 데몬(31_1610)을 사용하여 이벤트 예측 정보 및/또는 시스템 상태 정보를 송신할 수 있다.
아이덴티티 서비스 데몬(31_1610)은 아이덴티티 서비스 데몬(31_1620)에 대한 연결을 확립하고 아이덴티티 서비스 데몬(31_1620)을 통해 샘플링 데몬(31_102)에 이벤트 예측 정보 및/또는 모바일 디바이스(31_1600) 시스템 상태 정보를 전달할 수 있다.
일부 구현예들에서, 애플리케이션(31_1608)(예를 들어, 샘플링 데몬(31_1602)의 클라이언트)은, 샘플링 데몬(31_1602)이 특정된 속성 또는 속성 값에 대한 이벤트 예측들을 샘플링 데몬(31_102)에 송신할 것을 요청할 수 있다. 예를 들어, 애플리케이션(31_1608)은 모바일 디바이스(31_100)의 애플리케이션(31_108)과 동기화되는 애플리케이션일 수 있다. 예를 들어, 애플리케이션들(31_108, 31_1608)은 모바일 디바이스(31_100)와 모바일 디바이스(31_1600) 사이의 데이터(예를 들어, 미디어 파일, 메시지, 상태 정보 등)를 동기화하도록 구성된 미디어 애플리케이션들(예를 들어, 음악 라이브러리, 비디오 라이브러리, 이메일 애플리케이션, 메시징 애플리케이션 등)일 수 있다.
일부 구현예들에서, 피어 디바이스(예를 들어, 모바일 디바이스(31_100))로 하여금 디바이스들 사이의 데이터를 언제 동기화할지를 결정하도록 하기 위해, 애플리케이션(31_1608)은, 샘플링 데몬(31_1602)이 모바일 디바이스(31_1600)에 의해 생성된 속성 이벤트 데이터에 기초하여 "bundleId" 속성 또는 특정 "bundleId" 속성 값(예를 들어, 애플리케이션(31_1608)에 대한 애플리케이션 식별자)에 대한 시간 및/또는 피어 예측들을 생성하고 예측들을 샘플링 데몬(31_102)에 전송할 것을 요청할 수 있다. 예를 들어, 피어 디바이스는 동일한 사용자에 의해 소유된 원격 디바이스(예를 들어, 현재 로컬 디바이스가 아님)일 수 있다. 모바일 디바이스(31_100)는 예를 들어, 모바일 디바이스(31_1600)의 피어 디바이스일 수 있다.
일부 구현예들에서, 요청 클라이언트(예를 들어, 애플리케이션(31_1608))는 전달을 위한 스케줄 및 예측 데이터에 대한 지속기간을 특정할 수 있다. 예를 들어, 애플리케이션(31_1608)은 "bundleId" 속성 값 "mailapp"에 대한 피어 및/또는 시간 예측을 요청할 수 있다. 애플리케이션(31_1608)은, 예를 들어, 예측이 매주 생성되고 교환될 것을, 그리고 각각의 예측이 일주일의 기간 또는 지속기간을 커버할 것을 요청할 수 있다.
일부 구현예들에서, 피어 디바이스들 사이의 데이터 교환들은 정적으로 스케줄링될 수 있다. 샘플링 데몬(31_1602)은 모바일 디바이스(31_100)가 엄격한 스케줄(예를 들어, 24시간마다의 애플리케이션 예측들 및 배터리 통계치들) 하에서 모바일 디바이스(31_1600)의 원격 상태의 일관된 뷰를 갖도록 하는 데 필요한 속성 데이터를 송신할 수 있다. 일부 구현예들에서, 클라이언트는 피어 디바이스로부터의 요구에 따라 속성 예측들 또는 통계치들을 요청할 수 있다. 이러한 교환들은 비반복적이다. 요청 클라이언트는 요청된 데이터가 수신될 때 통지받을 수 있다.
일부 구현예들에서, 샘플링 데몬(31_1602)은 모바일 디바이스(31_1600)에 대한 시스템 상태 데이터를 샘플링 데몬(31_102)에 전송할 수 있다. 예를 들면, 샘플링 데몬(31_1602)은 배터리 충전 레벨 이벤트(예를 들어, "batteryLevel" 속성 이벤트), 배터리 충전 이벤트(예를 들어, "cableplugin" 이벤트), 에너지 사용 이벤트(예를 들어, "energy" 속성 이벤트) 및/또는 배터리 사용량 및 충전 통계치를 생성하고 배터리-관련 이벤트 데이터를 샘플링 데몬(31_102)에 전송하는 데 사용될 수 있는 다른 이벤트들을 수신할 수 있다. 예를 들어, 배터리 상태 정보가 24시간마다 교환될 수 있다. 배터리 상태 정보는 우발적으로 교환될 수 있다. 예를 들면, 통신 채널(예를 들어, 피어-투-피어, 네트워크 등)이 모바일 디바이스(31_100)와 모바일 디바이스(31_1600)로 확립되면, 모바일 디바이스들은 우발적으로 이미 개방된 통신 채널을 사용하여 배터리 상태 또는 다른 시스템 상태 정보(예를 들어, 현재 포어그라운드 애플리케이션의 식별)를 교환할 수 있다.
다른 예로서, 샘플링 데몬(31_1602)은 열 레벨 이벤트(예를 들어, "thermalLevel" 속성 이벤트), 네트워크 이벤트(예를 들어, "networkQuality" 속성 이벤트, "networkBytes" 속성 이벤트)를 수신하고 열 및/또는 네트워크 이벤트를 샘플링 데몬(31_102)에 전송할 수 있다. 샘플링 데몬(31_1602)은 어떤 애플리케이션(예를 들어, 애플리케이션 식별자)이 현재 모바일 디바이스(31_1600)의 포어그라운드에 있는지를 나타내는 애플리케이션 관리자(31_106)로부터의 이벤트(예를 들어, "system.foregroundApp" 속성 이벤트)를 수신하고 포어그라운드 애플리케이션 정보를 샘플링 데몬(102)에 전송할 수 있다. 일부 구현예들에서, 열 이벤트 및 포어그라운드 애플리케이션 변경 정보는 이벤트가 발생하자마자(예를 들어, 피어 디바이스들 사이에 연결이 확립되자마자) 피어 디바이스들과 교환될 수 있다. 일부 구현예들에서, 네트워크 상태 정보는 주기적으로(예를 들어, 1일 1회, 1일 2회, 매시간 등) 교환될 수 있다.
샘플링 데몬(31_1602)으로부터의 예측 및/또는 시스템 이벤트 데이터의 수신시, 샘플링 데몬(31_102)은 예측 및/또는 이벤트 데이터를 피어 데이터 저장소(31_1622)에 저장할 수 있다. 유사하게, 샘플링 데몬(31_1602)이 샘플링 데몬(31_102)으로부터 수신하는 임의의 예측 및/또는 이벤트 데이터는 피어 데이터 저장소(31_1612)에 저장될 수 있다. 일부 구현예들에서, 다른 디바이스로부터 수신된 예측 및/또는 이벤트 데이터는 디바이스 설명과 연관될 수 있다. 예를 들어, 디바이스 설명은 디바이스 이름, 디바이스 식별자 및 디바이스의 모델을 식별하는 모델 식별자를 포함할 수 있다. 디바이스 설명은 피어 데이터 저장소(31_1622)에서 디바이스에 대한 예측 데이터 및/또는 이벤트 데이터를 검색하는 데 사용될 수 있다. 모바일 디바이스(31_100) 및 모바일 디바이스(31_1600)가 예측 및/또는 이벤트 데이터를 교환했으면, 모바일 디바이스들은 교환된 정보를 사용하여, 아래의 원격 승인 제어 메커니즘을 사용하여 서로 언제 통신할지를 결정할 수 있다. 정보가 필요할 때 그리고 디바이스들의 배터리 상태가 정보를 공유하는 것을 지원할 수 있을 때에만 디바이스들이 정보를 공유할 수 있게 함으로써, 통신의 전력 관리가 향상될 수 있다.
원격 승인 제어
일부 구현예들에서, 모바일 디바이스(31_100)(또는 모바일 디바이스(31_1600))는 다른 디바이스로부터 수신된 데이터에 기초하여 승인 제어를 수행할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 샘플링 데몬(31_1602)으로부터 수신되고 피어 데이터 저장소(31_1622)에 저장된 예측 및 시스템 이벤트 데이터에 기초하여 승인 제어를 수행할 수 있다. 예를 들어, 애플리케이션(31_1608)과 데이터를 동기화하기 위해, 애플리케이션(31_108)은 동기화 메시지를 아이덴티티 서비스 데몬(31_1620)에 송신할 수 있다. 예를 들어, 동기화 메시지는 모바일 디바이스(31_100)에 대한 식별자, 모바일 디바이스(31_1600)에 대한 식별자, 우선순위 식별자(예를 들어, 높은, 낮은), 및 메시지 페이로드(예를 들어, 동기화될 데이터)를 포함할 수 있다.
낮은 우선순위 메시지
일부 구현예들에서, 낮은 우선순위 메시지는 승인 제어를 거친 후에 전송될 수 있다. 예를 들어, 낮은 우선순위 메시지는 임의 처리(discretionary processing)(예를 들어, 백그라운드 애플리케이션, 시스템 유틸리티, 예상 활동, 사용자가 시작하지 않은 활동)와 연관된 메시지일 수 있다. 예를 들어, 아이덴티티 서비스 데몬(31_1620)은 애플리케이션(31_1608)에 대한 번들 식별자인 "bundleId" 속성 값(예를 들어, "bundleId"= "1608")에 대한 승인 제어 요청을 샘플링 데몬(31_102)에 송신할 수 있다. "bundleId" 속성 이름 및 값(예를 들어, "1608")에 추가하여, 아이덴티티 서비스 데몬(31_1620)은 애플리케이션(31_108)이 다른 디바이스와의 통신에 대한 승인 제어를 요청하고 있음을 나타내기 위해 승인 제어 요청 내에 디바이스 이름(예를 들어, "device 31_1600")을 제공할 수 있다.
일부 구현예들에서, 승인 제어 요청을 수신하는 것에 응답하여, 샘플링 데몬(31_102)은 로컬 승인 제어 및 원격 승인 제어를 수행할 수 있다. 예를 들면, 샘플링 데몬(31_102)은 모바일 디바이스(31_100)가 특정된 속성 값(예를 들어, "bundleId" = "1608")과 연관된 이벤트가 발생하는 것을 허용하는 상태에 있는지를 결정하기 위해, 전술한 바와 같이, 로컬 승인 제어를 수행할 수 있다. 샘플링 데몬(31_102)은 예를 들어, 로컬 에너지, 데이터 및 속성 예산들을 체크할 수 있고, 모바일 디바이스(31_100)가 특정된 속성 값(예를 들어, "bundleId" = "1608")과 연관된 이벤트를 허용하는 상태에 있는지 여부를 결정하기 위해 투표자 피드백을 요구할 수 있다.
로컬 승인 제어를 수행하는 것에 추가하여, 샘플링 데몬(31_102)은 모바일 디바이스(31_1600)로부터 수신되고 피어 데이터 저장소(31_1622)에 저장된 "bundleId" 속성 예측, 이벤트 데이터 및 시스템 데이터에 기초하여 원격 승인 제어를 수행할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 피어 데이터 저장소(31_1622)에서 모바일 디바이스(31_1600)와 연관된 데이터의 위치를 찾기 위해 디바이스 식별자(예를 들어, "device 31_1600", 디바이스 이름, 고유 식별자, UUID 등)를 사용할 수 있다. 샘플링 데몬(31_102)은 샘플링 데몬(31_1602)으로부터 수신된 속성(예를 들어, "bundleId") 예측 데이터를 분석하여, 애플리케이션(31_1608)이 현재 15분 타임슬롯에서 모바일 디바이스(31_1600) 상에서 사용자에 의해 호출될 가능성이 있는지를 결정할 수 있다. 애플리케이션(31_1608)이 현재 15분 타임슬롯에서 사용자에 의해 호출될 가능성이 없다면, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 "아니오" 값을 반환할 수 있다. 예를 들어, 애플리케이션(31_1608)이 모바일 디바이스(31_1600) 상에서 사용될 가능성이 있을 때에만 애플리케이션(31_108)이 애플리케이션(31_1608)과 동기화하도록 허용함으로써, 샘플링 데몬(31_102)은 사용자가 모바일 디바이스(31_1600) 상에서 애플리케이션(31_1608)을 사용할 가능성이 있을 때와 같은 시간까지 동기화 프로세스를 지연시키고 시스템 리소스들(예를 들어, 배터리, CPU 사이클, 네트워크 데이터)을 보존할 수 있다.
일부 구현예들에서, 애플리케이션(31_1608)이 현재 15분 타임슬롯에서 모바일 디바이스(31_1600)의 사용자에 의해 호출될 가능성이 있다면, 샘플링 데몬(31_102)은 모바일 디바이스(31_1600)와 연관되고 피어 데이터 저장소(31_1622)에 저장된 시스템 데이터를 체크할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 모바일 디바이스(31_1600)가 애플리케이션(31_108)과 애플리케이션(31_1608) 사이의 동기화를 수행하기에 충분한 배터리 충전이 남아있는지를 결정하기 위해 모바일 디바이스(31_1600)와 연관된 시스템 데이터를 체크할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 현재 애플리케이션(31_108)과 애플리케이션(31_1608) 사이의 동기화를 완료하기에 충분한 배터리 충전이 있는지를 체크할 수 있다. 샘플링 데몬(31_102)은 동기화를 수행하기에 충분한 배터리 충전이 있는지 여부를 체크하고, 다음 예측된 배터리 재충전(예를 들어, "cablePlugin" 속성 이벤트)까지 동작을 계속할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 다음 "cablePlugin" 속성 이벤트가 언제 발생할 가능성이 있는지를 식별하는 "cablePlugin" 속성에 대한 시간 예측을 생성할 수 있다. 샘플링 데몬(31_102)은 다음 "cablePlugin" 이벤트까지 에너지 사용을 예측하기 위해 에너지 사용 통계치(이벤트들)를 분석하고, 애플리케이션(31_108)과 애플리케이션(31_1608) 사이의 동기화 전송을 서비스하기에 충분한 잔여 에너지가 있는지를 결정할 수 있다. 샘플링 데몬(31_102)이 모바일 디바이스(31_1600)가 동기화를 서비스하기에 충분한 에너지(예를 들어, 배터리 충전)를 갖지 않음을 결정하면, 샘플링 데몬(31_102)은 원격 승인 제어 요청에 응답하여 "아니오" 값을 반환할 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 모바일 디바이스(31_1600)가 정상 열 상태(예를 들어, 너무 뜨겁지는 않음)에 있는지를 결정하기 위해 모바일 디바이스(31_1600)와 연관된 시스템 데이터를 체크할 수 있고 동기화 요청을 프로세싱하는 것을 취급할 수 있다. 예를 들어, 모바일 디바이스(31_1600)로부터 수신된 "thermalLevel" 속성 이벤트 데이터가 모바일 디바이스(31_1600)가 임계값보다 높은 온도에서 현재 동작하고 있음을 나타내는 경우, 샘플링 데몬(31_102)은 원격 승인 제어 요청에 응답하여 "아니오" 값을 반환함으로써 동기화 통신을 방지할 수 있다.
일부 구현예들에서, 예측 데이터가 사용자가 모바일 디바이스(31_1600) 상의 애플리케이션(31_1608)을 호출할 가능성이 있음을 나타내고, 에너지, 열 및 다른 시스템 상태 정보가 모바일 디바이스(31_1600)가 모바일 디바이스(31_100)로부터의 통신을 처리하도록 하는 상태에 있음을 나타내는 경우, 샘플링 데몬(31_102)은 승인 제어 요청에 응답하여 아이덴티티 서비스 데몬(31_1620)에 "예" 값을 반환할 수 있다. 승인 제어 요청에 응답하여 "예" 값을 수신하는 것에 응답하여, 아이덴티티 서비스 데몬(31_1620)은 애플리케이션(31_108)에 대한 동기화 메시지를 모바일 디바이스(31_1600) 상의 아이덴티티 서비스 데몬(31_1610)에 전송할 수 있다. 이어서, 애플리케이션(31_108) 및 애플리케이션(31_1608)은 아이덴티티 서비스 데몬(31_1620) 및 아이덴티티 서비스 데몬(31_1610)을 통해 메시지들을 교환함으로써 데이터를 동기화할 수 있다.
일부 구현예들에서, 높은 우선순위 메시지는 원격 승인 제어를 거친 후에 전송될 수 있다. 예를 들어, 높은 우선순위 메시지는 포어그라운드 애플리케이션과 연관된 메시지 또는 사용자가 입력을 제공하는 것에 응답하여 생성된 메시지와 같은, 사용자 시작된 태스크와 연관된 메시지일 수 있다. 일부 구현예들에서, 높은 우선순위의 메시지에 대한 승인 제어는 낮은 우선순위 메시지와 유사하게 처리될 수 있다. 그러나, 높은 우선순위 메시지에 대한 원격 승인 제어를 수행할 때, 높은 우선순위 메시지는, 높은 우선순위 메시지가 전형적으로 소정의 임의 백그라운드 태스크에 의해 시작되는 대신에 소정의 사용자 액션에 의해 트리거되기 때문에, 속성 예측 데이터(예를 들어, "bundleId" 예측 데이터)를 고려하지 않고 인정될(허용될) 수 있다.
일부 구현예들에서, 높은 우선순위 메시지들에 대한 승인 제어를 수행할 때, 원격 디바이스(예를 들어, 모바일 디바이스(31_1600))의 배터리 상태는 원격 디바이스(예를 들어, 피어 디바이스)가 높은 우선순위 메시지를 처리하기에 이용 가능한 충분한 배터리 충전을 갖는다는 것을 확인하기 위해 체크될 수 있다. 원격 디바이스 상에 이용 가능한 충분한 배터리 충전이 있다면, 높은 우선순위 메시지는 원격 승인 제어에 의해 승인될 것이다. 예를 들어, 샘플링 데몬(31_102)은 높은 우선순위 메시지를 처리하기에 충분한 배터리 충전이 남아있을 때 원격 승인 제어 요청에 응답하여 아이덴티티 서비스 데몬(31_1620)에 "예" 값을 전송할 수 있다. 원격 디바이스 상에 이용 가능한 충분한 배터리 충전이 있지 않다면, 높은 우선순위 메시지는 원격 승인 제어에 의해 거절될 것이다. 예를 들어, 샘플링 데몬(31_102)은 높은 우선순위 메시지를 처리하기에 충분한 배터리 충전이 남아있을 때 원격 승인 제어 요청에 응답하여 아이덴티티 서비스 데몬(31_1620)에 "아니오" 값을 전송할 수 있다. 따라서, 아이덴티티 서비스 데몬(31_1620)은 피어 디바이스가 해당 메시지를 처리하기에 충분한 배터리 충전이 남아있을 때 피어 디바이스(예를 들어, 모바일 디바이스(31_1600))와의 통신을 시작할 것이다.
일부 구현예들에서, 샘플링 데몬(31_102)이 높은 우선순위 메시지를 통지받는 경우, 샘플링 데몬(31_102)은 현재 배터리 상태 정보(예를 들어, 현재 충전 레벨)를 아이덴티티 서비스 데몬(31_1620)에 송신할 수 있다. 이어서, 아이덴티티 서비스 데몬(31_1620)은 배터리 상태 정보를 높은 우선순위 메시지에 추가할 수 있다. 따라서, 시스템 상태 정보는 모바일 디바이스(31_100)와 모바일 디바이스(31_1600) 사이에서 전송되는 다른 메시지들에 배터리 상태 정보(또는 다른 정보, 예를 들어, 열 레벨, 포어그라운드 애플리케이션 등)를 피기백(piggy back)시킴으로써 디바이스들 사이에 효율적으로 공유될 수 있다.
일부 구현예들에서, 샘플링 데몬(31_102)은 재시도 메시지를 아이덴티티 서비스 데몬(31_1620)에 송신할 수 있다. 예를 들어, 모바일 디바이스(31_100) 또는 모바일 디바이스(31_1600) 상의 상태들이 변화할 때(예를 들어, 배터리 상태가 향상될 때), 샘플링 데몬(31_102)은 아이덴티티 서비스 데몬(31_1620)에 재시도 메시지를 송신할 수 있다. 일부 구현예들에서, 원격 포커스(focal) 애플리케이션이 변화할 때 재시도 메시지가 생성될 수 있다. 예를 들어, 원격 피어 디바이스 상의 사용자가 "mailapp" 애플리케이션을 사용하고 있는 경우, "mailapp" 애플리케이션은 포커스 애플리케이션이 된다. 사용자가 "webbrowser" 애플리케이션을 사용하기 시작하면, 포커스 애플리케이션은 "webbrowser" 애플리케이션으로 변화한다. 포커스 애플리케이션의 변화는 피어 데이터가 모바일 디바이스(31_100)와 모바일 디바이스(31_1600) 사이에서 교환될 때 샘플링 데몬(31_1602)에 이벤트로서 보고되고 샘플링 데몬(31_102)에 전송될 수 있다. 피어 디바이스(31_1602)에서 포커스 애플리케이션의 변화를 나타내는 이벤트 정보를 수신할 시에, 샘플링 데몬(31_102)은 재시도 메시지를 아이덴티티 서비스 데몬(31_1620)에 송신할 수 있다. 이어서, 아이덴티티 서비스 데몬(31_1620)은 샘플링 데몬(31_102)에 의해 거절된 각 메시지에 대한 승인 제어를 재시도할 수 있다. 예를 들어, 아이덴티티 서비스 데몬(31_1620)은 샘플링 데몬(31_102)으로부터 재시도 메시지가 수신될 때 거절된 메시지들(예를 들어, 전송 태스크들)을 저장할 수 있고 거절된 메시지들을 승인 제어를 통해 송신할 수 있다. 일부 구현예들에서, 거절된 메시지들은 일정 기간이 경과한 후에 전송될 수 있다. 예를 들어, 승인 제어를 통과하지 못한 메시지는 구성가능한 기간이 경과한 후에 피어 디바이스에 송신될 수 있다.
일부 구현예들에서, 아이덴티티 서비스 데몬(31_1620)은 샘플링 데몬(31_102)이 모바일 디바이스(31_100) 또는 모바일 디바이스(31_1600) 상의 상태들이 변화했음을 나타낼 때 데이터 스트림 전송을 인터럽트할 수 있다. 예를 들어, 샘플링 데몬(31_102)이 모바일 디바이스(31_100) 또는 모바일 디바이스(31_1600) 상의 배터리 상태가 변화되어 모바일 디바이스들 중 하나가 배터리 전력이 떨어졌을 수 있다고 결정하면, 샘플링 데몬(31_102)은 아이덴티티 서비스 데몬(31_1620)에게 전송을 중지하고 데이터 스트림과 연관된 속성 이벤트에 대한 승인 제어를 재시도하라고 명할 수 있다.
피어 디바이스들 사이에서 데이터를 공유하기 위한 프로세스
도 31q은 피어 디바이스들 사이에서 데이터를 공유하기 위한 예시적인 프로세스(31_1700)를 예시한다. 프로세스(31_1700)에 대한 추가 상세사항들은 도 31p을 참조하여 위에서 발견될 수 있다. 단계(31_1702)에서, 모바일 디바이스는 피어 디바이스로부터 이벤트 데이터를 수신할 수 있다. 예를 들어, 이벤트 데이터는 "digests"(예를 들어, 예측, 통계치 등)로서 또는 원시(예를 들어, 미처리된) 이벤트 데이터로서 공유될 수 있다. 예를 들어, 제2 디바이스(예를 들어, 모바일 디바이스(31_1600))는 제2 디바이스 및 모바일 디바이스(31_100)가 동일한 사용자에 의해 소유될 때 그 모바일 디바이스의 피어 디바이스이다. 모바일 디바이스(31_100)는 모바일 디바이스(31_1600)의 시스템 상태(예를 들어, 배터리 상태, 네트워크 상태, 포어그라운드 애플리케이션 식별자 등)와 관련된 이벤트 데이터를 수신할 수 있다. 모바일 디바이스는 모바일 디바이스(31_1600) 상에서 발생한 이벤트들에 기초하여 모바일 디바이스(31_1600)로부터 속성 이벤트 예측, 통계치 또는 원시 이벤트 데이터를 수신할 수 있다. 예를 들어, 피어 디바이스(31_1600) 상의 애플리케이션(31_1608)은 피어 디바이스(31_1600) 상의 샘플링 데몬(31_1602)에게 특정 속성 또는 속성 값에 대한 예측을 생성하여 모바일 디바이스(31_100)로 송신하도록 지시할 수 있다.
단계(31_1704)에서, 모바일 디바이스(31_100) 상의 아이덴티티 서비스 데몬(31_1620)은 피어 디바이스(31_1600)에 전송할 메시지를 수신할 수 있다. 예를 들어, 모바일 디바이스 상에서 구동되는 애플리케이션(31_108)은 피어 디바이스(31_1600) 상의 대응하는 애플리케이션(31_1608)과 데이터를 공유, 교환 또는 동기화할 필요가 있을 수 있다. 애플리케이션(31_108)은 공유될 데이터를 포함하는 메시지를 아이덴티티 서비스 데몬(31_1620)에 송신할 수 있다.
단계(31_1706)에서, 모바일 디바이스(100) 상의 샘플링 데몬(31_102)은 피어 디바이스(31_1600)로부터 수신된 데이터에 기초하여 메시지를 전송할지 여부를 결정할 수 있다. 예를 들어, 샘플링 데몬(31_102)은 로컬 승인 제어 체크 및 원격 승인 제어 체크를 수행하여 메시지가 현재 시간에 피어 디바이스(31_1600)로 송신되어야 하는지 여부를 결정할 수 있다. 피어 디바이스(31_1600)로부터 수신된 속성 이벤트 예측이 피어 디바이스(31_1600)의 사용자가 현재 시간에 애플리케이션(31_1608)을 호출할 가능성이 있음을 나타내는 경우 그리고 이벤트 데이터가 피어 디바이스(31_1600)의 상태들(예를 들어, 배터리 상태, 열 레벨 등)이 피어 디바이스(31_1600)와의 통신을 시작하는 것이 배터리를 고갈시키거나 열 상태를 악화시키지 않도록 하는 것임을 나타내는 경우, 샘플링 데몬(31_102)은 메시지의 전송을 승인할 수 있다.
단계(31_1708)에서, 샘플링 데몬(31_102)이 승인 제어를 수행하고 피어 디바이스(31_1600)와의 통신을 시작하는 것을 승인하면, 아이덴티티 서비스 데몬(31_1620)은 메시지를 피어 디바이스(31_1600)에 전송할 수 있다. 예를 들어, 아이덴티티 서비스 데몬(31_1620)은 메시지를 피어 디바이스(31_1600)의 아이덴티티 서비스 데몬(31_1610)에 전송할 수 있다. 이어서, 아이덴티티 서비스 데몬(31_1610)은, 애플리케이션(31_108) 및 애플리케이션(31_1608)이 데이터를 동기화할 수 있도록 애플리케이션(31_1608)에 메시지를 전송할 수 있다.
(예컨대, 도 1a의 디바이스(100)의) 메모리는 또한, 도 31a 내지 도 31q을 참조하여 기술된 바와 같은 동적 조정 프로세스들 및 기능들과 같이, 섹션 1에서 기술되는 프로세스들 및 기능들을 가능하게 하기 위한 다른 소프트웨어 명령어들을 저장할 수 있다.
모바일 디바이스의 동적 조정을 위한 예시적인 방법, 시스템, 및 컴퓨터 판독가능 매체
(예컨대, 도 1a의 디바이스(100)의) 메모리는 또한, 도 31a 내지 도 31q을 참조하여 기술된 바와 같은 동적 조정 프로세스들 및 기능들과 같이, 섹션 1에서 기술되는 프로세스들 및 기능들을 가능하게 하기 위한 다른 소프트웨어 명령어들을 저장할 수 있다.
일 태양에서, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스와 연관된 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 하나 이상의 이벤트들의 발생은 시스템 설정에 대한 조정을 트리거할 수 있다. 모바일 디바이스는 사용자에 의한 예상된 호출들의 예측에 기초하여 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 일부 구현예들에서, 모바일 디바이스는, 새로운 콘텐츠가 애플리케이션들이 다운로드하는 데 이용 가능하다는 것을 나타내는, 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다. 모바일 디바이스는 푸시 통지들과 연관된 애플리케이션들을 백그라운드에서 개시하고 새로운 콘텐츠를 다운로드할 수 있다. 일부 구현예들에서, 애플리케이션을 구동하거나 피어 디바이스와 통신하기 전에, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스의 에너지 및 데이터 예산들 및 환경 조건들을 체크하여 고품질의 사용자 경험을 보장하도록 구성될 수 있다.
일부 구현예들에서, 방법이 제공된다. 본 방법은, 모바일 디바이스에서, 피어 디바이스로부터 속성 이벤트 데이터를 수신하는 단계 - 속성 이벤트 데이터는 피어 디바이스 상에서 발생한 이벤트들을 설명함 -; 모바일 디바이스에 피어 이벤트 데이터를 저장하는 단계; 모바일 디바이스 상의 애플리케이션으로부터 피어 디바이스와 통신하라는 요청을 수신하는 단계 - 요청은 피어 디바이스 상의 대응하는 애플리케이션에 대한 식별자에 대응하는 값을 갖는 속성을 포함함 -; 및 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하는 단계를 포함한다.
일부 구현예들에서, 피어 디바이스 및 모바일 디바이스는 단일 사용자에 의해 소유된다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하는 단계는, 피어 이벤트 데이터에 기초하여 속성에 대한 하나 이상의 예측을 생성하는 단계를 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하는 단계는, 피어 이벤트 데이터에 기초하여 피어 디바이스의 배터리 상태를 결정하는 단계를 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하는 단계는, 피어 이벤트 데이터에 기초하여 피어 디바이스의 열 상태(thermal status)를 결정하는 단계를 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하는 단계는, 사용자가 대략 현재 시간에 피어 디바이스 상의 대응하는 애플리케이션을 호출할 가능성이 있다고 결정하는 단계를 포함한다.
일부 구현예들에서, 비일시적인 컴퓨터 판독가능 저장 매체가 제공되는데, 비일시적인 컴퓨터 판독가능 저장 매체는 명령어들의 하나 이상의 시퀀스들을 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스에서, 피어 디바이스로부터 속성 이벤트 데이터를 수신하게 하고 - 속성 이벤트 데이터는 피어 디바이스 상에서 발생한 이벤트들을 설명함 -; 모바일 디바이스에 피어 이벤트 데이터를 저장하게 하고; 모바일 디바이스 상의 애플리케이션으로부터 피어 디바이스와 통신하라는 요청을 수신하게 하고 - 요청은 피어 디바이스 상의 대응하는 애플리케이션에 대한 식별자에 대응하는 값을 갖는 속성을 포함함 -; 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 한다.
일부 구현예들에서, 피어 디바이스 및 모바일 디바이스는 단일 사용자에 의해 소유된다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 피어 이벤트 데이터에 기초하여 속성에 대한 하나 이상의 예측을 생성하게 하는 명령어들을 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 피어 이벤트 데이터에 기초하여 피어 디바이스의 배터리 상태를 결정하게 하는 명령어들을 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 피어 이벤트 데이터에 기초하여 피어 디바이스의 열 상태를 결정하게 하는 명령어들을 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 사용자가 대략 현재 시간에 피어 디바이스 상의 대응하는 애플리케이션을 호출할 가능성이 있다고 결정하게 하는 명령어들을 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 하나 이상의 프로세서들; 및 명령어들의 하나 이상의 시퀀스들을 포함하는 비일시적인 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스에서, 피어 디바이스로부터 속성 이벤트 데이터를 수신하게 하고 - 속성 이벤트 데이터는 피어 디바이스 상에서 발생한 이벤트들을 설명함 -; 모바일 디바이스에 피어 이벤트 데이터를 저장하게 하고; 모바일 디바이스 상의 애플리케이션으로부터 피어 디바이스와 통신하라는 요청을 수신하게 하고 - 요청은 피어 디바이스 상의 대응하는 애플리케이션에 대한 식별자에 대응하는 값을 갖는 속성을 포함함 -; 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 한다.
일부 구현예들에서, 피어 디바이스 및 모바일 디바이스는 단일 사용자에 의해 소유된다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 피어 이벤트 데이터에 기초하여 속성에 대한 하나 이상의 예측을 생성하게 하는 명령어들을 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 피어 이벤트 데이터에 기초하여 피어 디바이스의 배터리 상태를 결정하게 하는 명령어들을 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 피어 이벤트 데이터에 기초하여 피어 디바이스의 열 상태를 결정하게 하는 명령어들을 포함한다. 일부 구현예들에서, 모바일 디바이스에 의해, 피어 이벤트 데이터에 기초하여 피어 디바이스와의 통신을 시작할 것을 결정하게 하는 명령어들은, 사용자가 대략 현재 시간에 피어 디바이스 상의 대응하는 애플리케이션을 호출할 가능성이 있다고 결정하게 하는 명령어들을 포함한다.
다른 태양에서, 모바일 디바이스는 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 하나 이상의 이벤트들의 발생은 시스템 설정에 대한 조정을 트리거할 수 있다. 일부 구현예들에서, 모바일 디바이스는 사용자에 의한 예상된 호출의 예측에 기초하여 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 일부 구현예들에서, 모바일 디바이스는, 새로운 콘텐츠가 애플리케이션들이 다운로드하는 데 이용 가능하다는 것을 나타내는, 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다. 모바일 디바이스는 푸시 통지들과 연관된 애플리케이션들을 백그라운드에서 개시하고 새로운 콘텐츠를 다운로드할 수 있다. 일부 구현예들에서, 애플리케이션을 구동하거나 네트워크 인터페이스에 엑세스하기 전에, 모바일 디바이스는 모바일 디바이스의 에너지와 데이터 예산들 및 환경 조건들을 체크하여 고품질의 사용자 경험을 보존하도록 구성될 수 있다.
일부 구현예들에서, 방법이 제공되는데, 본 방법은, 모바일 디바이스 상에서 구동되는 제1 프로세스에서 이벤트 데이터를 수신하는 단계; 모바일 디바이스 상에서 구동되는 제2 프로세스로부터 이벤트 등록 데이터를 수신하는 단계 - 이벤트 등록 데이터는 제2 프로세스의 호출을 트리거하기 위한 하나 이상의 이벤트들을 식별하고, 제2 프로세스는 이벤트 등록 데이터가 수신된 후에 보류되거나 종료됨 -; 제1 프로세스에 의해, 이벤트 데이터에 기초하여 하나 이상의 이벤트들이 발생했음을 결정하는 단계; 및 모바일 디바이스 상에서 제2 프로세스를 호출하는 단계를 포함한다.
일부 구현예들에서, 제2 프로세스를 호출하는 단계는 제2 프로세스로 하여금 모바일 디바이스의 하나 이상의 컴포넌트들을 조정하게 한다. 일부 구현예들에서, 하나 이상의 컴포넌트들은 모바일 디바이스의 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 기저대역 프로세서 또는 디스플레이를 포함한다. 일부 구현예들에서, 하나 이상의 이벤트들은 모바일 디바이스의 동작 온도의 변화, 시스템 설정의 변화, 사용자 입력, 디스플레이 켜기 또는 끄기, 시계 알람 설정, 또는 캘린더 이벤트 설정을 포함한다. 일부 구현예들에서, 본 방법은 또한, 제1 프로세스에서, 제2 프로세스에 의해 저장된 이벤트 데이터에 대한 제2 프로세스로부터의 요청을 수신하는 단계; 및 요청된 이벤트 데이터를 제1 프로세스로부터 제2 프로세스로 전송하는 단계를 포함하고, 제2 프로세스는 이벤트 데이터에 기초하여 모바일 디바이스의 하나 이상의 컴포넌트들을 조정하도록 구성된다. 일부 구현예들에서, 하나 이상의 이벤트들은 이벤트들의 패턴을 포함하고, 제1 프로세스는 수신된 이벤트 데이터에서 패턴들을 식별하고 이벤트들의 패턴이 검출되는 경우 제2 프로세스를 호출하도록 구성된다.
일부 구현예들에서, 비일시적인 컴퓨터 판독가능 매체가 제공되는데, 비일시적인 컴퓨터 판독가능 매체는 명령어들의 하나 이상의 시퀀스들을 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 구동되는 제1 프로세스에서 이벤트 데이터를 수신하게 하고; 모바일 디바이스 상에서 구동되는 제2 프로세스로부터 이벤트 등록 데이터를 수신하게 하고 - 이벤트 등록 데이터는 제2 프로세스의 호출을 트리거하기 위한 하나 이상의 이벤트들을 식별하고, 제2 프로세스는 이벤트 등록 데이터가 수신된 후에 보류되거나 종료됨 -; 제1 프로세스에 의해, 이벤트 데이터에 기초하여 하나 이상의 이벤트들이 발생했음을 결정하게 하고; 모바일 디바이스 상에서 제2 프로세스를 호출하게 한다.
일부 구현예들에서, 제2 프로세스를 호출하는 것은 제2 프로세스로 하여금 모바일 디바이스의 하나 이상의 컴포넌트들을 조정하게 한다. 일부 구현예들에서, 하나 이상의 컴포넌트들은 모바일 디바이스의 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 기저대역 프로세서 또는 디스플레이를 포함한다. 일부 구현예들에서, 하나 이상의 이벤트들은 모바일 디바이스의 동작 온도의 변화, 시스템 설정의 변화, 사용자 입력, 디스플레이 켜기 또는 끄기, 시계 알람 설정, 또는 캘린더 이벤트 설정을 포함한다. 일부 구현예들에서, 명령어들은, 제1 프로세스에서, 제2 프로세스에 의해 저장된 이벤트 데이터에 대한 제2 프로세스로부터의 요청을 수신하게 하고; 요청된 이벤트 데이터를 제1 프로세스로부터 제2 프로세스로 전송하게 하고, 여기서 제2 프로세스는 이벤트 데이터에 기초하여 모바일 디바이스의 하나 이상의 컴포넌트들을 조정하도록 구성된다. 일부 구현예들에서, 하나 이상의 이벤트들은 이벤트들의 패턴을 포함하고, 제1 프로세스는 수신된 이벤트 데이터에서 패턴들을 식별하고 이벤트들의 패턴이 검출되는 경우 제2 프로세스를 호출하도록 구성된다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 하나 이상의 프로세서들; 및 명령어들의 하나 이상의 시퀀스들을 포함하는 비일시적인 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 구동되는 제1 프로세스에서 이벤트 데이터를 수신하게 하고; 모바일 디바이스 상에서 구동되는 제2 프로세스로부터 이벤트 등록 데이터를 수신하게 하고 - 이벤트 등록 데이터는 제2 프로세스의 호출을 트리거하기 위한 하나 이상의 이벤트들을 식별하고, 제2 프로세스는 이벤트 등록 데이터가 수신된 후에 보류되거나 종료됨 -; 제1 프로세스에 의해, 이벤트 데이터에 기초하여 하나 이상의 이벤트들이 발생했음을 결정하게 하고; 모바일 디바이스 상에서 제2 프로세스를 호출하게 한다.
일부 구현예들에서, 제2 프로세스를 호출하는 것은 제2 프로세스로 하여금 모바일 디바이스의 하나 이상의 컴포넌트들을 조정하게 한다. 일부 구현예들에서, 하나 이상의 컴포넌트들은 모바일 디바이스의 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 기저대역 프로세서 또는 디스플레이를 포함한다. 일부 구현예들에서, 하나 이상의 이벤트들은 모바일 디바이스의 동작 온도의 변화, 시스템 설정의 변화, 사용자 입력, 디스플레이 켜기 또는 끄기, 시계 알람 설정, 또는 캘린더 이벤트 설정을 포함한다. 일부 구현예들에서, 명령어들은, 제1 프로세스에서, 제2 프로세스에 의해 저장된 이벤트 데이터에 대한 제2 프로세스로부터의 요청을 수신하게 하고; 요청된 이벤트 데이터를 제1 프로세스로부터 제2 프로세스로 전송하게 하고, 여기서 제2 프로세스는 이벤트 데이터에 기초하여 모바일 디바이스의 하나 이상의 컴포넌트들을 조정하도록 구성된다. 일부 구현예들에서, 하나 이상의 이벤트들은 이벤트들의 패턴을 포함하고, 제1 프로세스는 수신된 이벤트 데이터에서 패턴들을 식별하고 이벤트들의 패턴이 검출되는 경우 제2 프로세스를 호출하도록 구성된다.
하나의 추가 태양에서, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스와 연관된 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 하나 이상의 이벤트들의 발생은 시스템 설정에 대한 조정을 트리거할 수 있다. 모바일 디바이스는 사용자에 의한 예상된 호출의 예측에 기초하여 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 일부 구현예들에서, 모바일 디바이스는 그 새로운 콘텐츠를 나타내는 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다.
일부 구현예들에서, 방법이 제공되는데, 본 방법은, 모바일 디바이스 상에서 실행 중인 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하는 단계 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함하고, 속성들 각각은 예산과 연관되고 이벤트들 각각은 대응하는 비용을 가짐 -; 모바일 디바이스에 의해 수신된 특정 속성과 연관된 이벤트들의 비용에 기초하여 특정 속성에 대한 예산을 감소시키는 단계; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하는 단계; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하는 단계; 이벤트의 비용을 특정 속성에 대해 남아있는 예산과 비교하는 단계; 및 제1 프로세스에 의해, 그 비교에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하는 단계를 포함한다.
일부 구현예들에서, 복수의 속성들 중 적어도 하나의 속성은 런타임 시에 클라이언트에 의해 동적으로 정의된다. 일부 구현예들에서, 이벤트를 허용할 것을 결정하는 단계는, 특정 속성과 연관된 이벤트가 언제 발생할 가능성이 있는지를 나타내는 그 속성에 대한 예측을 생성하는 단계를 포함한다. 일부 구현예들에서, 이벤트를 허용할 것을 결정하는 단계는, 이벤트의 비용을 커버하기에 충분한 예산이 남아있음을 결정하는 단계를 포함한다. 일부 구현예들에서, 특정 속성에 대한 예산은 클라이언트에 의해 동적으로 정의된다. 일부 구현예들에서, 예산은 시스템-범위 데이터 예산의 일부분에 대응한다. 일부 구현예들에서, 예산은 시스템-범위 에너지 예산의 일부분에 대응한다.
일부 구현예들에서, 비일시적인 컴퓨터 판독가능 매체가 제공되는데, 비일시적인 컴퓨터 판독가능 매체는 명령어들의 하나 이상의 시퀀스들을 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 실행 중인 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하게 하고 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함하고, 속성들 각각은 예산과 연관되고 이벤트들 각각은 대응하는 비용을 가짐 -; 모바일 디바이스에 의해 수신된 특정 속성과 연관된 이벤트들의 비용에 기초하여 특정 속성에 대한 예산을 감소시키게 하고; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하게 하고; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하게 하고; 이벤트의 비용을 특정 속성에 대해 남아있는 예산과 비교하게 하고; 제1 프로세스에 의해, 그 비교에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 한다.
일부 구현예들에서, 복수의 속성들 중 적어도 하나의 속성은 런타임 시에 클라이언트에 의해 동적으로 정의된다. 일부 구현예들에서, 이벤트를 허용할 것을 결정하게 하는 명령어들은, 특정 속성과 연관된 이벤트가 언제 발생할 가능성이 있는지를 나타내는 그 속성에 대한 예측을 생성하게 하는 명령어들을 포함한다. 일부 구현예들에서, 이벤트를 허용할 것을 결정하게 하는 명령어들은, 이벤트의 비용을 커버하기에 충분한 예산이 남아있음을 결정하게 하는 명령어들을 포함한다. 일부 구현예들에서, 특정 속성에 대한 예산은 클라이언트에 의해 동적으로 정의된다. 일부 구현예들에서, 예산은 시스템-범위 데이터 예산의 일부분에 대응한다. 일부 구현예들에서, 예산은 시스템-범위 에너지 예산의 일부분에 대응한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 하나 이상의 프로세서들; 및 명령어들의 하나 이상의 시퀀스들을 포함하는 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 실행 중인 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하게 하고 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함하고, 속성들 각각은 예산과 연관되고 이벤트들 각각은 대응하는 비용을 가짐 -; 모바일 디바이스에 의해 수신된 특정 속성과 연관된 이벤트들의 비용에 기초하여 특정 속성에 대한 예산을 감소시키게 하고; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하게 하고; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하게 하고; 이벤트의 비용을 특정 속성에 대해 남아있는 예산과 비교하게 하고; 제1 프로세스에 의해, 그 비교에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 한다.
일부 구현예들에서, 복수의 속성들 중 적어도 하나의 속성은 런타임 시에 클라이언트에 의해 동적으로 정의된다. 일부 구현예들에서, 이벤트를 허용할 것을 결정하게 하는 명령어들은, 특정 속성과 연관된 이벤트가 언제 발생할 가능성이 있는지를 나타내는 그 속성에 대한 예측을 생성하게 하는 명령어들을 포함한다. 일부 구현예들에서, 이벤트를 허용할 것을 결정하게 하는 명령어들은, 이벤트의 비용을 커버하기에 충분한 예산이 남아있음을 결정하게 하는 명령어들을 포함한다. 일부 구현예들에서, 특정 속성에 대한 예산은 클라이언트에 의해 동적으로 정의된다. 일부 구현예들에서, 예산은 시스템-범위 데이터 예산의 일부분에 대응한다. 일부 구현예들에서, 예산은 시스템-범위 에너지 예산의 일부분에 대응한다.
또 다른 태양에서, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스와 연관된 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 하나 이상의 이벤트들의 발생은 시스템 설정에 대한 조정을 트리거할 수 있다. 모바일 디바이스는 사용자에 의한 예상된 호출의 예측에 기초하여 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 일부 구현예들에서, 모바일 디바이스는, 새로운 콘텐츠가 애플리케이션들이 다운로드하는 데 이용 가능하다는 것을 나타내는, 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다. 모바일 디바이스는 푸시 통지들과 연관된 애플리케이션들을 백그라운드에서 개시하고 새로운 콘텐츠를 다운로드할 수 있다. 일부 구현예들에서, 애플리케이션을 구동하거나 피어 디바이스와 통신하기 전에, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스의 에너지 및 데이터 예산들 및 환경 조건들을 체크하여 고품질의 사용자 경험을 보장하도록 구성될 수 있다.
일부 구현예들에서, 방법이 제공되는데, 본 방법은, 컴퓨팅 디바이스 상에서 실행 중인 하나 이상의 플러그인 프로세스들로부터의 제1 프로세스에 의해, 플러그인 프로세스들을 하나 이상의 투표 프로세스들로서 등록하라는 요청을 수신하는 단계; 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하는 단계 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함함 -; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하는 단계; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하는 단계; 특정 속성을 식별하는 정보를 각각의 등록된 투표 프로세스로 전송하는 단계; 특정 속성을 식별하는 정보를 각각의 등록된 투표 프로세스로 전송하는 단계에 응답하여, 등록된 투표 프로세스들 중 적어도 하나의 등록된 투표 프로세스로부터 투표를 수신하는 단계; 및 제1 프로세스에 의해, 그 투표에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하는 단계를 포함한다.
일부 구현예들에서, 하나 이상의 투표 프로세스들은 런타임 시에 제1 프로세스에 동적으로 플러그인된다. 일부 구현예들에서, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하는 단계는, 특정 속성을 식별하는 정보를 각각의 투표 프로세스로 전송하는 단계; 및 각각의 투표 프로세스가, 특정 속성과 연관된 이벤트가 발생하도록 허용되어야 함을 결정할 때 투표 프로세스들 각각으로부터 '예' 투표를 수신하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 제1 프로세스에 의해, 제1 프로세스가 하나 이상의 투표 프로세스들 중 적어도 하나의 투표 프로세스로부터 '아니오' 투표를 수신할 때 제2 속성과 연관된 제2 이벤트를 방지할 것을 결정하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 투표 프로세스들 중 적어도 하나의 투표 프로세스로부터 특정 속성과 연관된 예측에 대한 요청을 수신하는 단계; 요청된 예측을 생성하는 단계; 및 요청된 예측을 적어도 하나의 투표 프로세스에 반환하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성 값과 연관된 제3 이벤트를 허용할 것을 결정하는 단계를 포함한다. 일부 구현예들에서, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성 값과 연관된 제3 이벤트를 허용할 것을 결정하는 단계는, 특정 속성 값을 식별하는 정보를 각각의 투표 프로세스로 전송하는 단계; 및 각각의 투표 프로세스가, 특정 속성 값과 연관된 이벤트가 발생하도록 허용되어야 함을 결정할 때 투표 프로세스들 각각으로부터 '예' 투표를 수신하는 단계를 포함한다.
일부 구현예들에서, 비일시적인 컴퓨터 판독가능 매체가 제공되는데, 비일시적인 컴퓨터 판독가능 매체는 명령어들의 하나 이상의 시퀀스들을 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 컴퓨팅 디바이스 상에서 실행 중인 하나 이상의 플러그인 프로세스들로부터의 제1 프로세스에 의해, 플러그인 프로세스들을 하나 이상의 투표 프로세스들로서 등록하라는 요청을 수신하게 하고; 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하게 하고 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함함 -; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하게 하고; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하게 하고; 특정 속성을 식별하는 정보를 각각의 등록된 투표 프로세스로 전송하게 하고; 특정 속성을 식별하는 정보를 각각의 등록된 투표 프로세스로 전송하는 것에 응답하여, 등록된 투표 프로세스들 중 적어도 하나의 등록된 투표 프로세스로부터 투표를 수신하게 하고; 제1 프로세스에 의해, 그 투표에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 한다.
일부 구현예들에서, 하나 이상의 투표 프로세스들은 런타임 시에 제1 프로세스에 동적으로 플러그인된다. 일부 구현예들에서, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 하는 명령어들은, 특정 속성을 식별하는 정보를 각각의 투표 프로세스로 전송하게 하고; 각각의 투표 프로세스가, 특정 속성과 연관된 이벤트가 발생하도록 허용되어야 함을 결정할 때 투표 프로세스들 각각으로부터 '예' 투표를 수신하게 하는 명령어들을 포함한다. 일부 구현예들에서, 명령어들은, 제1 프로세스에 의해, 제1 프로세스가 하나 이상의 투표 프로세스들 중 적어도 하나의 투표 프로세스로부터 '아니오' 투표를 수신할 때 제2 속성과 연관된 제2 이벤트를 방지할 것을 결정하게 한다. 일부 구현예들에서, 명령어들은, 투표 프로세스들 중 적어도 하나의 투표 프로세스로부터 특정 속성과 연관된 예측에 대한 요청을 수신하게 하고; 요청된 예측을 생성하게 하고; 요청된 예측을 적어도 하나의 투표 프로세스에 반환하게 한다. 일부 구현예들에서, 명령어들은, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성 값과 연관된 제3 이벤트를 허용할 것을 결정하게 한다. 일부 구현예들에서, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성 값과 연관된 제3 이벤트를 허용할 것을 결정하게 하는 명령어들은, 특정 속성 값을 식별하는 정보를 각각의 투표 프로세스로 전송하게 하고; 각각의 투표 프로세스가, 특정 속성 값과 연관된 이벤트가 발생하도록 허용되어야 함을 결정할 때 투표 프로세스들 각각으로부터 '예' 투표를 수신하게 하는 명령어들을 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 하나 이상의 프로세서들; 및 명령어들의 하나 이상의 시퀀스들을 포함하는 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 컴퓨팅 디바이스 상에서 실행 중인 하나 이상의 플러그인 프로세스들로부터의 제1 프로세스에 의해, 플러그인 프로세스들을 하나 이상의 투표 프로세스들로서 등록하라는 요청을 수신하게 하고; 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하게 하고 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함함 -; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하게 하고; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하게 하고; 특정 속성을 식별하는 정보를 각각의 등록된 투표 프로세스로 전송하게 하고; 특정 속성을 식별하는 정보를 각각의 등록된 투표 프로세스로 전송하는 것에 응답하여, 등록된 투표 프로세스들 중 적어도 하나의 등록된 투표 프로세스로부터 투표를 수신하게 하고; 제1 프로세스에 의해, 그 투표에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 한다.
일부 구현예들에서, 하나 이상의 투표 프로세스들은 런타임 시에 제1 프로세스에 동적으로 플러그인된다. 일부 구현예들에서, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 하는 명령어들은, 특정 속성을 식별하는 정보를 각각의 투표 프로세스로 전송하게 하고; 각각의 투표 프로세스가, 특정 속성과 연관된 이벤트가 발생하도록 허용되어야 함을 결정할 때 투표 프로세스들 각각으로부터 '예' 투표를 수신하게 하는 명령어들을 포함한다. 일부 구현예들에서, 명령어들은, 제1 프로세스에 의해, 제1 프로세스가 하나 이상의 투표 프로세스들 중 적어도 하나의 투표 프로세스로부터 '아니오' 투표를 수신할 때 제2 속성과 연관된 제2 이벤트를 방지할 것을 결정하게 한다. 일부 구현예들에서, 명령어들은, 투표 프로세스들 중 적어도 하나의 투표 프로세스로부터 특정 속성과 연관된 예측에 대한 요청을 수신하게 하고; 요청된 예측을 생성하게 하고; 요청된 예측을 적어도 하나의 투표 프로세스에 반환하게 한다. 일부 구현예들에서, 명령어들은, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성 값과 연관된 제3 이벤트를 허용할 것을 결정하게 한다. 일부 구현예들에서, 제1 프로세스에 의해, 하나 이상의 투표 프로세스들로부터의 피드백에 기초하여 특정 속성 값과 연관된 제3 이벤트를 허용할 것을 결정하게 하는 명령어들은, 특정 속성 값을 식별하는 정보를 각각의 투표 프로세스로 전송하게 하고; 각각의 투표 프로세스가, 특정 속성 값과 연관된 이벤트가 발생하도록 허용되어야 함을 결정할 때 투표 프로세스들 각각으로부터 '예' 투표를 수신하게 하는 명령어들을 포함한다.
하나의 다른 태양에서, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스와 연관된 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 하나 이상의 이벤트들의 발생은 시스템 설정에 대한 조정을 트리거할 수 있다. 모바일 디바이스는 사용자에 의한 예상된 호출의 예측에 기초하여 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 일부 구현예들에서, 모바일 디바이스는, 새로운 콘텐츠가 애플리케이션들이 다운로드하는 데 이용 가능하다는 것을 나타내는, 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다. 모바일 디바이스는 푸시 통지들과 연관된 애플리케이션들을 백그라운드에서 개시하고 새로운 콘텐츠를 다운로드할 수 있다. 일부 구현예들에서, 애플리케이션을 구동하거나 피어 디바이스와 통신하기 전에, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스의 에너지 및 데이터 예산들 및 환경 조건들을 체크하여 고품질의 사용자 경험을 보장하도록 구성될 수 있다.
일부 구현예들에서, 방법이 제공되는데, 본 방법은, 모바일 디바이스 상에서 실행 중인 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하는 단계 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함함 -; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하는 단계; 저장된 이벤트 데이터에서 속성들 각각에 대한 하나 이상의 이벤트 예측들을 생성하는 단계; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하는 단계; 제1 프로세스에 의해, 특정 속성에 대해 생성된 예측에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하는 단계를 포함한다.
일부 구현예들에서, 하나 이상의 예측들은 속성과 연관된 이벤트가 일정 기간 내에 발생할 가능성을 예상한다. 일부 구현예들에서, 하나 이상의 예측들은 피어 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 시간 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 이벤트 데이터 저장소에서의 특정 속성의 발생의 빈도에 기초하는 빈도 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 특정 속성과는 상이한 속성들과 연관된 이벤트들에 기초하는 파노라마 예측을 포함한다. 일부 구현예들에서, 본 방법은, 복수의 예측 유형들 각각이 수신된 이벤트의 발생을 얼마나 잘 예상하는지에 기초하여 디폴트 예측 유형을 결정하는 단계를 포함한다. 일부 구현예들에서, 복수의 예측 유형들은 빈도 예측 유형 및 파노라마 예측 유형을 포함한다.
일부 구현예들에서, 비일시적인 컴퓨터 판독가능 매체가 제공되는데, 비일시적인 컴퓨터 판독가능 매체는 명령어들의 하나 이상의 시퀀스들을 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 실행 중인 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하게 하고 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함함 -; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하게 하고; 저장된 이벤트 데이터에서 속성들 각각에 대한 하나 이상의 이벤트 예측들을 생성하게 하고; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하게 하고; 제1 프로세스에 의해, 특정 속성에 대해 생성된 예측에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 한다.
일부 구현예들에서, 하나 이상의 예측들은 속성과 연관된 이벤트가 일정 기간 내에 발생할 가능성을 예상한다. 일부 구현예들에서, 하나 이상의 예측들은 피어 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 시간 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 이벤트 데이터 저장소에서의 특정 속성의 발생의 빈도에 기초하는 빈도 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 특정 속성과는 상이한 속성들과 연관된 이벤트들에 기초하는 파노라마 예측을 포함한다. 일부 구현예들에서, 명령어들은, 복수의 예측 유형들 각각이 수신된 이벤트의 발생을 얼마나 잘 예상하는지에 기초하여 디폴트 예측 유형을 결정하게 한다. 일부 구현예들에서, 복수의 예측 유형들은 빈도 예측 유형 및 파노라마 예측 유형을 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 하나 이상의 프로세서들; 및 명령어들의 하나 이상의 시퀀스들을 포함하는 비일시적인 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 실행 중인 제1 프로세스에 의해, 하나 이상의 클라이언트 프로세스들에 의해 생성된 이벤트들을 수신하게 하고 - 각각의 이벤트는 복수의 속성들 중 하나의 속성과 연관된 데이터를 포함함 -; 모바일 디바이스 상의 이벤트 데이터 저장소에 이벤트 데이터를 저장하게 하고; 저장된 이벤트 데이터에서 속성들 각각에 대한 하나 이상의 이벤트 예측들을 생성하게 하고; 제1 프로세스에 의해, 클라이언트 프로세스로부터 특정 속성과 연관된 이벤트를 시작하라는 요청을 수신하게 하고; 제1 프로세스에 의해, 특정 속성에 대해 생성된 예측에 기초하여 특정 속성과 연관된 이벤트를 허용할 것을 결정하게 한다.
일부 구현예들에서, 하나 이상의 예측들은 속성과 연관된 이벤트가 일정 기간 내에 발생할 가능성을 예상한다. 일부 구현예들에서, 하나 이상의 예측들은 피어 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 시간 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 이벤트 데이터 저장소에서의 특정 속성의 발생의 빈도에 기초하는 빈도 예측을 포함한다. 일부 구현예들에서, 하나 이상의 예측들은 특정 속성과는 상이한 속성들과 연관된 이벤트들에 기초하는 파노라마 예측을 포함한다. 일부 구현예들에서, 명령어들은, 복수의 예측 유형들 각각이 수신된 이벤트의 발생을 얼마나 잘 예상하는지에 기초하여 디폴트 예측 유형을 결정하게 한다. 일부 구현예들에서, 복수의 예측 유형들은 빈도 예측 유형 및 파노라마 예측 유형을 포함한다.
또 하나의 추가적인 태양에서, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스와 연관된 환경, 시스템 및 사용자 이벤트들을 모니터링하도록 구성될 수 있다. 하나 이상의 이벤트들의 발생은 시스템 설정에 대한 조정을 트리거할 수 있다. 모바일 디바이스는 사용자에 의한 예상된 호출들의 예측에 기초하여 자주 호출된 애플리케이션들을 최신으로 유지하도록 구성될 수 있다. 일부 구현예들에서, 모바일 디바이스는, 새로운 콘텐츠가 애플리케이션들이 다운로드하는 데 이용 가능하다는 것을 나타내는, 애플리케이션들과 연관된 푸시 통지들을 수신할 수 있다. 모바일 디바이스는 푸시 통지들과 연관된 애플리케이션들을 백그라운드에서 개시하고 새로운 콘텐츠를 다운로드할 수 있다. 일부 구현예들에서, 애플리케이션을 구동하거나 피어 디바이스와 통신하기 전에, 모바일 디바이스는 모바일 디바이스 및/또는 피어 디바이스의 에너지 및 데이터 예산들 및 환경 조건들을 체크하여 고품질의 사용자 경험을 보장하도록 구성될 수 있다.
일부 구현예들에서, 방법이 제공되는데, 본 방법은, 모바일 디바이스 상에서 실행 중인 열 관리 데몬에서, 속성의 특정된 값과 연관되는 이벤트가 발생하도록 허용하는 것에 대해 투표하라는 요청을 수신하는 단계; 속성에 대한 샘플링 데몬으로부터의 피어 예측을 요청하는 단계; 속성과 연관되며 현재 시간 즈음에 발생할 것으로 예상되는 복수의 값들 각각에 대한 점수들을 수신하는 단계; 및 특정된 속성 값의 점수에 기초하여 이벤트를 허용하도록 투표하는 단계를 포함한다.
일부 구현예들에서, 본 방법은, 복수의 값들 중 다수의 가장 높은 점수가 매겨진 속성 값들을 결정하는 단계; 및 특정된 속성 값이 다수의 가장 높은 점수가 매겨진 속성 값들 내에 포함될 때 이벤트를 허용하도록 투표하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 특정된 속성 값이 복수의 값들 내에 포함되지 않을 때 이벤트를 방지하도록 투표하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 복수의 값들 중 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하는 단계; 및 특정된 속성 값이 다수의 가장 낮은 점수가 매겨진 속성 값들 내에 포함될 때 이벤트를 방지하도록 투표하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 모바일 디바이스의 현재 동작 온도에 기초하여 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하는 단계를 포함한다. 일부 구현예들에서, 본 방법은, 현재 동작 온도가 동작 온도들의 범위 내에서 어디에 있는지에 기초하여 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하는 단계를 포함한다.
일부 구현예들에서, 비일시적인 컴퓨터 판독가능 매체가 제공되는데, 비일시적인 컴퓨터 판독가능 매체는 명령어들의 하나 이상의 시퀀스들을 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 실행 중인 열 관리 데몬에서, 속성의 특정된 값과 연관되는 이벤트가 발생하도록 허용하는 것에 대해 투표하라는 요청을 수신하게 하고; 속성에 대한 샘플링 데몬으로부터의 피어 예측을 요청하게 하고; 속성과 연관되며 현재 시간 즈음에 발생할 것으로 예상되는 복수의 값들 각각에 대한 점수들을 수신하게 하고; 특정된 속성 값의 점수에 기초하여 이벤트를 허용하도록 투표하게 한다.
일부 구현예들에서, 명령어들은, 추가로, 복수의 값들 중 다수의 가장 높은 점수가 매겨진 속성 값들을 결정하게 하고; 특정된 속성 값이 다수의 가장 높은 점수가 매겨진 속성 값들 내에 포함될 때 이벤트를 허용하도록 투표하게 한다. 일부 구현예들에서, 명령어들은, 특정된 속성 값이 복수의 값들 내에 포함되지 않을 때 이벤트를 방지하도록 투표하게 한다. 일부 구현예들에서, 명령어들은, 복수의 값들 중 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하게 하고; 특정된 속성 값이 다수의 가장 낮은 점수가 매겨진 속성 값들 내에 포함될 때 이벤트를 방지하도록 투표하게 한다. 일부 구현예들에서, 명령어들은, 모바일 디바이스의 현재 동작 온도에 기초하여 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하게 한다. 일부 구현예들에서, 명령어들은, 현재 동작 온도가 동작 온도들의 범위 내에서 어디에 있는지에 기초하여 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하게 한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 하나 이상의 프로세서들; 및 명령어들의 하나 이상의 시퀀스들을 포함하는 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 모바일 디바이스 상에서 실행 중인 열 관리 데몬에서, 속성의 특정된 값과 연관되는 이벤트가 발생하도록 허용하는 것에 대해 투표하라는 요청을 수신하게 하고; 속성에 대한 샘플링 데몬으로부터의 피어 예측을 요청하게 하고; 속성과 연관되며 현재 시간 즈음에 발생할 것으로 예상되는 복수의 값들 각각에 대한 점수들을 수신하게 하고; 특정된 속성 값의 점수에 기초하여 이벤트를 허용하도록 투표하게 한다.
일부 구현예들에서, 명령어들은, 추가로, 복수의 값들 중 다수의 가장 높은 점수가 매겨진 속성 값들을 결정하게 하고; 특정된 속성 값이 다수의 가장 높은 점수가 매겨진 속성 값들 내에 포함될 때 이벤트를 허용하도록 투표하게 한다. 일부 구현예들에서, 명령어들은, 특정된 속성 값이 복수의 값들 내에 포함되지 않을 때 이벤트를 방지하도록 투표하게 한다. 일부 구현예들에서, 명령어들은, 복수의 값들 중 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하게 하고; 특정된 속성 값이 다수의 가장 낮은 점수가 매겨진 속성 값들 내에 포함될 때 이벤트를 방지하도록 투표하게 한다. 일부 구현예들에서, 명령어들은, 모바일 디바이스의 현재 동작 온도에 기초하여 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하게 한다. 일부 구현예들에서, 명령어들은, 현재 동작 온도가 동작 온도들의 범위 내에서 어디에 있는지에 기초하여 다수의 가장 낮은 점수가 매겨진 속성 값들을 결정하게 한다.
섹션 2: 검색 기법
이 섹션 "검색 기법"에서의 내용은, 일부 실시예들에 따른, 연합 검색(federated search)들을 수행하는 것, 멀티-도메인 질의 완성, 및 인용구 검색 인덱스 내의 사용자 피드백의 사용을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 복수의 별개의 검색 도메인들(예컨대, 지도, 사람, 및 장소 검색)에 걸쳐 질의로부터 복수의 순위가 매겨진 질의 결과들을 생성하는 것을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 아래에서 논의되는 바와 같이, 도 9b 및 도 9c의 예측 부분(930)을 채우는 것 및 방법(800)에 관련된 것들을 보완한다. 다른 예로서, 이 섹션의 일부분들은 검색하는 것 및 검색 완성들을 결정하는 것을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 임의의 사용자 입력을 수신하지 않고서 관련 콘텐츠를 자동으로 표면화하는 것에 관련된 것들(예컨대, 방법(800)), 및 (예컨대, 도 3a 및 도 3b를 참조하여 아래에서 논의되는 바와 같이) 이전의 검색 이력의 사용 및 사용자에 대한 이전의 검색 이력에 기초하는 예상된 콘텐츠의 생성에 관련된 것들을 보완한다. 하나의 추가 예로서, 이 섹션의 일부분들은 검색 결과들의 제시를 개선하기 위해 검색 결과들과의 사용자의 상호작용들을 모니터링하는 것을 설명하는데, 이는 본 명세서의 개시내용들, 예컨대, (예컨대, 도 3a 및 도 3b를 참조하여 아래에서 논의되는 바와 같이) 예상된 콘텐츠의 생성 시에 이전의 검색 이력의 사용에 관련된 것들을 보완한다.
검색 기법에 대한 간략한 개요
멀티-도메인 질의 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 예시적인 실시예에서, 디바이스는 사용자의 클라이언트로부터 질의 프리픽스를 수신한다. 디바이스는 추가로 복수의 별개의 검색 도메인들에 걸쳐 복수의 검색 완성들을 결정한다. 게다가, 디바이스는 대응하는 검색 도메인에 의해 결정되는 복수의 검색 완성들 각각에 대해 계산된 점수에 기초하여 복수의 검색 완성들의 순위를 매기는데, 여기서 복수의 검색 완성들 중 적어도 하나는 사용자로부터의 표시 없이 그리고 질의 프리픽스를 수신하는 것에 응답하여 복수의 검색 결과들을 생성하는 데 사용된다.
다른 실시예에서, 디바이스는 사용자의 검색 세션으로부터의 피드백을 사용하여 결과 캐시를 생성한다. 이 실시예에서, 디바이스는 클라이언트로부터 피드백 패키지를 수신하는데, 여기서 피드백 패키지는 사용자에 의해 입력된 질의 프리픽스에 응답하여 사용자에게 제시되는 검색 세션에서의 복수의 질의 결과들과의 사용자 상호작용을 특성화한다. 디바이스는 추가로, 복수의 결과들에 도달하기 위해 검색 피드백 인덱스를 사용하여 복수의 질의들을 구동함으로써 복수의 질의들에 대한 복수의 결과들을 생성한다. 또한, 디바이스는 복수의 결과들로부터 결과 캐시를 생성하는데, 여기서 결과 캐시는 복수의 결과들을 복수의 질의들에 맵핑시키고, 결과 캐시는 질의 결과들을 클라이언트에게 제공하는 데 사용된다.
추가 실시예에서, 디바이스는 복수의 별개의 검색 도메인들에 걸쳐 질의로부터 복수의 순위가 매겨진 질의 결과들을 생성한다. 이 실시예에서, 디바이스는 질의를 수신하고, 질의를 사용하여 복수의 별개의 검색 도메인들에 걸쳐 복수의 결과들을 결정한다. 디바이스는 추가로 질의를 특성화한다. 또한, 디바이스는 대응하는 검색 도메인에 의해 결정되는 복수의 결과들 각각에 대해 계산된 점수 및 질의 특성화에 기초하여 복수의 결과들의 순위를 매기는데, 여기서 질의 특성화는 질의 유형을 나타낸다.
다른 방법들 및 장치들이 또한 기술된다.
검색 기법에 대한 상세한 설명
멀티-도메인 질의 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 하기의 설명에서, 많은 구체적인 상세사항이 본 발명의 실시예의 완벽한 설명을 제공하기 위해 기재된다. 그러나, 본 발명의 실시예가 이들 구체적인 상세사항 없이도 실시될 수 있음이 당업자에게 자명할 것이다. 다른 경우에, 주지된 컴포넌트들, 구조, 및 기법은 본 설명의 이해를 어렵게 하지 않도록 상세히 나타내지 않았다.
본 명세서에서의 "하나의 실시예" 또는 "일 실시예"에 대한 언급은 그 실시예와 관련하여 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서 내의 여러 곳에 나오는 문구 "일 실시예에서"는 반드시 모두 동일한 실시예를 언급하는 것은 아니다.
다음의 기술 및 청구범위에서, 용어들 "결합된" 및 "연결된"이 그들의 파생어와 함께 사용될 수 있다. 이들 용어들은 서로에 대한 동의어인 것으로 의도되지 않음이 이해되어야 한다. "결합된"은 서로 직접적인 물리적 또는 전기적 접촉 상태, 서로 협력 또는 상호작용할 수 있거나 그렇지 않을 수 있는 2개 이상의 요소를 나타내는 데 사용된다. "연결된"은 서로 결합된 2개 이상의 요소들 사이의 통신의 설정을 나타내는 데 사용된다.
뒤따르는 도면에 묘사된 프로세스들은 하드웨어(예컨대, 회로부, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 기계 상에서 구동되는 것과 같은) 소프트웨어, 또는 양쪽 모두의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 프로세스들이 몇 개의 순차적 동작들의 관점에서 후술되지만, 기술된 동작들 중 일부는 상이한 순서로 수행될 수 있음이 이해되어야 한다.
또한, 일부 동작들은 순차적인 대신에 동시에 수행될 수 있다.
"서버", "클라이언트" 및 "디바이스"라는 용어들은 구체적으로 서버, 클라이언트 및/또는 디바이스의 특정 폼 팩터라기 보다는, 일반적으로 데이터 프로세싱 시스템을 지칭하도록 의도된다.
멀티-도메인 질의 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 일 실시예에서, 디바이스는 사용자에 의해 입력되는 클라이언트로부터의 증분적(incremental) 질의 프리픽스들을 수신하고, 증분적 질의 프리픽스들을 사용하여 각각의 질의 프리픽스에 대한 질의 완성들의 세트를 생성한다. 예를 들어 그리고 일 실시예에서, 사용자가 문자열 "apple"을 입력하는 경우, 디바이스는 "a", "ap", "app", "appl", 및 "apple"에 대한 증분적 질의 프리픽스들을 수신한다. 질의 프리픽스들 각각에 대해, 디바이스는 질의 완성들의 세트를 생성한다. 예를 들어 그리고 일 실시예에서, "a"에 대한 완성들은 "apple.com", "America", 또는 "Annapolis"일 수 있다. 유사하게, 디바이스는 다른 증분적 질의 프리픽스들에 대한 질의 완성들의 상이한 세트를 생성할 수 있다. 일 실시예에서, 디바이스는 다수의 검색 도메인들로부터의 질의 완성들의 세트를 결정한다. 예를 들어 그리고 일 실시예에서, 디바이스는 지도, 미디어, 위키(wiki), 사이트, 및 기타 검색 도메인들과 같은 검색 도메인들에 걸쳐 질의 완성들에 대해 검색한다. 일 실시예에서, 이러한 검색 도메인들 각각은, 입력 질의 프리픽스에 대한 가능한 완성들을 결정하는 데 사용되는 하나 이상의 질의 완성 트리들을 포함한다. 일 실시예에서, 검색 도메인들 각각은, 디바이스가 사용하는 점수들의 세트를 반환하여, 이러한 질의 완성들의 순위를 매긴다. 예를 들어 그리고 일 실시예에서, 검색 도메인들 각각은 디바이스에 의해 사용될 수 있는 원시 점수, 로컬 점수, 및 글로벌 점수의 세트를 반환하여, 상이한 도메인들에 걸쳐 상이한 완성들의 순위를 매긴다.
전술된 바와 같이, 전통적인 시스템들은 가능한 질의 완성들을 사용자에게 반환할 것이고, 사용자는 질의 검색에 사용하기 위한 가능한 질의 완성들 중 하나를 선택할 것이다. 반면에 그리고 일 실시예에서, 디바이스는 질의 완성들의 세트를 사용자에게 반환하지 않는다. 대신에, 디바이스는 질의 완성들의 세트의 순위를 매기고, 질의 완성들의 서브세트를 사용하여, 질의 완성들의 세트를 사용자에게 제시하거나 질의 완성들의 이러한 세트 중 어느 것이 관련 결과들을 결정하는 데 사용되는지의 표시를 하지 않고서, 질의 완성들의 이러한 서브세트에 대한 관련 결과들을 결정한다. 일 실시예에서, 디바이스는 다수의 검색 도메인들(예컨대, 지도, 미디어, 위키, 사이트 등, 또는 기타 검색 도메인)에 걸쳐 관련 결과들에 대한 검색을 수행한다. 디바이스는 다수의 검색 도메인들로부터 결과들의 세트를 수신하고, 각각의 검색 도메인으로부터 생성된 점수들 및 크로스-도메인(cross-domain) 정보에 기초하여 이러한 결과들의 순위를 매긴다. 일 실시예에서, 디바이스는 추가로, 이러한 결과들을 결정하는 데 사용되었던 질의 완성의 유형에 기초하여 관련 결과들의 순위를 매긴다. 예를 들어 그리고 일 실시예에서, 질의 완성이 장소에 대한 검색인 것으로 특성화되는 경우, 지도 검색 도메인으로부터의 결과들이 이 장소에 관한 위키 엔트리(wiki entry)일 뿐만 아니라 더 높게 순위가 매겨질 수 있다. 추가 예로서, 질의 완성이 아티스트(artist)에 관한 것으로 나타나는 경우, 미디어 검색 도메인 결과들은 더 높게 순위가 매겨질 수 있다. 디바이스는 질의 완성들에 대해 발견된 관련 결과들을 클라이언트에게 반환한다.
일 실시예에서, 결과들을 본 사용자는 그 결과들에 관여하거나(engage) 그들을 포기할 수 있다. 일 실시예에서, 사용자가 사용자의 검색 세션 동안 사용자에게 제시되는 렌더링된 결과들 중 하나의 결과와 상호작용하는 경우 관여 이벤트가 발생한다. 예를 들어 그리고 일 실시예에서, 사용자는 렌더링된 결과들 중 하나의 결과에 대해 제시되는 링크를 클릭할 수 있다. 다른 예에서, 사용자는 링크를 클릭할 수 있고, 그 링크에 의해 참조되는 객체(예컨대, 웹사이트)와 상호작용하는 미리결정된 시간보다 많은 시간을 소비할 수 있다(예컨대, 60초 초과 동안 참조된 객체와 상호작용한다). 이 예에서, 사용자는 현재 미국 대통령에 대한 질의 검색을 향한 결과들을 수신할 수 있고, 최신 대통령 연설을 설명하는 웹 페이지를 참조하는 링크를 클릭할 수 있다. 사용자가 미리결정된 시간보다 많은 시간(예컨대, 60 내지 90초) 동안 그 웹사이트와 상호작용하는 경우, 디바이스는 사용자가 그 링크에 의해 표현되는 결과에 관여하였다고 결정할 것이다. 다른 실시예에서, 사용자는, 사용자에게 렌더링된 결과들을 무시하거나 포기할 수 있다. 예를 들어 그리고 일 실시예에서, 사용자가 렌더링된 결과들 중 하나의 결과에 대해 제시되는 링크를 클릭하지만 미리결정된 시간 내에(예컨대, 60 내지 90초 미만에) 그 웹사이트에서 떠나서 내비게이팅하는 경우, 디바이스는 이것이 그 결과에 대한 포기 이벤트라고 결정한다.
일 실시예에서, 이러한 피드백은 검색 인덱스 내에 포함될 수 있는데, 여기서 피드백은 관련 결과들의 순위 및 필터링에 영향을 준다. 이 실시예에서, 관련 결과들을 제시 및 렌더링하는 클라이언트는 추가적으로 사용자의 검색 세션 동안 관여 이벤트 및 포기 이벤트를 수집한다. 클라이언트는 이벤트들을 피드백 패키지로 수집하고, 이러한 패키지를 프로세싱하기 위해 서버로 전송한다. 일 실시예에서, 서버는
피드백 패키지를 수신하고, 피드백 패키지를 피드백 인덱스 엔트리로 변환한다. 일 실시예에서, 피드백 인덱스 엔트리는 <질의, 결과, 렌더 카운트들, 관여 카운트들, 포기 카운트들>의 포맷을 갖는데, 여기서 질의는 입력 질의 및 컨텍스트 정보, 예컨대 디바이스 유형, 애플리케이션, 로케일(locale), 및 지리적 위치이고, 결과는 렌더 결과이고, 렌더 카운트들은 결과가 그 질의에 대해 렌더링되는 횟수이고, 관여 카운트들은 결과가 그 질의에 대해 관여되는 횟수이고, 포기 카운트들은 결과가 포기되는 횟수이다. 이러한 엔트리는 피드백 검색 인덱스 내에 포함된다. 일 실시예에서, 피드백 검색 인덱스는 사용자 피드백을 점수 결과들 내에 포함시키는 검색 인덱스이다. 예를 들어 그리고 일 실시예에서, 질의 결과 쌍에 대한 각각의 관여 이벤트들은 대응하는 질의에 대해 그 결과를 촉진시킨다. 이 예에서, 사용자가 특정 질의에 대해 결과에 관여하는 경우, 향후 사용자가 또한 동일한 질의에 대해 이 결과에 관여할 수 있다. 따라서, 일 실시예에서, 이 질의에 대한 결과는 동일한 질의를 갖는 향후 사용자에 대해 반환되고 더 높게 순위가 매겨질 것이다. 반대로, 사용자가 특정 질의에 대한 결과를 포기하는 경우, 향후 사용자가 또한 동일한 질의에 대해 이 동일한 결과를 포기할 수 있다. 따라서, 일 실시예에서, 이 질의에 대한 결과는 동일한 질의를 갖는 향후 사용자에 대해 반환되고 더 낮게 순위가 매겨질 수 있다.
일 실시예에서, 서버는 추가로 피드백 검색 인덱스를 사용하여, 질의들을 결과들에 맵핑시키는 결과 캐시를 생성한다. 일 실시예에서, 결과 캐시는 질의들을 결과들에 맵핑시키는 캐시인데, 이는 사용자 질의에 대한 결과들을 신속하게 반환하는 데 사용될 수 있다. 일 실시예에서, 결과 캐시는, 질의 검색을 수행하기 전에 하나 이상의 결과들을 제공하는 데 사용될 수 있는 사용자의 디바이스에 매우 근접하게 있는 에지 서버(edge server)에 저장된다. 일 실시예에서, 서버는 결과 세트로부터 질의들의 세트를 구동하여 업데이트된 결과 세트를 생성하고 수집된 피드백을 업데이트 결과 세트의 결과들 내에 포함시킴으로써 결과 캐시를 생성한다. 이러한 업데이트된 결과 세트는 에지 서버로 전송된다.
도 32a은 입력 질의 프리픽스들에 기초하여 검색 결과들을 반환하는 시스템(32_100)의 일 실시예의 블록도이다. 도 32a에서, 시스템(32_100)은, 디바이스(32_102), 스마트폰(32_114), 및 태블릿(32_116)에 결합되는 검색 네트워크(32_108)를 포함한다. 일 실시예에서, 검색 네트워크는 하나 이상의 서버들의 네트워크인데, 이 네트워크는 상이한 디바이스들에 대한 질의 프리픽스들을 수신하고 질의 결과들을 그러한 디바이스들로 다시 반환한다. 예를 들어 그리고 일 실시예에서, 검색 네트워크는 디바이스(32_102), 스마트폰(32_114), 및/또는 태블릿(32_116)으로부터 질의 프리픽스들(32_110A 내지 32_110D)을 수신하고, 질의 결과들(32_112A 내지 32_112D)을 각각의 디바이스(예컨대, 디바이스(32_102), 스마트폰(32_114), 및/또는 태블릿(32_116))로 다시 반환한다. 일 실시예에서, 디바이스(32_102)는 개인용 컴퓨터, 랩톱, 서버, 모바일 디바이스(예컨대, 스마트폰, 랩톱, 개인 휴대 정보 단말기, 음악 재생 디바이스, 게임 디바이스 등), 및/또는 질의를 요청 및/또는 디스플레이할 수 있는 임의의 디바이스일 수 있다. 일 실시예에서, 디바이스는 물리적 디바이스 또는 가상 디바이스일 수 있다. 일 실시예에서, 스마트폰(32_114)은 디바이스(32_102)의 많은 기능을 수행할 수 있는 셀룰러 전화기일 수 있다. 일 실시예에서, 태블릿(32_116)은 디스플레이 상에서 입력을 수용하는 모바일 디바이스일 수 있다.
일 실시예에서, 디바이스들 각각은 사용자에 의해 질의 프리픽스를 입력하는 데 사용되는 브라우저를 포함한다. 예를 들어, 일 실시예에서, 디바이스(32_102)는 웹 브라우저(32_104) 및 파일 브라우저(32_106)를 포함한다. 이러한 브라우저들 각각은 질의 프리픽스를 입력하기 위해 사용자에 의해 사용되는 검색 입력 필드를 포함한다. 일 실시예에서, 웹 브라우저(32_104)는 사용자가 다양한 유형의 웹 문서들에 대해 웹을 검색 및 인출할 수 있게 하는 프로그램이다. 일 실시예에서, 웹 브라우저(32_104)는 검색 입력 필드(32_128)를 포함한다. 검색 입력 필드(32_128)는 질의 프리픽스 문자열을 입력하기 위해 사용자에 의해 사용된다. 일 실시예에서, 질의 프리픽스 문자열은, 검색 네트워크(32_108)로 전송되는 질의 프리픽스에서 사용될 텍스트 또는 다른 심볼들의 문자열이다. 질의 프리픽스 문자열은 사용자에 의해 입력되었던 불완전한 또는 완전한 검색 문자열일 수 있다. 일 실시예에서, 사용자가 검색 입력 필드(32_120A) 내에 질의 입력 문자열을 타이핑함에 따라, 웹 브라우저(32_104)는 질의 프리픽스 문자열을 캡처하고, 질의 프리픽스(32_110A) 내의 이러한 질의 프리픽스 문자열을 검색 네트워크로 전송한다. 검색 입력 필드(32_120A) 내에 입력된 각각의 심볼 또는 텍스트 문자열에 대해, 웹 브라우저(32_104)는 질의 프리픽스(32_110A)를 생성하고 그것을 검색 네트워크(32_108)로 전송한다. 질의 프리픽스(32_110A)를 수신하는 것에 응답하여, 검색 네트워크는 다수의 검색 도메인들에 걸쳐 하나 이상의 질의 완성들을 생성하고, 이러한 질의 완성들 중 하나 이상을 선택하여 관련 결과들(32_112)의 세트를 생성하는데, 이는 웹 브라우저(32_104)로 반환된다. 예를 들어 그리고 일 실시예에서, 사용자가 텍스트 "appl"을 입력함에 따라, 웹 브라우저(32_104)는 질의 프리픽스 문자열들 "a", "ap", "app", 및 "appl"을 사용하여 질의 프리픽스들(32_110A)을 생성한다. 이러한 질의 프리픽스들(32_110A) 각각에 대해, 검색 네트워크(32_108)는 다수의 검색 도메인들로부터 질의 완성들의 세트를 생성하고, 이러한 질의 완성들을 사용하여 관련 결과들을 결정하고, 상이한 질의 프리픽스들(32_110A)에 대한 결과들의 상이한 세트를 반환한다. 사용자가 후속 문자들을 입력함에 따라 질의 프리픽스들을 캡처하는 이러한 절차는 또한 파일 브라우저(32_106)에서 행해질 수 있다. 일 실시예에서, 파일 브라우저(32_106)는 검색 입력 필드(32_120B)를 포함하는데, 사용자가 질의 프리픽스 문자열을 입력하기 위해 이를 사용할 수 있다. 이 실시예에서, 사용자가 질의 프리픽스 문자열을 입력함에 따라, 파일 브라우저(32_106)는 상이한 질의 프리픽스들(32_110B)을 생성하고 이들을 검색 네트워크(32_108)로 전송한다. 검색 네트워크(32_108)는 상이한 질의 프리픽스들(32_110B)을 수신하고, 하나 이상의 질의 완성들을 결정하고 전술된 바와 같이 관련 결과들을 반환한다. 또한, 질의 프리픽스들은 디바이스(32_106) 상에 국부적으로 저장된 데이터의 메타데이터 데이터베이스를 사용하여 질의를 수행하는 데 사용될 수 있다.
일 실시예에서, 문자열이 입력됨에 따라 질의 입력 문자열을 캡처하고, 하나 이상의 질의 완성들을 결정하고, 이러한 질의 완성들을 사용하여 관련 결과들을 결정하는 이러한 동일한 절차는 또한 스마트폰(32_114) 및 태블릿(32_116) 상에서 수행될 수 있다. 이 실시예에서, 스마트폰(32_114)은 브라우저(32_116)를 포함한다. 브라우저(32_116)는 검색 입력 필드(32_120C)를 포함한다. 전술된 바와 유사하게, 검색 입력 필드(32_120C)는 질의 프리픽스 문자열을 입력하기 위해 사용자에 의해 사용된다. 이러한 질의 프리픽스 문자열은 브라우저(32_116)에 의해 증분적으로 캡처되는데, 이는 결국, 상이한 질의 프리픽스들(32_110C)의 세트를 생성하며, 이는 검색 네트워크(32_108)로 전송된다. 이러한 상이한 질의 프리픽스들(32_110C) 각각을 수신하는 것에 응답하여, 검색 네트워크(32_108)는 하나 이상의 질의 완성들을 결정하고, 이러한 질의 완성들을 사용하여 관련 결과들(32_112C)을 결정하는데, 이 관련 결과들은 브라우저(32_116)로 다시 반환된다. 또한, 태블릿(32_116)은 브라우저(32_118)를 포함한다. 브라우저(32_118)는 검색 입력 필드(32_120D)를 포함한다. 전술된 바와 유사하게, 검색 입력 필드(32_120D)는 질의 프리픽스 문자열을 입력하기 위해 사용자에 의해 사용된다. 이러한 질의 프리픽스 문자열은 브라우저(32_118)에 의해 증분적으로 캡처되는데, 이는 결국, 상이한 질의 프리픽스들(32_110D)의 세트를 생성하며, 이는 검색 네트워크(32_108)로 전송된다. 이러한 상이한 질의 프리픽스들(32_110D) 각각을 수신하는 것에 응답하여, 검색 네트워크(32_108)는 하나 이상의 질의 완성들을 결정하고, 이러한 질의 완성들을 사용하여 관련 결과들(32_112D)을 결정하는데, 이 관련 결과들은 브라우저(32_118)로 다시 반환된다. 일 실시예에서, 검색 네트워크(32_108)는 검색 모듈(32_118)을 포함하는데, 검색 모듈은 질의 완성을 프로세싱하고 관련 결과들을 반환한다. 질의 완성들을 프로세싱하고 관련 결과들을 반환하는 것은 하기의 도 32b 내지 도 32g에서 추가로 기술된다.
전술된 바와 같이, 디바이스 상의 브라우저는 질의 프리픽스들(32_110A 내지 32_110D)을 검색 네트워크(32_108)로 전송한다. 일 실시예에서, 질의 프리픽스(32_110A 내지 32_110D)는 질의 프리픽스 문자열, 위치(예컨대, 위도/경도 조합), 디바이스 유형 식별자(예컨대, 컴퓨터, 스마트폰, 태블릿 등), 및 애플리케이션 유형 식별자(예컨대, 웹 브라우저(및 어떤 유형의 웹 브라우저인지), 파일 브라우저), 및 로케일을 포함한다. 이 실시예에서, 위치, 디바이스 유형 식별자, 애플리케이션 유형 식별자, 및 로케일을 제공함으로써, 질의 프리픽스 문자열이 사용자에 의해 입력되었던 컨텍스트가 검색 네트워크(32_108)로 제공된다. 일 실시예에서, 검색 네트워크(32_108)는 이러한 컨텍스트 및 질의 프리픽스 문자열을 사용하여, 질의 완성들 및 관련 결과들을 결정한다. 예를 들어 그리고 일 실시예에서, 검색 네트워크(32_108)는 위치 정보를 사용하여 질의 완성들 및 결과들을 결정할 수 있는데, 결과들은 질의 프리픽스를 제공한 디바이스의 위치와 관련된다. 일례로서, 디바이스 위치는 현재 디바이스 위치 근처의 장소들에 대한 검색 결과들을 찾는 데 사용될 수 있다. 다른 예로서 그리고 다른 실시예에서, 디바이스 유형 식별자는 검색 네트워크(32_108)에 의해 사용되어, 그 디바이스 유형에 관련되는 완성들 및 결과들을 결정할 수 있다. 이 예에서, 디바이스 유형 식별자가, 질의 프리픽스가 스마트폰에서 비롯되었음을 나타낸 경우, 검색 네트워크(32_108)는 개인용 컴퓨터용 애플리케이션 저장소 대신에 스마트폰용 애플리케이션 저장소에 대한 결과들에 더 큰 가중치를 줄 수 있다. 추가 예에서 그리고 추가 실시예에서, 애플리케이션 유형 식별자 및 로케일은 또한 완성들 및 결과들을 가중시키는 데 사용될 수 있다.
일 실시예에서, 검색 네트워크(32_108)는 멀티-도메인 질의 완성을 사용하여 질의 프리픽스들을 완성시킨다. 이 실시예에서, 검색 네트워크(32_108)는 각각의 수신된 질의 프리픽스를, 검색 네트워크(32_108)에 의해 사용된 검색 도메인들 각각으로 전송한다. 예를 들어 그리고 일 실시예에서, 검색 네트워크(32_108)는 수신된 질의 프리픽스를 지도 검색 도메인, 미디어 검색 도메인, 위키 검색 도메인, 사이트 검색 도메인, 및 기타 검색 도메인들로 전송한다. 이러한 검색 도메인들 각각은 그 검색 도메인 내에 포함된 데이터에 기초하여 그 질의 프리픽스에 대한 하나 이상의 질의 완성들을 결정할 것이다. 또한, 각각의 검색 도메인은 하나 이상의 질의 완성들 각각에 대해 점수들의 세트를 반환할 것이다. 예를 들어 그리고 일 실시예에서, 검색 도메인은 각각의 질의 완성에 대해 원시 점수, 로컬 점수, 및/또는 글로벌 점수를 반환할 것이다. 멀티-도메인 질의 완성을 수행하는 것은 도 3 내지 도 6에서 추가로 기술된다.
검색 네트워크(32_108)에 의해 결정되는 질의 완성들을 질의 프리픽스를 제공하였던 디바이스로 반환하는 대신에, 검색 네트워크(32_108)는 질의 완성들 중 하나 이상의 질의 완성들을 사용하여 다수의 검색 도메인들에 걸쳐 관련 질의 결과들의 세트를 결정한다. 일 실시예에서, 질의 완성들을 사용하여 관련 질의 결과들의 세트를 결정하는 것은, 관련 결과들을 결정하기 위해 이러한 질의 완성들 중 어느 것을 사용할지에 대한 사용자로부터의 표시 없이 수행된다. 이 실시예에서, 사용자가 검색 입력 필드 내에 문자열을 입력함에 따라, 검색 네트워크(32_108)는 문자열을 프로세싱하고 관련 결과들을 사용자에게 반환한다. 일 실시예에서, 검색 네트워크(32_108)는 결정된 질의 완성들 중 하나 이상의 질의 완성들을 사용하여 그러한 질의 완성들에 대한 질의 결과들을 찾고 그의 순위를 매긴다. 일 실시예에서, 검색 네트워크(32_108)는 검색 네트워크(32_108)가 이용가능한 다수의 검색 도메인들에 걸쳐 검색한다. 이 실시예에서, 검색 네트워크(32_108)는 각각의 검색 도메인으로부터 질의 완성에 대한 결과들의 세트를 수신한다. 이러한 결과들 각각에 대해, 검색 네트워크(32_108)는 추가적으로, 그 결과를 특성화하는 점수들의 세트를 수신한다. 일 실시예에서, 점수들은 결과를 제공하였던 검색 도메인에 의해 결정되는 점수들, 다른 메트릭, 및/또는 도 32g에서 후술되는 바와 같이 결과를 제공하는 데 사용되었던 질의 완성을 특성화하는 신호를 포함할 수 있다. 일 실시예에서, 신호는 지식 베이스를 사용하는 질의 완성의 어휘 특성화에 기초한다. 일 실시예에서, 어휘 특성화는 멀티-도메인 질의 검색을 위해 어떤 유형의 질의 완성이 사용되고 있는지를 결정한다. 멀티-도메인 질의 검색을 수행하여 관련 결과들의 세트를 결정하는 것은, 하기의 도 32g 및 도 32m 내지 도 32o에서 추가로 기술된다.
도 32b는 입력 질의 프리픽스에 기초하여 질의 완성들 및 관련 결과들을 결정하기 위한 프로세스(32_200)의 일 실시예의 흐름도이다. 도 32b에서, 프로세스(32_200)는 질의 프리픽스를 수신하는 것으로 시작한다. 일 실시예에서, 질의 프리픽스는 상기의 도 32a에서 기술된 바와 같이 질의 프리픽스 문자열, 위치, 디바이스 유형 식별자, 애플리케이션 유형 식별자, 및 로케일을 포함한다. 이 실시예에서, 위치, 디바이스 유형 식별자, 애플리케이션 유형 식별자, 및/또는 로케일은, 질의 프리픽스 문자열이 사용자에 의해 입력되었다는 질의 프리픽스에 대한 컨텍스트를 제공한다. 블록(32_204)에서, 프로세스(32_200)는 다수의 검색 도메인들에 걸쳐 질의 완성들을 결정하고, 질의 완성들의 순위를 매기고 그를 선택한다. 일 실시예에서, 프로세스(32_200)는 질의 프리픽스를 사용하여 상이한 그러한 도메인들 각각으로부터 질의 완성들의 세트를 결정한다. 예를 들어 그리고 일 실시예에서, 질의 프리픽스 문자열이 'ap'인 경우, 프로세스(32_200)는 이러한 질의 프리픽스 문자열을 사용하여 상이한 검색 도메인들(예컨대, 지도, 미디어, 위키, 사이트, 및/또는 기타 검색 도메인들)로부터 질의 완성들의 세트를 결정할 것이다. 이 예에서, 지도 검색 도메인은 도시 Apache Junction에 대한 질의 완성을 반환할 수 있고, 미디어 검색 도메인은 음악 작품 Appalachian Spring에 대한 질의 완성을 반환할 수 있고, 위키 검색 도메인은 회사 Apple에 대한 질의 완성을 반환할 수 있고, 사이트 검색 도메인은 웹사이트 Apple.com에 대한 질의 완성을 반환할 수 있다. 일 실시예에서, 프로세스(32_200)는 질의 프리픽스 문자열이 최소 개수의 문자들(예컨대, 4개의 문자들)을 갖는 경우 질의 완성들의 세트를 생성한다.
또한, 프로세스(32_200)는 상이한 그러한 도메인들로부터 수신된 가능한 질의 완성들의 순위를 매기고 그를 선택한다. 일 실시예에서, 프로세스(32_200)는, 대응하는 검색 도메인에 의해 결정되는 점수들 및 질의 프리픽스의 컨텍스트에 기초하는 가중치들에 기초하여 가능한 질의 완성들의 순위를 매긴다. 이 실시예에서, 프로세스(32_200)는 이러한 순위들에 기초하여 질의 완성들의 세트를 선택한다. 일 실시예에서, 많은 완성들에 대해 사용된 질의 프리픽스 문자열을 입력한 사용자에게 질의 완성들의 세트를 다시 반환하는 대신에, 질의 완성들의 이러한 세트는 관련 결과들의 세트를 결정하기 위해 사용되고, 이들은 이어서 사용자에게 반환된다. 질의 완성들의 세트를 결정하는 것은, 하기의 도 32c 내지 도 32f에서 추가로 기술된다.
프로세스(32_200)는 블록(32_206)에서 관련 결과들의 세트를 결정한다. 일 실시예에서, 프로세스(32_200)는 블록(32_204)에서 결정된 질의 완성들에 기초하여 관련 결과들을 결정한다. 이 실시예에서, 프로세스(32_200)는 프로세스(32_200)가 이용가능한 다수의 검색 도메인들에 걸쳐 검색한다. 이 실시예에서, 프로세스(32_200)는 각각의 검색 도메인으로부터 질의 완성(들)에 대한 결과들의 세트를 수신한다. 이러한 결과들 각각에 대해, 프로세스(32_200)는 추가적으로, 그 결과를 특성화하는 점수들의 세트를 수신한다. 일 실시예에서, 점수들은 결과를 제공하였던 검색 도메인에 의해 결정되는 점수들, 다른 메트릭, 및/또는 도 32g에서 후술되는 바와 같이 결과를 제공하는 데 사용되었던 질의 완성을 특성화하는 신호를 포함할 수 있다. 일 실시예에서, 신호는 지식 베이스를 사용하는 질의 완성의 어휘 특성화에 기초한다. 일 실시예에서, 어휘 특성화는 멀티-도메인 질의 검색을 위해 어떤 유형의 질의 완성이 사용되고 있는지를 결정한다. 관련 결과들의 세트를 결정하는 것은, 하기의 도 32g 및 도 32m 내지 도 32o에서 추가로 기술된다. 블록(32_208)에서, 프로세스(32_200)는 관련 결과들의 세트를 사용자에게 반환한다. 다른 실시예에서, 피드백 인덱스는 결과들을 가중시키기 위한 신호 도메인으로서 사용될 수 있다. 이 실시예는 하기의 도 32n에서 추가로 기술된다.
전술된 바와 같이, 프로세스(32_200)는 다수의 검색 도메인들에 걸쳐 질의 완성들 및 관련 결과들을 결정한다. 일 실시예에서, 질의 완성들 및 관련 결과들은 집계기를 사용하여 집계된다. 도 32c은 집계기(32_302) 및 다수의 검색 도메인들(32_304A 내지 32_304F)을 포함하는 시스템(32_300)의 일 실시예의 블록도이다. 일 실시예에서, 집계기(32_302)는 입력 질의 프리픽스에 기초하는 질의 완성들에 대한 요청들을 수신한다. 입력 질의 프리픽스를 수신하는 것에 응답하여, 집계기(32_302)는 입력 질의 프리픽스를 검색 도메인들(32_304A 내지 32_304F) 각각으로 전송한다. 검색 도메인들(32_304A 내지 32_304F) 각각은 입력 질의 프리픽스를 사용하여 그 도메인에서의 가능한 질의 완성들을 결정한다. 예를 들어 그리고 일 실시예에서, 지도 검색 도메인(32_304A)은 입력 질의 프리픽스를 수신하고, 이 도메인에서 가능한 질의 완성들에 대해 검색한다. 일 실시예에서, 집계기(32_302)는 검색 도메인들 각각으로부터 질의 완성들을 수신하고, 대응하는 검색 도메인에 의해 결정되는 완성들 각각에 대한 점수들 및 질의 프리픽스 컨텍스트에 기초하는 가중치들에 기초하여 수신된 질의 완성들의 순위를 매긴다.
일 실시예에서, 지도 검색 도메인(32_304A)은 지리적 지도에 관련된 정보를 포함하는 검색 도메인이다. 이 실시예에서, 지도 정보는 장소, 주소, 장소, 사업체, 관심 장소에 관한 정보, 또는 지도에 관련된 다른 유형의 정보를 포함할 수 있다. 다른 실시예에서, 지도 정보는 또한 관심 장소에 관련된 정보, 예컨대 영업 시간, 검토 및 평가, 연락처 정보, 길 안내, 및/또는 장소에 관련된 사진들을 포함할 수 있다. 일 실시예에서, 미디어 검색 도메인(32_304B)은 미디어에 관련된 검색 도메인이다. 일 실시예에서, 미디어 검색 도메인(32_304B)은 음악, 도서, 비디오, 강좌, 구어(spoken word), 팟캐스트, 무선장치, 및/또는 다른 유형의 미디어에 관련된 정보를 포함한다. 추가 실시예에서, 미디어 검색 도메인(32_304B)은 도 32a에서 전술된 바와 같이 디바이스(32_102), 스마트폰(32_114) 및 태블릿(32_116)과 같은 디바이스 상에서 구동될 수 있는 애플리케이션들에 관련된 정보를 포함할 수 있다. 일 실시예에서, 미디어 검색 도메인은 구입을 위해 이용가능한 상이한 유형의 미디어(예컨대, 음악, 도서, 비디오, 강좌, 구어, 팟캐스트, 무선장치, 애플리케이션, 및/또는 다른 유형의 미디어)를 포함하는 미디어 저장소이다. 일 실시예에서, 위키 검색 도메인(32_304C)은 온라인 백과사전 검색 도메인이다. 예를 들어 그리고 일 실시예에서, 위키 검색 도메인(32_304C)은 위키피디아(WIKIPEDIA)일 수 있다. 일 실시예에서, 사이트 검색 도메인(32_304D)은 웹사이트들의 검색 도메인이다. 예를 들어 그리고 일 실시예에서, 사이트 검색 도메인(32_304D)은 "apple.com", "whitehouse.gov", "yahoo.com" 등과 같은 사업체, 정부, 공중, 및/또는 사설 웹사이트들을 포함한다. 일 실시예에서, 기타 검색 도메인(32_304E)은 집계기(32_302)에 의해 액세스될 수 있는 기타 검색 도메인들(예컨대, 뉴스 검색 도메인)의 세트이다. 일 실시예에서, 피드백 완성 도메인(32_304F)은 다양한 디바이스들 상에서 구동되는 브라우저들에 의해 수집된 질의 피드백에 기초하는 검색 인덱스이다. 일 실시예에서, 피드백 완성 도메인(32_304F)은 피드백 인덱스를 포함하는데, 피드백 인덱스는 수집된 질의 피드백에 기초하여 질의들을 결과들에 맵핑시킨다. 피드백 인덱스는 하기의 도 32h 내지 도 32l에서 추가로 기술된다.
전술된 바와 같이, 각각의 검색 도메인(32_304A 내지 32_304F)은, 검색 도메인들 각각이 입력 질의 프리픽스에 기초하여 질의 완성들의 세트를 제공할 수 있게 하는 정보를 포함한다. 일 실시예에서, 검색 도메인들 각각은 질의 완성 트리를 포함하는데, 질의 완성 트리는 질의 완성을 결정할 뿐만 아니라 그러한 질의 완성들 각각에 대한 점수들을 결정하기 위해 사용된다. 도 32d는 질의 완성 검색 도메인(32_402)에 대한 일 실시예의 도면이다. 도 32d에서, 질의 완성 검색 도메인(32_402)은 노드들(32_404A 내지 32_404J)을 갖는 질의 완성 트리(32_400)를 포함한다. 일 실시예에서, 노드들(32_404A 내지 32_404J) 각각은 각자의 언어의 문자를 표현한다. 이 실시예에서, 트리 아래로 노드들(32_404A 내지 32_404J)을 따라가면, 상이한 질의 완성들이 표현될 수 있다. 예를 들어 그리고 일 실시예에서, 노드(32_404A)에서 시작하여 노드(32_404C) 아래로 따라가면, 글자 'ap'로 시작하는 완성들이 표현될 수 있다. 각각의 노드는 또한, 이러한 완성이 입력 질의 프리픽스에 의해 매칭되었던 횟수인 빈도를 포함한다. 일 실시예에서, 노드(32_404C)는 N의 빈도를 갖는다. 이 실시예에서, 빈도는 상기의 집계기(32_302)로 반환되는 원시 점수로서 표현된다. 일 실시예에서, 빈도는 로그(log)들(예컨대, 지도 또는 미디어 검색 도메인들), 방문한 페이지들(예컨대, 위키 검색 도메인), 또는 정보의 다른 소스에 기초하여 계산될 수 있다. 노드(32_404C) 아래에는, 다수의 가능한 다른 질의 완성들이 있다. 예를 들어 그리고 일 실시예에서, 노드들(32_404D 내지 32_404F)은 글자들 'apa', 'apt', 및 'app'로 시작하는 질의 완성들을 표현한다. 노드 아래의 가능한 질의 완성들의 총 개수는 그 노드에 의해 표현되는 그 질의 완성에 대한 근사(closeness)의 표시를 제공한다. 노드가 그 아래에 많은 수의 가능한 다른 노드들을 갖는 경우, 그 노드에 의해 표현되는 질의 완성은 양호한 완성일 가능성이 적다. 다른 한편으로는, 노드가 그 노드 아래에 비교적 적은 노드들을 갖는다면, 이 노드는 양호한 완성일 수 있다. 일 실시예에서, 그 노드에 대한 로컬 점수는, 그 노드의 빈도를 그 노드 아래의 서브트리들에 의해 표현되는 완성들의 개수로 나눈 것에 의해 표현된다. 일 실시예에서, 로컬 점수에 대한 방정식은 다음의 방정식(1)에 의해 표현된다:
로컬 점수(노드) = 빈도(노드) / 노드 아래의 완성들의 개수.
일 실시예에서, 각각의 질의 완성 트리는 완성들의 총 개수를 포함한다. 이 값은 완성(또는 노드)에 대한 글로벌 점수를 산출하기 위해 사용된다. 일 실시예에서, 글로벌 점수에 대한 방정식은 다음의 방정식(2)에 의해 표현된다:
글로벌 점수(노드) = 빈도(노드) / 질의 완성 트리에서의 완성들의 개수
일 실시예에서, 각각의 질의 완성에 대한 원시 점수, 로컬 점수, 및 글로벌 점수는 검색 도메인에 의해 집계기로 반환된다.
도 32e는 지도 검색 도메인(32_500)의 일 실시예의 도면이다. 도 32e에서, 지도 검색 도메인(32_500)은 이 도메인의 상이한 줌 레벨(zoom level)들에 대한 질의 완성 트리들(32_504A 내지 32_504D)을 포함한다. 일 실시예에서, 지도 검색 도메인(32_500)은, 시(city) 레벨(32_504A), 카운티(county) 레벨(32_504B), 주(state) 레벨(32_504C), 및 국가 레벨(32_504D)에 대한 질의 완성 트리를 포함하는데, 이들은 지도 집계기(32_502)에 의해 집계된다. 이 실시예에서, 입력 질의 프리픽스에 대한 질의 완성들의 결정이 지도 집계기(32_502)에 의해 수신되는데, 이는 결국, 지도 검색 도메인(32_500)의 상이한 줌 레벨들(32_504A 내지 32_504D)에서 그 입력 질의 프리픽스에 대한 질의 완성들을 결정한다. 지도 집계기(32_502)는 상이한 줌 레벨들(32_504A 내지 32_504D) 각각으로부터 가능한 질의 완성들을 인출하고, 질의 완성들을 집계하고, 이러한 질의 완성들을 집계기(예컨대, 집계기(32_302))로 반환한다. 따라서, 지도 검색 도메인(32_500)은 상이한 줌 레벨들에 걸쳐 질의 완성들을 결정한다. 일 실시예에서, 지도 검색 도메인(32_500)은 주소, 장소, 사업체, 관심 장소에 관한 정보, 및/또는 지도에 관련된 임의의 다른 정보를 포함한다. 일 실시예에서, 지도 검색 도메인(32_500)은 디렉토리 정보, 예컨대 화이트 또는 옐로 페이지 디렉토리를 포함할 수 있다. 일 실시예에서, 미디어 검색 도메인은 점포별로 체계화되는데, 이는 디바이스 식별자와 로케일의 조합에 기초한다. 이 실시예에서, 각각의 점포에 대한 질의 완성 트리가 있다. 도 32f은 다수의 검색 도메인들로부터 질의 완성들을 결정하기 위한 프로세스(32_600)의 일 실시예의 흐름도이다. 일 실시예에서, 집계기(32_302)는 다수의 검색 도메인들로부터 질의 완성들을 결정하기 위해 프로세스(32_600)를 수행한다. 도 32f에서, 프로세스(32_600)는 블록(32_602)에서 질의 프리픽스를 수신하는 것으로 시작한다. 일 실시예에서, 질의 프리픽스는 도 32b에서 전술된 바와 같이 컨텍스트 내에 질의 프리픽스 문자열을 포함한다. 블록(32_602)에서, 프로세스(32_600)는 질의 프리픽스를 상이한 검색 도메인들로 전송하여 가능한 완성들을 결정한다. 일 실시예에서, 프로세스(32_600)는 질의 프리픽스를 지도, 미디어, 위키, 사이트, 및/또는 기타 검색 도메인들로 전송하는데, 여기서 검색 도메인들 각각은 상기의 도 32d에서 기술된 바와 같이 그러한 검색 도메인들 각각에 대해 이용가능한 질의 완성 트리(들)에 기초하여 입력 질의 프리픽스에 대한 가능한 질의 완성들을 결정한다. 프로세스(32_600)는 블록(32_606)에서 검색 도메인들 각각으로부터 가능한 질의 완성들을 수신한다. 가능한 질의 완성들을 수신하는 것에 더하여, 프로세스(32_600)는 또한 상기의 도 32d에서 기술된 바와 같이 가능한 완성들 각각에 대한 점수들의 세트, 예컨대 원시 점수, 로컬 점수, 및/또는 글로벌 점수를 수신한다. 블록(32_608)에서, 프로세스(32_600)는 반환된 점수들 및 입력 질의 프리픽스의 컨텍스트에 기초하여 가능한 질의 완성들의 순위를 매기고 그를 필터링한다. 일 실시예에서, 프로세스(32_600)는 상이한 검색 도메인들로부터 수신된 원시 점수, 로컬 점수, 그리고 글로벌 점수, 및 질의 프리픽스와 함께 포함된 컨텍스트에 기초하여 가능한 질의 완성들의 순위를 매긴다. 프로세스(32_600)는 추가적으로 규칙들의 세트에 기초하여 가능한 질의 완성들을 필터링한다. 예를 들어 그리고 일 실시예에서, 필터 규칙은, 프로세스(32_600)가 1 또는 일부 미리결정된 값보다 작은 원시 점수를 갖는 가능한 완성들을 필터링하는 것일 수 있다. 프로세스(32_600)는, 블록(32_610)에서, 순위가 매겨지고 필터링된 완성들을 검색 질의 모듈로 전송하는데, 여기서 검색 질의 모듈은 순위가 매겨지고 필터링된 질의 완성들의 세트를 사용하여 사용자에게 반환될 관련 결과들의 세트를 결정한다.
전술된 바와 같이, 프로세스(32_600)에 의해 결정되는 질의 완성들은, 이러한 완성들을 사용자에게 다시 전송하지 않고서 관련 결과들을 결정하기 위해 사용된다. 도 32g은 결정된 질의 완성으로부터 다수의 검색 도메인들에 걸쳐 관련 결과들을 결정하기 위한 프로세스(32_700)의 일 실시예의 흐름도이다. 일 실시예에서, 연합기(32_824)는 프로세스(32_700)를 수행한다. 도 32g에서, 프로세스(32_700)는 블록(32_702)에서 컴플리터(completer)로부터 질의 완성들을 수신한다. 일 실시예에서, 수신된 질의 완성들은 질의 프리픽스를 수신하는 것에 응답하여 프로세스(32_600)에 의해 결정되는 완성들이다. 블록(32_704)에서, 프로세스(32_700)는 질의 완성들을 상이한 검색 도메인들로 전송하여 가능한 관련 결과들을 결정한다. 일 실시예에서, 검색 도메인들 각각은 수신된 질의 완성들을 사용하여 그 검색 도메인에 대한 관련 결과들을 결정한다. 블록(32_706)에서, 프로세스(32_700)는 상이한 검색 도메인들로부터 질의 결과들을 수신한다. 일 실시예에서, 프로세스(32_700)는 결과들 및 각각의 결과와 연관된 점수들을 수신하는데, 이들은 관련 검색 도메인에 의해 산출된다.
프로세스(32_700)는 블록(32_708)에서 검색 결과들의 순위를 매기고 그를 필터링한다. 일 실시예에서, 프로세스(32_700)는 검색 결과들에 대한 검색된 도메인들 각각에 의해 반환되는 점수들 및 다른 요인들에 기초하여 검색 결과들의 순위를 매긴다. 이 실시예에서, 상이한 도메인들로부터의 점수들은, 도메인-의존적인 점수들, 질의 독립적인 점수들, 및 질의 독립적인 점수들에 기초하여 점수가 매겨질 수 있다. 일 실시예에서, 상이한 검색 도메인들 각각은, 반환된 결과들의 순위를 매기기 위해 사용되는 특정 데이터를 제공할 수 있다. 예를 들어 그리고 일 실시예에서, 지도 검색 도메인은 다음의 다양한 질의 독립적인 정보를 제공하여 결과들의 순위를 매길 수 있다: 온라인 검토들의 수, 평균 검토 점수, 결과가 그 결과와 연관된 URL(Uniform Resource Locator)을 갖는 경우(예컨대, 결과가 사업체 위치인 경우, 사업체가 웹사이트 또는 다른 소셜 미디어 존재를 참조하는 URL을 갖는 경우) (예컨대, 질의 프리픽스 위치 정보에 기초하는) 사용자로부터의 거리, 및/또는 클릭 카운트들의 수. 다른 예 및 다른 실시예로서, 미디어 검색 도메인은 점수를 매기기 위해 다음의 다른 유형의 정보를 제공할 수 있다: 미디어 평가 카운트, 미디어의 연령, 인기도, 감쇠된 인기도, 및/또는 결과에 의한 구매 데이터. 추가 예 및 실시예에서, 위키 검색 도메인은, 페이지 뷰들, 편집 이력, 및 순위를 매기기 위해 있을 수 있는 언어들의 개수에 관한 정보를 제공할 수 있다. 기타 검색 도메인은 연령 및 인용구들의 개수와 같은 점수 메트릭들을 제공할 수 있다.
일 실시예에서, 프로세스(32_700)는 각각의 검색 도메인으로부터 점수들의 세트를 수신하고, 이러한 점수들을 사용하여 결과들 각각에 대한 초기 점수를 결정한다. 프로세스(32_700)는 결과들 각각에 신호 도메인을 적용한다. 일 실시예에서, 신호 도메인은 질의 완성 특성화이다. 이 실시예에서, 프로세스(32_700)는 질의 완성들 각각을 특성화하고, 이러한 질의 완성 특성화를 사용하여 결과들의 순위를 매긴다. 예를 들어 그리고 일 실시예에서, 프로세스(32_700)는 지식 베이스를 이용한 어휘 특성화를 수행하여, 질의 완성에 대한 유형을 결정한다. 이 예에서, 질의 완성 유형은, 질의 완성이 사람, 장소, 물건, 및/또는 다른 카테고리를 결정하고 있는지 여부를 나타낸다. 예를 들어 그리고 일 실시예에서, 프로세스(32_700)는 질의 완성이 장소를 결정하기 위해 사용되고 있음을 결정할 수 있다. 이 예에서, 질의 완성이 장소를 결정하기 위해 사용되기 때문에, 지도 검색 도메인으로부터의 질의 결과들은 검색 결과들의 순위에서 더 높게 가중될 것이다(그리고 순위가 매겨질 것이다). 질의 완성 특성화는 하기의 도 32m 내지 도 32o에서 추가로 기술된다.
다른 실시예에서, 프로세스(32_700)는 결과 점수들 각각에 부스트(boost)를 적용한다. 이 실시예에서, 프로세스(32_700)는 결과들 각각에 질의 합당한 신선도(query deserves freshness)를 적용한다. 일 실시예에서, 질의 합당한 신선도란, 그 결과에 대한 카운트들의 수에서 최근의 급등(spike)들 또는 피크들이 있는 경우, 이러한 결과가 "신선한(fresh)" 결과임 - 이는 부스트될 수 있음 - 을 의미한다. 시간 경과에 따라 기준선 주위에서 변동하는 카운트를 갖는 결과는 "신선한" 결과가 아닐 것이고, 부스트되지 않을 것이다. 일 실시예에서, 카운트들은 소셜 미디어 피드(예컨대, 트위터 등)의 분석에 기초한다.
예를 들어 그리고 일 실시예에서, 질의 완성이 "puppy love"였는 경우, 다음의 4개의 결과들이 반환되었다: (1) 미디어 검색 도메인으로부터의 노래 "Puppy Love"; (2) 지도 검색 도메인으로부터의 "Puppy Love Dogs"로 불리는 사업체; (3) puppy love 광고를 언급하는 뉴스 기사; 및 (4) "Puppy Love"로 불리는 위키 엔트리. 이 실시예에서, 다음의 검색 도메인 의존적 메트릭들에 기초하는 각각의 결과의 초기 점수가 있다: 미디어 검색 도메인으로부터의 {연령, 평가, 및 원시 점수}; 지도 검색 도메인으로부터의 {사용자로부터의 거리, URL을 가짐, 검토들의 수, 평균 검토}; 뉴스 도메인으로부터의 {연령, 뉴스 점수, 트랙백(trackback) 카운트)}; 및 위키 검색 도메인으로부터의 {페이지 순위, 원시 점수}. 검색 도메인 각각은 그 자신의 점수를 프로세스(32_700)에 제공한다. 이 예에서, 각각의 결과의 점수는 초기에 위키 결과 > 미디어 결과 > 뉴스 결과 > 지도 결과로서 순위가 매겨질 수 있다. 프로세스(32_700)는 추가로, 결과들 각각에 신호 도메인을 적용한다. 이 예에서, 질의 "puppy love"는 노래 및 어쩌면 장소로서 특성화된다. 이러한 특성화를 적용하는 것은 미디어 저장소 결과 및, 보다 적게는, 지도 결과를 부스트할 것이다. 특성화 부스트를 적용한 후에, 결과 점수는 위키 결과 > 미디어 결과(그러나 점수는 더 가까움) > 지도 결과 > 뉴스 결과로 순위가 매겨질 수 있다. 또한, 프로세스(32_700)는 질의 합당한 부스트들을 결과들에 적용한다. 예를 들어, "Puppy Love" 광고의 초기 방송 이후에 2일이기 때문에, 이 광고에 대한 카운트들에 부스트가 있다. 따라서, "Puppy Love" 결과는 질의 합당한 신선도 부스트를 얻게 될 것이다. 이 예에서, 뉴스 결과 "Puppy Love"는, 결과들이 뉴스 결과 > 위키 결과 > 미디어 결과 > 지도 결과로서 순위를 매기도록 크게 부스트될 것이다.
일 실시예에서, 프로세스(32_700)는 추가적으로 검색 결과들을 필터링한다. 이 실시예에서, 프로세스(32_700)는 소정의 규칙들에 기초하여 결과들을 제거한다. 예를 들어 그리고 일 실시예에서, 프로세스(32_700)는 소정의 전체 점수보다 낮은 결과들을 제거할 수 있다. 대안적으로, 프로세스(32_700)는 다른 기준들(예컨대, 질의에 대한 불량한 텍스트 매칭, 낮은 클릭률, 낮은 인기도, 명시적인 콘텐츠 및/또는 비속어(profanity)를 갖는 결과들, 및/또는 이들의 조합)에 기초하여 결과들을 필터링할 수 있다. 블록(32_710)에서, 프로세스(32_700)는 순위가 매겨지고 필터링된 결과들을 사용자에게 반환한다.
도 32h은 사용자 피드백을 검색 인덱스 내에 포함시키는 시스템(32_800)의 블록도이다. 도 32h에서, 시스템(32_800)은 디바이스(32_802)를 포함하고, 이 디바이스는 질의 프리픽스(들)(32_828)를 에지 서버(32_804)로 전송하는데, 이는 결국, 질의 결과들(32_830)을 디바이스로 다시 반환한다. 또한, 에지 서버(32_804)는 코어 서버(32_816)에 결합된다. 일 실시예에서, 사용자가 질의 프리픽스를 입력함에 따라 디바이스(32_802)는 질의 프리픽스(들)(32_828)를 에지 서버로 전송한다. 예를 들어 그리고 일 실시예에서, 사용자가 질의 프리픽스 "apple"을 타이핑하는 경우, 사용자가 각각의 문자를 입력함에 따라 "a", "ap", "app", "appl", 및 "apple"에 대한 질의 프리픽스가 생성되고 에지 서버(32_804)로 전송된다. 또한, 에지 서버(32_804)로 전송되는 각각의 질의 프리픽스(32_828)에 대해, 에지 서버(32_804)는 관련 결과들(32_830)을 클라이언트에게 반환한다. 예를 들어 그리고 일 실시예에서, 에지 서버는 사용자가 각각의 문자를 입력함에 따라 질의 프리픽스들(32_828) "a", "ap", "app", "appl", 및 "apple"에 대한 관련 결과들을 반환할 것이다. 일 실시예에서, 에지 서버는 또한 질의 완성을 수행할 수 있다. 일 실시예에서, 디바이스(32_802)는 추가로, 사용자의 검색 세션에 관한 피드백을 수집하고, 이러한 피드백을 피드백 패키지(32_832) 내에 수집하고, 피드백 패키지를 에지 서버로 전송한다. 피드백의 수집 및 전송은 하기의 도 32j에서 추가로 기술된다. 일 실시예에서, 디바이스(32_802)는 피드백을 수집 및 전송하기 위한 피드백 수집 모듈(32_838)을 포함한다.
일 실시예에서, 에지 서버(32_804)는 피드백 모듈(32_806)을 포함하는데, 이 피드백 모듈은 피드백 검색 모듈(32_808) 및 피드백 수집 모듈(32_810)을 추가로 포함한다. 일 실시예에서, 피드백 검색 모듈(32_808)은, 에지 서버(32_804)의 에지 캐시(32_812) 상에 저장된 피드백 인덱스(32_814)에 기초하여 질의 프리픽스(들)(32_828) 각각에 대한 검색을 수행한다. 이 실시예에서, 사용자가 질의 프리픽스(32_828)를 입력함에 따라, 피드백 검색 모듈(32_808) 및 피드백 검색 인덱스(32_814)를 사용하여 관련 결과들(32_830)의 새로운 세트가 디바이스(32_802)로 반환된다. 일 실시예에서, 피드백 검색 인덱스는 사용자의 피드백을 검색 인덱스 내에 포함시키는 인덱스이다. 이 실시예에서, 피드백 검색 인덱스는 결과들(32_830)을 다시 디바이스로 신속하게 제공하기 위해 사용되는 결과 캐시이다. 일 실시예에서, 피드백 검색 인덱스는 인용구 검색 인덱스이고, 하기의 도 32k을 참조하여 추가로 기술된다. 일 실시예에서, 피드백 수집(32_810)은 디바이스(32_802)로부터 전송된 피드백 패키지들을 수집하고, 피드백 패키지를 코어 서버(32_816)로 전송한다.
일 실시예에서, 코어 서버(32_816)는 피드백 피드 파이프라인(32_818), 피드백 결정 파이프라인(32_822), 피드백 인덱스(32_820), 및 연합기(32_824)를 포함한다. 일 실시예에서, 피드백 피드 파이프라인(32_818)은 에지 서버(32_804)로부터 원시 피드백 패키지들(32_834)을 수신하고, 이러한 원시 피드백 패키지들(32_834) 각각을 피드백 인덱스(32_820)에 대한 엔트리들로 변환한다. 일 실시예에서, 피드백 피드 파이프라인(32_816)은 원시 피드백 패키지들 각각을 <질의, 결과, 렌더 카운트들, 관여 카운트들, 포기 카운트들>의 포맷을 갖는 인덱스 엔트리들의 세트로 변환하는데, 여기서 질의는 입력 질의 및 컨텍스트 정보, 예컨대 디바이스 유형, 애플리케이션, 로케일, 및 지리적 위치이고, 결과는 렌더 결과이고, 렌더 카운트들은 결과가 그 질의에 대해 렌더링되는 횟수이고, 관여 카운트들은 결과가 그 질의에 대해 관여되는 횟수이고, 포기 카운트들은 결과가 포기되는 횟수이다. 이 실시예에서, 이러한 인덱스 엔트리들은 피드백 인덱스(32_820)에 부가된다. 원시 피드백 패키지들에 의해 피드백 인덱스를 업데이트하는 것은 하기의 도 32k에서 추가로 기술된다. 일 실시예에서, 피드백 인덱스(32_820)는 사용자의 피드백을 포함시키는 검색 인덱스이다. 피드백 피드 파이프라인(32_818)은, 원시 피드백 패키지들에 의해 피드백 인덱스를 업데이트하는 피드백 프로세싱 모듈(32_840)을 추가로 포함한다.
일 실시예에서, 피드백 결정 파이프라인(32_822)은 피드백 인덱스(32_820)를 사용하여 결과 세트를 업데이트한다. 일 실시예에서, 결과 세트는 결과들과 질의들의 세트 사이의 맵이다. 이 실시예에서, 피드백 결정 파이프라인(32_822)은 피드백 인덱스(32_820)에 대해 질의들의 세트를 구동하여 업데이트된 결과 세트를 결정한다. 이 실시예에서, 업데이트된 결과 세트는 연합기(32_824)로 전송된다. 피드백 결정 파이프라인(32_822)은 추가적으로 업데이트된 결과 세트(32_826)를 에지 서버(32_804)로 전송한다. 업데이트된 결과 세트(32_826)는, 업데이트된 피드백 인덱스(32_820)를 사용하여 결정되는 질의들의 세트에 대한 결과들을 포함한다. 일 실시예에서, 피드백 결정 파이프라인(32_822)은 결과 세트를 업데이트하는 결과 업데이트 모듈(32_842)을 포함한다. 결과를 업데이트하는 것은 하기의 도 32l에서 추가로 기술된다. 일 실시예에서, 피드백 결정 파이프라인(32_822)은 추가적으로, 업데이트된 결과 세트를 피드백 아카이브(32_836)로 전송하는데, 피드백 아카이브는 업데이트된 결과 세트(32_826)를 저장한다. 일 실시예에서, 연합기(32_824)는 하기의 도 32m 내지 도 32o에서 기술되는 바와 같이 완성된 질의들을 사용하여 멀티-도메인 검색을 수행한다.
전술된 바와 같이, 검색 네트워크는 사용자의 검색 세션에 대한 사용자 피드백을 캡처하고, 이러한 피드백을 사용하여 검색 피드백 인덱스를 구축한다. 도 32i는 사용자 피드백을 인용구 검색 인덱스 내에 포함시키기 위한 프로세스(32_900)의 일 실시예의 흐름도이다. 도 32i에서, 프로세스(32_900)는 사용자의 검색 세션 동안 사용자 피드백을 수집하는 것으로 시작한다. 일 실시예에서, 프로세스(32_900)는 검색 네트워크로 전송되었던 질의 프리픽스에 응답하여 질의 결과들을 수신한 디바이스에서 피드백을 수집하는 것을 시작한다. 이 실시예에서, 프로세스(32_900)는 초기 렌더 이벤트(또는 다른 이벤트(예컨대, 질의 프리픽스의 입력 시작))를 검출하고 검색 세션에서 사용자의 상호작용들을 결정함으로써 피드백을 수집한다. 일 실시예에서, 사용자 상호작용은, 결과들에 의해 참조되는 웹사이트에 포커스를 유지하는 것, 그 웹사이트 상의 링크 또는 다른 참조를 클릭하는 것, 또는 다른 유형의 상호작용일 수 있다. 일 실시예에서, 검색 세션은, 사용자가 질의 프리픽스의 입력을 시작하고, 대략적인 기간(예컨대, 15분)에 걸쳐 사용자의 액션들을 추적함으로써 시작되는 이벤트들의 세트이다. 일 실시예에서, 프로세스(32_900)는, 전송된 질의 프리픽스, 사용자에 대해 렌더링되는 관련 결과들, 사용자가 이러한 렌더 결과들 중 임의의 것에 관여하는지("관여 이벤트들"), 그리고 사용자가 렌더링된 결과들을 포기하는지("포기 이벤트들")를 기록한다. 일 실시예에서, 프로세스(32_900)는 사용자가 대안의 검색 옵션들에 관여하는지를 기록한다.
일 실시예에서, 사용자가, 사용자에게 제시되는 렌더링된 결과들 중 하나의 결과와 상호작용하는 경우 관여 이벤트가 발생한다. 예를 들어 그리고 일 실시예에서, 사용자는 렌더링된 결과들 중 하나의 결과에 대해 제시되는 링크를 클릭할 수 있다. 다른 예에서, 사용자는 링크를 클릭할 수 있고, 그 링크에 의해 참조되는 객체(예컨대, 웹사이트)와 상호작용하는 미리결정된 시간보다 많은 시간을 소비할 수 있다(예컨대, 60초 초과 동안 참조된 객체와 상호작용한다). 이 예에서, 사용자는 현재 미국 대통령에 대한 질의 검색을 향한 결과들을 수신할 수 있고, 최신 대통령 연설을 설명하는 웹 페이지를 참조하는 링크를 클릭할 수 있다. 사용자가 미리결정된 시간보다 많은 시간(예컨대, 60 내지 90초) 동안 그 웹사이트와 상호작용하는 경우, 프로세스(32_900)는 사용자가 그 링크에 의해 표현되는 결과에 관여하였다고 결정할 것이다. 따라서, 이것은 이 결과에 대한 관여 이벤트일 것이다. 일 실시예에서, 링크 위에서의 호버링(hovering)은 관여로서 기록될 수 있다. 다른 실시예에서, 사용자는 또한 소정 기간 동안 디스플레이된 결과를 관찰할 수 있다. 이 실시예에서, 결과의 유형 및 그 기간 이후의 액션에 따라, 달리 포기로서 기록된 액션이, 대신에, 관여로서 기록될 수 있고, 또는 그 반대로도 가능하다. 예를 들어 그리고 일 실시예에서, 사용자가 "중국의 인구"에 대해 질의하여, 결과가 디스플레이되고, 사용자가 질의를 삭제하기 전에 10초간 일시 중지하는 경우, 이 이벤트는 포기 이벤트 대신에 관여로서 기록될 수 있다.
다른 실시예에서, 사용자는, 사용자에게 렌더링된 결과들을 무시하거나 포기할 수 있다. 예를 들어 그리고 일 실시예에서, 사용자가 렌더링된 결과들 중 하나의 결과에 대해 제시되는 링크를 클릭하지만 미리결정된 시간 내에(예컨대, 60 내지 90초 미만에) 그 웹사이트에서 떠나서 내비게이팅하는 경우, 프로세스(32_900)는 이것이 그 결과에 대한 포기 이벤트라고 결정한다. 일 실시예에서, 다음의 다른 유형의 포기 이벤트들이 있다: (질의 프리픽스를 확장하여) 더 많은 문자들을 계속해서 타이핑하는 것; 다른 윈도우 또는 애플리케이션으로 포커스를 변경하는 것; 질의를 삭제하는 것; 하나 이상의 문자들에 백스페이스키를 치거나 또는 질의를 달리 편집하는 것; 결과로서 제시되었던 것 이외의 어떤 것에 관여하는 것은 그 결과의 포기로서 기록될 수 있다. 일 실시예에서, 사용자의 액션들은 사용자에 의해 소비되는 시간 간격들과 함께 기록되는데, 이는 달리 포기일 것 같은 것의 해석을 관여로 변경할 수 있거나 또는 그 반대도 가능하다.
일 실시예에서, 사용자의 검색 세션은, 사용자 세션의 길이, 비활동의 시간, 또는 일부 다른 메트릭에 관계없이, 미리결정된 시간 이후에 종료할 수 있다. 검색 세션 종료에 응답하여, 프로세스(32_900)는 이러한 검색 세션 동안 수집된 이벤트들을 피드백 패키지로 조립하는데, 피드백 패키지는 검색 네트워크로 전송된다. 피드백을 수집하는 것은 하기의 도 32j에서 추가로 기술된다.
블록(32_904)에서, 프로세스(32_900)는, 피드백 패키지 내에 포함되는 수신된 피드백을 프로세싱한다. 일 실시예에서, 프로세스(32_900)는 수신된 피드백 패키지를 피드백 검색 인덱스에 대한 엔트리로 변환한다. 일 실시예에서, 피드백 검색 인덱스는 사용자 피드백을 점수 결과들 내에 포함시키는 검색 인덱스이다. 예를 들어 그리고 일 실시예에서, (질의, 결과) 쌍에 대한 각각의 관여 이벤트들은 대응하는 질의에 대해 그 결과를 촉진시킨다. 이 예에서, 사용자가 특정 질의에 대해 결과에 관여하는 경우, 향후 사용자가 또한 동일한 질의에 대해 이 결과에 관여할 수 있다. 따라서, 일 실시예에서, 이 질의에 대한 결과는 동일한 질의를 갖는 향후 사용자에 대해 반환되고 더 높게 순위가 매겨질 것이다. 반대로, 사용자가 특정 질의에 대한 결과를 포기하는 경우, 향후 사용자가 또한 동일한 질의에 대해 이 동일한 결과를 포기할 수 있다. 따라서, 일 실시예에서, 이 질의에 대한 결과는 동일한 질의를 갖는 향후 사용자에 대해 반환되고 더 낮게 순위가 매겨질 수 있다.
일 실시예에서, 프로세스(32_900)는 수신된 피드백 패키지를 피드백 검색 인덱스 엔트리로 변환하는데, 피드백 검색 인덱스 엔트리는 <질의, 결과, 렌더 카운트들, 관여 카운트들, 포기 카운트들>의 포맷을 갖고, 여기서 질의는 입력 질의 및 컨텍스트 정보, 예컨대 디바이스 유형, 애플리케이션, 로케일, 및 지리적 위치이고, 결과는 렌더 결과이고, 렌더 카운트들은 결과가 그 질의에 대해 렌더링되는 횟수이고, 관여 카운트들은 결과가 그 질의에 대해 관여되는 횟수이고, 포기 카운트들은 결과가 포기되는 횟수이다. 일 실시예에서, 프로세스(32_900)는 피드백 검색 인덱스에서 이러한 피드백 인덱스 엔트리를 업데이트한다. 추가 실시예에서, 각각의 피드백 패키지는 또한 고유 소스 식별자들을 포함하는데, 고유 소스 식별자들은, 프라이버시를 보호하기 위해 아이덴티티를 난독화하는 방법들을 갖거나 또는 갖지 않고서, 사용자 식별자들, 디바이스 식별자들, 또는 세션 식별자들을 포함할 수 있고, 여기서 피드백 인덱스 엔트리를 업데이트하는 것은 인용구 인덱스의 형태로 인덱스에 첨부되고, 이때 고유 소스 식별자들은 피드백 인용구들의 소스이다. 피드백 인덱스는 이어서, 사용자들의 그룹들 또는 개인들에게 개인맞춤화되거나 주문맞춤화되는 가중치들 및 결과들을 제공하기 위해 질의될 수 있다. 수신된 피드백을 프로세싱하는 것은 하기의 도 32k에서 추가로 기술된다.
프로세스(32_900)는 블록(32_906)에서 결과 캐시를 업데이트한다. 일 실시예에서, 결과 캐시는 질의들을 결과들에 맵핑시키는 캐시인데, 이는 사용자 질의에 대한 결과들을 신속하게 반환하는 데 사용될 수 있다. 일 실시예에서, 결과 캐시는, 질의 검색을 수행하기 전에 하나 이상의 결과들을 제공하는 데 사용될 수 있는 사용자의 디바이스에 매우 근접하게 있는 에지 서버(예컨대, 다른 에지 서버들보다 클라이언트에 지리적으로 더 가깝게 있는 에지 서버)에 저장된다. 일 실시예에서, 프로세스(32_900)는 업데이트된 피드백 검색 인덱스를 사용하여 질의들의 세트를 구동하여 이러한 질의들에 대한 결과들의 세트를 결정함으로써 결과들을 업데이트한다. 업데이트된 결과들은 에지 서버들 상에 저장된 결과 캐시들 각각으로 전송된다. 결과 캐시를 업데이트하는 것은 하기의 도 32l에서 추가로 기술된다.
도 32j은 사용자 검색 세션 동안 사용자 피드백을 수집하기 위한 프로세스(32_1000)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(32_100)는 사용자 검색 세션 동안 사용자 피드백을 수집하기 위한 피드백 수집 모듈, 예컨대 상기의 도 32h에서 기술된 바와 같은 피드백 수집 모듈(32_838)에 의해 수행된다. 도 32j에서, 프로세스(32_1000)는 피드백 수집을 트리거하는 이벤트를 검출하는 것으로 시작한다. 일 실시예에서, 초기 이벤트는 다른 유형의 이벤트의, 질의 프리픽스 문자열에 대한 입력의 시작일 수 있다. 일 실시예에서, 사용자가 일정 기간(예컨대, 15분)에 걸쳐 이전의 검색 세션에 참여하였는 경우, 질의 프리픽스 문자열에 대한 입력의 이러한 시작은 새로운 사용자 검색 세션의 시작을 표시하고, 사용자 피드백의 기록을 시작한다. 전술된 바와 같이, 검색 세션은, 사용자가 질의 프리픽스의 입력을 시작하고, 대략적인 기간(예컨대, 15분)에 걸쳐 사용자의 액션들을 추적함으로써 시작되는 이벤트들의 세트이다.
블록(32_1004)에서, 프로세스(32_1000)는 사용자 검색 세션과 연관된 이벤트들을 기록한다. 일 실시예에서, 프로세스(32_1000)는 렌더 이벤트, 관여 이벤트, 및 포기 이벤트를 기록한다. 일 실시예에서, 렌더 이벤트는 사용자가 질의 프리픽스 또는 완전한 질의를 입력하는 것에 응답하여 사용자에 대해 렌더링되는 관련 결과들이다. 일 실시예에서, 프로세스(32_1000)는, 각각의 질의 프리픽스 또는 완전한 질의에 대해 제시되는 결과들을 기록함으로써 렌더 이벤트를 기록한다. 또한, 프로세스(32_1000)는 블록(32_1004)에서 관여 이벤트들을 기록한다. 일 실시예에서, 관여 이벤트는, 사용자가, 사용자에게 제시되는 렌더링된 결과들 중 하나의 결과와 상호작용하는 경우 발생하는 이벤트이다. 예를 들어 그리고 일 실시예에서, 사용자는 렌더링된 결과들 중 하나의 결과에 대해 제시되는 링크를 클릭할 수 있다. 다른 예에서, 사용자는 링크를 클릭할 수 있고, 그 링크에 의해 참조되는 객체(예컨대, 웹사이트)와 상호작용하는 미리결정된 시간보다 많은 시간을 소비할 수 있다(예컨대, 60초 초과 동안 참조된 객체와 상호작용한다). 이 예에서, 사용자는 현재 미국 대통령에 대한 질의 검색을 향한 결과들을 수신할 수 있고, 최신 대통령 연설을 설명하는 웹 페이지를 참조하는 링크를 클릭할 수 있다. 사용자가 미리결정된 시간보다 많은 시간(예컨대, 60 내지 90초) 동안 그 웹사이트와 상호작용하는 경우, 프로세스(32_1000)는 사용자가 그 링크에 의해 표현되는 결과에 관여하였다고 결정할 것이다. 따라서, 이것은 이 결과에 대한 관여 이벤트일 것이다.
추가 실시예에서, 프로세스(32_1000)는 포기 이벤트들을 기록할 수 있는데, 여기서 포기 이벤트는 사용자가 사용자에 대해 렌더링되는 결과들을 무시하거나 포기할 수 있는 이벤트이다. 예를 들어 그리고 일 실시예에서, 사용자가 렌더링된 결과들 중 하나의 결과에 대해 제시되는 링크를 클릭하지만 미리결정된 시간 내에(예컨대, 60 내지 90초 미만에) 그 웹사이트에서 떠나서 내비게이팅하는 경우, 프로세스(32_900)는 이것이 그 결과에 대한 포기 이벤트라고 결정한다. 일 실시예에서, 사용자는 웹사이트를 제시하는 탭 또는 윈도우를 닫거나, 다른 애플리케이션으로 포커스를 변경하거나, 또는 사용자가 제시된 웹사이트와 상호작용하고 있지 않음을 나타내는 일부 다른 액션에 의해 다른 곳을 내비게이팅한다.
블록(32_1006)에서, 프로세스(32_1000)는 사용자의 검색 세션의 기록된 이벤트들로부터 피드백 패키지를 생성한다. 일 실시예에서, 사용자의 검색 세션은 초기 검색 세션 이벤트 이후에 미리결정된 시간(예컨대, 15분)에 기초하여 종료하거나, 또는 사용자 검색 세션에 관한 사용자 비활동의 미리결정된 시간일 수 있다. 예를 들어 그리고 일 실시예에서, 사용자가 활동을 하지 않거나 또는 미리결정된 시간(예컨대, 10분)에 걸쳐 결과들 또는 결과들 중 하나의 결과에 의해 참조되는 다른 유형의 객체들과 상호작용하지 않는 경우, 사용자의 검색 세션은 종료할 것이다. 일 실시예에서, 사용자의 검색 세션의 종료에 응답하여, 프로세스(32_1000)는 기록된 이벤트들을 수집하고 이러한 사용자 검색 세션으로부터 피드백 패키지를 생성할 것이다. 일 실시예에서, 피드백 패키지는 사용자에 대해 렌더링되는 결과들의 세트, 그러한 결과들과 연관된 질의들, 사용자가 질의의 결과에 관여한 관여 이벤트들, 및 사용자가 사용자에 대해 렌더링되는 결과들을 포기한 포기 이벤트들을 포함하는데, 여기서 포기된 이벤트들 각각은 질의와 연관된다. 프로세스(32_1000)는 블록(32_1008)에서 이 피드백 패키지를 검색 네트워크로 전송한다. 일 실시예에서, 클라이언트는 피드백 패키지를 에지 서버로 전송하는데, 여기서 에지 서버는 피드백 패키지를 프로세싱하기 위해 코어 서버로 전송한다.
도 32k은 사용자 피드백을 피드백 인덱스 내에 포함시키기 위한 프로세스(32_1100)의 일 실시예의 흐름도이다. 일 실시예에서, 피드백 프로세싱 모듈은 피드백 프로세싱 모듈, 예컨대 상기의 도 32h에서 기술된 바와 같은 피드백 프로세싱 모듈(32_840)을 수행한다. 도 32k에서, 프로세스(32_1100)는 블록(32_1102)에서 피드백 패키지를 수신하는 것으로 시작한다. 일 실시예에서, 피드백 패키지는 상기의 도 32j에서 기술된 바와 같은 사용자의 검색 세션의 피드백 패키지이다. 블록(32_1104)에서, 프로세스(32_1100)는 피드백 패키지를 하나 이상의 피드백 인덱스 엔트리들로 변환한다. 일 실시예에서, 피드백 인덱스 엔트리는 특정 질의, 결과 쌍에 대해 기록된 이벤트들의 수이다. 예를 들어 그리고 일 실시예에서, 피드백 인덱스 엔트리는 <질의, 결과, 렌더 카운트들, 관여 카운트들, 포기 카운트들>을 포함하는데, 여기서 질의는 입력 질의 및 컨텍스트 정보, 예컨대 디바이스 유형, 애플리케이션, 로케일, 및 지리적 위치이고, 결과는 렌더 결과이고, 렌더 카운트들은 결과가 그 질의에 대해 렌더링되는 횟수이고, 관여 카운트들은 결과가 그 질의에 대해 관여되는 횟수이고, 포기 카운트들은 결과가 포기되는 횟수이다.
블록(32_1106)에서, 프로세스(32_1100)는 피드백 인덱스 엔트리를 피드백 인덱스 내에 삽입한다. 일 실시예에서, 피드백 인덱스는 사용자 피드백을 검색 인덱스 내에 포함시키는 검색 인덱스이다. 일 실시예에서, 피드백 인덱스는 인용구 인덱스인데, 여기서 관여 이벤트는 결과에 대한 긍정적인 인용구이고, 포기 이벤트는 그 결과에 대한 부정적인 인용구이다. 일 실시예에서, 인용구 검색 인덱스는, 2009년 12월 1일자로 출원되고 발명의 명칭이 "Ranking and Selecting Entities Based on Calculated Reputation or Influence Scores"인 미국 특허 출원 제12/628,791호에 기술되어 있고, 이 섹션에 포함된다. 일 실시예에서, 동일한 질의, 결과 쌍을 갖는 피드백 인덱스 내에 엔트리가 있는 경우, 프로세스(32_1100)는 이 엔트리를 이벤트 카운트들의 수에 의해 업데이트한다.
전술된 바와 같이, 피드백 인덱스를 통합한 사용자 피드백은 결과 캐시를 업데이트하기 위해 사용될 수 있다. 도 32l는 사용자 피드백을 사용하여 결과 캐시를 업데이트하기 위한 프로세스(32_1200)의 일 실시예의 흐름도이다. 일 실시예에서, 결과 업데이트 모듈, 예컨대 상기의 도 32h에서 기술된 바와 같은 결과 업데이트 모듈(32_842)은 결과 캐시를 업데이트하기 위한 프로세스(32_1200)를 수행한다. 도 32l에서, 프로세스(32_1200)는 다수의 질의들을 포함하는 결과 세트(RS)를 수신하는 것으로 시작한다. 일 실시예에서, 결과 세트는 결과들과 질의들의 세트 사이의 맵이다. 이러한 결과 세트는 상기의 도 32h에서 기술된 바와 같이 결과 캐시가 질의 프리픽스들에 대한 관련 결과들을 신속하게 반환하게 하기 위해 사용될 수 있다. 일 실시예에서, 결과 세트는 사용자 피드백을 포함하지 않는 검색 인덱스에 의해 생성된다. 다른 실시예에서, 결과 세트는 이전의 사용자 피드백을 포함하는 이전의 피드백 인덱스에 의해 생성된다.
블록(32_1204)에서, 프로세스(32_1200)는 현재 피드백 인덱스에 대해 결과 세트(RS)로부터 각각의 질의를 구동한다. 프로세스(32_1200)는 블록(32_1204)에서의 구동된 질의들로부터의 결과들을 사용하여, 블록(32_1206)에서 업데이트 결과 세트(RS')를 생성한다. 일 실시예에서, 결과 세트(RS')는 피드백 가중된 결과 세트인데, 여기서 더 많은 관여 이벤트들을 갖는 질의에 대한 결과들은 피드백 인덱스에서 더 높게 가중되고, 더 많은 포기 이벤트들을 갖는 그 질의에 대한 결과들은 피드백 인덱스에서 더 낮게 가중된다. 예를 들어 그리고 일 실시예에서, 결과 세트(RS)에서의 질의(Q)가 R1, R2, 및 R3으로서 순위가 매겨진 결과들을 가질 것이고, 업데이트된 피드백 인덱스에서는 Q에 대해 R1이 20개의 관여 이벤트들 및 50개의 포기 이벤트들을 갖고, R2가 32_100개의 관여 이벤트들 및 2개의 포기 이벤트들을 갖고, R3이 50개의 관여 이벤트들 및 10개의 포기 이벤트들을 갖는 것으로서 이러한 결과들을 갖는 경우, 업데이트된 피드백 인덱스에 대해 질의(Q)를 구동하면 R2, R3, 및 R1로서 순위가 매겨진 결과들을 반환할 수 있다. 따라서, 일 실시예에서, 피드백 인덱스를 사용함으로써, 업데이트된 결과 세트(RS')에서의 결과들의 순위를 변경할 것이다. 다른 실시예에서, 관련 결과 필터는, 제시될 결과에 대해, 그 결과가 x개의 관여 이벤트들 또는 y개 이하의 포기 이벤트들을 필요로 할 수 있는 규칙을 가질 수 있다. 따라서, 이 실시예에서, 피드백 인덱스를 사용함으로써, 어느 결과들이 제시되고 어느 결과들이 제시되지 않을지를 변경할 수 있다. 프로세스(32_1200)는 블록(32_1208)에서 업데이트된 결과 세트(RS')를 에지 서버들 각각으로 전송한다. 일 실시예에서, 프로세스(32_1200)는 상기의 도 32h에서 기술된 바와 같이 업데이트된 결과 세트(RS')를 코어 서버(32_816)로부터 에지 서버(32_804)로 전송한다.
도 32m은 특성화된 질의 완성을 사용하여 멀티-도메인 검색을 수행하는 연합기(32_824)의 일 실시예의 블록도이다. 일 실시예에서, 연합기는 완성 모듈(32_1304), 블렌더/랭커(32_1306), 다수의 검색 도메인들(32_1308A 내지 32_1308F), 및 어휘 서비스(32_1314)를 포함한다. 일 실시예에서, 완성 모듈(32_1304)은 상기의 도 32f에서 기술된 바와 같이 질의 프리픽스들 각각에 대한 질의 완성들을 결정한다. 결정된 질의 완성들은 블렌더/랭커(32_1306)로 전송되는데, 블렌더/랭커는 상기의 도 32g에서 기술된 바와 같이 질의 완성들을 사용하여, 검색 도메인들(32_1308A 내지 32_1308F)을 사용한 관련 결과들에 대한 멀티-도메인 검색을 수행한다. 일 실시예에서, 검색 도메인들(32_1308A 내지 32_1308F)은 상기의 도 32c에서 기술된 바와 같은 검색 도메인들이다. 예를 들어 그리고 일 실시예에서, 지도 검색 도메인(32_1308A)은 상기의 도 32c에서 기술된 바와 같이 지리적 지도에 관련된 정보를 포함하는 검색 도메인이다. 지도 검색 도메인(32_1308A)은 지도 데이터 소스(32_1310A)로부터 정보를 질의한다. 미디어 검색 도메인(32_1308B)은 상기의 도 32c에서 기술된 바와 같이 미디어에 관련된 검색 도메인이다. 미디어 검색 도메인(32_1308B)은 미디어 데이터 소스(32_1310B)로부터 정보를 질의한다. 위키 검색 도메인(32_1308C)은 상기의 도 32c에서 기술된 바와 같이 온라인 백과사전 검색 도메인이다. 위키 검색 도메인(32_1308C)은 위키 데이터 소스(32_1310C)로부터 정보를 질의한다. 사이트 검색 도메인(32_1308D)은 상기의 도 32c에서 기술된 바와 같이 웹사이트들의 검색 도메인이다. 사이트 검색 도메인(32_1308D)은 사이트 데이터 소스(32_1310D)로부터 정보를 질의한다. 기타 검색 도메인은 상기의 도 32c에서 기술된 바와 같이 블렌더/랭커(32_1306)에 의해 액세스될 수 있는 기타 검색 도메인들의 세트이다. 기타 검색 도메인(32_1308E)은 기타 데이터 소스(들)(32_1310E)로부터 정보를 질의한다. 일 실시예에서, 피드백 검색 도메인(32_1308F)은 도 32c에서 기술된 바와 같이 다양한 디바이스들 상에서 구동되는 브라우저들에 의해 수집된 질의 피드백에 기초하는 검색 인덱스이다. 피드백 검색 도메인(32_1308)은 피드백 데이터 소스(32_1310F)로부터 정보를 질의한다(예컨대, 피드백 검색 인덱스).
또한, 블렌더/랭커(32_1306)는 다수의 검색 도메인들(32_1308A 내지 32_1308F)로부터 결과들을 수신하고 이러한 결과들의 순위를 매긴다. 일 실시예에서, 블렌더/랭커(32_1306)는 어휘 서비스(32_1302)를 사용하여 질의 완성들 각각을 특성화하는데, 이는 어떤 유형의 검색이 수행되고 있는지를 결정한다. 예를 들어 그리고 일 실시예에서, 어휘 서비스(32_1302)는 검색이 사람, 장소, 물건 등에 대한 것인지 여부를 결정할 수 있다. 일 실시예에서, 어휘 서비스(32_1302)는 단어들 또는 문구들을 카테고리에 맵핑시키는 지식 베이스(32_1312)를 사용한다. 이 실시예에서, 질의 완성을 특성화하는 것은 검색 도메인들(32_1308A 내지 32_1308F)에 의해 반환되는 결과들을 가중시키는 데 사용된다. 예를 들어 그리고 일 실시예에서, 질의 완성이 장소에 대한 검색인 것으로 특성화되는 경우, 지도 검색 도메인으로부터의 결과들이 이 장소에 관한 위키 엔트리일 뿐만 아니라 더 높게 순위가 매겨질 수 있다. 추가 예로서, 질의 완성이 아티스트에 관한 것으로 나타나는 경우, 미디어 검색 도메인 결과들은 더 높게 순위가 매겨질 수 있다. 결과들을 가중시키는 것은 하기의 도 32n에서 추가로 기술된다.
도 32n는 질의 완성에 대해 어휘 서비스를 사용하여 관련 결과들을 결정하기 위한 프로세스(32_1400)의 일 실시예의 흐름도이다. 일 실시예에서, 블렌더/랭커(32_1306)는 상기의 도 32m에서 기술된 바와 같이 질의 완성에 대해 어휘 서비스를 사용하여 관련 결과들을 결정하기 위해 프로세스(32_1400)를 수행한다. 도 32n에서, 프로세스(32_1400)는 블록(32_1402)에서 질의 완성들을 수신하는 것으로 시작한다. 일 실시예에서, 수신된 질의 완성들은 질의 프리픽스를 수신하는 것에 응답하여 프로세스(32_600)에 의해 결정되는 완성들이다. 일 실시예에서, 프로세스(32_1400)는 하나의 병렬 스트림에서 블록들(32_1404, 32_1408)을 수행하고 다른 병렬 스트림에서 블록들(32_1406, 32_1410)을 수행한다. 블록(32_1404)에서, 프로세스(32_1400)는 질의 완성들을 상이한 검색 도메인들로 전송하여 가능한 관련 결과들을 결정한다. 일 실시예에서, 검색 도메인들 각각은 수신된 질의 완성들을 사용하여 그 검색 도메인에 대한 관련 결과들을 결정한다. 일 실시예에서, 다수의 검색 도메인은 질의 완성들 각각을 병렬로 프로세싱한다. 프로세스(32_1400)는 질의 완성(들)을 어휘 서비스로 전송하여 완성(들) 각각을 특성화한다. 일 실시예에서, 어휘 서비스는, 질의 완성(들)이 사람, 장소, 물건, 또는 다른 유형의 정보에 관한 질의인지 여부를 결정함으로써 질의 완성(들) 각각을 특성화한다. 질의 완성(들)을 특성화하는 것은 하기의 도 32o에서 추가로 기술된다. 프로세스(32_1400)는 블록(32_1408)에서 다수의 검색 도메인들로부터 검색 결과들을 수신한다. 일 실시예에서, 검색 결과들 각각은, 대응하는 검색 도메인으로부터의 그 결과를 특성화하는 점수들의 세트를 포함한다.
블록(32_1410)에서, 프로세스(32_1400)는 질의 완성(들)을 특성화하는 어휘 검색 결과들을 수신한다. 일 실시예에서, 질의 완성(들)의 특성화는, 각각의 질의 완성이 검색하고 있는 정보의 유형을 나타낸다. 예를 들어 그리고 일 실시예에서, 질의 완성(들)은 사람, 장소, 물건, 또는 다른 유형의 정보에 관한 질의이다. 일 실시예에서, 2개의 병렬 스트림들은 블록(32_1412)에서 수렴된다. 프로세스(32_1400)는 블록(32_1412)에서 질의 완성 특성화를 사용하여 그 질의 완성에 대한 관련 결과들의 순위를 매기고 그를 필터링한다. 일 실시예에서, 질의 완성이 사람에 대한 검색인 것으로 나타나는 경우, 검색으로부터의 결과들 중 사람에 관한 위키 도메인으로부터의 결과들이 더 높게 순위가 매겨질 수 있다. 예를 들어 그리고 일 실시예에서, 질의 완성이 영화에 대해 검색하는 것으로 특성화되는 경우, 그 영화의 리뷰들 또는 로컬 상영 시간들로부터의 결과들은 더 높게 순위가 매겨질 수 있다. 다른 예로서, 질의 완성이 장소인 것으로 나타나는 경우, 지도 검색 도메인으로부터의 결과들이 이 장소에 관한 위키 엔트리일 뿐만 아니라 더 높게 순위가 매겨질 수 있다. 추가 예로서, 질의 완성이 아티스트에 관한 것으로 나타나는 경우, 미디어 검색 도메인 결과들은 더 높게 순위가 매겨질 수 있다. 질의 완성을 사용하여 순위를 매기는 것은 또한 상기의 도 32g에서 기술되어 있다. 다른 실시예에서, 피드백 인덱스는, 관련 결과들의 순위를 매기고/매기거나 필터링하는 데 사용되는 신호 도메인일 수 있다. 이 실시예에서, 프로세스(32_1400)는 관여 이벤트들의 수를 사용하여 결과의 순위를 더 높게 매기고, 포기 이벤트들의 수를 사용하여 결과의 순위를 더 낮게 매긴다. 일 실시예에서, 프로세스(32_1400)는 추가적으로, 상기의 도 32g의 블록(32_708)에서 기술된 바와 같이 결과들의 순위를 매기고 그를 필터링한다. 프로세스(32_1400)는 블록(32_1414)에서 순위가 매겨지고 필터링된 결과들을 반환한다.
전술된 바와 같이, 프로세스(32_1400)는 어휘 서비스를 사용하여 질의 완성을 특성화한다. 도 32o는 질의 완성을 특성화하기 위한 프로세스(32_1500)의 일 실시예의 흐름도이다. 도 32o에서, 프로세스(32_1500)는 블록(32_1502)에서 질의 완성(들)을 수신한다. 블록(32_1504)에서, 프로세스(32_1500)는 각각의 질의 완성을 토큰화한다(tokenize). 일 실시예에서, 완성을 토큰화하는 것은, 질의 완성을 별개의 토큰들(예컨대, 단어들, 문구들, 복수/단수의 변형들)로 분리하는 것이다. 토큰화된 질의 완성에 대해, 프로세스(32_1500)는 지식 베이스에서 토큰화된 완성에 대한 매칭을 결정한다. 일 실시예에서, 지식 베이스는 카테고리에 맵핑되는 단어들 또는 문구들의 데이터베이스이다. 예를 들어 그리고 일 실시예에서, 지식 베이스는 {에펠 탑 → 장소}, {마이클 잭슨 → 아티스트}, {버락 오바마 → 대통령}, {블랙 윈도우 → 거미} 등과 같은 엔트리들을 포함할 수 있다. 일 실시예에서, 지식 베이스는 온톨로지(ontology)를 사용하여 구축된다. 일 실시예에서, 프로세스(32_1500)는 용어 빈도 매칭 알고리즘을 사용하여, 지식 베이스에서 질의 완성의 매칭을 결정한다. 예를 들어 그리고 일 실시예에서, 질의 완성이 "마이클 잭슨이 누구지?"인 경우, 프로세스(32_1500)는 용어들 "마이클", "잭슨", 또는 "마이클 잭슨"에 매칭시킬 수 있다. 이 예에서, 프로세스(32_1500)는 지식 데이터베이스에서 가장 긴 매칭(longest match)을 찾으려고 할 것이다. 지식 베이스가 "마이클", "잭슨", 및 "마이클 잭슨"에 대한 매칭들을 갖는 경우, "마이클 잭슨"에 대한 매칭이 사용될 것이다. 질의 완성들 중 하나 이상의 질의 완성들에 대한 매칭이 있는 경우, 프로세스(32_1500)는 블록(32_1508)에서 그 매칭(들)을 반환한다. 예를 들어 그리고 일 실시예에서, 프로세스(32_150)는, 질의 완성 "마이클 잭슨이 누구지?"에 대한 "사람", "아티스트", 또는 다른 유형의 특성화를 반환할 수 있다. 매칭이 없는 경우, 프로세스(32_1500)는 특성화 없음을 반환한다.
도 32p은 다수의 검색 도메인들로부터 질의 완성들을 결정하기 위한 완성 모듈(32_1600)의 일 실시예의 블록도이다. 일 실시예에서, 완성 모듈(32_1600)은 질의 프리픽스 수신 모듈(32_1602), 프리픽스 전송 모듈(32_1604), 완성 수신 모듈(32_1606), 완성 순위 매김 및 필터링 모듈(32_1608), 및 완성 전송 모듈(32_1610)을 포함한다. 일 실시예에서, 질의 프리픽스 수신 모듈(32_1602)은 상기의 도 32f의 블록(32_602)에서 기술된 바와 같이 질의 프리픽스들을 수신한다. 프리픽스 전송 모듈(32_1604)은 상기의 도 32f의 블록(32_604)에서 기술된 바와 같이 질의 프리픽스들을 상이한 검색 도메인들로 전송한다. 완성 수신 모듈(32_1606)은 상기의 도 32f의 블록(32_606)에서 기술된 바와 같이 질의 완성을 수신한다. 완성 순위 매김 및 필터링 모듈(32_1608)은 상기의 도 32f의 블록(32_608)에서 기술된 바와 같이 수신된 질의 완성들의 순위를 매기고 그를 필터링한다. 완성 전송 모듈(32_1610)은 상기의 도 32f의 블록(32_610)에서 기술된 바와 같이 질의 완성들을 관련 결과 모듈로 전송한다.
도 32q은 결정된 질의 완성으로부터 다수의 검색 도메인들에 걸쳐 관련 결과들을 결정하기 위한 결과 모듈(32_1700)의 일 실시예의 블록도이다. 일 실시예에서, 결과 모듈(32_1700)은 질의 완성 수신 모듈(32_1702), 완성 전송 모듈(32_1704), 질의 결과 수신 모듈(32_1706), 순위 매김 및 필터링 모듈(32_1708), 및 결과 반환 모듈(32_1710)을 포함한다. 일 실시예에서, 질의 완성 수신 모듈(32_1702)은 상기의 도 32g의 블록(32_702)에서 기술된 바와 같이 질의 완성들을 수신한다. 완성 전송 모듈(32_1704)은 상기의 도 32g의 블록(32_704)에서 기술된 바와 같이 완성들을 다수의 검색 도메인들로 전송한다. 질의 결과 수신 모듈(32_1706)은 상기의 도 32g의 블록(32_706)에서 기술된 바와 같이 다수의 검색 도메인들로부터 질의 결과들을 수신한다. 순위 매김 및 필터링 모듈(32_1708)은 상기의 도 32g의 블록(32_708)에서 기술된 바와 같이 질의 결과들의 순위를 매기고 그를 필터링한다. 결과 반환 모듈(32_1710)은 상기의 도 32g의 블록(32_710)에서 기술된 바와 같이 질의 결과들을 반환한다.
도 32r은 사용자 검색 세션 동안 사용자 피드백을 수집하기 위한 피드백 수집 모듈(32_838)의 일 실시예의 블록도이다. 일 실시예에서, 피드백 수집 모듈(32_838)은 렌더 이벤트 검출 모듈(32_1802), 이벤트 기록 모듈(32_1804), 피드백 패키지 생성 모듈(32_1806), 및 피드백 전송 모듈(32_1808)을 포함한다. 일 실시예에서, 초기 이벤트 검출 모듈(32_1802)은 상기의 도 32j의 블록(32_1002)에서 기술된 바와 같이 초기 이벤트를 검출하여 사용자 검색 세션을 시작한다. 이벤트 기록 모듈(32_1804)은 상기의 도 32j의 블록(32_1004)에서 기술된 바와 같이 사용자 검색 세션 동안 이벤트들을 기록한다. 피드백 패키지 생성 모듈(32_1806)은 상기의 도 32j의 블록(32_1006)에서 기술된 바와 같이 피드백 패키지를 생성한다. 피드백 전송 모듈(32_1808)은 상기의 도 32j의 블록(32_1008)에서 기술된 바와 같이 피드백 패키지를 전송한다.
도 32s는 사용자 피드백을 피드백 인덱스 내에 포함시키기 위한 피드백 프로세싱 모듈(32_840)의 일 실시예의 블록도이다. 일 실시예에서, 피드백 프로세싱 모듈(32_840)은 피드백 패키지 수신 모듈(32_1902), 피드백 패키지 변환 모듈(32_1904), 및 피드백 엔트리 삽입 모듈(32_1906)을 포함한다. 일 실시예에서, 피드백 패키지 수신 모듈(32_1902)은 상기의 도 32k의 블록(32_1102)에서 기술된 바와 같이 피드백 모듈을 수신한다. 피드백 패키지 변환 모듈(32_1904)은 상기의 도 32k의 블록(32_1104)에서 기술된 바와 같이 피드백 패키지를 변환한다. 피드백 엔트리 삽입 모듈(32_1906)은 상기의 도 32k의 블록(32_1106)에서 기술된 바와 같이 피드백 인덱스 엔트리를 삽입한다.
도 32t은 사용자 피드백을 사용하여 결과 캐시를 업데이트하기 위한 질의 결과 업데이트 모듈(32_842)의 일 실시예의 블록도이다. 일 실시예에서, 결과 업데이트 캐시(32_842)는 결과 세트 수신 모듈(32_2002), 질의 구동 모듈(32_2004), 결과 세트 업데이트 모듈(32_2006), 및 업데이트된 결과 전송 모듈(32_2008)을 포함한다. 일 실시예에서, 결과 세트 수신 모듈(32_2002)은 도 32l의 블록(32_1202)에서 기술된 바와 같이 결과 세트를 수신한다. 질의 구동 모듈(32_2004)은 도 32l의 블록(32_1204)에서 기술된 바와 같이 피드백 인덱스를 사용하여 질의들을 구동한다. 결과 세트 업데이트 모듈(32_2006)은 도 32l의 블록(32_1206)에서 기술된 바와 같이 결과 세트를 업데이트한다. 업데이트된 결과 전송 모듈(32_2008)은 도 32l의 블록(32_1202)에서 기술된 바와 같이 업데이트된 결과 세트를 전송한다.
도 32u은 질의 완성에 대해 어휘 서비스를 사용하여 관련 결과들을 결정하기 위한 관련 결과 모듈(32_2100)의 일 실시예의 블록도이다. 일 실시예에서, 관련 결과 모듈(32_2100)은 완성 수신 모듈(32_2102), 완성 전송 모듈(32_2104), 어휘 완성 모듈(32_2106), 결과 수신 모듈(32_2108), 어휘 결과 수신 모듈(32_2110), 결과 순위 매김 모듈(32_2112), 및 결과 반환 모듈(32_2114)을 포함한다. 일 실시예에서, 완성 수신 모듈(32_2102)은 도 32n의 블록(32_1402)에서 기술된 바와 같이 질의 완성들을 수신한다. 완성 전송 모듈(32_2104)은 도 32n의 블록(32_1404)에서 기술된 바와 같이 질의 완성들을 다수의 검색 도메인들로 전송한다. 어휘 완성 모듈(32_2106)은 도 32n의 블록(32_1406)에서 기술된 바와 같이 질의 완성들을 어휘 서비스로 전송한다. 결과 수신 모듈(32_2108)은 도 32n의 블록(32_1408)에서 기술된 바와 같이 다수의 검색 도메인들로부터 질의 결과들을 수신한다. 어휘 결과 수신 모듈(32_2110)은 도 32n의 블록(32_1410)에서 기술된 바와 같이 어휘 서비스 특성화를 수신한다. 결과 순위 매김 모듈(32_2112)은 도 32n의 블록(32_1412)에서 기술된 바와 같이 검색 도메인 결과들의 순위를 매긴다. 결과 반환 모듈(32_2114)은 도 32n의 블록(32_1414)에서 기술된 바와 같이 순위가 매겨진 결과들을 반환한다.
도 32v는 질의 완성을 특성화하기 위한 질의 특성화 모듈(32_2200)의 일 실시예의 블록도이다. 일 실시예에서, 질의 결과 특성화 모듈(32_2200)은 완성 수신 모듈(32_2202), 완성 토큰화 모듈(32_2204), 매칭 찾기 모듈(32_2206), 및 특성화 반환 모듈(32_2208)을 포함한다. 일 실시예에서, 완성 수신 모듈(32_2202)은 상기의 도 32o의 블록(32_1502)에서 기술된 바와 같이 완성들을 수신한다. 완성 토큰화 모듈(32_2204)은 상기의 도 32o의 블록(32_1504)에서 기술된 바와 같이 완성들을 토큰화한다. 매칭 찾기 모듈(32_2206)은 상기의 도 32o의 블록(32_1506)에서 기술된 바와 같이 지식 베이스에서 토큰화된 완성에 대한 매칭을 찾는다. 특성화 반환 모듈(32_2208)은 상기의 도 32o의 블록(32_1508)에서 기술된 바와 같이 특성화를 반환한다.
일부 실시예들에서, (도 1a를 참조하여 전술된) 디바이스(100)는 이 섹션에서 기술된 기법들을 구현하기 위해 사용된다.
검색 기법에 대한 예시적인 디바이스, 방법, 및 컴퓨터 판독가능 매체
일 태양에서, 멀티-도메인 질의 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 예시적인 실시예에서, 디바이스는 사용자의 클라이언트로부터 질의 프리픽스를 수신한다. 디바이스는 추가로 복수의 별개의 검색 도메인들에 걸쳐 복수의 검색 완성들을 결정한다. 게다가, 디바이스는 대응하는 검색 도메인에 의해 결정되는 복수의 검색 완성들 각각에 대해 계산된 점수에 기초하여 복수의 검색 완성들의 순위를 매기는데, 여기서 복수의 검색 완성들 중 적어도 하나는 사용자로부터의 표시 없이 그리고 질의 프리픽스를 수신하는 것에 응답하여 복수의 검색 결과들을 생성하는 데 사용된다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 복수의 별개의 검색 도메인들에 걸쳐 질의 프리픽스를 사용하여 복수의 순위가 매겨진 완성들을 생성하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 비일시적인 기계-판독가능 매체가 제공되는데, 본 방법은, 사용자의 클라이언트로부터 질의 프리픽스를 수신하는 단계; 복수의 별개의 검색 도메인들에 걸쳐 복수의 검색 완성들을 결정하는 단계; 및 대응하는 검색 도메인에 의해 결정되는 복수의 검색 완성들 각각에 대해 계산된 점수에 기초하여 복수의 검색 완성들의 순위를 매기는 단계를 포함하고, 복수의 검색 완성들 중 적어도 하나는 사용자로부터의 표시 없이 그리고 질의 프리픽스를 수신하는 단계에 응답하여 복수의 검색 결과들을 생성하는 데 사용된다.
일부 실시예들에서, 본 방법은 복수의 검색 완료들을 필터링하는 단계를 포함한다. 일부 실시예들에서, 복수의 별개의 검색 도메인들 각각은 지도 검색 도메인, 미디어 저장소 검색 도메인, 온라인 백과사전 검색 도메인, 및 사이트 검색 도메인으로 이루어진 그룹으로부터 선택된다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성이 수신되었던 횟수의 빈도인 그 검색 완성의 원시 점수이다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성 원시 점수 및 이 검색 완성을 프리픽스로서 사용하는 가능한 다른 검색 완성들의 수에 기초하는 그 검색 완성에 대한 로컬 점수이다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성 원시 점수 및 검색 도메인에서의 가능한 다른 검색 완성들의 수에 기초하는 그 검색 완성에 대한 글로벌 점수이다. 일부 실시예들에서, 질의 프리픽스는 입력 문자열 및 컨텍스트를 포함하고, 입력 문자열은 사용자에 의해 입력된다. 일부 실시예들에서, 컨텍스트는 위치, 디바이스 유형, 애플리케이션 식별자, 및 로케일을 포함한다.
일부 실시예들에서, 복수의 별개의 검색 도메인들에 걸쳐 질의 프리픽스를 사용하여 복수의 순위가 매겨진 완성들을 생성하기 위한 방법이 제공되는데, 본 방법은, 사용자의 클라이언트로부터 질의 프리픽스를 수신하는 단계; 복수의 별개의 검색 도메인들에 걸쳐 복수의 검색 완성들을 결정하는 단계; 및 대응하는 검색 도메인에 의해 결정되는 복수의 검색 완성들 각각에 대해 계산된 점수에 기초하여 복수의 검색 완성들의 순위를 매기는 단계를 포함하고, 복수의 검색 완성들 중 적어도 하나는 사용자로부터의 표시 없이 그리고 질의 프리픽스를 수신하는 단계에 응답하여 복수의 검색 결과들을 생성하는 데 사용된다. 일부 실시예들에서, 본 방법은 복수의 검색 완료들을 필터링하는 단계를 포함한다. 일부 실시예들에서, 복수의 별개의 검색 도메인들 각각은 지도 검색 도메인, 미디어 저장소 검색 도메인, 온라인 백과사전 검색 도메인, 및 사이트 검색 도메인으로 이루어진 그룹으로부터 선택된다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성이 수신되었던 횟수의 빈도인 그 검색 완성의 원시 점수이다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성 원시 점수 및 이 검색 완성을 프리픽스로서 사용하는 가능한 다른 검색 완성들의 수에 기초하는 그 검색 완성에 대한 로컬 점수이다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성 원시 점수 및 검색 도메인에서의 가능한 다른 검색 완성들의 수에 기초하는 그 검색 완성에 대한 글로벌 점수이다. 일부 실시예들에서, 질의 프리픽스는 입력 문자열 및 컨텍스트를 포함하고, 입력 문자열은 사용자에 의해 입력된다. 일부 실시예들에서, 컨텍스트는 위치, 디바이스 유형, 애플리케이션 식별자, 및 로케일을 포함한다.
일부 실시예들에서, 복수의 별개의 검색 도메인들에 걸쳐 질의 프리픽스를 사용하여 복수의 순위가 매겨진 완성들을 생성하기 위한 디바이스가 제공되는데, 디바이스는, 프로세서; 버스를 통해 프로세서에 결합된 메모리; 및 프로세서에 의해 메모리로부터 실행되는 프로세스를 포함하고, 프로세스는, 프로세서로 하여금, 사용자의 클라이언트로부터 질의 프리픽스를 수신하게 하고, 복수의 별개의 검색 도메인들에 걸쳐 복수의 검색 완성들을 결정하게 하고, 대응하는 검색 도메인에 의해 결정되는 복수의 검색 완성들 각각에 대해 계산된 점수에 기초하여 복수의 검색 완성들의 순위를 매기게 하고, 복수의 검색 완성들 중 적어도 하나는 사용자로부터의 표시 없이 그리고 질의 프리픽스를 수신하는 것에 응답하여 복수의 검색 결과들을 생성하는 데 사용된다. 일부 실시예들에서, 프로세스는 추가로, 프로세서로 하여금 복수의 검색 완성들을 필터링하게 한다. 일부 실시예들에서, 복수의 별개의 검색 도메인들 각각은 지도 검색 도메인, 미디어 저장소 검색 도메인, 온라인 백과사전 검색 도메인, 및 사이트 검색 도메인으로 이루어진 그룹으로부터 선택된다. 일부 실시예들에서, 복수의 검색 완성들 중 하나의 검색 완성에 대한 점수는, 이 검색 완성이 수신되었던 횟수의 빈도인 그 검색 완성의 원시 점수이다.
다른 태양에서, 사용자의 검색 세션으로부터의 피드백을 사용하여 결과 캐시를 생성하는 방법 및 장치가 제공된다. 이 실시예에서, 디바이스는 클라이언트로부터 피드백 패키지를 수신하는데, 여기서 피드백 패키지는 사용자에 의해 입력된 질의 프리픽스에 응답하여 사용자에게 제시되는 검색 세션에서의 복수의 질의 결과들과의 사용자 상호작용을 특성화한다. 디바이스는 추가로, 복수의 결과들에 도달하기 위해 검색 피드백 인덱스를 사용하여 복수의 질의들을 구동함으로써 복수의 질의들에 대한 복수의 결과들을 생성한다. 또한, 디바이스는 복수의 결과들로부터 결과 캐시를 생성하는데, 여기서 결과 캐시는 복수의 결과들을 복수의 질의들에 맵핑시키고, 결과 캐시는 질의 결과들을 클라이언트에게 제공하는 데 사용된다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 검색 세션으로부터의 피드백을 사용하여 결과 캐시를 생성하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 비일시적인 기계-판독가능 매체가 제공되는데, 본 방법은, 클라이언트로부터 피드백 패키지를 수신하는 단계 - 피드백 패키지는 사용자에 의해 입력된 질의 프리픽스에 응답하여 사용자에게 제시되는 검색 세션에서의 복수의 질의 결과들과의 사용자 상호작용을 특성화함 -; 피드백 패키지를 사용하여 검색 피드백 인덱스 내에 엔트리를 추가하는 단계; 복수의 결과들에 도달하기 위해 검색 피드백 인덱스를 사용하여 복수의 질의들을 구동함으로써 복수의 질의들에 대한 복수의 결과들을 생성하는 단계; 및 복수의 결과들로부터 결과 캐시를 생성하는 단계를 포함하고, 결과 캐시는 복수의 결과들을 복수의 질의들에 맵핑시키고, 결과 캐시는 질의 결과들을 클라이언트에게 제공하는 데 사용된다. 일부 실시예들에서, 피드백 패키지는 질의 프리픽스, 복수의 질의 결과들, 및 사용자 상호작용 동안 기록된 복수의 이벤트들을 포함한다. 일부 실시예들에서, 복수의 이벤트들은 렌더 이벤트를 포함하는데, 렌더 이벤트는 질의 프리픽스로부터의 결과들이 사용자에게 디스플레이되는 이벤트이다. 일부 실시예들에서, 복수의 이벤트들은 질의 결과들 중 하나의 질의 결과에 대한 관여 이벤트를 포함하는데, 관여 이벤트는 사용자가 그 질의 결과에 관여하였음을 나타내는 이벤트이다. 일부 실시예들에서, 그 질의 결과에 대한 관여 이벤트는 질의 결과에 대한 링크의 클릭이다. 일부 실시예들에서, 복수의 이벤트들은 질의 결과들 중 하나의 질의 결과에 대한 포기 이벤트를 포함하는데, 포기 이벤트는 사용자가 그 질의 결과를 포기하였음을 나타내는 이벤트이다. 일부 실시예들에서, 결과 캐시는 질의 요청들에 대해 질의 결과들을 반환하기 위해 클라이언트들에 의해 사용되는 캐시이다. 일부 실시예들에서, 피드백 인덱스 엔트리는 질의 프리픽스, 질의 프리픽스에 대한 결과, 및 그 결과에 대한 이벤트들의 세트를 포함한다.
일부 실시예들에서, 검색 세션으로부터의 피드백을 사용하여 결과 캐시를 생성하기 위한 방법이 제공되는데, 본 방법은, 클라이언트로부터 피드백 패키지를 수신하는 단계 - 피드백 패키지는 사용자에 의해 입력된 질의 프리픽스에 응답하여 사용자에게 제시되는 검색 세션에서의 복수의 질의 결과들과의 사용자 상호작용을 특성화함 -; 피드백 패키지를 사용하여 검색 피드백 인덱스 내에 엔트리를 추가하는 단계; 복수의 결과들에 도달하기 위해 검색 피드백 인덱스를 사용하여 복수의 질의들을 구동함으로써 복수의 질의들에 대한 복수의 결과들을 생성하는 단계; 및 복수의 결과들로부터 결과 캐시를 생성하는 단계를 포함하고, 결과 캐시는 복수의 결과들을 복수의 질의들에 맵핑시키고, 결과 캐시는 질의 결과들을 클라이언트에게 제공하는 데 사용된다. 일부 실시예들에서, 피드백 패키지는 질의 프리픽스, 복수의 질의 결과들, 및 사용자 상호작용 동안 기록된 복수의 이벤트들을 포함한다. 일부 실시예들에서, 복수의 이벤트들은 렌더 이벤트를 포함하는데, 렌더 이벤트는 질의 프리픽스로부터의 결과들이 사용자에게 디스플레이되는 이벤트이다. 일부 실시예들에서, 복수의 이벤트들은 질의 결과들 중 하나의 질의 결과에 대한 관여 이벤트를 포함하는데, 관여 이벤트는 사용자가 그 질의 결과에 관여하였음을 나타내는 이벤트이다. 일부 실시예들에서, 그 질의 결과에 대한 관여 이벤트는 질의 결과에 대한 링크의 클릭이다. 일부 실시예들에서, 복수의 이벤트들은 질의 결과들 중 하나의 질의 결과에 대한 포기 이벤트를 포함하는데, 포기 이벤트는 사용자가 그 질의 결과를 포기하였음을 나타내는 이벤트이다. 일부 실시예들에서, 결과 캐시는 질의 요청들에 대해 질의 결과들을 반환하기 위해 클라이언트들에 의해 사용되는 캐시이다. 일부 실시예들에서, 피드백 인덱스 엔트리는 질의 프리픽스, 질의 프리픽스에 대한 결과, 및 그 결과에 대한 이벤트들의 세트를 포함한다.
일부 실시예들에서, 검색 세션으로부터의 피드백을 사용하여 결과 캐시를 생성하기 위한 디바이스가 제공되는데, 디바이스는, 프로세서; 버스를 통해 프로세서에 결합된 메모리; 및 프로세서에 의해 메모리로부터 실행되는 프로세스를 포함하고, 프로세스는, 프로세서로 하여금, 피드백 패키지를 사용하여 검색 피드백 인덱스 내에 엔트리를 추가하게 하고, 복수의 결과들에 도달하기 위해 검색 피드백 인덱스를 사용하여 복수의 질의들을 구동함으로써 복수의 질의들에 대한 복수의 결과들을 생성하게 하고; 복수의 결과들로부터 결과 캐시를 생성하게 하고, 결과 캐시는 복수의 결과들을 복수의 질의들에 맵핑시키고, 결과 캐시는 질의 결과들을 클라이언트에게 제공하는 데 사용된다. 일부 실시예들에서, 피드백 패키지는 질의 프리픽스, 복수의 질의 결과들, 및 사용자 상호작용 동안 기록된 복수의 이벤트들을 포함한다. 일부 실시예들에서, 복수의 이벤트들은 렌더 이벤트를 포함하는데, 렌더 이벤트는 질의 프리픽스로부터의 결과들이 사용자에게 디스플레이되는 이벤트이다. 일부 실시예들에서, 복수의 이벤트들은 질의 결과들 중 하나의 질의 결과에 대한 관여 이벤트를 포함하는데, 관여 이벤트는 사용자가 그 질의 결과에 관여하였음을 나타내는 이벤트이다.
또 하나의 추가 태양에서, 복수의 별개의 검색 도메인들에 걸쳐 질의로부터 복수의 순위가 매겨진 질의 결과들을 생성하는 방법 및 장치가 제공된다. 이 실시예에서, 디바이스는 질의를 수신하고, 질의를 사용하여 복수의 별개의 검색 도메인들에 걸쳐 복수의 결과들을 결정한다. 디바이스는 추가로 질의를 특성화한다. 또한, 디바이스는 대응하는 검색 도메인에 의해 결정되는 복수의 결과들 각각에 대해 계산된 점수 및 질의 특성화에 기초하여 복수의 결과들의 순위를 매기는데, 여기서 질의 특성화는 질의 유형을 나타낸다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 복수의 별개의 검색 도메인들에 걸쳐 질의로부터 복수의 순위가 매겨진 질의 결과들을 생성하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 비일시적인 기계-판독가능 매체가 제공되는데, 본 방법은, 질의를 수신하는 단계; 질의를 사용하여 복수의 별개의 검색 도메인들에 걸쳐 복수의 결과들을 결정하는 단계; 질의를 특성화하는 단계; 대응하는 검색 도메인에 의해 결정되는 복수의 결과들 각각에 대해 계산된 점수 및 질의 특성화에 기초하여 복수의 질의 결과들의 순위를 매기는 단계를 포함하고, 질의 특성화는 질의 유형을 나타낸다. 일부 실시예들에서, 질의 유형은 사람, 장소, 및 물건의 그룹으로부터 선택된다. 일부 실시예들에서, 본 방법은 복수의 검색 결과들을 필터링하는 단계를 포함한다. 일부 실시예들에서, 복수의 별개의 검색 도메인들 각각은 지도 검색 도메인, 미디어 저장소 검색 도메인, 온라인 백과사전 검색 도메인, 및 사이트 검색 도메인으로 이루어진 그룹으로부터 선택된다. 일부 실시예들에서, 질의를 특성화하는 단계는, 질의를 토큰화하는 단계; 및 지식 베이스에서 토큰화된 질의에 대한 매칭을 찾는 단계를 포함한다. 일부 실시예들에서, 매칭을 찾는 단계는, 질의 내의 토큰들 중에서 가장 긴 매칭을 찾는 단계를 포함한다. 일부 실시예들에서, 질의를 토큰화하는 단계는 질의를 토큰들로 분리시키는 단계를 포함한다. 일부 실시예들에서, 토큰은 단어 및 문구로 이루어진 그룹에 대해 선택된다. 일부 실시예들에서, 질의는, 어느 질의 완성을 사용할지에 대한 사용자로부터의 표시 없이 질의 프리픽스로부터 완성되는 질의 완성이다.
일부 실시예들에서, 복수의 별개의 검색 도메인들에 걸쳐 질의로부터 복수의 순위가 매겨진 질의 결과들을 생성하기 위한 방법이 제공되는데, 본 방법은, 질의를 수신하는 단계; 질의를 사용하여 복수의 별개의 검색 도메인들에 걸쳐 복수의 결과들을 결정하는 단계; 질의를 특성화하는 단계; 대응하는 검색 도메인에 의해 결정되는 복수의 결과들 각각에 대해 계산된 점수 및 질의 특성화에 기초하여 복수의 질의 결과들의 순위를 매기는 단계를 포함하고, 질의 특성화는 질의 유형을 나타낸다. 일부 실시예들에서, 질의 유형은 사람, 장소, 및 물건의 그룹으로부터 선택된다. 일부 실시예들에서, 본 방법은 복수의 검색 결과들을 필터링하는 단계를 포함한다. 일부 실시예들에서, 복수의 별개의 검색 도메인들 각각은 지도 검색 도메인, 미디어 저장소 검색 도메인, 온라인 백과사전 검색 도메인, 및 사이트 검색 도메인으로 이루어진 그룹으로부터 선택된다. 일부 실시예들에서, 질의를 특성화하는 단계는, 질의를 토큰화하는 단계; 및 지식 베이스에서 토큰화된 질의에 대한 매칭을 찾는 단계를 포함한다. 일부 실시예들에서, 매칭을 찾는 단계는, 질의 내의 토큰들 중에서 가장 긴 매칭을 찾는 단계를 포함한다. 일부 실시예들에서, 질의를 토큰화하는 단계는 질의를 토큰들로 분리시키는 단계를 포함한다. 일부 실시예들에서, 질의는, 어느 질의 완성을 사용할지에 대한 사용자로부터의 표시 없이 질의 프리픽스로부터 완성되는 질의 완성이다.
일부 실시예들에서, 복수의 별개의 검색 도메인들에 걸쳐 질의로부터 복수의 순위가 매겨진 질의 결과들을 생성하기 위한 디바이스가 제공되는데, 디바이스는, 프로세서; 버스를 통해 프로세서에 결합된 메모리; 및 프로세서에 의해 메모리로부터 실행되는 프로세스를 포함하고, 프로세스는, 프로세서로 하여금, 질의를 수신하게 하고, 질의를 사용하여 복수의 별개의 검색 도메인들에 걸쳐 복수의 결과들을 결정하게 하고, 질의를 특성화하게 하고, 대응하는 검색 도메인에 의해 결정되는 복수의 결과들 각각에 대해 계산된 점수 및 질의 특성화에 기초하여 복수의 질의 결과들의 순위를 매기게 하고, 질의 특성화는 질의 유형을 나타낸다. 일부 실시예들에서, 질의 유형은 사람, 장소, 및 물건의 그룹으로부터 선택된다. 일부 실시예들에서, 프로세스는 추가로, 프로세서로 하여금 복수의 검색 결과들을 필터링하게 한다.
섹션 3: 멀티-도메인 검색 기법
이 섹션 "멀티-도메인 검색 기법"에서의 내용은, 일부 실시예들에 따른, 컴퓨팅 디바이스 상에서의 멀티-도메인 검색을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 컴퓨터 디바이스 상의 로컬 학습을 이용하여 하나 이상의 도메인들로부터 획득된 검색 결과들을 개선하는 것을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 도 4a, 도 4b, 도 5에 관련된 것들, 및 사용자 거동의 패턴들을 인식 및 사용하는 것에 관련된 다른 것들을 보완한다. 일부 실시예들에서, 이 섹션에서의 상세사항들은 (예컨대, 방법들(600, 800, 1000, 및 1200)을 참조하여 상기 논의된 바와 같이) 검색 인터페이스에서 제시되는 검색 결과들을 개선하는 것을 돕기 위해 사용된다.
멀티-도메인 검색 기법에 대한 간략한 개요
사용자의 컴퓨팅 디바이스 상에서 국부적으로 학습되는 질의 및 결과 특징부들을 이용하여, 하나 이상의 검색 도메인들로부터 반환되는 결과들 및 사적인 정보의 로컬 데이터베이스로부터 사용자에게 반환되는 검색 결과들을 개선하기 위한 실시예들이 설명된다. 일 실시예에서, 하나 이상의 검색 도메인들은, 컴퓨팅 디바이스가 로컬 학습을 적용할 수 있는, 검색 질의에 관련된 하나 이상의 특징부들을 컴퓨팅 디바이스에게 알려줄 수 있다.
일 실시예에서, 컴퓨팅 디바이스는, 컴퓨팅 디바이스로부터 획득된 정보를 사용하여 검색 질의에 관련된 하나 이상의 특징부들을 학습시킬 수 있다. 컴퓨팅 디바이스로부터 그리고 그에 의해 획득된 정보는, 컴퓨팅 디바이스 상에서 국부적으로 사용되어, 기계 학습 알고리즘을 훈련시켜, 검색 질의에 관련된 특징부 또는 검색 질의로부터 반환되는 결과들에 관련된 특징부를 학습시킬 수 있다. 특징부는, 디바이스의 사용자의 프라이버시를 침해하지 않고서, 질의에 대한 더 관련있는 개인맞춤화된 결과들을 반환하기 위해 원격 검색 엔진으로 전송될 수 있다. 일 실시예에서, 특징부는 질의를 확장하기 위해 사용된다. 일 실시예에서, 특징부는 질의의 용어에 편견(bias)을 갖게 하기 위해 사용된다. 특징부는 또한 검색 질의로부터 반환되는 결과들을 필터링하기 위해 사용될 수 있다. 질의로부터 반환되는 결과들은 로컬 결과들, 원격 검색 엔진 결과들, 또는 양쪽 모두일 수 있다.
일례에서, 컴퓨팅 디바이스의 사용자는, 스포츠 점수들에 관한 일단위 정보를 컴퓨팅 디바이스에게 푸시하는, 뉴스 또는 RSS 피드에 가입할 수 있다. 뉴스 또는 RSS 피드가 가입 사용자에 대해 알고 있는 유일한 정보는 사용자가 스포츠 점수들에 관심이 있다는 것이다. 사용자는, 컴퓨팅 디바이스 상의 로컬 질의 인터페이스를 사용하여 "풋볼 점수들"에 대해, RSS 피드로부터, 컴퓨팅 디바이스에 의해 수신된 정보를 질의할 수 있다. 미국 사용자에게,
풋볼은, 예를 들어 댈러스 카우보이스(Dallas Cowboys)가 경기하는 바와 같은 아메리칸 풋볼을 의미한다. 유럽 또는 남미 사용자에게, 풋볼은 종종 미국인들이 축구라고 부르는 것을 지칭한다. 따라서, 질의 용어 "풋볼"과 관련하여, "축구" 대 "풋볼"의 구별은, 컴퓨팅 디바이스가 훈련받을 수 있는 검색 질의에 관련된 특징부일 수 있다. 컴퓨팅 디바이스의 사용자가 축구 점수들에 대한 로컬 결과들과 상호작용하는 경우, 뉴스 또는 RSS 피드에 대한 로컬 예측자는, 이 디바이스의 사용자가 풋볼 점수들에 대해 질의할 때, 이 사용자가 축구 점수들을 의미한다는 것을 학습할 수 있다.
일 실시예에서, 원격 검색 엔진은 특징부 "풋볼 대 축구"를 학습할 수 있다. 그러나, 원격 검색 엔진은 아메리칸 풋볼과 축구 사이에 명확한 구별이 존재함을 학습할 수 있지만, 원격 검색 엔진은, 풋볼 점수들에 대해 질의하는 특정 사용자가 아메리칸 풋볼에 관한 결과들에 관심이 있는지 또는 축구에 관한 결과들에 관심이 있는지 여부를 알지 못한다. 일단 원격 검색 엔진이 그 구별에 대해 학습하면, 다음에 원격 검색 서비스가 풋볼 점수들에 관한 질의를 수신할 때, 원격 검색 엔진은 아메리칸 풋볼 점수들 및 축구 점수들 양쪽 모두를 반환할 수 있고, 또한, 컴퓨팅 디바이스의 특정 사용자가 아메리칸 풋볼 점수들에 관심이 있는지 또는 축구 점수들에 관심이 있는지 여부를 질의하는 컴퓨팅 디바이스가 학습할 수 있게 훈련되도록 컴퓨팅 디바이스로 특징부를 전송할 수 있다.
일 실시예에서, 로컬 클라이언트가 컴퓨팅 디바이스에 대해 사적인 정보를 이용하여 특징부에 대해 학습한 후에, 다음에 컴퓨팅 디바이스의 사용자가 풋볼 점수들에 대해 원격 검색 서비스에 질의할 때,
컴퓨팅 디바이스는 질의와 함께 특징부에 대한 편견을 원격 검색 서비스로 전송할 수 있다. 예를 들어, 편견은 이 특정 사용자가 아메리칸 풋볼에 관심이 있는지 또는 축구에 관심이 있는지 여부를 나타낼 수 있다.
일 실시예에서, 컴퓨팅 디바이스는 선형 회귀(linear regression), 베이즈(Bayes) 분류, 또는 나이브 베이즈(Naive Bayes) 분류 중 하나의 통계 분석 방법을 사용하여 특징부에 대해 학습할 수 있다.
일부 실시예들은, 호출 프로그램 코드가 하나 이상의 인터페이스들을 통해 호출되고 있는 다른 프로그램 코드와 상호작용하는 환경에서의 하나 이상의 API들을 포함한다. 다양한 종류의 파라미터들을 추가로 포함할 수 있는, 다양한 함수 호출들, 메시지들 또는 다른 유형의 호출들이, 호출 프로그램과 호출되고 있는 코드 사이에서 API들을 통해 전송될 수 있다. 또한, API는 호출 프로그램 코드에게, 호출된 프로그램 코드에서 구현되고 API에서 정의되는 데이터 유형들 또는 클래스들을 사용하는 능력을 제공할 수 있다.
적어도 소정의 실시예들은, 호출 소프트웨어 컴포넌트가 APL을 통해 호출된 소프트웨어 컴포넌트와 상호작용하는 환경을 포함한다. 이 환경에서 API를 통해 동작하기 위한 방법은 APL을 통해 하나 이상의 함수 호출들, 메시지들, 다른 유형의 호출들 또는 파라미터들을 전송하는 단계를 포함한다.
다른 특징들 및 이점들이 첨부 도면으로부터 그리고 상세한 설명으로부터 명백해질 것이다.
멀티-도메인 검색 기법에 대한 상세한 설명
실시예들의 다음의 상세한 설명에서, 유사한 도면 부호들이 유사한 요소들을 나타내고, 특정 실시예들이 실시될 수 있는 방식들이 예시로서 도시되는 첨부 도면들이 참조된다. 이들 실시예들은 당업자들이 본 발명을 실시할 수 있게 하기 위해 충분히 상세히 기술되고, 다른 실시예들이 이용될 수 있다는 것과 본 발명의 범주로부터 벗어나지 않고서 논리적, 기계적, 전기적, 기능적 및 다른 변경들이 행해질 수 있다는 것을 잘 알 것이다. 따라서, 다음의 상세한 설명은 제한적인 의미로 취해지지 않고, 본 발명의 범주는 첨부된 청구범위에 의해서만 정의된다.
사용자에 관한 사적인 정보를 원격 검색 엔진에게 공개하지 않고서, 컴퓨팅 디바이스 상에서 국부적으로 이용가능한 정보를 사용하여 컴퓨팅 디바이스의 사용자에 대한 로컬 및 원격 검색 결과들 양쪽 모두를 개선하는 질의 및 결과 특징부들을 학습시키기 위한 실시예들이 설명된다.
도 33a은 종래 기술에 알려져 있는 바와 같은, 컴퓨팅 디바이스(33_100) 상의 로컬 검색 서브시스템(33_130) 및 원격 검색 서브시스템(33_135)의 블록도를 예시한다. 로컬 검색 서브시스템(33_130)은 검색가능한 정보의 로컬 데이터베이스(33_111)와 통신 상태에 있는 로컬 검색 인터페이스(33_110)를 포함할 수 있다.
로컬 데이터베이스(33_111)는 로컬 검색 인터페이스(33_110)를 사용하여 검색하기 위해 컴퓨팅 디바이스(33_100) 상에서 로컬 정보를 인덱싱한다. 로컬 정보는 컴퓨팅 디바이스(33_100)에 대해 사적이고, 원격 검색 서브시스템(33_135)과 공유되지 않는다. 로컬 정보는 컴퓨팅 디바이스(33_100) 상의 데이터(33_113) 및 애플리케이션들(33_112)에 관한 데이터, 메타데이터, 및 다른 정보를 포함할 수 있다.
로컬 데이터베이스(33_111), 애플리케이션들(33_112) 및 데이터(33_113)는 원격 검색 서브시스템(33_135)에 의해 액세스가능하지 않다. 로컬 검색 인터페이스(33_110)에 입력된 질의들, 로컬 질의로부터 반환된 로컬 결과들, 및 로컬 질의로부터 반환된 로컬 결과들과의 사용자의 상호작용은, 원격 검색 서브시스템(33_135)과 공유되지 않거나, 또는 그에 의해 액세스가능하지 않다.
로컬 검색 인터페이스(33_110)는 통신 인터페이스(33_1)를 통해 로컬 데이터베이스(33_111)와 통신할 수 있다. 로컬 데이터베이스는 통신 인터페이스(33_3)를 통해 애플리케이션들(33_112) 및 데이터(33_113)와 통신할 수 있다.
원격 검색 서브시스템(33_135)은 원격 검색 인터페이스(33_120) 및 원격 질의 서비스(33_121)를 포함할 수 있다. 원격 질의 서비스(33_121)는, 네트워크 서비스(33_122) 및 네트워크(33_140)를 통해 원격 검색 엔진(33_150)으로 질의를 전송하고 그로부터 결과들을 반환할 수 있다. 원격 결과들은 로컬 검색 서브시스템(33_130)에서 이용가능하게 되지 않는다.
원격 검색 인터페이스(33_120)는 인터페이스 2를 통해 원격 질의 서비스(33_121)와 통신할 수 있다. 원격 질의 서비스(33_121)는 인터페이스 4를 통해 네트워크 서비스(33_122)와 통신할 수 있다.
도 33b는 사적인 정보를 노출시키지 않고서, 원격 검색 엔진(33_150)의 검색들 및 로컬 검색들 양쪽 모두로부터 반환된 검색 결과들을 개선하기 위해 사용될 수 있는 로컬 학습 시스템(33_116)을 갖는 로컬 검색 서브시스템(33_130)을 블록도 형태로 예시한다. 일 실시예에서, 로컬 학습 시스템(33_116)은 학습이 플러시(flush)되도록 리셋될 수 있다.
로컬 검색 서브시스템(33_130)은 컴퓨팅 디바이스(33_100) 상의 데이터(33_113) 및 애플리케이션들(33_112)에 관한 데이터 및 메타데이터의 로컬 데이터베이스(33_111) 및 로컬 검색 인터페이스(33_110)를 포함할 수 있다. 로컬 데이터베이스(33_111)는, 클라이언트 상에 저장된 연락처 데이터베이스, 컴퓨팅 디바이스 상에 저장된 문서들의 제목들 또는 문서들 내의 단어들, 컴퓨팅 디바이스 상의 애플리케이션들의 제목들 및 애플리케이션들과 연관된 데이터 및 메타데이터와 같은 데이터 소스들에 관한 로컬 정보, 예컨대, 이메일들, 인스턴트 메시지들, 스프레드시트들, 프리젠테이션들, 데이터베이스들, 음악 파일들, 사진들, 영화들, 및 컴퓨팅 디바이스에 대해 국부적인 다른 데이터를 포함할 수 있다. 일 실시예에서, 로컬 데이터베이스(33_111)는 사용자의 클라우드 저장소에 저장된 데이터 소스들에 관한 정보를 포함할 수 있다. 애플리케이션들(33_112)은 계산기 프로그램, 사전, 메시징 프로그램, 이메일 애플리케이션, 캘린더, 전화, 카메라, 워드 프로세서, 스프레드시트 애플리케이션, 프리젠테이션 애플리케이션, 연락처 관리 애플리케이션, 지도 애플리케이션, 음악, 비디오, 또는 미디어 재생기, 로컬 및 원격 검색 애플리케이션들, 및 다른 소프트웨어 애플리케이션들을 포함할 수 있다.
로컬 검색 인터페이스(33_110)를 사용하여 질의가 생성될 수 있고, 질의 결과들이 로컬 데이터베이스(33_111)로부터, 통신 인터페이스(33_1)를 통해 반환되고 로컬 검색 인터페이스(33_110)에 디스플레이될 수 있다. 로컬 검색 서브시스템(33_130)은 추가적으로 로컬 질의 서비스(33_114), 로컬 검색 및 피드백 이력(33_115), 및 로컬 학습 시스템(33_116)을 가질 수 있다. 로컬 질의 서비스(33_114)는 로컬 검색 인터페이스(33_110)로부터 질의를 수신할 수 있다. 일 실시예에서, 로컬 검색 인터페이스(33_110)는 또한 통신 인터페이스(33_7)를 통해, 원격 질의 서버(33_121)로 질의를 전달하여, 로컬 검색 인터페이스(33_110)가 로컬 데이터베이스(33_111) 및 원격 검색 엔진(33_150) 양쪽 모두로부터 검색 결과들을 수신하도록 할 수 있다. 로컬 질의 서비스(33_114)는 여분의 공백을 제거하고, "the" 및 "a"와 같은 높은 빈도의 관련성이 낮은 질의 용어들을 제거하고, 질의를 로컬 데이터베이스(33_111)에 의해 사용가능한 형태로 패키징할 수 있다. 원격 질의 서비스(33_121)는 원격 검색 엔진(33_150)에 대해 유사한 기능을 수행할 수 있다. 일 실시예에서, 로컬 검색 인터페이스(33_110)는 통신 인터페이스(33_7)를 통해 원격 질의 서비스(33_121)로 질의를 전달하여, 원격 검색 엔진(33_150)으로부터 질의 결과들을 획득할 수 있다. 일 실시예에서, 원격 질의 서비스(33_121)는 통신 인터페이스(33_8)를 통해 로컬 학습 시스템(33_116)에 의해 학습된 질의 특징부를 수신할 수 있다. 특징부를 사용하여 질의를 확장하고/하거나 질의 특징부가 원격 검색 엔진(33_150)에 편견을 갖게 할 수 있다. 일 실시예에서, 원격 질의 서비스(33_121)는 원격 검색 엔진(33_150)으로부터 반환된 질의 특징부를, 통신 인터페이스(33_8)를 통해 그 특징부를 훈련시키기 위해 로컬 학습 시스템(33_116)으로 전달할 수 있다.
로컬 검색 및 피드백 이력(33_115)은, 통신 인터페이스(33_7)를 통해 원격 질의 서비스(33_121)로 전송되는 질의들을 비롯한, 로컬 질의 인터페이스(33_110)를 사용하여 발행된 모든 검색 질의들의 이력을 저장할 수 있다. 로컬 검색 및 피드백 이력(33_115)은 또한, 질의로부터 반환된 로컬 및 원격 결과들 양쪽 모두와 연관된 사용자 피드백을 저장할 수 있다. 피드백은, 사용자가, 예컨대 결과를 클릭함으로써 결과에 관여하였는지 여부, 사용자가 결과를 보는 데 얼마나 많은 시간을 소비했는지, 결과가 사용자가 상호작용한 제1 결과였는지 또는 다른 서수 값이였는지 여부, 결과가 사용자가 상호작용한 유일한 결과였는지 여부, 및 사용자가 결과와 상호작용하지 않았는지, 즉 결과를 포기하였는지 여부의 표시를 포함할 수 있다. 사용자 피드백은, 피드백이 획득되었던 결과들을 생성한 질의와 관련하여 인코딩 및 저장될 수 있다. 일 실시예에서, 로컬 검색 및 피드백 이력(33_115)은 질의에 의해 반환된 결과들 중 하나 이상의 결과들에 대한 참조를 저장할 수 있다. 로컬 검색 및 피드백 이력(33_115)에 저장된 정보는 사적인 사용자 정보로 간주되고, 원격 검색 서브시스템(33_135)에서 이용가능하지 않거나 또는 그에 의해 액세스가능하지 않다. 일 실시예에서, 로컬 검색 및 피드백 이력(33_115)은 플러시될 수 있다. 일 실시예에서, 로컬 검색 및 피드백 이력(33_115)은 에이지-아웃(age-out)될 수 있다. 에이지-아웃 타이밍은, 안정된 장기 트렌드들이 안정된 트렌드를 보이지 않는 검색 및 피드백 이력보다 더 오래 유지되도록 분석될 수 있다.
로컬 학습 시스템(33_116)은 로컬 검색 및 피드백 이력(33_115)을 분석하여, 로컬 학습 시스템(33_116)이 훈련시킬 수 있는 특징부들을 식별할 수 있다. 일단 특징부가 식별되면, 로컬 학습 시스템(33_116)은 로컬 예측자를 생성하여 특징부를 훈련시킬 수 있다. 일 실시예에서, 예측자는 하나 이상의 데이터 단편 상에서 동작하는 소프트웨어 컴포넌트의 인스턴스이다. 일 실시예에서, 로컬 예측자들은 통계 분류 방법, 예컨대 회귀, 베이즈, 또는 나이브 베이즈를 사용하여 훈련할 수 있다. 일 실시예에서, 예측자는 결과들의 특정 카테고리에 특정될 수 있다. 다음의 카테고리들이 도 33d의 동작(33_420)에 관하여, 아래에서 보다 충분히 논의된다: 결과들을 블렌딩하는 것, 그의 순위를 매기는 것, 및 로컬 디바이스 상에 그를 제시하는 것.
컴퓨팅 디바이스(33_100)는 또한, 원격 검색 인터페이스(33_120) 및 원격 질의 서비스(33_121)를 포함하는 원격 검색 서브시스템(33_135)을 포함할 수 있다. 원격 검색 인터페이스(33_120)는 애플® 사파리®, 모질라(Mozilla)®, 또는 파이어폭스(Firefox)®와 같은 웹 브라우저를 포함할 수 있다. 질의 서비스(33_121)는, 질의를 네트워크 서비스(33_122)로 그리고 네트워크(33_140)를 통해 원격 검색 엔진(33_150) 상으로 전달하기 전에 질의에 대한 중개 프로세싱을 수행할 수 있다. 네트워크 서비스(33_122) 전달들은, 원격 질의 인터페이스(33_120) 상에 또는 로컬 검색 인터페이스(33_110) 상에 디스플레이를 위해 원격 검색 엔진(33_150)으로부터 다시 결과들을 수신할 수 있다. 원격 질의 서비스(33_121)는 통신 인터페이스(33_4)를 통해 네트워크 서비스(33_122)에 통신가능하게 결합될 수 있다.
네트워크(33_140)는 인터넷, 802.11 유선 또는 무선 네트워크, 셀룰러 네트워크, 근거리 네트워크, 또는 이들의 임의의 조합을 포함할 수 있다.
인터페이스들(33_1 내지 33_8)은 인터 프로세스(inter-process) 통신, 공유된 메모리, 소켓들, 또는 API를 사용하여 구현될 수 있다. API들은 도 33g을 참조하여, 아래에서 상세하게 기술된다.
도 33c은 로컬 검색 질의들, 로컬 검색 결과들, 및 로컬 검색 결과들에 기초한 로컬 피드백 및 검색 이력(33_115)을 이용하여 질의 및 결과 특징부를 국부적으로 학습하는 방법(33_300)을 블록도 형태로 예시한다.
동작(33_305)에서, 사용자는 로컬 질의 인터페이스(33_110)를 이용하여 질의를 발행할 수 있다.
동작(33_310)에서, 로컬 질의는 로컬 검색 이력 및 피드백 이력(33_115)에 저장될 수 있다.
동작(33_315)에서, 로컬 결과들이 사용자에게 디스플레이를 위해 로컬 데이터베이스(33_111)로부터 로컬 검색 인터페이스(33_110)로 반환될 수 있다. 로컬 데이터베이스(33_111)는, 하나 이상의 애플리케이션들(33_112)에 의해 생성 또는 프로세싱된 데이터 및 메타데이터(33_113), 예컨대 애플리케이션들(33_112)에 의해 생성되거나 또는 데이터(33_113)와 연관된 문서들, 이미지들, 음악, 오디오, 비디오, 계산기 결과들, 연락처들, 질의들, 파일명들, 파일 메타데이터 및 다른 데이터를 인덱싱한다. 일 실시예에서, 로컬 데이터베이스는 하나 이상의 애플리케이션들(33_112)에 대한 질의에 어떠한 로컬 결과들도 반환하지 않을 수 있다. 예를 들어, 동작(33_305)에서 "ham"에 대한 질의가 로컬 검색 인터페이스(33_110)에 입력되는 경우, 로컬 데이터베이스(33_111)는 사전 애플리케이션(33_112)으로부터, 단어 "ham"을 포함하는 문서들(33_113), 및 단어 "ham"을 갖는 연락처로부터 결과, 예컨대 "Cunningham"을 반환할 수 있지만, 계산기 애플리케이션(33_112)에 대한 결과를 반환하지 않을 수 있는데, 이는 계산기 애플리케이션이 "ham"에 관련된 데이터 또는 메타데이터(33_113)를 갖지 않기 때문이다. 그러나, 동작(33_305)에서 "파이(Pi)"에 대한 질의가 로컬 검색 인터페이스(33_110)에 입력되는 경우, 로컬 데이터베이스(33_111)는 계산기 애플리케이션(33_112)에 관련된 결과들, 예컨대 "3.141592654", 그리스 심볼 "7t", 또는 파이의 값을 이용하는 공식들, 예컨대 원의 둘레 또는 면적, 또는 구 또는 원기둥의 체적을 반환할 수 있다. 유사하게, 동작(33_305)에서 "타호 호수(Lake Tahoe) 사진들"에 대한 질의가 로컬 검색 인터페이스(33_110)에 입력되는 경우, 로컬 데이터베이스(33_111)는, 카메라 애플리케이션(33_112)에 의해 생성되었을 수 있는, 이메일 애플리케이션(33_112)으로부터 다운로드되었을 수 있는, 그리고/또는 워드 프로세싱 애플리케이션(33_112)에 의해 생성된 타호 호수의 사진들을 포함하는 문서들(33_113)로부터의 타호 호수의 사진들에 대한 결과들을 반환할 수 있다. 일 실시예에서, 로컬 결과들은, 로컬 결과들을 획득 또는 생성한 애플리케이션(33_112)에 따라 디스플레이를 위해 카테고리화될 수 있다. 예를 들어, 이메일 애플리케이션(33_112)으로부터 다운로드되었던 타호 호수의 사진들은 디스플레이를 위해 함께 카테고리화될 수 있고, 카메라 애플리케이션(33_112)에 의해 생성되었던 타호 호수의 사진들은 디스플레이를 위해 함께 카테고리화될 수 있고, 워드 프로세싱 애플리케이션(33_112)에 의해 생성된 하나 이상의 문서들 내에 포함되는 타호 호수의 사진들은 디스플레이를 위해 함께 카테고리화될 수 있다.
동작(33_320)에서, 사용자는 디스플레이된 로컬 결과들 중 하나 이상의 로컬 결과들과 상호작용할 수 있다. 결과들과의 상호작용 또는 비상호작용은 로컬 검색 및 피드백 이력(33_115) 내에 로컬 결과들에 대한 피드백으로서 저장될 수 있다.
동작(33_325)에서, 로컬 학습 시스템(33_116)은 로컬 검색 및 로컬 피드백 이력(33_115)을 분석하여 질의에 관련된 하나 이상의 특징부들을 결정할 수 있다.
동작(33_330)에서, 로컬 학습 시스템(33_116)이 새로운 특징부를 식별한 경우, 동작(33_335)에서 특징부에 대한 새로운 로컬 예측자가 생성될 수 있고 로컬 학습 시스템(33_116)은 식별된 특징부를 훈련시킬 수 있다.
동작(33_340)에서, 다음에 그 특징부가 질의와 관련이 있는 그 질의가 발행될 때, 특징부는 다음 중 하나 이상을 행하는 데 사용될 수 있다: 질의를 확장하는 것, 질의의 용어에 편견을 갖게 하는 것, 또는 질의로부터 반환된 결과들을 필터링하는 것.
도 33d는 로컬 검색 질의들과 원격 검색 질의들 양쪽 모두로부터 반환된 검색 결과들, 및 로컬 및 원격 검색 질의 결과들 양쪽 모두에 대한 로컬 피드백을 이용하여 질의 특징부를 국부적으로 학습하는 방법(33_400)을 블록도 형태로 예시한다.
동작(33_405)에서, 사용자는 로컬 검색 인터페이스(33_110)를 사용하여 질의를 발행한다. 전술된 바와 같이, 로컬 검색 인터페이스(33_110)는, 로컬 질의 서비스(33_114) 또는 원격 질의 서비스(33_121) 각각을 통해, 로컬 데이터베이스(33_111) 및 원격 검색 엔진(33_150) 중 하나 또는 양쪽 모두로 질의를 전달할 수 있다.
동작(33_410)에서, 질의는 로컬 검색 이력 및 피드백 이력(33_115)에 저장될 수 있다.
동작들(33_315, 33_415)에 도시된 바와 같이, 로컬 데이터베이스(33_111)로부터의 로컬 결과들 및 원격 검색 엔진(33_150)으로부터의 원격 결과들은 각각, 동시에 또는 비동기식으로 반환될 수 있다. 일 실시예에서, 타이머(33_417)은 타이머의 만료까지 수신되었던 결과들을 언제 디스플레이할지를 결정하기 위해 설정될 수 있다. 일 실시예에서, 타이머의 만료 이후에 추가 결과들이 수신될 수 있다. 시간 값은 컴퓨팅 디바이스(33_100) 상에서, 또는 원격 검색 엔진(33_150) 상에서, 또는 양쪽 모두 상에서 국부적으로 구성되어 로컬 및 원격 검색 결과들이 상이한 시간들에 디스플레이되도록 할 수 있다.
동작(33_420)에서, 로컬 검색 결과들 및 원격 결과들은 블렌딩되어 순위가 매겨지고, 이어서 로컬 검색 인터페이스(33_110) 상에서 사용자에게 제시될 수 있다. 일 실시예에서, 로컬 학습 시스템(33_116)이, 계산기 결과가 매우 관련이 있다고 결정하는 경우, 그것은 최고 쪽으로 순위가 매겨진다. 사용자가 계산기 애플리케이션 내로부터의 질의를 발행하였고 질의가 산출 또는 단위 변환처럼 "보이는" 경우, 계산기 결과는 매우 관련이 있을 수 있다. 일 실시예에서, 질의에 매칭되는 로컬 결과들(33_315)은 원격 검색 엔진 결과들(33_415)보다 더 높게 순위가 매겨질 수 있다. 일 실시예에서, 결과들은 이전에 학습된 특징부를 이용하여 순위가 매겨지고/지거나 필터링될 수 있다. 일 실시예에서, 로컬 결과들(33_315)은 카테고리들, 예컨대 이메일들, 연락처들, 아이튠즈, 영화들, 트윗(Tweet)들, 텍스트 메시지들, 문서들, 이미지들, 스프레드시트들 등에서 제시되고, 각각의 카테고리 내에서 순서화될 수 있다. 예를 들어, 로컬 결과들은 카테고리들 내에서 제시되고, 각각의 카테고리에서 첫째로 디스플레이되어 있는 가장 최근에 생성된, 수정된, 액세스된, 또는 본 로컬 결과들(33_315)에 의해 순서화될 수 있다. 다른 실시예에서, 카테고리들은 컨텍스트에 의해 순서화될 수 있다. 예를 들어, 사용자가 그의 음악 재생기 애플리케이션(33_112) 내로부터 로컬 질의를 발행하는 경우, 음악 재생기 애플리케이션(33_112)에 관련되는 로컬 데이터베이스(33_111)로부터 반환된 결과들은 다른 로컬 결과들보다 먼저 카테고리화되고 디스플레이될 수 있다. 또 다른 실시예에서, 카테고리들은 사용자가 카테고리로부터의 결과들과 상호작용하는 빈도에 의해 순서화될 수 있다. 예를 들어, 사용자가 이메일 결과들과 거의 상호작용하지 않는 경우, 이메일 결과들은 다른 로컬 결과들보다 더 낮게 카테고리화되고 디스플레이될 수 있다. 일 실시예에서, 로컬 카테고리들의 디스플레이 순서는 고정된다. 로컬 결과 카테고리들이 거의 변하지 않기 때문에, 이것은 사용자에 대한 용이한 식별을 가능하게 할 수 있다. 다른 실시예에서, 카테고리들은 관련성 순위에 따라 디스플레이될 수 있고, 각각의 카테고리 내의 결과들은 관련성 순위에 의해 디스플레이될 수 있다.
일 실시예에서, 원격 검색 엔진으로부터 반환된 결과들(33_415)은, 질의 용어가 결과의 제목과 동일한지 여부, 질의 용어가 결과의 제목 내에 있는지 여부, 질의 용어가 결과의 본문 내에 있는지 여부 중 적어도 하나에 기초하는, 또는 하나 이상의 질의 용어들의 용어 빈도-역 문서 빈도(term frequency-inverse document frequency)에 기초하는 점수를 포함할 수 있다. 추가적으로, 원격 검색 엔진 검색 결과들(33_415)은, 이 질의를 발행했던 다른 사용자들이 결과에 관여했는지 여부를 나타내는 질의-의존적인 관여 점수들을 가질 수 있는데, 이는 사용자들이 질의에 관련된 결과를 찾았음을 나타낸다. 결과는 또한, 다른 사용자들이 결과에 관여했는지 여부를 나타내는 질의-독립적인 관여 점수를 가질 수 있는데, 이는 다른 사용자들이 결과를 인출하는 데 사용된 질의에 상관없이 관련있는 결과를 찾았음을 의미한다. 결과는 또한 "최고-히트(top-hit)" 점수를 가질 수 있는데, 이는 결과가 결과 세트 중 최고 쪽으로 순위가 매겨져야 할 정도로 많은 사용자들이 관련이 있는 결과를 찾았음을 나타낸다. 일 실시예에서, 로컬 학습 시스템(33_116)은, 각각의 결과에 대해, 이 컴퓨팅 디바이스(33_110)의 이 사용자가 또한 관련있는 결과를 찾을 가능성이 있을 확률을 생성할 수 있다.
동작(33_425)에서, 로컬 검색 인터페이스는 사용자가 결과에 관여했는지 여부, 및 만약 관여했다면, 사용자가 얼마나 오래 결과에 관여했는지, 또는 사용자가 결과를 포기했는지 여부를 나타내는 사용자로부터의 피드백을 수신할 수 있다. 사용자 피드백은, 결과가 로컬 데이터베이스 결과인지 또는 원격 검색 엔진 결과인지 여부에 상관없이, 수집되어 로컬 검색 및 피드백 이력(33_115)에 저장될 수 있다. 질의는 또한 로컬 검색 및 피드백 이력(33_115)에 저장될 수 있다. 일 실시예에서, 질의 및 피드백 이력은 컴퓨팅 디바이스(33_100)의 특정 사용자와 연관될 수 있다. 일 실시예에서, 질의, 피드백 이력(33_115), 및 특정 사용자와의 연관성은 로컬 학습(33_116)에 의해 사용되어, 특정 사용자에 대한 소셜 그래프를 생성할 수 있다.
예를 들어, 동작(33_405)에서 특정 사용자, Bob이 "Bill" 및 "Steven"에 대해 하나 이상의 질의들을 로컬 디바이스 및 원격 검색 엔진에 발행한다고 가정한다. 예컨대, 연락처 애플리케이션(33_112)으로부터 로컬 결과들(33_315)이 수신될 수 있고, 다른 원격 결과들(33_415)뿐만 아니라, 예컨대 Bill 및 Steven으로 명명되는 사람들의 링크드인(Linkedln)® 프로파일들에 대한 원격 결과들(33_415)이 반환될 수 있다. 동작(420)에서 결과들이 블렌딩되고, 순위가 매겨지고, 사용자 Bob에게 제시된 후에, 동작(33_425)에서 로컬 결과들(33_315), 원격 결과들(33_415), 또는 양쪽 모두와의 Bob의 상호작용의 검색 질의 및 피드백 이력(33_115)이 저장될 수 있다. 이러한 저장된 검색 이력 및 피드백(33_115)으로부터, 로컬 결과들(33_315), 원격 결과들(33_415), 또는 양쪽 모두와의 Bob의 상호작용으로부터 로컬 학습 시스템(33_116)에 의해 소셜 그래프가 생성될 수 있다.
일 실시예에서, 원격 결과들에 대한 로컬 학습은 또한, 사용자가 반복적으로 제시받았지만 사용자가 상호작용하지 않았던 결과들을 필터링하기 위해 사용될 수 있다. 예를 들어, 사용자는 동작(33_405)에서 현재 정치적 주제에 대한 질의를 로컬 디바이스 및 원격 검색 엔진(33_150)에 발행할 수 있다. 질의에 응답하여 반환된 원격 결과들(33_415)은 허핑턴 포스트(The Huffington Post)® 및 폭스 뉴스(Fox News)®로부터의 결과들을 포함할 수 있다. 동작(33_425)에서, 학습 시스템(33_116)은 사용자가 폭스 뉴스®" 결과들과 거의 또는 결코 상호작용하지 않는 임의의/모든 결과들에 대해 국부적으로 저장된 피드백으로부터 학습할 수 있다. 학습 시스템(33_116)은, "뉴스 소스"를 훈련시키고, 동작(33_420)에서 결과들을 블렌딩하고, 그의 순위를 매기고, 로컬 디바이스 상에 그를 제시할 때 미래의 원격 결과들로부터 폭스 뉴스® 결과들을 배제하도록 학습시키기 위한 새로운 특징부를 결정할 수 있다.
동작(33_430)에서, 원격 검색 엔진 결과들만의 피드백 이력이 원격 검색 엔진(33_150)으로 반환될 수 있다. 피드백 이력은, 원격 검색 엔진(33_150)으로 전송된 정보에서 특정 사용자 및/또는 기계가 식별되지 않도록 익명화될 수 있다. 일 실시예에서, 사용자 프라이버시를 보호하기 위해, 익명화된 피드백과 연관된 질의는 원격 검색 엔진으로 전송되지 않는다.
동작(33_435)에서, 로컬 학습 시스템(33_116)은 로컬 검색 및 피드백 이력(33_115)을 분석하여, 결과들 및 결과들에 대한 피드백으로부터 특징부가 식별될 수 있는지 여부를 결정할 수 있다. 로컬 학습 시스템(33_116)은, 특징부가 식별될 수 있는지 여부를 결정할 시에, 로컬 및 원격 양쪽 모두에서, 질의에 대한 결과들 전부에 대한 피드백을 이용할 수 있다.
동작(33_435)에서 특징부가 식별된 경우, 동작(33_440)에서 로컬 학습 시스템(33_116)은 특징부에 대한 로컬 예측자를 생성하고 그 특징부를 훈련시킬 수 있다.
동작(33_445)에서, 로컬 학습 시스템(33_116)은 선택적으로, 로컬 학습 시스템(33_116)에 의해 식별된 특징부에 기초하는 특징 벡터를 원격 검색 엔진으로 전송할 수 있다. 뉴스 소스들의 예를 다시 사용하면, 사용자는 동작(33_405)에서 현재 정치적 주제에 대해 로컬 디바이스 및 원격 검색 엔진(33_150)에 질의할 수 있다. 질의에 응답하여 반환된 원격 결과들(33_415)은 허핑턴 포스트® 및 폭스 뉴스®로부터의 결과들을 포함할 수 있다. 원격 검색 엔진(33_150)은 폭스 뉴스®에 대한 결과들을, 원격 검색 엔진(33_150)의 많은 사용자들에 의한 상호작용에 기초하여 최고 순위의 결과들로서 반환하였을 수 있다. 그러나, 이 특정 사용자에 대한 로컬 피드백 이력은, 원격 검색 엔진(33_150)에 의한 최고 순위의 폭스 뉴스® 결과들과는 반대로, 이 특정 사용자가 폭스 뉴스® 결과들과 상호작용하지 않음을 나타낼 수 있다. 로컬 학습 시스템(33_116)은, 원격 검색 엔진이 동작(33_435)에서의 특징부로서, 폭스 뉴스® 결과들을 최고 순위로서 순위를 매기더라도, 이 사용자가 폭스 뉴스® 결과들과 상호작용하지 않음을 식별할 수 있고, 동작(33_440)에서 특징부에 대한 로컬 학습을 수행하고, 선택적으로 동작(33_445)에서 특징부를 원격 검색 엔진(33_150)으로 다시 전송할 수 있다.
도 33e는 컴퓨팅 디바이스(33_100)에 의해 원격 검색 엔진(33_150)으로 전송된 질의에 응답하여 원격 검색 엔진(33_150)에 의해 컴퓨팅 디바이스(33_100)로 전달된 질의 특징부를 국부적으로 학습하는 방법(33_500)을 블록도 형태로 예시한다. 방법(33_500)의 동작들 중 많은 동작들이 이전에 전술되었다.
동작(33_405)에서, 사용자는 로컬 검색 인터페이스(33_110)를 사용하여 질의를 발행할 수 있다. 전술된 바와 같이, 로컬 검색 인터페이스(33_110)는, 로컬 데이터베이스(33_111) 및 원격 검색 엔진(33_150) 중 하나 또는 양쪽 모두로 질의를 전달할 수 있다.
동작(33_310)에서, 로컬 질의는 로컬 검색 이력 및 피드백 이력(33_115)에 저장될 수 있다.
동작(33_315)에서, 컴퓨팅 디바이스(33_100)는 질의에 응답하여 로컬 데이터베이스(33_111)로부터 반환된 로컬 결과들을 수신할 수 있다. 로컬 결과들은 원격 검색 엔진(33_150)으로부터 반환된 검색 결과들과는 독립적으로 그리고 그에 비동기식으로 수신될 수 있다.
동작(33_515)에서, 컴퓨팅 디바이스(33_100)는 질의에 응답하여 원격 검색 엔진(33_150)으로부터 반환된 결과들을 수신할 수 있다. 동작(33_515)에서, 원격 검색 엔진은 또한, 로컬 학습 시스템(33_116)이 훈련하기 위해, 결과들 및 질의에 관련된 특징부를 반환할 수 있다.
일 실시예에서, 타이머(33_417)는 타이머의 만료까지 수신되었던 결과들을 언제 디스플레이할지를 결정하기 위해 설정될 수 있다. 일 실시예에서, 타이머의 만료 이후에 추가 결과들이 수신될 수 있다. 타이머의 시간 값은 컴퓨팅 디바이스(33_100) 상에서, 또는 원격 검색 엔진(33_150) 상에서, 또는 양쪽 모두 상에서 국부적으로 구성되어 로컬 및 원격 검색 결과들이 상이한 시간들에 디스플레이되도록 할 수 있다.
동작(33_420)에서, 로컬 결과들 및 원격 결과들은, 상기 도 33d를 참조하여 동작(33_420)에서 기술된 바와 같이 블렌딩되고 순위가 매겨질 수 있다.
동작(33_425)에서, 로컬 검색 인터페이스는 사용자가 결과에 관여했는지 여부, 및 만약 관여했다면, 사용자가 얼마나 오래 결과에 관여했는지, 또는 사용자가 결과를 포기했는지 여부를 나타내는 사용자로부터의 피드백을 수신할 수 있다. 사용자 피드백은, 결과가 로컬 데이터베이스 결과인지 또는 원격 검색 엔진 결과인지 여부에 상관없이, 수집되어 로컬 검색 및 피드백 이력(33_115)에 저장될 수 있다. 질의는 또한 로컬 검색 및 피드백 이력(33_115)에 저장될 수 있다. 일 실시예에서, 질의 및 피드백 이력은 컴퓨팅 디바이스(33_100)의 특정 사용자와 연관될 수 있다.
동작(33_430)에서, 원격 검색 엔진 결과들만의 피드백 이력이 원격 검색 엔진(33_150)으로 반환될 수 있다. 피드백 이력은, 원격 검색 엔진(33_150)으로 전송된 정보에서 특정 사용자 및/또는 기계가 식별되지 않도록 익명화될 수 있다. 일 실시예에서, 사용자 프라이버시를 보호하기 위해, 익명화된 피드백과 연관된 질의는 원격 검색 엔진으로 전송되지 않는다.
동작(33_520)에서, 로컬 학습 시스템(33_116)은 동작(33_515)에서 원격 검색 엔진(33_150)으로부터 수신된 특징부에 대한 로컬 예측자를 생성하고 그 특징부를 훈련시킬 수 있다. 로컬 학습 시스템(33_116)은 로컬 피드백 및 검색 이력(33_115)을 이용하여, 특정 사용자가 원격 검색 엔진(33_150)으로부터 수신된 특징부에 대해 로컬 및 원격 검색 결과들 양쪽 모두와 어떻게 상호작용하는지를 결정할 수 있다. 로컬 학습 시스템(33_116)은 특징부가 로컬 학습 시스템(33_116)에 의해 결정되는지 여부 또는 특징부가 로컬 학습 시스템(33_116)에 의한 학습을 위해 원격 검색 엔진(33_150)으로부터 수신되는지 여부를 추적할 수 있다. 원격 검색 엔진(33_150)으로 특징 정보를 전송하는 실시예들에서, 예컨대 하기의 도 33f의 동작(33_630)에서, 특정 사용자의 프라이버시를 위해 원격 검색 엔진(33_150)으로 특징 정보를 전송하기 전에 특징 정보는 익명화될 수 있다.
도 33f은 새로운 특징부를 수신 또는 결정하고, 그 특징부를 국부적으로 훈련시키고, 그 특징부를 이용하는 방법(33_600)을 블록도 형태로 예시한다.
동작(33_605)에서, 원격 검색 엔진(33_150)은 컴퓨팅 디바이스가 국부적으로 훈련시킬 새로운 특징부를 컴퓨팅 디바이스(33_100)로 반환할 수 있다. 원격 검색 엔진(33_150)은 컴퓨팅 디바이스(33_100)에 의해 질의로부터 반환된 결과들과 함께 특징부를 컴퓨팅 디바이스(33_100)로 반환할 수 있다. 일 실시예에서, 특징부는, 질의가 로컬 검색 인터페이스(33_110)로부터 생성되었는지 또는 원격 검색 인터페이스(33_120)로부터 생성되었는지 여부에 관계없이 컴퓨팅 디바이스로 반환될 수 있다. 일 실시예에서, 원격 질의 서버(33_121)가 특징부를 가로채고 특징부를
통신 인터페이스(33_8)를 통해 로컬 학습 시스템(33_116)으로 전달할 수 있다.
동작(33_610)에서, 방법(33_600)은 대안적으로, 로컬 학습 시스템(33_116)이 로컬 검색 이력 및 피드백 이력(33_115)을 분석함으로써 특징부를 결정하는 것으로 시작할 수 있다. 로컬 검색 이력 및 피드백 이력(33_115)을 다양한 방식으로 분석함으로써 특징부가 학습될 수 있다. 몇 가지 예들이 아래에서 주어진다:
사용자는 "풋볼 점수들"에 대한 질의를 발행할 수 있다. 원격 검색 엔진(33_150)은 풋볼 점수들 및 축구 점수들 양쪽 모두에 대한 결과들을 반환할 수 있다. 원격 검색 엔진(33_150)은 질의를 전송한 컴퓨팅 디바이스(33_100)가 미국에 있는 IP 주소에 위치한다고 결정하였을 수 있다. 따라서, 원격 검색 엔진은 댈러스 카우보이스와 같은 아메리칸 풋볼 점수들을, 가장 관련있는 결과들로서, 우선시하였다. 많은 유럽 및 남미 국가들에서, 풋볼은 축구를 의미한다. 질의를 발행한 사용자가 축구 결과들에 관심이 있고 그와 상호작용한다고 가정한다. 로컬 학습 시스템(33_116)은 로컬 검색 이력 및 피드백 이력(33_115)을 분석하여, 사용자가 더 높은 순위의 아메리칸 풋볼 점수들과 상호작용하지 않았다고 결정할 수 있다. 로컬 학습 시스템(33_116)은 이어서 결과들을 분석할 수 있고, 풋볼이 적어도 2개의 의미들을 가지며 이 컴퓨팅 디바이스(33_100)의 사용자가 아메리칸 풋볼보다 축구에 대한 선호도를 갖는다는 특징부를 결정할 수 있다.
풋볼 점수들의 예를 다시 사용하면, 풋볼 점수들에 대한 결과들을 수신할 시에, 사용자는 그가 왜 아메리칸 풋볼 점수들을 수신하였는지를 궁금해 했을 수 있다. 로컬 데이터베이스(33_111)로부터 반환된 로컬 결과들에서, 단어 "풋볼"에 대한 사전 엔트리가 있을 수 있다. 사용자는 "풋볼"에 대한 사전 엔트리를 클릭하였다. 이에 응답하여, 로컬 학습 시스템(33_116)은, 풋볼에 대한 대안의 정의들이 있고 이 사용자가 아메리칸 풋볼보다 축구에 대한 선호도를 갖는다는 새로운 특징부를 결정할 수 있다.
다른 예에서, 사용자가 질의 "Montana"를 입력하고, 그의 주소록으로부터의 로컬 결과 "Mary Montana", 그의 사전으로부터의 로컬 결과, Joe Montana(아메리칸 풋볼의 전설적 인물)에 대한 원격 결과들, 및 미국의 Montana 주를 수신한다고 가정한다. 사용자는 그가 Montana에 대해 질의할 때마다 거의 항상 그의 로컬 주소록으로부터 Mary Montana를 클릭한다. 로컬 학습 시스템(33_116)은, Montana에 대한 특징부, 및 이 사용자가 연락처 레코드 "Mary Montana"에 대한 선호도를 갖는다는 것을 결정할 수 있다.
또 다른 예에서, 사용자는 "MG"에 대한 질의를 발행한다. 사용자는 그의 로컬 컴퓨터 상에 영국 MG 자동차들의 많은 사진들을 갖고 있고, 그들이 로컬 데이터베이스(33_111) 내에 인덱싱되어 있다. 원격 검색 엔진(33_150)은 원소 "마그네슘"(심볼 Mg)에 대한 결과들을 반환할 수 있다. 사용자는 또한, 그의 컴퓨터 상에 밴드 "Booker T. and the MGs"의 많은 노래들을 가지고 있고 그에 따라 로컬 결과들을 수신할 수 있다. 로컬 학습 시스템(33_116)은 이러한 결과들의 차이를 결정할 수 있고, "MG"에 대한 특징부를 결정할 수 있다.
일단 특징부가 동작(33_605)에서 수신되었거나, 또는 동작(33_610)에서 결정되었다면, 동작(33_620)에서 로컬 학습 시스템(33_116)은 특징부에 대한 로컬 예측자를 생성할 수 있다.
동작(33_625)에서, 로컬 학습 시스템(33_116)은 로컬 예측자를 사용하여, 로컬 검색 이력 및 피드백 이력(33_115)을 이용하여 특징부 "MG"를 훈련시킬 수 있다. 로컬 학습 시스템(33_116)은 또한 컴퓨팅 디바이스(33_100)의 컨텍스트를 사용하여 특징부를 훈련시킬 수 있다.
상기의 MG의 예를 사용하면, 사용자가 계산기 프로그램 내부로부터 질의 MG를 발행한 경우, 로컬 학습 시스템(33_116)은 그 컨텍스트를 이용하여, 사용자가 마그네슘의 분자량 또는 마그네슘의 다른 특성에 가장 관심이 있을 가능성이 있었다고 학습할 수 있고, 그에 따라 MG를 훈련시킬 수 있다. 사용자가 MG 자동차의 사진을 보면서, 사진 보기 애플리케이션 내부로부터 그 질의를 발행한 경우, 로컬 학습 시스템(33_116)은 그 컨텍스트를 이용하여, 사용자가 영국 MG 자동차들에 가장 관심이 있을 가능성이 있다고 학습할 수 있다.
동작(33_630)에서, 로컬 학습 시스템(33_116)에 의해 학습된 특징부, 또는 원격 검색 엔진(33_150)으로부터 수신된 특징부가 여러 상이한 방식으로 이용될 수 있다. 예컨대, MG에 대한 새로운 질의를 발행할 때, 그 질의는 MG에 대한 학습된 선호도(예컨대, 마그네슘)를 이용하여 확장될 수 있다. 일 실시예에서, 예컨대 MG에 대한 새로운 질의를 발행할 때, 그 질의는 마그네슘에 대한 결과들에 유리한 편견을 가지고 있을 수 있다. 로컬 학습 시스템(33_116)은 각각의 질의 특징부와 연관된 편견 확률(학습된 선호도)을 산출하고, 그 편견을 특징 벡터로서 원격 검색 엔진(33_150)에 제공할 수 있다. 일 실시예에서, 특징 벡터는, 다음에 사용자가 특징부와 연관된 질의 용어를 사용하여 원격 검색 엔진에 질의할 때 원격 검색 엔진으로 전송될 수 있다. 일 실시예에서, 특징부는, 로컬 데이터베이스(33_111) 또는 원격 검색 엔진(33_150) 중 어느 하나 또는 양쪽 모두로부터 반환된 결과들을 필터링하여, 질의 MG에 대해 반환된 결과들을, 예컨대 마그네슘 결과들로 제한하기 위해 사용될 수 있다.
도 33g("소프트웨어 스택")에서, 예시적인 실시예, 애플리케이션들은 여러 서비스 API들을 사용하여 서비스 A 또는 서비스 B로의 호출들을 행하고 여러 API들을 사용하여 운영 체제(OS)로의 호출을 행할 수 있고, A 및 B는 여러 API들을 사용하는 것에 대한 호출들을 행할 수 있다.
서비스 2는 2개의 API들을 갖고 있고, 그 중 하나(서비스 2 API 1)는 애플리케이션 1로부터의 호출들을 수신하고 그에게 값들을 반환하고, 다른 하나(서비스 2 API 2)는 애플리케이션 2로부터의 호출들을 수신하고 그에게 값들을 반환하고, 서비스 1(예를 들어, 소프트웨어 라이브러리일 수 있음)은 OS API 1로의 호출들을 행하고 그로부터 반환된 값들을 수신하고, 서비스 2(예를 들어, 소프트웨어 라이브러리일 수 있음)는 API 1과 OS API 2 양쪽 모두로의 호출들을 행하고 그로부터 반환된 값들을 수신하고, 애플리케이션 2는 API 2로의 호출들을 행하고 그로부터 반환된 값들을 수신함에 주목한다.
멀티-도메인 검색 기법에 대한 예시적인 시스템, 방법, 및 컴퓨터 판독가능 매체
일부 실시예들에서, 컴퓨터 구현 방법이 제공되는데, 본 방법은, 컴퓨팅 디바이스 상에서, 검색 질의에 관련된 특징부를 학습하는 단계 - 특징부는 원격 검색 엔진으로 송신되지 않은 컴퓨팅 디바이스 상에서 생성된 정보를 사용하여, 적어도 부분적으로 학습됨 -; 검색 질의 및 특징부의 표시를 원격 검색 엔진으로 송신하는 단계; 및 컴퓨팅 디바이스에 의해, 검색 질의 및 특징부의 표시에 응답하는 검색 결과들을 수신하는 단계를 포함한다. 일부 실시예들에서, 특징부의 표시는, 특징부 쪽으로의 편견 또는 특징 벡터 중 적어도 하나를 포함한다. 일부 실시예들에서, 컴퓨팅 디바이스로부터 획득된 정보는, 컴퓨팅 디바이스 상의 정보에 관해 컴퓨팅 디바이스 상에서 수행된 검색 질의, 또는 컴퓨팅 디바이스 상에 저장된 정보에 관해 컴퓨팅 디바이스 상에서 수행된 검색 질의로부터 반환된 결과들과의 컴퓨팅 디바이스의 사용자에 의한 상호작용의 피드백 중 적어도 하나를 포함한다. 일부 실시예들에서, 학습하는 단계는 컴퓨팅 디바이스로부터 획득된 정보의 통계 분석을 포함하고, 통계 분석은 선형 회귀, 베이즈 분류, 또는 나이브 베이즈 분류 중 하나를 포함한다. 일부 실시예들에서, 본 방법은, 원격 검색 엔진으로부터, 컴퓨팅 디바이스가 학습하기 위한 검색 질의에 관련된 특징부를 수신하는 단계를 추가로 포함한다. 일부 실시예들에서, 본 방법은, 컴퓨팅 디바이스 상에서, 원격 검색 엔진으로부터 수신된 특징부를 학습하는 단계를 추가로 포함하고, 원격 검색 엔진으로부터 수신된 특징부는, 원격 검색 엔진으로 송신되지 않은 컴퓨팅 디바이스 상에서 생성된 정보를 사용하여, 적어도 부분적으로 학습된다. 일부 실시예들에서, 특징부를 학습하는 단계는, 컴퓨팅 디바이스로부터 획득된 정보에 따라 검색 질의에 관련된 질의 용어를 명확화하는 단계를 포함한다.
일부 실시예들에서, 프로세싱 시스템에 의해 실행될 때, 방법을 수행하는 비일시적인 기계-판독가능 매체가 제공되는데, 본 방법은, 컴퓨팅 디바이스 상에서, 검색 질의에 관련된 특징부를 학습하는 단계 - 특징부는 원격 검색 엔진으로 송신되지 않은 컴퓨팅 디바이스 상에서 생성된 정보를 사용하여, 적어도 부분적으로 학습됨 -; 검색 질의 및 특징부의 표시를 원격 검색 엔진으로 송신하는 단계; 및 컴퓨팅 디바이스에 의해, 검색 질의 및 특징부의 표시에 응답하는 검색 결과들을 수신하는 단계를 포함한다. 일부 실시예들에서, 특징부의 표시는, 특징부 쪽으로의 편견 또는 특징 벡터 중 적어도 하나를 포함한다. 일부 실시예들에서, 컴퓨팅 디바이스 상에서 획득된 정보는, 컴퓨팅 디바이스 상의 정보에 관해 컴퓨팅 디바이스 상에서 수행된 검색 질의, 또는 컴퓨팅 디바이스 상에 저장된 정보에 관해 컴퓨팅 디바이스 상에서 수행된 검색 질의로부터 반환된 결과들과의 컴퓨팅 디바이스의 사용자에 의한 상호작용의 피드백 중 적어도 하나를 포함한다. 일부 실시예들에서, 학습하는 단계는 컴퓨팅 디바이스로부터 획득된 정보의 통계 분석을 포함하고, 통계 분석은 선형 회귀, 베이즈 분류, 또는 나이브 베이즈 분류 중 하나를 포함한다. 일부 실시예들에서, 본 방법은, 원격 검색 엔진으로부터, 컴퓨팅 디바이스가 학습하기 위한 검색 질의에 관련된 특징부를 수신하는 단계를 추가로 포함한다. 일부 실시예들에서, 본 방법은, 컴퓨팅 디바이스 상에서, 원격 검색 엔진으로부터 수신된 특징부를 학습하는 단계를 추가로 포함하고, 원격 검색 엔진으로부터 수신된 특징부는, 원격 검색 엔진으로 송신되지 않은 컴퓨팅 디바이스 상에서 생성된 정보를 사용하여, 적어도 부분적으로 학습된다. 일부 실시예들에서, 특징부를 학습하는 단계는, 컴퓨팅 디바이스로부터 획득된 정보에 따라 검색 질의에 관련된 질의 용어를 명확화하는 단계를 포함한다.
일부 실시예들에서, 시스템이 제공되는데, 시스템은 실행가능한 명령어들로 프로그래밍된 프로세싱 시스템을 포함하고, 실행가능한 명령어들은, 프로세싱 시스템에 의해 실행될 때, 방법을 수행한다. 본 방법은, 시스템 상에서, 검색 질의에 관련된 특징부를 학습하는 단계 - 특징부는 원격 검색 엔진으로 송신되지 않은 시스템 상에서 생성된 정보를 사용하여, 적어도 부분적으로 학습됨 -; 검색 질의 및 특징부의 표시를 원격 검색 엔진으로 송신하는 단계; 및 시스템에 의해, 검색 질의 및 특징부의 표시에 응답하는 검색 결과들을 수신하는 단계를 포함한다. 일부 실시예들에서, 특징부의 표시는, 특징부 쪽으로의 편견 또는 특징 벡터 중 적어도 하나를 포함한다. 일부 실시예들에서, 시스템 상에서 획득된 정보는, 시스템 상의 정보에 관해 시스템 상에서 수행된 검색 질의, 또는 시스템 상에 저장된 정보에 관해 시스템 상에서 수행된 검색 질의로부터 반환된 결과들과의 시스템의 사용자에 의한 상호작용의 피드백 중 적어도 하나를 포함한다. 일부 실시예들에서, 학습하는 단계는 시스템으로부터 획득된 정보의 통계 분석을 포함하고, 통계 분석은 선형 회귀, 베이즈 분류, 또는 나이브 베이즈 분류 중 하나를 포함한다. 일부 실시예들에서, 본 방법은, 원격 검색 엔진으로부터, 시스템이 학습하기 위한 검색 질의에 관련된 특징부를 수신하는 단계를 추가로 포함한다. 일부 실시예들에서, 본 방법은, 시스템 상에서, 원격 검색 엔진으로부터 수신된 특징부를 학습하는 단계를 추가로 포함하고, 원격 검색 엔진으로부터 수신된 특징부는, 원격 검색 엔진으로 송신되지 않은 시스템 상에서 생성된 정보를 사용하여, 적어도 부분적으로 학습된다. 일부 실시예들에서, 특징부를 학습하는 단계는, 시스템으로부터 획득된 정보에 따라 검색 질의에 관련된 질의 용어를 명확화하는 단계를 포함한다.
섹션 4: 구조화된 제안
이 섹션 "구조화된 제안"에서의 내용은, 일부 실시예들에 따른, 사용자와 연관된 콘텐츠(예컨대, 텍스트 메시지들)의 분석에 기초하여 사용자들에 대한 연락처들 및 캘린더 이벤트들을 제안하기 위한 컨텍스트-인식 컴퓨팅의 사용 및 제안들을 구조화하는 것을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 새로운 연락처들을 식별 및 제안하는 방식들을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 특히, 도 9b 및 도 9c의 예측 부분(930)에 제안된 사람들을 채우는 것을 참조하여, 아래에서 논의되는 방법(600) 및 방법(800)에 관련된 것들을 보완한다. 추가적으로, 콘텐츠를 분석하기 위한 기법들은 또한 방법들(1800, 2000)을 참조하여 상기 논의된 것들에 적용될 수 있고, 연락처들 및 캘린더 이벤트들을 제안하기 위한 기법들은 음성 통신 콘텐츠의 분석에 기초하여 이러한 제안들을 수행하기 위해 사용될 수 있다.
구조화된 제안의 간략한 개요
일부 실시예들에서, 연락처를 제안하는 방법은, 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 단계; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처들 중에 존재하지 않는다고 결정하는 단계; 및 결정하는 단계에 응답하여, 엔티티와 연관된 연락처를 생성하는 단계를 포함하고, 생성된 연락처는 연락처 정보, 및 생성된 연락처가 제안된 연락처라는 표시를 포함한다.
일부 실시예들에서, 연락처를 제안하는 방법은, 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보의 항목을 식별하는 단계; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처들 중에 존재하고 연락처가 식별된 연락처 정보의 항목을 포함하지 않는다고 결정하는 단계; 및 결정하는 단계에 응답하여, 연락처 정보의 항목, 및 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시를 포함하도록 연락처를 업데이트하는 단계를 포함한다.
일부 실시예들에서, 연락처를 제안하는 방법은, 디스플레이를 갖는 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 단계; 식별된 연락처 정보가 제안된 연락처 정보라는 표시를 생성하는 단계; 및 엔티티와 연관된 연락처에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는, 생성된 표시에 기초하여, 식별된 연락처 정보가 제안된 연락처 정보라는 것을 나타내는 제1 사용자 인터페이스 객체를 포함한다.
일부 실시예들에서, 연락처를 제안하는 방법은, 디스플레이를 갖는 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 단계; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분, 및 제2 부분을 포함하며, 제2 부분은 식별된 엔티티에 대응하는 제1 사용자 인터페이스 객체; 식별된 연락처 정보에 대응하는 제2 사용자 인터페이스 객체; 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 정보를 데이터베이스에 추가하게 하는, 식별된 연락처 정보와 연관된 제3 사용자 인터페이스 객체를 포함한다.
일부 실시예들에서, 캘린더 이벤트를 제안하는 방법은, 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 이벤트 정보를 식별하는 단계; 및 식별된 이벤트 정보와 연관된 캘린더 이벤트를 생성하는 단계를 포함하고, 생성된 캘린더 이벤트는 이벤트 정보, 및 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시를 포함한다.
일부 실시예들에서, 캘린더 이벤트를 제안하는 방법은, 디스플레이를 갖는 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 이벤트 정보를 식별하는 단계; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분, 및 제2 부분을 포함하며, 제2 부분은 식별된 이벤트 정보에 대응하는 제1 사용자 인터페이스 객체; 및 선택될 때 전자 디바이스로 하여금 식별된 이벤트 정보를 복수의 캘린더 이벤트들을 포함하는 데이터베이스에 추가하게 하는, 식별된 이벤트 정보와 연관된 제2 사용자 인터페이스 객체를 포함한다.
일부 실시예들에서, 다수의 연락처들 및/또는 캘린더 이벤트들을 제안하는 방법은, 디스플레이를 갖는 전자 디바이스에서: 메시지를 수신하는 단계; 수신된 메시지 내에서, 연락처 또는 이벤트 정보의 다수의 인스턴스들을 식별하는 단계; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분; 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록을 포함하는 제2 사용자 인터페이스를 디스플레이하게 하는 제2 부분을 포함한다.
구조화된 제안의 상세한 설명
본 개시내용 및 실시예들의 다음 설명에서, 첨부된 도면들이 참조되며, 실시될 수 있는 특정 실시예들이 도면들 내에서 예시로서 도시된다. 본 개시내용의 범주를 벗어나지 않으면서 다른 실시예들이 실시될 수 있고, 변경들이 가해질 수 있다는 것이 이해될 것이다.
전술된 바와 같이, 전자 디바이스 상의 연락처들 및 캘린더 이벤트를 관리하는 것은 사용자에게 부담이 될 수 있는데, 그 이유는 연락처들 및 캘린더 이벤트들을 추가하거나 업데이트하는 것은 시간이 지남에 따라 추가하는 여러 수동 단계들을 요구하기 때문이다. 이러한 이유로, 많은 사용자들은 자신의 주소록 및 캘린더를 최신으로 유지하는 것을 단순히 방치하는데, 이는 그들이 특정 연락처 또는 이벤트 정보에 대해 자신의 디바이스에서 수동으로 검색할 필요가 있을 때 그들이 나중에 시간을 들여야 한다. 이는 불만스러운 사용자 경험 및 생산성의 손실을 초래할 수 있다.
본 개시내용은 사용자들에게 그들의 메시지에 기초하여 연락처들 및 캘린더 이벤트들을 자동으로 제안하는 전자 디바이스를 제공함으로써 이러한 문제를 해결하고자 한다. 디바이스는 연락처 및 이벤트 정보에 대해 사용자의 메시지들을 분석하고 이러한 정보에 기초하여 사용자를 위해 제안된 연락처들 및 캘린더 이벤트들을 자동으로 생성하거나 업데이트할 수 있다. 제안된 연락처들 및 캘린더 이벤트들은 그것들이 사용자에 의해 수동으로 입력된 것처럼 검색가능할 수 있고, 사용자는 제안된 연락처들 및 캘린더 이벤트들을 추가하거나 무시하도록 선택할 수 있다. 이러한 방식으로, 사용자의 연락처들 및 캘린더 이벤트들은 사용자의 입장에서 노력 없이 또는 최소의 노력으로 유지될 수 있고, 이는 사용자 시간을 절약하고 생산성을 향상시키고 보다 효율적인 인간-기계 인터페이스를 생성할 수 있다.
1. 구조화된 제안
본 개시내용의 실시예들에서, 전자 디바이스는 그들의 메시지로부터 사용자를 위한 제안된 연락처들 및 캘린더 이벤트들을 구조화할 수 있다. 제안된 연락처들 및 캘린더 이벤트들은 그것들이 사용자에 의해 수동으로 입력된 것처럼 검색가능할 수 있고, 사용자는 제안된 연락처들 및 캘린더 이벤트들을 추가하거나 무시(예컨대, 거절)하도록 선택할 수 있다. 이러한 방식으로, 사용자의 연락처들 및 캘린더 이벤트들은 사용자의 입장에서 노력 없이 또는 최소의 노력으로 유지될 수 있고, 이는 사용자 시간을 절약하고 생산성을 향상시키고 보다 효율적인 인간-기계 인터페이스를 생성할 수 있다.
2.1 제안된 연락처 정보
도 34a는 일부 실시예들에 따른, 제안된 연락처를 위한 예시적인 데이터 아키텍처(34_502A)를 예시한다. 도 34a에 도시된 바와 같이, 전자 디바이스(34_500)는 메시지(34_510)로부터의 연락처 정보(34_520A)를 대응하는 연락처(34_530A)와 연관(예컨대, 저장)시킬 수 있다. 메시지(34_510)는 디바이스(34_500)의 사용자에 의해 전송되거나 수신될 수 있는 임의의 유형의 메시지, 예컨대, 이메일, 인스턴트 메시지, 디바이스(34_500) 상의 애플리케이션을 통한 메시징 등을 포함할 수 있고, 메시지(34_510)에 대한 임의의 첨부물을 포함할 수 있다.
연락처 정보(34_520A)는 엔티티의 이름, 전화번호, 주소, 사업체 또는 소셜 네트워킹 별칭(social networking handle) 등과 같은 주소록 데이터베이스 내의 연락처 엔트리와 전형적으로 연관된 정보를 포함할 수 있다. 연락처 엔트리들은 전형적으로 개인, 그룹, 기관, 회사 등을 포함할 수 있는 엔티티에 의해 체계화되거나 인덱싱된다. 연락처 정보(34_520A)는 연락처 모듈(137)과 같은 애플리케이션들이 연락처 정보(34_520A)를 프로세싱하기 위해 인식할 수 있는 임의의 적합한 포맷으로 저장될 수 있다. 연락처 정보(34_520)는 또한 다른 클라이언트들로 네트워크를 통해 업데이트하거나 동기화하는 것을 허용하기 위해, CardDAV 프로토콜과 같은 표준 프로토콜에 따라 포맷화될 수 있다.
일부 실시예들에서, 식별된 연락처 정보(34_520A)는 3개의 상호 배타적인 상태들 - 제안된 상태(34_540), 추가된 상태(34_550), 및 거절된 상태(34_560) 중 임의의 하나에서 연락처(34_530A)와 연관될 수 있다. 제안된 상태(34_540)는 사용자가 연락처에 연락처 정보(34_520A)의 추가를 아직 확정하거나 승인하지 않은 상태를 반영할 수 있다. 추가된 상태(34_550)는 사용자가 연락처에 연락처 정보(34_520A)의 추가를 확정하거나 승인한 상태를 반영할 수 있다. 거절된 상태(34_560)는 사용자가 연락처에 연락처 정보(34_520A)의 추가를 거절한 상태를 반영할 수 있다. 연락처(34_530A)는 또한 모든 연관된 연락처 정보가 동일한 상태에 속하는 경우 이러한 3개의 상태 중 임의의 하나와 연관될 수 있다.
일부 실시예들에서, 추가된 상태(34_550)는 디폴트 상태로서 디바이스(34_500)에 의해 취급될 수 있고, 이는 그것들이 추가된 상태(34_550)에 있음을 나타내기 위해 이러한 연락처들과 연관되도록 추가 데이터가 요구되지 않는다는 것을 의미한다. 예를 들어, 디바이스(34_500) 상의 사용자 추가 연락처들은 추가된 상태(34_550)로 디폴트될 수 있다.
추가된 상태(34_550)가 디폴트 상태로서 취급되는 실시예들에서, 디바이스(34_500)는 연락처 정보(34_520A)가 제안된 상태(34_540) 또는 거절된 상태(34_560)에 속함을 나타내기 위해 데이터를 연락처 정보(34_520A)와 연관시킬 수 있다. 이러한 데이터는, 연락처 정보(34_520A)가 제안된 상태(34_540) 또는 거절된 상태(34_560)에 있음을 인식하기 위하여 연락처 정보(34_520A)를 프로세싱하는 애플리케이션들에 의해 사용될 수 있는, 메타데이터와 같은 임의의 적합한 형태를 취할 수 있다.
디바이스(34_500)는 또한 연락처(34_530A) 및 모든 연관된 연락처 정보가 제안된 상태(34_540) 또는 거절된 상태(34_560)에 속함을 나타내기 위해 데이터를 연락처(34_530A)와 연관시킬 수 있다.
제안된 상태(34_540)에 연락처 정보(34_520A)를 저장함으로써, 디바이스(34_500)는 (예컨대, 디바이스(34_500) 상에서 구동되는 애플리케이션을 통해) 연락처들의 검색 시에 제안된 연락처 정보를 포함할 수 있다. 사용자의 혼동을 피하기 위하여, 디바이스(34_500)는 또한 (예컨대, 라벨링 또는 하이라이트를 통해) 시각적 표시를 제공하고/하거나 사용자가 연락처 정보(34_520A)에 대해 직접 액션을 행하는 것을 방지함으로써(예컨대, 사용자가 연락처 정보(34_520A)에 대해 액션을 행하기 전에 사용자에게 추가 입력을 제공하도록 요구함으로써) 연락처 정보(34_520A)가 제안된 상태(34_540)에 있음을 사용자에게 나타낼 수 있다. 입력은 터치, 마우스, 음성 등과 같은 입력으로 임의의 적합한 방식을 지칭할 수 있다.
연락처 정보(34_520A)를 거절된 상태(34_560)에 저장함으로써, 디바이스(34_500)는 사용자가 거절한 앞서 제안된 연락처 정보를 기억하여 그것을 사용자에게 다시 제안하지 않도록 할 수 있다. 거절된 상태(34_560) 내의 연락처 정보(34_520A)는 추가된 상태(34_550) 및 제안된 상태(34_540) 내의 연락처 정보를 프로세싱하는 애플리케이션들에 의해 무시될 수 있다.
디바이스(34_500)는 디바이스(34_500) 상에 국부적으로 연락처 정보(34_520A)를 저장하고, 연락처 정보(34_520A)가 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경될 때까지 연락처 정보(34_520A)를 원격 데이터베이스에 동기화하는 것을 억제할 수 있다. 다른 실시예들에서, 연락처 정보(34_520A)는 제안된 상태(34_540)에 있는 동안 원격 데이터베이스에 업데이트될 수 있다.
디바이스(34_500)는 메시지(34_510) 내의 구조화되거나 비구조화된 콘텐츠로부터 연락처 정보(34_520A)를 식별할 수 있다. 구조화된 콘텐츠는 동일한 미리정의된 방식으로(예컨대, 동일한 HTML 구조를 이용하여) 비행, 호텔, 및/또는 차량 예약 정보를 계획하는 온라인 여행사에 의해 제공된 자동 이메일과 같은, 미리정의된 포맷에 따라 배열된 정식 구성 또는 구조를 갖는 콘텐츠를 지칭한다. 일부 실시예들에서, 구조화된 콘텐츠로부터 연락처 정보(34_520A)를 식별하기 위하여, 디바이스(34_500)는 그러한 메시지들에 의해 제공된 특정 포맷으로 연락처 정보를 인식하도록 구성된 템플릿을 사용할 수 있다. 일부 실시예들에서, 디바이스(34_500)는 이러한 템플릿을 네트워크를 통해 추가하고/하거나 업데이트할 수 있다.
비구조화된 콘텐츠는 자연 언어 콘텐츠(예컨대, 누군가 그들이 새 번호를 가짐을 메시지로 말함) 및 이메일 서명과 같은 정식 구성 또는 구조가 없는 콘텐츠를 지칭한다. 비구조화된 콘텐츠로부터 연락처 정보(34_520A)를 식별하기 위하여, 디바이스(34_500)는 "I got a new number, it's <번호>."처럼 특정 문구들과 같은, 연락처 정보에 대한 미리정의된 참조들을 식별하도록 구성되는 데이터 검출기를 사용할 수 있다. 디바이스(34_500)는 또한 이러한 데이터 검출기들을 네트워크를 통해 추가하고/하거나 업데이트할 수 있다. 디바이스(34_500)는 디바이스(34_500) 상의 연락처 정보(예컨대, 주소록 데이터베이스 내에 있음)를 디바이스(34_500) 상의 그 연락처 정보와 연관된 언어(예컨대, 메시지들 내에 있음)와 상호상관시킴으로써 데이터 검출기에 의해 의존되는 미리정의된 참조들을 향상시킬 수 있다. 이어서, 상관된 언어는 후속 사용을 위한 미리정의된 참조들을 정제하는 데 사용될 수 있다. 디바이스(34_500)에 의해 분석된 메시지 콘텐츠는 메시지 메타데이터를 포함한, 디바이스(34_500)에 의해 인식가능한 임의의 정보를 포함할 수 있다.
2.2 제안된 이벤트 정보
도 34b는 일부 실시예들에 따른, 제안된 캘린더 이벤트들을 위한 예시적인 데이터 아키텍처(34_502B)를 예시한다. 도 34b에 도시된 바와 같이, 전자 디바이스(34_500)는 메시지(34_510)로부터의 이벤트 정보(34_520B)를 대응하는 캘린더 이벤트(34_530B)와 연관(예컨대, 저장)시킬 수 있다. 메시지(34_510)는 디바이스(34_500)의 사용자에 의해 전송되거나 수신될 수 있는 임의의 유형의 메시지, 예컨대, 이메일, 인스턴트 메시지, 디바이스 상의 애플리케이션을 통한 메시징 등을 포함할 수 있고, 메시지에 대한 임의의 첨부물을 포함할 수 있다.
이벤트 정보(34_520B)는 시간, 날짜, 위치 등과 같은, 캘린더 데이터베이스 내의 캘린더 엔트리와 전형적으로 연관된 정보를 포함할 수 있다. 이벤트 정보(34_520B)는 캘린더 모듈(148)과 같은 애플리케이션들이 이벤트 정보(34_520B)를 프로세싱하도록 인식할 수 있는 임의의 적합한 포맷으로 저장될 수 있다. 이벤트 정보(34_520B)는 또한 네트워크를 통해 다른 클라이언트들을 이용하여 업데이트하거나 그와 동기화하는 것을 허용하기 위해, CalDAV 프로토콜과 같은 표준 프로토콜에 따라 포맷화될 수 있다.
일부 실시예들에서, 식별된 이벤트 정보(34_520B)는 3개의 상호 배타적인 상태들 - 제안된 상태(34_540), 추가된 상태(34_550), 및 거절된 상태(34_560) 중 임의의 하나에서 캘린더 이벤트(34_530B)와 연관될 수 있다. 제안된 상태(34_540)는 사용자가 캘린더 이벤트에 이벤트 정보(34_520B)의 추가를 아직 확정하거나 승인하지 않은 상태를 반영할 수 있다. 추가된 상태(34_550)는 사용자가 캘린더 이벤트에 이벤트 정보(34_520B)의 추가를 확정하거나 승인한 상태를 반영할 수 있다. 거절된 상태(34_560)는 사용자가 캘린더 이벤트에 이벤트 정보(34_520B)의 추가를 거절한 상태를 반영할 수 있다. 캘린더 이벤트(34_530B)는 또한 모든 연관된 캘린더 이벤트 정보가 동일한 상태에 속하는 경우 이러한 3개의 상태 중 임의의 하나와 연관될 수 있다.
일부 실시예들에서, 추가된 상태(34_550)는 디폴트 상태로서 디바이스(34_500)에 의해 취급될 수 있고, 이는 그것들이 추가된 상태(34_550)에 있음을 나타내기 위해 이러한 캘린더 이벤트들과 연관되도록 추가 데이터가 요구되지 않는다는 것을 의미한다. 예를 들어, 디바이스(34_500) 상의 사용자 추가 캘린더 이벤트들은 추가된 상태(34_550)로 디폴트될 수 있다.
추가된 상태(34_550)가 디폴트 상태로서 취급되는 실시예들에서, 디바이스(34_500)는 이벤트 정보(34_520B)가 제안된 상태(34_540) 또는 거절된 상태(34_560)에 속함을 나타내기 위해 데이터를 이벤트 정보(34_520B)와 연관시킬 수 있다. 이러한 데이터는, 이벤트 정보(34_520B)가 제안된 상태(34_540) 또는 거절된 상태(34_560)에 있음을 인식하기 위하여 이벤트 정보(34_520B)를 프로세싱하는 애플리케이션들에 의해 사용될 수 있는, 메타데이터와 같은 임의의 적합한 형태를 취할 수 있다.
디바이스(34_500)는 또한 캘린더 이벤트(34_530B) 및 모든 연관된 이벤트 정보가 제안된 상태(34_540) 또는 거절된 상태(34_560)에 속함을 나타내기 위해 데이터를 캘린더 이벤트(34_530B)와 연관시킬 수 있다.
제안된 상태(34_540)에 이벤트 정보(34_520B)를 저장함으로써, 디바이스(34_500)는 (예컨대, 디바이스(34_500) 상에서 구동되는 애플리케이션을 통해) 캘린더 이벤트들의 검색 시에 제안된 이벤트 정보를 포함할 수 있다. 사용자의 혼동을 피하기 위하여, 디바이스(34_500)는 또한 (예컨대, 라벨링 또는 하이라이트를 통해) 시각적 표시를 제공하고/하거나 사용자가 이벤트 정보(34_520B)에 대해 직접 액션을 행하는 것을 방지함으로써(예컨대, 사용자가 이벤트 정보(34_520B)에 대해 액션을 행하기 전에 사용자에게 추가 입력을 제공하라고 요구함으로써) 이벤트 정보(34_520B)가 제안된 상태(34_540)임을 사용자에게 나타낼 수 있다. 입력은 터치, 마우스, 음성 등과 같은 입력으로 임의의 적합한 방식을 지칭할 수 있다.
거절된 상태(34_560) 내에 이벤트 정보(34_520B)를 저장함으로써, 디바이스(34_500)는 사용자가 거절한 앞서 제안된 이벤트 정보를 다시 사용자에게 제안하지 않도록 그것을 기억할 수 있다. 거절된 상태(34_560) 내의 이벤트 정보(34_520B)는 추가된 상태(34_550) 및 제안된 상태(34_540) 내의 이벤트 정보를 프로세싱하는 애플리케이션들에 의해 무시될 수 있다.
디바이스(34_500)는 디바이스(34_500) 상에 국부적으로 이벤트 정보(34_520B)를 저장하고, 이벤트 정보(34_520B)가 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경될 때까지 이벤트 정보(34_520B)를 원격 데이터베이스에 동기화하는 것을 억제할 수 있다. 다른 실시예들에서, 이벤트 정보(34_520B)는 제안된 상태(34_540)에 있는 동안 원격 데이터베이스에 업데이트될 수 있다.
디바이스(34_500)는 메시지(34_510) 내의 구조화되거나 비구조화된 콘텐츠로부터 이벤트 정보(34_520B)를 식별할 수 있다. 구조화된 콘텐츠는 동일한 미리정의된 방식으로(예컨대, 동일한 HTML 구조를 이용하여) 비행, 호텔, 및/또는 차량 예약 정보를 계획하는 온라인 여행사에 의해 제공된 자동 이메일과 같은, 미리정의된 포맷에 따라 배열된 정식 구성 또는 구조를 갖는 콘텐츠를 지칭한다. 일부 실시예들에서, 구조화된 콘텐츠로부터 이벤트 정보(34_520B)를 식별하기 위하여, 디바이스(34_500)는 그러한 메시지들에 의해 제공된 특정 포맷으로 이벤트 정보를 인식하도록 구성된 템플릿을 사용할 수 있다. 일부 실시예들에서, 디바이스(34_500)는 이러한 템플릿을 네트워크를 통해 추가하고/하거나 업데이트할 수 있다.
비구조화된 콘텐츠는 자연 언어 콘텐츠(예컨대, 누군가 그들이 특정 시간에 어디에서 당신을 만날 것이라고 메시지로 말함) 및 이메일 서명과 같은 정식 구성 또는 구조가 없는 콘텐츠를 지칭한다. 비구조화된 콘텐츠로부터 이벤트 정보(34_520B)를 식별하기 위하여, 디바이스(34_500)는 "meet me at <주소> at <시간>."처럼 특정 문구들과 같은, 이벤트 정보에 대한 미리정의된 참조들을 식별하도록 구성되는 데이터 검출기를 사용할 수 있다. 디바이스(34_500)는 또한 이러한 데이터 검출기들을 네트워크를 통해 추가하고/하거나 업데이트할 수 있다. 디바이스(34_500)는 디바이스(34_500) 상의 이벤트 정보(예컨대, 캘린더 데이터베이스 내에 있음)를 디바이스(34_500) 상의 이벤트 정보와 연관된 언어(예컨대, 메시지들 내에 있음)와 상호상관시킴으로써 데이터 검출기에 의해 의존되는 미리정의된 참조들을 향상시킬 수 있다. 이어서, 상관된 언어는 후속 사용을 위한 미리정의된 참조들을 정제하는 데 사용될 수 있다. 디바이스(34_500)에 의해 분석된 메시지 콘텐츠는 메시지 메타데이터를 포함한, 디바이스(34_500)에 의해 인식가능한 임의의 정보를 포함할 수 있다.
예시적인 데이터 아키텍처들(34_520A, 34_520B)은 동일하거나 상이할 수 있음이 인식되어야 한다. 예를 들어, 단일 데이터 아키텍처는 제안된 캘린더 이벤트를 위한 것과 마찬가지로 제안된 연락처를 위해 사용될 수 있다. 대안적으로, 하나의 데이터 아키텍처가 제안된 연락처를 위해 사용될 수 있지만, 다른 상이한 데이터 아키텍처는 제안된 캘린더 이벤트를 위해 사용될 수 있다.
메시지(34_510)가 제안된 연락처만을 위해, 제안된 캘린더 이벤트만을 위해, 또는 제안된 연락처 및 제안된 캘린더 이벤트 둘 다를 위해 프로세싱될 수 있음을 또한 인식해야 한다. 제안된 연락처 및 제안된 캘린더 이벤트 둘 다를 위해 프로세싱될 때, 메시지(34_510)는 제안된 연락처 및 제안된 캘린더 이벤트를 위해 직렬로 또는 병렬로 프로세싱될 수 있다. 예를 들어, 메시지(34_510)는 제안된 연락처를 위해 우선 프로세싱되고, 이어서 제안된 캘린더 이벤트를 위해 프로세싱될 수 있다. 대안적으로, 메시지(34_510) 및 메시지(34_510)의 사본은 제안된 연락처 및 제안된 캘린더 이벤트를 위해 병렬로 프로세싱될 수 있다.
3. 사용자 인터페이스 및 연관된 프로세스
도 34c 내지 도 34t은 디바이스(34_500) 상에서 구현될 수 있는 사용자 인터페이스("UI") 및 연관된 프로세스들의 실시예들을 도시한다. 일부 실시예들에서, 디바이스(34_500)는 디바이스(100)(도 1a)에 대응한다.
도 34c 및 도 34i는 일부 실시예들에 따른, 제안된 연락처들 및 캘린더 이벤트들을 제공하기 위한 예시적인 사용자 인터페이스들을 예시한다.
특히, 도 34c는 예를 들어, 전술된 바와 같이 메시지를 프로세싱한 후에, 예를 들어 연락처 모듈(137)에 의한, 제안된 연락처 정보(즉, 제안된 상태(34_540) 내의 연락처 정보)를 갖는 연락처에 대응하는 사용자 인터페이스의 디스플레이를 도시한다. 본 예에서, 연락처는 John Appleseed이라는 이름의 개인과 연관되고 회사 이름("Any Company Inc."), 직장 전화번호("405-555-1234") 및 휴대전화 번호("405-123-6633")를 포함한다. 회사 이름 및 직장 전화번호는 연락처 정보의 확정된 항목들이며 추가된 상태(34_550)에 속한다. 휴대전화 번호는 제안된 연락처 정보의 항목이고 제안된 상태(34_540)에 속한다.
디바이스(34_500)는 휴대전화 번호가 제안된 연락처 정보의 항목이고 사용자에 의해 확정된 것은 아님을 사용자에게 나타내기 위해 사용자 인터페이스 내의 사용자 인터페이스 객체(34_600)(예컨대, 단어 "suggestion")를 제공할 수 있다. 임의의 적합한 사용자 인터페이스 객체는 이러한 목적을 위해 사용될 수 있으며, 이는 라벨, 아이콘, 또는 휴대전화 번호가 제안된 연락처 정보의 항목임을 나타내는 다른 시각적 표시를 포함한다. 동일한 연락처가 제안된 상태(34_540) 내의 연락처 정보의 항목들 및 추가된 상태(34_550) 내의 연락처 정보의 항목들을 포함할 때, 도 34c의 경우에서와 마찬가지로, 디바이스(34_500)는 제안된 상태(34_540) 내의 항목들을 추가된 상태(34_550) 내의 모든 항목들 아래에 또는 더 낮은 우선순위의 위치에 디스플레이할 수 있다.
디바이스(34_500)는 또한 이러한 초기 사용자 인터페이스로부터 제안된 번호로 John Appleseed에게 전화하기 위하여 사용자가 애플리케이션(예컨대, 전화 모듈(138))을 직접 호출하는 것을 방지할 수 있다. 예를 들어, 디바이스(34_500)는 사용자에 의한 제안된 번호의 선택이 그 번호에 직접 전화를 거는 것이 아님을 나타내기 위하여, 그레이아웃된(grayed out) 외형(도시하지 않음)과 같은, 확정된 연락처 정보의 항목의 시각적 외형과는 상이한 시각적 외형을 갖는 제안된 번호와 연관된 텍스트 및/또는 영역을 제공할 수 있다. 대신, 사용자에 의해 제안된 번호를 선택할 시에, 디바이스(34_500)는 현재 사용자 인터페이스를, 사용자가 그를 통해 제안된 번호를 검토하고 전화할 수 있는 제2 사용자 인터페이스로 대체할 수 있다.
도 34d에 도시된 바와 같이, 제2 사용자 인터페이스("Review Suggestion"로 라벨링됨)는 제안된 번호와 연관된 사용자 인터페이스 객체(34_602)("Add to Contact"로 라벨링됨)를 포함하는 배너의 형태로 제안 부분(34_606)을 포함한다. 사용자에 의해 사용자 인터페이스 객체(34_602)를 선택하는 것은 디바이스(34_500)로 하여금 제안된 번호를 추가된 상태(34_550) 내의 연락처에 추가(예를 들어, 제안된 번호의 상태를 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경)하게 할 수 있다. 이러한 후속 사용자 인터페이스에서 사용자에 의해, 휴대전화 번호 또는 휴대전화 번호의 옆에 디스플레이된 전화 아이콘과 같은 유사한 표시의 선택 시에, 디바이스(34_500)는 제안된 번호로 John Appleseed에게 전화하기 위해 애플리케이션(예컨대, 전화 모듈(138))을 호출할 수 있다. 일부 실시예들에서, 디바이스(34_500)는 사용자가 사용자 인터페이스 객체(34_602)를 선택하지 않지만 휴대전화 번호 또는 유사한 표시를 선택하는 경우 제안된 상태(34_540) 내의 휴대전화 번호를 유지할 수 있다(예를 들어, 사용자가 제안된 번호에 전화를 거는 것은 연락처에 대한 제안된 번호의 암시된 승인으로서 처리되지 않음). 다른 실시예들에서, 디바이스(34_500)는 사용자가 사용자 인터페이스 객체(34_602)를 선택하지 않았더라도, 사용자가 휴대전화 번호를 선택할 시에 휴대전화 번호의 상태를 추가된 상태(34_550)로 변경할 수 있다(예를 들어, 사용자가 제안된 번호에 전화를 거는 것은 연락처에 대한 제안된 번호의 암시된 승인으로서 처리됨).
도 34d의 제2 사용자 인터페이스는 또한 제안된 번호와 연관된 사용자 인터페이스 객체(34_604)("Ignore"로 라벨링됨)를 포함한다. 사용자에 의한 사용자 인터페이스 객체(34_604)의 선택은 디바이스(34_500)로 하여금 사용자 인터페이스 객체(34_602)를 디스플레이하는 것을 중지하게 할 수 있고, 이는 번호를 연락처에 추가하는 옵션을 제거한다. 사용자 인터페이스 객체(34_604)를 선택 시, 디바이스(34_500)는 제안된 번호의 상태를 제안된 상태(34_540)로부터 거절된 상태(34_560)로 변경할 수 있다. 거절된 상태(34_560)에서, 디바이스(34_500)는 이러한 연락처와 관련하여 제안된 번호를 더 이상 디스플레이하거나 제안하지 않도록 구성될 수 있다.
또한, 도 34d의 제2 사용자 인터페이스는 제안된 번호가 그로부터 디바이스(34_500)에 의해 식별된 메시지의 일부분을 포함하는 메시지 부분(34_608)("Related email"로 라벨링됨)을 포함한다. 따라서, 제안된 연락처 정보를 검토하기 위한 인터페이스를 제공 시에, 도 34d의 사용자 인터페이스는 제안된 연락처 정보와 연관된 메시지 컨텍스트를 사용자에게 제공할 수 있다. 도 34d에 도시된 바와 같이, 디바이스(34_500)는 휴대전화 번호를 갖는 부분에 관련된 이메일의 제한된 섹션을 디스플레이할 수 있다. 사용자가 메시지의 디스플레이된 부분을 선택 시, 디바이스(34_500)는 메시지 애플리케이션(예컨대, 이메일 클라이언트 모듈(140))으로 하여금 사용자를 위해 전체 이메일을 열게 할 수 있다. 일부 실시예들에서, 전체 이메일은 도 34f에 도시된 것에 대응하는 사용자 인터페이스 내의 제안된 연락처 정보와 함께 디스플레이될 수 있다.
도 34e는 사용자가 도 34c의 "Edit" 사용자 인터페이스 객체를 선택하는 것에 응답하여 디스플레이되는 사용자 인터페이스를 도시한다. 이러한 편집 사용자 인터페이스에서, 사용자는 또한 사용자 인터페이스 객체(34_610)에 의해 표현된, 제안된 번호에 직접 전화를 걸 수 있고, 이는 번호가 제안된 상태(34_540)에 있음을 나타내기 위하여 하이라이트(즉, 볼드체로)된다. 임의의 적합한 시각적 표시는 사용자 인터페이스 객체(34_610)가 제안된 상태(34_540)에 있음을 나타내기 위해 사용될 수 있다.
도 34f는 디바이스(34_500) 상의 메시지(예를 들어, 이메일 클라이언트 모듈(140)에 의해 디스플레이된 이메일)를 열 때 사용자가 볼 수 있는 화면을 도시하는데, 이때 디바이스(34_500)는 메시지 내의 식별된 제안된 연락처 정보를 갖는다. 도 34f의 사용자 인터페이스는 제안 부분(34_612) 및 메시지 부분(34_614)을 포함한다. 메시지 부분(34_614)은 디바이스(34_500)에 의해 수신된 메시지의 콘텐츠를 포함한다. 제안 부분(34_612)은 식별된 엔티티("John Appleseed")에 대응하는 사용자 인터페이스 객체, 식별된 연락처 정보("405-123-6633")에 대응하는 사용자 인터페이스 객체, 및 선택될 때 디바이스로 하여금 제안된 번호를 추가된 상태(34_550) 내의 연락처에 추가하게 하는 식별된 연락처 정보와 연관된 사용자 인터페이스 객체(34_618)("Add to Contacts"로 라벨링됨)를 포함한다. 제안 부분(34_612)은, 선택 시, 디바이스(34_500)로 하여금 식별된 연락처 정보의 상태를 제안된 상태(34_540)로부터 거절된 상태(34_560)로 변경하게 하는 식별된 연락처 정보와 연관된 사용자 인터페이스 객체(34_620)("Ignore"로 라벨링됨)를 포함한다. 거절된 상태(34_560)에서, 디바이스(34_500)는 이러한 연락처와 관련하여 제안된 연락처 정보를 더 이상 디스플레이하거나 제안하지 않도록 구성될 수 있다. "Ignore" 및 "Add to Contacts" 타일 위에서 제안 부분(34_612)의 식별된 연락처 정보(34_616)를 선택하는 것은 식별된 엔티티와 연관된 연락처에 대응하는 사용자 인터페이스를 가져올 수 있다. 예를 들어, 디바이스(34_500)는 이러한 실시예에서 도 34c에 도시된 것에 대응하는 사용자 인터페이스 내에 "John Appleseed"에 대한 연락처 정보를 제시할 수 있다.
도 34g는 디바이스(34_500) 상의 메시지(예를 들어, 이메일 클라이언트 모듈(140)에 의해 디스플레이된 이메일)를 열 때 사용자가 볼 수 있는 화면을 도시하는데, 이때 디바이스(34_500)는 메시지 내의 식별된 제안된 이벤트 정보를 갖는다. 도 34g의 사용자 인터페이스는 제안 부분(34_620) 및 메시지 부분(34_622)을 포함한다. 메시지 부분(34_622)은 디바이스(34_500)에 의해 수신된 메시지의 콘텐츠를 포함한다. 제안 부분(34_620)은 식별된 이벤트 정보("Dinner", "Any Sushi Bar", "Fri, March 7th", 또는 "9:50 PM")에 대응하는 사용자 인터페이스 객체, 및 선택될 때 디바이스(34_500)로 하여금 제안된 이벤트 정보를 추가된 상태(34_550) 내의 캘린더 이벤트에 추가하게 하는 식별된 이벤트 정보와 연관된 사용자 인터페이스 객체(34_626)("Add to Calendar"로 라벨링됨)를 포함한다. 제안 부분(34_620)은, 선택 시, 디바이스(34_500)로 하여금 식별된 이벤트 정보의 상태를 제안된 상태(34_540)로부터 거절된 상태(34_560)로 변경하게 하는 사용자 인터페이스 객체(34_628)("Ignore"로 라벨링됨)를 포함한다. 거절된 상태(34_560)에서, 디바이스(34_500)는 이러한 캘린더 이벤트와 관련하여 제안된 이벤트 정보를 더 이상 디스플레이하거나 제안하지 않도록 구성될 수 있다. "Ignore" 및 "Add to Calendar" 타일 위에서 제안 부분(34_620)의 식별된 이벤트 정보(34_624)를 선택하는 것은, 사용자가 그를 통해 제안된 이벤트 정보를 추가된 상태(34_550) 내의 캘린더 이벤트에 추가하기 위해 사용자 인터페이스 객체를 선택할 수 있는, 식별된 이벤트 정보(예를 들어, 예로서 연락처 모듈(137)에 의해 디스플레이됨)와 연관된 캘린더 이벤트에 대응하는 사용자 인터페이스(도시하지 않음)를 가져올 수 있다.
도 34h는 디바이스(34_500) 상의 메시지(예를 들어, 이메일 클라이언트 모듈(140)에 의해 디스플레이된 이메일)를 열 때 사용자가 볼 수 있는 화면을 도시하는데, 이때 디바이스(34_500)는 메시지 내의 식별된 다수의 제안된 연락처 및/또는 캘린더 이벤트를 갖는다. 도 34h의 사용자 인터페이스는 제안 부분(34_630) 및 메시지 부분(34_632)을 포함한다. 메시지 부분(34_632)은 디바이스(34_500)에 의해 수신된 메시지의 콘텐츠를 포함한다. 제안 부분(34_630)은, 선택될 때, 디바이스(34_500)로 하여금 도 34i에 도시된 바와 같은 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록을 갖는 후속 사용자 인터페이스를 디스플레이하게 하는 사용자 선택가능 영역을 추가로 포함한다. 도 34i의 제안들의 모두를 도 34h의 사용자 인터페이스 내로 통합시키기 보다는 도 34h의 제안 부분(34_630)을 단일 배너로 한정하는 것이, 도 34h의 제안 부분이 메시지 부분 내의 메시지를 용이하게 보고 읽는 사용자의 능력을 방해하는 것을 방지한다.
도 34i는 도 34h의 사용자 인터페이스와 연관된 메시지에서 식별된 제안된 연락처 및 이벤트 정보의 목록을 갖는 후속 사용자 인터페이스를 도시한다. 도 34i에 도시한 바와 같이, 제안은 유형에 의해 체계화되고(예컨대, 제안된 캘린더 이벤트는 함께 그룹화되고 제안된 연락처는 함께 그룹화됨), 각 제안은 전술된 "Ignore" 및 "Add to Contact" 및 "Add to Calendar" 기능을 포함한다. 도 34i의 사용자 인터페이스는 또한, 선택될 때 디바이스(34_500)로 하여금 식별된 연락처 또는 이벤트 정보(예컨대, 도 34i에 도시된 두 개의 제안된 캘린더 이벤트)의 다수의 인스턴스들의 그룹화 각각을 추가된 상태(34_550) 내의 대응하는 연락처 또는 캘린더 이벤트에 추가하게 하는 사용자 인터페이스 객체(34_634)("Add All")를 포함한다.
도 34j 및 도 34k는 일부 실시예들에 따른, 제안된 연락처를 생성하기 위한 예시적인 프로세스의 흐름도를 예시한다. 프로세스는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34f, 메시지 부분(34_614) 내의 이메일)를 수신할 수 있고(34_702), 수신된 메시지 내에서 엔티티(예컨대, 도 34f, "John Appleseed") 및 엔티티와 연관된 연락처 정보(예컨대, 도 34f, "405-123-6633")를 식별할 수 있다(34_704). 디바이스는 식별된 엔티티와 연관된 연락처(예컨대, 도 34a, 연락처(34_530A))가 데이터베이스(예컨대, 주소록 데이터베이스와 같은 디바이스(34_500) 상의 저장소) 내의 복수의 연락처 중에 존재하지 않는다고 결정할 수 있고(34_722), 이러한 결정에 응답하여, 디바이스는 엔티티와 연관된 연락처를 생성할 수 있는데, 생성된 연락처는 연락처 정보 및 생성된 연락처가 제안된 연락처(예컨대, 제안된 상태(34_540)에 있음)라는 표시(예컨대, 메타데이터)를 포함한다(34_724). 디바이스가 제안된 연락처로서 "John Appleseed" 연락처를 생성할 때, 연락처 내의 연락처 정보의 각 항목은 제안된 연락처 정보의 항목으로서 나타내고 제안된 상태(34_540)에 저장될 수 있거나, 또는 전체로서 전체 연락처는 제안된 연락처로서 나타내고 제안된 상태(34_540)에 저장될 수 있음을 주목한다. 디바이스 상에 있는 임의의 메시지, 예컨대 들어오고 나가는 메시지들은 개시된 프로세스를 사용하여 분석될 수 있음을 또한 주목한다.
일부 실시예들에서, 식별된 엔티티는 이름이고, 식별된 연락처 정보는 전화 번호, 주소, 사업체 또는 소셜 네트워킹 별칭이다(34_706).
일부 실시예들에서, 디바이스는 메시지 내의 서명란을 인식함으로써 메시지 내의 비구조화된 콘텐츠를 식별할 수 있다. 예를 들어, 메시지 내의 엔티티 및 연관된 연락처 정보를 식별하기 위하여, 디바이스는 메시지의 서명란을 식별하고, 엔티티 및 연락처 정보에 대해 식별된 서명란을 분석할 수 있다(34_708). 메시지는 이메일을 포함할 수 있고 서명란은 이메일 서명일 수 있다(34_710). 이메일은 이메일 스레드 내에 하나 이상의 이전 이메일을 포함하고, 이메일 서명을 식별하는 것은 이메일 스레드 내의 하나 이상의 이전 이메일을 분석하는 것을 포함할 수 있다(34_712). 이메일의 인용 층들을 펼침으로써, 디바이스는 이메일 스레드 내의 상이한 이메일에서 연락처 정보 위치를 잘못 연관시키는 것을 피할 수 있다.
일부 실시예들에서, 디바이스는 데이터 검출기를 이용하여 정의적 문구들을 검색함으로써 메시지 내의 비구조화된 콘텐츠를 식별할 수 있다. 예를 들어, 메시지 내의 엔티티 및 연관된 연락처 정보를 식별하기 위하여, 디바이스는 미리정의된 문구들의 집합에 기초하여 하나 이상의 문구를 메시지 내에서 식별하고, 엔티티 및 연락처 정보에 대해 하나 이상의 식별된 문구를 분석할 수 있다(34_714). 디바이스는 미리정의된 문구들의 집합을 네트워크를 통해 업데이트할 수 있는데, 이는 디바이스로 하여금 정확한 문구들을 계속해서 사용하게 할 수 있다(34_716). 디바이스는 또한, 제안된 연락처를 거절하라는 요청의 결과로서 미리정의된 문구들 중 하나 이상의 문구를 다운그레이드(downgrade)할 수 있다(34_718). 다시 말하면, 사용자들이 특정 문구들의 사용을 통해 식별된 제안들을 계속해서 거절하는 경우, 그것은 그러한 문구들이 부정확하다는 표시일 수 있다. 디바이스는 또한 데이터베이스 내의 연락처 정보를 (메시지, 캘린더 이벤트와 같은) 전자 디바이스 상의 연락처 정보와 연관된 언어와 상호상관시킴으로써 미리정의된 문구들 중 하나 이상의 문구를 생성할 수 있다(34_720). 이러한 방식으로, 디바이스는 연락처 정보를 갖는 메시지 내의 어느 정확한 언어가 예를 들어, 사용자로 하여금 연락처 정보를 갖는 연락처를 생성하거나 업데이트하게 할지를 결정할 수 있다.
일부 실시예들에서, 제안된 연락처는 도 34a의 데이터 아키텍처를 고려하여 검색가능할 수 있다. 예를 들어, 디바이스는 (예를 들어, 디바이스 상의 애플리케이션을 통해 연락처에 대한 사용자 검색에 의해) 연락처에 대한 요청을 수신하고, 연락처에 대한 요청에 응답하여, 제안된 연락처를 검색할 수 있다(34_726).
일부 실시예들에서, 디바이스는 연락처의 생성에 응답하여, 제안된 연락처를 네트워크를 통해 원격 데이터베이스에 저장하는 것을 억제할 수 있다(34_728). 예를 들어, 제안된 연락처가 제안된 상태(34_540)에 있는 경우, 디바이스는 연락처들이 네트워크를 통해 다수의 클라이언트들 상에서 업데이트되게 하는 업데이트 또는 동기화 서비스(예컨대, 디바이스 상의 애플리케이션)에 연락처를 푸시하는 것을 억제할 수 있다.
일부 실시예들에서, 디바이스는 제안된 연락처를 데이터베이스에 추가하라는 요청(예컨대, 도 34f, "Add to Contacts"(34_618))을 수신하고, 요청에 응답하여, 생성된 연락처가 제안된 연락처라는 표시 없이, 생성된 연락처를 데이터베이스에 저장(예를 들어, 연락처의 상태를 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경)할 수 있다(34_730). 제안된 연락처를 데이터베이스에 추가하라는 요청에 응답하여, 디바이스는 생성된 연락처가 제안된 연락처라는 표시 없이, 예를 들어, 업데이트 또는 동기화 서비스에 연락처를 푸시함으로써, 생성된 연락처를 네트워크를 통해 원격 데이터베이스에 저장할 수 있다(34_732).
일부 실시예들에서, 디바이스는 제안된 연락처를 거절하라는 요청(예를 들어, 도 34f, "Ignore"(34_620))을 수신하고, 요청에 응답하여, 제안된 연락처를 거절하여, 향후 메시지 내에서 엔티티 및 연락처 정보가 식별되는 결과로서 제안된 연락처가 향후 생성되는 것을 방지할 수 있다(34_734). 이는 거절된 연락처를 거절된 상태(34_560)에 저장함으로써 구현될 수 있고, 따라서 디바이스는 어느 것이 이미 거절되었는지를 알 수 있다.
도 34l 및 도 34m는 일부 실시예들에 따른, 기존 연락처를 제안된 연락처 정보의 항목으로 업데이트하기 위한 예시적인 프로세스의 흐름도를 예시한다. 프로세스는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34f, 메시지 부분(34_614) 내의 이메일)를 수신할 수 있고(34_802), 수신된 메시지 내에서 엔티티(예컨대, 도 34f, "John Appleseed") 및 엔티티와 연관된 연락처 정보(예컨대, 도 34f, "405-123-6633")의 항목을 식별할 수 있다(34_804). 디바이스는 식별된 엔티티와 연관된 연락처(예컨대, 도 34a, 연락처(34_530A))가 데이터베이스 내의 복수의 연락처 중에 존재하고 연락처가 식별된 연락처 정보의 항목을 포함하지 않는다고 결정할 수 있다(34_822). 이러한 결정에 응답하여, 디바이스는 연락처 정보의 항목, 및 연락처 정보의 항목이 제안된 연락처 정보의 항목(예컨대, 제안된 상태(34_540)에 있음)이라는 표시(예컨대, 메타데이터)를 포함하도록 연락처를 업데이트할 수 있다(34_824). 디바이스 상에 있는 임의의 메시지, 예컨대 들어오고 나가는 메시지들은 개시된 프로세스를 사용하여 분석될 수 있음을 또한 주목한다.
일부 실시예들에서, 식별된 엔티티는 이름을 포함하고, 식별된 연락처 정보의 항목은 전화 번호, 주소, 사업체 또는 소셜 네트워킹 별칭이다(34_806).
일부 실시예들에서, 디바이스는 메시지 내의 서명을 인식함으로써 메시지 내의 비구조화된 콘텐츠를 식별할 수 있다. 예를 들어, 메시지 내의 엔티티 및 연관된 연락처 정보의 항목을 식별하기 위하여, 디바이스는 메시지의 서명란을 식별하고, 엔티티 및 연락처 정보의 항목에 대해 식별된 서명란을 분석할 수 있다(34_808). 메시지는 이메일을 포함할 수 있고 서명란은 이메일 서명일 수 있다(34_810). 이메일은 이메일 스레드 내에 하나 이상의 이전 이메일을 포함하고, 이메일 서명을 식별하는 것은 이메일 스레드 내의 하나 이상의 이전 이메일을 분석하는 것을 포함할 수 있다(34_812). 이메일의 인용 층들을 펼침으로써, 디바이스는 이메일 스레드 내의 상이한 이메일에서 연락처 정보 위치를 잘못 연관시키는 것을 피할 수 있다.
일부 실시예들에서, 디바이스는 데이터 검출기를 이용하여 정의적 문구들을 검색함으로써 메시지 내의 비구조화된 콘텐츠를 식별할 수 있다. 예를 들어, 메시지 내의 엔티티 및 연관된 연락처 정보의 항목을 식별하기 위하여, 디바이스는 미리정의된 문구들의 집합에 기초하여 하나 이상의 문구를 메시지 내에서 식별하고, 엔티티 및 연락처 정보의 항목에 대해 하나 이상의 식별된 문구를 분석할 수 있다(34_814). 디바이스는 미리정의된 문구들의 집합을 네트워크를 통해 업데이트할 수 있는데, 이는 디바이스로 하여금 정확한 문구들을 계속해서 사용하게 할 수 있다(34_816). 디바이스는 또한 제안된 연락처 정보의 항목을 거절하라는 요청의 결과로서 미리정의된 문구들 중 하나 이상의 문구를 다운그레이드할 수 있다(34_818). 다시 말하면, 사용자들이 특정 문구들의 사용을 통해 식별된 제안들을 계속해서 거절하는 경우, 그것은 그러한 문구들이 부정확하다는 표시일 수 있다. 디바이스는 또한 데이터베이스 내의 연락처 정보를 (메시지, 캘린더 이벤트 등과 같은) 전자 디바이스 상의 연락처 정보와 연관된 언어와 상호상관시킴으로써 미리정의된 문구들 중 하나 이상의 문구를 생성할 수 있다(34_820). 이러한 방식으로, 디바이스는 연락처 정보를 갖는 메시지 내의 어느 정확한 언어가 예를 들어, 사용자로 하여금 연락처 정보를 갖는 연락처를 생성하거나 업데이트하게 할지를 결정할 수 있다.
일부 실시예들에서, 제안된 연락처는 도 34a의 데이터 아키텍처를 고려하여 검색가능할 수 있다. 예를 들어, 디바이스는 (예를 들어, 디바이스 상의 애플리케이션을 통해 연락처에 대한 사용자 검색에 의해) 연락처에 대한 요청을 수신하고, 연락처에 대한 요청에 응답하여, 제안된 연락처 정보의 항목을 검색할 수 있다(34_826).
일부 실시예들에서, 디바이스는 연락처의 업데이트에 응답하여, 제안된 연락처 정보의 항목을 네트워크를 통해 원격 데이터베이스에 저장하는 것을 억제할 수 있다(34_828). 제안된 연락처 정보의 항목이 제안된 상태(34_540)에 있는 경우, 디바이스는 연락처들이 네트워크를 통해 다수의 클라이언트들 상에서 업데이트되게 하는 업데이트 또는 동기화 서비스(예컨대, 디바이스 상의 애플리케이션)에 연락처 정보의 항목을 푸시하는 것을 억제할 수 있다.
일부 실시예들에서, 디바이스는 제안된 연락처 정보의 항목을 데이터베이스에 추가하라는 요청(예컨대, 도 34d, "Add to Contacts"(34_602))을 수신하고, 요청에 응답하여, 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시 없이, 업데이트된 연락처를 데이터베이스에 저장(예를 들어, 연락처 정보의 상태를 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경)할 수 있다(34_830). 데이터베이스에 제안된 연락처 정보의 항목을 추가하라는 요청에 응답하여, 디바이스는 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시 없이, 예를 들어, 업데이트/동기화 서비스에 연락처 정보를 푸시함으로써, 업데이트된 연락처를 네트워크를 통해 원격 데이터베이스에 저장할 수 있다(34_832).
일부 실시예들에서, 디바이스는 제안된 연락처 정보의 항목을 거절하라는 요청(예컨대, 도 34d, "Ignore"(34_604))을 수신하고, 요청에 응답하여, 제안된 연락처 정보의 항목을 거절하여, 향후 메시지 내에서 엔티티 및 연락처 정보의 항목이 식별되는 결과로서 연락처가 제안된 연락처 정보의 항목을 이용하여 향후 업데이트되는 것을 방지할 수 있다(34_834). 이는 거절된 연락처 정보를 거절된 상태(34_560)에 저장함으로써 구현될 수 있고, 따라서 디바이스는 어느 것이 이미 거절되었는지를 알 수 있다.
도 34n 및 도 34o는 일부 실시예들에 따른, 제안된 연락처 정보를 갖는 연락처를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다. 프로세스는 디스플레이를 갖는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34f, 메시지 부분(34_614) 내의 이메일)를 수신할 수 있고(34_902), 수신된 메시지 내에서 엔티티(예컨대, 도 34f, "John Appleseed") 및 엔티티와 연관된 연락처 정보(예컨대, 도 34f, "405-123-6633")를 식별할 수 있다(34_904). 디바이스는 식별된 연락처 정보가 제안된 연락처 정보라는 표시(예컨대, 메타데이터)를 생성하고(34_906), 엔티티와 연관된 연락처에 대응하는 제1 사용자 인터페이스(예컨대, 도 34c)를 디스플레이할 수 있다(34_908). 제1 사용자 인터페이스는, 생성된 표시에 기초하여, 식별된 연락처 정보가 제안된 연락처 정보라는 것을 나타내는 제1 사용자 인터페이스 객체(예컨대, "Suggestion")를 포함할 수 있다.
일부 실시예들에서, 디바이스는 제안된 연락처 정보의 선택에 대응하는 입력이 엔티티에 연락하기 위하여 애플리케이션을 호출하는 것을 방지할 수 있다(34_910)(예컨대, 도 34c, 제안된 번호를 선택하는 것이 그 번호에 전화를 거는 것은 아님).
일부 실시예들에서, 디바이스는 제1 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력을 검출하고, 검출에 응답하여, 선택될 때 전자 디바이스로 하여금 식별된 연락처 정보를 데이터베이스에 추가하게 하는 식별된 연락처 정보와 연관된 제2 사용자 인터페이스 객체(예컨대, 도 34d, "Add to Contacts"(34_602))를 포함하는 제2 사용자 인터페이스(예컨대, 도 34d)를 디스플레이할 수 있다(34_912). 제2 사용자 인터페이스는, 선택될 때 전자 디바이스로 하여금 제2 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 식별된 연락처 정보와 연관된 제3 사용자 인터페이스 객체(예컨대, 도 34d, "Ignore"(34_604))를 포함할 수 있다(34_914). 제2 사용자 인터페이스를 디스플레이하는 것은 제1 사용자 인터페이스를 디스플레이하는 것을 중지할 수 있다(34_916). 디바이스는 식별된 연락처 정보를 데이터베이스에 추가하는 것에 응답하여, 제1 사용자 인터페이스 객체의 디스플레이를 중지할 수 있다(34_918).
일부 실시예들에서, 제2 사용자 인터페이스는 메시지(예컨대, 도 34d, "Related email")의 적어도 일부분을 디스플레이할 수 있다(34_920). 디바이스는 디스플레이된 메시지의 선택에 대응하는 입력을 검출하고, 검출에 응답하여, 메시지를 열기 위해 애플리케이션(예컨대, 이메일 클라이언트 모듈(140))을 호출할 수 있다(예컨대, 도 34f)(34_922). 메시지는 이메일일 수 있고 애플리케이션은 이메일 애플리케이션일 수 있다(34_924).
일부 실시예들에서, 디바이스는 제2 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력을 검출하고, 검출에 응답하여, 식별된 연락처 정보를 사용하여 엔티티에 연락하기 위하여 애플리케이션(예컨대, 전화 모듈(138))을 호출할 수 있다(34_926). 제2 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력의 검출에 응답하여, 디바이스는 식별된 연락처 정보를 데이터베이스에 추가(예컨대, 연락처 정보의 상태를 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경)할 수 있다(34_928). 디바이스는 식별된 연락처 정보를 데이터베이스에 추가하는 것에 응답하여, 제1 사용자 인터페이스 객체의 디스플레이를 중지할 수 있다(34_918).
도 34p은 일부 실시예들에 따른, 메시지를 갖는 제안된 연락처 정보를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다. 프로세스는 디스플레이를 갖는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34f, 메시지 부분(34_614) 내의 이메일)를 수신할 수 있고(34_1002), 수신된 메시지 내에서 엔티티(예컨대, 도 34f, "John Appleseed") 및 엔티티와 연관된 연락처 정보(예컨대, 도 34f, "405-123-6633")를 식별할 수 있다(34_1004). 메시지는 이메일일 수 있다(34_1006). 식별된 엔티티는 이름일 수 있고, 식별된 연락처 정보는 전화 번호, 주소, 사업체 또는 소셜 네트워킹 별칭일 수 있다(34_1008).
디바이스는 수신된 메시지에 대응하는 제1 사용자 인터페이스(예컨대, 도 34f)를 디스플레이할 수 있다(34_1010). 제1 사용자 인터페이스는 전자 디바이스에 수신된 메시지의 콘텐츠를 포함하는 제1 부분(예컨대, 도 34f, 메시지 부분(34_614)), 및 식별된 엔티티에 대응하는 제1 사용자 인터페이스 객체(예컨대, 도 34f, "John Appleseed"), 식별된 연락처 정보에 대응하는 제2 사용자 인터페이스 객체(예컨대, 도 34f, "405-123-6633"), 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 정보를 데이터베이스에 추가(예컨대, 연락처 정보를 연락처로서 저장)하게 하는 식별된 연락처 정보와 연관된 제3 사용자 인터페이스 객체(예컨대, 도 34f, "Add to Contacts"(34_618))를 포함하는 제2 부분(예컨대, 도 34f, 제안 부분(34_612))을 포함할 수 있다. 제2 부분은, 선택될 때 전자 디바이스로 하여금 제3 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 식별된 연락처 정보와 연관된 제4 사용자 인터페이스 객체(예컨대, 도 34f, "Ignore"(34_620))를 포함할 수 있다(34_1012).
도 34q 및 도 34r는 일부 실시예들에 따른, 제안된 캘린더 이벤트를 생성하기 위한 예시적인 프로세스의 흐름도를 예시한다. 프로세스는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34g, 메시지 부분(34_622) 내의 이메일)를 수신할 수 있고(34_1102), 수신된 메시지 내에서 이벤트 정보(예컨대, 도 34g, "Dinner", "Any Sushi Bar", "Fri, March 7th", 또는 "9:50 PM")를 식별할 수 있다(34_1104). 디바이스는 식별된 이벤트 정보와 연관된 캘린더 이벤트(예컨대, 도 34b, 캘린더 이벤트(34_530B))를 생성할 수 있는데, 생성된 캘린더 이벤트는 이벤트 정보, 및 생성된 캘린더 이벤트가 제안된 캘린더 이벤트(예컨대, 제안된 상태(34_540)에 있음)라는 표시(예컨대, 메타 데이터)를 포함한다(34_1122).
일부 실시예들에서, 식별된 이벤트 정보는 날짜 및 시간이다(34_1106). 일부 실시예들에서, 디바이스는 이러한 메시지들에 의해 제공된 특정 포맷으로 이벤트 정보를 인식하도록 구성된 템플릿을 사용함으로써 메시지 내의 구조화된 콘텐츠를 식별할 수 있다. 예를 들어, 메시지 내의 이벤트 정보를 식별하기 위하여, 디바이스는 메시지 내의 콘텐츠의 포맷을 식별하고, 메시지 내의 콘텐츠의 포맷에서의 이벤트 정보를 인식하도록 구성되는 템플릿을 미리정의된 템플릿들의 집합으로부터 식별하고, 이벤트 정보에 대해 식별된 템플릿을 이용하여 콘텐츠를 분석할 수 있다(34_1108). 메시지는 이메일을 포함할 수 있고 콘텐츠는 예약(예컨대, 도 34g)을 포함할 수 있다(34_1110). 디바이스는 네트워크를 통해 미리정의된 템플릿의 집합을 업데이트할 수 있는데, 이는 디바이스로 하여금 정확한 템플릿들을 계속해서 사용하게 할 수 있다(34_1112).
일부 실시예들에서, 디바이스는 데이터 검출기를 이용하여 이벤트 정보에 대한 참조들을 검색함으로써 메시지 내의 비구조화된 콘텐츠를 식별할 수 있다. 예를 들어, 메시지 내의 이벤트 정보를 식별하기 위하여, 디바이스는 날짜 및 시간에 대한 미리정의된 참조들의 집합에 기초하여 날짜 및 시간에 대한 하나 이상의 참조를 메시지 내에서 식별하고, 이벤트 정보에 대해 날짜 및 시간에 대한 하나 이상의 식별된 참조를 분석할 수 있다(34_1114).
디바이스는 날짜 및 시간에 대한 미리정의된 참조들의 집합을 네트워크를 통해 업데이트할 수 있는데, 이는 디바이스로 하여금 정확한 참조들을 계속해서 사용하게 할 수 있다(34_1116). 디바이스는 제안된 캘린더 이벤트를 거절하라는 요청의 결과로서 날짜 및 시간에 대한 미리정의된 참조들 중 하나 이상의 참조를 다운그레이드할 수 있다(34_1118). 다시 말하면, 사용자들이 날짜 및 시간에 대한 특정 참조들의 사용을 통해 식별된 제안들을 계속해서 거절하는 경우, 그것은 그러한 참조들이 부정확하다는 표시일 수 있다. 디바이스는 복수의 캘린더 이벤트를 포함하는 데이터베이스 내의 이벤트 정보를 전자 디바이스 상의 이벤트 정보와 연관된 언어와 상호상관시킴으로써 날짜 및 시간에 대한 미리정의된 참조들 중 하나 이상의 참조를 생성할 수 있다(34_1120). 이러한 방식에서, 디바이스는 이벤트 정보를 갖는 메시지 내의 무슨 언어가 예를 들어, 사용자로 하여금 이벤트 정보를 갖는 캘린더 이벤트를 생성하거나 업데이트하게 하는지를 더 잘 결정할 수 있다.
일부 실시예들에서, 제안된 캘린더 이벤트는 도 34a 및 도 34b의 데이터 아키텍처를 고려하여 검색가능할 수 있다. 예를 들어, 디바이스는 (예를 들어, 디바이스 상의 애플리케이션을 통해 캘린더 이벤트에 대한 사용자 검색에 의해) 캘린더 이벤트에 대한 요청을 수신하고, 캘린더 이벤트에 대한 요청에 응답하여, 제안된 캘린더 이벤트를 검색할 수 있다(34_1124).
일부 실시예들에서, 디바이스는 캘린더 이벤트의 생성에 응답하여, 제안된 캘린더 이벤트를 네트워크를 통해 원격 데이터베이스에 저장하는 것을 억제할 수 있다(34_1126). 예를 들어, 제안된 캘린더 이벤트가 제안된 상태(34_540)에 있는 경우, 디바이스는 캘린더 이벤트들이 네트워크를 통해 다수의 클라이언트들 상에서 업데이트되게 하는 업데이트 또는 동기화 서비스(예컨대, 디바이스 상의 애플리케이션)에 캘린더 이벤트를 푸시하는 것을 억제할 수 있다.
일부 실시예들에서, 디바이스는 제안된 캘린더 이벤트를 복수의 캘린더 이벤트를 포함하는 데이터베이스에 추가하라는 요청(예컨대, 도 34g, "Add to Calendar"(34_626))을 수신하고, 이에 응답하여, 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시 없이, 생성된 캘린더 이벤트를 데이터베이스에 저장(예를 들어, 캘린더 이벤트의 상태를 제안된 상태(34_540)로부터 추가된 상태(34_550)로 변경)할 수 있다(34_1128). 데이터베이스에 제안된 캘린더 이벤트를 추가하라는 요청에 응답하여, 디바이스는 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시 없이, 예를 들어, 업데이트 또는 동기화 서비스에 캘린더 이벤트를 푸시함으로써, 생성된 캘린더 이벤트를 네트워크를 통해 원격 데이터베이스에 저장할 수 있다(34_1130).
일부 실시예들에서, 디바이스는 제안된 캘린더 이벤트를 거절하라는 요청(예를 들어, 도 34g, "Ignore"(34_628))을 수신하고, 거절하라는 요청에 응답하여, 향후 메시지 내에서 이벤트 정보가 식별되는 결과로서 제안된 캘린더 이벤트가 향후 생성되는 것을 방지할 수 있다(34_1132). 이는 거절된 이벤트를 거절된 상태(34_560)에 저장함으로써 구현될 수 있고, 따라서 디바이스는 어느 것이 이미 거절되었는지를 알 수 있다.
도 34s는 일부 실시예들에 따른, 메시지를 갖는 제안된 이벤트 정보를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다. 프로세스는 디스플레이를 갖는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34g, 메시지 부분(34_622) 내의 이메일)를 수신할 수 있고(34_1202), 수신된 메시지 내에서 이벤트 정보(예컨대, 도 34g, "Dinner", "Any Sushi Bar", "Fri, March 7th", 또는 "9:50 PM")를 식별할 수 있다(34_1204). 메시지는 이메일일 수 있다(34_1206). 식별된 이벤트 정보는 날짜 및 시간일 수 있다(34_1208).
디바이스는 수신된 메시지에 대응하는 제1 사용자 인터페이스(예컨대, 도 34g)를 디스플레이할 수 있다(34_1210). 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분(예컨대, 도 34g, 메시지 부분(34_622)), 및 식별된 이벤트 정보에 대응하는 제1 사용자 인터페이스 객체(예컨대, 도 34g, "Dinner", "Any Sushi Bar", "Fri, March 7th", 또는 "9:50 PM"), 및 선택될 때 전자 디바이스로 하여금 식별된 이벤트 정보를 복수의 캘린더 이벤트를 포함하는 데이터베이스에 추가(예컨대, 이벤트 정보를 캘린더 이벤트로서 저장)하게 하는 식별된 이벤트 정보와 연관된 제2 사용자 인터페이스 객체(예컨대, 도 34g, "Add to Calendar"(34_626))를 포함하는 제2 부분(예컨대, 도 34g, 제안 부분(34_620))을 포함할 수 있다. 제2 부분은, 선택될 때 전자 디바이스로 하여금 제2 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 식별된 이벤트 정보와 연관된 제3 사용자 인터페이스 객체(예컨대, 도 34g, "Ignore"(34_628))를 포함할 수 있다(34_1212).
도 34t은 일부 실시예들에 따른, 메시지를 갖는 다수의 제안된 연락처 또는 이벤트 정보를 디스플레이하기 위한 예시적인 프로세스의 흐름도를 예시한다.
프로세스는 디스플레이를 갖는 전자 디바이스(예컨대, 디바이스(34_500))에서 수행될 수 있다.
전자 디바이스는 메시지(예컨대, 도 34h, 메시지 부분(34_632) 내의 이메일)를 수신할 수 있고(34_1302), 수신된 메시지 내에서, 연락처 또는 이벤트 정보의 다수의 인스턴스들(예컨대, 도 34h, 첨부된 여행 일정 내의 "2 Events, 1 Contact")을 식별할 수 있다(34_1304).
디바이스는 수신된 메시지에 대응하는 제1 사용자 인터페이스(예컨대, 도 34h)를 디스플레이할 수 있다(34_1306). 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분(예컨대, 도 34h, 메시지 부분(34_632)), 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록을 포함하는 제2 사용자 인터페이스(도 34i)를 디스플레이하게 하는 제2 부분(예컨대, 도 34h, 제안 부분(34_630))을 포함할 수 있다.
일부 실시예들에서, 디바이스는 제1 사용자 인터페이스의 제2 부분의 선택에 대응하는 입력을 검출하고, 검출에 응답하여, 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록, 및 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들 각각에 대해, 선택될 때 전자 디바이스로 하여금 식별된 정보를 데이터베이스에 추가(예컨대, 캘린더 이벤트로서 이벤트 정보, 또는 연락처로서 연락처 정보를 저장)하게 하는 제1 사용자 인터페이스 객체(예컨대, 도 34i, "Add to Calendar", 또는 "Add to Contacts")를 포함하는 제2 사용자 인터페이스를 디스플레이할 수 있다(34_1308). 제2 사용자 인터페이스는, 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들 각각에 대해, 선택될 때 전자 디바이스로 하여금 제1 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 제2 사용자 인터페이스 객체(예컨대, 도 34i, "Ignore")를 포함할 수 있다(34_1310). 제2 사용자 인터페이스는, 선택될 때 전자 디바이스로 하여금 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 그룹화(예컨대, 캘린더 이벤트 또는 연락처) 각각을 데이터베이스에 추가하게 하는 제3 사용자 인터페이스 객체(예컨대, 도 34i, "Add All"(34_634))를 포함할 수 있다(34_1312). 제2 사용자 인터페이스를 디스플레이하는 것은 제1 사용자 인터페이스를 디스플레이하는 것을 중지할 수 있다(34_1314).
도 34j 내지 도 34t에서의 동작들이 기술된 특정 순서는 예시적인 것이며 기술된 순서가 동작들이 수행될 수 있는 유일한 순서라는 것을 나타내는 것으로 의도되지는 않는다는 것이 이해되어야 한다. 당업자는 이 섹션에 기술된 동작들을 재순서화하는 다양한 방식들을 인식할 것이다. 간결함을 위해, 이 상세사항들이 여기서 반복되지 않는다. 그에 부가하여, 프로세스들(34_700 내지 34_1300)(도 34_7 내지 도 34t)의 태양들이 서로 통합될 수 있다는 것에 유의해야 한다.
전술된 정보 프로세싱 프로세스들에서의 동작들은 범용 프로세서들 또는 주문형 칩(application specific chip)들과 같은 정보 프로세싱 장치 내의 하나 이상의 기능 모듈을 구동시킴으로써 구현될 수 있다. 이들 모듈들, 이들 모듈들의 조합들, 및/또는 일반적인 하드웨어(예컨대, 도 1a, 도 1b 및 도 3에 관하여 전술된 바와 같음)와의 이들의 조합 모두는 본 발명의 보호 범위 내에 포함된다.
도 34u는 일부 예들에서, 전술한 특징들을 수행하는 전자 디바이스(34_1400)의 예시적인 기능 블록들을 도시한다. 도 34u에 도시된 바와 같이, 전자 디바이스(34_1400)는 그래픽 객체들을 디스플레이하도록 구성된 디스플레이 유닛(34_1402); 사용자 제스처들을 수신하도록 구성된 터치 감응형 표면 유닛(34_1404); 외부 전자 디바이스들을 검출하고 그와 통신하도록 구성된 하나 이상의 RF 유닛들(34_1406); 및 디스플레이 유닛(34_1402), 터치 감응형 표면 유닛(34_1404), 및 RF 유닛들(34_1406)에 결합된 프로세싱 유닛(34_1408)을 포함한다.
일부 실시예들에서, 프로세싱 유닛(34_1408)은 하나 이상의 애플리케이션들(34_1412)을 구동하는 운영 체제(34_1410)를 지원하도록 구성된다. 일부 실시예들에서, 프로세싱 유닛(34_1408)은, RF 유닛(34_1406)으로부터, 무선 통신 범위 내에 있는 외부 디바이스를 표현하는 데이터를 수신하고, 터치 감응형 표면 유닛(34_1404) 상에 그래픽 사용자 인터페이스 어포던스를 디스플레이하고, 디스플레이된 어포던스 상의 접촉을 검출하는 것에 응답하여, 외부 디바이스 상에서 실행되고 있는 애플리케이션에 대응하는 디바이스(34_1400) 상에서 애플리케이션을 개시하도록 구성된다.
디바이스(34_1400)의 기능 블록들은, 선택적으로, 다양한 기술된 예들의 원리들을 수행하기 위한 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현된다. 당업자라면 다양한 기술된 예들의 원리들을 구현하기 위해 도 34u에 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 이 섹션의 설명은, 선택적으로, 이 섹션에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다.
도 34v는 일부 예들에서, 전술한 특징들을 수행하는 다른 전자 디바이스(34_1500)의 예시적인 기능 블록들을 도시한다. 도 34u에 도시된 바와 같이, 전자 디바이스(34_1500)는 그래픽 객체들을 디스플레이하도록 구성된 디스플레이 유닛(34_1402); 사용자 제스처들을 수신하도록 구성된 터치 감응형 표면 유닛(34_1504); 외부 전자 디바이스들을 검출하고 그와 통신하도록 구성된 하나 이상의 RF 유닛들(34_1506); 및 디스플레이 유닛(34_1502), 터치 감응형 표면 유닛(34_1504), 및 RF 유닛들(34_1506)에 결합된 프로세싱 유닛(34_1508)을 포함한다.
일부 실시예들에서, 프로세싱 유닛(34_1508)은 전술된 다양한 기능들을 수행하기 위해 유닛들(34_1510 내지 34_1520) 중 하나 이상을 지원하도록 구성된다. 예를 들어, 수신 유닛(34_1510)은 전술된 수신 기능들 중 하나 이상을 수행하도록 구성된다(예컨대, 메시지를 수신하는 것). 식별 유닛(34_1512)은 전술된 식별 기능들 중 하나 이상을 수행하도록 구성된다(예컨대, 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 것; 수신된 메시지 내에서, 이벤트 정보를 식별하는 것; 또는 수신된 메시지 내에서, 연락처 또는 이벤트 정보의 다수의 인스턴스들을 식별하는 것). 결정 유닛(34_1514)은 전술된 결정 기능들 중 하나 이상을 수행하도록 구성된다(예컨대, 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처들 중에 존재하지 않는다고 결정하는 것; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처들 중에 존재하고 연락처가 식별된 연락처 정보의 항목을 포함하지 않는다고 결정하는 것). 생성 유닛(34_1516)은 전술된 생성 단계들 중 하나 이상을 수행하도록 구성된다(예컨대, 결정하는 것에 응답하여, 엔티티와 연관된 연락처를 생성하는 것; 식별된 연락처 정보가 제안된 연락처 정보라는 표시를 생성하는 것; 식별된 이벤트 정보와 연관된 캘린더 이벤트를 생성하는 것). 업데이트 유닛(34_1518)은 전술한 업데이트 단계들 중 하나 이상을 수행하도록 구성된다(예를 들어, 결정하는 것에 응답하여, 연락처 정보의 항목, 및 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시를 포함하도록 연락처를 업데이트하는 것). 표시 유닛(34_1520)은 전술된 디스플레이하는 단계들 중 하나 이상을 수행하도록 구성된다(예컨대, 엔티티 또는 수신된 메시지와 연관된 연락처에 대응하는 제1 사용자 인터페이스를, 예를 들어 디스플레이 유닛(34_1502) 상에 디스플레이하는 것).
디바이스(34_1500)의 기능 블록들은, 선택적으로, 다양한 기술된 예들의 원리들을 수행하기 위한 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현된다. 당업자라면 다양한 기술된 예들의 원리들을 구현하기 위해 도 34v에 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 이 섹션의 설명은, 선택적으로, 이 섹션에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다.
구조화된 제안에 대한 예시적인 방법, 디바이스 시스템, 및 컴퓨터 판독가능 매체
일 태양에서, 전자 디바이스는 사용자들에게 그들의 메시지들에 기초하여 연락처들 및 캘린더 이벤트들을 제안한다. 디바이스는 연락처 및 이벤트 정보에 대해 사용자의 메시지들을 분석하고 이러한 정보에 기초하여 사용자를 위해 제안된 연락처들 및 캘린더 이벤트들을 자동으로 생성하거나 업데이트할 수 있다. 제안된 연락처들 및 캘린더 이벤트들은 그것들이 사용자에 의해 수동으로 입력된 것처럼 검색가능할 수 있고, 사용자는 제안된 연락처들 및 캘린더 이벤트들을 추가하거나 무시하도록 선택할 수 있다.
일부 구현예들에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 단계; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처 중에 존재하지 않는다고 결정하는 단계; 및 결정하는 단계에 응답하여, 엔티티와 연관된 연락처를 생성하는 단계를 포함하고, 생성된 연락처는 연락처 정보, 및 생성된 연락처가 제안된 연락처라는 표시를 포함한다.
일부 구현예들에서, 식별된 엔티티는 이름을 포함하고, 식별된 연락처 정보는 전화 번호, 주소, 사업체 또는 소셜 네트워킹 별칭을 포함한다. 일부 구현예들에서, 식별하는 단계는, 메시지의 서명란을 식별하는 단계, 및 엔티티 및 연락처 정보에 대해 식별된 서명란을 분석하는 단계를 포함한다. 일부 구현예들에서, 메시지는 이메일을 포함하고 서명란은 이메일 서명을 포함한다. 일부 구현예들에서, 이메일은 이메일 스레드 내에 하나 이상의 이전 이메일을 포함하고, 이메일 서명을 식별하는 단계는 이메일 스레드 내의 하나 이상의 이전 이메일을 분석하는 단계를 포함한다. 일부 구현예들에서, 식별하는 단계는, 미리정의된 문구들의 집합에 기초하여 하나 이상의 문구를 메시지 내에서 식별하는 단계; 및 엔티티 및 연락처 정보에 대해 하나 이상의 식별된 문구를 분석하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 미리정의된 문구들의 집합을 네트워크를 통해 업데이트하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처를 거절하라는 요청의 결과로서 미리정의된 문구들 중 하나 이상의 문구를 다운그레이드하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 데이터베이스 내의 연락처 정보를 전자 디바이스 상의 연락처 정보와 연관된 언어와 상호상관시킴으로써 미리정의된 문구들 중 하나 이상의 문구를 생성하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 연락처에 대한 요청을 수신하는 단계; 및 연락처에 대한 요청에 응답하여, 제안된 연락처를 검색하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 연락처의 생성에 응답하여, 제안된 연락처를 네트워크를 통해 원격 데이터베이스에 저장하는 것을 억제하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처를 데이터베이스에 추가하라는 요청을 수신하는 단계; 및 제안된 연락처를 데이터베이스에 추가하라는 요청에 응답하여, 생성된 연락처가 제안된 연락처라는 표시 없이, 생성된 연락처를 데이터베이스에 저장하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처를 데이터베이스에 추가하라는 요청에 응답하여, 생성된 연락처가 제안된 연락처라는 표시 없이, 생성된 연락처를 네트워크를 통해 원격 데이터베이스에 저장하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처를 거절하라는 요청을 수신하는 단계; 및 제안된 연락처를 거절하라는 요청에 응답하여, 향후 메시지 내에서 엔티티 및 연락처 정보가 식별되는 결과로서 제안된 연락처가 향후 생성되는 것을 방지하는 단계를 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하기 위한 수단; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처 중에 존재하지 않는다고 결정하기 위한 수단; 및 결정하는 것에 응답하여, 엔티티와 연관된 연락처를 생성하기 위한 수단을 포함하고, 생성된 연락처는 연락처 정보, 및 생성된 연락처가 제안된 연락처라는 표시를 포함한다.
다른 태양에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보의 항목을 식별하는 단계; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처 중에 존재하고 연락처가 식별된 연락처 정보의 항목을 포함하지 않는다고 결정하는 단계; 및 결정하는 단계에 응답하여, 연락처 정보의 항목 및 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시를 포함하도록 연락처를 업데이트하는 단계를 포함한다.
일부 구현예들에서, 식별된 엔티티는 이름을 포함하고 식별된 연락처 정보의 항목은 전화 번호, 주소, 사업체 또는 소셜 네트워킹 별칭을 포함한다. 일부 구현예들에서, 식별하는 단계는, 메시지의 서명란을 식별하는 단계, 및 엔티티 및 연락처 정보의 항목에 대해 식별된 서명란을 분석하는 단계를 포함한다. 일부 구현예들에서, 메시지는 이메일을 포함하고 서명란은 이메일 서명을 포함한다. 일부 구현예들에서, 이메일은 이메일 스레드 내에 하나 이상의 이전 이메일을 포함하고, 이메일 서명을 식별하는 단계는 이메일 스레드 내의 하나 이상의 이전 이메일을 분석하는 단계를 포함한다. 일부 구현예들에서, 식별하는 단계는, 미리정의된 문구들의 집합에 기초하여 하나 이상의 문구를 메시지 내에서 식별하는 단계; 및 엔티티 및 연락처 정보의 항목에 대해 하나 이상의 식별된 문구를 분석하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 미리정의된 문구들의 집합을 네트워크를 통해 업데이트하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처 정보의 항목을 거절하라는 요청의 결과로서 미리정의된 문구들 중 하나 이상의 문구를 다운그레이드하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 데이터베이스 내의 연락처 정보를 전자 디바이스 상의 연락처 정보와 연관된 언어와 상호상관시킴으로써 미리정의된 문구들 중 하나 이상의 문구를 생성하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 연락처에 대한 요청을 수신하는 단계; 및 연락처에 대한 요청에 응답하여, 제안된 연락처 정보의 항목을 검색하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 연락처의 업데이트에 응답하여, 제안된 연락처 정보의 항목을 네트워크를 통해 원격 데이터베이스에 저장하는 것을 억제하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처 정보의 항목을 데이터베이스에 추가하라는 요청을 수신하는 단계; 및 제안된 연락처 정보의 항목을 데이터베이스에 추가하라는 요청에 응답하여, 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시 없이, 업데이트된 연락처를 데이터베이스에 저장하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처 정보의 항목을 데이터베이스에 추가하라는 요청에 응답하여, 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시 없이, 업데이트된 연락처를 네트워크를 통해 원격 데이터베이스에 저장하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처 정보의 항목을 거절하라는 요청을 수신하는 단계; 및 제안된 연락처 정보의 항목을 거절하라는 요청에 응답하여, 향후 메시지 내에서 엔티티 및 연락처 정보의 항목이 식별되는 결과로서 연락처가 제안된 연락처 정보의 항목을 이용하여 향후 업데이트되는 것을 방지하는 단계를 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보의 항목을 식별하기 위한 수단; 식별된 엔티티와 연관된 연락처가 데이터베이스 내의 복수의 연락처 중에 존재하고 연락처가 식별된 연락처 정보의 항목을 포함하지 않는다고 결정하기 위한 수단; 및 결정하는 것에 응답하여, 연락처 정보의 항목 및 연락처 정보의 항목이 제안된 연락처 정보의 항목이라는 표시를 포함하도록 연락처를 업데이트하기 위한 수단을 포함한다.
하나의 추가 태양에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 단계; 식별된 연락처 정보가 제안된 연락처 정보라는 표시를 생성하는 단계; 및 엔티티와 연관된 연락처에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는, 생성된 표시에 기초하여, 식별된 연락처 정보가 제안된 연락처 정보라는 것을 나타내는 제1 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 본 방법은 제안된 연락처 정보의 선택에 대응하는 입력이 엔티티에 연락하기 위해 애플리케이션을 호출하는 것을 방지하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제1 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력을 검출하는 단계; 및 제1 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력의 검출에 응답하여, 선택될 때 전자 디바이스로 하여금 식별된 연락처 정보를 데이터베이스에 추가하게 하는 식별된 연락처 정보와 연관된 제2 사용자 인터페이스 객체를 포함하는 제2 사용자 인터페이스를 디스플레이하는 단계를 포함한다. 일부 구현예들에서, 제2 사용자 인터페이스는, 선택될 때 전자 디바이스로 하여금 제2 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 식별된 연락처 정보와 연관된 제3 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 제2 사용자 인터페이스를 디스플레이하는 것은 제1 사용자 인터페이스를 디스플레이하는 것을 중지한다. 일부 구현예들에서, 제2 사용자 인터페이스는 메시지의 적어도 일부분을 디스플레이한다. 일부 구현예들에서, 본 방법은 디스플레이된 메시지의 선택에 대응하는 입력을 검출하는 단계; 및 디스플레이된 메시지의 선택에 대응하는 입력의 검출에 응답하여, 메시지를 열기 위하여 애플리케이션을 호출하는 단계를 포함한다. 일부 구현예들에서, 메시지는 이메일을 포함하고 애플리케이션은 이메일 애플리케이션을 포함한다. 일부 구현예들에서, 본 방법은 제2 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력을 검출하는 단계; 및 제2 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력의 검출에 응답하여, 식별된 연락처 정보를 사용하여 엔티티에 연락하기 위하여 애플리케이션을 호출하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제2 사용자 인터페이스 내의 제안된 연락처 정보의 선택에 대응하는 입력의 검출에 응답하여, 식별된 연락처 정보를 데이터베이스에 추가하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 식별된 연락처 정보를 데이터베이스에 추가하는 것에 응답하여, 제1 사용자 인터페이스 객체의 디스플레이를 중지하는 단계를 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하기 위한 수단; 식별된 연락처 정보가 제안된 연락처 정보라는 표시를 생성하기 위한 수단; 및 엔티티와 연관된 연락처에 대응하는 제1 사용자 인터페이스를 디스플레이하기 위한 수단을 포함하고, 제1 사용자 인터페이스는, 생성된 표시에 기초하여, 식별된 연락처 정보가 제안된 연락처 정보라는 것을 나타내는 제1 사용자 인터페이스 객체를 포함한다.
또 하나의 추가 태양에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하는 단계; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분, 및 제2 부분을 포함하며, 제2 부분은 식별된 엔티티에 대응하는 제1 사용자 인터페이스 객체; 식별된 연락처 정보에 대응하는 제2 사용자 인터페이스 객체; 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 정보를 데이터베이스에 추가하게 하는 식별된 연락처 정보와 연관된 제3 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 제2 부분은, 선택될 때 전자 디바이스로 하여금 제3 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 식별된 연락처 정보와 연관된 제4 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 메시지는 이메일을 포함한다. 일부 구현예들에서, 식별된 엔티티는 이름을 포함하고, 식별된 연락처 정보는 전화 번호, 주소, 사업체 또는 소셜 네트워킹 별칭을 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 엔티티 및 엔티티와 연관된 연락처 정보를 식별하기 위한 수단; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하기 위한 수단을 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분, 및 제2 부분을 포함하며, 제2 부분은 식별된 엔티티에 대응하는 제1 사용자 인터페이스 객체; 식별된 연락처 정보에 대응하는 제2 사용자 인터페이스 객체; 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 정보를 데이터베이스에 추가하게 하는 식별된 연락처 정보와 연관된 제3 사용자 인터페이스 객체를 포함한다.
또 하나의 추가 태양에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 이벤트 정보를 식별하는 단계; 및 식별된 이벤트 정보와 연관된 캘린더 이벤트를 생성하는 단계를 포함하고, 생성된 캘린더 이벤트는 이벤트 정보, 및 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시를 포함한다. 일부 구현예들에서, 식별된 이벤트 정보는 날짜 및 시간을 포함한다. 일부 구현예들에서, 식별하는 단계는 메시지 내의 콘텐츠의 포맷을 식별하는 단계; 메시지 내의 콘텐츠의 포맷에서의 이벤트 정보를 인식하도록 구성되는 템플릿을 미리정의된 템플릿들의 집합으로부터 식별하는 단계; 및 이벤트 정보에 대해 식별된 템플릿을 이용하여 콘텐츠를 분석하는 단계를 포함한다. 일부 구현예들에서, 메시지는 이메일을 포함하고 콘텐츠는 예약을 포함한다. 일부 구현예들에서, 본 방법은 미리정의된 템플릿들의 집합을 네트워크를 통해 업데이트하는 단계를 포함한다. 일부 구현예들에서, 식별하는 단계는 날짜 및 시간에 대한 미리정의된 참조들의 집합에 기초하여 날짜 및 시간에 대한 하나 이상의 참조를 메시지 내에서 식별하는 단계; 및 이벤트 정보에 대해 날짜 및 시간에 대한 하나 이상의 식별된 참조를 분석하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 날짜 및 시간에 대한 미리정의된 참조들의 집합을 네트워크를 통해 업데이트하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 캘린더 이벤트를 거절하라는 요청의 결과로서 날짜 및 시간에 대한 미리정의된 참조들 중 하나 이상의 참조를 다운그레이드하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 복수의 캘린더 이벤트를 포함하는 데이터베이스 내의 이벤트 정보를 전자 디바이스 상의 이벤트 정보와 연관된 언어와 상호상관시킴으로써 날짜 및 시간에 대한 미리정의된 참조들 중 하나 이상의 참조를 생성하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 캘린더 이벤트에 대한 요청을 수신하는 단계; 및 캘린더 이벤트에 대한 요청에 응답하여, 제안된 캘린더 이벤트를 검색하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 캘린더 이벤트의 생성에 응답하여, 제안된 캘린더 이벤트를 네트워크를 통해 원격 데이터베이스에 저장하는 것을 억제하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 캘린더 이벤트를 복수의 캘린더 이벤트를 포함하는 데이터베이스에 추가하라는 요청을 수신하는 단계; 및 제안된 캘린더 이벤트를 데이터베이스에 추가하라는 요청에 응답하여, 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시 없이, 생성된 캘린더 이벤트를 데이터베이스에 저장하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 캘린더 이벤트를 데이터베이스에 추가하라는 요청에 응답하여, 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시 없이, 생성된 캘린더 이벤트를 네트워크를 통해 원격 데이터베이스에 저장하는 단계를 포함한다. 일부 구현예들에서, 본 방법은 제안된 캘린더 이벤트를 거절하라는 요청을 수신하는 단계; 및 제안된 캘린더 이벤트를 거절하라는 요청에 응답하여, 향후 메시지 내에서 이벤트 정보가 식별되는 결과로서 제안된 캘린더 이벤트가 향후 생성되는 것을 방지하는 단계를 포함한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 이벤트 정보를 식별하기 위한 수단; 및 식별된 이벤트 정보와 연관된 캘린더 이벤트를 생성하기 위한 수단을 포함하며, 생성된 캘린더 이벤트는 이벤트 정보, 및 생성된 캘린더 이벤트가 제안된 캘린더 이벤트라는 표시를 포함한다.
또한 추가의 태양에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 이벤트 정보를 식별하는 단계; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분, 및 제2 부분을 포함하며, 제2 부분은 식별된 이벤트 정보에 대응하는 제1 사용자 인터페이스 객체; 및 선택될 때 전자 디바이스로 하여금 식별된 이벤트 정보를 복수의 캘린더 이벤트들을 포함하는 데이터베이스에 추가하게 하는 식별된 이벤트 정보와 연관된 제2 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 제2 부분은, 선택될 때 전자 디바이스로 하여금 제2 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 식별된 이벤트 정보와 연관된 제3 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 메시지는 이메일을 포함한다. 일부 구현예들에서, 식별된 이벤트 정보는 날짜 및 시간을 포함한다. 일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 이벤트 정보를 식별하기 위한 수단; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하기 위한 수단을 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분, 및 제2 부분을 포함하며, 제2 부분은 식별된 이벤트 정보에 대응하는 제1 사용자 인터페이스 객체; 및 선택될 때 전자 디바이스로 하여금 식별된 이벤트 정보를 복수의 캘린더 이벤트들을 포함하는 데이터베이스에 추가하게 하는 식별된 이벤트 정보와 연관된 제2 사용자 인터페이스 객체를 포함한다.
또 하나의 추가 태양에서, 전자 디바이스(예컨대, 도 1e에 도시된 구성들 중 임의의 것에 따라 구현된, 도 1a의 디바이스(100))에서 수행되는 방법이 제공된다. 본 방법은, 메시지를 수신하는 단계; 수신된 메시지 내에서, 연락처 또는 이벤트 정보의 다수의 인스턴스들을 식별하는 단계; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하는 단계를 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분; 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록을 포함하는 제2 사용자 인터페이스를 디스플레이하게 하는 제2 부분을 포함한다. 일부 구현예들에서, 본 방법은 제1 사용자 인터페이스의 제2 부분의 선택에 대응하는 입력을 검출하는 단계; 및 제1 사용자 인터페이스의 제2 부분의 선택에 대응하는 입력의 검출에 응답하여, 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록; 및 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들 각각에 대해, 선택될 때 전자 디바이스로 하여금 식별된 정보를 데이터베이스에 추가하게 하는 제1 사용자 인터페이스 객체를 포함하는 제2 사용자 인터페이스를 디스플레이하는 단계를 포함한다. 일부 구현예들에서, 제2 사용자 인터페이스는, 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들 각각에 대해, 선택될 때 전자 디바이스로 하여금 제1 사용자 인터페이스 객체를 디스플레이하는 것을 중지하게 하는 제2 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 제2 사용자 인터페이스는, 선택될 때 전자 디바이스로 하여금 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 그룹화 각각을 데이터베이스에 추가하게 하는 제3 사용자 인터페이스 객체를 포함한다. 일부 구현예들에서, 제2 사용자 인터페이스를 디스플레이하는 것은 제1 사용자 인터페이스를 디스플레이하는 것을 중지한다.
일부 구현예들에서, 시스템이 제공되는데, 시스템은, 메시지를 수신하기 위한 수단; 수신된 메시지 내에서, 연락처 또는 이벤트 정보의 다수의 인스턴스들을 식별하기 위한 수단; 및 수신된 메시지에 대응하는 제1 사용자 인터페이스를 디스플레이하기 위한 수단을 포함하고, 제1 사용자 인터페이스는 전자 디바이스에 의해 수신된 메시지의 콘텐츠를 포함하는 제1 부분; 및 선택될 때 전자 디바이스로 하여금 식별된 연락처 또는 이벤트 정보의 다수의 인스턴스들의 목록을 포함하는 제2 사용자 인터페이스를 디스플레이하게 하는 제2 부분을 포함한다.
일부 구현예들에서, 전자 디바이스가 제공되는데, 전자 디바이스는 하나 이상의 프로세서들; 메모리; 및 메모리에 저장되고 하나 이상의 프로세서들에 의해 실행되도록 구성된 하나 이상의 프로그램들을 포함하며, 하나 이상의 프로그램들은 이 섹션에서 전술된 방법들 중 임의의 방법을 수행하기 위한 명령어들을 포함한다. 일부 구현예들에서, 컴퓨터 판독가능 저장 매체가 제공되는데, 컴퓨터 판독가능 저장 매체는 하나 이상의 프로그램들을 저장하고, 하나 이상의 프로그램들은, 전자 디바이스에 의해 실행될 때, 디바이스로 하여금, 이 섹션에서 기술된 방법들 중 임의의 방법을 수행하게 하는 명령어들을 포함한다. 일부 구현예들에서, 이 섹션에서 기술된 방법들 중 임의의 방법을 수행하기 위한 수단을 포함하는 시스템이 제공된다.
섹션 5: 데이터 희소성의 맥락에서 복잡한 사용자 패턴을 학습하기 위한 생성 모델의 결정 트리 세그먼트화
이 섹션 "데이터 희소성의 맥락에서 복잡한 사용자 패턴을 학습하기 위한 생성 모델의 결정 트리 세그먼트화"에서의 내용은, 일부 실시예들에 따른, 데이터 희소성의 맥락에서 복잡한 사용자 패턴을 학습하기 위한 생성 모듈의 결정 트리 세그먼트화를 설명하고, 이 섹션에서 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 디바이스 상의 이벤트에 응답하여 애플리케이션들을 제안하는 방식들을 설명하는데, 이는 이 섹션에서 제공된 개시내용들, 예컨대 도 9b 및 도 9c의 예측 부분(930) 내의 딥 링크들 및 애플리케이션들에 대응하는 어포던스들을 채우는 것에 관련된 것들을 보완한다. 일부 실시예들에서, 이 섹션에 기술된 예측 모델들은, 예측을 위해 적절한 애플리케이션들을 식별하고 사용자에게 디스플레이하는 것을 돕기 위해 사용된다(즉, 이러한 예측 모델들은 방법들(600, 800, 1000, 1200)과 함께 사용된다).
데이터 희소성의 맥락에서 복잡한 사용자 패턴을 학습하기 위한 생성 모델의 결정 트리 세그먼트화에 대한 간략한 개요
실시예들은 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 하나 이상의 애플리케이션들을 제안하기 위한 시스템들, 방법들, 및 장치들을 제공할 수 있다. 컴퓨팅 디바이스의 예들은 전화, 태블릿, 랩톱, 또는 데스크톱 컴퓨터이다. 예시적인 이벤트들은, 액세서리 디바이스에 연결하고 전력 상태를 (예컨대, 오프 또는 슬리핑으로부터 깨우기 위해) 변경하는 것을 포함한다.
예측 모델은 특정 이벤트에 대응할 수 있다. 제안된 애플리케이션은 컴퓨팅 디바이스의 하나 이상의 특성들을 사용하여 결정될 수 있다. 예를 들어, 디바이스가 하나 이상의 특성들을 가질 때 수집되며 이벤트의 발생들 이후의 사용자 상호작용들(예컨대, 하루 중 특정 시간의 특성을 이용하여, 그의 차에 연결하는 이벤트 이후에 어느 애플리케이션이 선택되는지의 사용자 상호작용들)에 관한 것인 데이터 이력의 서브세트로부터 특정 서브모델이 생성될 수 있다. 컴퓨팅 디바이스의 특성들의 상이한 컨텍스트들에 대응하는 서브모델들의 트리가 결정될 수 있다. 그리고, 서브모델을 언제 생성할지를 결정하기 위해 다양한 기준들, 예컨대 데이터 이력의 서브세트에서의 정확한 예측 및 부모 모델에 대한 데이터 이력의 분포에서의 정보 이득(엔트로피 감소)을 제공하는 서브모델에서의 신뢰도 레벨이 사용될 수 있다.
다른 실시예들은 이 섹션에 기술된 방법들과 연관된 시스템들, 휴대용 소비자 디바이스들, 및 컴퓨터 판독가능 매체들에 관련된다.
이 섹션의 실시예들의 본질 및 이점들의 더 나은 이해가 하기의 상세한 설명 및 첨부 도면을 참조하여 얻어질 수 있다.
데이터 희소성의 맥락에서 복잡한 사용자 패턴을 학습하기 위한 생성 모델의 결정 트리 세그먼트화에 대한 상세한 설명
실시예들은 디바이스의 사용자에게 애플리케이션을 제안하기 위한 개인맞춤화되고 주문맞춤화된 경험을 제공함으로써, 디바이스의 사용을 더 용이하게 할 수 있다. 사용자는 특정 이벤트들 이후에 발생하는 사용자 디바이스와의 상호작용들(예컨대, 어느 애플리케이션들이 이벤트와 관련하여 개시되거나 또는 구동되고 있는지)의 광범위한 세트를 가질 수 있다. 컴퓨팅 디바이스의 예들은 전화, 태블릿, 랩톱, 또는 데스크톱 컴퓨터이다. 예시적인 이벤트들은, 액세서리 디바이스에 연결하고 전력 상태를 (예컨대, 오프 또는 슬리핑으로부터 깨우기 위해) 변경하는 것을 포함한다.
데이터 이력에서의 각각의 데이터 점(data point)은 특정 컨텍스트에 대응할 수 있는데(예컨대, 디바이스의 하나 이상의 특성들에 대응함), 이때 특정 컨텍스트에 대해 점점 더 많은 데이터가 시간 경과에 따라 획득된다. 특정 이벤트에 대한 이러한 데이터 이력은 사용자에게 애플리케이션을 제안하기 위해 사용될 수 있다. 상이한 사용자들이 상이한 데이터 이력을 가질 것이기 때문에, 실시예들은 개인맞춤화된 경험을 제공할 수 있다.
정확한 개인맞춤화된 경험을 제공하기 위하여, 다양한 실시예들은, 제안들을 제공하지 않고서 간단히 훈련되거나 또는 다양한 컨텍스트들에 대해 애플리케이션(들)의 동일한 세트를 제안하는 광대한 모델로 시작할 수 있다. 충분한 데이터 이력에 의하면, 광대한 모델은 서브모델들로, 예컨대, 서브모델들의 결정 트리로서 세그먼트화될 수 있는데, 이때 각각의 서브모델은 데이터 이력의 상이한 서브세트에 대응한다. 이어서, 이벤트가 발생할 때, 디바이스의 현재 컨텍스트에 대응하는 제안된 애플리케이션을 제공하기 위한 특정 서브모델이 선택될 수 있다. 서브모델을 언제 생성할지를 결정하기 위해 다양한 기준들, 예컨대 데이터 이력의 서브세트에서의 정확한 예측 및 부모 모델에 대한 데이터 이력의 분포에서의 정보 이득(엔트로피 감소)을 제공하는 서브모델에서의 신뢰도 레벨이 사용될 수 있다.
일부 실시예들에서, "신뢰도 레벨"은 데이터 이력에 기초하여 모델이 정확한 예측(즉, 예측된 애플리케이션(들) 중 적어도 하나가 이벤트 이후에 선택되었음)을 행할 수 있는 확률에 대응한다. 신뢰도 레벨의 일례는 정확한 예측이 이루어진 이벤트들의 백분율이다. 다른 예는 정확한 예측 및 부정확한 예측의 개수로부터 생성된 확률 분포(예컨대, 베타 분포)의 누적 분포 함수(CDF)를 사용한다. CDF는 확률 분포를 적분함으로써 산출될 수 있다. 다양한 구현예들에서, 신뢰도 레벨은 입력 값(예컨대, 0 내지 1임, 이때 1은 정확한 예측에 대응함)을 초과한 CDF의 증가량 또는 그 입력 값을 초과한 특정된 CDF를 제공하는 입력 값일 수 있다. 애플리케이션이 선택되는 확률은 임계 확률이도록 요구될 수 있는데, 임계 확률은 신뢰도 임계치를 초과하는 신뢰도 레벨을 갖는 모델의 필연적인 결과이다. 신뢰도 레벨은 엔트로피의 측정치에 반비례할 수 있으므로, 부모 모델로부터 서브모델로의 신뢰도 레벨의 증가는 엔트로피의 감소에 대응할 수 있다.
따라서, 일부 실시예들은 사용자 추천들의 맥락에서 사용자의 데이터 이력을 세그먼트화하는 시기 및 방법을 결정할 수 있다. 예를 들어, 일정 기간의 사용자 활동을 수집한 후에, 실시예들은 가능한 세그먼트화 후보들(예컨대, 위치, 요일 등)의 목록을 누적할 수 있다. 실시예들은 또한 전체 데이터세트에 대해 모델을 훈련시키고 데이터세트 및 모델의 결합 분포(joint distribution)에서 신뢰도의 메트릭을 산출할 수 있다. 세그먼트화된 데이터세트들(즉, 서브세트들) 각각에 대해 하나씩 모델들의 세트가 훈련될 수 있고, 이어서 데이터 모델 분포들 각각의 신뢰도를 측정할 수 있다. 모든 데이터 모델 분포들의 신뢰도가 허용가능한 경우, 실시예들은 세그먼트화(분할)를 수행하고 이어서 세그먼트화된 공간들을 추가 세그먼트화들을 위해 재귀적으로 검사할 수 있다.
이러한 방식으로, 일부 실시예들은 세그먼트화와 일반화 사이의 절충을 탐구하기 위해 추론을 사용할 수 있는데, 이는 보다 명확하고 복잡한 패턴들을 갖는 사용자들의 경우 보다 복잡한 모델들을 그리고 잡음이 더 많고 보다 간단한 패턴들을 갖는 사용자들의 경우 간단하고 일반적인 모델들을 생성한다. 그리고, 일부 실시예들은 잠재적 후보 모델들 중에서 발산 분포들을 발견하는 것에 기초하여 확률 모델들의 트리를 생성할 수 있다.
I. 이벤트에 기초한 애플리케이션 제안
실시예들은 이벤트에 기초하여 애플리케이션을 제안할 수 있는데, 이는 소정의 미리결정된 이벤트들(트리거링 이벤트들로도 지칭됨)로 제한될 수 있다. 예를 들어, 헤드폰들이 헤드폰 잭 내에 삽입될 때 음악 애플리케이션이 제안될 수 있다. 일부 실시예들에서, 사용자에게 제안할 애플리케이션을 식별하기 위해 컨텍스트 정보가 이벤트와 함께 사용될 수 있다. 일례로서, 헤드폰들의 세트가 헤드폰 잭 내에 삽입될 때, 위치에 관한 컨텍스트 정보가 사용될 수 있다. 예를 들어, 디바이스가 체육관에 있는 경우, 헤드폰들이 헤드폰 잭 내에 삽입될 때 애플리케이션 A가 제안될 수 있다. 대안적으로, 디바이스가 집에 있는 경우, 헤드폰들이 헤드폰 잭 내에 삽입될 때 애플리케이션 B가 제안될 수 있다. 따라서, 소정의 컨텍스트들 하에서 사용될 가능성이 있는 애플리케이션들이 적절한 시기에 제안되어서, 그에 따라 사용자 경험을 향상시킬 수 있다.
일부 실시예들에서, "컨텍스트 정보"는 집합적으로, 디바이스의 컨텍스트를 정의하는 데 사용될 수 있는 임의의 데이터를 지칭한다. 주어진 컨텍스트에 대한 컨텍스트 정보는 하나 이상의 컨텍스트 데이터를 포함할 수 있는데, 각각은 디바이스의 상이한 특성에 대응한다. 잠재적 특성들은 상이한 카테고리들, 예컨대 시간 카테고리 또는 위치 카테고리에 속할 수 있다. 컨텍스트 데이터가 모델(또는 서브모델)의 특징부로서 사용될 때, 모델을 훈련시키는 데 사용되는 데이터는 동일한 카테고리의 상이한 특성들을 포함할 수 있다. 특정 컨텍스트는 디바이스의 특성들의 특정 조합, 또는 단지 하나의 특성에 대응할 수 있다.
도 35a은 본 발명의 실시예들에 따른, 검출된 이벤트에 기초하여 애플리케이션을 제안하기 위한 방법(35_100)의 흐름도이다. 방법(35_100)은 모바일 디바이스(예컨대, 전화, 태블릿) 또는 비-모바일 디바이스에 의해 수행될 수 있고 디바이스의 하나 이상의 사용자 인터페이스들을 이용할 수 있다.
일부 실시예들에서, "사용자 인터페이스"는 사용자가 디바이스와 상호작용하기 위한 임의의 인터페이스에 대응한다. 애플리케이션에 대한 사용자 인터페이스는 사용자가 애플리케이션과 상호작용할 수 있게 한다. 사용자 인터페이스는 애플리케이션이 구동되고 있을 때 애플리케이션의 인터페이스일 수 있다. 다른 예로서, 사용자 인터페이스는, 사용자들이 선택할 감소된 세트의 애플리케이션들을 제공하여, 이에 의해 사용자가 애플리케이션을 사용하는 것을 더 용이하게 할 수 있는 시스템 인터페이스일 수 있다.
블록(35_110)에서, 이벤트가 검출된다. 일부 실시예들에서, 이벤트가 애플리케이션을 제안하기 위한 트리거링 이벤트인지 여부가 결정될 수 있다. 일부 구현예들에서, 제안된 애플리케이션의 결정은 소정의 미리결정된 이벤트들(예컨대, 트리거링 이벤트들)에 대해서만 이루어진다. 다른 구현예들에서, 제안된 애플리케이션의 결정은 이벤트들의 동적 목록에 대해 이루어질 수 있는데, 이는 디바이스 상의 애플리케이션들과의 사용자 상호작용들 이력에 기초하여 업데이트될 수 있다.
일부 실시예들에서, 트리거링 이벤트는 디바이스의 고유 동작에 상관할 가능성이 충분히 있는 것으로 식별될 수 있다. 트리거링 이벤트들인 이벤트들의 목록은 디바이스 상에 저장될 수 있다. 그러한 이벤트들은 디폴트 목록일 수 있고 운영 체제의 일부로서 유지될 수 있고, 사용자에 의해 구성가능하거나 구성가능하지 않을 수 있다.
트리거링 이벤트는 사용자 및/또는 외부 디바이스에 의해 유도된 이벤트일 수 있다. 예를 들어, 트리거링 이벤트는 액세서리 디바이스가 모바일 디바이스에 연결될 때일 수 있다. 예들은, 헤드폰들을 헤드폰 잭 내에 삽입하는 것, 블루투스 연결을 행하는 것, 디바이스를 켜는 것, 디바이스를 슬립으로부터 깨우는 것, 특정 위치(예컨대, 자주 방문하는 것으로 식별되는 위치)에 도착하는 것 등을 포함한다. 이 예에서, 이러한 이벤트들 각각은 상이한 트리거링 이벤트로서 분류될 수 있거나, 또는 트리거링 이벤트는 집합적으로 모바일 디바이스에의 임의의 액세서리 디바이스 연결일 수 있다. 다른 예들로서, 트리거링 이벤트는 디바이스와의 사용자의 특정 상호작용일 수 있다. 예를 들어, 사용자는 구동에 부합하는 방식으로 모바일 디바이스를 움직일 수 있는데, 여기서 디바이스의 구동 상태가 트리거링 이벤트이다. 그러한 구동 상태(또는 다른 상태들)는 디바이스의 센서들에 기초하여 결정될 수 있다.
블록(35_120)에서, 이벤트와 연관된 애플리케이션이 식별된다. 일례로서, 헤드폰들이 헤드폰 잭 내에 삽입될 때 음악 애플리케이션이 식별될 수 있다. 일부 실시예들에서, 하나 초과의 애플리케이션이 식별될 수 있다. 예측 모델이 연관된 애플리케이션을 식별할 수 있는데, 여기서 예측 모델은 특정 이벤트에 대해 선택될 수 있다. 예측 모델은 컨텍스트 정보를 사용하여 애플리케이션을 식별할 수 있는데, 예컨대, 이는 상이한 애플리케이션이 상이한 컨텍스트들에서 사용될 가능성이 더 클 수 있기 때문이다. 일부 실시예들은, 예컨대 디바이스와의 사용자의 상호작용들 이력으로부터 결정되는 바와 같이, 사용자에 의해 선택될 확률이 충분할 때에만 애플리케이션을 식별할 수 있다.
예측 모델은 컨텍스트 데이터의 상이한 조합들에 대해 각각의 서브모델들로 구성될 수 있다. 상이한 조합들은 상이한 양의 컨텍스트 데이터를 가질 수 있다. 서브모델들은 계층적 트리로 생성될 수 있는데, 이때 보다 구체적인 조합들의 서브모델들은 계층적 트리에서 더 낮다. 일부 실시예들에서, 서브모델이 트리에서 더 높은 모델보다 더 큰 정확도로 애플리케이션을 예측할 수 있는 경우에만 서브모델이 생성될 수 있다. 이러한 방식으로, 사용자가 어느 애플리케이션을 선택할지에 대한 보다 정확한 예측이 이루어질 수 있다. 일부 실시예들에서, 예측 모델 및 서브모델들은 컨텍스트 데이터의 특정 조합이 있을 때의 이벤트 이후에 사용자에 의해 선택되는 상위 N의 애플리케이션들(예컨대, 고정된 수의 백분율)을 식별할 수 있다.
컨텍스트 정보는 소정의 컨텍스트에 대해 디바이스의 하나 이상의 특성들을 특정할 수 있다. 컨텍스트는 트리거링 이벤트가 수신될 때의 디바이스의 주위 환경(컨텍스트의 유형)일 수 있다. 예를 들어, 컨텍스트 정보는 이벤트가 검출되는 하루 중 시간일 수 있다. 다른 예에서, 컨텍스트 정보는 이벤트가 검출될 때의 디바이스의 소정의 위치일 수 있다. 또 다른 예에서, 컨텍스트 정보는 트리거링 이벤트가 검출되는 시기의 일년 중 소정의 하루일 수 있다. 그러한 컨텍스트 정보는 디바이스의 컨텍스트에 관한 보다 의미있는 정보를 제공할 수 있어서, 예측 엔진이 그 컨텍스트에서 사용자에 의해 사용될 가능성이 있는 애플리케이션을 정확하게 제안할 수 있도록 한다. 따라서, 예측 엔진이 컨텍스트 정보를 이용함으로써, 컨텍스트 정보가 이용되지 않았던 경우보다 사용자에게 애플리케이션을 보다 정확하게 제안할 수 있다.
블록(35_130)에서, 애플리케이션과 관련하여 액션이 수행된다. 일 실시예에서, 액션은 사용자가 애플리케이션을 구동하기 위해 선택하는 사용자 인터페이스의 디스플레이일 수 있다. 사용자 인터페이스는 다양한 방식으로, 예컨대 디바이스의 화면 상에 디스플레이함으로써, 표면 상으로 투영함으로써, 또는 오디오 인터페이스를 제공함으로써 제공될 수 있다.
다른 실시예들에서, 애플리케이션이 구동될 수 있고, 애플리케이션에 특정한 사용자 인터페이스가 사용자에게 제공될 수 있다. 사용자 인터페이스들 중 어느 하나가, 예컨대 잠금 화면 상에서, 애플리케이션을 식별하는 것에 응답하여 제공될 수 있다. 다른 구현예들에서, 애플리케이션과 상호작용하기 위한 사용자 인터페이스는 사용자가 (예컨대, 패스워드 또는 생체측정에 의해) 인증된 후에 제공될 수 있지만, 그러한 사용자 인터페이스는 구동할 제안된 애플리케이션들의 더 작은 목록과 같이, 단지 홈 화면보다 더 구체적일 것이다.
일부 실시예들에서, "잠금 화면"은 사용자가 인증되지 않았을 때 보여지는 화면이고, 따라서 디바이스는 대부분의 사용으로부터 잠겨 있다. 일부 기능, 예컨대 카메라가 노출될 수 있다. 일부 실시예들에서, 제안된 애플리케이션에 대응하는 사용자 인터페이스가 잠금 화면 상에 노출되는 경우, 제안된 애플리케이션과 연관된 일부 기능이 획득될 수 있다. 예를 들어, 그 애플리케이션이 구동될 수 있다. 애플리케이션이 잠금 화면에서부터 구동되는 경우 기능이 제한될 수 있고, 제한된 기능은 사용자가 인증될 때 확장될 수 있다.
일부 실시예들에서, "홈 화면"은 디바이스의 전원이 처음 켜질 때 나타나는 디바이스의 화면이다. 모바일 디바이스의 경우, 홈 화면은 종종, 디바이스 상에서 구동될 수 있는 다양한 애플리케이션들에 대응하는 아이콘들의 어레이를 보여준다. 홈 화면 상에 나타나지 않는 다른 애플리케이션들을 브라우징하기 위해 추가적인 화면들이 액세스될 수 있다.
II. 세그먼트화
특정 이벤트가 발생할 때마다(예컨대, 헤드폰들에 플러그인하거나 디바이스에 전원을 공급함), 디바이스는 이벤트와 관련하여 어느 애플리케이션(들)이 사용되는지를 추적할 수 있다. 특정 이벤트의 각각의 발생에 응답하여, 디바이스는 선택된 애플리케이션에 대응하는 데이터 점, 애플리케이션으로 수행된 액션, 및 이벤트를 저장할 수 있다. 다양한 실시예들에서, 데이터 점들은 개별적으로 저장되거나 또는 집계될 수 있는데, 이때 특정 액션에 대한 카운트를 포함할 수 있는, 특정 애플리케이션이 선택되는 횟수에 대한 카운트가 결정된다. 따라서, 동일한 선택된 애플리케이션에 대한 상이한 액션들에 대해 상이한 카운트들이 결정된다. 디바이스와의 이전 사용자 상호작용들을 나타내는 이러한 데이터 이력은, 예측 모델을 결정하기 위한 그리고 서브모델들이 생성될지 여부 및 그들이 얼마나 많이 생성될지를 결정하기 위한 입력으로서 사용될 수 있다.
일단 특정 이벤트가 검출되면, 특정 이벤트에 대응하는 예측 모델이 선택될 수 있다. 예측 모델은 특정 이벤트에 대응하는 데이터 이력을 훈련 절차에 대한 입력으로서 사용하여 결정될 것이다. 그러나, 데이터 이력은 많은 상이한 컨텍스트들(즉, 컨텍스트 정보의 상이한 조합들)에서 발생했을 수 있는데, 이때 상이한 애플리케이션들이 상이한 컨텍스트들에서 선택된다. 따라서, 전체적으로, 데이터 이력은 특정 이벤트가 발생할 때 명백히 선택될 애플리케이션을 제공하지 못할 수 있다.
신경 회로망 또는 회귀와 같은 모델이 특정 컨텍스트에 대해 특정 애플리케이션을 식별하도록 훈련될 수 있지만, 이것은 모든 대응하는 데이터 이력이 사용될 때 어려울 수 있다. 모든 데이터 이력을 사용하면, 예측 모델을 오버피팅(over-fitting)하는 것을 초래하고, 보다 낮은 정확도를 초래할 수 있다. 본 발명의 실시예들은 데이터 이력을 데이터 이력의 상이한 입력 세트들로 세그먼트화할 수 있는데, 그 각각은 상이한 컨텍스트들에 대응한다. 데이터 이력의 상이한 입력 세트들에 대해 상이한 서브모델들이 훈련될 수 있다.
세그먼트화는 기계 학습 시스템의 성능을 개선할 수 있다. 세그먼트화의 일 단계에서, 입력 공간은 2개의 서브공간(subspace)들로 분할될 수 있고, 이러한 서브공간들 각각은 별개의 서브모델로 독립적으로 해결될 수 있다. 그러한 세그먼트화 프로세스는 시스템에서 이용가능한 자유 파라미터들의 개수를 증가시킬 수 있고 훈련 정확도를 개선할 수 있지만, 각각의 모델에서의 데이터의 양을 희박화하는 것을 희생하는데, 이는, 예컨대, 서브모델에 대한 데이터의 양이 작은 경우, 시스템이 새로운 데이터를 볼 때의 시스템의 정확도를 감소시킬 수 있다. 실시예들은, 결과적인 서브공간들로부터 생성되는 모델 파라미터들 및 데이터의 결합 분포들이 확실할 때에만 입력 공간을 세그먼트화할 수 있다.
A. 상이한 컨텍스트 데이터에 기초한 상이한 모델
특정 이벤트가 발생할 때, 디바이스는 다양한 컨텍스트들에, 예컨대, 상이한 위치들에, 상이한 시간들에, 디바이스의 상이한 모션 상태들(예컨대, 달리는 중, 걷는 중, 자동차에서 운전중, 또는 정지 상태)에, 또는 전력 사용의 상이한 상태들(예컨대, 슬립 모드에서 나오거나 전이되는 것)에 있을 수 있다. 컨텍스트 정보는 검출된 이벤트와 관련하여 인출될 수 있는데, 예컨대 이벤트가 검출된 후에 인출될 수 있다. 컨텍스트 정보는, 검출된 이벤트와 관련하여 어느 애플리케이션이 사용될 수 있는지를 예측하는 것을 돕기 위해 사용될 수 있다. 모션 센서들, 예컨대 가속도계, 자이로미터, 또는 GPS 센서를 사용하여 상이한 모션 상태들이 결정될 수 있다.
실시예들은 다양한 방식으로 컨텍스트 정보를 사용할 수 있다. 일례에서, (예컨대, 디바이스의 하나의 특성에 대응하는) 하나의 컨텍스트 데이터가, 어느 애플리케이션(들)이 선택될 가능성이 가장 큰지를 예측하기 위한 특정 서브모델의 특징부로서 사용될 수 있다. 예를 들어, 디바이스의 특정 위치가 서브모델에 대한 입력으로서 제공될 수 있다. 이러한 특징부들은 서브모델의 구성의 일부이다.
다른 예에서, 컨텍스트 정보의 컨텍스트 데이터의 일부 또는 전부가 세그먼트화 프로세스에서 사용될 수 있다. 소정의 컨텍스트 데이터가 입력된 데이터 이력을 세그먼트화하는 데 사용되어서, 그 컨텍스트 데이터의 대응하는 특성에 대응하는 데이터 이력만을 사용하여 특정 서브모델이 결정되도록 할 수 있다. 예를 들어, 디바이스의 특정 위치는 서브모델에 대한 입력으로서 사용되지 않을 것이지만, 어느 서브모델을 사용할지, 그리고 그에 대응하여 특정 서브모델을 생성하기 위해 어느 입력 데이터를 사용할지를 선택하기 위해 사용될 것이다.
따라서, 일부 실시예들에서, 어느 서브모델을 사용할지를 식별하기 위해 소정의 컨텍스트 데이터가 사용될 수 있고, 사용자가 어느 애플리케이션(들)과 상호작용할 수 있을지를 예측하기 위해 서브모델에 대한 입력으로서 다른 컨텍스트 데이터가 사용될 수 있다. 특정 특성(예컨대, 특정 위치)은 특정 서브모델에 대응하지 않고, 그러한 특정 특성은 사용되는 서브모델에 대한 향후 입력으로서 사용될 수 있다. 특정 특성이 특정 서브모델에 대응하는 경우, 전체 모델이 특정 특성에 전용되기 때문에 그 특성의 사용은 더 풍부하게 될 수 있다.
서브모델을 특정 특성(또는 특성들의 조합)에 전용으로 하는 것의 하나의 결점은 그 특정 특성에 대응하는 많은 양의 데이터 이력이 존재하지 않을 수 있다는 것이다. 예를 들어, 사용자는 특정 이벤트(예컨대, 헤드폰들에 플러그인하는 것)를 특정 위치에서 단지 몇 번 수행했을 수 있다. 이러한 제한된 양의 데이터는 또한 데이터가 희소하다고 지칭된다. 데이터는, 예컨대, 특정 시간에 특정 위치에서 특성들의 조합들이 사용될 때 훨씬 더 희소해질 수 있다. 이러한 결점에 대처하기 위하여, 실시예들은 세그먼트화 프로세스의 일부로서 새로운 서브모델을 언제 생성할지를 선택적으로 결정할 수 있다.
B. 더 많은 데이터가 획득될 때의 세그먼트화
사용자가 처음 디바이스를 사용하기 시작할 때, 특정 이벤트 이후에 사용자가 애플리케이션으로 취했을 수 있는 액션들에 관한 예측을 행하기 위한 데이터 이력이 없을 것이다. 초기 모드에서, 예측들이 제공되지 않는 동안 데이터 이력이 획득될 수 있다. 더 많은 데이터 이력이 획득됨에 따라, 예측 모델을 서브모델들로 세그먼트화할지 여부에 관한 결정들이 이루어질 수 있다. 훨씬 더 많은 데이터 이력을 가지면, 서브모델들은 추가 서브모델들로 세그먼트화될 수 있다. 제한된 데이터 이력이 디바이스와의 사용자 상호작용들에 대해 이용가능할 때, 예들로서, 어떠한 액션도 취해지지 않을 수 있거나 보다 일반적인 모델이 사용될 수 있다.
도 35b는 본 발명의 실시예들에 따른 세그먼트화 프로세스(35_200)를 도시한다. 세그먼트화 프로세스(35_200)는 사용자 디바이스(예컨대, 전화와 같은 모바일 디바이스)에 의해 수행될 수 있는데, 이는 데이터 프라이버시를 유지할 수 있다. 다른 실시예들에서, 세그먼트화 프로세스(35_200)는 사용자 디바이스와 통신 상태에 있는 서버에 의해 수행될 수 있다. 세그먼트화 프로세스(35_200)는 일정 기간에 걸쳐(예컨대, 며칠, 몇 개월, 또는 몇 년에 걸쳐) 부분적으로 수행될 수 있거나, 또는 모든 세그먼트화 프로세스(35_200)가 함께 수행되고, 주기적으로 잠재적으로 재실행될 수 있다. 세그먼트화 프로세스(35_200)는 예측 엔진의 루틴으로서 실행될 수 있다.
도 35b는 더 많은 데이터가 수집되고 있음에 대응하는 타임라인(35_230)을 도시한다. 더 많은 데이터가 수집됨에 따라, 예측 모델이 서브모델들로 세그먼트화될 수 있다. 데이터를 수집하는 상이한 지점들에서, 세그먼트화(예컨대, 세그먼트화(35_201))가 발생할 수 있다. 훨씬 더 많은 데이터가 획득됨에 따라, 다른 세그먼트화가 발생할 수 있다. 도 35b가 타임라인(35_230)을 따라 상이한 지점들에서 발생하는 소정의 세그먼트화들에 대한 새로운 서브모델들을 도시하지만, 각각의 세그먼트화는 세그먼트화를 완전히 재실행하는 것을 수반할 수 있는데, 이는 이전 세그먼트화에서와 동일한 서브모델들이 생성되는 것을 야기하거나 야기하지 않을 수 있다.
이 예에서, 이벤트 모델(35_205)은 특정 이벤트(예컨대, 자동차와 같은 특정 디바이스에 연결됨)에 대응할 수 있다. 이벤트 모델(35_205)은 특정 이벤트에 대한 예측 엔진의 최상위 레벨에 대응할 수 있다. 처음에는, 최소의 데이터 이력이 이용가능하기 때문에, 특정 이벤트에 대한 하나의 모델만이 있을 수 있다. 이 시점에서, 이벤트 모델(35_205)은 훈련 목적을 위해 데이터 이력을 단지 추적할 수 있다. 이벤트 모델(35_205)은 예측들을 행할 수 있고 그러한 예측들을 실제 결과들(예컨대, 이벤트가 검출된 후 특정 시간 이내에 사용자가 예측된 애플리케이션과 상호작용하는지 여부)과 비교할 수 있다. 어떠한 애플리케이션도 임계치보다 큰 확률을 갖지 않는 경우, 특정 이벤트가 발생할 때 어떠한 액션도 수행되지 않을 수 있다.
일부 실시예들에서, 이벤트 모델(35_205)은 특정 디바이스에 대해 수집된 데이터만을 사용한다. 다른 실시예들에서, 이벤트 모델(35_205)은 다른 사용자들로부터 집계된 데이터 이력으로 시딩될(seeded) 수 있다. 그러한 데이터 이력은 일부 추천들을 제공할 수 있는 이벤트 모델(35_205)을 허용할 수 있는데, 이는 이어서 추가 데이터 점들이 획득되도록 할 수 있다. 예를 들어, 사용자가 사용자 인터페이스를 통해 제안된 애플리케이션과 상호작용하는지 여부가 추적될 수 있는데, 이는 단지 사용자가 애플리케이션을 선택하는지 여부보다 더 많은 데이터 점들을 제공할 수 있다.
더 많은 데이터가 수집됨에 따라, 세그먼트화가 발생해야 하는지 여부에 대한 결정이 주기적으로 이루어질 수 있다. 그러한 결정은 세그먼트화를 통해 보다 큰 정확도가 달성될 수 있는지 여부에 기초할 수 있다. 정확도는 예측이 이루어질 수 있는 확률의 레벨로서 측정될 수 있는데, 이는 아래에서 더욱 상세하게 기술된다. 예를 들어, 이벤트 모델(35_205)로 예측되는 것보다 서브모델의 경우 보다 높은 레벨의 확률로 애플리케이션이 예측될 수 있는 경우, 세그먼트화가 수행될 수 있다. 세그먼트화 프로세스의 일부로서 서브모델이 생성되어야 하는지 여부를 결정하기 위해 하나 이상의 다른 기준들이 또한 사용될 수 있다. 예를 들어, 기준은, 서브모델이 구현되기 전에 서브모델이 통계적으로 상당한 양의 입력된 데이터 이력을 가져야 한다는 것일 수 있다. 데이터의 양의 요건은 서브모델에 더 큰 안정성을, 그리고 궁극적으로 더 큰 정확도를 제공할 수 있는데, 이는 작은 양의 데이터에 대해 훈련된 모델이 부정확할 수 있기 때문이다.
세그먼트화(35_201)에서, 이벤트 모델(35_205)을 체육관 서브모델(35_210) 및 다른 서브모델(35_240)로 세그먼트화하는 것이 결정된다. 이러한 세그먼트화는 사용자가 특정 컨텍스트에 대한 정의적 거동(definitive behavior)을 가질 때 발생할 수 있다. 이 예에서, 컨텍스트가, 디바이스가 체육관에 위치되어 있다는 것일 때 정의적 거동이 있는데, 체육관은, 사업체들의 위치들을 복원한 위치를 상호참조함으로써 결정될 수 있는 바와 같이, 특정 체육관 또는 임의의 체육관일 수 있다. 그러한 상호참조는 서버들 상에 저장된 외부 데이터베이스들을 사용할 수 있다. 정의적 거동은, 체육관 서브모델(35_210)이 이벤트 모델(35_205)보다 더 큰 확률로 사용자에 의해 선택되는 정확한 애플리케이션을 예측할 수 있을 때 측정될 수 있다.
세그먼트화(35_201)의 일부로서, 입력된 데이터 이력은 체육관 서브모델(35_210)을 생성하기 위해 사용되고, 체육관 이외의 모든 다른 컨텍스트들에 대응하는 서브모델(35_240)을 생성하기 위해 사용된다. 다른 서브모델(35_240)은, 컨텍스트가 체육관 이외의 무언가일 때 사용자가 상호작용할 수 있는 애플리케이션들을 예측하기 위해 사용될 수 있다.
더 많은 데이터가 수집된 후의 세그먼트화(35_202)에서, 이벤트 모델(35_205)로부터 추가 세그먼트화가 이루어져서 수퍼마켓 모델(35_220)을 생성할 수 있다고 결정된다. 수퍼마켓 모델(35_220)이 충분한 신뢰도로 예측을 행할 수 있도록 충분한 수의 데이터 점들이 수퍼마켓에서 획득된 후에 이러한 결정이 이루어질 수 있다. 다른 서브모델(35_240)로부터 획득된 신뢰도에 비해 충분한 신뢰도가 측정될 수 있다. 일단 수퍼마켓 서브모델(35_220)이 다른 서브모델(35_240)보다 더 큰 신뢰도로 애플리케이션을 예측할 수 있다면, 세그먼트화가 수행될 수 있다. 세그먼트화(35_202) 후에, 서브모델(35_240)은 체육관 및 수퍼마켓 이외의 임의의 다른 컨텍스트에 대응할 것이다.
훨씬 더 많은 데이터가 수집된 후의 세그먼트화(35_203)에서, 체육관 서브모델(35_210)의 세그먼트화가 이루어질 수 있다고 결정된다. 이 경우에, 체육관에 대한 데이터 이력이 특정 시간들, 구체적으로 오후 시간들(예컨대, 12시 내지 4시)로 세그먼트화되는 경우 애플리케이션이 더 높은 신뢰도로 예측될 수 있다고 결정된다. 따라서, 사용자가 오후에 체육관에 있을 때, 사용자가 어느 애플리케이션(들)과 상호작용할 수 있는지를 예측하기 위해 오후 체육관 서브모델(35_211)이 사용될 수 있다. 사용자가 임의의 다른 시간들 동안 체육관에 있는 경우, 체육관 서브모델(35_210)이 사용될 수 있는데, 이는 트리 내의 일 위치에 일부 다른 서브모델을 갖는 것과 동일한데, 즉 다른 서브모델(35_240)이 묘사되는 것과 유사한 방식이다.
훨씬 더 많은 데이터가 수집된 후의 세그먼트화(35_204)에서, 체육관 서브모델(35_210)의 추가 세그먼트화가 이루어져서 오전 체육관 서브모델(35_212)을 생성할 수 있다고 결정된다. 이 경우에, 더 일반적인 체육관 서브모델(35_210)을 사용하는 것보다 더 큰 정확도로 애플리케이션이 예측될 수 있을 정도로 충분한 데이터 이력이 오전 시간들에 대해 수집되었다(이는 오후 체육관 서브모델(35_211)에 대응하지 않는 데이터만을 사용할 것이다).
1. 디폴트 모델
디바이스가 처음 사용자에 의해 획득될(가져와질) 때, 디폴트 모델이 사용될 수 있다. 디폴트 모델은 이벤트들의 그룹(예컨대, 트리거링 이벤트들로서 지정된 모든 이벤트들)에 적용될 수 있다. 상기 언급된 바와 같이, 디폴트 모델은 다른 사용자들로부터의 집계 데이터로부터 시딩될 수 있다. 일부 실시예들에서, 디폴트 모델은, 예컨대, 임의의 하나의 컨텍스트에 대해 충분한 데이터가 이용가능하지 않을 때, 컨텍스트에 상관없이, 가장 인기 있는 애플리케이션을 간단히 선택할 수 있다. 일단 더 많은 데이터가 수집되면, 디폴트 모델은 폐기될 수 있다.
일부 실시예들에서, 디폴트 모델은, 제안될 미리결정된 애플리케이션(들) 및 수행될 액션들을 특정하는 하드코딩된 로직을 가질 수 있다. 이러한 방식으로, 사용자가 어떻게 응답하는지(예컨대, 부정적인 응답은 사용자가 제안된 애플리케이션을 선택하지 않는 것임)에 대해 사용자가 조사될 수 있는데, 이는 긍정적인 응답에 대해 단순히 추적하는 것을 사용하는 추가 데이터를 제공할 수 있다. 그러한 디폴트 모델과 병행하여, 그의 예측을 실제 결과와 비교하기 위해 예측 모델이 구동되고 있을 수 있다. 이어서, 예측 모델은 실제 결과에 응답하여 정제될 수 있다. 예측 모델이 충분한 신뢰도를 가질 때, 디폴트 모델로부터 예측 모델로의 스위칭이 이루어질 수 있다. 유사하게, 서브모델의 성능이 추적될 수 있다. 서브모델이 충분한 신뢰도를 가질 때, 서브모델은 주어진 컨텍스트에 대해 사용될 수 있다.
2. 초기 훈련
예측 모델(예컨대, 이벤트 모델(35_205))은 지금까지 수집된 데이터 이력을 사용하여 초기 훈련을 겪을 수 있는데, 여기서 모델은 사용자에게 제안들을 제공하지 않는다. 이러한 훈련은 초기 훈련으로 불릴 수 있다. 예측 모델은 백그라운드 프로세스의 일부로서 주기적으로(예컨대, 매일) 업데이트될 수 있는데, 이는 디바이스가 충전중이고 사용되지 않을 때 발생할 수 있다. 훈련은, 데이터 이력에서의 실제 결과들과 비교하여 그리고 정확한 예측들의 수를 최적화하기 위해 모델의 계수들을 최적화하는 것을 수반할 수 있다. 다른 예에서, 훈련은 실제로 선택되는 상위 N(예컨대, 미리결정된 수, 미리결정된 백분율)의 애플리케이션들을 식별하는 것을 포함할 수 있다. 훈련 후에, 모델의 정확도가, 그 모델이 제안된 애플리케이션(및 잠재적 대응하는 액션)을 사용자에게 제공하는 데 사용되어야 하는지 여부를 결정하기 위해 측정될 수 있다.
일단 모델이 충분한 정확도를 획득하고 있다면(예컨대, 상위 선택된 애플리케이션이 충분히 높은 정확도로 선택되고 있다면), 모델은 구현될 수 있다. 그러한 발생은 최상위 레벨 모델(예컨대, 이벤트 모델(35_205))에 대해 일어나지 않을 수 있지만, 서브모델들이 특정 컨텍스트들에 대해 테스트될 때 발생할 수 있다. 따라서, 그러한 초기 훈련은 서브모델에 대해 유사하게 수행될 수 있다.
이력 정보가 모바일 디바이스의 사용을 통해 누적됨에 따라, 예측 모델들은 새로운 이력 정보를 고려하여 주기적으로 훈련(즉, 업데이트)될 수 있다. 훈련된 후에, 예측 모델들은 사용자와 모바일 디바이스 사이의 가장 최근의 상호작용 패턴들에 따라 애플리케이션들 및 액션들을 보다 정확하게 제안할 수 있다. 예측 모델들을 훈련하는 것은, 대량의 이력 정보가 기록되었을 때 가장 효과적일 수 있다. 따라서, 훈련은, 모바일 디바이스가 사용자와의 다수의 상호작용들을 검출할 수 있게 하기에 충분히 긴 시간의 간격들로 발생할 수 있다. 그러나, 훈련 세션들 사이에 너무 긴 기간을 대기하는 것은 예측 엔진의 적응성을 저해할 수 있다. 따라서, 훈련 세션들 사이의 적합한 기간은 15 내지 20시간, 예컨대 18시간일 수 있다.
예측 모델들을 훈련하는 것은 시간이 걸릴 수 있고, 모바일 디바이스의 사용을 방해할 수 있다. 따라서, 훈련은, 사용자가 디바이스를 사용하지 않을 가능성이 가장 클 때 발생할 수 있다. 사용자가 디바이스를 사용하지 않을 것임을 예측하는 하나의 방식은, 디바이스가 사용되지 않고 있을 때, 예컨대, 어떠한 버튼들도 눌리지 않을 때 및 디바이스가 이동하고 있지 않을 때 일정 기간 동안 대기하는 것이다. 이것은 사용자가, 가까운 미래에, 예컨대, 사용자가 자고 있을 때 일정 기간 동안 사용자가 전화와 상호작용하지 않을 상태에 있음을 나타낼 수 있다. 대기 기간에 대해 임의의 적합한 지속기간, 예컨대 1 내지 3시간이 사용될 수 있다. 특정 실시예에서, 대기 기간은 2시간이다.
2시간의 끝에서, 예측 모델들은 업데이트될 수 있다. 그러나, 사용자가 2시간의 끝 이전에 모바일 디바이스와 상호작용하는(예컨대, 버튼을 누르거나 또는 디바이스를 이동시키는) 경우, 2시간 기간의 카운트다운이 재시작할 수 있다. 기간이 2시간의 비활동에 도달하기 전에 거듭 재시작하는 경우, 모바일 디바이스는 절대 기간 이후에 예측 모델들의 훈련을 강제할 수 있다. 일 실시예에서, 절대 기간은, 오래된(out-of-date) 예측 모델들로 인해 모바일 디바이스의 사용자 친화성이 떨어지기 시작하는 임계 기간인 것으로 결정될 수 있다. 절대 기간은 10 내지 15시간의 범위, 또는 특정 실시예에서는 12시간일 수 있다. 따라서, 훈련 사이의 최대 시간은 28시간(18 + 10시간) 내지 33시간(18 + 15시간)일 수 있다. 특정 실시예에서, 최대 시간은 30시간(18 + 12 시간)이다.
III. 컨텍스트 정보에 기초한 모델 선택
예측 모델 및 임의의 서브모델들은, 예컨대 도 35b에 도시된 바와 같이, 결정 트리로서 체계화될 수 있다. 결정 트리의 서브모델들은 또한 노드들로 지칭될 수 있다. 결정 트리의 각각의 노드는 상이한 컨텍스트, 예컨대 컨텍스트 데이터의 상이한 조합에 대응할 수 있다. 결정 트리는 어느 서브모델을 사용할지를 결정하기 위해 컨텍스트 정보의 컨텍스트 데이터를 사용하여 고찰될 수 있다.
A. 결정 트리의 고찰
도 35c은 본 발명의 실시예들에 따라 생성될 수 있는 결정 트리(35_300)를 도시한다. 이벤트 모델(35_305)은 결정 트리(35_300)의 최상위 레벨 모델에 대응한다. 이벤트 모델(35_305)은, 예컨대 이 섹션에서 언급되는 바와 같은, 특정 이벤트에 대응할 수 있다. 이벤트 모델(35_305)은 대응하는 이벤트의 검출에 응답하여 선택될 수 있다. 일단 이벤트 모델(35_305)이 선택되면, 어느 서브모델을 사용할지에 관한 결정이 이루어질 수 있다. 각각의 서브모델은 상이한 데이터 이력, 예컨대 데이터의 상호 배타적인 세트들을 사용할 수 있다. 상이한 검출된 이벤트들에 대해 상이한 서브모델들을 갖는 상이한 결정 트리가 존재할 것이다.
결정 트리(35_300)의 제1 계층 레벨은 위치 카테고리에 대응한다. 노드(35_310)는 위치 1에 대응하는데, 이는 위치 1의 경계 영역(예컨대, 특정된 반경 이내)으로서 정의될 수 있다. 노드(35_320)는 위치 2에 대응한다. 노드(35_330)는 위치 3에 대응한다. 노드(35_340)는 임의의 다른 위치들에 대응한다.
노드들(35_310, 35_320, 35_330) 각각은, 컨텍스트 정보가 특정 위치에 대응할 때 서브모델이 보다 일반적인 노드(35_340)가 가능한 것보다 더 큰 신뢰도로 애플리케이션을 예측할 수 있는 경우 생성될 수 있다. 노드들(35_310, 35_320)은 추가 자식 노드들을 갖는 반면, 노드(35_330)는 갖지 않는다.
실시예들은, 노드들(35_310, 35_320, 35_330) 중 임의의 것이 특정 발생에 대한 컨텍스트 정보에 매칭되는지 여부를 검색함으로써 결정 트리(35_300)를 고찰할 수 있다. 이벤트의 특정 발생에 대한 사용자 디바이스의 컨텍스트 정보가 위치 3을 포함하는 컨텍스트를 나타내는 경우, 노드(35_330)에 대한 매칭이 발견된다. 노드(35_330)가 임의의 추가 자식 노드들을 갖지 않기 때문에, 노드(35_330)에 대한 서브모델이 사용될 수 있다.
노드(35_310)는 2개의 자식 노드들, 즉 노드(35_311) 및 노드(35_312)를 갖는다. 노드(35_311)는 특정 시간(시간 1)에 대응하고, 노드(35_312)는 시간 1에 매칭되지 않는 모든 다른 시간들에 대응한다. 이벤트의 현재 발생에 대한 컨텍스트 정보가 위치 1(및 이에 따라 노드(35_310)와의 매칭)을 포함하는 경우, 컨텍스트 정보가 시간 1을 포함하는지(즉, 노드(35_311)에 매칭되는지) 여부를 결정하기 위해 검색이 수행될 수 있다. 컨텍스트 정보가 시간 1을 (즉, 위치 1과 조합하여) 포함하는 경우, 노드(35_311)에 대한 서브모델이 예측을 행하기 위해 사용될 수 있다. 컨텍스트 정보가 시간 1을 포함하지 않는 경우, 노드(35_312)에 대한 서브모델이 예측을 행하기 위해 사용될 수 있다.
노드(35_320)는 2개의 자식 노드들, 즉 노드(35_321) 및 노드(35_322)를 갖는다. 노드(35_321)는 사용자 디바이스가 특정 디바이스(디바이스 1)에 연결되는지 여부에 대응하고, 노드(35_322)는 사용자 디바이스가 디바이스 1에 연결되어 있지 않을 때에 대응한다. 이벤트의 현재 발생에 대한 컨텍스트 정보가 위치 2(및 이에 따라 노드(35_310)와의 매칭)를 포함하는 경우, 컨텍스트 정보가 디바이스와의 연결을 포함하는지(즉, 노드(35_321)에 매칭되는지) 여부를 결정하기 위해 검색이 수행될 수 있다. 컨텍스트 정보가 디바이스 1과의 연결 (즉, 위치 2와 조합하여) 포함하는 경우, 노드(35_321)에 대한 서브모델이 예측을 행하기 위해 사용될 수 있다. 컨텍스트 정보가 디바이스 1과의 연결을 포함하지 않는 경우, 노드(35_322)에 대한 서브모델이 예측을 행하기 위해 사용될 수 있다.
따라서, 일단 트리의 하단이 검출되면, 최종 노드의 서브모델이 예측을 행하기 위해 사용될 수 있다. 트리(35_300)의 모든 분기들은 결정론적일 수 있는데, 이때 최종 노드는 항상 동일한 컨텍스트 정보에 대해 선택된다. 결정 트리(35_300)의 동일한 계층 레벨의 모든 노드들이 동일한 카테고리에 대응하기 때문에, 적용가능한 노드를 선택할 때 충돌들을 피할 수 있다. 예를 들어, 이벤트 모델(35_305)의 자식 노드가 시간 1에 대응한 경우, 그것이 노드(35_311)와 충돌할 수 있는 바와 같이, 충돌이 있을 수 있다. 그러한 실시예들에서, 노드들(35_311, 35_312)의 세트 및 노드들(35_321, 35_322)의 세트에 대한 경우와 같이, 동일한 레벨이지만 상이한 부모 노드들 아래에 있는 노드들은 상이한 카테고리들에 대응할 수 있다.
일단 서브모델이 검출된 이벤트 및 컨텍스트 정보에 기초하여 선택되었다면, 선택된 서브모델은 정말 많은 애플리케이션들 및 임의의 대응하는 액션들을 예측하기 위해 사용될 수 있다. 일부 실시예들에서, 예측된 애플리케이션에 대해 어떤 액션을 취할지는 애플리케이션이 예측되는 신뢰도의 레벨에 의존할 수 있다.
B. 방법
도 35d는 본 발명의 실시예들에 따른, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 애플리케이션을 제안하기 위한 방법(35_400)의 흐름도이다. 방법(35_400)은 컴퓨팅 디바이스에 의해(예컨대, 사용자 디바이스와의 사용자 상호작용들을 추적하고 있는 사용자 디바이스에 의해) 수행될 수 있다. 방법(35_400)은, 애플리케이션을 제안하기 위해 컴퓨팅 디바이스의 하나 이상의 특성들의 상이한 세트들을 갖는 상호작용들을 포함한 상호작용들 이력의 세트를 사용할 수 있다.
블록(35_410)에서, 디바이스는 입력 디바이스에서 이벤트를 검출한다. 입력 디바이스의 예들은 헤드폰 잭, 네트워크 연결 디바이스, 터치 스크린, 버튼들 등이다. 이벤트는 모바일 디바이스가 외부 디바이스 또는 사용자와 같은 외부 엔티티와 상호작용하는 임의의 액션일 수 있다. 이벤트는 디바이스에 대해 반복되는 유형의 것일 수 있다. 따라서, 이벤트의 상이한 발생들에 대해 이력 통계 데이터가 획득될 수 있다. 그러한 데이터 이력을 사용하여 모델들 및 서브모델들이 훈련될 수 있다.
블록(35_420)에서, 이벤트에 대응하는 예측 모델이 선택된다. 선택된 예측 모델은 이벤트에 의존할 수 있다. 예를 들어, 이벤트가 외부 디바이스와의 블루투스 연결을 확립하는 것에 관한 것일 때 블루투스 연결들을 위해 설계된 예측 모델이 선택될 수 있다. 다른 예로서, 이벤트가 헤드폰들의 세트를 헤드폰 잭 내에 삽입하는 것에 관한 것일 때 헤드폰 연결들을 위해 설계된 예측 모델이 선택될 수 있다.
블록(35_430)에서, 컴퓨팅 디바이스의 하나 이상의 특성들이 수신된다. 하나 이상의 특성들은 디바이스 상에서 실행 중인 애플리케이션 제안 엔진에 의해 수신될 수 있다. 이 섹션에서 언급된 바와 같이, 특성들은 시간, 위치, 모션 상태, 현재 또는 이전의 전력 상태(예컨대, 온, 오프, 또는 슬립), 충전 상태, 현재 음악 선택, 캘린더 이벤트들 등에 대응할 수 있다. 그러한 하나 이상의 특성들은 디바이스의 특정 컨텍스트를 정의하는 컨텍스트 데이터에 대응할 수 있다. 하나 이상의 특성들은 이벤트의 검출 즈음의 시간에서, 예컨대 소정 기간 이내에 측정될 수 있다. 그 기간은 이벤트의 검출 전후의 시간, 이벤트의 검출 직전의 기간, 또는 이벤트의 검출 직후의 시간을 포함할 수 있다.
블록(35_440)에서, 하나 이상의 특성들은 예측 모델의 특정 서브모델을 선택하기 위해 사용된다. 예를 들어, 특정 서브모델을 결정하기 위해 결정 트리가 고찰될 수 있다. 예컨대, 하나 이상의 특성들이 특정 서브모델을 고유하게 식별할 수 있다는 점에서, 특정 서브모델은 하나 이상의 특성들에 대응할 수 있다. 이것은 결정 트리가 동일한 부모 노드 하에서 상이한 카테고리들의 특성들을 갖지 않도록 정의될 때 발생할 수 있다.
특정 서브모델은 디바이스와의 사용자의 상호작용들 이력의 특정 서브세트를 사용하여 생성될 수 있다. 특정 서브세트는 서브모델들을 생성함으로써 정확도를 증가시키는 세그먼트화 프로세스로부터 야기될 수 있다. 상호작용들 이력의 특정 서브세트는, 이벤트의 발생들 이후에 디바이스와의 사용자 상호작용들을 추적함으로써 획득될 수 있다. 컴퓨팅 디바이스는 특정 서브세트가 획득될 때 하나 이상의 특성들을 갖는다. 따라서, 디바이스의 현재 컨텍스트는, 상호작용들 이력의 특정 서브세트가 획득된 디바이스의 컨텍스트에 대응한다.
블록(35_450)에서, 특정 서브모델은 사용자에게 제안할 하나 이상의 애플리케이션들을 식별한다. 하나 이상의 애플리케이션들은, 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션이 이벤트와 관련하여 사용자에 의해 액세스되는 적어도 임계 확률을 가질 수 있다. 데이터 이력에서 하나 이상의 애플리케이션들 중 하나의 애플리케이션을 예측하는 것은 정확한 예측으로서 식별될 수 있다. 임계 확률은, 아래에서 더욱 상세하게 기술되는 바와 같이, 다양한 방식들로 측정될 수 있고, 데이터 이력으로부터 결정되는 확률 분포를 사용할 수 있다. 예를 들어, 확률 분포의 평균(중간값) 확률, 중위 확률, 또는 피크 값은 임계 확률 초과(예컨대, 50%와 동등한, 0.5 초과)이도록 요구될 수 있다. 따라서, 신뢰도 레벨은 확률 분포의 평균 값, 중위 값, 또는 피크 값일 수 있다. 다른 예는, 특정 값을 초과하는 확률 분포에 대한 면적이 임계 확률보다 더 큰 것이다.
블록(35_460)에서, 하나 이상의 애플리케이션들과 상호작용하기 위해 사용자에게 사용자 인터페이스가 제공된다. 예를 들어, 디바이스는 인터페이스를 통해 사용자에게 식별된 애플리케이션들을 디스플레이할 수 있는데, 사용자는 사용자가 식별된 애플리케이션들에 액세스하고 싶어할지 여부를 나타내기 위해 그 인터페이스와 상호작용할 수 있다. 예를 들어, 사용자 인터페이스는 터치 감응형 디스플레이를 포함할 수 있는데, 터치 감응형 디스플레이는 식별된 애플리케이션들 중 하나 이상을 사용자에게 보여주고, 사용자가 터치 감응형 디스플레이와 상호작용함으로써 디바이스에 의해 식별된 애플리케이션들 중 하나 이상에 액세스할 수 있게 한다. 사용자 인터페이스는 디스플레이 화면 상에, 컴퓨팅 디바이스의 홈 화면 상에 제공된 것보다 더 적은 애플리케이션들과의 상호작용들을 허용할 수 있다.
일례로서, 하나 이상의 제안된 애플리케이션들이 잠금 화면 상에 제공될 수 있다. 사용자는 잠금 화면으로부터 애플리케이션들을 열도록 선택하여, 이에 의해 사용자가 애플리케이션과 상호작용하는 것을 더 용이하게 할 수 있다. 사용자 인터페이스는 다른 화면 상에 제공될 수 있는데, 이는 디바이스의 사용을 시작하기 위해 버튼을 활성화한 후에 발생할 수 있다. 예를 들어, 사용자를 (예컨대, 패스워드 또는 생체측정을 통해) 인증한 후에 애플리케이션에 특정한 사용자 인터페이스가 나타날 수 있다.
C. 예시적인 모델
일부 실시예들에서, 모델은 데이터의 주어진 세트(또는 서브세트)에 대해 상위 N의 애플리케이션들을 선택할 수 있다. N의 애플리케이션이 과거에 가장 많이 선택되었기 때문에, 향후 거동이 과거 거동을 닮아 있을 것임이 예측될 수 있다. N은 애플리케이션들의 백분율 또는 미리결정된 수(예컨대, 1, 2, 또는 3)일 수 있는데, 이는 이벤트와 관련하여 실제로 사용되는 애플리케이션들의 백분율(즉, 디바이스 상의 모든 애플리케이션들이 아님)일 수 있다. 그러한 모델은 사용자에게 제공하기 위한 상위 N의 애플리케이션들을 선택할 수 있다. 예컨대, N의 애플리케이션들 각각에 대한 확률(신뢰도) 레벨을 결정하여, 이들을 사용자에게 제공할지 여부, 및 이들을 사용자에게 어떻게 제공할지(예컨대, 액션) - 이는 신뢰도 레벨에 의존할 수 있음 - 를 결정하기 위해 추가 분석이 수행될 수 있다.
N이 3인 일례에서, 모델은, 특정 서브모델에 대응하는 컨텍스트 정보로 이벤트가 발생할 때 상위 3개의 가장 많이 개시된 앱들을 반환할 것이다.
다른 실시예들에서, 컨텍스트 정보만을 사용하여 서브모델을 선택하는 것과는 달리, 서브모델은 복합 신호를 사용할 수 있는데, 여기서 일부 컨텍스트 정보가 예측된 애플리케이션을 결정하는 데 사용된다. 예를 들어, 신경 회로망 또는 로지스틱 회귀(logistic regression) 모델이 애플리케이션을 예측하기 위해 위치(또는 다른 특징부들)를 사용하고 그러한 특징부들의 어느 정도 선형 가중된 조합을 구축할 수 있다. 그러한 보다 복잡한 모델들은 서브모델에 대한 데이터의 양이 상당히 많을 때 보다 적합할 수 있다. 일부 실시예들은 일단 특정 노드(즉, 컨텍스트 데이터의 특정 조합)에 대해 더 많은 데이터가 획득되면 그 노드에서 사용되는 서브모델의 유형을 스위칭할 수 있다.
IV. 모델 및 결정 트리의 생성
일부 실시예들에서, 결정 트리는 재생성 시의 데이터 이력에 기초하여 주기적으로(예컨대, 매일) 재생성될 수 있다. 따라서, 결정 트리는 상이한 날들에 대해 상이한 형태들을 가질 수 있다. 자식 노드(추가 서브모델)의 생성은, 정보 이득으로도 지칭되는, 애플리케이션(들)을 예측하기 위한 신뢰도가 증가되는 것에 의해 통제될 수 있다. 자식 노드의 생성은 또한 자식 노드에 대한 데이터가 통계적으로 상당한지 여부에 의해 통제될 수 있다. 일부 실시예들에서, 주어진 레벨에서의 모든 자식 노드들(예컨대, 체육관 서브모델(35_210) 및 다른 서브모델(35_240))은, 통계적으로 상당하고 부모 모델에 대한 정보 이득을 제공하도록 요구될 수 있다.
결정 트리의 노드들을 결정할 때, 상이한 결정 트리들을 생성하기 위해 다양한 방식으로 세그먼트화가 수행될 수 있다. 예를 들어, 특정 위치 및 특정 시간이 모두 사용될 수 있다. 일부 실시예들에서, 애플리케이션을 예측하기 위한 정보 이득(신뢰도)에서의 가장 높은 증가를 제공하는 특성들은 결정에서 보다 높게 생성될 수 있다. 그러한 세그먼트화 프로세스는 사용자가 상호작용할 정확한 애플리케이션을 예측하는 가장 높은 확률을 보장할 수 있다.
A. 모델의 정확도 분포
모델의 정확도는 데이터 이력에 대해 테스트될 수 있다. 주어진 이벤트에 대해, 데이터 이력은 (예컨대, 1분 이내와 같이, 직전 또는 직후) 이벤트와 관련하여 어느 애플리케이션(들)이 사용되었는지를 식별할 수 있다. 각각의 이벤트에 대해, 컨텍스트 데이터가 특정 모델을 결정하기 위해 사용될 수 있다. 추가로, 컨텍스트 데이터는 모델에 대한 입력 특징부들로서 사용될 수 있다.
모델(또는 서브모델)이 상위 애플리케이션을 선택하는 일례에서, 상위 애플리케이션이 실제로 선택되었던(개시되었던) 다수의 데이터 점들 이력은 정확한 카운트로서 결정될 수 있고, 상위 애플리케이션이 선택되지 않았던 다수의 데이터 점들 이력은 부정확한 카운트로서 결정될 수 있다. 상위 N을 선택하는 모델에 대해 N이 1보다 큰 일 실시예에서, 정확한 카운트는 상위 N 애플리케이션들 중 하나의 애플리케이션이 개시된 임의의 데이터 점 이력에 대응할 수 있다.
정확한 카운트 및 부정확한 카운트는 모델이 얼마나 정확한지를 특정하는 분포를 결정하기 위해 사용될 수 있다. 이항 분포가 정확도 분포로서 사용될 수 있다. 파라미터들(m, p)을 갖는 이항 분포는 m개의 독립적인 예/아니오 실험들의 시퀀스에서 성공 횟수의 이산 확률 분포이다. 여기서, 예/아니오 실험들은 예측된 N 애플리케이션들 중 하나의 애플리케이션이 정확한지 여부이다. 예를 들어, 모델이 음악 애플리케이션이 개시될 것임을 예측하였고 음악 애플리케이션이 개시되었던 경우, 데이터 점은 예(참) 실험들의 수를 늘린다. 음악 애플리케이션이 개시되지 않았던 경우(예컨대, 다른 애플리케이션이 개시되었거나 또는 어떠한 애플리케이션도 개시되지 않았던 경우), 데이터 점은 아니오(거짓) 실험들의 수를 늘린다.
베이즈 정리 하에서,
Figure pat00042
이다. B는 특정된 결정된 정확한 카운트(T) 및 부정확한 카운트(F)를 얻는 이벤트이다. A는 예측된 애플리케이션이 정확한 이벤트이다. P(A)는 정확한 애플리케이션을 랜덤하게 선택하는 사전(prior)(예상된) 확률인데, 이는 1인 것으로 가정될 수 있고, 이는, 어떠한 특정 애플리케이션도 적어도 데이터 이력 없이는 임의의 다른 애플리케이션보다 더 많이 예상되지 않을 것이기 때문이다. P(B)는 모델이 정확할 확률(정확한 카운트를 전체 이벤트들 이력으로 나눈 값에 대응함)이다. P(B|A)는 주어진 확률(r)(즉, 정확하게 되거나 부정확하게 되는 확률이 동일한 경우 0.5로 취해질 수 있는 이벤트 A)에 대해 정확한 카운트(T) 및 부정확한 카운트(F)를 얻는 우도 함수(likelihood function)이다. P(A|B)는 결정되는 사후 확률(posterior probability), 즉, 예측 애플리케이션(들) 중 하나의 애플리케이션이 데이터 이력 B를 고려하여 선택되는 확률이다.
일정한 사전확률이 있는 경우, P(A)는 사라지고 하나가 P(A|B)/P(B)로 남겨지는데, 이는 Beta[#correct, #incorrect], 즉, 파라미터들 알파 = #correct 및 베타 = #incorrect를 갖는 베타 분포와 동일하다. 베타 함수가 알파=0 또는 베타=0에 대해 불분명하기 때문에, 실시예들은 #correct 및 #incorrect에 대해 1의 초기 값을 가정할 수 있다. Beta[1+#correct, 1+#incorrect]는 이항 분포이다.
베이즈 통계적 방안의 경우, 사후 확률 p(θ│X)는 증거 X(예컨대, 데이터 이력의 정확한 카운트 및 부정확한 카운트)를 고려한 파라미터들 θ(예컨대, 실제 선택된 애플리케이션은 예측된 애플리케이션 중 하나의 애플리케이션임)의 확률이다. 그것은, 파라미터들(예컨대, 예측된 애플리케이션이 이벤트에 대해 선택됨)을 고려한 증거 X(예컨대, 데이터 이력의 정확한 카운트 및 부정확한 카운트)의 확률인 우도 함수 p(x|θ)와 대비된다. 이들 2개는 다음과 같이 관련된다: 확률 분포 함수가 P(θ)(예컨대, 선택된 애플리케이션이 정확할 예측된 확률)이고 우도 함수 p(x|θ)로 X를 관찰한다는 사전 믿음을 갖게 하고, 이어서 사후 확률은
Figure pat00043
로서 정의된다. 사후 확률은 우도 함수 곱하기 사전 확률에 비례하는 것으로 간주될 수 있다.
다른 정확도 분포들이 사용될 수 있다. 예를 들어, 베타 분포의 다변량 일반화인 디리클레(Dirichlet) 분포를 사용할 수 있다. 배타 분포가 이항 분포의 켤레 사전 분포인 것과 유사한 방식으로, 디리클레 분포는 카테고리 분포(categorical distribution) 및 다항 분포의 켤레 사전 분포이다. 디리클레 분포는, 각각의 이벤트가 αi-1 번 관찰되었음을 고려하여 K개의 라이벌 이벤트들의 확률들이 xi라는 믿음을 반환하는 그의 확률 밀도 함수(probability density function)를 갖는다. 디리클레 분포는 앱 개시들(즉, 특정 이벤트에 대한 예측된 수의 앱 개시들)의 전체 히스토그램을 다항 분포로서 생성하기 위해 사용될 수 있다.
대신에, 실시예들은 그들을 2개의 클래스들(정확한 것과 부정확한 것)로 분리하여 이항 분포를 사용할 수 있고, 전체 히스토그램을 제공할 필요는 없다. 다른 실시예들은 전체 히스토그램을 기술하는 보다 어려운 문제를 해결하려고 하기 위해 디리클레 분포(다항 분포의 켤레 사전 분포)를 사용할 수 있지만, 이것은 더 많은 데이터가 설명될 필요가 있기 때문에 더 많은 데이터를 확실한 것으로 생각할 것이다.
B. 예시적인 이항 분포
도 35e 내지 도 35h는 본 발명의 실시예들에 따른, 다양한 정확한 수들 및 부정확한 수들에 대한 예시적인 이항 분포들의 플롯들을 도시한다. 플롯들은 Beta[1+#correct, 1+#incorrect]로부터 생성되었다. 플롯들의 수평 축 상에서, 1은 정확한 예측에 대응하고 0은 부정확한 예측에 대응한다. 수직 축은 모델이 얼마나 자주 정확할지에 대한 확률을 제공한다. 이러한 분포들은 또한 확률 밀도 함수(PDF)로 불린다. 분포들은 비교를 위해 정규화될 수 있다.
도 35e는 2개의 정확한 예측들 및 2개의 부정확한 예측들에 대한 이항 분포를 도시한다. 그러한 모델은 정확한 것과 부정확한 것이 동일할 것이고, 이에 따라 가장 높은 확률은 0.5에 대한 것이다. 0.5에 대한 가장 높은 값은, 모델이 예측을 절반만 정확하게 얻을 것이라는 가능성이 가장 큼을 나타낸다. 적은 수의 데이터 점들을 고려하면, 그 분포는 매우 넓다. 따라서, 모델의 정확도에 관한 낮은 신뢰도가 있다. 모델이 그때의 50%보다 덜 정확하거나 또는 그때의 50%보다 더 정확하다는 확률이 인지가능하다. 그러나, 데이터 점들의 수가 적기 때문에, 정확성을 결정하는데 있어서의 신뢰도는 낮다.
도 35f는 2개의 정확한 예측들 및 1개의 부정확한 예측들에 대한 이항 분포를 도시한다. 그러한 모델은 그때의 66%가 정확하다. 따라서, 분포의 피크는 약 0.66에 있다. 그러나, 적은 수의 데이터 점들을 고려하면, 신뢰도는 매우 낮다. 모델이 그때의 단지 10 또는 20%만이 정확할 수 있다는 확률이 인지가능하다.
도 35g는 4개의 정확한 예측들 및 2개의 부정확한 예측들에 대한 이항 분포를 도시한다. 그러한 모델은 또한 그때의 66%가 정확하다. 그러나, 여전히 적은 수의 데이터 점들을 고려해 볼 때, 일단 더 많은 데이터가 이용가능하면, 모델이 30%만이 정확할 수 있다는 확률이 여전히 인지가능하다.
도 35h는 40개의 정확한 예측들 및 20개의 부정확한 예측들에 대한 이항 분포를 도시한다. 그러한 모델은 또한 그때의 66%가 정확하다. 그러나, 더 많은 수의 데이터 점들을 고려하면, 모델이 30%만이 정확할 수 있다는 확률은 매우 낮다. 따라서, 그 분포는 모델의 정확도가 66%임을 결정할 수 있는데 있어서의 더 큰 신뢰도를 보여준다. 추가로, 분포 아래의 영역의 더 많은 부분이 0.5의 우측에 있으므로, 그 모델이 도 35f에 대해 결정될 수 있는 것보다 그때의 적어도 50% 정확하다는 것을 보다 확실하게 결정할 수 있다.
C. 통계적으로 상당함
모델이 충분한 신뢰도로 그것이 정확한 경우와 틀린 경우를 정확하게 분리할 수 있으면 그 모델은 통계적으로 상당하다고 간주될 수 있다. 부정확한 예측 및 정확한 예측의 수에 기초하여 결정된 사후 확률 분포는 모델이 충분한 신뢰도로 충분히 정확한지 여부를 결정하는 데 사용될 수 있다.
통계적 유의도(statistical significance)에 대한 필요한 신뢰도 레벨은 다양한 방식으로 제공될 수 있고, 다양한 기준들을 가질 수 있다. 분포에 대한 평균 정확도(#correct/#total), 분포의 피크, 또는 분포의 중위값은 소정의 값을 갖도록 요구될 수 있다. 예를 들어, 모델은, 예컨대, 분포의 평균에 의해 측정되는 바와 같이, 그 때의 적어도 50%가 정확할 필요가 있을 수 있다(즉, 0.5 초과). #correct/#total은 또한 최대 우도 추정값으로 불린다.
정확도의 신뢰도에 대한 추가 기준(신뢰도 레벨)이 있을 수 있다. 신뢰도는 하한계(lower bound) 초과인 분포(예컨대, 0.25 또는 다른 값 초과인 분포의 영역)의 적분에 의해 측정될 수 있다. 분포 곡선 아래의 영역은 또한 누적 분포 함수로 불린다. 일 실시예에서, 기준들은 PDF의 영역의 95%가 0.25 초과라는 것일 수 있다. 구간 [x,1.0]이 PDF 아래의 영역의 95%를 커버하는 지점은 "신뢰도 하한계(lower confidence bound)"로 불린다. 따라서, 2번 정확하고 1번 틀렸는 경우, 그때의 66%가 정확했지만, 도 5b에서와 같이, 분포가 매우 넓기 때문에 그것은 통계적으로 유의하지 않다.
일부 실시예들은, 모델(예컨대, 최상위 레벨 모델 또는 서브모델)이 충분히 정확하고 정확도를 아는 데 충분한 신뢰도가 있을 때에만 그 모델을 사용하기 시작할 것이다. 예를 들어, 초기 모델은 그것이 사용되기 전에 잠시 동안 훈련될 수 있다. 정확도 및 신뢰도가 각각의 임계치들을 초과할 때에만, 실시예가 사용자에게 제안들을 제공하기 위해 모델을 사용하기 시작할 수 있다. 일부 실시예들에서, PDF의 영역의 소정량의 요건은, 그 영역이 우측으로 충분히 이동되는 경우 정확도가 충분히 높은 것으로 알려질 수 있기 때문에, 모델을 사용할지 여부를 결정하기 위한 단일 기준을 제공할 수 있다.
일부 실시예들에서, 초기 모델은, 적어도 처음에, 더 많은 통계치들을 제공하기 위해 다른 사람들로부터의 데이터를 사용할 수 있다. 이어서, 일단 충분한 통계치들이 획득되면, 특정 사람에 대한 데이터만이 사용될 수 있다. 추가로, 사용자에게 특정한 데이터는 더 높게 가중되어서, 다른 사람들로부터의 데이터를 단계적으로 삭감할 수 있다.
D. 정보 이득(엔트로피)
모델을 세그먼트화할지 여부를 결정하기 위해 모델의 제1 확률 분포와 서브모델의 제2 확률 분포 사이의 비교가 이루어질 수 있다. 일부 실시예들에서, 비교는 정보 이득(예컨대, 쿨백-라이블러 발산(Kullback―Leibler divergence)), 또는 동등하게 엔트로피의 감소가 있는지 여부를 결정할 수 있다. 높은 엔트로피는 유사한 확률을 갖는 많은 애플리케이션들이 선택되게 할 것인데, 이때 최대 엔트로피는 모든 애플리케이션들에 대해 동일한 확률을 갖는다. 최대 엔트로피를 가질 때, 정확한 애플리케이션을 선택할 가능성이 가장 낮은데, 이는 모든 애플리케이션이 동일한 확률을 갖고 어떠한 애플리케이션도 다른 것보다 가능성이 더 크지 않기 때문이다.
그러한 차이 메트릭들은, 서브모델이 적용될 주어진 컨텍스트에 대한 (신뢰도를 포함한) 보다 정확한 예측이 서브모델을 사용하여 이루어질 수 있는지 여부를 결정하기 위해 사용될 수 있다. 차이 메트릭이 차이 임계치보다 더 큰 경우, 세그먼트화가 수행될 수 있다. 차이 메트릭은 정보가 얻어짐을 보장하기 위해 정 부호(positive sign)를 가질 수 있다. 쿨백-라이블러 발산이 차이 메트릭으로서 사용될 수 있다. 다른 예시적인 메트릭들은 지니 불순도(Gini impurity) 및 분산(variance) 감소를 포함한다.
예를 들어, 모든 것에 대해 하나의 모델이 있었는 경우, 그 모델은 모든 컨텍스트들에 대해 최상위 애플리케이션(예컨대, 음악 애플리케이션)만을 선택할 것이다. 음악 애플리케이션은 모든 컨텍스트들(예컨대, 체육관, 직장으로 운전함 등)에 대한 예측일 것이다. 서브모델들이 더 많은 특정 컨텍스트들에 대해 생성됨에 따라, 예측들은 보다 특정하게 될 수 있는데, 예컨대, 사용자가 체육관으로 갈 때, 단일 앱이 우세하거나, 또는 특정 재생목록이 우세하다. 따라서, 하나의 애플리케이션에 대한 선택들의 수에서 피크가 있을 수 있고, 이어서 그 밖의 모든 것은 0에 있다. 따라서, 결정 트리를 갖는 목표는 정보 이득을 최대화하는 것(엔트로피를 최소화하는 것)이다.
보다 특정한 컨텍스트들이 더 많은 정보 이득을 제공할 수 있을 때 추가 서브모델들이 식별될 수 있다. 예를 들어, 오전에 체육관은, 특정 재생목록이 우세한 시기에 대한 보다 특정한 컨텍스트일 수 있다. 다른 예로서, 오전에 자동차에 연결됨은, 뉴스 애플리케이션의 보다 정확한 예측을 제공할 수 있는데, 이는 데이터 이력이 주로 뉴스 애플리케이션(또는 뉴스 애플리케이션들의 그룹)의 선택들을 갖도록 (엔트로피의 감소를) 더 많이 체계화하기 때문이다.
도 35i 및 도 35j는 본 발명의 실시예들에 따른, 부모 모델 및 세그먼트화로부터 얻은 서브모델을 도시한다. 도 35i는 80개의 정확한 예측들 및 60개의 부정확한 예측들을 제공하는 부모 모델에 대한 이항 분포를 도시한다. 부모 모델에 대해 사용된 데이터 이력의 일부분으로부터 서브모델이 생성될 수 있다. 도 35j는 14개의 정확한 예측들 및 2개의 부정확한 예측들을 제공하는 서브모델에 대한 이항 분포를 도시한다. 서브모델이 더 적은 데이터 점들을 갖고 있긴 하지만, 예측은 더 정확하고, 1을 향하는 이동에 의한 증거로서, 이는 더 큰 정확도를 의미한다. 따라서, 엔트로피는 감소되었고, 정보 이득이 있다.
E. 세그먼트화하는 시기
상기 언급된 바와 같이, 다양한 실시예들은, 서브모델을 생성하기 위해 모델을 세그먼트화할지 여부를 결정하기 위한 하나 이상의 기준들을 사용할 수 있다. 하나의 기준은, 정확한 예측(하나 이상의 예측된 애플리케이션의 그룹 중 하나의 애플리케이션이 선택됨)을 행하기 위한 신뢰도 레벨이 신뢰도 임계치보다 더 크다는 것일 수 있다. 예를 들어, 정확한 예측의 평균 확률은 정확도 임계치(신뢰도 임계치의 예)보다 더 크다. 다른 예로서, 특정 값을 초과하는 분포의 CDF는 신뢰도 레벨을 초과하도록 요구될 수 있다.
다른 기준은, 모델 대신에 서브모델을 사용하는 것이 정보 이득(엔트로피의 감소)을 제공한다는 것일 수 있다. 예를 들어, 쿨백-라이블러 발산에 대한 값이 차이 임계치와 비교될 수 있다. 세그먼트화에 대한 하나 이상의 기준들은, 서브모델들이 베이스 모델을 능가할 것임을 보장할 수 있다. 하나 이상의 기준들은 부모 모델의 모든 서브모델들, 예컨대, 체육관 서브모델(35_210) 및 다른 서브모델(35_240)에 대해 요구될 수 있다.
일부 경우에, 부모 모델에 비해 2개의 서브모델들에 대한 신뢰도 하한계들은 감소될 수 있지만, 여전히 임계치 초과의 신뢰도 하한계 및 정보 이득을 갖는다. 신뢰도 하한계는 또한 증가될 수 있다. 모든 서브모델들이 충분히 높은 신뢰도 한계를 갖고 정보 이득이 충분히 긍정적이기만 하면, 실시예들은 보다 일반적인 모델을 세그먼트화(분할)하도록 선택할 수 있다.
일부 실시예들에서, 임의의 정확도 및 정보 이득 기준들은, 세그먼트화의 결과로서 신뢰도 레벨이 증가하는 것을 보장함으로써 만족될 수 있다. 예를 들어, 부모 모델에 대해, 다른 특성들을 포함할 수 있는 디바이스의 제1 특성이 제1 컨텍스트의 제1 서브모델을 테스트하기 위해 선택될 수 있다. 컴퓨팅 디바이스가 제1 특성을 가졌을 때 발생한 상호작용들 이력의 제1 서브세트가 식별될 수 있다. 제1 서브세트는 부모 모델에 대한 상호작용들 이력의 세트로부터 선택되고 상호작용들 이력의 세트보다 더 작다.
상호작용들 이력의 제1 서브세트에 기초하여, 제1 서브모델은, 사용자가 제1 신뢰도 레벨로 이벤트와 관련하여 액세스할 하나 이상의 애플리케이션들의 제1 그룹의 적어도 하나의 애플리케이션을 예측할 수 있다. 제1 서브모델은, 초기 신뢰도 레벨보다 적어도 임계량 - 이는 0 이상일 수 있음 - 더 높은 제1 신뢰도 레벨에 적어도 기초하여 생성될 수 있다. 이러한 임계량은 차이 임계치에 대응할 수 있다. 일부 구현예들에서, 생성될 수 있는 제1 서브모델은, 추가 기준들이 사용될 수 있기 때문에, 이러한 기준이 만족될 때 항상 생성되지는 않을 수 있다. 신뢰도 레벨이 초기 신뢰도 레벨보다 더 크지 않은 경우, 테스트하기 위한 다른 특성이 선택될 수 있다. 신뢰도 레벨들의 이러한 비교는 정보 이득에 대해 테스트하는 것에 대응할 수 있다. 하나 이상의 애플리케이션들의 제2 그룹을 예측하기 위한 제1 서브모델의 (제2 특성에 대한) 제2 서브모델의 제2 신뢰도 레벨을 결정하기 위해 동일한 프로세스가 반복될 수 있다. 제2 서브모델에 대해 상호작용들 이력의 제2 서브세트가 사용될 수 있다. 제3 특성 또는 더 많은 특성들이 유사한 방식으로 테스트될 수 있다.
F. 결정 트리의 재생성
실시예들은 모델들의 결정 트리를 주기적으로, 예컨대 일단위로 생성할 수 있다. 생성은 그 시간에 이용가능한 데이터 이력을 사용할 수 있다. 따라서, 결정 트리는 하나의 생성으로부터 다른 생성으로 변경될 수 있다. 일부 실시예들에서, 결정 트리는 이전의 결정 트리들의 지식 없이 구축된다. 다른 실시예들에서, 새로운 결정 트리는, 그러한 이전의 지식, 예컨대, 어떤 서브모델들이 가능성 있는지를 아는 것으로부터, 또는 이전의 결정 트리로부터 시작함으로써 구축될 수 있다.
일부 실시예들에서, 어느 서브모델들이 가장 큰 정보 이득을 제공하는지를 결정하기 위해 모든 컨텍스트들(또는 컨텍스트들의 미리결정된 목록)이 시도된다. 예를 들어, 위치가 서브모델들로 세그먼트화하기 위해 가장 큰 정보 이득을 제공하는 경우, 적어도 하나의 특정 위치에 대한 서브모델들이 생성될 수 있다. 세그먼트화의 각각의 레벨에서, 어느 컨텍스트들이 정보 이득의 가장 높은 증가를 제공하는지를 결정하기 위해 그러한 욕심 많은 방식(greedy fashion)으로 컨텍스트들이 테스트될 수 있다.
다른 실시예들에서, 세그먼트화가 적절한지 여부를 테스트하기 위해 컨텍스트들의 서브세트가 선택된다(예컨대, 의사랜덤(pseudorandom)을 포함하는 랜덤 선택). 그러한 선택은 테스트될 수 있는 많은 컨텍스트들이 있을 때 유리할 수 있다. 컨텍스트들은, 어느 컨텍스트들이 세그먼트화를 야기할 가능성이 있는지에 대한 확률들을 사용할 수 있는, 몬테카를로(Monte Carlo) 기반 접근법을 사용하여 선택될 수 있다. 난수(random number)가 생성될 수 있고(랜덤 프로세스의 일례), 이어서 (특정 특성에 대해) 어느 컨텍스트를 테스트할지를 결정하는 데 사용될 수 있다.
확률들은 가중치들로서 사용되어서, 더 높은 가중치들을 갖는 컨텍스트들이 "랜덤" 선택 프로세스에서 선택될 가능성이 더 크도록 할 수 있다. 확률들은 어느 서브모델들이 과거에 생성되었는지에 기초하여 결정될 수 있다. 예를 들어, 체육관(및 잠재적으로 하루 중 특정 시간)이 이전에 매우 성공적이었는 경우, 생성 프로세스는 그러한 컨텍스트를, 그것이 과거에 얼마나 자주 선택되었는지에 따라, 그리고 잠재적으로 또한 정보 이득이 과거에 얼마나 높게 있었는지에 따라, 90%, 95%, 또는 99% 가능성으로 선택한다. 각각의 레벨에 대해 또는 전체 트리 생성 프로세스에 대해 소정 개수의 분할들이 시도될 것이다.
V. 확률의 레벨에 기초한 액션의 결정
예측 모델은, 선택된 애플리케이션에 대해서뿐만 아니라 특정 액션 및 잠재적으로 미디어 콘텐츠(예컨대, 특정 재생목록)에 대해서도 테스트할 수 있다. 일부 실시예들에서, 일단 애플리케이션을 선택하는 확률이 충분히 정확하다면, 단지 개시할 옵션을 제공하는 것보다는 더 적극적인 액션이 제공될 수 있다. 예를 들어, 애플리케이션이 개시될 때, 콘텐츠가 자동으로 재생될 수 있다. 또는, 애플리케이션이 자동으로 개시될 수 있다.
애플리케이션을 선택하는 것이 충분한 확률로 예측될 때(예컨대, 신뢰도 레벨이 높은 임계치를 초과함), 예측은 액션들을 테스트하기 시작할 수 있다. 따라서, 애플리케이션의 예측에 대해 테스트할뿐만 아니라, 특정 액션이 충분한 정확도로 예측될 수 있는지 여부도 테스트한다. (미디어 항목들을 포함한) 상이한 가능한 액션들이 데이터 이력으로부터 획득될 수 있다. 복수의 액션들이 하나의 애플리케이션으로 수행되도록 선택될 수 있다. 복수의 액션들 각각은 제1 서브모델의 복수의 상이한 서브모델들 중 하나의 서브모델에 대응할 수 있다. 복수의 액션들 중 적어도 하나의 액션에 대한 제2 서브모델을 생성할지 여부를 결정하기 위해 복수의 상이한 서브모델들 각각의 신뢰도 레벨이 테스트될 수 있다.
따라서, 실시예들은 더 큰 신뢰도가 있을 때 수행될 액션들에 대해 보다 적극적일 수 있다. 예측 모델은, 특정 액션이 수행될 확률이 높은 경우 특정 사용자 인터페이스를 제공할 수 있다. 따라서, 일부 실시예들에서, 사용 확률이 높을수록, 단지 애플리케이션을 열기 위해 보다 용이한 메커니즘을 제공하는 것과는 달리, 대응하는 사용자 인터페이스(예컨대, 시각적 또는 음성 커맨드)를 갖는 애플리케이션을 자동으로 여는 것과 같이, 보다 적극적인 액션이 취해질 수 있다.
예를 들어, 베이스 모델은, 액션이 잠금 화면 상에 애플리케이션(들)을 제안하는 것일 수 있는 소정 레벨의 통계적 유의도(정확도 및 신뢰도)를 가질 수 있다. 다른 예들로서, 보다 높은 레벨의 통계적 유의도는 화면이 환해지게 할 수 있다(이에 의해 애플리케이션에 주목하게 하여, 단지 하나의 애플리케이션이 선택될 수 있거나, 또는 그 애플리케이션의 사용자 인터페이스(UI)(즉, 애플리케이션을 선택하기 위한 시스템의 UI가 아님)가 제공될 수 있다). 일부 실시예들은 세그먼트화할지 여부를 결정할 때 취해지는 액션들을 고려할 수 있고, 액션이 없어질 경우 세그먼트화하지 않을 수 있는데, 이는 일반적으로 정보 이득을 갖는 것에 대응할 것이다.
액션은, 모델이 단지 하나의 애플리케이션을 예측하는지 또는 애플리케이션의 그룹을 예측하는지 여부에 의존할 수 있다. 예를 들어, 하나 대신에 3개의 추천들을 할 기회가 있는 경우, 그것은 또한 확률 분포를 변경할 것인데, 이는 3개 중 임의의 하나의 선택이 정확한 예측을 제공할 것이기 때문이다. 하나의 애플리케이션의 추천에 대해 확실하지 않았던 모델은 3개에 대해 충분히 확실할 수 있다. 실시예들은, 모델에 의해 예측되는 애플리케이션의 그룹에 다른 애플리케이션(예컨대, 그룹 내에 아직 없는 다음으로 가장 많이 사용되는 애플리케이션)을 추가하는 것을 수행하여, 이에 의해 모델을 보다 확실하게 할 수 있다. 모델이 하나 초과의 애플리케이션의 예측에 기초하는 경우, 제공되는 사용자 인터페이스는 이어서 하나 초과의 애플리케이션과의 상호작용을 제공할 것인데, 이는 UI에 대한 형태에 영향을 미칠 수 있다. 예를 들어, 애플리케이션들 전부가 잠금 화면 상에 제공될 수 있고, 하나의 애플리케이션이 자동으로 개시되지 않을 것이다.
다수의 액션들, 및 상이한 액션들에 대한 제안이 또한 있을 수 있다. 예를 들어, 서브모델의 일부로서 체육관에서 2개의 재생목록들이 있을 수 있다(예컨대, 하나의 애플리케이션이 식별되지만, 2개의 액션들이 선택될 가능성이 유사할 때 모델에서 2개의 액션들이 식별된다). 2개의 액션들은 함께 통계적으로 유의도를 가질 수 있는 반면, 별개로는 그들은 그렇지 않았다.
일례로서, 이벤트(예컨대, 헤드폰들에 플러그인하는 것)에 대한 모델이 처음 훈련될 때, 모델은 임의의 액션들을 수행하기에 충분히 확실하지 않을 수 있다. 초기 레벨의 신뢰도에서, 아이콘 또는 다른 객체가 잠금 화면 상에 디스플레이될 수 있다. 다음으로 더 높은 레벨의 신뢰도에서, 화면이 환해질 수 있다. 추가 레벨의 신뢰도에서, 애플리케이션의 특정 기능에 특정한 사용자 인터페이스(예컨대, 음악을 재생하기 위한 제어부들 또는 새로운 애플리케이션의 상위 스토리들에 액세스하기 위한 스크롤 창)가 디스플레이될 수 있다. 다음으로 더 높은 레벨은, 자동으로 개시되는 애플리케이션의 소정의 기능에 대응할 수 있다. 액션은 심지어 애플리케이션의 현재 동작(예컨대, 하나의 노래를 재생하는 것)을 다른 노래 또는 재생목록을 재생하는 것으로 대체하는 것일 수 있다. 이러한 상이한 레벨들은 신뢰도 레벨을 정의하는 데 사용되는 다양한 값들에 대한 것일 수 있다.
다른 예시적인 액션들은 지금 재생 중인 노래를 변경하는 것, 통지를 제공하는 것(이는 화면 상의 전방 및 중앙일 수 있음)을 포함할 수 있다. 액션은 디바이스를 잠금해제한 후에 발생할 수 있는데, 예컨대, 애플리케이션에 특정한 UI가 잠금해제한 후에 디스플레이될 수 있다. 액션들은 애플리케이션의 특정 기능을 시작하기 위해 딥 링크들을 사용하여 정의될 수 있다.
일부 실시예들은 사용자에게 디스플레이 화면 상에 안내문(notice)을 디스플레이할 수 있다. 안내문은, 예를 들어 푸시 통지에 의해 전송될 수 있다. 안내문은, 사용자에게 제안된 애플리케이션을 통지하는 텍스트 및/또는 사진들을 포함하는 시각적 안내문일 수 있다. 안내문은 사용자가 그의 또는 그녀의 레저(leisure)를 선택 및 구동하기 위해 사용자에게 애플리케이션을 제안할 수 있다. 선택될 때, 애플리케이션이 구동될 수 있다. 일부 실시예들에서, 보다 적극적인 예측들을 위해, 통지는 또한 제안된 애플리케이션 내의 제안된 액션을 포함할 수 있다. 즉, 통지는 사용자에게 제안된 애플리케이션 및 제안된 애플리케이션 내의 제안된 액션을 알려줄 수 있다. 따라서, 사용자에게는 제안된 애플리케이션을 구동하거나 또는 제안된 애플리케이션 내의 제안된 액션을 수행하기 위한 옵션이 주어질 수 있다. 일례로서, 통지는 사용자에게, 제안된 애플리케이션이 음악 애플리케이션이고 제안된 액션이 음악 애플리케이션 내의 소정의 노래를 재생하는 것임을 알려줄 수 있다. 사용자는 그 또는 그녀가 제안된 노래를 예시하는 아이콘을 클릭함으로써 노래를 재생하고 싶어할 것임을 나타낼 수 있다. 대안적으로, 사용자는 그 또는 그녀가 오히려 화면을 가로질러 통지를 스와이프함으로써 다른 노래를 재생하기 위해 애플리케이션을 구동할 것임을 나타낼 수 있다.
하나의 통지에서 사용자 인터페이스로 제안된 애플리케이션 및 제안된 액션을 출력하는 것 이외에, 예측 엔진이 하나의 통지에서 사용자 인터페이스로 2개의 제안된 액션들을 출력할 수 있다. 예를 들어, 예측 엔진은 제1 노래를 재생하기 위한 제안된 액션, 및 제2 노래를 재생하기 위한 제2 제안된 액션을 출력할 수 있다. 사용자는 그 통지에서 각각의 아이콘을 클릭함으로써 어느 노래를 재생할지를 선택할 수 있다. 실시예들에서, 제안된 액션들은 상이한 기준들에 기초하여 결정될 수 있다. 예를 들어, 하나의 제안된 액션은 컨텍스트 정보에 상관없이 가장 최근에 재생되었던 노래를 재생하기 위한 것일 수 있는 반면, 다른 하나의 제안된 액션은 동일 또는 유사한 컨텍스트 정보 하에서 마지막으로 재생되었던 노래를 재생하기 위한 것일 수 있다. 일례로서, 사용자가 그의 또는 그녀의 자동차에 타고, 트리거링 이벤트가 예측 엔진으로 하여금 소정의 노래를 재생하는 것에 관한 2개의 액션들을 제안하게 하는 상황의 경우, 노래 A는 집에서 있었던 마지막으로 재생되었던 노래일 수 있는 반면, 노래 B는 사용자가 자동차 안에 있었던 마지막 시간에 재생되었던 노래일 수 있다. 사용자가 재생될 노래를 선택할 때, 노래는 처음부터 계속될 수 있거나 또는 그것이 마지막으로 중지되었던 곳(예컨대, 노래의 중간)으로부터 계속될 수 있다.
예측 엔진이 액션을 제안할 수 있게 하기 위해, 예측 엔진(35_302)은 디바이스의 활성 상태에 관한 정보를 저장하는 메모리 디바이스에 액세스할 수 있다. 디바이스의 활성 상태는, 제안된 애플리케이션의 선택에 뒤이어 수행되는 액션을 나타낼 수 있다. 예를 들어, 음악 애플리케이션에 대한 활성 상태는 소정의 노래를 재생하는 것일 수 있다. 활성 상태는 노래가 마지막으로 중지되었을 때를 계속해서 추적할 수 있다. 실시예들에서, 이력 데이터베이스는 디바이스의 활성 상태에 관련한 데이터 이력을 기록할 수 있다. 따라서, 예측 엔진은 제안된 애플리케이션에 의해 구동될 액션을 제안할 수 있다.
VI. 아키텍처
도 35k은 하나 이상의 애플리케이션들과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하기 위한 예시적인 아키텍처(35_700)를 도시한다. 아키텍처(35_700)는 이벤트들을 검출하고 애플리케이션에 대한 제안을 제공하기 위한 요소들을 도시한다. 아키텍처(35_700)는 또한, 예컨대 연락처들을 제안하기 위한, 다른 제안들을 제공할 수 있다. 아키텍처(35_700)는 사용자 디바이스(예컨대, 도 1a의 디바이스(100)) 내에 존재할 수 있다.
상부에 UI 요소들이 있다. 도시된 바와 같이, 잠금 화면(35_710), 검색 화면(35_720), 및 음성 인터페이스(35_725)가 있다. 이들은 사용자 인터페이스를 사용자에게 제공할 수 있는 방식들이다. 다른 UI 요소들이 또한 사용될 수 있다.
하부에 데이터 소스들이 있다. 이벤트 관리자(35_742)는 이벤트들을 검출하고 이벤트에 관한 정보를 애플리케이션 제안 엔진(35_740)에 제공할 수 있다. 일부 실시예들에서, 이벤트 관리자는 이벤트가 애플리케이션의 제안을 트리거하는지 여부를 결정할 수 있다. 애플리케이션 제안을 트리거하기 위해 미리결정된 이벤트들의 목록이 특정될 수 있다. 위치 유닛(35_744)은 사용자 디바이스의 위치를 제공할 수 있다. 예들로서, 위치 유닛(35_744)은 GPS 센서 및 모션 센서들을 포함할 수 있다. 위치 유닛(35_744)은 또한 사용자의 마지막 위치를 저장할 수 있는 다른 애플리케이션들을 포함할 수 있는데, 이는 애플리케이션 제안 엔진(35_740)으로 전송될 수 있다. 다른 컨텍스트 유닛(35_746)으로부터 다른 컨텍스트 데이터가 제공될 수 있다.
애플리케이션 제안 엔진(35_740)은 하나 이상의 애플리케이션들, 및 대응하는 액션을 식별할 수 있다. 애플리케이션 제안 엔진(35_740)과 동일한 레벨에서, 연락처 제안 엔진(35_750)은 사용자에게 제시하기 위한 제안된 연락처들을 제공할 수 있다.
제안된 애플리케이션은 디스플레이 센터(35_730)로 제공될 수 있는데, 이는 사용자에게 무엇을 제공할지를 결정할 수 있다. 예를 들어, 디스플레이 센터(35_730)는 제안된 애플리케이션을 제공할지 또는 연락처를 제공할지 여부를 결정할 수 있다. 다른 예들에서, 애플리케이션(들) 및 연락처(들) 양쪽 모두가 제공될 수 있다. 디스플레이 센터는 사용자에게 제공하기 위한 최상의 방식을 결정할 수 있다. 사용자에 대한 상이한 제안들은 상이한 UI 요소들을 사용할 수 있다. 이러한 방식으로, 디스플레이 센터(35_730)는 사용자에 대한 제안들을 제어하여서, 상이한 엔진들이 다른 엔진들에 의해 제공된 제안들을 인터럽트하지 않도록 할 수 있다. 다양한 실시예들에서, 엔진들은 제안들(추천들)을 디스플레이 센터(35_730)로 푸시하거나, 또는 디스플레이 센터(35_730)로부터 제안들에 대한 요청을 수신할 수 있다. 디스플레이 센터(35_730)는 소정 시간 동안 제안을 저장할 수 있고, 이어서 제안이 사용자에게 제공되지 않았거나 또는 사용자가 사용자 인터페이스와 상호작용하지 않았는 경우 그 제안을 삭제하도록 결정할 수 있다.
디스플레이 센터(35_730)는 또한, 제안을 언제 전송할지를 결정하기 위해, 사용자 디바이스에 어떤 다른 액션들이 일어나고 있는지를 식별할 수 있다. 예를 들어, 사용자가 애플리케이션을 사용하고 있는 경우, 제안이 제공되지 않을 수 있다. 디스플레이 센터(35_730)는 다양한 요인들, 예컨대, 디바이스의 모션 상태, 잠금 화면이 하나인지 여부 또는 승인된 액세스가 제공되었는지 여부, 사용자가 디바이스를 사용하고 있는지 여부 등에 기초하여 제안을 언제 전송할지를 결정할 수 있다.
일부 실시예들에서, 디바이스(100)(도 1a) 상에 포함된 소프트웨어 컴포넌트들은 애플리케이션 제안 모듈을 포함한다. 애플리케이션 제안 모듈은, 예컨대, 도 35k에서 전술된 바와 같이, 다양한 서브모듈들 또는 시스템들을 포함할 수 있다. 애플리케이션 제안 모듈은 방법(37_400)의 전부 또는 일부를 수행할 수 있다.
데이터 희소성의 맥락에서 복잡한 사용자 패턴을 학습하기 위한 생성 모델의 결정 트리 세그먼트화에 대한 예시적인 방법, 디바이스 시스템, 및 컴퓨터 판독가능 매체
이 섹션에서는 이벤트에 기초하여 사용자에게 하나 이상의 애플리케이션들을 제안하기 위한 시스템들, 방법들, 및 장치들이 제공된다. 예측 모델은 특정 이벤트에 대응할 수 있다. 제안된 애플리케이션은 컴퓨팅 디바이스의 하나 이상의 특성들을 사용하여 결정될 수 있다. 예를 들어, 디바이스가 하나 이상의 특성들을 가질 때 수집되며 이벤트의 발생들 이후의 사용자 상호작용들에 관한 것인 데이터 이력의 서브세트로부터 특정 서브모델이 생성될 수 있다. 컴퓨팅 디바이스의 특성들의 상이한 컨텍스트들에 대응하는 서브모델들의 트리가 결정될 수 있다. 그리고, 서브모델을 언제 생성할지를 결정하기 위해 다양한 기준들, 예컨대 데이터 이력의 서브세트에서의 정확한 예측 및 부모 모델에 대한 데이터 이력의 분포에서의 정보 이득(엔트로피 감소)을 제공하는 서브모델에서의 신뢰도 레벨이 사용될 수 있다.
일부 실시예들에서, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 하나 이상의 애플리케이션들을 제안하기 위한 방법이 제공되는데, 본 방법은, 컴퓨팅 디바이스에서: 컴퓨팅 디바이스의 입력 디바이스에서 이벤트를 검출하는 단계 - 이벤트는 컴퓨팅 디바이스에 대해 반복되는 유형의 것임 -; 이벤트에 대응하는 예측 모델을 선택하는 단계; 컴퓨팅 디바이스의 하나 이상의 특성들을 수신하는 단계; 하나 이상의 특성들을 사용하여 예측 모델의 특정 서브모델을 선택하는 단계 - 특정 서브모델은 하나 이상의 특성들에 대응하고, 특정 서브모델은 컴퓨팅 디바이스와의 사용자의 상호작용들 이력의 특정 서브세트를 사용하여 생성되고, 상호작용들 이력의 특정 서브세트는 이벤트가 검출된 후에 그리고 컴퓨팅 디바이스가 하나 이상의 특성들을 가질 때 발생함 -; 특정 서브모델에 의해, 사용자에게 제안할 하나 이상의 애플리케이션들을 식별하는 단계 - 하나 이상의 애플리케이션들은 이벤트와 관련하여 사용자에 의해 액세스되고 있는 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션의 적어도 임계 확률을 가짐 -; 하나 이상의 애플리케이션들과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하는 단계를 포함한다.
일부 실시예들에서, 사용자 인터페이스는 컴퓨팅 디바이스의 홈 화면 상에 제공된 것보다 더 적은 애플리케이션들을 가진 채 디스플레이 화면 상에 제공된다. 일부 실시예들에서, 특정 서브모델은 신뢰도 임계치보다 더 큰 신뢰도 레벨로 하나 이상의 애플리케이션들을 예측한다. 일부 실시예들에서, 본 방법은 신뢰도 레벨에 기초하여 사용자 인터페이스가 사용자에게 어떻게 제공되어야 할지를 결정하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 제1 확률 분포를 결정하고 신뢰도 레벨을 획득하기 위해 하한계보다 더 큰 지점들에 대한 제1 확률 분포의 누적 분포를 산출함으로써 신뢰도 레벨을 결정하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 제1 확률 분포를 결정하고 신뢰도 레벨을 획득하기 위해 제1 확률 분포의 평균 값, 중위 값, 또는 피크 값을 산출함으로써 신뢰도 레벨을 결정하는 단계를 포함한다. 일부 실시예들에서, 특정 서브모델은, 상호작용들 이력의 특정 서브세트의 정확한 예측들을 위한 제1 확률 분포에 예측 모델의 정확한 예측들을 위한 제2 확률 분포에 대한 정보 이득을 제공한다. 일부 실시예들에서, 정보 이득은 차이 임계치보다 더 크고, 정보 이득은 쿨백-라이블러 발산을 사용하여 결정된다. 일부 실시예들에서, 본 방법은, 이벤트가 검출된 후에 컴퓨팅 디바이스와의 사용자의 상호작용들 이력의 세트를 수신하는 단계 - 상호작용들 이력의 세트는 상호작용들 이력의 특정 서브세트를 포함하고 그보다 더 크고, 상호작용들 이력의 세트는 컴퓨팅 디바이스의 하나 이상의 특성들의 상이한 세트들을 갖는 상호작용들을 포함함 -; 예측 모델의 초기 모델을 사용하여, 사용자가 상호작용들 이력의 세트에 기초한 이벤트 이후에 액세스할 하나 이상의 애플리케이션들을 예측하기 위한 초기 신뢰도 레벨을 산출하는 단계; 및 컴퓨팅 디바이스의 제1 특성을 선택하고; 컴퓨팅 디바이스가 제1 특성을 가졌을 때 발생한 상호작용들 이력의 제1 서브세트를 식별하고 - 제1 서브세트는 상호작용들 이력의 세트로부터 선택되고 상호작용들 이력의 세트보다 더 작음 -; 제1 서브모델을 사용하여, 사용자가 상호작용들 이력의 제1 서브세트에 기초한 이벤트와 관련하여 액세스할 하나 이상의 애플리케이션들의 제1 그룹의 적어도 하나의 애플리케이션을 예측하기 위해 제1 신뢰도 레벨을 산출하고; 제1 신뢰도 레벨이 초기 신뢰도 레벨보다 적어도 임계량 더 큰 것에 기초하여 제1 서브모델을 생성하고; 제1 신뢰도 레벨이 초기 신뢰도 레벨보다 더 크지 않을 때 테스트하기 위한 다른 특성을 선택함으로써, 예측 모델에 대한 서브모델들의 트리를 생성하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 제1 신뢰도 레벨이 초기 신뢰도 레벨보다 더 크지 않을 때: 하나 이상의 애플리케이션들의 제1 그룹에 다른 애플리케이션을 추가하는 단계, 및 제1 서브모델을 다시 테스트하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 추가로, 컴퓨팅 디바이스의 제2 특성을 선택하고; 컴퓨팅 디바이스가 제1 특성 및 제2 특성을 가졌을 때 발생한 상호작용들 이력의 제2 서브세트를 식별하고 - 제2 서브세트는 상호작용들 이력의 제1 서브세트로부터 선택되고 상호작용들 이력의 제1 서브세트보다 더 작음 -; 제2 서브모델을 사용하여, 사용자가 상호작용들 이력의 제2 서브세트에 기초한 이벤트와 관련하여 액세스할 하나 이상의 애플리케이션들의 제2 그룹의 애플리케이션을 예측하기 위해 제2 신뢰도 레벨을 산출하고; 제2 신뢰도 레벨이 제1 신뢰도 레벨보다 적어도 임계량 더 큰 것에 기초하여 제2 서브모델을 생성하고; 제2 신뢰도 레벨이 제1 신뢰도 레벨보다 더 크지 않을 때 테스트하기 위한 제3 특성을 선택함으로써, 예측 모델에 대한 서브모델들의 트리를 생성하는 단계를 포함한다. 일부 실시예들에서, 예측 모델의 서브모델들의 트리는 주기적으로 생성된다. 일부 실시예들에서, 제1 특성은 랜덤 프로세스를 사용하여 선택된다. 일부 실시예들에서, 하나 이상의 애플리케이션들의 제1 그룹은 하나의 애플리케이션이고, 본 방법은, 하나의 애플리케이션으로 수행될 복수의 액션들을 선택하는 단계 - 복수의 액션들 각각은 제1 서브모델의 복수의 상이한 서브모델들 중 하나의 서브모델에 대응함 -; 복수의 액션들 중 적어도 하나의 액션에 대한 제2 서브모델을 생성할지 여부를 결정하기 위해 복수의 상이한 서브모델들 각각의 신뢰도 레벨을 테스트하는 단계를 포함한다.
일부 실시예들에서, 비일시적인 컴퓨터 판독가능 매체를 포함하는 컴퓨터 제품이 제공되며, 컴퓨터 제품은, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 하나 이상의 애플리케이션들을 제안하기 위한 복수의 명령어들을 저장하는데, 명령어들은, 컴퓨터 시스템의 하나 이상의 프로세서들 상에서 실행될 때: 컴퓨팅 디바이스의 입력 디바이스에서 이벤트를 검출하는 것 - 이벤트는 컴퓨팅 디바이스에 대해 반복되는 유형의 것임 -; 이벤트에 대응하는 예측 모델을 선택하는 것; 컴퓨팅 디바이스의 하나 이상의 특성들을 수신하는 것; 하나 이상의 특성들을 사용하여 예측 모델의 특정 서브모델을 선택하는 것 - 특정 서브모델은 하나 이상의 특성들에 대응하고, 특정 서브모델은 컴퓨팅 디바이스와의 사용자의 상호작용들 이력의 특정 서브세트를 사용하여 생성되고, 상호작용들 이력의 특정 서브세트는 이벤트가 검출된 후에 그리고 컴퓨팅 디바이스가 하나 이상의 특성들을 가질 때 발생함 -; 특정 서브모델에 의해, 사용자에게 제안할 하나 이상의 애플리케이션들을 식별하는 것 - 하나 이상의 애플리케이션들은 이벤트와 관련하여 사용자에 의해 액세스되고 있는 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션의 적어도 임계 확률을 가짐 -; 하나 이상의 애플리케이션들에 대한 액션을 수행하는 것을 수행한다. 일부 실시예들에서, 특정 서브모델은 신뢰도 임계치보다 더 큰 신뢰도 레벨로 하나 이상의 애플리케이션들을 예측하고, 특정 서브모델은, 상호작용들 이력의 특정 서브세트의 정확한 예측들을 위한 제1 확률 분포에 예측 모델의 정확한 예측들을 위한 제2 확률 분포에 대한 정보 이득을 제공한다. 일부 실시예들에서, 액션은 하나 이상의 애플리케이션들과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하는 것이다.
일부 실시예들에서, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 하나 이상의 애플리케이션들을 제안하기 위한 컴퓨팅 디바이스가 제공되는데, 컴퓨팅 디바이스는, 입력 디바이스; 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 컴퓨팅 디바이스의 입력 디바이스에서 이벤트를 검출하도록 - 이벤트는 컴퓨팅 디바이스에 대해 반복되는 유형의 것임 -; 이벤트에 대응하는 예측 모델을 선택하도록; 컴퓨팅 디바이스의 하나 이상의 특성들을 수신하도록; 하나 이상의 특성들을 사용하여 예측 모델의 특정 서브모델을 선택하도록 - 특정 서브모델은 하나 이상의 특성들에 대응하고, 특정 서브모델은 컴퓨팅 디바이스와의 사용자의 상호작용들 이력의 특정 서브세트를 사용하여 생성되고, 상호작용들 이력의 특정 서브세트는 이벤트가 검출된 후에 그리고 컴퓨팅 디바이스가 하나 이상의 특성들을 가질 때 발생함 -; 특정 서브모델에 의해, 사용자에게 제안할 하나 이상의 애플리케이션들을 식별하도록 - 하나 이상의 애플리케이션들은 이벤트와 관련하여 사용자에 의해 액세스되고 있는 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션의 적어도 임계 확률을 가짐 -; 그리고 하나 이상의 애플리케이션들과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하도록 구성된다. 일부 실시예들에서, 특정 서브모델은 신뢰도 임계치보다 더 큰 신뢰도 레벨로 하나 이상의 애플리케이션들을 예측하고, 특정 서브모델은, 상호작용들 이력의 특정 서브세트의 정확한 예측들을 위한 제1 확률 분포에 예측 모델의 정확한 예측들을 위한 제2 확률 분포에 대한 정보 이득을 제공한다. 일부 실시예들에서, 하나 이상의 프로세서들은 추가로, 이벤트가 검출된 후에 컴퓨팅 디바이스와의 사용자의 상호작용들 이력의 세트를 수신하도록 - 상호작용들 이력의 세트는 상호작용들 이력의 특정 서브세트를 포함하고 그보다 더 크고, 상호작용들 이력의 세트는 컴퓨팅 디바이스의 하나 이상의 특성들의 상이한 세트들을 갖는 상호작용들을 포함함 -; 예측 모델의 초기 모델을 사용하여, 사용자가 상호작용들 이력의 세트에 기초한 이벤트 이후에 액세스할 하나 이상의 애플리케이션들을 예측하기 위한 초기 신뢰도 레벨을 산출하도록; 그리고 컴퓨팅 디바이스의 제1 특성을 선택하고; 컴퓨팅 디바이스가 제1 특성을 가졌을 때 발생한 상호작용들 이력의 제1 서브세트를 식별하고 - 제1 서브세트는 상호작용들 이력의 세트로부터 선택되고 상호작용들 이력의 세트보다 더 작음 -; 제1 서브모델을 사용하여, 사용자가 상호작용들 이력의 제1 서브세트에 기초한 이벤트와 관련하여 액세스할 하나 이상의 애플리케이션들의 제1 그룹의 적어도 하나의 애플리케이션을 예측하기 위해 제1 신뢰도 레벨을 산출하고; 제1 신뢰도 레벨이 초기 신뢰도 레벨보다 적어도 임계량 더 큰 것에 기초하여 제1 서브모델을 생성하고; 제1 신뢰도 레벨이 초기 신뢰도 레벨보다 더 크지 않을 때 테스트하기 위한 다른 특성을 선택함으로써, 예측 모델에 대한 서브모델들의 트리를 생성하도록 구성된다.
섹션 6: 검출된 트리거링 이벤트에 기초한 애플리케이션 추천
이 섹션 "검출된 트리거링 이벤트에 기초한 애플리케이션 추천"에서의 내용은, 일부 실시예들에 따른, 검출된 트리거링 이벤트들에 기초한 애플리케이션 추천들을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 트리거링 이벤트들(헤드폰들을 디바이스에 플러그인하는 것, 및 사용자의 현재 위치에 따라 상이한 애플리케이션들을 제안하는 것)에 기초하여 사용하기 위한 애플리케이션들을 추천하는 것을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 도 9b 및 도 9c의 예측 부분(930) 내에 예측된 콘텐츠를 채우는 것에 관련된 것들, 및 트리거 조건들의 생성 및 검출에 관련된 것들(도 4a 및 도 4b)을 보완한다. 일부 실시예들에서, 이 섹션에 기술된 예측 모델들은, 예측을 위해 적절한 애플리케이션들을 식별하고 사용자에게 디스플레이하는 것을 돕기 위해 사용된다(즉, 이러한 예측 모델들은 방법들(600, 800, 1000, 1200)과 함께 사용된다).
검출된 트리거링 이벤트에 기초한 애플리케이션 추천에 대한 간략한 개요
실시예들은 트리거링 이벤트에 기초하여 애플리케이션을 추천하기 위한 개선된 디바이스들 및 방법들을 제공한다. 예를 들어, 소정의 이벤트들이 디바이스에 의해 검출되고, 트리거링 이벤트로서 식별될 수 있다. 상이한 트리거링 이벤트들은 상이한 예측 모델들을 가질 수 있는데, 이들은 보다 정확한 추천들을 허용할 수 있다. 선택된 예측 모델은 (예컨대, 이벤트가 검출되기 전 또는 후에 수집되는) 컨텍스트 정보를 사용하여, 보다 용이한 액세스를 위해 사용자에게 제시하기 위한, 예컨대, 잠금 화면에 대한 액세스를 허용하기 위한 애플리케이션을 식별할 수 있다.
일부 실시예들에서, 하나 이상의 입력 디바이스들이 트리거링 이벤트에 대해 모니터링된다. 트리거링 이벤트가 검출될 때, 컨텍스트 정보는 하나 이상의 소스들(예컨대, 컨텍스트 정보를 이미 획득하였던 디바이스의 다른 애플리케이션)로부터 수집될 수 있다. 컨텍스트 정보는, 위치 또는 하루 중 시간과 같이, 트리거링 이벤트의 발생 시 또는 그 즈음의 디바이스의 컨텍스트에 관한 것일 수 있다. 일단 컨텍스트 정보가 수신되면, 이벤트 이력 데이터베이스로부터 이력 정보가 수집될 수 있다. 데이터베이스는 사용자와 디바이스 사이의 상호작용들 이력의 레코드를 유지할 수 있다. 트리거링 이벤트를 고려하여, 컨텍스트 정보 및 이력 정보는 사용자에 대한 하나 이상의 애플리케이션들의 세트를 식별하는 데 이용될 수 있다. 이어서, 식별된 애플리케이션은, 식별된 애플리케이션이 (예컨대, 홈 화면 상에) 통상 액세스되는 방법, 시기, 또는 장소와는 상이한 방식으로 사용자 인터페이스를 제공하여, 이에 의해 원하는 경우 사용자에게 애플리케이션을 구동하기 위한 옵션을 제공함으로써 사용자에게 제안될 수 있다.
다른 실시예들은 이 섹션에 기술된 방법들과 연관된 시스템들, 휴대용 소비자 디바이스들, 및 컴퓨터 판독가능 매체들에 관련된다.
본 발명의 실시예들의 본질 및 이점들의 더 나은 이해가 하기의 상세한 설명 및 첨부 도면을 참조하여 얻어질 수 있다.
검출된 트리거링 이벤트에 기초한 애플리케이션 추천에 대한 상세한 설명
현재 모바일 디바이스들은 그의 솔리드 스테이트 드라이브 상에 저장된 많은 애플리케이션들을 가질 수 있다. 일부 경우들에서, 모바일 디바이스들은 그의 솔리드 스테이트 드라이브 상에 저장된 수백개의 애플리케이션들을 가질 수 있다. 사용자가 그의 모바일 디바이스 상의 애플리케이션을 구동하기를 원할 때, 그 또는 그녀는 디바이스를 잠금해제하고, 원하는 애플리케이션을 식별하기 위해 디바이스 내의 애플리케이션들 전부에 걸쳐 검색하고, 이어서 애플리케이션의 실행을 시작해야 한다. 원하는 애플리케이션을 찾는 프로세스를 거치는 것이 지나치게 시간 소비적이고 중복일 수 있는데, 특히 다른 것들보다 더 자주 반복적으로 사용되는 애플리케이션들에 대해 더욱 그러하다.
사용자는 특정 조건이 만족될 때(예컨대, 트리거링 이벤트가 발생할 때) 미리결정된 애플리케이션의 특정 액션을 자동으로 수행하도록 디바이스를 사전-프로그래밍할 수 있다. 예를 들어, 디바이스는 트리거링 이벤트가 발생할 때 미리결정된 애플리케이션을 제안하도록 프로그래밍될 수 있다. 그러나, 그러한 동작은 정적이고, 사용자에 의한 구성을 요구한다.
미리결정된 애플리케이션을 자동으로 제안하는 대신에, 본 발명의 실시예들은 예측 모델을 이용하여, 트리거링 이벤트가 발생할 때 사용자에 의해 구동될 가능성이 있는 주어진 컨텍스트에서의 애플리케이션을 제안할 수 있다. 동일한 트리거링 이벤트들에 대한 상이한 컨텍스트들에 대해 상이한 애플리케이션들이 식별될 수 있다. 일례로서, 제1 컨텍스트에서 하나의 애플리케이션이 제안될 수 있지만, 제2 컨텍스트에서 다른 애플리케이션이 제안될 수 있다.
사용자가 사용할 가능성이 있는 애플리케이션을 식별하는 것은 여러 이점들을 갖는다. 사용자 인터페이스는 적절한 방식으로 또는 적절한 화면에서 사용자에게 제공될 수 있는데, 이는 시간을 절약하고 디바이스 동작을 능률화할 수 있다. 사용자는 사용할 애플리케이션을 식별하기 위해 많은 애플리케이션들에 걸쳐 검색할 필요가 없다. 애플리케이션의 사용자 인터페이스는 다양한 방식으로 제공될 수 있는데, 이는 사용자가 애플리케이션을 사용할 확률이 얼마나 높은지에 의존할 수 있다. 추가로, 예측 모델은, 특정 액션이 수행될 확률이 높은 경우 특정 사용자 인터페이스를 제공할 수 있다. 따라서, 일부 실시예들에서, 사용 확률이 높을수록, 단지 애플리케이션을 열기 위해 보다 용이한 메커니즘을 제공하는 것과는 달리, 대응하는 사용자 인터페이스(예컨대, 시각적 또는 음성 커맨드)를 갖는 애플리케이션을 자동으로 여는 것과 같이, 보다 적극적인 액션이 취해질 수 있다.
VII. 애플리케이션 예측
실시예들은 트리거링 이벤트에 기초하여 애플리케이션을 제안할 수 있다. 예를 들어, 헤드폰들이 헤드폰 잭 내에 삽입될 때 음악 애플리케이션이 제안될 수 있다. 일부 실시예들에서, 사용자에게 제안할 애플리케이션을 식별하기 위해 컨텍스트 정보가 트리거링 이벤트와 함께 사용될 수 있다. 일례로서, 헤드폰들의 세트가 헤드폰 잭 내에 삽입될 때, 위치에 관한 컨텍스트 정보가 사용될 수 있다. 예를 들어, 디바이스가 체육관에 있는 경우, 헤드폰들이 헤드폰 잭 내에 삽입될 때 애플리케이션 A가 제안될 수 있다. 대안적으로, 디바이스가 집에 있는 경우, 헤드폰들이 헤드폰 잭 내에 삽입될 때 애플리케이션 B가 제안될 수 있다. 따라서, 소정의 컨텍스트들 하에서 사용될 가능성이 있는 애플리케이션들이 적절한 시기에 제안되어서, 그에 따라 사용자 경험을 향상시킬 수 있다.
도 36a은 본 발명의 실시예들에 따른, 트리거링 이벤트에 기초하여 애플리케이션을 제안하기 위한 방법(36_100)의 흐름도이다. 방법(100)은 모바일 디바이스(예컨대, 전화, 태블릿) 또는 비-모바일 디바이스에 의해 수행될 수 있고 디바이스의 하나 이상의 사용자 인터페이스들을 이용할 수 있다.
블록(36_102)에서, 트리거링 이벤트가 검출된다. 디바이스에서 발생할 수 있는 모든 이벤트들이 트리거링 이벤트들인 것은 아니다. 트리거링 이벤트는 디바이스의 고유 동작에 상관할 가능성이 충분히 있는 것으로 식별될 수 있다. 트리거링 이벤트들인 이벤트들의 목록은 디바이스 상에 저장될 수 있다. 그러한 이벤트들은 디폴트 목록일 수 있고 운영 체제의 일부로서 유지될 수 있고, 사용자에 의해 구성가능하거나 구성가능하지 않을 수 있다.
트리거링 이벤트는 사용자 및/또는 외부 디바이스에 의해 유도된 이벤트일 수 있다. 예를 들어, 트리거링 이벤트는 액세서리 디바이스가 모바일 디바이스에 연결될 때일 수 있다. 예들은 헤드폰들을 헤드폰 잭 내에 삽입하는 것, 블루투스 연결을 행하는 것 등을 포함한다. 이 예에서, 이들 각각은 상이한 트리거링 이벤트로서 분류될 수 있거나, 또는 트리거링 이벤트는 집합적으로 모바일 디바이스에의 임의의 액세서리 디바이스 연결일 수 있다. 다른 예들로서, 트리거링 이벤트는 디바이스와의 사용자의 특정 상호작용일 수 있다. 예를 들어, 사용자는 구동에 부합하는 방식으로 모바일 디바이스를 움직일 수 있는데, 여기서 디바이스의 구동 상태가 트리거링 이벤트이다. 그러한 구동 상태(또는 다른 상태들)는 디바이스의 센서들에 기초하여 결정될 수 있다.
블록(36_104)에서, 트리거링 이벤트와 연관된 애플리케이션이 식별된다. 일례로서, 헤드폰들이 헤드폰 잭 내에 삽입될 때 음악 애플리케이션이 식별될 수 있다. 일부 실시예들에서, 하나 초과의 애플리케이션이 식별될 수 있다. 예측 모델이 연관된 애플리케이션을 식별할 수 있는데, 여기서 예측 모델은 특정 트리거링 이벤트에 대해 선택될 수 있다. 예측 모델은 컨텍스트 정보를 사용하여 애플리케이션을 식별할 수 있는데, 예컨대, 이는 상이한 애플리케이션이 상이한 컨텍스트들에서 사용될 가능성이 더 클 수 있기 때문이다. 일부 실시예들은, 예컨대 디바이스와의 사용자의 상호작용들 이력으로부터 결정되는 바와 같이, 사용자에 의해 선택될 확률이 충분할 때에만 애플리케이션을 식별할 수 있다. 다양한 유형의 예측 모델들이 사용될 수 있다. 예측 모델들의 예들은 신경 회로망, 결정 트리, 다중 라벨 로지스틱 회귀, 및 이들의 조합을 포함한다.
블록(36_106)에서, 애플리케이션에 관련하여 액션이 수행된다. 일 실시예에서, 액션은 사용자가 애플리케이션을 구동하기 위해 선택하는 사용자 인터페이스의 제공일 수 있다. 사용자 인터페이스는 다양한 방식으로, 예컨대 디바이스의 화면 상에 디스플레이함으로써, 표면 상으로 투영함으로써, 또는 오디오 인터페이스를 제공함으로써 제공될 수 있다.
다른 실시예들에서, 애플리케이션이 구동될 수 있고, 애플리케이션에 특정한 사용자 인터페이스가 사용자에게 제공될 수 있다. 사용자 인터페이스들 중 어느 하나가, 예컨대 잠금 화면 상에서, 애플리케이션을 식별하는 것에 응답하여 제공될 수 있다. 다른 구현예들에서, 애플리케이션과 상호작용할 사용자 인터페이스는 사용자가 (예컨대, 패스워드 또는 생체측정에 의해) 인증된 후에 제공될 수 있다. 사용자 인터페이스가 디스플레이될 때, 그러한 사용자 인터페이스는 단지 홈 화면보다 더 구체적일 것인데, 즉, 구동할 제안된 애플리케이션들이 홈 화면 상에 있는 것보다 더 작은 목록일 것이다. 사용자 인터페이스는 트리거링 이벤트가 검출된 후에 디바이스의 디스플레이 상에 즉시 디스플레이될 수 있다. 다른 실시예들에서, 사용자 인터페이스는 사용자가 일부 입력(예컨대, 하나 이상의 클릭 제스처들)을 제공한 후에 디스플레이될 수 있는데, 이 일부 입력은 여전히 어떠한 애플리케이션도 제안되지 않았던 경우보다 더 적은 사용자 입력(예컨대, 클릭들의 수)일 수 있다.
VIII. 예측을 시작하는 이벤트
트리거링 이벤트들은 사용자에게 제공할 하나 이상의 애플리케이션들의 식별을 트리거하는 이벤트들의 미리결정된 세트일 수 있다. 이벤트들은 디바이스 컴포넌트들에 의해 생성된 신호들을 사용하여 검출될 수 있다. 트리거링 이벤트가 검출되는 방식의 추가 상세사항들이 이 섹션에서 더욱 상세하게 논의된다.
도 36b는 본 발명의 실시예들에 따른, 트리거링 이벤트를 결정하기 위한 검출 시스템(36_200)의 단순화된 블록도를 예시한다. 검출 시스템(36_200)은 트리거링 이벤트가 결정되고 있는 디바이스 내에 상주할 수 있다. 도시된 바와 같이, 검출 시스템(36_200)은 복수의 상이한 이벤트들을 검출할 수 있다. 검출된 이벤트들 중 하나 이상은 검출 시스템(36_200)에 의해 트리거링 이벤트들이라고 결정될 수 있다. 다른 프로세싱 모듈들은 이어서 트리거링 이벤트를 사용하여 프로세싱을 수행할 수 있다.
A. 이벤트의 검출
실시예들에서, 검출 시스템(36_200)은 이벤트들을 검출하기 위한 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 일례로서, 검출 시스템(36_200)은 복수의 입력 디바이스들, 예컨대 입력 디바이스들(36_202)을 포함할 수 있다. 입력 디바이스들(36_202)은 이벤트에 응답하여 신호를 생성할 수 있는 임의의 적합한 디바이스일 수 있다. 예를 들어, 입력 디바이스들(36_202)은, 디바이스 연결 이벤트들, 사용자 상호작용 이벤트들, 및 위치 이벤트들을 각각 검출할 수 있는 디바이스 연결 입력 디바이스들(36_204), 사용자 상호작용 입력 디바이스들(36_206), 및 위치 입력 디바이스들(36_208)을 포함할 수 있다. 이벤트가 입력 디바이스에서 검출될 때, 입력 디바이스는 추가 분석을 위해 특정 이벤트를 나타내는 신호를 전송할 수 있다.
일부 실시예들에서, 컴포넌트들의 집합이 단일 이벤트에 기여할 수 있다. 예를 들어, 모션 센서들 및 GPS 위치 디바이스에 기초하여 사람이 달리고 있는 것이 검출될 수 있다.
1. 디바이스 연결 이벤트
디바이스 연결 이벤트들은 디바이스에 다른 디바이스들이 연결될 때 발생하는 이벤트들일 수 있다. 예를 들어, 디바이스 연결 입력 디바이스들(36_204)은 디바이스에 디바이스들이 통신가능하게 결합되는 이벤트들을 검출할 수 있다. 외부 디바이스에 대한 유선 또는 무선 연결을 형성하는 임의의 적합한 디바이스 컴포넌트가 디바이스 연결 입력 디바이스(36_204)로서 사용될 수 있다. 디바이스 연결 입력 디바이스(36_204)의 예들은 헤드폰 잭(36_210) 및 데이터 연결부(36_212), 예컨대 무선 연결 회로(예컨대, 블루투스, Wi-Fi 등) 또는 유선 연결 회로(예컨대, 이더넷(Ethernet) 등)를 포함한다.
헤드폰 잭(36_210)은 헤드폰들의 세트가 디바이스에 결합될 수 있게 한다. 헤드폰들이 결합될 때, 예컨대 헤드폰 잭(36_210) 내로의 삽입 시에 전기 연결을 생성함으로써 신호가 생성될 수 있다. 보다 복잡한 실시예들에서, 헤드폰 잭(36_210)은 디바이스에 헤드폰 잭의 유형을 식별하는 식별 신호를 제공하는 회로부를 포함할 수 있다. 이에 따라, 이벤트가 다양한 방식으로 검출될 수 있고, 신호가 다양한 방식으로 생성 및/또는 통신될 수 있다.
데이터 연결부(36_212)는, 예컨대, 무선 연결을 통하여, 외부 디바이스와 통신가능하게 결합될 수 있다. 예를 들어, 블루투스 연결부가 차량의 컴퓨터, 또는 무선 헤드셋의 컴퓨터에 결합될 수 있다. 따라서, 외부 디바이스가 데이터 연결부(36_212)를 통해 모바일 디바이스에 결합될 때, 외부 디바이스가 연결되는 것이 결정될 수 있고, 대응하는 디바이스 연결 이벤트 신호가 생성될 수 있다.
2. 사용자 상호작용 이벤트
사용자 상호작용 입력 디바이스들(36_206)이 사용자 상호작용 이벤트들을 검출하는 데 이용될 수 있다. 사용자 상호작용 이벤트들은 사용자가 디바이스와 상호작용할 때 발생할 수 있다. 일부 실시예들에서, 사용자는 사용자 상호작용 입력 디바이스들(36_206) 중 하나의 사용자 상호작용 입력 디바이스를 통해 디스플레이된 사용자 인터페이스를 직접 활성화시킬 수 있다. 다른 실시예들에서, 사용자 인터페이스는 디스플레이되지 않을 수 있지만, 예컨대, 사용자가 디바이스를 흔들거나(shaking) 또는 일부 다른 유형의 제스처를 제공하는 것을 통해, 여전히 사용자에게 액세스가능하다. 추가로, 상호작용은, 예컨대, 상태 엔진이 디바이스의 센서들로부터의 값들을 사용할 때, 사용자 인터페이스를 포함하지 않을 수 있다.
사용자 인터페이스의 임의의 적합한 디바이스 컴포넌트가 사용자 상호작용 입력 디바이스(36_206)로서 사용될 수 있다. 적합한 사용자 상호작용 입력 디바이스들의 예들은 버튼(36_214)(예컨대, 홈 또는 전원 버튼), 터치 스크린(36_216), 및 가속도계(36_218)이다. 예를 들어, 모바일 디바이스의 버튼(36_214), 예컨대 홈 버튼, 전원 버튼, 볼륨 버튼 등이 사용자 상호작용 입력 디바이스(36_204)일 수 있다. 또한, 무음 모드 스위치와 같은 스위치가 사용자 상호작용 입력 디바이스(36_204)일 수 있다. 사용자가 디바이스와 상호작용할 때, 사용자가 사용자 입력을 제공하였음이 결정될 수 있고, 대응하는 사용자 상호작용 이벤트가 생성될 수 있다. 그러한 이벤트는, 디바이스가 아침(또는 다른 긴 비활동 기간)에 처음 켜지거나 활성화될 때와 같은, 디바이스의 현재 상태에 의존할 수 있다. 그러한 정보는 또한 이벤트가 트리거 이벤트인지 여부를 결정할 때 사용될 수 있다.
터치 스크린(36_216)은 사용자가 디스플레이 화면을 통해 사용자 입력을 제공하도록 할 수 있다. 예를 들어, 사용자는 사용자 입력 신호를 생성하기 위해 디스플레이를 가로질러 그의 또는 그녀의 손가락을 스와이프할 수 있다. 사용자가 그 액션을 수행할 때, 대응하는 사용자 상호작용 이벤트가 검출될 수 있다.
가속도계(36_218) 또는 다른 모션 센서들은, (예컨대, 자이로미터 또는 나침반을 사용하여) 흔들림 및 기울임과 같은, 모바일 디바이스의 움직임을 검출하는 수동 컴포넌트들일 수 있다. 모바일 디바이스의 그러한 움직임은 이벤트 관리자(36_230)에 의해 검출될 수 있는데, 이벤트 관리자는 그 움직임이 특정 유형의 것이라고 결정할 수 있다. 이벤트 관리자(36_230)는 디바이스의 주어진 상태에서 사용자 상호작용 이벤트의 특정 유형에 대응하는 이벤트 신호(36_232)를 생성할 수 있다. 디바이스의 상태는 상태 엔진에 의해 결정될 수 있는데, 그의 추가 상세사항들은 발명의 명칭이 "Activity Detection"인 미국 특허 공개 제2012/0310587호 및 발명의 명칭이 "Determining Exit From A Vehicle"인 미국 특허 공개 제2015/0050923호에서 발견될 수 있고, 이들의 개시내용은 전체적으로 참고로 포함된다.
일례는, 사용자가 달리고 있을 때, 가속도계가 흔들림을 감지하고, 이벤트 관리자(36_230)에 제공될 신호를 생성할 수 있다는 것이다. 이벤트 관리자(36_230)는 가속도계 신호를 분석하여 이벤트의 유형을 결정할 수 있다. 일단 이벤트의 유형이 결정되면, 이벤트 관리자(36_230)는 이벤트의 유형에 대응하는 이벤트 신호(36_232)를 생성할 수 있다. 모바일 디바이스는 사용자가 달리고 있음을 나타내는 방식으로 움직일 수 있다. 따라서, 이러한 특정 사용자 상호작용은 달리기 이벤트로서 식별될 수 있다. 이벤트 관리자(36_230)는 이어서, 달리기 이벤트가 검출되었음을 나타내는 이벤트 신호(36_232)를 생성 및 전송할 수 있다.
3. 위치 이벤트
위치 입력 디바이스들(36_208)은 위치 이벤트들을 생성하는 데 사용될 수 있다. 임의의 적합한 포지셔닝 시스템이 위치 이벤트들을 생성하는 데 사용될 수 있다. 예를 들어, 글로벌 포지셔닝 시스템(GPS)이 위치 이벤트들을 생성하는 데 사용될 수 있다. 위치 이벤트들은 특정 지리적 위치에 대응하는 이벤트들일 수 있다. 일례로서, 모바일 디바이스가 특정 위치에 도착하는 경우, GPS 컴포넌트는 위치 이벤트에 대응하는 입력 신호를 생성할 수 있다. 전형적으로, 모바일 디바이스는 하루에 수십 또는 심지어 수백개의 위치들로 움직일 수 있는데, 그들의 대부분은 위치 이벤트로서 간주될 만큼 충분히 중요하지 않을 수 있다. 따라서, 검출된 모든 위치가 위치 이벤트인 것은 아닐 것이다. 실시예들에서, 위치 이벤트는 다른 것들보다 더 자주 다니는 위치일 수 있다. 예를 들어, 이벤트는, 일정 기간 내에 적어도 임계 횟수, 예컨대 6개월 내지 1년의 기간에 5회 다니는 경우 위치 이벤트일 수 있다. 따라서, 중요한 위치들은 중요하지 않은 위치들로부터 분리되고, 위치 이벤트인 것으로 결정될 수 있다.
B. 트리거링 이벤트의 결정
도 36b에 추가로 예시된 바와 같이, 입력 디바이스들(36_202)은 검출된 이벤트(36_222)를, 예컨대, 대응하는 이벤트들 중 임의의 이벤트의 결과로서 출력할 수 있다. 검출된 이벤트는, 어느 입력 디바이스가 검출된 이벤트(36_222)에 대한 신호, 특정 이벤트에 대한 하위유형(subtype)(예컨대, 어떤 유형의 헤드폰들 또는 어떤 유형의 데이터 연결)을 전송하고 있는지에 관한 정보를 포함할 수 있다. 그러한 정보는 검출된 이벤트(36_222)가 트리거링 이벤트인지 여부를 결정하기 위해 사용될 수 있고, 제안된 애플리케이션에 대해 어느 예측 모델을 사용할지 또는 어떤 액션을 수행할지를 결정하기 위해 추후 모듈들로 전달될 수 있다.
검출된 이벤트(36_222)는 이벤트 관리자(36_230)에 의해 수신될 수 있다. 이벤트 관리자(36_230)는 입력 디바이스들(36_202)로부터 신호들을 수신하고, 어떤 유형의 이벤트가 검출되는지를 결정할 수 있다. 이벤트의 유형에 따라, 이벤트 관리자(36_230)는 신호들(예컨대, 이벤트 신호(36_232))을 상이한 엔진들로 출력할 수 있다. 상이한 엔진들은 그들의 기능들에 대해 중요한 특정 이벤트 신호들(36_232)을 수신하기 위해 이벤트 관리자(36_230)와의 가입을 가질 수 있다. 예를 들어, 트리거링 이벤트 엔진(36_224)은 입력 디바이스들(36_202)로부터 검출된 이벤트들(36_222)에 응답하여 생성된 이벤트 신호들(36_232)을 수신하도록 가입될 수 있다. 이벤트 신호들(36_232)은 검출된 이벤트들(36_222)로부터 결정되는 이벤트의 유형에 대응할 수 있다.
트리거링 이벤트 엔진(36_224)은 검출된 이벤트(36_222)가 트리거링 이벤트인지 여부를 결정하도록 구성될 수 있다. 이러한 결정을 행하기 위해, 트리거링 이벤트 엔진(36_224)은, 트리거링 이벤트 엔진(36_224)에 결합될 수 있는 지정된 트리거링 이벤트 데이터베이스(36_226)를 참조할 수 있다. 지정된 트리거링 이벤트 데이터베이스(36_226)는 트리거링 이벤트들로서 지정되는 미리결정된 이벤트들의 목록을 포함할 수 있다.
트리거링 이벤트 엔진(36_224)은 수신된 검출된 이벤트(36_222)를 미리결정된 이벤트들의 목록과 비교하고, 검출된 이벤트(36_222)가 지정된 트리거링 이벤트 데이터베이스(36_226)에 열거되는 미리결정된 이벤트에 매칭되는 경우 트리거링 이벤트(36_228)를 출력할 수 있다. 일례로서, 미리결정된 이벤트들의 목록은 (1) 헤드폰들을 헤드폰 잭 내에 삽입하는 것, (2) 외부 디바이스를 블루투스 연결을 통해 연결하는 것, (3) 일정 기간이 경과한 후에(예컨대, 아침에 잠에서 깰 때) 버튼을 누르는 것, (4) 디바이스의 소정 유형의 움직임을 감지하는 것, 및 (5) 소정 위치에 도착하는 것 중 임의의 하나 이상을 포함할 수 있다. (5)의 경우, 지정된 트리거링 이벤트 데이터베이스(226)는 소정 위치의 스펙들을 포함할 수 있다.
이 섹션에 기술된 바와 같이, 본 기술의 일 태양은 사용자에게 애플리케이션들을 제안하기 위한 다양한 소스들로부터 입수가능한 데이터의 수집 및 사용이다. 본 개시내용은, 일부 경우들에 있어서, 이러한 수집된 데이터가 특정 개인을 고유하게 식별하거나 또는 그와 연락하거나 그의 위치를 확인하는 데 이용될 수 있는 개인 정보 데이터를 포함할 수 있음을 고려한다. 그러한 개인 정보 데이터는 위치 기반 데이터, 집 주소, 또는 임의의 다른 식별 정보를 포함할 수 있다.
본 개시내용은 본 기술에서의 그러한 개인 정보 데이터의 이용이 사용자들에게 이득을 주기 위해 사용될 수 있음을 인식한다. 예를 들어, 개인 정보 데이터는 사용자에게 더 큰 관심 대상인 애플리케이션을 제안하는 데 사용될 수 있다. 따라서, 그러한 개인 정보 데이터의 이용은 전달된 콘텐츠의 계산된 제어를 가능하게 한다. 게다가, 사용자에게 이득을 주는 개인 정보 데이터에 대한 다른 사용들이 또한 본 개시내용에 의해 고려된다.
본 개시내용은 그러한 개인 정보 데이터의 수집, 분석, 공개, 전달, 저장, 또는 다른 이용을 책임지고 있는 엔티티들이 잘 확립된 프라이버시 정책들 및/또는 프라이버시 관례들을 준수할 것이라는 것을 추가로 고려한다. 특히, 그러한 엔티티들은, 대체로 개인 정보 데이터를 사적이고 안전하게 유지시키기 위한 산업적 또는 행정적 요건들을 충족시키거나 넘어서는 것으로 인식되는 프라이버시 정책들 및 관례들을 구현하고 지속적으로 이용해야 한다. 예를 들어, 사용자들로부터의 개인 정보는 엔티티의 적법하며 적정한 사용들을 위해 수집되어야 하고, 이들 적법한 사용들을 벗어나서 공유되거나 판매되지 않아야 한다. 게다가, 이러한 수집은 단지 사용자들의 통지된 동의를 수신한 후에만 발생해야 한다. 부가적으로, 그러한 엔티티들은 그러한 개인 정보 데이터에 대한 액세스를 보호하고 안전하게 하며 개인 정보 데이터에 대한 액세스를 갖는 다른 사람들이 그들의 프라이버시 정책들 및 절차들을 고수한다는 것을 보장하기 위한 임의의 필요한 단계들을 취할 것이다. 게다가, 그러한 엔티티들은 널리 인정된 프라이버시 정책들 및 관례들에 대한 그들의 고수를 증명하기 위해 제3자들에 의해 그들 자신들이 평가를 받을 수 있다.
전술한 것에도 불구하고, 본 개시내용은 또한 사용자가 개인 정보 데이터의 사용, 또는 그에 대한 액세스를 선택적으로 차단하는 실시예들을 고려한다. 즉, 본 개시내용은 그러한 개인 정보 데이터에 대한 액세스를 방지하거나 차단하기 위해 하드웨어 및/또는 소프트웨어 요소들이 제공될 수 있다는 것을 고려한다. 예를 들어, 사용자들은 타깃 콘텐츠 전달 서비스들을 위한 위치 정보를 제공하지 않도록 선택할 수 있다. 또 다른 예에서, 사용자들은 정확한 위치 정보를 제공하지 않지만 위치 구역 정보의 전달을 허용하도록 선택할 수 있다.
IX. 제안된 애플리케이션 결정
일단 트리거링 이벤트가 검출되면, 트리거링 이벤트에 기초하여 애플리케이션이 식별될 수 있다. 일부 실시예들에서, 애플리케이션의 식별은 사전-프로그래밍된 액션이 아니다. 오히려, 애플리케이션의 식별은 추가 정보에 따라 변경될 수 있는 동적 액션일 수 있다. 예를 들어, 제안된 애플리케이션의 식별은 컨텍스트 정보 및/또는 이력 정보에 기초할 뿐만 아니라, 다른 정보에도 기초하여 결정될 수 있다.
A. 트리거링 이벤트에 기초하여 애플리케이션을 결정하기 위한 시스템
도 36c은 본 발명의 실시예들에 따른, 트리거링 이벤트 및 컨텍스트 정보에 기초하여 애플리케이션 및 대응하는 액션 커맨드를 식별하기 위한 예측 시스템(36_300)의 단순화된 블록도를 예시한다. 예측 시스템(36_300)은 애플리케이션을 식별하고 있는 디바이스 내에 상주한다. 예측 시스템(36_300)은 하드웨어 및 소프트웨어 컴포넌트들을 포함할 수 있다.
예측 시스템(36_300)은 제안된 애플리케이션을 식별하기 위한 예측 엔진(36_302)을 포함한다. 예측 엔진(36_302)은 트리거링 이벤트, 예컨대 도 36b에서 논의된 트리거링 이벤트(36_228)를 수신할 수 있다. 예측 엔진(36_302)은 트리거링 이벤트(36_228)로부터 수집된 정보를 사용하여 제안된 애플리케이션(36_304)을 식별할 수 있다. 도시된 바와 같이, 예측 엔진(36_302)은 트리거링 이벤트(36_228)에 더하여 컨텍스트 데이터(36_306)를 수신할 수 있다. 예측 엔진(36_302)은 트리거링 이벤트(36_228) 및 컨텍스트 정보(36_306) 양쪽 모두로부터 수집된 정보를 사용하여 제안된 애플리케이션(36_304)을 식별할 수 있다. 예측 엔진(36_302)은 또한, 수행될 액션, 예컨대 사용자가 제안된 애플리케이션과 상호작용하기 위해 사용자 인터페이스가 언제 어떻게 제공될 수 있는지를 결정할 수 있다.
소정 실시예들에서, 제안된 애플리케이션(36_304)은 모바일 디바이스의 솔리드 스테이트 드라이브 상에 존재하는 임의의 애플리케이션일 수 있다. 예측 엔진(36_302)은 이에 따라, 트리거링 이벤트가 검출될 때 임의의 애플리케이션을 제안하는 능력을 가질 수 있다. 대안적으로, 실시예들에서, 예측 엔진(36_302)은 트리거링 이벤트가 검출될 때 애플리케이션들 전부보다는 더 적은 애플리케이션들을 제안하는 능력을 가질 수 있다. 예를 들어, 사용자는 일부 애플리케이션들이 예측 엔진(36_302)에 액세스할 수 없도록 선택할 수 있다. 따라서, 예측 엔진(36_302)은 트리거링 이벤트가 검출될 때 그러한 애플리케이션들을 제안하지 못할 수 있다.
1. 컨텍스트 정보
컨텍스트 정보는 컨텍스트 데이터(36_306)로부터 수집될 수 있다. 실시예들에서, 컨텍스트 정보는 임의의 시간에 수신될 수 있다. 예를 들어, 컨텍스트 정보는 트리거링 이벤트(36_228)가 검출되기 전에 그리고/또는 그 후에 수신될 수 있다. 추가적으로, 컨텍스트 정보는 트리거링 이벤트(36_228)의 검출 동안 수신될 수 있다. 컨텍스트 정보는 소정의 컨텍스트에 대해 디바이스의 하나 이상의 특성들을 특정할 수 있다. 컨텍스트는 트리거링 이벤트(36_228)가 검출될 때의 디바이스의 주위 환경(컨텍스트의 유형)일 수 있다. 예를 들어, 컨텍스트 정보는 트리거링 이벤트(36_228)가 검출되는 하루 중 시간일 수 있다. 다른 예에서, 컨텍스트 정보는 트리거링 이벤트(36_228)가 검출될 때의 디바이스의 소정의 위치일 수 있다. 또 다른 예에서, 컨텍스트 정보는 트리거링 이벤트(36_228)가 검출되는 시기의 일년 중 소정의 하루일 수 있다. 추가적으로, 컨텍스트 정보는 캘린더로부터 수집된 데이터일 수 있다. 예를 들어, 현재 시간과 이벤트 시간 사이의 시간(예컨대, 며칠 또는 몇 시간들). 그러한 컨텍스트 정보는 디바이스의 컨텍스트에 관한 보다 의미있는 정보를 제공할 수 있어서, 예측 엔진(36_302)이 그 컨텍스트에서 사용자에 의해 사용될 가능성이 있는 애플리케이션을 정확하게 제안할 수 있도록 한다. 따라서, 예측 엔진(36_302)이 컨텍스트 정보를 이용함으로써, 컨텍스트 정보가 이용되지 않았던 경우보다 사용자에게 애플리케이션을 보다 정확하게 제안할 수 있다.
컨텍스트 데이터(36_306)가 컨텍스트 소스들(36_308)에 의해 생성될 수 있다. 컨텍스트 소스들(36_308)은 모바일 디바이스의 현재 상황에 관한 데이터를 제공하는 모바일 디바이스의 컴포넌트들일 수 있다. 예를 들어, 컨텍스트 소스들(36_308)은 각각 하루 중 시간, 디바이스의 위치, 및 일년 중 날(day of year)에 관한 정보를 제공하기 위한 내부 디지털 시계(36_310), GPS 디바이스(36_312), 및 캘린더(36_314)로서 동작하는 하드웨어 디바이스들 및/또는 소프트웨어 코드일 수 있다. 다른 컨텍스트 소스들이 사용될 수 있다.
예측 엔진(36_302)에 대한 컨텍스트 데이터(36_306)를 수집하는 것은 전력 효율적인 방식으로 수행될 수 있다. 예를 들어, 디바이스의 위치를 결정하기 위해 GPS(36_312)를 연속적으로 폴링(polling)하는 것은, 지나치게 전력 집약적일 수 있는데, 이는 배터리 수명을 감소시킬 수 있다. 배터리 수명의 감소를 피하기 위해, 예측 엔진(36_302)은 GPS(36_312) 이외의 소스들로부터 디바이스의 위치를 요청함으로써 디바이스의 위치를 결정할 수 있다. 위치 정보에 대한 다른 소스는, 디바이스의 위치에 대해 GPS(36_312)를 최근에 폴링한 애플리케이션일 수 있다. 예를 들어, 애플리케이션 A가 디바이스의 위치에 대해 GPS(36_312)를 폴링한 가장 최근의 애플리케이션인 경우, 예측 엔진(36_302)은 GPS(36_312)를 별도로 폴링하기보다는 오히려 애플리케이션 A로부터 위치 데이터를 요청 및 수신할 수 있다.
2. 이력 정보
컨텍스트 소스들(36_308)에 더하여, 이벤트 이력 데이터베이스(36_316)가 또한 소정 실시예들에서 예측 엔진(36_302)에 의해 이용될 수 있다. 이벤트 이력 데이터베이스(36_316)는 트리거링 이벤트가 검출된 후에 사용자와 모바일 디바이스 사이의 이전 상호작용들의 이력 정보를 포함할 수 있다.
이벤트 이력 데이터베이스(36_316)는 소정 트리거링 이벤트 이후에 애플리케이션이 열린 횟수의 레코드를 유지할 수 있다. 예를 들어, 데이터베이스(36_316)는, 헤드폰들이 헤드폰 잭에 플러그인된 후에 사용자가 10번 중 8번 애플리케이션 A를 여는 것을 나타내는 레코드를 유지할 수 있다. 따라서, 예측 엔진(36_302)은, 헤드폰들의 세트가 헤드폰 잭 내에 삽입될 때 애플리케이션 A가 사용자에게 식별되어야 하는지 여부를 결정하기 위해 이 정보를 데이터 이력(36_318)으로서 수신할 수 있다.
이벤트 이력 데이터베이스(36_316)는 또한 트리거링 이벤트가 검출될 때 상이한 컨텍스트들 하에서 애플리케이션이 열린 횟수의 레코드를 유지할 수 있다. 예를 들어, 데이터베이스(36_316)는, 사용자가 집에 있을 때 헤드폰들이 헤드폰 잭 내에 삽입된 후에 사용자가 10번 중 9번 애플리케이션 A를 열고 사용자가 체육관에 있을 때 10번 중 1번 애플리케이션 A를 여는 것을 나타내는 레코드를 유지할 수 있다. 따라서, 예측 엔진(36_302)은 이 정보를 데이터 이력(36_318)으로서 수신하고, 집에서 헤드폰들이 디바이스 내에 삽입될 때에는 애플리케이션 A가 식별되어야 하지만, 체육관에서는 애플리케이션 A가 식별될 필요가 없다고 결정할 수 있다. 이 섹션에서 논의된 예들이 위치들을 "집" 또는 "체육관"으로 언급하지만, "집" 또는 "체육관"을 표현하는 컨텍스트 데이터(36_306)는 수치 좌표들의 형태로 있을 수 있다는 것이 이해되어야 한다. 당업자는, 다른 애플리케이션들을 식별하기 위해 유사한 방식으로 위치 대신에 하루 중 시간 및 일년 중 날에 관한 정보가 이용될 수 있다는 것을 이해한다.
이벤트 이력 데이터베이스(36_316)는 또한, 얼마나 자주, 그리고 어떤 상황들 하에서, 사용자가 식별된 애플리케이션을 구동하지 않기로 결정하는지의 레코드를 유지할 수 있다. 예를 들어, 데이터베이스(36_316)는, 사용자가 집에서 헤드폰들을 디바이스 내에 삽입했을 때 사용자에게 애플리케이션 B가 제안되었던 10번 중 2번 애플리케이션 B를 사용자가 선택하지 않았음을 나타내는 레코드를 유지할 수 있다. 따라서, 예측 엔진(36_302)은, 사용자가 집에서 헤드폰들을 디바이스 내에 삽입할 때 애플리케이션 B를 제안하는 확률을 조정하기 위해 이 정보를 데이터 이력(36_318)으로서 수신할 수 있다.
일부 실시예들에서, 컨텍스트 정보(36_306) 및/또는 이력 정보(이 섹션에서 추가로 논의됨)는, 트리거링 이벤트가 검출될 때 이용불가능하거나 제한될 수 있다. 그러한 경우들에 있어서, 트리거링 이벤트가 검출될 때 디폴트 애플리케이션이 제안될 수 있다. 디폴트 애플리케이션은 트리거링 이벤트의 유형과 통상 연관되는 유형의 애플리케이션일 수 있다. 예를 들어, 헤드폰들의 세트가 헤드폰 잭 내에 삽입될 때 음악 애플리케이션이 제안될 수 있다. 대안적으로, 자동차와의 블루투스 연결이 이루어질 때 지도 애플리케이션이 제안될 수 있다. 일단 더 많은 이력 정보가 획득되면, 디폴트 애플리케이션 대신에 제안된 애플리케이션이 제공될 수 있다.
B. 다수의 예측 모델
상이한 트리거링 이벤트들이 상이한 제안된 애플리케이션들을 야기할 수 있기 때문에, 실시예들은 상이한 트리거링 이벤트들에 대한 상이한 예측 모델을 사용할 수 있다. 이러한 방식으로, 예측 모델은 특정 트리거링 이벤트에 대한 보다 정확한 제안을 제공하기 위해 정제될 수 있다.
도 36d는 본 발명의 실시예들에 따른 예측 엔진(36_302)을 더욱 상세하게 예시한다. 예측 엔진(36_302)은 메모리 디바이스 상에 저장된 프로그램 코드일 수 있다. 실시예들에서, 예측 엔진(36_302)은 하나 이상의 예측 모델들을 포함한다. 예를 들어, 예측 엔진(36_302)은 예측 모델 1 내지 예측 모델 N을 포함할 수 있다. 각각의 예측 모델은, 특정 트리거링 이벤트(36_228)에 대한 애플리케이션을 식별하도록 특정적으로 설계되는 코드 및/또는 데이터의 섹션일 수 있다. 예를 들어, 예측 모델 1은, 헤드폰들의 세트가 헤드폰 잭 내에 삽입되는 트리거링 이벤트에 대한 애플리케이션을 식별하도록 특정적으로 설계될 수 있다. 예측 모델 2는, 블루투스 디바이스가 연결되는 트리거링 이벤트에 대한 애플리케이션을 식별하도록 설계될 수 있다.
예측 모델 3은, 사용자가 오랜 기간 이후에 디바이스의 사용자 인터페이스와 상호작용하는 트리거링 이벤트(예컨대, 사용자가 아침에 잠에서 깬 후에 모바일 디바이스와 처음 상호작용할 때)에 대한 애플리케이션을 식별하도록 설계될 수 있다. 다른 예측 모델들은, 소정 패턴의 검출된 모션(예컨대, 사용자가 모바일 디바이스를 갖고 달리고 있을 때), 특정 위치에의 도착, 및 특정 애플리케이션의 선택(예컨대, 자동차의 컴퓨터와 통신하는 애플리케이션을 선택하는 것)과 연관된 트리거링 이벤트에 대한 애플리케이션을 식별하도록 설계될 수 있다. 트리거링 이벤트들(36_228)의 수에 따라 임의의 수의 예측 모델들이 예측 엔진(36_302) 내에 포함될 수 있다.
도시된 바와 같이, 각각의 예측 모델 1 내지 예측 모델 N은, 컨텍스트 데이터(36_306) 및 데이터 이력(36_318)을 수신하기 위해 컨텍스트 소스들 및 이벤트 이력 데이터베이스에 결합될 수 있다. 따라서, 각각의 예측 모델은 이 섹션에 논의된 실시예들에 따라 컨텍스트 데이터(36_306) 및 데이터 이력(36_318)을 이용하여 제안된 애플리케이션(36_304)을 식별할 수 있다.
도 36c을 다시 참조하면, 예측 엔진(36_302)은 제안된 애플리케이션(36_304)을 전문가 센터 모듈(36_320)로 전송할 수 있다. 실시예들에서, 이벤트 관리자(36_320)는 디바이스 상에, 예컨대, 잠금 화면 상에, 검색 화면이 열릴 때, 또는 다른 화면들 상에 디스플레이되는 것을 관리하는 코드의 섹션일 수 있다. 예를 들어, 전문가 센터(36_320)는, 어떤 정보, 예컨대 제안된 애플리케이션, 제안된 연락처, 및/또는 다른 정보가 사용자에게 디스플레이되는지를 조정할 수 있다. 전문가 센터(36_320)는 또한 그러한 정보를 사용자에게 언제 제공할지를 결정할 수 있다.
X. 사용자 인터페이스
이벤트 관리자(36_320)가 제안된 애플리케이션이 사용자에게 출력될 적절한 시간이라고 결정하는 경우, 이벤트 관리자(36_320)는 애플리케이션(36_322)을 사용자 인터페이스(36_324)에 출력할 수 있다. 실시예들에서, 출력 애플리케이션(36_322)은 제안된 애플리케이션(36_304)에 대응할 수 있다. 사용자 인터페이스(36_324)는 출력 애플리케이션(36_322)을 사용자에게 통신하고, 출력 애플리케이션(36_322)에 관한 사용자로부터의 응답을 요청할 수 있다.
실시예들에서, 사용자 인터페이스(36_324)는 사용자가 상호작용할 수 있는 디바이스 컴포넌트들의 조합일 수 있다. 예를 들어, 사용자 인터페이스(36_324)는, 사용자에게 정보를 출력하고/하거나 사용자가 디바이스로 신호들을 입력할 수 있게 하는 능력을 갖는 디바이스 컴포넌트들의 조합일 수 있다.
A. 디스플레이
사용자 인터페이스(36_324)는 디바이스의 디스플레이 상에 디스플레이될 수 있다. 디스플레이는 입력 신호들이 디스플레이와의 물리적 상호작용에 의해 생성될 수 있도록 터치에 민감할 수 있다. 그러한 실시예들에서, 디스플레이는, 디스플레이에 대한 사용자의 터치를 검출하기 위해 이미지 디스플레이 층 상에 중첩된 터치 감응형 층을 포함할 수 있다. 따라서, 디스플레이는, 사용자에게 정보를 출력하고 사용자로부터의 정보를 입력할 수 있는 사용자 인터페이스(36_324)의 일부일 수 있다. 일례로서, 디스플레이는 제안된 애플리케이션에 대한 아이콘을 보여줄 수 있고, 사용자가 디스플레이 패널의 대응하는 위치를 탭핑할 때 애플리케이션을 구동하기 위해 신호를 입력할 수 있다.
최신 디바이스들은 디바이스의 비승인된 사용을 방지하는 보안 수단들을 갖는다. 그러한 디바이스들은, 사용자가 디바이스 상에 저장된 애플리케이션들 전부에 액세스할 수 있기 전에 디바이스를 잠금해제하도록 사용자에게 요구할 수 있다. 디바이스는, 디바이스 보안의 상태에 따라 모든 애플리케이션들의 접근성을 제한할 수 있다. 예를 들어, 디바이스는, 디바이스가 모든 그의 애플리케이션들에 대한 액세스를 허용하기 전에 디바이스를 잠금해제하도록 사용자에게 요구할 수 있다. 잠금해제된 디바이스는, 홈 화면을 보여주는 디스플레이를 가질 수 있다. 홈 화면은 디바이스의 모든 애플리케이션들을 디스플레이하고/하거나 그에 대한 액세스를 제공할 수 있다. 그러나, 잠긴 디바이스는, 잠금 화면을 보여주는 디스플레이를 가질 수 있다. 디스플레이의 일부 영역들은, 디바이스를 잠금해제하기 위한 프롬프트에 의해 점유될 수 있다. 따라서, 잠금 화면은, 강화된 상태의 디바이스 보안 및 제한된 디스플레이 공간으로 인해 홈 화면보다 더 적은 애플리케이션들과의 상호작용을 허용할 수 있다. 예를 들어, 잠금 화면은, 디바이스의 애플리케이션들 전부보다는 더 적은 애플리케이션들, 예컨대 1 내지 3개의 애플리케이션들에 대한 액세스만을 허용할 수 있다. 일부 실시예들에서, 도 36c과 관련하여 이 섹션에서 논의된 바와 같은 제안된 애플리케이션들(36_304)이 잠금 화면 상에 디스플레이될 수 있다.
B. 다른 입력 및 출력 디바이스 컴포넌트
디스플레이가, 사용자에게 정보를 출력하고 사용자로부터의 정보를 입력할 수 있는 사용자 인터페이스(36_324)의 일부일 수 있지만, 사용자 인터페이스(36_324)의 다른 부분들은 그렇게 제한되지 않는다. 예를 들어, 사용자로부터의 정보를 입력할 수 있는 다른 디바이스 컴포넌트들이 또한 이 섹션에서의 실시예들에서 구상된다. 일례로서, 버튼들 및 스위치들이 사용자 인터페이스(36_324)의 일부일 수 있다. 버튼은, 사용자가 그 위에 압력을 가할 때 입력을 생성하는 디바이스 컴포넌트일 수 있다. 스위치는, 사용자가 레버를 다른 위치로 플립(flip)할 때 입력을 생성하는 디바이스 컴포넌트일 수 있다. 따라서, 버튼 및/또는 스위치는 이 섹션에서 논의된 실시예들에 따라, 제안된 애플리케이션(36_304)을 구동하기 위해 사용자에 의해 활성화될 수 있다.
사용자로부터의 정보를 출력할 수 있는 디바이스 컴포넌트들이 또한 이 섹션에서의 실시예들에서 구상된다. 일례로서, 스피커 또는 햅틱 디바이스는 사용자에게 정보를 출력하는 사용자 인터페이스의 일부일 수 있다. 스피커는 식별된 애플리케이션이 제안되었음을 나타내기 위해 오디오 통지를 출력할 수 있다. 햅틱 디바이스는 식별된 애플리케이션이 제안되었음을 나타내기 위해 촉각적 통지를 출력할 수 있다. 그러한 디바이스들은 단순한 실시예들일 뿐이고 다른 실시예들이 그러한 디바이스들로 제한되지 않는다는 것이 이해되어야 한다.
C. 상호작용의 레벨
사용자 인터페이스(36_324)는 사용자가 출력 애플리케이션(36_322)을 구동하기 위해 상이한 레벨들의 상호작용을 요구할 수 있다. 다양한 레벨들은 사용자가 제안된 애플리케이션(36_304)을 구동시킬 확률의 정도에 대응할 수 있다. 예를 들어, 예측 엔진(36_302)이, 제안된 애플리케이션(36_304)이 임계 확률보다 더 큰 사용자에 의해 구동될 확률을 갖는다고 결정하는 경우, 사용자 인터페이스(36_324)는 중간 단계들을 건너뜀으로써 사용자가 애플리케이션을 보다 신속하게 구동할 수 있게 하는 프롬프트를 출력할 수 있다.
일례로서, 예측 엔진(36_302)이, 사용자가 제안된 음악 애플리케이션을 구동시킬 확률이 높은 임계 확률보다 더 크다고 결정하는 경우, 제안된 음악 애플리케이션은 자동으로 구동될 수 있고, 사용자 인터페이스(36_324)는 이에 따라 제어부들, 예컨대 음악 애플리케이션의 경우, 재생, 일시 중지, 및 앞으로/뒤로 빨리감기를 디스플레이할 수 있다. 따라서, 사용자는 애플리케이션을 구동하기 위해 클릭하는 중간 단계를 수행할 필요가 없을 수 있다.
대안적으로, 예측 엔진(36_302)이, 사용자가 음악 애플리케이션을 구동시킬 확률이 높은 임계 확률보다 더 낮지만 여전히 보다 낮은 임계 확률보다 더 높다고 결정하는 경우, 음악 애플리케이션은 아이콘으로서 디스플레이될 수 있다. 보다 낮은 임계 확률은 기준선 임계 확률보다 더 높을 수 있다. 기준선 임계 확률은, 대응하는 애플리케이션이 제안될 최소 확률을 확립할 수 있다. 사용자는, 이에 따라, 제안된 음악 애플리케이션을 구동하기 위해 아이콘을 클릭하는 추가의 단계를 수행할 필요가 있을 수 있다. 그러나, 클릭들의 수는 여전히, 어떠한 애플리케이션도 사용자에게 제안되지 않을 때 요구되는 클릭들의 수보다 더 적을 수 있다. 실시예들에서, 임계 확률은 애플리케이션 유형에 따라 달라질 수 있다. 다양한 실시예들에서, 높은 임계 확률은 75% 내지 100%의 범위일 수 있고, 보다 낮은 임계 확률은 50% 내지 75%의 범위일 수 있고, 기준선 임계치는 25% 내지 50%의 범위일 수 있다. 특정 실시예에서, 높은 임계 확률은 75%이고, 보다 낮은 임계 확률은 50%이고, 기준선 확률은 25%이다.
실시예들에서, 보다 높은 확률들은 보다 적극적인 애플리케이션 제안들을 야기할 수 있다. 예를 들어, 애플리케이션이 약 90%의 높은 확률을 갖는 경우, 예측 엔진(36_302)은 디바이스의 잠금 화면 상에 아이콘을 제공하여, 사용자가 아이콘의 한번 클릭으로 그 애플리케이션에 액세스하도록 할 수 있다. 애플리케이션이 약 95%의 훨씬 더 높은 확률을 갖는 경우, 예측 엔진(36_302)은 사용자가 아무것도 클릭하지 않고서 사용자에 대해 제안된 애플리케이션을 심지어 자동으로 구동할 수 있다. 그러한 경우에, 예측 엔진(36_302)은 제안된 애플리케이션을 출력할 수 있을 뿐만 아니라, 그 애플리케이션에 특정한 커맨드, 예컨대 음악 애플리케이션에서 선택된 음악을 재생하기 위한 커맨드 또는 지도 애플리케이션에서 특정 경로의 길안내를 시작하기 위한 커맨드를 출력할 수도 있다.
본 발명의 실시예들에 따르면, 예측 엔진(36_302)은 어떤 레벨의 상호작용이 요구되는지를 결정하고, 이어서 그 정보를 이벤트 관리자(36_320)로 출력할 수 있다. 이벤트 관리자(36_320)는 이어서 이 정보를 사용자 인터페이스(36_324)로 전송하여 사용자에게 출력할 수 있다.
실시예들에서, 사용자 인터페이스(36_324)는 사용자에게 디스플레이 화면 상에 안내문을 디스플레이할 수 있다. 안내문은, 예를 들어 푸시 통지에 의해 전송될 수 있다. 안내문은, 사용자에게 제안된 애플리케이션을 통지하는 텍스트 및/또는 사진들을 포함하는 시각적 안내문일 수 있다. 안내문은 사용자가 그의 또는 그녀의 레저를 선택 및 구동하기 위해 사용자에게 애플리케이션을 제안할 수 있다. 선택될 때, 애플리케이션이 구동될 수 있다. 일부 실시예들에서, 보다 적극적인 예측들을 위해, 통지는 또한 제안된 애플리케이션 내의 제안된 액션을 포함할 수 있다. 즉, 통지는 사용자에게 제안된 애플리케이션 및 제안된 애플리케이션 내의 제안된 액션을 알려줄 수 있다. 따라서, 사용자에게는 제안된 애플리케이션을 구동하거나 또는 제안된 애플리케이션 내의 제안된 액션을 수행하기 위한 옵션이 주어질 수 있다. 일례로서, 통지는 사용자에게, 제안된 애플리케이션이 음악 애플리케이션이고 제안된 액션이 음악 애플리케이션 내의 소정의 노래를 재생하는 것임을 알려줄 수 있다. 사용자는 그 또는 그녀가 제안된 노래를 예시하는 아이콘을 클릭함으로써 노래를 재생하고 싶어할 것임을 나타낼 수 있다. 대안적으로, 사용자는 그 또는 그녀가 오히려 화면을 가로질러 통지를 스와이프함으로써 다른 노래를 재생하기 위해 애플리케이션을 구동할 것임을 나타낼 수 있다.
하나의 통지에서 사용자 인터페이스(36_324)로 제안된 애플리케이션 및 제안된 액션을 출력하는 것 이외에, 예측 엔진(36_302)은 하나의 통지에서 사용자 인터페이스(36_324)로 2개의 제안된 액션들을 출력할 수 있다. 예를 들어, 예측 엔진(36_302)은 제1 노래를 재생하기 위한 제안된 액션, 및 제2 노래를 재생하기 위한 제2 제안된 액션을 출력할 수 있다. 사용자는 그 통지에서 각각의 아이콘을 클릭함으로써 어느 노래를 재생할지를 선택할 수 있다. 실시예들에서, 제안된 액션들은 상이한 기준들에 기초하여 결정될 수 있다. 예를 들어, 하나의 제안된 액션은 컨텍스트 정보에 상관없이 가장 최근에 재생되었던 노래를 재생하기 위한 것일 수 있는 반면, 다른 하나의 제안된 액션은 동일 또는 유사한 컨텍스트 정보 하에서 마지막으로 재생되었던 노래를 재생하기 위한 것일 수 있다. 일례로서, 사용자가 그의 또는 그녀의 자동차에 타고, 트리거링 이벤트가 예측 엔진(36_302)으로 하여금 소정의 노래를 재생하는 것에 관한 2개의 액션들을 제안하게 하는 상황의 경우, 노래 A는 집에서 있었던 마지막으로 재생되었던 노래일 수 있는 반면, 노래 B는 사용자가 자동차 안에 있었던 마지막 시간에 재생되었던 노래일 수 있다. 사용자가 재생될 노래를 선택할 때, 노래는 처음부터 계속될 수 있거나 또는 그것이 마지막으로 중지되었던 곳(예컨대, 노래의 중간)으로부터 계속될 수 있다.
예측 엔진(36_302)이 액션을 제안할 수 있게 하기 위해, 예측 엔진(36_302)은 디바이스의 활성 상태에 관한 정보를 저장하는 메모리 디바이스에 액세스할 수 있다. 디바이스의 활성 상태는, 제안된 애플리케이션의 선택에 뒤이어 수행되는 액션을 나타낼 수 있다. 예를 들어, 음악 애플리케이션에 대한 활성 상태는 소정의 노래를 재생하는 것일 수 있다. 활성 상태는 노래가 마지막으로 중지되었을 때를 계속해서 추적할 수 있다. 실시예들에서, 도 36c으로부터의 이력 데이터베이스(36_316)는 디바이스의 활성 상태에 관련한 데이터 이력을 기록할 수 있다. 따라서, 예측 엔진(36_302)은 제안된 애플리케이션에 의해 구동될 액션을 제안할 수 있다.
XI. 제안된 애플리케이션을 결정하는 방법
도 36e는 본 발명의 실시예들에 따른, 트리거링 이벤트에 기초하여 애플리케이션을 식별하는 방법(36_500)을 예시하는 흐름도이다. 방법(36_500)은 디바이스에 의해 전체적으로 또는 부분적으로 수행될 수 있다. 다양한 예들로서, 디바이스는 이 섹션에서 이미 논의된 바와 같이 전화, 태블릿, 랩톱, 또는 다른 모바일 디바이스일 수 있다.
블록(36_502)에서, 디바이스, 예컨대 모바일 디바이스는 이벤트를 검출한다. 예를 들어, 헤드폰들의 세트가 디바이스의 헤드폰 잭 내에 삽입될 수 있다. 다른 예로서, 무선 헤드셋이 블루투스 연결을 통해 디바이스에 결합될 수 있다. 도 36b에서의 입력 디바이스들(36_202)이 이벤트를 검출하는 데 사용될 수 있다. 이벤트는 모바일 디바이스가 외부 디바이스 또는 사용자와 같은 외부 엔티티와 상호작용하는 임의의 액션일 수 있다.
블록(36_504)에서, 디바이스는 검출된 이벤트가 트리거링 이벤트인지 여부를 결정한다. 검출된 이벤트가 트리거링 이벤트인지 여부를 결정하기 위해, 검출된 이벤트는 이벤트들의 미리결정된 목록, 예컨대 도 36b에서의 지정된 트리거링 이벤트 데이터베이스(36_226) 내의 이벤트들의 목록과 비교될 수 있다. 검출된 이벤트가 이벤트들의 미리결정된 목록 중 하나에 매칭되는 경우, 검출된 이벤트는 트리거링 이벤트인 것으로 결정될 수 있다.
블록(36_506)에서, 디바이스는 예측 모델, 예컨대 도 36d에서의 예측 모델 1 내지 예측 모델 N 중 하나의 예측 모델을 선택한다. 선택된 예측 모델은 트리거링 이벤트에 의존할 수 있다. 예를 들어, 트리거링 이벤트가 외부 디바이스와의 블루투스 연결을 확립하는 것에 관한 것일 때 블루투스 연결들을 위해 설계된 예측 모델이 선택될 수 있다. 다른 예로서, 트리거링 이벤트가 헤드폰들의 세트를 헤드폰 잭 내에 삽입하는 것에 관한 것일 때 헤드폰 연결들을 위해 설계된 예측 모델이 선택될 수 있다.
블록(36_508)에서, 디바이스는 컨텍스트 정보를 수신한다. 컨텍스트 정보는 다양한 소스들, 예컨대 도 36c에서의 컨텍스트 소스들(36_308)로부터 수신될 수 있다. 실시예들에서, 컨텍스트 정보는 디바이스의 주위 상황에 관한 것일 수 있다. 예를 들어, 컨텍스트 정보는 하루 중 시간, 일년 중 날, 또는 디바이스의 위치에 관한 것일 수 있다. 추가적으로, 이력 정보가 또한 디바이스에 의해 수신될 수 있다. 이력 정보는 데이터베이스, 예컨대 이벤트 이력 데이터베이스(36_316)에 저장된, 디바이스와 사용자 사이의 상호작용들의 이력에 관한 것일 수 있다.
블록(36_510)에서, 디바이스는 사용자에 의해 액세스될 적어도 임계 확률을 갖는 하나 이상의 애플리케이션들을 식별할 수 있다. 이 섹션에서 이미 언급된 바와 같이, 복수의 임계치들이 있을 수 있다. 일부 실시예들에서, 임계 확률은 기준선 임계 확률, 보다 낮은 임계 확률, 또는 높은 임계 확률일 수 있다. 예를 들어, 하나 이상의 애플리케이션들은 각각 임계 확률보다 더 큰 확률을 가질 수 있다. 다른 예에서, 하나 이상의 애플리케이션들은 임계 확률보다 더 큰 조합된 확률을 가질 수 있다. 하나 이상의 애플리케이션들은 최고 확률들을 갖는 애플리케이션들일 수 있고, 다양한 기준들로 선택될 수 있다(예컨대, 모두가 임계치보다 큰 확률을 가짐, 임계치를 초과하기 위해 필요하지만 최대 수로 제한되는 정도로 많은 애플리케이션들 등). 일부 실시예들에서, 기준선 임계 확률보다 낮은 확률을 갖는 애플리케이션들은 무시될 수 있다.
사용자에 의해 액세스될 확률은 예측 모델에 의해 결정될 수 있다. 예측 모델은 컨텍스트 정보뿐만 아니라 이력 정보를 이용함으로써 확률을 결정할 수 있다. 실시예들에서, 식별된 애플리케이션들은 도 36c 및 도 36d와 관련하여 이 섹션에서 논의된 애플리케이션들이다.
일부 실시예들에서, 애플리케이션들이 동일한 확률들을 갖는 경우, 그들은 무시될 수 있는데, 즉 식별되지 않을 수 있다. 이러한 상황들에서, 디바이스는 하나 이상의 애플리케이션들을 적절하게 식별하기 위해 추가의 이력 정보를 생성할 필요가 있을 수 있다. 더 많은 이력 정보가 수집됨에 따라, 디바이스는 정확한 애플리케이션, 예컨대 주어진 컨텍스트에서 사용자가 액세스하기를 원하는 애플리케이션을 식별하는 데 있어서 더 정확하게 된다. 다른 실시예들에서, 두 애플리케이션이 최고 2개의 확률들을 갖는 것이 발생할 수 있는 바와 같이, 예컨대, 그들의 조합된 확률이 충분히 높은 경우, 애플리케이션들 양쪽 모두가 제공될 수 있다.
블록(36_512)에서, 디바이스는 사용자에게 사용자 인터페이스를 제공할 수 있다. 예를 들어, 디바이스는 인터페이스를 통해 사용자에게 식별된 애플리케이션들을 디스플레이할 수 있는데, 사용자는 사용자가 식별된 애플리케이션들에 액세스하고 싶어할지 여부를 나타내기 위해 그 인터페이스와 상호작용할 수 있다. 예를 들어, 사용자 인터페이스는 터치 감응형 디스플레이를 포함할 수 있는데, 터치 감응형 디스플레이는 식별된 애플리케이션들 중 하나 이상을 사용자에게 보여주고, 사용자가 터치 감응형 디스플레이와 상호작용함으로써 디바이스에 의해 식별된 애플리케이션들 중 하나 이상에 액세스할 수 있게 한다.
소정 실시예들에서, 사용자 인터페이스는 잠금 화면, 또는 홈 화면에 제공될 수 있다. 홈 화면은, 잠금해제된 상태에서 홈 버튼을 누른 후에 디스플레이되는 화면일 수 있다. 잠금 화면은, 디바이스를 웨이크업하기 위해 오랜 비활동 기간 이후 홈 버튼을 누른 후에 디스플레이되는 화면일 수 있다. 실시예들에서, 잠금 화면의 일부분이 디바이스를 잠금해제하기 위해 예비되기 때문에, 잠금 화면은 홈 화면보다 애플리케이션들을 디스플레이하기 위해 이용가능한 디스플레이 공간이 더 작다. 일부 실시예들에서, 사용자 인터페이스는 이미 구동중인 애플리케이션과 연관될 수 있다. 일례로서, 사용자 인터페이스는, 도 36f에 예시된 바와 같이, 구동중인 음악 애플리케이션과 연관된 오디오 제어부들을 갖는 음악 재생기 인터페이스일 수 있다.
도 36f은 이미 구동중인 애플리케이션과 연관되는 디바이스(36_602)에 대한 예시적인 사용자 인터페이스(36_600)를 예시한다. 사용자 인터페이스(36_600)는 음악 애플리케이션에 대한 사용자 인터페이스일 수 있지만, 상이한 애플리케이션들에 대한 다른 사용자 인터페이스들이 또한 이 섹션에서 구상된다. 사용자 인터페이스(36_600)는 터치 스크린 디스플레이(36_604)에 의해 제공될 수 있다. 터치 스크린 디스플레이(36_604)는 오디오 제어부들(36_608), 볼륨 제어부들(36_610), 노래 제목(36_612), 및/또는 앨범 아트(36_614)를 디스플레이할 수 있다. 오디오 제어부들(36_608)은 노래를 앞으로 빨리감기, 되감기, 재생, 및 일시 중지하기 위한 사용자 인터페이스를 제공할 수 있다. 볼륨 제어부들(36_610)은 사용자가 출력된 음향의 볼륨을 조정할 수 있게 한다. 노래 제목(36_612) 및 앨범 아트(36_614)는 현재 재생중인 노래에 관한 정보를 디스플레이할 수 있다. 실시예들에서, 사용자 인터페이스(36_600)가 터치 스크린 디스플레이(36_604)에 의해 디스플레이될 때, 디바이스(36_602)의 백라이트가 조명될 수 있다. 백라이트의 조명은, 사용자가 구동중인 애플리케이션을 볼 수 있게 하고 디바이스(36_602)가 제안된 애플리케이션을 구동하였음을 알 수 있게 한다. 음악 애플리케이션을 자동으로 구동하고 사용자 인터페이스(36_600)를 사용자에게 제공함으로써, 디바이스(36_602)는 하나 이상의 아이콘들을 클릭할 필요 없이 사용자가 그의 또는 그녀의 원하는 애플리케이션에 액세스할 수 있게 함으로써 사용자 경험을 향상시킬 수 있다.
사용자 인터페이스(36_600)의 일부분들은 일부 상황들에서 숨겨질 수 있다. 예를 들어, 디바이스(36_602)의 전문가 센터, 예컨대 도 36c에서의 전문가 센터(36_320)가, 다른 애플리케이션이 제안된 애플리케이션보다 우선순위를 갖는다고 결정하는 경우, 앨범 아트(36_614)는 숨겨질 수 있고 다른 애플리케이션이 대신에 디스플레이될 수 있다. 다른 애플리케이션은, 다른 애플리케이션을 구동하기 위한 디스플레이(36_604) 상의 액세스가능한 아이콘으로서 디스플레이될 수 있다. 다른 실시예들에서, 다른 애플리케이션은, 사용자가 통지를 클릭할 때 다른 애플리케이션의 아이콘에 대한 액세스를 허용하는 통지로서 디스플레이될 수 있다. 그러한 상황들에서, 통지는 앨범 아트(36_614) 대신에 디스플레이될 것이다. 실시예들에서, 사용자 인터페이스가 잠금 화면 상에 디스플레이되는 경우, 통지는 또한 잠금 화면 상에 디스플레이될 수 있다. 따라서, 사용자는 보다 높은 우선순위를 갖는 것으로 간주되는 애플리케이션을 알게 되고, 그를 구동할 기회가 주어질 수 있다.
XII. 애플리케이션을 구동하기 위한 시간 제한
실시예들에서, 식별된 애플리케이션이 소정 기간 내에 액세스되지 않는 경우, 디바이스는, 어떠한 사용자 인터페이스도 제1 장소에서 제공되지 않았는 것처럼 사용자 인터페이스를 제거할 수 있다. 사용자가 소정 기간 내에 애플리케이션에 액세스하지 않은 경우, 사용자가 애플리케이션에 액세스하는 데에 관심이 없다고 가정된다. 따라서, 사용자 인터페이스는 사용자가 식별된 애플리케이션에 액세스할 수 없도록 제거되고, 사용자는 주의가 산만해지지 않는다.
도 36g 및 도 36h는 실시예들에 따른, 사용자 인터페이스를 제거하기 위한 방법들을 예시하는 흐름도들이다. 구체적으로, 도 36g는 일정 기간이 경과한 후에 사용자 인터페이스를 제거하기 위한 방법(36_700)을 예시하는 흐름도이다. 도 36h는 트리거링 이벤트가 임계 기간 내에 제거된 후에 사용자 인터페이스를 제거하기 위한 방법(36_703)을 예시하는 흐름도이다. 방법들(36_700, 36_703)은 디바이스에 의해 전체적으로 또는 부분적으로 수행될 수 있다.
도 36g를 참조하면, 방법(36_700)은 블록(36_701)에서 사용자에게 사용자 인터페이스를 제공하는 것으로 시작한다. 블록(36_701)은 도 36e와 관련하여 이 섹션에서 논의된 블록(36_512)에서 언급된 바와 같이 수행될 수 있다.
블록(36_702)에서, 디바이스는, 사용자 인터페이스가 사용자에게 처음으로 제공된 이후로 임계 기간이 경과하였는지 여부를 결정한다. 사용자 인터페이스는 잠긴 화면 또는 홈 화면에서 사용자에게 제공될 수 있다. 실시예들에서, 임계 기간은, 사용자가 디바이스와 상호작용하지 않은 경우 사용자에게 사용자 인터페이스를 제공한 직후에 시작하는 미리결정된 기간을 나타낸다.
임계 기간은 트리거링 이벤트의 유형에 따라 달라질 수 있다. 예를 들어, 트리거링 이벤트가 직접적인 사용자 상호작용(예컨대, 이벤트를 야기하도록 의도된 사용자에 의한 인지된 액션)을 수반하는 이벤트의 유형인 경우, 임계 기간은 15 내지 30초와 같이, 비교적 짧을 수 있다. 그러한 트리거링 이벤트의 일례는 헤드폰 잭 내로의 헤드폰들의 세트의 삽입을 포함한다. 다른 예는 오랜 기간 이후에 버튼을 누름으로써 디바이스를 웨이크업하는 것을 포함한다. 임계 기간은 비교적 짧을 수 있는데, 이는 사용자가 전화와 직접 상호작용하고 있고 출력된 식별된 애플리케이션을 즉시 알 수 있다고 가정될 수 있기 때문이다. 사용자가 식별된 애플리케이션을 즉시 알기 때문에, 식별된 애플리케이션이 액세스되고 있지 않은 짧은 기간의 경과는, 사용자가 식별된 애플리케이션에 액세스하려고 의도하지 않음을 나타낸다.
대안적으로, 트리거링 이벤트가 직접적인 사용자 상호작용을 수반하지 않는 이벤트의 유형인 경우, 임계 기간은 직접적인 사용자 상호작용을 수반하는 트리거링 이벤트에 대한 임계 기간보다 더 길 수 있다. 일 실시예에서, 직접적인 사용자 상호작용을 수반하지 않는 트리거링 이벤트에 대한 임계 기간은 15 내지 30분과 같이, 비교적 길 수 있다. 하나의 그러한 예는 일정 위치에 도착하는 것을 포함한다. 디바이스가 특정 위치에 도착할 때, 사용자는 이동중이고 디바이스에 집중하고 있지 않다는 것이 가정된다. 사용자는 출력된 식별된 애플리케이션을 즉시 알지 못할 수 있다. 따라서, 사용자가 디바이스를 체크하고 식별된 애플리케이션을 알게 되기 전에 더 많은 시간이 지나갈 수 있다.
블록(36_704)에서, 임계 기간이 경과하는 경우, 사용자 인터페이스는 제거될 수 있어서, 사용자가 애플리케이션이 제안되었음을 전혀 알아차리지 못할 수 있도록 한다. 그러나, 임계 기간이 경과하지 않은 경우, 블록(36_706)에서, 디바이스는 사용자가 애플리케이션에 액세스하고 싶어하는지 여부를 결정한다. 사용자는, 사용자 인터페이스를 통한 임의의 형태의 사용자 입력에 의해, 예컨대, 터치 스크린과 상호작용하거나, 버튼을 누르거나, 스위치를 플리핑하거나, 또는 생체측정 디바이스를 사용함으로써, 그 또는 그녀가 애플리케이션에 액세스하고 싶어함을 나타낼 수 있다.
사용자가, 그 또는 그녀가 애플리케이션에 액세스하기를 원함을 아직 나타내지 않았다고 결정되는 경우, 디바이스는 블록(36_701)에서 사용자에게 사용자 인터페이스를 계속해서 제공할 수 있다. 그러나, 디바이스가, 사용자가 애플리케이션에 액세스하고 싶어한다는 표시를 수신하는 경우, 블록(36_708)에서 디바이스는 애플리케이션을 구동할 수 있다. 따라서, 디바이스는 원하는 애플리케이션에 대한 바로가기(short cut)를 제공함으로써 사용자 시간을 절약하여, 이에 의해 사용자의 경험을 향상시킬 수 있다.
일부 실시예들에서, 사용자 인터페이스는 임계 기간의 지속기간 이전에 제거될 수 있다. 도 36h에 예시된 바와 같이, 블록(36_710)에서, 디바이스는 트리거링 이벤트가 제거되었는지 여부, 예컨대, 트리거링 이벤트의 반대되는 액션이 검출되었는지 여부를 결정한다. 예를 들어, 트리거링 이벤트가 헤드폰들의 세트를 헤드폰 잭 내에 삽입하는 것인 경우, 트리거링 이벤트의 제거는 헤드폰들의 세트를 헤드폰 잭으로부터 떼어내는 것이다. 다른 예에서, 트리거링 이벤트가 블루투스 연결을 확립하고 있는 것인 경우, 트리거링 이벤트의 제거는 블루투스 연결을 연결해제하는 것이다. 트리거링 이벤트의 제거는, 사용자가 제안된 디바이스에 액세스하려고 하지 않는다는 것을 의미한다고 디바이스에 의해 해석될 수 있다. 따라서, 트리거링 이벤트가 제거되는 경우, 블록(36_704)에서 사용자 인터페이스가 제거될 수 있는데, 예컨대, 애플리케이션이 클리어될 수 있고 애플리케이션에 대한 임의의 사용자 인터페이스가 숨겨질 수 있다.
XIII. 훈련 루틴
이력 정보가 모바일 디바이스의 사용을 통해 누적됨에 따라, 예측 모델들(예컨대, 도 36d에 논의된 예측 모델 1 내지 예측 모델 N)은 새로운 이력 정보를 고려하여 주기적으로 훈련(즉, 업데이트)될 수 있다. 훈련된 후에, 예측 모델 1 내지 예측 모델 N은 사용자와 모바일 디바이스 사이의 가장 최근의 상호작용 패턴들에 따라 애플리케이션들 및 액션들을 보다 정확하게 제안할 수 있다. 예측 모델 1 내지 예측 모델 N을 훈련하는 것은, 대량의 이력 정보가 기록되었을 때 가장 효과적일 수 있다. 따라서, 훈련은, 모바일 디바이스가 사용자와의 다수의 상호작용들을 검출할 수 있게 하기에 충분히 긴 시간의 간격들로 발생할 수 있다. 그러나, 훈련 세션들 사이에 너무 긴 기간을 대기하는 것은 예측 엔진의 적응성을 저해할 수 있다. 따라서, 훈련 세션들 사이의 적합한 기간은 15 내지 20시간, 예컨대 18시간일 수 있다.
예측 모델 1 내지 예측 모델 N을 훈련하는 것은 시간이 걸릴 수 있고, 모바일 디바이스의 사용을 방해할 수 있다. 따라서, 훈련은, 사용자가 디바이스를 사용하지 않을 가능성이 가장 클 때 발생할 수 있다. 사용자가 디바이스를 사용하지 않을 것임을 예측하는 하나의 방식은, 디바이스가 사용되지 않고 있을 때, 예컨대, 어떠한 버튼들도 눌리지 않을 때 및 디바이스가 이동하고 있지 않을 때 일정 기간 동안 대기하는 것이다. 이것은 사용자가 가까운 미래에, 예컨대, 사용자가 자고 있을 때 일정 기간 동안 사용자가 전화와 상호작용하지 않을 상태에 있음을 나타낼 수 있다. 대기 기간에 대해 임의의 적합한 지속기간, 예컨대 1 내지 3시간이 사용될 수 있다. 특정 실시예에서, 대기 기간은 2시간이다.
2시간의 끝에서, 예측 모델 1 내지 예측 모델 N은 업데이트될 수 있다. 그러나, 사용자가 2시간의 끝 이전에 모바일 디바이스와 상호작용하는(예컨대, 버튼을 누르거나 또는 디바이스를 이동시키는) 경우, 2시간 기간의 카운트다운이 재시작할 수 있다. 기간이 2시간의 비활동에 도달하기 전에 거듭 재시작하는 경우, 모바일 디바이스는 절대 기간 이후에 예측 모델 1 내지 예측 모델 N의 훈련을 강제할 수 있다. 일 실시예에서, 절대 기간은, 오래된 예측 모델들로 인해 모바일 디바이스의 사용자 친화성이 떨어지기 시작하는 임계 기간인 것으로 결정될 수 있다. 절대 기간은 10 내지 15시간의 범위, 또는 특정 실시예에서는 12시간일 수 있다. 따라서, 훈련 사이의 최대 시간은 28시간(18 + 10시간) 내지 33시간(18 + 15시간)일 수 있다. 특정 실시예에서, 최대 시간은 30시간(18 + 12 시간)이다.
일부 실시예들에서, 디바이스(100)(도 1a)의 소프트웨어 컴포넌트들은 트리거링 이벤트 모듈 및 예측 모듈을 포함한다. 트리거링 이벤트 모듈은, 예컨대 도 36b와 관련하여 이 섹션에서 기술된 바와 같이, 다양한 서브모듈들 또는 시스템들을 포함할 수 있다. 게다가, 예측 모듈은, 예컨대 도 36c과 관련하여 이 섹션에서 기술된 바와 같이, 다양한 서브모듈들 또는 시스템들을 포함할 수 있다.
검출된 트리거링 이벤트에 기초한 애플리케이션 추천을 위한 예시적인 방법, 디바이스, 및 컴퓨터 판독가능 매체
일부 실시예들에서, 이벤트가 입력 디바이스에 의해 검출될 수 있다. 이벤트는, 그 이벤트를 트리거링 이벤트들의 그룹과 비교함으로써 트리거링 이벤트인 것으로 결정될 수 있다. 이어서, 이벤트에 대응하는 제1 예측 모델이 선택된다. 이어서, 제1 컨텍스트에서 컴퓨팅 디바이스의 하나 이상의 특성들을 특정하는 디바이스에 관한 컨텍스트 정보가 수신되고, 하나 이상의 애플리케이션들의 세트가 식별된다. 하나 이상의 애플리케이션들의 세트는, 이벤트가 제1 컨텍스트에서 발생할 때 사용자에 의해 액세스될 적어도 임계 확률을 가질 수 있다. 그 후에, 하나 이상의 애플리케이션들의 세트와 상호작용하기 위해 사용자에게 사용자 인터페이스가 제공된다.
일부 실시예들에서, 컴퓨팅 디바이스 상에서 실행 중인 제안된 애플리케이션과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하기 위한 컴퓨터 구현 방법이 제공되는데, 본 방법은, 컴퓨팅 디바이스에서: 컴퓨팅 디바이스의 입력 디바이스에서 이벤트를 검출하는 단계; 이벤트가, 하나 이상의 제안된 애플리케이션들을 식별하기 위해 지정되는 트리거링 이벤트들의 그룹 중 하나에 대응한다고 결정하는 단계; 이벤트에 대응하는 제1 예측 모델을 선택하는 단계; 컴퓨팅 디바이스에 관한 컨텍스트 정보를 수신하는 단계 - 컨텍스트 정보는 제1 컨텍스트에 대한 컴퓨팅 디바이스의 하나 이상의 특성들을 특정함 -; 제1 예측 모델에 의해, 이벤트가 제1 컨텍스트와 관련하여 발생할 때 사용자에 의해 액세스될 적어도 임계 확률을 갖는 하나 이상의 애플리케이션들의 세트를 식별하는 단계 - 제1 예측 모델은 이벤트가 검출된 후에 컴퓨팅 디바이스와의 사용자의 상호작용들 이력을 사용함 -; 하나 이상의 애플리케이션들의 세트와 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하는 단계를 포함한다. 일부 실시예들에서, 컴퓨팅 디바이스의 입력 디바이스에서 이벤트를 검출하는 단계는, 액세서리 디바이스에 대한 컴퓨팅 디바이스의 연결을 검출하는 단계를 포함한다. 일부 실시예들에서, 액세서리 디바이스는 헤드폰들 또는 차량의 컴퓨터를 포함한다. 일부 실시예들에서, 컨텍스트 정보는 컴퓨팅 디바이스의 위치를 특정한다. 일부 실시예들에서, 사용자 인터페이스는 화면 상에, 컴퓨팅 디바이스의 홈 화면 상에 제공된 것보다 더 적은 애플리케이션들과의 상호작용들을 허용한다. 일부 실시예들에서, 컴퓨팅 디바이스의 입력 디바이스에서 이벤트를 검출하는 단계는, 하나 이상의 모션 센서들로 컴퓨팅 디바이스의 움직임을 검출하는 단계; 및 움직임에 기초하여 컴퓨팅 디바이스의 모션 상태를 결정하는 단계를 포함하고, 하나 이상의 제안된 애플리케이션들을 식별하기 위해 지정되는 트리거링 이벤트들의 그룹 중 하나는 컴퓨팅 디바이스의 모션 상태를 포함한다. 일부 실시예들에서, 이벤트와는 상이한 다른 트리거링 이벤트가 검출될 때 제2 예측 모델이 선택되는데, 제2 예측 모델은 제1 예측 모델과는 상이하다. 일부 실시예들에서, 하나 이상의 애플리케이션들의 세트는 복수의 애플리케이션들을 포함하고, 전체로서 하나 이상의 애플리케이션들의 세트는 임계 확률보다 더 큰 확률을 갖는다. 일부 실시예들에서, 사용자 인터페이스가 컴퓨팅 디바이스의 잠금 화면 상에 제공되는데, 사용자 인터페이스는 잠금 화면으로부터의 애플리케이션들의 세트 중 하나의 애플리케이션의 선택을 허용한다. 일부 실시예들에서, 본 방법은, 하나 이상의 애플리케이션들의 세트를 구동하는 단계를 포함하는데, 사용자 인터페이스는 구동되는 하나 이상의 애플리케이션들에 특정된다. 일부 실시예들에서, 하나 이상의 특성들은 컴퓨팅 디바이스의 위치, 컴퓨팅 디바이스에 의해 결정되는 하루 중 시간, 및 컴퓨팅 디바이스에 의해 결정되는 일년 중 날 중 적어도 하나를 포함한다. 일부 실시예들에서, 본 방법은, 임계 기간이 경과하였는지 여부를 결정하는 단계; 임계 기간이 경과하였다고 결정될 때 사용자 인터페이스를 제거하는 단계; 임계 기간이 경과하지 않았다고 결정될 때 사용자가 하나 이상의 애플리케이션들의 세트에 액세스하려고 하는지 여부를 결정하는 단계; 및 사용자가 하나 이상의 애플리케이션들의 세트에 액세스하려고 한다고 결정될 때 하나 이상의 애플리케이션들의 세트를 구동하는 단계를 포함한다. 일부 실시예들에서, 임계 기간은, 직접적인 사용자 상호작용을 수반하지 않는 트리거링 이벤트들에 대한 것보다는 직접적인 사용자 상호작용을 수반하는 트리거링 이벤트들에 대한 것이 더 짧다.
일부 실시예들에서, 비일시적인 컴퓨터 판독가능 매체를 포함하는 컴퓨터 제품은, 실행될 때, 하나 이상의 프로세서들을 포함하는 디바이스를 제어하는 복수의 명령어들을 저장하는데, 명령어들은, 디바이스의 입력 디바이스에서 이벤트를 검출하는 것; 이벤트가, 하나 이상의 제안된 애플리케이션들을 식별하기 위해 지정되는 트리거링 이벤트들의 그룹 중 하나에 대응한다고 결정하는 것; 이벤트에 대응하는 제1 예측 모델을 선택하는 것; 디바이스에 관한 컨텍스트 정보를 수신하는 것 - 컨텍스트 정보는 제1 컨텍스트에 대한 디바이스의 하나 이상의 특성들을 특정함 -; 제1 예측 모델에 의해, 이벤트가 제1 컨텍스트에서 발생할 때 사용자에 의해 액세스될 적어도 임계 확률을 갖는 하나 이상의 애플리케이션들의 세트를 식별하는 것 - 제1 예측 모델은 이벤트가 검출될 때 디바이스와의 사용자의 상호작용들 이력을 사용함 -; 하나 이상의 애플리케이션들의 세트와 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하는 것을 포함한다. 일부 실시예들에서, 디바이스의 입력 디바이스에서 이벤트를 검출하는 것은, 액세서리 디바이스에 대한 컴퓨팅 디바이스의 연결을 검출하는 것을 포함한다.
일부 실시예들에서, 디바이스가 제공되는데, 디바이스는, 트리거링 이벤트들을 저장하기 위한 트리거링 이벤트 저장소; 데이터 이력을 저장하기 위한 이력 저장소; 하나 이상의 입력 디바이스들; 하나 이상의 컨텍스트 소스들; 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 하나 이상의 입력 디바이스들에서 이벤트를 검출하도록; 이벤트가, 하나 이상의 제안된 애플리케이션들을 식별하기 위해 지정되는 트리거링 이벤트들의 그룹 중 하나에 대응한다고 결정하도록; 이벤트에 대응하는 제1 예측 모델을 선택하도록; 하나 이상의 컨텍스트 소스들로부터 디바이스에 관한 컨텍스트 정보를 수신하도록 - 컨텍스트 정보는 제1 컨텍스트에 대한 컴퓨팅 디바이스의 하나 이상의 특성들을 특정함 -; 제1 예측 모델에 의해, 이벤트가 제1 컨텍스트에서 발생할 때 사용자에 의해 액세스될 적어도 임계 확률을 갖는 하나 이상의 애플리케이션들의 세트를 식별하도록 - 제1 예측 모델은 이벤트가 검출될 때 컴퓨팅 디바이스와의 사용자의 상호작용들 이력을 사용함 -; 그리고 하나 이상의 애플리케이션들의 세트와 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하도록 구성된다. 일부 실시예들에서, 하나 이상의 입력 디바이스들은 헤드폰 잭, 블루투스 디바이스, 버튼, 터치 스크린, 가속도계, 및 GPS 중 적어도 하나를 포함한다. 일부 실시예들에서, 트리거링 이벤트들은 미리결정된 이벤트들이다. 일부 실시예들에서, 사용자 인터페이스는 컴퓨팅 디바이스의 홈 화면 상에 제공된 것보다 더 적은 애플리케이션들과의 상호작용들을 허용한다. 일부 실시예들에서, 하나 이상의 애플리케이션들의 세트는 복수의 애플리케이션들을 포함하고, 복수의 애플리케이션들 각각은 임계 확률보다 더 큰 확률을 갖는다.
섹션 7 : 디바이스의 컨텍스트에 기초하여 수신자를 제안하기 위한 사람 중심의 예측/기법
이 섹션 "사람 중심의 예측"에서의 내용은, 일부 실시예들에 따른, 디바이스의 컨텍스트에 기초하여 수신자들을 제안하기 위한 사람 중심의 예측들 및 기법들을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 연락처들을 식별 및 예측하고 사용자에 의한 사용을 위해 그들을 추천하는 방식들을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 특히, 도 9b 및 도 9c의 예측 부분(930)에 제안된 사람들을 채우는 것을 참조하여, 아래에서 논의되는 방법(600) 및 방법(800)에 관련된 것들을 보완한다. 일부 실시예들에서, 이 섹션에서 기술되는 연락처들을 예측 및 제안하는 것을 돕기 위해 사용되는 예측 모델들 및 상호작용 이력 데이터베이스들은, 사용자에 의한 즉시 사용을 위해 사용자 인터페이스, 예컨대, 검색 인터페이스 또는 잠금 화면에서 예측, 제안 및/또는 포함하기 위한 적절한 연락처들을 식별하는 것을 돕기 위해 사용된다(즉, 이러한 예측 모델들은 연락처들을 제안/예측하기 위해 방법들(600, 800, 1000, 1200)과 함께 사용된다).
사람 중심의 예측에 대한 간략한 개요
실시예들은, 디바이스의 현재 컨텍스트에 기초하여 컴퓨팅 디바이스의 사용자와 관련이 있을 가능성이 가장 큰 통신들 및 상호작용들에 대한 수신자들을 제안한다. 컴퓨팅 디바이스의 예들은 전화, 태블릿, 랩톱, 또는 데스크톱 컴퓨터이다. 예시적인 시스템은 이전 상호작용들의 지식을 수집하고 이러한 지식에 기초하여 예측된 수신자들을 제안한다. 사용자가 다른 사용자들과 상호작용하였던 시기, 장소, 및 방법을 나타내는 정보를 갖는 지식은 상호작용 이력 데이터베이스 내에 저장될 수 있다. 시스템은 수신자들(예컨대, 사람들)을, 특정 컨텍스트를 고려하여 그들과 상호작용하기 위한 메커니즘과 함께 추천할 수 있다. 컨텍스트는 시간, 위치, 및 계정 식별자(예컨대, 이메일 계정)를 나타내는 상태 변수들의 관점에서 기술될 수 있다. 컨텍스트는 또한, 키워드들(예컨대, 이메일 제목 또는 캘린더 이벤트 제목으로부터의 키워드들), 및 예를 들어, 사용자가 과거에 상호작용하였던 수신자들의 세트와 같은 다른 요인들에 기초할 수 있다. 특정 사용자들, 계정들, 애플리케이션들(예컨대, 통신 애플리케이션들), 또는 상호작용의 메커니즘들에 제안들을 한정하는 것을 돕기 위해 추가적인 제약들이 부과될 수 있다.
실시예들은 이벤트 및 컨텍스트에 기초하여 컴퓨팅 디바이스와 연락할 하나 이상의 수신자들을 제안하기 위한 시스템들, 방법들, 및 장치들을 제공할 수 있다. 예시적인 이벤트들은, 검색을 시작하기 위한 입력을 수신하는 것, 이메일 애플리케이션에 액세스하기 위한 입력을 수신하는 것, 이메일의 구성, 텍스트 메시징 애플리케이션에 액세스하기 위한 입력을 수신하는 것, 텍스트 메시지의 구성, 캘린더 애플리케이션에 액세스하기 위한 입력을 수신하는 것, 캘린더 엔트리의 생성, 캘린더 엔트리를 편집하는 것, 전화 통화의 시작, 비디오 통화의 시작, 및 화상 회의의 시작을 포함한다. 예시적인 컨텍스트들은 위치 및 시간을 포함한다. 실시예들은, 사용자가 (예컨대, 집에서, 직장에 통근하면서, 직장에서 등) 통신을 시작하거나 구성하기 위해 사용하고 있는 디바이스의 컨텍스트에 기초하여 통신의 수신자들을 예측할 수 있다. 예를 들어, 통신에 관해 알려진 정보(예컨대, 통신이 이메일, 인스턴트 메시지, 텍스트 메시지, 화상 회의, 또는 캘린더 초대인지 여부)에 기초하여, 통신을 위한 수신자들이 예측된다. 통신들을 위한 수신자들은 또한 이전 통신들에 기초하여 예측된다. 예를 들어, 사용자가 이전 이메일들, 메시지들, 또는 통화들을 통해 과거에 상호작용하였던 사용자들 또는 연락처들이 통신을 위한 수신자들로서 제안될 수 있다.
실시예들은, 컨텍스트 정보를 사용하여, 사용자가 소정 시간 및 장소에서 상호작용하기를 원할 수 있는 사람들을 예측함으로써 연락할 수신자들을 제안하기 위한 방법들을 제공할 수 있다. 일부 실시예들은, 디바이스(예컨대, 모바일 디바이스)의 사용자가 애플리케이션에서 통신을 구성하거나 시작함에 따라 현재 상태를 나타내는 현재 컨텍스트를 결정한다. 실시예들에서, 현재 컨텍스트는, 시간, 위치, 다음 캘린더 엔트리, 통신의 제목 또는 주제(예컨대, 이메일 제목 또는 캘린더 엔트리 제목), 유사한 통신의 이전 수신자, 및 계정 정보(예컨대, 개인 이메일 계정 또는 직장 이메일 계정)와 같은 컨텍스트 정보를 포함할 수 있다. 일부 실시예들은 현재 컨텍스트를 사용하여, 사용자가 통신의 수신자로서 추가할 가장 가능성 있는 수신자가 누구인지를 예측한다.
다른 실시예들은 본 명세서에 기술된 방법들과 연관된 시스템들, 휴대용 소비자 디바이스들, 및 컴퓨터 판독가능 매체들에 관련된다.
본 발명의 실시예들의 본질 및 이점들의 더 나은 이해가 하기의 상세한 설명 및 첨부 도면을 참조하여 얻어질 수 있다.
사람 중심의 예측에 대한 상세한 설명
실시예들은 컴퓨팅 디바이스의 사용자에게 수신자들을 제안하기 위한 개인맞춤화되고 주문맞춤화된 경험을 제공함으로써, 다른 사용자들과 상호작용 및 통신하기 위한 디바이스의 사용을 더 용이하게 할 수 있다. 실시예들은 사람 중심의 예측을 사용하여 연락할 수신자들을 제안하기 위한 방법들을 제공할 수 있다. 사람 중심의 예측은, 컨텍스트 정보를 사용하여, 사용자가 소정 시간 및 장소에서 상호작용하기를 원할 수 있는 사람들을 예측한다. 컴퓨팅 디바이스의 사용자는 다른 사용자들(예컨대, 연락처들)의 세트와 상호작용 및 통신할 수 있다. 컴퓨팅 디바이스의 예들은 전화, 태블릿, 랩톱, 또는 데스크톱 컴퓨터이다. 다른 사용자들과의 상호작용들 및 통신들은 특정 이벤트들 이후에 발생할 수 있다. 예시적인 이벤트들은 검색을 시작하는 것, 통신 애플리케이션에 액세스하는 것, 및 통신을 구성하거나 시작하는 것을 포함한다. 예시적인 통신 애플리케이션들은 이메일 애플리케이션, 캘린더 애플리케이션, 비디오 통화 애플리케이션, 인스턴트 메시지 애플리케이션, 텍스트 메시지 애플리케이션, 화상 회의 애플리케이션, 웹 회의 애플리케이션, 및 음성 통화 애플리케이션을 포함한다. 예시적인 통신들은, 예를 들어, 이메일 메시지, 캘린더 초대, 텍스트 메시지, 인스턴트 메시지, 비디오 통화, 음성 통화, 및 화상 회의와 같은 음성 및 데이터 통신들을 포함한다. 통신 애플리케이션이 디바이스 상에서 사용될 때, 디바이스의 현재 컨텍스트를 이력 정보와 비교하는 것에 기초하여 통신들의 수신자들이 제안될 수 있다.
실시예들에서, 과거의 상호작용들 이력으로부터의 데이터가 데이터베이스의 테이블들에 저장되고, 통신들의 수신자들을 제안하는 데 사용된다. 데이터베이스는, 예를 들어, 타임스탬프들, 상호작용들을 위해 사용된 애플리케이션들, 계정 정보(예컨대, 이메일 계정에 대한 계정 식별자), 및 위치와 같은 과거의 상호작용들에 대한 컨텍스트 정보를 포함할 수 있다. 과거의 상호작용들을 디바이스의 컨텍스트와 비교하여, 디바이스 상에서 시작되는 통신을 위한 수신자들을 제안할 수 있다. 예를 들어, 디바이스의 현재 컨텍스트를 상호작용 데이터 이력과 비교하여, 현재 컨텍스트를 이전 수신자들과의 유사한 과거의 상호작용들에 매칭시킬 수 있다.
데이터 이력에서의 각각의 데이터 점(예컨대, 레코드)은 특정 컨텍스트에 대응할 수 있는데(예컨대, 디바이스의 하나 이상의 특성들에 대응함), 이때 특정 컨텍스트에 대해 점점 더 많은 데이터가 시간 경과에 따라 획득된다. 특정 이벤트에 대한 이러한 데이터 이력은 사용자에게 수신자들을 제안하기 위해 사용될 수 있다. 상이한 사용자들이 상이한 데이터 이력을 가질 것이기 때문에, 실시예들은 개인맞춤화된 경험을 제공할 수 있다.
일부 실시예들에서, 이전의 유사한 통신들을 위한 수신자들이, 구성되거나 시작되는 통신을 위한 수신자들을 제안하는 데 사용된다. 예를 들어, 사용자가 현재 통신을 위한 제1 수신자를 선택하는 경우, 선택된 제1 수신자와의 과거의 통신들에 추가된 다른 수신자들이 현재 통신을 위한 추가 수신자들을 예측하는 데 사용될 수 있다. 일 실시예에서, 수신자들은 상호작용들의 주기성을 나타내는 컨텍스트 데이터(예컨대, 유사한 하루 중 시간 또는 동일한 요일에 반복적으로 전송된 통신들)에 기초하여 제안될 수 있다. 수신자들은 또한, 사용자의 현재 위치가, 과거의 통신들이 소정의 연락처들로 전송되었을 때에 사용자가 있었던 위치와 유사하다는 것을 나타내는 위치 정보에 기초하여 제안될 수 있다.
실시예들에서, 사용자-공급된 정보가 수신자들을 예측하는 데 사용될 수 있다. 사용자-공급된 정보는 이메일 제목, 이메일의 콘텐츠, 캘린더 엔트리 제목, 이벤트 시간, 및/또는 사용자-선택된 수신자를 포함할 수 있다. 그러한 사용자-공급된 정보를 컨텍스트 정보 이력과 비교하여 수신자들을 예측할 수 있다. 예를 들어, 사용자-공급된 정보와 유사한 특징들을 갖는 과거의 통신들의 수신자들은 현재 통신의 제안된 수신자들로서 사용자에게 제시될 수 있다. 일부 실시예들은 사용자가 통신에 입력하였던 정보(예컨대, 사용자가 제목 또는 첨부물을 포함한 경우)를 사용하여, 그러한 정보가 잠재적 수신자들의 식별과 관련이 있다고 결정할 수 있다. 예를 들어, 실시예들은 그러한 정보가 이용가능한 경우 잠재적 수신자들을 제안하는 것과 관련이 있을 수 있는 하나 이상의 키워드들을 식별하기 위해 이메일 메시지 또는 캘린더 엔트리의 제목을 파싱할 수 있다.
정확한 개인맞춤화된 경험을 제공하기 위하여, 다양한 실시예들은, 수신자 제안들을 제공하지 않고서 간단히 훈련되거나 또는 다양한 컨텍스트들에 대해 수신자(들)의 동일한 세트를 제안하는 광대한 모델로 시작할 수 있다. 충분한 데이터 이력에 의하면, 광대한 모델은 서브모델들로, 예컨대, 사람들 또는 상호작용들의 그룹으로서 세그먼트화될 수 있는데, 이때 각각의 서브모델은 상호작용 데이터 이력의 상이한 서브세트에 대응한다. 이어서, 이벤트가 발생할 때, 디바이스의 현재 컨텍스트에 대응하는 하나 이상의 제안된 수신자들을 제공하기 위한 특정 서브모델이 선택될 수 있다. 서브모델을 언제 생성할지를 결정하기 위해 다양한 기준들, 예컨대 데이터 이력의 서브세트에서의 정확한 예측 및 부모 모델에 대한 데이터 이력의 분포에서의 정보 이득(엔트로피 감소)을 제공하는 서브모델에서의 신뢰도 레벨이 사용될 수 있다.
따라서, 일부 실시예들은 수신자 추천들의 맥락에서 데이터 이력을 세그먼트화하는 시기 및 방법을 결정할 수 있다. 예를 들어, 일정 기간의 사용자 상호작용 활동을 수집한 후에, 실시예들은 가능한 세그먼트화 후보들(예컨대, 위치, 요일, 하루 중 시간 등)의 목록을 누적할 수 있다. 실시예들은 또한 전체 데이터세트에 대해 모델을 훈련시키고 데이터세트 및 모델의 결합 분포에서 신뢰도의 메트릭을 산출할 수 있다. 세그먼트화된 데이터세트들(즉, 서브세트들) 각각에 대해 하나씩 모델들의 세트가 훈련될 수 있고, 이어서 데이터 모델 분포들 각각의 신뢰도를 측정할 수 있다. 모든 데이터 모델 분포들의 신뢰도가 허용가능한 경우, 실시예들은 세그먼트화(분할)를 수행하고 이어서 세그먼트화된 공간들을 추가 세그먼트화들을 위해 재귀적으로 검사할 수 있다.
이러한 방식으로, 일부 실시예들은 세그먼트화와 일반화 사이의 절충을 탐구하기 위해 추론을 사용할 수 있는데, 이는 보다 명확하고 복잡한 패턴들을 갖는 사용자들의 경우 보다 복잡한 모델들을 그리고 잡음이 더 많고 보다 간단한 패턴들을 갖는 사용자들의 경우 간단하고 일반적인 모델들을 생성한다. 그리고, 일부 실시예들은 잠재적 후보 모델들 중에서 발산 분포들을 발견하는 것에 기초하여 확률 모델들의 트리를 생성할 수 있다.
I. 이벤트에 기초한 수신자 제안
실시예들은 이벤트에 기초하여 하나 이상의 수신자들을 제안할 수 있는데, 이는 소정의 미리결정된 이벤트들(트리거링 이벤트들로도 지칭됨)로 제한될 수 있다. 예시적인 트리거링 이벤트들은 검색을 시작하는 것, 이메일 메시지를 구성하는 것, 캘린더 엔트리를 생성하는 것 등을 포함할 수 있다. 예를 들어, 사용자가 소정의 이메일 계정을 사용하여 이전에 이메일 전송하였던 연락처가, 사용자가 그 이메일 계정을 사용하여 이메일을 구성하기 시작할 때 제안될 수 있다. 일부 실시예들에서, 사용자에게 제안할 수신자를 식별하기 위해 컨텍스트 정보가 이벤트와 함께 사용될 수 있다. 일례로서, 캘린더 엔트리(예컨대, 캘린더 이벤트, 모임, 또는 약속)가 생성 또는 수정되고 있을 때, 위치에 관한 컨텍스트 정보가 사용될 수 있다. 디바이스가 사무실 위치에 있는 경우, 예를 들어, 그 위치에 사무실을 갖는 수신자 A가 캘린더 이벤트에 대한 초대받은 사람으로서 제안될 수 있다. 대안적으로, 디바이스가 집에 있는 경우, 집 위치와 연관된 수신자 B(즉, 가족 구성원 또는 룸메이트)가 캘린더 엔트리에 대한 초대받은 사람으로서 제안될 수 있다. 따라서, 소정의 컨텍스트들 하에서 관련이 있는 것으로 예측되는 수신자들이 적절한 시기에 제안되어서, 그에 따라 사용자 경험을 향상시킬 수 있다. 다른 예로서, 캘린더 엔트리가 생성 또는 수정을 위해 열릴 때, 시간에 관한 컨텍스트 정보가 사용될 수 있다. 캘린더 엔트리에 대한 스케줄링된 시작 시간이 사용자의 전형적인 근무 시간에 대응하는 경우, 직장동료인 수신자 A가 캘린더 이벤트에 대한 초대받은 사람으로서 제안될 수 있다. 대안적으로, 캘린더 엔트리가 저녁 또는 주말에 대응하는 시작 시간을 갖는 경우, 친구 또는 가족 구성원인 수신자 B가 캘린더 이벤트에 대한 초대받은 사람으로서 제안될 수 있다.
도 37a은 본 발명의 실시예들에 따른, 검출된 이벤트에 기초하여 수신자를 제안하기 위한 방법(37_100)의 흐름도이다. 방법(37_100)은 모바일 디바이스(예컨대, 전화, 태블릿) 또는 비-모바일 디바이스에 의해 수행될 수 있고 디바이스의 하나 이상의 사용자 인터페이스들을 사용할 수 있다.
블록(37_102)에서, 사용자 디바이스에서의 사용자 입력이 검출된다. 일부 실시예들에서, 입력이 수신자들을 제안하기 위한 트리거링 이벤트에 대응하는지 여부가 결정될 수 있다. 일부 구현예들에서, 하나 이상의 제안된 수신자(들)의 결정은 소정의 미리결정된 이벤트들(예컨대, 트리거링 이벤트들)에 대해서만 이루어진다. 다른 구현예들에서, 하나 이상의 제안된 수신자(들)의 결정은 이벤트들의 동적 목록에 대해 이루어질 수 있는데, 이는 사용자 디바이스를 사용하여 이루어진 사용자 상호작용들 이력에 기초하여 업데이트될 수 있다.
일부 실시예들에서, 트리거링 이벤트는 디바이스의 통신 애플리케이션의 동작에 상관할 가능성이 충분히 있는 것으로 식별될 수 있다. 트리거링 이벤트들인 이벤트들의 목록은 디바이스 상에 저장될 수 있다. 그러한 이벤트들은 디폴트 목록일 수 있고 운영 체제의 일부로서 유지될 수 있고, 사용자에 의해 구성가능하거나 구성가능하지 않을 수 있다.
트리거링 이벤트는 사용자 및/또는 외부 디바이스에 의해 유도된 이벤트일 수 있다. 예를 들어, 트리거링 이벤트는 입력이 모바일 디바이스에 수신될 때일 수 있다. 예들은, 검색을 시작하기 위한 입력을 수신하는 것, 통신 애플리케이션에 액세스하기 위한 입력을 수신하는 것 등을 포함한다. 이 예에서, 이러한 이벤트들 각각은 상이한 트리거링 이벤트로서 분류될 수 있다. 다른 예들로서, 트리거링 이벤트는 디바이스와의 사용자의 특정 상호작용일 수 있다. 예를 들어, 사용자는 디바이스 상에서 검색을 시작하거나, 디바이스 상에서 통신 애플리케이션에 액세스하거나, 또는 디바이스 상에서 통신 메시지를 구성하기 시작할 수 있다. 또한, 예를 들어, 사용자는 모바일 디바이스를 직장 위치로 움직일 수 있는데, 여기서 디바이스의 위치 상태가 트리거링 이벤트이다. 그러한 위치 상태(또는 다른 상태들)는 디바이스의 센서들에 기초하여 결정될 수 있다.
블록(37_104)에서, 디바이스의 현재 상태를 나타내는 컨텍스트 정보가 결정된다. 일례에서, 컨텍스트 정보는 디바이스 상에서 실행되는 애플리케이션을 나타낼 수 있다. 예를 들어, 컨텍스트 정보는 통신을 시작하는 데 사용되는 통신 애플리케이션의 상태를 나타낼 수 있다. 컨텍스트 정보는 또한 검색을 시작하는 데 사용되는 검색 애플리케이션의 상태를 나타낼 수 있다. 일례로서, 블록(37_104)은, 디바이스 상에서 사용되는 통신 애플리케이션에 대응하는 시간, 계정 정보(예컨대, 이메일 계정 식별자), 및/또는 위치를 결정하는 것을 포함할 수 있다. 블록(37_104)은 또한 디바이스의 하위상태(sub-state)를 결정하는 것을 포함할 수 있는데, 하위상태는 실행 중인 애플리케이션의 애플리케이션 상태이다. 예를 들어, 애플리케이션 상태는, 이메일 메시지를 구성하는 데 사용되는 이메일 애플리케이션의 상태, 캘린더 이벤트를 생성하는 데 사용되는 캘린더 애플리케이션의 상태, 인스턴트 메시지를 시작하는 데 사용되는 인스턴트 메시징 클라이언트의 상태, 텍스트 메시지를 구성하는 데 사용되는 애플리케이션의 상태, 또는 전화 통화, 비디오 통화, 또는 화상 회의를 시작하는 데 사용되는 애플리케이션의 상태를 나타낼 수 있다.
컨텍스트 정보는 소정의 컨텍스트에 대해 디바이스의 하나 이상의 특성들을 특정할 수 있다. 컨텍스트는 트리거링 이벤트가 수신될 때의 디바이스의 주위 환경(컨텍스트의 유형)일 수 있다. 예를 들어, 컨텍스트 정보는 이벤트가 검출되는 하루 중 시간일 수 있다. 다른 예에서, 컨텍스트 정보는 이벤트가 검출될 때의 디바이스의 소정의 위치일 수 있다. 또 다른 예에서, 컨텍스트 정보는 트리거링 이벤트가 검출되는 시기의 일년 중 소정의 하루일 수 있다. 그러한 컨텍스트 정보는 디바이스의 컨텍스트에 관한 보다 의미있는 정보를 제공할 수 있어서, 제안 엔진이 그 컨텍스트에서 사용자에 의해 선택될 가능성이 있는 수신자를 정확하게 제안할 수 있도록 한다. 따라서, 예측 엔진이 컨텍스트 정보를 이용함으로써, 컨텍스트 정보가 이용되지 않았던 경우보다 사용자에게 수신자를 보다 정확하게 제안할 수 있다.
블록(37_106)에서, 사용자와 다른 사용자들 사이의 과거의 상호작용들을 나타내는 데이터 이력이 인출된다. 인출은 컨텍스트 정보에 기초한다. 예를 들어, 블록(37_106)은, 과거의 이메일들, 메시지들, 전화 통화들, 캘린더 엔트리들, 비디오 통화들, 및 화상 회의들에 대응하는 데이터를 인출하는 것을 포함할 수 있다. 데이터 이력은 사용자 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 테이블들로부터 인출될 수 있는데, 여기서 테이블들 각각은 사용자 디바이스의 상이한 디바이스 하위상태에 대응하고, 상이한 수신자들에 대한 이전 통신들의 복수의 연락처 측정치(contact measure)들을 포함한다. 일례로서, 블록(37_106)은, 하나 이상의 상태 변수들을 사용하여 하나 이상의 상태 변수들에 대응하는 테이블들의 제1 세트를 식별하는 것, 및 이어서 테이블들의 제1 세트로부터 하나 이상의 잠재적 수신자들에 대한 연락처 측정치들을 획득하는 것을 포함할 수 있다.
블록(37_108)에서, 컨텍스트 정보가 데이터 이력과 비교된다. 블록(37_108)은, 블록(37_106)에서 식별된 테이블들의 제1 세트에 질의하여, 테이블들의 그 세트에서의 데이터 이력과 컨텍스트 정보 사이의 상관관계들을 결정하는 것을 포함할 수 있다.
블록(37_110)에서, 통신을 위한 하나 이상의 수신자들이 예측된다. 도 37a에 도시된 바와 같이, 수신자는 블록(37_108)에서 수행된 비교에 기초하여 예측된다. 일례로서, 사용자 디바이스가 직장 위치에 있는 동안 이메일이 근무 시간 중에 직장 이메일 계정을 사용하여 구성되고 있을 때 직장 이메일 주소를 갖는 이전에 사용된 연락처가 예측된 수신자로서 식별될 수 있다. 일부 실시예들에서, 하나 초과의 수신자가 식별될 수 있다.
블록(37_110)은 예측 엔진 또는 예측 모델을 사용하여 예측된 수신자들을 식별할 수 있다. 예를 들어, 특정 트리거링 이벤트에 대해 예측 모델이 선택될 수 있다. 예측 모델은 컨텍스트 정보를 사용하여 수신자(들)를 식별할 수 있는데, 예컨대, 상이한 수신자들과의 상호작용들 또는 통신들은 상이한 컨텍스트들에 있을 가능성이 더 클 수 있다. 일부 실시예들은, 예컨대 디바이스를 사용하는 동안 수신자들과의 사용자의 상호작용들 이력으로부터 결정되는 바와 같이, 제안된 수신자들이 사용자에 의해 선택될 확률이 충분할 때에만 수신자들을 제안할 수 있다. 상호작용들 이력의 예들은, 사용자가 이메일 애플리케이션, 텍스트 메시징(예컨대, SMS-기반 메시징), 인스턴트 메시징 애플리케이션, 및 화상 회의 애플리케이션을 사용하여 수신자들과 교환한 통신들의 적어도 일부분들을 포함할 수 있다.
일부 실시예들에서, 과거의 통신들 및 상호작용들에 기초한 사회적 요소(social element)가 수신자들을 예측하는 데 사용될 수 있다. 예를 들어, 블록(37_106)에서 획득된 데이터 이력은 이전에 전송된 이메일들의 수신자들을 가중시키는 데 사용될 수 있다. 사회적 요소는, 사용자 디바이스의 사용자와 사용자의 통신들의 과거의 수신자들의 그룹들(예컨대, 연락처들 및 연락처들의 그룹들) 사이의 상호작용 데이터 이력을 반영한다. 동시 발생들(즉, 수신자들의 동일한 그룹으로 전송된 통신들)이 이메일 수신자들을 예측하는 데 사용될 수 있다. 예를 들어, 사회적 요소는 사용자가 이메일 전송한 각각의 수신자를 가중시킬 수 있는데, 이때 수신자들의 그룹(예컨대, CC 목록 또는 연락처들의 정의된 그룹) 내에 반복적으로 포함되었던 수신자들에게는 보다 높은 가중치들이 할당된다. 수신자들은 그들 각각의 이메일 주소들에 의해 데이터 이력 내에서 고유하게 식별될 수 있다. 사회적 요소 가중치는 수신된 이메일들과 비교할 때 전송된 이메일 메시지들에 대해 더 높을 수 있다. 사회적 요소는 또한 사용자가 이메일 메시지들을 전송하기 위해 사용한 이메일 계정(예컨대, 개인 계정 또는 직장 계정)에 기초하여 가중될 수 있다. 컨텍스트 정보가 이메일이 구성되고 있음을 나타낼 때, 사회적 요소는 과거의 이메일 메시지들에 대한 수신자들의 동시 발생을 식별하는 데 사용될 수 있다. 이러한 동시 발생들은 결국, 특히 사용자가 과거의 이메일 메시지들에서의 수신자들의 그룹 내에 포함되었던 수신자를 선택할 때, 구성되는 이메일의 수신자들을 예측하기 위해 사용될 수 있다.
블록(37_112)에서, 하나 이상의 예측된 수신자들의 표시가 사용자에게 제공된다. 블록(37_112)은, 사용자 디바이스 상에서 실행 중인 통신 애플리케이션 내에서, 또는 사용자 디바이스의 사용자 인터페이스에서 하나 이상의 예측된 수신자들의 목록을 제시하는 것을 포함할 수 있다. 일부 실시예들에서, 블록(37_112)에서, 실행 중인 애플리케이션과 관련한 액션이 수행될 수 있다. 일 실시예에서, 액션은 사용자가 예측된 수신자들 중 하나 이상을 선택하는 사용자 인터페이스의 디스플레이일 수 있다. 사용자 인터페이스는 다양한 방식으로, 예컨대 디바이스의 화면 상에 디스플레이함으로써, 표면 상으로 투영함으로써, 또는 오디오 인터페이스를 제공함으로써 제공될 수 있다.
다른 실시예들에서, 애플리케이션이 구동될 수 있고, 애플리케이션에 특정한 사용자 인터페이스가 사용자에게 제공될 수 있다. 수신자, 예컨대 통신의 잠재적 수신자를 식별하는 것에 응답하여 사용자 인터페이스들 중 어느 하나가 제공될 수 있다. 다른 구현예들에서, 애플리케이션과 상호작용하기 위한 사용자 인터페이스는 사용자가 (예컨대, 패스워드 또는 생체측정에 의해) 인증된 후에 제공될 수 있지만, 그러한 사용자 인터페이스는 단지 홈 화면보다 더 구체적일 것인데, 그러한 인터페이스는 제안된 수신자들의 목록을 갖는다.
II. 수신자 예측을 시작하는 이벤트
트리거링 이벤트들은 사용자에게 제공할 하나 이상의 수신자들의 식별을 트리거하는 이벤트들의 미리결정된 세트일 수 있다. 이벤트들은 디바이스 컴포넌트들에 의해 생성된 신호들을 사용하여 검출될 수 있다. 트리거링 이벤트들이 검출되는 방식의 상세사항들이 도 37b를 참조하여 아래에서 더욱 상세하게 논의된다.
도 37b는 본 발명의 실시예들에 따른, 트리거링 이벤트를 결정하기 위한 검출 시스템(37_200)의 단순화된 블록도를 예시한다. 검출 시스템(37_200)은 트리거링 이벤트가 결정되고 있는 디바이스 내에 상주할 수 있다. 도시된 바와 같이, 검출 시스템(37_200)은 복수의 상이한 이벤트들을 검출할 수 있다. 검출된 이벤트들 중 하나 이상은 검출 시스템(37_200)에 의해 트리거링 이벤트들이라고 결정될 수 있다. 다른 프로세싱 모듈들은 이어서 트리거링 이벤트를 사용하여 프로세싱을 수행할 수 있다.
A. 이벤트의 검출
실시예들에서, 검출 시스템(37_200)은 트리거링 이벤트들을 검출하기 위한 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 일례로서, 검출 시스템(37_200)은 복수의 입력 디바이스들, 예컨대 입력 디바이스들(37_202)을 포함할 수 있다. 입력 디바이스들(37_202)은 이벤트에 응답하여 신호를 생성할 수 있는 임의의 적합한 디바이스일 수 있다. 예를 들어, 입력 디바이스들(37_202)은, 디바이스 연결 이벤트들, 사용자 상호작용 이벤트들, 및 위치 이벤트들을 각각 검출할 수 있는 사용자 상호작용 입력 디바이스들(37_204), 및 위치 입력 디바이스들(37_206)을 포함할 수 있다. 이벤트가 입력 디바이스에서 검출될 때, 입력 디바이스는 추가 분석을 위해 특정 이벤트를 나타내는 신호를 전송할 수 있다.
일부 실시예들에서, 컴포넌트들의 집합이 단일 이벤트에 기여할 수 있다. 예를 들어, 모션 센서들, GPS 위치 디바이스, 및 타임스탬프에 기초하여 사람이 직장으로 또는 직장으로부터 통근하고 있는 것이 검출될 수 있다.
1. 사용자 상호작용 이벤트
사용자 상호작용 입력 디바이스들(37_204)이 사용자 상호작용 이벤트들을 검출하는 데 이용될 수 있다. 사용자 상호작용 이벤트들은 사용자가 디바이스와 상호작용할 때 발생할 수 있다. 일부 실시예들에서, 사용자는 사용자 상호작용 입력 디바이스들(37_204) 중 하나의 사용자 상호작용 입력 디바이스를 통해 애플리케이션의 디스플레이된 사용자 인터페이스에 입력을 제공할 수 있다. 다른 실시예들에서, 사용자 인터페이스는 디스플레이되지 않을 수 있지만, 예컨대, 사용자가 디바이스를 흔들거나 또는 일부 다른 유형의 제스처를 제공하는 것을 통해, 여전히 사용자에게 액세스가능하다. 추가로, 상호작용은, 예컨대, 상태 엔진이 디바이스의 센서들로부터의 값들을 사용할 때, 사용자 인터페이스를 포함하지 않을 수 있다.
사용자 인터페이스의 임의의 적합한 디바이스 컴포넌트가 사용자 상호작용 입력 디바이스(37_204)로서 사용될 수 있다. 적합한 사용자 상호작용 입력 디바이스들의 예들은 버튼(37_208)(예컨대, 홈 또는 전원 버튼), 터치 스크린(37_210), 카메라(37_212), 가속도계(37_214), 마이크로폰(37_216), 및 마우스(37_218)이다. 예를 들어, 모바일 디바이스의 버튼(37_208), 예컨대 홈 버튼, 전원 버튼, 볼륨 버튼 등이 사용자 상호작용 입력 디바이스(37_204)일 수 있다. 또한, 무음 모드 스위치와 같은 스위치가 사용자 상호작용 입력 디바이스(37_204)일 수 있다. 또한, 예를 들어, 모바일 디바이스의 마이크로폰(37_216), 예컨대 음성 커맨드들을 검출하도록 구성된 통합된 마이크로폰이 사용자 상호작용 입력 디바이스(37_204)일 수 있다. 추가로 예를 들어, 마우스(37_218) 또는 스타일러스와 같은 포인팅 디바이스가, 통신 애플리케이션에 사용자 입력들을 제공하는 데 사용되는 사용자 상호작용 입력 디바이스(37_204)일 수 있다.
사용자가 디바이스와 상호작용할 때, 사용자가 사용자 입력을 애플리케이션에 제공하였음이 결정될 수 있고, 대응하는 트리거링 이벤트가 생성될 수 있다. 그러한 이벤트는 디바이스의 현재 상태, 예컨대, 디바이스가 위치되는 장소 또는 이벤트가 발생하는 시기에 의존할 수 있다. 즉, 트리거링 이벤트는 디바이스의 위치 상태(예컨대, 직장 위치에서) 및 시간 컨텍스트(예컨대, 평일 아침)와 함께 사용자 상호작용 입력 디바이스(37_204)로부터의 입력에 부분적으로 기초하여 생성될 수 있다. 그러한 정보는 또한 이벤트가 트리거 이벤트인지 여부를 결정할 때 사용될 수 있다.
터치 스크린(37_210)은 사용자가 디스플레이 화면을 통해 사용자 입력을 제공하도록 할 수 있다. 예를 들어, 사용자는 사용자 입력 신호를 생성하기 위해 디스플레이를 가로질러 그의 또는 그녀의 손가락을 스와이프할 수 있다. 사용자가 그 액션을 수행할 때, 대응하는 트리거링 이벤트(37_228)가 검출될 수 있다.
가속도계(37_218) 또는 다른 모션 센서들은, (예컨대, 자이로미터 또는 나침반을 사용하여) 흔들림 및 기울임과 같은, 모바일 디바이스의 움직임을 검출하는 수동 컴포넌트들일 수 있다. 모바일 디바이스의 그러한 움직임은 이벤트 관리자(37_230)에 의해 검출될 수 있는데, 이벤트 관리자는 그 움직임이 특정 유형의 것이라고 결정할 수 있다. 이벤트 관리자(37_230)는 디바이스의 주어진 상태에서 사용자 상호작용 이벤트의 특정 유형에 대응하는 이벤트 신호(37_232)를 생성할 수 있다. 디바이스의 상태는 상태 엔진에 의해 결정될 수 있는데, 그의 추가 상세사항들은 발명의 명칭이 "Activity Detection"인 미국 특허 공개 제2012/0310587호 및 발명의 명칭이 "Determining Exit From A Vehicle"인 미국 특허 공개 제2015/0050923호에서 발견될 수 있고, 이들의 개시내용은 전체적으로 참고로 포함된다.
일례는, 사용자가 달리고 있을 때, 가속도계가 흔들림을 감지하고, 이벤트 관리자(37_230)에 제공될 신호를 생성할 수 있다는 것이다. 이벤트 관리자(37_230)는 가속도계 신호를 분석하여 이벤트의 유형을 결정할 수 있다. 일단 이벤트의 유형이 결정되면, 이벤트 관리자(37_230)는 이벤트의 유형에 대응하는 이벤트 신호(37_232)를 생성할 수 있다. 모바일 디바이스는 사용자가 달리고 있음을 나타내는 방식으로 움직일 수 있다. 따라서, 이러한 특정 사용자 상호작용은 달리기 이벤트로서 식별될 수 있다. 이벤트 관리자(37_230)는 이어서, 달리기 이벤트가 검출되었음을 나타내는 이벤트 신호(37_232)를 생성 및 전송할 수 있다.
2. 위치 이벤트
위치 입력 디바이스들(37_206)은 위치 이벤트들을 생성하는 데 사용될 수 있다. 위치 이벤트들이 수신자의 제안을 트리거하기 위해 사용자 상호작용 이벤트들과 조합하여 사용될 수 있다. 임의의 적합한 포지셔닝 시스템이 위치 이벤트들을 생성하는 데 사용될 수 있다. 예를 들어, 글로벌 포지셔닝 시스템(GPS)이 위치 이벤트들을 생성하는 데 사용될 수 있다. 위치 이벤트들은 특정 지리적 위치에 대응하는 이벤트들일 수 있다. 일례로서, 모바일 디바이스가 특정 위치에 도착하는 경우, GPS 컴포넌트는 위치 이벤트에 대응하는 입력 신호를 생성할 수 있다.
B. 트리거링 이벤트의 결정
도 37b에 추가로 예시된 바와 같이, 입력 디바이스들(37_202)은 검출된 이벤트(37_222)를, 예컨대, 대응하는 이벤트들 중 임의의 이벤트의 결과로서 출력할 수 있다. 검출된 이벤트는, 어느 입력 디바이스가 검출된 이벤트(37_222)에 대한 신호, 즉, 특정 이벤트에 대한 하위유형(예컨대, 어떤 유형의 헤드폰들 또는 어떤 유형의 데이터 연결)을 전송하고 있는지에 관한 정보를 포함할 수 있다. 그러한 정보는 검출된 이벤트(37_222)가 트리거링 이벤트인지 여부를 결정하기 위해 사용될 수 있고, 제안된 수신자에 대해 어느 예측 모델을 사용할지 또는 어떤 액션을 수행할지(예컨대, 이메일을 구성, 캘린더 초대를 생성, 음성 또는 비디오 통화를 시작할지)를 결정하기 위해 추후 모듈들로 전달될 수 있다.
검출된 이벤트(37_222)는 이벤트 관리자(37_230)에 의해 수신될 수 있다. 이벤트 관리자(37_230)는 입력 디바이스들(37_202)로부터 신호들을 수신하고, 어떤 유형의 이벤트가 검출되는지를 결정할 수 있다. 이벤트의 유형에 따라, 이벤트 관리자(37_230)는 신호들(예컨대, 이벤트 신호(37_232))을 상이한 엔진들로 출력할 수 있다. 상이한 엔진들은 그들의 기능들에 대해 중요한 특정 이벤트 신호들(37_232)을 수신하기 위해 이벤트 관리자(37_230)와의 가입을 가질 수 있다. 예를 들어, 트리거링 이벤트 엔진(37_224)은 입력 디바이스들(37_202)로부터 검출된 이벤트들(37_222)에 응답하여 생성된 이벤트 신호들(37_232)을 수신하도록 가입될 수 있다. 이벤트 신호들(37_232)은 검출된 이벤트들(37_222)로부터 결정되는 이벤트의 유형에 대응할 수 있다.
트리거링 이벤트 엔진(37_224)은 검출된 이벤트(37_222)가 트리거링 이벤트인지 여부를 결정하도록 구성될 수 있다. 이러한 결정을 행하기 위해, 트리거링 이벤트 엔진(37_224)은, 트리거링 이벤트 엔진(37_224)에 결합될 수 있는 지정된 트리거링 이벤트 데이터베이스(37_226)를 참조할 수 있다. 지정된 트리거링 이벤트 데이터베이스(37_226)는 트리거링 이벤트들로서 지정되는 미리결정된 이벤트들의 목록을 포함할 수 있다.
트리거링 이벤트 엔진(37_224)은 수신된 검출된 이벤트(37_222)를 미리결정된 이벤트들의 목록과 비교하고, 검출된 이벤트(37_222)가 지정된 트리거링 이벤트 데이터베이스(37_226)에 열거되는 미리결정된 이벤트에 매칭되는 경우 트리거링 이벤트(37_228)를 출력할 수 있다. 일례로서, 미리결정된 이벤트들의 목록은 (1) 통신 애플리케이션에 액세스하는 것, (2) 검색을 시작하는 것, (3) 통신을 구성하는 것, (4) 디바이스의 소정 유형의 움직임을 감지하는 것, 및 (5) 소정 위치에 도착하는 것 중 임의의 하나 이상을 포함할 수 있다. (5)의 경우, 지정된 트리거링 이벤트 데이터베이스(37_226)는 소정 위치의 스펙들을 포함할 수 있다. 미리결정된 이벤트들 (1) 내지 (5) 각각의 경우, 이벤트들의 발생의 시간 또는 시간 범위가 지정된 트리거링 이벤트 데이터베이스(37_226) 내에 포함될 수 있다. 예를 들어, 지정된 트리거링 이벤트 데이터베이스(37_226)는, 오전 8시 내지 10시에 직장 위치에의 도착을 감지하는 것에 대응하는 지정된 트리거링 이벤트를 저장할 수 있다.
III. 제안된 수신자 결정
일단 트리거링 이벤트가 검출되면, 트리거링 이벤트에 기초하여 하나 이상의 잠재적인 수신자들이 식별될 수 있다. 일부 실시예들에서, 수신자(들)의 식별은 사전-프로그래밍된 액션이 아니다. 오히려, 수신자(들)의 식별은 추가 정보에 따라 변경될 수 있는 동적 액션일 수 있다. 예를 들어, 제안된 수신자(들)의 식별은 컨텍스트 정보 및/또는 사람 중심의 상호작용 이력 정보에 기초할 뿐만 아니라 다른 정보에도 기초하여 결정될 수 있다.
특정 트리거링 이벤트(예컨대, 디바이스 상의 이메일 클라이언트, 캘린더 애플리케이션, 인스턴트 메시징 애플리케이션, 또는 화상 회의 애플리케이션에 액세스하는 것)가 발생할 때마다, 디바이스는 어느 수신자(들)가 이벤트와 관련하여 통신의 수신자들로서 선택되는지를 추적할 수 있다. 특정 이벤트의 각각의 발생에 응답하여, 디바이스는 선택된 수신자에 대응하는 데이터 점, 애플리케이션을 사용하여 수행된 수신자와의 상호작용, 및 이벤트를 저장할 수 있다. 다양한 실시예들에서, 데이터 점들은 개별적으로 저장되거나 또는 집계될 수 있는데, 이때 특정 액션에 대한 카운트를 포함할 수 있는, 특정 수신자가 선택되는 횟수에 대한 카운트가 결정된다. 예를 들어, 수신자에게 전송된 이메일들의 수를 나타내는 카운트들은, 어느 이메일 계정이 이메일들을 전송하는 데 사용되었는지, 이메일들이 전송되었을 때의 시간들, 및 이메일들이 전송되었을 때의 디바이스의 위치를 나타내는 정보와 함께 저장될 수 있다. 이 예에서, 데이터 점들은 또한, 그 수신자가 이메일에 대한 제1 주소였던, 메일 그룹 또는 배포 목록(distribution list)의 일부로서 포함되었던, 복사되었던(예컨대, 카본 카피(carbon copied)/CC 또는 블라인드 카본 카피(blind carbon copied)/BCC) 횟수를 나타낼 수 있다. 따라서, 동일한 선택된 수신자에 대한 상이한 액션들에 대해 상이한 카운트들이 결정된다.
수신자들과의 이전 사용자 상호작용들 및 통신들을 나타내는 데이터 이력은, 주어진 수신자가 향후 통신의 수신자로서 제안되어야 하는지 여부를 예측하는 예측 모델에 대한 입력으로서 사용될 수 있다. 예를 들어, 수신자들을 예측/제안하기 위해 사용되는 데이터 이력은, 다른 사용자들과의 과거의 상호작용들(즉, 상호작용들 이력)의 레코드들을 포함할 수 있다. 그러한 상호작용들 이력의 예들은, 음성 통화들, 이메일들, 캘린더 엔트리들/이벤트들, 인스턴트 메시지들, 텍스트 메시지들(예컨대, SMS-기반 메시지들), 화상 회의들, 및 비디오 통화들을 포함한다. 예를 들어, 상호작용들 이력은, 과거의 음성 통화들에 대응하는 시간들, 지속기간들, 및 수신자들(전화 번호들에 의해 식별됨)을 나타내는 통화 이력을 포함할 수 있다. 또한, 예를 들어, 상호작용들 이력은, 과거의 이메일 메시지들에 대응하는 시간들, 주기성(예컨대, 일단위, 주단위), 및 수신자들(이메일 주소들에 의해 식별됨)을 나타내는 이메일 이력을 포함할 수 있다.
일단 특정 이벤트가 검출되면, 특정 이벤트에 대응하는 예측 모델이 선택될 수 있다. 예측 모델은 특정 이벤트에 대응하는 상호작용 데이터 이력을 훈련 절차에 대한 입력으로서 사용하여 결정될 것이다. 그러나, 데이터 이력은 많은 상이한 컨텍스트들(즉, 컨텍스트 정보의 상이한 조합들)에서 발생했을 수 있는데, 이때 상이한 수신자들이 상이한 컨텍스트들에서 선택된다. 따라서, 전체적으로, 상호작용 데이터 이력은 특정 이벤트가 발생할 때 사용자에 의해 명백히 선택될 수신자를 제안하지 못할 수 있다.
예측 모델은 특정 이벤트에 대응할 수 있다. 연락할 제안된 수신자들은 컴퓨팅 디바이스의 하나 이상의 특성들을 사용하여 결정될 수 있다. 예를 들어, 이벤트의 발생들 이후에 다른 사용자들과의 사용자 상호작용들에 대응하는 데이터 이력의 서브세트로부터 특정 서브모델이 생성될 수 있다. 상호작용 데이터 이력의 서브세트는, 디바이스가 하나 이상의 특성들(예컨대, 특정 위치 및/또는 하루 중 시간의 특성을 갖는, 이메일 애플리케이션에 액세스하는 이벤트 이후에 선택된 수신자들과의 사용자 상호작용들)을 가질 때 수집될 수 있다. 예측 모델은 컨텍스트 데이터의 상이한 조합들에 대해 각각의 서브모델들로 구성될 수 있다. 상이한 조합들은 상이한 양의 컨텍스트 데이터를 가질 수 있다. 서브모델들은 계층적 트리로 생성될 수 있는데, 이때 보다 구체적인 조합들의 서브모델들은 계층적 트리에서 더 낮다. 일부 실시예들에서, 서브모델이 트리에서 더 높은 모델보다 더 큰 정확도로 수신자를 예측할 수 있는 경우에만 서브모델이 생성될 수 있다. 이러한 방식으로, 사용자가 어느 애플리케이션을 선택할지에 대한 보다 정확한 예측이 이루어질 수 있다. 일부 실시예들에서, 예측 모델 및 서브모델들은 컨텍스트 데이터의 특정 조합이 있을 때의 이벤트 이후에 사용자에 의해 선택되는 상위 N의 수신자들(예컨대, 고정된 수의 백분율)을 식별할 수 있다.
신경 회로망 또는 회귀와 같은 모델이 특정 컨텍스트에 대해 특정 애플리케이션을 식별하도록 훈련될 수 있지만, 이것은 모든 대응하는 데이터 이력이 사용될 때 어려울 수 있다. 모든 상호작용 데이터 이력을 사용하면, 예측 모델을 오버피팅하는 것을 초래하고, 보다 낮은 정확도를 초래할 수 있다. 본 발명의 실시예들은 데이터 이력을 데이터 이력의 상이한 입력 세트들로 세그먼트화할 수 있는데, 그 각각은 상이한 컨텍스트들에 대응한다. 데이터 이력의 상이한 입력 세트들에 대해 상이한 서브모델들이 훈련될 수 있다.
A. 상이한 컨텍스트 데이터에 기초한 상이한 모델
특정 이벤트가 발생할 때, 디바이스는 다양한 컨텍스트들에, 예컨대, 상이한 위치들에(예컨대, 직장에, 집에, 또는 학교에), 상이한 시간들에, 상이한 요일(예컨대, 평일 또는 주말)에, 디바이스의 상이한 모션 상태들(예컨대, 달리는 중, 걷는 중, 자동차에서 운전중, 또는 정지 상태)에, 또는 통신 애플리케이션 사용의 상이한 상태들(예컨대, 이메일을 구성하거나 또는 캘린더 엔트리를 생성하는 데 사용되는 것)에 있을 수 있다. 컨텍스트 정보는 검출된 이벤트와 관련하여 인출될 수 있는데, 예컨대 이벤트가 검출된 후에 인출될 수 있다. 컨텍스트 정보는, 검출된 이벤트와 관련하여 어느 예측된 수신자가 통신을 위한 수신자로서 선택될 수 있는지를 예측하는 것을 돕기 위해 사용될 수 있다. 상이한 위치들이 GPS 센서를 사용하여 결정될 수 있고, 시간들이 이전 통신들이 송신되었던 시기에 기초하여 결정될 수 있다. 모션 센서들, 예컨대 가속도계, 자이로미터, 또는 GPS 센서를 사용하여 상이한 모션 상태들이 결정될 수 있다.
실시예들은 다양한 방식으로 컨텍스트 정보를 사용할 수 있다. 일례에서, (예컨대, 디바이스의 하나의 특성에 대응하는) 하나의 컨텍스트 데이터가, 어느 수신자(들)가 선택될 가능성이 가장 큰지를 예측하기 위해 사용될 수 있다. 예를 들어, 디바이스의 특정 위치가 예측 모델에 대한 입력으로서 제공될 수 있다.
다른 예에서, 컨텍스트 정보의 컨텍스트 데이터의 일부 또는 전부가 세그먼트화 프로세스에서 사용될 수 있다. 소정의 컨텍스트 데이터가 입력된 데이터 이력을 세그먼트화하는 데 사용되어서, 그 컨텍스트 데이터의 대응하는 특성에 대응하는 데이터 이력만을 사용하여 특정 서브모델이 결정되도록 할 수 있다. 예를 들어, 디바이스의 특정 위치는 서브모델에 대한 입력으로서 사용되지 않을 것이지만, 어느 서브모델을 사용할지, 그리고 그에 대응하여 특정 서브모델을 생성하기 위해 어느 입력 데이터를 사용할지를 선택하기 위해 사용될 것이다.
따라서, 일부 실시예들에서, 어느 서브모델을 사용할지를 식별하기 위해 소정의 컨텍스트 데이터가 사용될 수 있고, 사용자가 어느 수신자(들)와 상호작용할 수 있을지를 예측하기 위해 서브모델에 대한 입력으로서 다른 컨텍스트 데이터가 사용될 수 있다. 특정 특성(예컨대, 특정 위치)은, 사용되는 서브모델에 대한 향후 입력으로서 특정 특성이 사용될 수 있는 특정 서브모델에 대응하지 않는다. 특정 특성이 특정 서브모델에 대응하는 경우, 전체 모델이 특정 특성에 전용되기 때문에 그 특성의 사용은 더 풍부하게 될 수 있다.
서브모델을 특정 특성(또는 특성들의 조합)에 전용으로 하는 것의 하나의 결점은 그 특정 특성에 대응하는 많은 양의 데이터 이력이 존재하지 않을 수 있다는 것이다. 예를 들어, 사용자는 특정 이벤트(예컨대, 이메일을 구성하는 것)를 특정 위치에서 단지 몇 번 수행했을 수 있다. 이러한 제한된 양의 데이터는 또한 데이터가 희소하다고 지칭된다. 데이터는, 예컨대, 특정 시간에 특정 위치에서 특성들의 조합들이 사용될 때 훨씬 더 희소해질 수 있다. 이러한 결점에 대처하기 위하여, 실시예들은 세그먼트화 프로세스의 일부로서 새로운 서브모델을 언제 생성할지를 선택적으로 결정할 수 있다.
1. 디폴트 모델
디바이스가 처음 사용자에 의해 획득될(가져오게 될) 때, 디폴트 모델이 사용될 수 있다. 디폴트 모델은 이벤트들의 그룹(예컨대, 트리거링 이벤트들로서 지정된 모든 이벤트들)에 적용될 수 있다. 디폴트 모델은 사용자와 연관된 다른 디바이스들로부터의 집계 데이터로 시딩될 수 있다. 일부 실시예들에서, 디폴트 모델은, 예컨대, 임의의 하나의 컨텍스트에 대해 충분한 데이터가 이용가능하지 않을 때, 컨텍스트에 상관없이, 가장 인기 있는 수신자를 간단히 선택할 수 있다. 일단 더 많은 데이터가 수집되면, 디폴트 모델은 폐기될 수 있다.
일부 실시예들에서, 디폴트 모델은, 제안될 미리결정된 수신자(들) 및 수행될 액션들을 특정하는 하드코딩된 로직을 가질 수 있다. 이러한 방식으로, 사용자가 어떻게 응답하는지(예컨대, 부정적인 응답은 사용자가 제안된 수신자를 선택하지 않는 것임)에 대해 사용자가 조사될 수 있는데, 이는 긍정적인 응답에 대해 단순히 추적하는 것을 사용하는 추가 데이터를 제공할 수 있다. 그러한 디폴트 모델과 병행하여, 그의 예측을 실제 결과와 비교하기 위해 예측 모델이 구동되고 있을 수 있다. 이어서, 예측 모델은 실제 결과에 응답하여 정제될 수 있다. 예측 모델이 충분한 신뢰도를 가질 때, 디폴트 모델로부터 예측 모델로의 스위칭이 이루어질 수 있다. 유사하게, 서브모델의 성능이 추적될 수 있다. 서브모델이 충분한 신뢰도를 가질 때, 서브모델은 주어진 컨텍스트에 대해 사용될 수 있다. 일부 실시예들에서, 상이한 이벤트들에 대한 상이한 서브모델들이 있다. 예를 들어, 이메일 수신자들을 예측하기 위해 이메일 컨텍스트들에 대한 이메일 서브모델이 사용될 수 있고, 캘린더 이벤트들에 대한 초대받은 사람들을 예측하기 위해 별개의 캘린더 서브모델이 사용될 수 있다. 이러한 상이한 서브모델들은 상호작용 이력 데이터베이스 내의 대응하는 테이블들로부터의 데이터를 사용하여, 이전 이메일들 및 캘린더 초대들의 수신자들을 식별할 수 있다. 이 예에서, 이메일 테이블은 사용자가 메시지들에 이전에 추가한 수신자들을 나타내는 과거의 이메일 메시지들에 대한 레코드들을 가질 수 있다. 유사하게, 상호작용 이력 데이터베이스 내의 캘린더 테이블은 캘린더 이벤트들에 초대받았던 사용자들을 나타내는 과거의 캘린더 이벤트들에 대한 레코드들을 가질 수 있다.
2. 초기 훈련
예측 모델(예컨대, 이벤트 모델)은 지금까지 수집된 데이터 이력을 사용하여 초기 훈련을 겪을 수 있는데, 여기서 모델은 사용자에게 수신자 제안들을 제공하지 않는다. 이러한 훈련은 초기 훈련으로 불릴 수 있다. 예측 모델은 백그라운드 프로세스의 일부로서 주기적으로(예컨대, 매일) 업데이트될 수 있는데, 이는 디바이스가 충전중이고 사용되지 않을 때 발생할 수 있다. 훈련은, 상호작용 데이터 이력에서의 실제 결과들과 비교하여 그리고 정확한 예측들의 수를 최적화하기 위해 모델의 계수들을 최적화하는 것을 수반할 수 있다. 다른 예에서, 훈련은 실제로 선택되는 상위 N(예컨대, 미리결정된 수, 미리결정된 백분율)의 애플리케이션들을 식별하는 것을 포함할 수 있다. 훈련 후에, 모델의 정확도가, 그 모델이 제안된 수신자(및 잠재적 대응하는 유형의 상호작용)를 사용자에게 제공하는 데 사용되어야 하는지 여부를 결정하기 위해 측정될 수 있다.
일단 모델이 충분한 정확도를 획득하고 있다면(예컨대, 상위 선택된 애플리케이션이 충분히 높은 정확도로 선택되고 있다면), 모델은 구현될 수 있다. 그러한 발생은 최상위 레벨 모델(예컨대, 제1 이벤트 모델)에 대해 일어나지 않을 수 있지만, 서브모델들이 특정 컨텍스트들에 대해 테스트될 때 발생할 수 있다. 따라서, 그러한 초기 훈련은 서브모델에 대해 유사하게 수행될 수 있다.
B. 더 많은 데이터가 획득될 때의 세그먼트화
사용자가 처음 디바이스를 사용하기 시작할 때, 특정 이벤트 이후에(예컨대, 이메일 애플리케이션, 캘린더 애플리케이션, 화상 회의 애플리케이션, 또는 캘린더 애플리케이션에 액세스한 후에) 사용자가 상호작용하는 것으로 선택할 수 있는 수신자들에 관한 예측들을 행하기 위한 상호작용 데이터 이력이 없을 것이다. 초기 모드에서, 예측된 수신자들이 제안되지 않는 동안 상호작용 데이터 이력이 획득될 수 있다. 더 많은 데이터 이력이 획득됨에 따라, 예측 모델을 서브모델들로 세그먼트화할지 여부에 관한 결정들이 이루어질 수 있다. 훨씬 더 많은 상호작용 데이터 이력을 가지면, 서브모델들은 추가 서브모델들로 세그먼트화될 수 있다. 제한된 데이터 이력이 수신자들과의 사용자 상호작용들에 대해 이용가능할 때, 어떠한 수신자도 제안되지 않을 수 있거나 보다 일반적인 모델이 사용될 수 있다.
세그먼트화 프로세스가 사용자 디바이스(예컨대, 스마트폰과 같은 모바일 디바이스)에 의해 수행될 수 있는데, 이는 데이터 프라이버시를 유지할 수 있다. 다른 실시예들에서, 세그먼트화 프로세스는 사용자 디바이스와 통신 상태에 있는 서버에 의해 수행될 수 있다. 세그먼트화 프로세스는 일정 기간에 걸쳐(예컨대, 며칠, 또는 몇 개월에 걸쳐) 부분적으로 수행될 수 있거나, 또는 모든 세그먼트화 프로세스가 함께 수행되고, 주기적으로 잠재적으로 재실행될 수 있다. 세그먼트화 프로세스는 수신자 예측 엔진의 루틴(routine)으로서 실행될 수 있다.
더 많은 데이터가 수집됨에 따라, 예측 모델이 서브모델들로 세그먼트화될 수 있다. 데이터를 수집하는 상이한 지점들에서, 세그먼트화가 발생할 수 있다. 훨씬 더 많은 데이터가 획득됨에 따라, 다른 세그먼트화가 발생할 수 있다. 각각의 세그먼트화는 세그먼트화를 완전히 재실행하는 것을 수반할 수 있는데, 이는 이전 세그먼트화에서와 동일한 서브모델들이 생성되는 것을 야기하거나 야기하지 않을 수 있다.
이 예에서, 제1 이벤트 모델은 특정 이벤트(예컨대, 직장동료와 같은 특정 연락처로 이메일을 전송하는 것)에 대응할 수 있다. 이벤트 모델은 특정 이벤트에 대한 예측 엔진의 최상위 레벨에 대응할 수 있다. 초기에, 최소의 상호작용 데이터 이력이 이용가능하기 때문에, 특정 이벤트에 대한 하나의 모델만이 있을 수 있다. 이 시점에서, 이벤트 모델은 훈련 목적을 위해 데이터 이력을 단지 추적할 수 있다. 이벤트 모델은 수신자 예측들을 행할 수 있고 그러한 예측들을 실제 결과들(예컨대, 이벤트가 검출된 후 특정 시간 이내에 사용자가 상호작용할 제안된 수신자를 선택하는지 여부)과 비교할 수 있다. 어떠한 수신자도 임계치보다 큰 확률을 갖지 않는 경우, 특정 이벤트가 발생할 때 어떠한 수신자도 제안되지 않을 수 있다.
일부 실시예들에서, 이벤트 모델은 특정 디바이스에 대해 수집된 데이터만을 사용한다. 다른 실시예들에서, 이벤트 모델은 사용자와 연관된 다른 디바이스들로부터 집계된 상호작용 데이터 이력으로 시딩될 수 있다. 그러한 상호작용 데이터 이력은 이벤트 모델이 일부 수신자 추천들을 제공하도록 할 수 있는데, 이는 이어서 추가 데이터 점들이 획득되도록 할 수 있다. 예를 들어, 사용자가 특정 애플리케이션(예컨대, 이메일, 오디오 통화, 화상 회의, 인스턴트 메시지, 또는 텍스트 메시지)을 통해 제안된 수신자와 상호작용하는지 여부가 추적될 수 있는데, 이는 단지 사용자가 수신자를 선택하는지 여부보다 더 많은 데이터 점들을 제공할 수 있다.
더 많은 데이터가 수집됨에 따라, 세그먼트화가 발생해야 하는지 여부에 대한 결정이 주기적으로 이루어질 수 있다. 그러한 결정은 세그먼트화를 통해 보다 큰 정확도가 달성될 수 있는지 여부에 기초할 수 있다. 정확도는 예측이 이루어질 수 있는 확률의 레벨로서 측정될 수 있는데, 이는 아래에서 더욱 상세하게 기술된다. 예를 들어, 이벤트 모델로 예측되는 것보다 서브모델의 경우 보다 높은 레벨의 확률로 수신자가 예측될 수 있는 경우, 세그먼트화가 수행될 수 있다. 세그먼트화 프로세스의 일부로서 서브모델이 생성되어야 하는지 여부를 결정하기 위해 하나 이상의 다른 기준들이 또한 사용될 수 있다. 예를 들어, 기준은, 서브모델이 구현되기 전에 서브모델이 통계적으로 상당한 양의 입력된 데이터 이력을 가져야 한다는 것일 수 있다. 데이터의 양의 요건은 서브모델에 더 큰 안정성을, 그리고 궁극적으로 더 큰 정확도를 제공할 수 있는데, 이는 작은 양의 데이터에 대해 훈련된 모델이 부정확할 수 있기 때문이다.
C. 트리거링 이벤트에 기초하여 수신자를 제안하기 위한 시스템
도 3은 본 발명의 실시예들에 따른, 트리거링 이벤트 및 컨텍스트 정보에 기초하여 수신자 및 대응하는 액션 커맨드를 식별하기 위한 예측 시스템(37_300)의 단순화된 블록도를 예시한다. 예측 시스템(37_300)은 애플리케이션을 식별하고 있는 디바이스 내에 상주한다. 예측 시스템(37_300)은 하드웨어 및 소프트웨어 컴포넌트들을 포함할 수 있다.
예측 시스템(37_300)은 제안된 수신자(들)를 식별하기 위한 예측 엔진(37_302)을 포함한다. 예측 엔진(37_302)은 트리거링 이벤트를 수신할 수 있다. 예측 엔진(37_302)은 트리거링 이벤트(37_328)로부터 수집된 정보를 사용하여 제안된 수신자(37_304)를 식별할 수 있다. 도시된 바와 같이, 예측 엔진(37_302)은 트리거링 이벤트(37_328)에 더하여 컨텍스트 데이터(37_306)를 수신할 수 있다. 예측 엔진(37_302)은 트리거링 이벤트(37_328) 및 컨텍스트 데이터(37_306) 양쪽 모두로부터 수집된 정보를 사용하여 제안된 수신자(37_304)를 식별할 수 있다. 실시예들에서, 수신된 컨텍스트 데이터(37_306)에 기초하여, 예측 엔진(37_302)은 상이한 모델들을 사용하여 상이한 유형의 통신들에 대한 제안된 수신자들을 식별한다. 예를 들어, 예측 엔진(37_302)은, 컨텍스트 데이터(37_306)가 이메일 애플리케이션이 액세스되고 있거나 이메일이 구성되고 있음을 나타낼 때 이메일 서브모델을 사용할 수 있다. 이메일 서브모델은 이벤트 이력 데이터베이스(37_316)로부터의 이메일 데이터 이력과 함께 그러한 컨텍스트 데이터(37_306)를 사용하여 이메일 수신자들을 예측할 수 있다. 이메일 서브모델은 이메일의 수신자들을 예측하는 데 사용될 수 있고, 캘린더 이벤트들에 대한 초대받은 사람들을 예측하기 위해 별개의 캘린더 서브모델이 사용될 수 있다. 예측 엔진(37_302)은 또한, 수행될 액션, 예컨대 사용자가 제안된 수신자와 상호작용하기 위해 사용자 인터페이스가 언제 어떻게 제공될 수 있는지를 결정할 수 있다.
1. 컨텍스트 정보
컨텍스트 정보는 컨텍스트 데이터(37_306)로부터 수집될 수 있다. 실시예들에서, 컨텍스트 정보는 임의의 시간에 수신될 수 있다. 예를 들어, 컨텍스트 정보는 트리거링 이벤트(37_328)가 검출되기 전에 그리고/또는 그 후에 수신될 수 있다. 추가적으로, 컨텍스트 정보는 트리거링 이벤트(37_328)의 검출 동안 수신될 수 있다. 컨텍스트 정보는 소정의 컨텍스트에 대해 디바이스의 하나 이상의 특성들을 특정할 수 있다. 컨텍스트는 트리거링 이벤트(37_328)가 검출될 때의 디바이스의 주위 환경(컨텍스트의 유형)일 수 있다. 예를 들어, 컨텍스트 정보는 트리거링 이벤트(37_328)가 검출되는 하루 중 시간일 수 있다. 다른 예에서, 컨텍스트 정보는 트리거링 이벤트(37_328)가 검출될 때의 디바이스의 소정의 위치일 수 있다. 또 다른 예에서, 컨텍스트 정보는 트리거링 이벤트(37_328)가 검출되는 시기의 일년 중 소정의 하루일 수 있다. 그러한 컨텍스트 정보는 디바이스의 컨텍스트에 관한 보다 의미있는 정보를 제공할 수 있어서, 예측 엔진(37_302)이 그 컨텍스트에서 사용자에 의해 수신자로서 선택될 가능성이 있는 수신자를 정확하게 제안할 수 있도록 한다. 따라서, 예측 엔진(37_302)이 컨텍스트 정보를 이용함으로써, 컨텍스트 정보가 이용되지 않았던 경우보다 사용자에게 수신자를 보다 정확하게 제안할 수 있다.
컨텍스트 데이터(37_306)가 컨텍스트 소스들(37_308)에 의해 생성될 수 있다. 컨텍스트 소스들(37_308)은 모바일 디바이스의 현재 상황에 관한 데이터를 제공하는 모바일 디바이스의 컴포넌트들일 수 있다. 예를 들어, 컨텍스트 소스들(37_308)은 각각 하루 중 시간, 디바이스의 위치, 및 일년 중 날에 관한 정보를 제공하기 위한 내부 디지털 시계(37_310), GPS 디바이스(37_312), 및 캘린더(37_314)로서 동작하는 하드웨어 디바이스들 및/또는 소프트웨어 코드일 수 있다. 다른 컨텍스트 소스들이 사용될 수 있다.
예측 엔진(37_302)에 대한 컨텍스트 데이터(37_306)를 수집하는 것은 전력 효율적인 방식으로 수행될 수 있다. 예를 들어, 디바이스의 위치를 결정하기 위해 GPS(37_312)를 연속적으로 폴링하는 것은, 지나치게 전력 집약적일 수 있는데, 이는 배터리 수명을 감소시킬 수 있다. 배터리 수명의 감소를 피하기 위해, 예측 엔진(37_302)은 GPS(37_312) 이외의 소스들로부터 디바이스의 위치를 요청함으로써 디바이스의 위치를 결정할 수 있다. 위치 정보에 대한 다른 소스는, 디바이스의 위치에 대해 GPS(37_312)를 최근에 폴링한 애플리케이션일 수 있다. 예를 들어, 애플리케이션 A가 디바이스의 위치에 대해 GPS(37_312)를 폴링한 가장 최근의 애플리케이션인 경우, 예측 엔진(37_302)은 GPS(37_312)를 별도로 폴링하기보다는 오히려 애플리케이션 A로부터 위치 데이터를 요청 및 수신할 수 있다.
2. 이력 정보
컨텍스트 소스들(37_308)에 더하여, 이벤트 이력 데이터베이스(37_316)가 또한 소정 실시예들에서 예측 엔진(37_302)에 의해 이용될 수 있다. 이벤트 이력 데이터베이스(37_316)는 트리거링 이벤트가 검출된 후에 사용자와 모바일 디바이스 사이의 이전 상호작용들의 이력 정보를 포함할 수 있다.
이벤트 이력 데이터베이스(37_316)는 소정 트리거링 이벤트 이후에 사용자가 수신자와 상호작용한 횟수의 레코드를 유지할 수 있다. 예를 들어, 데이터베이스(37_316)는, 사용자가, 수신자 A를 포함할 때 10번 중 8번 이메일 또는 캘린더 초대 상에 수신자 B를 포함함을 나타내는 레코드를 유지할 수 있다. 따라서, 예측 엔진(37_302)은 이 정보를 데이터 이력(37_318)으로서 수신하여, 수신자 A가 이메일 또는 캘린더 통신을 위해 선택될 때 사용자에 대해 수신자 B가 식별되어야 하는지 여부를 결정할 수 있다.
이벤트 이력 데이터베이스(37_316)는 또한 트리거링 이벤트가 검출될 때 상이한 컨텍스트들 하에서 수신자가 상호작용한 횟수의 레코드를 유지할 수 있다. 예를 들어, 데이터베이스(37_316)는, 사용자가 집에 있을 때 사용자가 개인 이메일 계정에 액세스한 후에 사용자가 10번 중 9번 수신자 A와 상호작용하고 사용자가 직장 위치에 있고 직장 이메일 계정을 사용하고 있을 때 10번 중 1번 수신자 A와 상호작용하는 것을 나타내는 레코드를 유지할 수 있다. 따라서, 예측 엔진(37_302)은 이 정보를 데이터 이력(37_318)으로서 수신하고, 집에서 사용자가 개인 이메일 계정에 액세스할 때에는 수신자 A가 제안되어야 하지만, 직장에서 직장 이메일 계정에 액세스할 때에는 수신자 A가 제안될 필요가 없다고 결정할 수 있다. 이 섹션에서 논의된 예들이 위치들을 "집" 또는 "직장"으로 언급하지만, "집" 또는 "직장"을 표현하는 컨텍스트 데이터(37_306)는, 예를 들어 지리적 좌표들과 같은 수치 좌표들의 형태로 있을 수 있다는 것이 이해되어야 한다. 당업자는, 수신자들을 식별하기 위해 유사한 방식으로 위치 대신에 하루 중 시간, 요일, 및 일년 중 날에 관한 시간 정보가 사용될 수 있다는 것을 이해한다.
이벤트 이력 데이터베이스(37_316)는 또한, 얼마나 자주, 그리고 어떤 상황들 하에서, 사용자가 식별된 수신자를 통신을 위한 수신자로서 선택하지 않기로 결정하는지의 레코드를 유지할 수 있다. 예를 들어, 데이터베이스(37_316)는, 사용자가 집에서 헤드셋을 디바이스 내에 삽입했을 때 사용자에게 한 사람이 제안되었던 10번 중 2번 수신자 B를 전화 통화를 위한 수신자로서 사용자가 선택하지 않았음을 나타내는 레코드를 유지할 수 있다. 따라서, 예측 엔진(37_302)은, 사용자가 집에서 헤드셋을 디바이스 내에 삽입할 때 수신자 B를 제안하는 확률을 조정하기 위해 이 정보를 데이터 이력(37_318)으로서 수신할 수 있다.
전술된 바와 같이, 본 기술의 일 태양은, 사용자가 통신하는 데 관심이 있을 수 있는 사용자들의 예측을 개선하기 위한 다양한 소스들로부터 입수가능한 데이터의 수집 및 사용이다. 본 개시내용은, 일부 경우들에 있어서, 이러한 수집된 데이터가 특정 개인을 고유하게 식별하거나 또는 그와 연락하는 데 사용될 수 있는 개인 정보 데이터를 포함할 수 있음을 고려한다. 그러한 개인 정보 데이터는 위치 기반 데이터, 전화번호들, 이메일 주소들, 직장 주소들, 집 주소들, 과거의 상호작용 레코드들, 또는 임의의 다른 식별 정보를 포함할 수 있다.
본 개시내용은 본 기술에서의 그러한 개인 정보 데이터의 이용이 사용자들에게 이득을 주기 위해 사용될 수 있음을 인식한다. 예를 들어, 개인 정보 데이터는, 사용자가 소정 시간 및 장소에서 통신하기를 원할 수 있는 사용자들을 예측하는 데 사용될 수 있다. 따라서, 컨텍스트 정보 내에 포함된 그러한 개인 정보 데이터의 사용은, 사용자가 소정 시간 및 장소에서 상호작용하기를 원할 수 있는 사람들의 사람 중심의 예측을 가능하게 한다.
본 개시내용은 그러한 개인 정보 데이터의 수집, 분석, 공개, 전달, 저장, 또는 다른 이용을 책임지고 있는 엔티티들이 잘 확립된 프라이버시 정책들 및/또는 프라이버시 관례들을 준수할 것이라는 것을 추가로 고려한다. 특히, 그러한 엔티티들은, 대체로 개인 정보 데이터를 사적이고 안전하게 유지시키기 위한 산업적 또는 행정적 요건들을 충족시키거나 넘어서는 것으로 인식되는 프라이버시 정책들 및 관례들을 구현하고 지속적으로 이용해야 한다. 예를 들어, 사용자들로부터의 개인 정보는 엔티티의 적법하며 적정한 사용들을 위해 수집되어야 하고, 이들 적법한 사용들을 벗어나서 공유되거나 판매되지 않아야 한다. 게다가, 이러한 수집은 단지 사용자들의 통지된 동의를 수신한 후에만 발생해야 한다. 부가적으로, 그러한 엔티티들은 그러한 개인 정보 데이터에 대한 액세스를 보호하고 안전하게 하며 개인 정보 데이터에 대한 액세스를 갖는 다른 사람들이 그들의 프라이버시 정책들 및 절차들을 고수한다는 것을 보장하기 위한 임의의 필요한 단계들을 취할 것이다. 게다가, 그러한 엔티티들은 널리 인정된 프라이버시 정책들 및 관례들에 대한 그들의 고수를 증명하기 위해 제3자들에 의해 그들 자신들이 평가를 받을 수 있다.
전술한 것에도 불구하고, 본 개시내용은 또한 사용자가 개인 정보 데이터의 사용, 또는 그에 대한 액세스를 선택적으로 차단하는 실시예들을 고려한다. 즉, 본 개시내용은 그러한 개인 정보 데이터에 대한 액세스를 방지하거나 차단하기 위해 하드웨어 및/또는 소프트웨어 요소들이 제공될 수 있다는 것을 고려한다. 예를 들어, 사람 중심의 예측 서비스들의 경우에, 본 기술은 사용자들이 서비스들에 대한 등록 동안에 개인 정보 데이터의 수집에의 참여에 "동의함" 또는 "동의하지 않음"을 선택할 수 있게 하도록 구성될 수 있다. 다른 예에서, 사용자들은 수신자 제안 서비스들을 위한 위치 정보를 제공하지 않도록 선택할 수 있다. 또 다른 예에서, 사용자들은 정확한 위치 정보를 제공하지 않지만 위치 구역 정보의 전달을 허용하도록 선택할 수 있다.
D. 사용자 인터페이스
도 37d 및 37_5는 제안된 수신자들의 목록들을 제시하기 위한 예시적인 사용자 인터페이스들을 예시한다. 특히, 도 37d는 이미 구동중인 이메일 애플리케이션과 연관되는 디바이스(37_402)에 대한 사용자 인터페이스(37_400)를 예시한다. 사용자 인터페이스(37_400)는 클라이언트 이메일 애플리케이션에 대한 사용자 인터페이스일 수 있지만, 상이한 애플리케이션들에 대한 다른 사용자 인터페이스들이 또한 이 섹션에서 구상된다. 예를 들어, 사용자 인터페이스(37_400)는 인스턴트 메시징 애플리케이션, 화상 회의 애플리케이션, 및 캘린더 애플리케이션과 같은 수신자들과 상호작용하기 위해 사용가능한 임의의 애플리케이션에 대한 사용자 인터페이스일 수 있다. 사용자 인터페이스(37_400)는 터치 스크린 디스플레이(37_404)에 의해 제공될 수 있다. 터치 스크린 디스플레이(37_404)는 제목 라인(37_408)을 포함하는 이메일 인터페이스(37_406)를 디스플레이할 수 있다. 제목 라인(37_408)은 사용자가 이메일 메시지에 대한 제목을 입력하도록 할 수 있다. 제안된 수신자 목록(37_410)은 사용자가 하나 이상의 제안된 수신자들을 선택할 수 있게 한다. 도시된 바와 같이, 실시예들은, 어떠한 주제 또는 제목도 제목 라인(37_408)에 입력될 필요없이 디바이스(37_402)의 컨텍스트에 기초하여 검색 결과 창(37_410)에 제안된 수신자들을 제시할 수 있다. 그러한 제로-키워드 검색은 디바이스(37_402)의 현재 컨텍스트에 기초하여 디바이스(37_402)에 의해 수행될 수 있다. 예를 들어, 디바이스(37_402)의 현재 위치, 현재 시간, 디바이스(37_402) 상에서 사용 중인 이메일 계정 식별자, 및 다른 컨텍스트 정보에 기초하여, 제목 라인(37_408)에 제공되었는 이메일 메시지의 전체 또는 부분 제목에 의존하지 않고서 제안된 이메일 수신자들이 결정되고 검색 결과 창(37_410)에 디스플레이될 수 있다. 일부 실시예들에서, 사용자가 제목 라인(37_408) 상에 제목(또는 그의 일부분)을 입력할 때, 제안된 수신자 목록(37_410)은 제목 라인에서의 키워드들에 기초하여 업데이트될 수 있다.
사용자 인터페이스(37_400)의 일부분들은 일부 상황들에서 숨겨질 수 있다. 예를 들어, 디바이스(37_402)의 제안 센터, 예컨대 도 37c에서의 제안 센터(37_320)가, 다른 수신자(예컨대, 도 37d에 도시된 수신자 B)가 제1 제안된 수신자(예컨대, 도 37d에 도시된 수신자 A)보다 우선순위를 갖는다고 결정하는 경우, 제1 수신자는 숨겨질 수 있고 다른 수신자가 대신에 디스플레이될 수 있다. 이어서, 다른 수신자는 디스플레이(37_404) 상의 제안된 수신자 목록(37_410)에서 첫째로 디스플레이될 수 있다. 따라서, 사용자는 보다 높은 우선순위를 갖는 것으로 간주되는 수신자를 알게 되고, 그와 상호작용할 기회가 주어질 수 있다. 도 37d의 예시적인 실시예에서, 인터페이스(37_400)에서 수신자들에 관한 어떠한 입력도 사용자에 의해 제공되지 않았다. 도시된 바와 같이, 실시예들은, 어떠한 수신자(또는 부분적인 수신자 이름)도 인터페이스(37_400)에 입력될 필요없이 디바이스(37_402)의 컨텍스트에 기초하여 제안된 수신자 목록(37_410)에 제안된 수신자들을 제시할 수 있다. 즉, 부분적으로 입력된 연락처 이름 또는 이메일 주소에 기초하여 연락처를 예측하기 위한 임의의 자동 완성 기법을 사용하지 않고서 제안된 수신자들이 식별되고 제안된 수신자 목록(37_410)에 디스플레이될 수 있다. 그러한 제로-키워드 검색은 디바이스(37_402)의 현재 컨텍스트에 기초하여 디바이스(37_402)에 의해 수행될 수 있다. 예를 들어, 디바이스(37_402)의 현재 위치, 현재 시간, 및 다른 컨텍스트 정보, 예컨대 디바이스(37_402) 상에서 사용 중인 이메일 계정(예컨대, 직장 또는 개인 이메일 계정)에 기초하여, 제안된 이메일 수신자들이 결정되고 검색 결과 창(37_410)에 디스플레이될 수 있다.
도 37e는 이미 구동중인 검색 애플리케이션과 연관되는 디바이스(37_502)에 대한 사용자 인터페이스(37_500)를 예시한다. 사용자 인터페이스(37_500)는 터치 스크린 디스플레이(37_504)에 의해 제공될 수 있다. 터치 스크린 디스플레이(37_504)는 검색 창(37_508)을 포함하는 검색 인터페이스(37_506)를 디스플레이할 수 있다. 검색 창(37_508)은 사용자가 하나 이상의 검색 용어들을 입력하도록 할 수 있다. 검색 결과 창(37_510)은 제안된 수신자들을 제시할 수 있다. 도 37e의 예에서, 검색 창(37_508)에서 사용자에 의해 어떠한 키워드도 제공되지 않았다. 도시된 바와 같이, 실시예들은, 어떠한 검색 용어 또는 키워드도 검색 창(37_508)에 입력될 필요없이 디바이스(37_502)의 컨텍스트에 기초하여 검색 결과 창(37_510)에 제안된 수신자들을 제시할 수 있다. 그러한 제로-키워드 검색은 디바이스(37_502)의 현재 컨텍스트에 기초하여 디바이스(37_502)에 의해 수행될 수 있다. 예를 들어, 디바이스의 현재 위치, 현재 시간, 및 다른 컨텍스트 정보, 예컨대 디바이스(37_502) 상에서 사용 중인 사용자 계정 식별자에 기초하여, 제안된 수신자들이 결정되고 검색 결과 창(37_510)에 디스플레이될 수 있다. 이어서, 사용자는 검색 결과 창(37_510)과 상호작용하여 하나 이상의 제안된 수신자들을 선택할 수 있다. 실시예들에서, 사용자가 검색 창(37_508)에 검색 용어(또는 그의 일부분)를 입력할 때, 검색 결과 창(37_510) 내의 제안된 수신자들은 검색 용어에 기초하여 업데이트될 수 있다.
일부 실시예들에서, 검색 결과 창(37_510)은 도 37e에 도시된 연락처들의 예시적인 목록보다 더 많을 수 있다. 예를 들어, 검색 결과 창(37_510)은 사용자가 제안된 수신자들과 상호작용할 수 있는 방식을 나타내는 정보를 포함할 수 있다. 검색 결과 창(37_510)은 또한 상호작용이 발생해야 하는 이유를 나타낼 수 있다. 예를 들어, 검색 결과 창(37_510)은, 사용자가 사용자의 개인 계정을 사용하여 수신자의 개인 계정 상의 수신자 A에 대한 비디오 통화를 시작하는 것을 제안할 수 있는데, 이는 사용자가 하루 중 이 시간 즈음에 자주 그렇게 하기 때문이다. 그 제안은 수신자 A와 연락하는 데 사용될 특정 통신 애플리케이션을 제안하기까지 할 수 있다.
E. 방법
도 37f은 본 발명의 실시예들에 따른, 이벤트에 기초하여 컴퓨팅 디바이스의 사용자에게 하나 이상의 수신자들을 제안하기 위한 방법(37_600)의 흐름도이다. 방법(37_600)은 컴퓨팅 디바이스에 의해(예컨대, 사용자 디바이스와의 사용자 상호작용들을 추적하고 있는 사용자 디바이스에 의해) 수행될 수 있다. 방법(37_600)은, 수신자들을 제안하기 위해 컴퓨팅 디바이스의 하나 이상의 특성들의 상이한 세트들을 갖는 상호작용들을 포함하는 상호작용들 이력의 세트를 사용할 수 있다.
블록(37_602)에서, 디바이스는 입력 디바이스에서 이벤트를 검출한다. 도시된 바와 같이, 블록(37_602)은 사용자와 연관된 사용자 디바이스에서 사용자 입력을 검출하는 것을 포함할 수 있다. 입력 디바이스의 예들은 터치 스크린, 음성 커맨드들을 제공하기 위한 마이크로폰, 카메라, 버튼, 마우스, 스타일러스, 키보드 등이다. 이벤트는 모바일 디바이스가 외부 디바이스 또는 사용자와 같은 외부 엔티티와 상호작용하는 임의의 액션일 수 있다. 이벤트는 디바이스에 대해 반복되는 유형의 것일 수 있다. 따라서, 이벤트의 상이한 발생들에 대해 이력 통계 데이터가 획득될 수 있다. 그러한 데이터 이력을 사용하여 모델들 및 서브모델들이 훈련될 수 있다.
블록(37_602)은 사용자 디바이스의 하나 이상의 특성들을 수신하는 것을 포함할 수 있다. 하나 이상의 특성들은 디바이스 상에서 실행되는 수신자 제안 엔진에 의해 수신될 수 있다. 이 섹션에서 언급된 바와 같이, 특성들은 시간, 위치, 모션 상태, 캘린더 이벤트들 등에 대응할 수 있다. 그러한 하나 이상의 특성들은 디바이스의 특정 컨텍스트를 정의하는 컨텍스트 데이터에 대응할 수 있다. 하나 이상의 특성들은 이벤트의 검출 즈음의 시간에서, 예컨대 소정 기간 이내에 측정될 수 있다. 그 기간은 이벤트의 검출 전후의 시간, 이벤트의 검출 직전의 기간, 또는 이벤트의 검출 직후의 시간을 포함할 수 있다.
블록(37_604)에서, 사용자 입력이 제안 엔진을 통해 제안된 수신자를 제공하기 위한 트리거에 대응한다고 결정된다. 예를 들어, 이메일 애플리케이션에서 이메일을 구성하기 위한 사용자 입력이 수신되는 경우, 블록(37_604)은 이메일에 대한 제안된 수신자가 제공되어야 한다고 결정할 수 있다. 또한, 예를 들어, 검색 애플리케이션에서 검색을 시작하기 위한 사용자 입력이 수신되는 경우, 블록(37_604)은 예측된 연락처들이 검색 결과들 내에 포함되어야 한다고 결정하는 것을 포함할 수 있다.
블록(37_606)에서, 사용자 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 하나 이상의 테이블들이 채워진다. 도 37f의 예에서, 하나 이상의 테이블들 각각은 사용자 디바이스의 상이한 하위상태에 대응하고, 상이한 수신자들과의 이전 통신들의 복수의 연락처 측정치들을 포함한다. 예를 들어, 이전 통신들은, 예컨대 이전 이메일들, 음성 통화들, 텍스트 메시지들, 인스턴트 메시지들, 비디오 통화들, 및 캘린더 초대들과 같은 다른 사용자들과의 이전 상호작용들을 포함할 수 있다.
블록(37_608)에서, 하나 이상의 상태 변수들은 하나 이상의 상태 변수들에 대응하는 하나 이상의 테이블들의 제1 세트를 식별하는 데 사용된다. 예를 들어, 위치 상태 변수가, 사용자 디바이스가 사용자의 집에 있음을 나타내는 경우, 블록(37_608)은 사용자의 집과 연관된 이전 통신들에 대응하는 테이블들을 식별하는 것을 포함할 수 있다. 즉, 사용자 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 테이블들은, 단지 사용자가 집에 있었던 동안 시작되거나 수행된 이전 통신들에 대응하는 테이블들로 필터링될 수 있다. 이 예에서, 위치 상태 변수가 사용자 디바이스가 사용자의 집에 있음을 나타낼 때, 사용자가 집에 있었던 동안 구성, 판독, 또는 편집된 과거의 이메일들에 대한 테이블들의 세트가 식별될 수 있다. 또한, 예를 들어, 계정 상태 변수가 사용자가 직장 이메일 계정을 사용하고 있음을 나타내는 경우, 블록(37_608)은 그 직장 이메일 계정을 사용하여 이루어진 과거의 통신들에 대응하는 테이블들의 세트를 식별하는 것을 포함할 수 있다. 실시예들은 다수의 상태 변수들(예컨대, 위치 상태 및 계정 상태)을 사용할 수 있다.
블록(37_610)에서, 하나 이상의 잠재적 수신자들에 대한 연락처 측정치들을 획득하기 위해 테이블들의 제1 세트가 질의된다. 연락처 측정치들은, 예를 들어, 사용자 디바이스를 사용하여 이루어진 이전 캘린더 이벤트들에 대한 캘린더 초대들의 수신자들에 대한 연락처 측정치들, 이전 이메일 메시지들이 작성된(즉, 구성되거나 전송된) 때의 시간들, 이전 이메일 메시지들과 연관된 이메일 계정 식별자들, 이메일 메시지들 상에서 복사된 다른 수신자들, 각각의 수신자에게 전송된 다수의 이메일 메시지들을 포함할 수 있다. 일례에서, 테이블들의 제1 세트에 질의하는 것은, 하나 이상의 잠재적 수신자들 각각으로 전송된 이전 통신들의 총 개수를 산출하기 위해 행해질 수 있다. 예를 들어, 테이블들의 제1 세트에 질의하는 것은, 잠재적 수신자들 각각으로 전송되고 그로부터 수신된 이메일 메시지들의 누적 개수를 결정하기 위해 이메일 테이블들에 질의하는 것을 포함할 수 있다. 테이블들의 제1 세트에 질의하는 것은 또한, 잠재적 수신자들 각각으로 전송되고 그로부터 수신된 캘린더 초대들의 총 개수를 결정하기 위해 캘린더 이벤트 테이블들에 질의하는 것을 포함할 수 있다.
블록(37_610)은 잠재적 수신자와의 개별 상호작용들뿐만 아니라 수신자들의 그룹들과의 그룹 상호작용들에 기초하여 테이블들에 질의할 수 있다. 예를 들어, 블록(37_610)은 이메일 테이블로부터의 컨텍스트 데이터가 사용자와 수신자 사이의 이전 이메일 상호작용들(예컨대, 전송 또는 수신된 이메일 메시지)을 나타내는 다음 이메일 수신자를 예측할 수 있다. 블록(37_610)은 현재 컨텍스트에 대응하는 상호작용들 이력의 순위를 매기는 것을 포함할 수 있다. 예를 들어, 상호작용에 대한 가중치는 다수의 수신자들의 동시 발생을 나타내는 사회적 요소를 포함할 수 있다. 이 예에서, 수신자들의 그룹과의 사용자의 상호작용들 이력에 대한 순위들은, 사용자가 다른 과거의 상호작용들에서 그 그룹과 이전에 상호작용하였는지 여부에 기초하여 증가될 수 있다. 즉, 수신자들의 세트가 통상적인 과거의 상호작용들에 포함되었음(예컨대, 수신자들이 사용자에 의해 전송된 이메일들에 대한 그룹으로서 반복적으로 복사됨)에 기초하여 수신자들의 그 세트의 구성원들에 대해 순위 부스트가 주어질 수 있다. 이러한 방식으로, 사용자가 과거의 이메일들에 대해 2개의 수신자들을 이전에 선택하였고 두 수신자들이 제3 수신자에게 전송된 이메일들 상에 복사되었는 경우, 그 제3 수신자는 2개의 수신자들과 함께 이전에 포함되었다는 것에 기초하여 순위 부스트를 얻을 것이다. 그러나, 사용자가, 이러한 3개의 수신자들 중 하나의 수신자만이 포함된 다른 상호작용을 가졌는 경우, 그 상호작용은 동일한 순위 부스트를 얻지 못할 것이다.
블록(37_612)에서, 획득된 연락처 측정치들을 사용한 이전 통신들 및 상호작용들의 총 연락처 측정치가 하나 이상의 잠재적인 수신자들 각각에 대해 산출된다. 일례에서, 이전 통신들의 총 연락처 측정치는 하나 이상의 잠재적 수신자들 각각으로 전송된 이전 통신들의 누적 총 개수이다. 이 예에서, 잠재적 수신자들 각각으로 전송된 이메일들, 메시지들, 통화들, 및 캘린더 초대들의 총 개수는 하나 이상의 테이블들에 질의함으로써 계산될 수 있다.
블록(37_614)에서, 예측 엔진은, 하나 이상의 기준들을 사용하여 그리고 하나 이상의 잠재적 수신자들의 총 연락처 측정치들에 기초하여 사용자에게 제안할 하나 이상의 예측된 수신자들을 식별하기 위해 사용된다. 일부 실시예들에서, 기준들은, 제안할 예측된 수신자들의 최소 개수(예컨대, 상위 N개의 수신자들), 제안할 예측된 수신자들의 백분율(예컨대, 상위 25퍼센트), 및/또는 예측된 수신자를 제안하기 위한 임계 신뢰도 레벨을 포함할 수 있다. 블록(37_614)은 하드 컷오프(hard cutoff)를 기준으로서 사용하는 것을 포함할 수 있다. 예를 들어, 사용자와의 이전 상호작용들의 최소 개수를 가진 수신자들만이 고려될 수 있다. 일부 실시예들에서, 사회적 기준이 수신자들을 제안하는 데 사용된다. 예를 들어, 예측된 수신자들은, 그들이 사용자가 이전에 상호작용하였던 다른 제안된 수신자와의 동시 발생들을 가질 때 제안될 수 있다. 일부 실시예들에서, 다른 예측된 수신자들에 대한 유사한 특징들을 갖는 수신자들이 제안될 수 있다. 예를 들어, 예측된 수신자와 동일한 위치와 연관되고 동일한 이메일 주소 도메인을 갖는 수신자들이 통신을 위한 추가 수신자들로서 제안될 수 있다.
블록(37_614)은 특정 서브모델을 사용하여 사용자에게 제안할 하나 이상의 수신자들을 식별하는 것을 포함할 수 있다. 하나 이상의 수신자들은, 하나 이상의 수신자들 중 적어도 하나의 수신자가 트리거링 이벤트와 관련하여 사용자에 의해 상호작용되는 적어도 임계 확률을 가질 수 있다. 데이터 이력에서 하나 이상의 수신자들 중 하나의 수신자를 예측하는 것은 정확한 예측으로서 식별될 수 있다. 임계 확률은, 아래에서 더욱 상세하게 기술되는 바와 같이, 다양한 방식들로 측정될 수 있고, 데이터 이력으로부터 결정되는 확률 분포를 사용할 수 있다. 예를 들어, 확률 분포의 평균(중간값) 확률, 중위 확률, 또는 피크 값은 임계 확률 초과(예컨대, 37_60%와 동등한, 0.5 초과)이도록 요구될 수 있다. 따라서, 신뢰도 레벨은 확률 분포의 평균 값, 중위 값, 또는 피크 값일 수 있다. 다른 예는, 특정 값을 초과하는 확률 분포에 대한 면적이 임계 확률보다 더 큰 것이다.
블록(37_616)에서, 하나 이상의 예측된 수신자들이 사용자에게 제공된다. 블록(37_614)은 하나 이상의 수신자들과 통신하기 위해 사용자에게 사용자 인터페이스를 제공하는 것을 포함할 수 있다. 예를 들어, 디바이스는 목록 인터페이스를 통해 사용자에게 식별된 수신자들을 디스플레이할 수 있는데, 사용자는 사용자가 식별된 수신자들에 액세스하고 싶어할지 여부를 나타내기 위해 그 목록 인터페이스와 상호작용할 수 있다. 예를 들어, 사용자 인터페이스는 터치 감응형 디스플레이를 포함할 수 있는데, 터치 감응형 디스플레이는 식별된 수신자들 중 하나 이상을 사용자에게 보여주고, 사용자가 터치 감응형 디스플레이와 상호작용함으로써 디바이스에 의해 식별된 수신자들 중 하나 이상과 통신할 수 있게 한다. 사용자 인터페이스는 디스플레이 화면 상에, 사용자의 수신자들 전부의 목록에 제공된 것보다 더 적은 수신자들과의 상호작용들을 허용할 수 있다.
일례로서, 하나 이상의 제안된 수신자들이 검색 화면 상의 수신자 목록에 제공될 수 있다. 사용자는 수신자를 선택하고, 이어서 선택된 수신자가 검색 화면으로부터 어떻게 통신되어야 하는지를 선택하여, 이에 의해 사용자가 선택된 수신자와 상호작용하는 것을 더 용이하게 할 수 있다. 예를 들어, 사용자를 (예컨대, 패스워드 또는 생체측정을 통해) 인증한 후에 통신 애플리케이션(예컨대, 이메일 애플리케이션)에 특정한 사용자 인터페이스가 나타날 수 있다.
이메일 컨텍스트에서, 블록(37_614)은 제안된 수신자들을 이메일 메시지의 잠재적 수신자들로서 제공할 수 있다. 이러한 컨텍스트에서, 도 37d의 예시적인 이메일 애플리케이션 인터페이스는 제안된 이메일 수신자들을 사용자에게 제공하기 위해 사용될 수 있다. 검색 컨텍스트에서, 블록(37_614)은 제안된 수신자들을 검색 인터페이스에서의 검색 결과들로서 제공하는 것을 포함할 수 있다. 예를 들어, 도 37e의 검색 인터페이스는 검색 결과들의 목록에 제안된 수신자들을 제시하는 데 사용될 수 있다.
F. 예시적인 모델
일부 실시예들에서, 모델은 데이터의 주어진 세트(또는 서브세트)에 대해 상위 N의 수신자들을 선택할 수 있다. N의 수신자들이 과거에 가장 자주 선택되었기 때문에, 향후 거동이 과거 거동을 닮아 있을 것임이 예측될 수 있다. N은 수신자들의 백분율 또는 미리결정된 수(예컨대, 1, 2, 또는 3)일 수 있는데, 이는 이벤트와 연관된 실제 과거의 수신자들이었던 수신자들의 수일 수 있다. 그러한 모델은 사용자에게 제공하기 위한 상위 N의 수신자들을 선택할 수 있다. 예컨대, N의 수신자들 각각에 대한 확률(신뢰도) 레벨을 결정하여, 이들을 사용자에게 제공할지 여부, 및 이들을 사용자에게 어떻게 제공할지(예컨대, 액션) - 이는 신뢰도 레벨에 의존할 수 있음 - 를 결정하기 위해 추가 분석이 수행될 수 있다.
N이 3인 일례에서, 모델은, 특정 서브모델에 대응하는 컨텍스트 정보로 이벤트가 발생할 때 상위 3개의 가장 많이 선택된 수신자들을 반환할 것이다.
다른 실시예들에서, 컨텍스트 정보만을 사용하여 서브모델을 선택하는 것과는 달리, 서브모델은 복합 신호를 사용할 수 있는데, 여기서 일부 컨텍스트 정보가 예측된 수신자(들)를 결정하는 데 사용된다. 예를 들어, 신경 회로망 또는 로지스틱 회귀 모델이 수신자(들)를 예측하기 위해 위치(또는 다른 특징부들)를 사용하고 그러한 특징부들의 어느 정도 선형 가중된 조합을 구축할 수 있다. 그러한 보다 복잡한 모델들은 서브모델에 대한 데이터의 양이 상당히 많을 때 보다 적합할 수 있다. 일부 실시예들은 일단 특정 노드(즉, 컨텍스트 데이터의 특정 조합)에 대해 더 많은 데이터가 획득되면 그 노드에서 사용되는 서브모델의 유형을 스위칭할 수 있다.
모델의 정확도는 상호작용 데이터 이력에 대해 테스트될 수 있다. 주어진 이벤트에 대해, 상호작용 데이터 이력은 (예컨대, 이벤트의 1분 이내와 같이, 직전 또는 직후) 이벤트와 관련하여 사용자가 어느 수신자(들)와 상호작용하였는지를 식별할 수 있다. 각각의 이벤트에 대해, 컨텍스트 데이터가 특정 모델을 결정하기 위해 사용될 수 있다. 추가로, 컨텍스트 데이터는 모델에 대한 입력 특징부들로서 사용될 수 있다.
모델(또는 서브모델)이 상위 수신자를 선택하는 일례에서, 상위 수신자가 실제로 선택되었던(즉, 통신을 전송하였던) 다수의 데이터 점들 이력은 정확한 카운트로서 결정될 수 있고, 상위 수신자가 선택되지 않았던 다수의 데이터 점들 이력은 부정확한 카운트로서 결정될 수 있다. 상위 N의 수신자들을 선택하는 모델에 대해 N이 1보다 큰 일 실시예에서, 정확한 카운트는 상위 N 수신자들 중 하나의 수신자가 통신의 수신자로서 선택된 임의의 데이터 점 이력에 대응할 수 있다.
상호작용들 이력의 제1 서브세트에 기초하여, 제1 서브모델은, 사용자가 제1 신뢰도 레벨로 이벤트와 관련하여 상호작용할 하나 이상의 수신자들의 제1 그룹의 적어도 하나의 수신자를 예측할 수 있다. 제1 서브모델은, 초기 신뢰도 레벨보다 적어도 임계량 - 이는 0 이상일 수 있음 - 더 높은 제1 신뢰도 레벨에 적어도 기초하여 생성될 수 있다. 이러한 임계량은 차이 임계치에 대응할 수 있다. 일부 구현예들에서, 제1 서브모델은, 추가 기준들이 사용될 수 있기 때문에, 이러한 기준이 만족될 때 항상 생성되지는 않을 수 있다. 신뢰도 레벨이 초기 신뢰도 레벨보다 더 크지 않은 경우, 테스트하기 위한 다른 특성이 선택될 수 있다. 신뢰도 레벨들의 이러한 비교는 정보 이득에 대해 테스트하는 것에 대응할 수 있다. 하나 이상의 수신자들의 제2 그룹을 예측하기 위한 제1 서브모델의 (제2 특성에 대한) 제2 서브모델의 제2 신뢰도 레벨을 결정하기 위해 동일한 프로세스가 반복될 수 있다. 제2 서브모델에 대한 상호작용들 이력의 제2 서브세트가 사용될 수 있다. 제3 특성 또는 더 많은 특성들이 유사한 방식으로 테스트될 수 있다.
G. 결정 트리의 재생성
실시예들은 모델들의 결정 트리를 주기적으로, 예컨대 일단위로 생성할 수 있다. 생성은 그 시간에 이용가능한 상호작용 데이터 이력을 사용할 수 있다. 따라서, 결정 트리는 하나의 생성으로부터 다른 생성으로 변경될 수 있다. 일부 실시예들에서, 결정 트리는 이전의 결정 트리들의 지식 없이 구축된다. 다른 실시예들에서, 새로운 결정 트리는, 그러한 이전의 지식, 예컨대, 어떤 서브모델들이 가능성 있는지를 아는 것으로부터, 또는 이전의 결정 트리로부터 시작함으로써 구축될 수 있다.
일부 실시예들에서, 어느 서브모델들이 가장 큰 정보 이득을 제공하는지를 결정하기 위해 모든 컨텍스트들(또는 컨텍스트들의 미리결정된 목록)이 시도된다. 예를 들어, 위치가 서브모델들로 세그먼트화하기 위해 가장 큰 정보 이득을 제공하는 경우, 적어도 하나의 특정 위치에 대한 서브모델들이 생성될 수 있다. 세그먼트화의 각각의 레벨에서, 어느 컨텍스트들이 정보 이득의 가장 높은 증가를 제공하는지를 결정하기 위해 그러한 욕심 많은 방식으로 컨텍스트들이 테스트될 수 있다.
IV. 확률의 레벨에 기초한 액션의 결정
예측 모델은 선택된 수신자(들)에 대해서뿐만 아니라 특정 액션(예컨대, 이전에 추가된 수신자들에 기초하여 이메일 상에 수신자(들)를 복사함)에 대해서도 테스트할 수 있다. 일부 실시예들에서, 일단 수신자를 선택하는 확률이 충분히 정확하다면, 단지 제안된 수신자를 제공하는 것보다는 더 적극적인 액션이 제공될 수 있다. 예를 들어, 수신자가 제공되는 경우, 그 수신자를 새로운 이메일 메시지에 수신자로서 포함시킨 상태로 이메일 애플리케이션을 자동으로 개시할 수 있다.
수신자를 선택하는 것이 충분한 확률로 예측될 때(예컨대, 신뢰도 레벨이 높은 임계치를 초과함), 예측은 액션들을 테스트하기 시작할 수 있다. 따라서, 수신자의 예측에 대해 테스트할뿐만 아니라, 특정 액션이 충분한 정확도로 예측될 수 있는지 여부도 테스트한다. 상이한 가능한 액션들(이메일, 텍스트 메시징, 캘린더, 또는 화상 회의 애플리케이션들을 포함함)이 상호작용 데이터 이력으로부터 획득될 수 있다.
따라서, 실시예들은 더 큰 신뢰도가 있을 때 수행될 액션들에 대해 보다 적극적일 수 있다. 예측 모델은, 특정 통신 수단(예컨대, 이메일, 텍스트 메시지, 음성 통화, 비디오 통화, 및 화상 회의)이 수신자와 통신하는 데 사용될 높은 확률을 가질 경우 통신 애플리케이션에 대한 특정 사용자 인터페이스를 제공할 수 있다. 예를 들어, 사용자가 제안된 수신자에게 이메일을 전송할 높은 확률이 있는 경우 이메일 애플리케이션의 인터페이스가 예측 모델에 의해 제공될 수 있다. 따라서, 일부 실시예들에서, 사용 확률이 높을수록, 단지 제안된 수신자를 제공하는 것과는 달리, 대응하는 통신 애플리케이션(예컨대, 이메일, 캘린더, 인스턴트 메시지, 텍스트 메시지, 음성 통화, 또는 화상 회의)을 사용하여 수신자와 상호작용하기 위한 인터페이스를 자동으로 제공하는 것과 같은, 보다 적극적인 액션이 취해질 수 있다.
예를 들어, 베이스 모델은, 액션이 검색 화면 상에 수신자(들)를 제안하는 것일 수 있는 소정 레벨의 통계적 유의도(정확도 및 신뢰도)를 가질 수 있다. 다른 예들로서, 보다 높은 레벨의 통계적 유의도는 화면이 환해지게 할 수 있다(이에 의해 수신자들에게 주목하게 하여, 단지 하나의 수신자가 선택될 수 있거나, 또는 특정 애플리케이션의 사용자 인터페이스(UI)(예컨대, 이메일 애플리케이션의 UI)가 제공될 수 있다).
액션은, 모델이 단지 하나의 수신자를 예측하는지 또는 수신자들의 그룹을 예측하는지 여부에 의존할 수 있다. 예를 들어, 하나 대신에 3개의 수신자 추천들을 할 기회가 있는 경우, 그것은 또한 확률 분포를 변경할 것인데, 이는 3개의 수신자들 중 임의의 하나의 선택이 정확한 예측을 제공할 것이기 때문이다. 하나의 수신자의 추천에 대해 확실하지 않았던 모델은 3개에 대해 충분히 확실할 수 있다. 실시예들은, 모델에 의해 예측되는 수신자들의 그룹에 다른 수신자(예컨대, 그룹 내에 아직 없는 다음으로 가장 가능성 있는 연락처)를 추가하는 것을 수행하여, 이에 의해 모델을 보다 확실하게 할 수 있다. 모델이 하나 초과의 연락처의 예측에 기초하는 경우, 제공되는 사용자 인터페이스는 이어서 하나 초과의 연락처와의 상호작용을 제공할 것인데, 이는 UI에 대한 형태에 영향을 미칠 수 있다. 예를 들어, 연락처들 전부가 목록에 제공될 수 있고, 하나의 연락처가 자동으로 선택되지 않을 것이다. 일 실시예에서, 예측은 상위 연락처를 포함할 수 있고, 그 연락처가 선택되는 경우, 다른 연락처들은 메시지 상에 복사될 수 있다(즉, 상호작용 데이터 이력에서의 동시 발생들로 인해 그러하다). 도 37d의 예에서, 이러한 다른 수신자들은 이메일 애플리케이션 인터페이스(37_406)의 CC/BCC 부분에 열거될 수 있다.
다수의 액션들, 및 상이한 액션들에 대한 제안이 또한 있을 수 있다. 예를 들어, 서브모델의 일부로서 체육관에서 2개의 재생목록들이 있을 수 있다(예컨대, 하나의 애플리케이션이 식별되지만, 2개의 액션들이 선택될 가능성이 유사할 때 모델에서 2개의 액션들이 식별된다). 2개의 액션들은 함께 통계적으로 유의도를 가질 수 있는 반면, 별개로는 그들은 그렇지 않았다.
일례로서, 이벤트(예컨대, 이메일을 구성하는 것)에 대한 모델이 처음 훈련될 때, 모델은 임의의 액션들을 수행하기에 충분히 확실하지 않을 수 있다. 초기 레벨의 신뢰도에서, 수신자 이름, 아이콘 또는 다른 수신자 식별자가 디스플레이될 수 있다. 다음으로 더 높은 레벨의 신뢰도에서, 수신자와 연락하는 수단(예컨대, 이메일 주소 또는 전화 번호)이 디스플레이될 수 있다. 추가 레벨의 신뢰도에서, 특정 통신 애플리케이션에 특정한 사용자 인터페이스(예컨대, 예측된 수신자를 새로운 이메일, 인스턴트 메시지, 전화 통화, 또는 비디오 통화의 수신자로서 추가하기 위한 제어부들)가 디스플레이될 수 있다. 이러한 상이한 레벨들은 신뢰도 레벨을 정의하는 데 사용되는 다양한 값들에 대한 것일 수 있다.
다른 예시적인 액션들은 지금 재생 중인 노래를 변경하는 것, 통지를 제공하는 것(이는 화면 상의 전방 및 중앙일 수 있음)을 포함할 수 있다. 액션은 디바이스를 잠금해제한 후에 발생할 수 있는데, 예컨대, 애플리케이션에 특정한 UI가 잠금해제한 후에 디스플레이될 수 있다. 액션들은 애플리케이션의 특정 기능을 시작하기 위해 딥 링크들을 사용하여 정의될 수 있다.
V. 데이터 흐름 및 모듈
도 37g은 연락할 수신자들을 제안하기 위한 예시적인 데이터 흐름도(37_700)이다. 데이터 흐름도(37_700)는 수신자 제안들(37_702)을 다양한 통신 애플리케이션들 및 상호작용 메커니즘들(37_701)에 제공한다. 도 37g의 예에서, 애플리케이션들 및 메커니즘들(37_701)은 캘린더(37_704), 메일(37_706), 메시지들(37_708), 전화(37_710), 및 비디오 통화(37_712)를 포함한다. 도 37g에 도시된 바와 같이, 예시적인 메일 애플리케이션(37_706)은 이메일 애플리케이션이고, 예시적인 메시지 애플리케이션(37_708)은 인스턴트 메시징 애플리케이션이다. 도시된 바와 같이, 전화 애플리케이션(37_710)은 음성 통화들을 시작하고 텍스트 메시지들을 구성하는 데 사용될 수 있다. 비디오 통화 애플리케이션의 일례는 페이스타임® 애플리케이션이다.
데이터 흐름도(37_700)는 수신자 제안들(37_702)이 다양한 데이터 소스들(37_714)로부터의 데이터에 기초할 수 있음을 보여준다. 데이터 소스들(37_714)은 과거의 통신들에 대한 정보를 포함할 수 있다. 데이터 소스들은 이벤트들(37_716), 검색들(37_718), 발견된 연락처들(37_720), 최근 활동(37_722), 수집 데몬(37_724), 통신 이력(37_726), 및 연락처들(37_728)을 포함할 수 있다. 데이터 소스들(37_714)은 통신 애플리케이션들 및 상호작용 메커니즘들(37_701)로부터의 데이터로 채워질 수 있다. 예를 들어, 캘린더(37_704)는 캘린더 이벤트 데이터를 이벤트들(37_716)에 제공할 수 있다. 유사하게, 전화(37_710) 및 비디오 통화(37_712)는 각각 음성 및 비디오 통화들에 대한 통화 이력을 통신 이력(37_726)에 제공할 수 있다. 도 37g의 예에서, 발견된 연락처들(37_720)은 이메일 메시지들 및 다른 유형의 메시지들(예컨대, 인스턴트 메시지들 및 텍스트 메시지들)에서 발견된 연락처들을 포함할 수 있다.
도 37h은 예시적인 상호작용 모듈(37_810)의 블록도이다. 도시된 바와 같이, 상호작용 모듈(37_810)은 기록 엔진(37_814) 및 제안 엔진(37_816)을 포함하는 데몬으로서 구현될 수 있다. 상호작용 모듈(37_810)은 상호작용 데이터베이스(37_818) 내에 상호작용들의 저장을 유지하고, 제안 엔진(37_816)을 사용하여 수신자 제안 알고리즘들을 실행시킨다. 상호작용 모듈(37_810)은 상호작용 데이터베이스(37_818)와 통신하기 위한 상호작용 저장 서비스(37_817)를 포함한다. 상호작용 모듈(37_810)은 상호작용 데이터베이스(37_818)에 질의하여 과거의 상호작용들에 대한 정보를 인출할 수 있다. 상호작용 모듈(37_810)은 또한, 상호작용 데이터베이스(37_818) 내의 테이블들을 채우기 위해 상호작용 데이터베이스(37_818)에 상호작용 데이터를 송신할 수 있다. 예를 들어, 애플리케이션(37_800)을 사용하여 이루어진 이전 통신들에 대응하는 상호작용 데이터베이스(37_818) 내의 데이터베이스 테이블들이 채워질 수 있다. 도 37h의 예에서, 상호작용 데이터베이스(37_818) 내의 테이블들 각각은 애플리케이션(37_800)이 실행하는 사용자 디바이스의 상이한 하위상태에 대응하고, 디바이스를 사용하여 수행된 다른 사용자들과의 이전의 기록된 상호작용들의 연락처 측정치들을 포함한다. 예를 들어, 기록된 상호작용은, 예컨대 이전 이메일들, 음성 통화들, 텍스트 메시지들, 인스턴트 메시지들, 비디오 통화들, 및 캘린더 초대들과 같은 다른 사용자들과의 이전 상호작용들을 포함할 수 있다.
상호작용 모듈(37_810)은 또한 애플리케이션(37_800)과 통신하기 위한 XPC 서비스(37_813)를 포함한다. 애플리케이션(37_800)은 도 37g에 도시된 통신 애플리케이션들 또는 상호작용 메커니즘들 중 하나일 수 있다. 애플리케이션(37_800)은 프레임워크(37_820)를 포함하는데, 프레임워크는 이어서 애플리케이션(37_800)을 사용하여 수행된 상호작용들 및 통신들을 기록하기 위한 상호작용 레코더(37_824)를 포함한다. 프레임워크(37_820)는 또한, 제안된 수신자들을 애플리케이션(37_800)에 제공하는 데 사용될 수 있는 상호작용 어드바이저(37_826)를 포함한다. 프레임워크(37_820)는 상호작용 레코더(37_824)를 사용하여, 상호작용들을 기록하기 위한 인터페이스를 제공할 수 있다. 상호작용 레코더(37_824) 및 상호작용 어드바이저(37_826) 인터페이스들은 XPC 서비스(37_822)를 통해 상호작용 모듈(37_810)에 데이터를 통신한다.
VI. 아키텍처
도 37i는 하나 이상의 수신자들과 상호작용하기 위해 사용자에게 사용자 인터페이스를 제공하기 위한 예시적인 아키텍처(37_900)를 도시한다. 아키텍처(37_900)는 이벤트들을 검출하고 수신자들에 대한 제안들을 제공하기 위한 요소들을 도시한다. 아키텍처(37_900)는 또한, 예컨대 통신 애플리케이션을 제안하기 위한, 다른 제안들을 제공할 수 있다. 수신자들에 대한 제안들은 제안된 애플리케이션과 함께 제공될 수 있다. 예를 들어, 아키텍처(37_900)는 제안된 수신자들을 제공하고, 또한 제안된 수신자들에게 소정의 통신 애플리케이션을 통해 연락하는 것을 추천할 수 있다. 아키텍처(37_900)는 사용자 디바이스 내에 존재할 수 있다.
상부에 UI 요소들이 있다. 도시된 바와 같이, 검색 화면(37_910), 검색 화면(37_920), 및 음성 인터페이스(37_925)가 있다. 이들은 사용자 인터페이스를 사용자에게 제공할 수 있는 방식들이다. 다른 UI 요소들이 또한 사용될 수 있다.
하부에 애플리케이션 제안 엔진(37_940) 및 수신자 제안 엔진(37_950)에 대한 데이터 소스들이 있다. 이벤트 관리자(37_942)는 이벤트들을 검출하고 이벤트에 관한 정보를 애플리케이션 제안 엔진(37_940)에 제공할 수 있다. 일부 실시예들에서, 이벤트 관리자(37_942)는 이벤트가 애플리케이션의 제안을 트리거하는지 여부를 결정할 수 있다. 애플리케이션 제안을 트리거하기 위해 미리결정된 이벤트들의 목록이 특정될 수 있다. 위치 유닛(37_944)은 사용자 디바이스의 위치를 제공할 수 있다. 예들로서, 위치 유닛(37_944)은 GPS 센서 및 모션 센서들을 포함할 수 있다. 위치 유닛(37_944)은 또한 사용자의 마지막 위치를 저장할 수 있는 다른 애플리케이션들을 포함할 수 있는데, 이는 애플리케이션 제안 엔진(37_940)으로 전송될 수 있다. 다른 컨텍스트 유닛(37_946)으로부터 다른 컨텍스트 데이터가 제공될 수 있다.
애플리케이션 제안 엔진(37_940)은 하나 이상의 애플리케이션들, 및 대응하는 액션을 식별할 수 있다. 애플리케이션 제안 엔진(37_940)과 동일한 레벨에서, 수신자 제안 엔진(37_950)은 사용자에게 제시하기 위한 제안된 수신자들을 제공할 수 있다. 이벤트 관리자(37_952)는 수신자들에 관련된 이벤트들을 검출하고 이벤트에 관한 정보를 수신자 제안 엔진(37_950)에 제공할 수 있다. 일부 실시예들에서, 이벤트 관리자(37_952)는 이벤트가 수신자들의 제안을 트리거하는지 여부를 결정할 수 있다. 수신자 제안을 트리거하기 위해 미리결정된 이벤트들의 목록이 특정될 수 있다. 상호작용 이력(37_954)은 다른 사용자들과의 이전 상호작용들 및 통신들에 대한 데이터를 제공할 수 있다. 예를 들어, 상호작용 이력(37_954)은 디바이스의 사용자와 다른 사용자들 사이에 교환된 이전 이메일들로부터 기록된 정보에 대한 데이터 소스일 수 있다. 위치 유닛(37_956)은 사용자 디바이스의 위치를 제공할 수 있다. 예를 들어, 위치 유닛(37_956)은 GPS 및 모션 센서들을 포함할 수 있다. 위치 유닛(37_956)은 또한 사용자 디바이스의 마지막 위치를 저장할 수 있는 다른 애플리케이션들을 포함할 수 있는데, 이는 수신자 제안 엔진(37_950)으로 전송될 수 있다. 다른 컨텍스트 유닛(37_958)으로부터 다른 컨텍스트 데이터가 제공될 수 있다.
제안된 수신자(들)는 제안 센터(37_930)로 제공될 수 있는데, 이는 사용자에게 무엇을 제공할지를 결정할 수 있다. 예를 들어, 제안 센터(37_930)는 제안된 애플리케이션을 제공할지 또는 수신자를 제공할지 여부를 결정할 수 있다. 다른 예들에서, 애플리케이션(들) 및 수신자(들) 양쪽 모두가 제공될 수 있다. 제안 센터는 사용자에게 제공하기 위한 최상의 방식을 결정할 수 있다. 사용자에 대한 상이한 제안들은 상이한 UI 요소들을 사용할 수 있다. 이러한 방식으로, 제안 센터(37_930)는 사용자에 대한 제안들을 제어하여서, 상이한 엔진들이 다른 엔진들에 의해 제공된 제안들을 인터럽트하지 않도록 할 수 있다. 다양한 실시예들에서, 엔진들은 제안들(추천들)을 제안 센터(37_930)로 푸시하거나, 또는 제안 센터(37_930)로부터 제안들에 대한 요청을 수신할 수 있다. 제안 센터(37_930)는 소정 시간 동안 제안을 저장할 수 있고, 이어서 제안이 사용자에게 제공되지 않았거나 또는 사용자가 사용자 인터페이스와 상호작용하지 않았는 경우 그 제안을 삭제하도록 결정할 수 있다.
제안 센터(37_930)는 또한, 제안을 언제 전송할지를 디바이스에게 알려주기 위해, 사용자 디바이스에 어떤 다른 액션들이 일어나고 있는지를 식별할 수 있다. 예를 들어, 사용자가 애플리케이션을 사용하고 있는 경우, 제안된 수신자들이 제공될 수 있지만, 애플리케이션에 대한 제안이 제공되지 않을 수도 있다. 제안 센터(37_930)는 다양한 요인들, 예컨대, 디바이스의 모션 상태, 잠금 화면이 온인지 여부, 또는 승인된 액세스가 제공되었는지 여부, 사용자가 직장, 집에서 디바이스를 사용하고 있는지 여부 등에 기초하여 제안들을 언제 전송할지를 결정할 수 있다.
일부 실시예들에서, 디바이스(37_100)(도 1a)의 소프트웨어 컴포넌트들은 수신자 제안/예측 모듈(또는 명령어들의 세트)을 포함한다. 수신자 제안 모듈은, 일부 실시예들에서, 예컨대, 도 37g 내지 도 37i를 참조하여 전술된 바와 같이, 다양한 서브모듈들 또는 시스템들을 포함할 수 있다. 수신자 제안 모듈은 방법(37_100 또는 37_600)의 전부 또는 일부를 수행할 수 있다.
사람 중심의 예측에 대한 예시적인 방법, 디바이스, 및 컴퓨터 판독가능 매체
일부 실시예들은 시스템들을 제공하고, 수신자들을 제안하기 위한 방법들이 제공된다. 디바이스에서의 사용자 입력이 제안된 수신자들을 제공하기 위한 트리거에 대응한다고 검출한 후에, 디바이스의 현재 상태를 나타내는 디바이스의 컨텍스트 정보가 결정되는데, 여기서 현재 상태는 상태 변수들에 의해 정의된다. 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 테이블들이 채워지는데, 테이블들 각각은 디바이스의 상이한 하위상태에 대응하며 상이한 수신자들과의 이전 통신들의 연락처 측정치를 포함한다. 상태 변수들은, 상태 변수들에 대응하는 테이블들의 세트를 식별하는 데 사용될 수 있다. 잠재적 수신자들에 대한 연락처 측정치들은 테이블들의 세트로부터 획득된다. 이전 통신들의 총 연락처 측정치가 각각의 잠재적 수신자에 대해 산출된다. 제안할 예측된 수신자들은 기준들을 사용하여 그리고 잠재적 수신자들의 총 연락처 측정치들에 기초하여 식별되고, 예측된 수신자들은 사용자에게 제공된다.
일부 실시예들에서, 사용자의 사용자 디바이스와 연락하기 위해 제안된 수신자들을 제공하는 컴퓨터 구현 방법이 제공되는데, 본 방법은, 사용자 디바이스에서: 사용자 디바이스에서 사용자 입력을 검출하는 단계; 사용자 입력이 제안 엔진을 통해 제안된 수신자를 제공하기 위한 트리거에 대응한다고 결정하는 단계; 사용자 디바이스의 컨텍스트 정보를 결정하는 단계 - 컨텍스트 정보는 사용자 디바이스의 현재 디바이스 상태를 나타내고, 현재 디바이스 상태는 하나 이상의 상태 변수들에 의해 정의됨 -; 사용자 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 하나 이상의 테이블들을 채우는 단계 - 하나 이상의 테이블들 각각은 사용자 디바이스의 상이한 디바이스 하위상태에 대응하며 상이한 수신자들과의 이전 통신들의 복수의 수신자 측정치들을 포함함 -; 하나 이상의 상태 변수들을 사용하여, 하나 이상의 상태 변수들에 대응하는 하나 이상의 테이블들의 제1 세트를 식별하는 단계; 테이블들의 제1 세트로부터, 하나 이상의 잠재적 수신자들에 대한 연락처 측정치들을 획득하는 단계; 하나 이상의 잠재적 수신자들 각각에 대해: 획득된 연락처 측정치들을 사용하여 이전 통신들의 총 연락처 측정치를 산출하는 단계; 제안 엔진을 사용하여, 하나 이상의 기준들을 사용하여 그리고 하나 이상의 잠재적 수신자들의 총 연락처 측정치들에 기초하여 사용자에게 제안할 하나 이상의 예측된 수신자들을 식별하는 단계; 및 하나 이상의 예측된 수신자들을 사용자에게 제공하는 단계를 포함한다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 통신 애플리케이션에서 개방 통신의 하나 이상의 수신자들을 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 하나 이상의 수신자들을 포함한다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 통신 애플리케이션에 대응하는 계정 식별자를 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 계정 식별자를 포함한다. 일부 실시예들에서, 본 방법은 사용자 디바이스의 현재 위치를 결정하는 단계를 포함하고, 컨텍스트 정보는 현재 위치를 포함하고, 현재 디바이스 상태는 현재 위치 상태를 포함하고, 현재 위치 상태는 현재 위치를 포함한다. 일부 실시예들에서, 컨텍스트 정보는 현재 시간 및 현재 날짜를 포함하고, 하나 이상의 기준들은 제안할 예측된 수신자들의 최소 개수를 포함한다. 일부 실시예들에서, 하나 이상의 기준들은 임계 신뢰도 레벨을 포함하고, 본 방법은, 사용자 디바이스에서: 하나 이상의 예측된 수신자들 각각의 각자 신뢰도 레벨에 기초하여 하나 이상의 예측된 수신자들이 사용자에게 어떻게 제공되어야 하는지를 결정하는 단계를 추가로 포함한다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 통신 애플리케이션에서 개방 통신의 제목을 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 제목을 포함한다. 일부 실시예들에서, 개방 통신의 제목은 이메일 메시지의 제목, 캘린더 이벤트의 제목, 및 화상 회의의 제목 중 하나 이상이다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 캘린더 애플리케이션에서 개방 캘린더 이벤트의 스케줄링된 시간을 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 스케줄링된 시간을 포함한다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 캘린더 애플리케이션에서 개방 캘린더 이벤트의 위치를 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 위치를 포함한다. 일부 실시예들에서, 하나 이상의 테이블들 중 하나의 테이블은 사용자 디바이스의 캘린더 하위상태에 대응하는 캘린더 테이블이고, 캘린더 테이블은 사용자 디바이스를 사용하여 이루어진 이전 캘린더 이벤트들에 대한 캘린더 초대의 수신자들에 대한 연락처 측정치들을 포함한다. 일부 실시예들에서, 하나 이상의 테이블들 중 하나의 테이블은 사용자 디바이스의 이메일 하위상태에 대응하는 이메일 테이블이고, 이메일 테이블은 사용자 디바이스를 사용하여 작성된 이전 이메일 메시지들의 수신자들에 대한 연락처 측정치들을 포함하고, 연락처 측정치들은 이전 이메일 메시지들이 작성되었을 때의 시간들, 이전 이메일 메시지들과 연관된 이메일 계정 식별자들, 이전 이메일 메시지들 상에 복사된 다른 수신자들, 및 각각의 수신자에게 전송된 다수의 이메일 메시지들을 포함한다. 일부 실시예들에서, 이전 통신들의 총 연락처 측정치를 산출하는 단계는 하나 이상의 테이블들에 질의하여 하나 이상의 잠재적 수신자들 각각으로 전송된 이전 통신들의 총 개수를 산출하는 단계를 포함한다.
일부 실시예들에서, 비일시적인 컴퓨터 판독가능 매체를 포함하는 컴퓨터 제품은, 사용자의 사용자 디바이스와 연락할 제안된 수신자들을 제공하기 위한 복수의 명령어들을 저장하는데, 복수의 명령어들은, 사용자 디바이스의 하나 이상의 프로세서들 상에서 실행될 때, 사용자 디바이스에서 사용자 입력을 검출하는 것; 사용자 입력이 제안 엔진을 통해 제안된 수신자를 제공하기 위한 트리거에 대응한다고 결정하는 것; 사용자 디바이스의 컨텍스트 정보를 결정하는 것 - 컨텍스트 정보는 사용자 디바이스의 현재 디바이스 상태를 나타내고, 현재 디바이스 상태는 하나 이상의 상태 변수들에 의해 정의됨 -; 사용자 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 하나 이상의 테이블들을 채우는 것 - 하나 이상의 테이블들 각각은 사용자 디바이스의 상이한 디바이스 하위상태에 대응하며 상이한 수신자들과의 이전 통신들의 복수의 연락처 측정치들을 포함함 -; 하나 이상의 상태 변수들을 사용하여, 하나 이상의 상태 변수들에 대응하는 하나 이상의 테이블들의 제1 세트를 식별하는 것; 테이블들의 제1 세트로부터, 하나 이상의 잠재적 수신자들에 대한 연락처 측정치들을 획득하는 것; 하나 이상의 잠재적 수신자들 각각에 대해: 획득된 연락처 측정치들을 사용하여 이전 통신들의 총 연락처 측정치를 산출하는 것; 제안 엔진을 사용하여, 하나 이상의 기준들을 사용하여 그리고 하나 이상의 잠재적 수신자들의 총 연락처 측정치들에 기초하여 사용자에게 제안할 하나 이상의 예측된 수신자들을 식별하는 것; 및 하나 이상의 예측된 수신자들을 사용자에게 제공하는 것을 포함하는 동작들을 수행한다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 통신 애플리케이션에서 개방 통신의 하나 이상의 수신자들을 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 하나 이상의 수신자들을 포함한다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 통신 애플리케이션에 대응하는 현재 시간 및 계정 식별자를 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 현재 시간 및 계정 식별자를 포함한다.
일부 실시예들에서, 사용자 디바이스와 연락할 제안된 수신자들을 제공하기 위한 사용자 디바이스가 제공되는데, 사용자 디바이스는, 입력 디바이스; 및 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은, 입력 디바이스에서, 사용자 입력을 검출하도록; 사용자 입력이 제안 엔진을 통해 제안된 수신자를 제공하기 위한 트리거에 대응한다고 결정하도록; 사용자 디바이스의 컨텍스트 정보를 결정하도록 - 컨텍스트 정보는 사용자 디바이스의 현재 디바이스 상태를 나타내고, 현재 디바이스 상태는 하나 이상의 상태 변수들에 의해 정의됨 -; 사용자 디바이스를 사용하여 이루어진 이전 통신들에 대응하는 하나 이상의 테이블들을 채우도록 - 하나 이상의 테이블들 각각은 사용자 디바이스의 상이한 디바이스 하위상태에 대응하며 상이한 수신자들과의 이전 통신들의 복수의 연락처 측정치들을 포함함 -; 하나 이상의 상태 변수들을 사용하여, 하나 이상의 상태 변수들에 대응하는 하나 이상의 테이블들의 제1 세트를 식별하도록; 테이블들의 제1 세트로부터, 하나 이상의 잠재적 수신자들에 대한 연락처 측정치들을 획득하도록; 하나 이상의 잠재적 수신자들 각각에 대해: 획득된 연락처 측정치들을 사용하여 이전 통신들의 총 연락처 측정치를 산출하도록; 제안 엔진을 사용하여, 하나 이상의 기준들을 사용하여 그리고 하나 이상의 잠재적 수신자들의 총 연락처 측정치들에 기초하여 사용자에게 제안할 하나 이상의 예측된 수신자들을 식별하도록; 그리고 하나 이상의 예측된 수신자들을 사용자에게 제공하도록 구성된다. 일부 실시예들에서, 컨텍스트 정보는 사용자 디바이스 상에서 실행 중인 통신 애플리케이션에서 개방 통신의 하나 이상의 수신자들을 포함하는데, 현재 디바이스 상태는 현재 애플리케이션 상태를 포함하고, 현재 애플리케이션 상태는 하나 이상의 수신자들을 포함한다. 일부 실시예들에서, 하나 이상의 테이블들 중 하나의 테이블은 사용자 디바이스의 이메일 하위상태에 대응하는 이메일 테이블이고, 이메일 테이블은 사용자 디바이스를 사용하여 작성된 이전 이메일 메시지들의 수신자들에 대한 연락처 측정치들을 포함하고, 연락처 측정치들은 이전 이메일 메시지들이 작성되었을 때의 시간들, 이전 이메일 메시지들과 연관된 이메일 계정 식별자들, 이전 이메일 메시지들 상에 복사된 다른 수신자들, 및 각각의 수신자에게 전송된 다수의 이메일 메시지들을 포함한다. 일부 실시예들에서, 하나 이상의 기준들은 임계 신뢰도 레벨을 포함하고, 하나 이상의 프로세서들은 추가로, 사용자 디바이스에서: 하나 이상의 예측된 수신자들 각각의 각자 신뢰도 레벨에 기초하여 하나 이상의 예측된 수신자들이 사용자에게 어떻게 제공되어야 하는지를 결정하도록 구성된다.
섹션 8: 사전행동적 어시스턴트에 대한 앱 모델
이 섹션 "사전행동적 어시스턴트에 대한 앱 모델"에서의 내용은, 일부 실시예들에 따른, 컴퓨팅 디바이스의 사용자에게 추천들을 사전행동적으로 제공하는 것에 관련된 사전행동적 어시스턴트에 대한 애플리케이션 모델 및 상세사항들을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 사용자가 액세스하는 데에 관심이 있을 수 있는 애플리케이션들을 예측하는 것을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 도 9b 및 도 9c의 예측 부분(930) 내에 예측된 콘텐츠를 채우는 것에 관련된 것들, 및 트리거 조건들의 생성 및 검출에 관련된 것들(도 4a 및 도 4b)을 보완한다. 일부 실시예들에서, 애플리케이션 예측 엔진에 그리고 검색 인터페이스 내에 포함하기 위한 애플리케이션들을 예측하는 것에 관련된 상세사항들은 또한 본 명세서에 기술된 다른 방법들에(예컨대, 방법들(600, 800, 1000, 1200)에) 적용가능하다.
사전행동적 어시스턴트에 대한 앱 모델에 대한 개요
이 섹션에 기술된 실시예들은 사용자가 그의 또는 그녀의 모바일 컴퓨팅 디바이스 상의 검색 애플리케이션을 활성화시키는 시기를 식별하기 위한 기법들을 기재한다. 구체적으로, 이 기법은, 사용자로부터의 검색 파라미터들의 입력을 수신하기 전에, 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 제시하는 것을 수반하는데, 이는 사용자가 검색 파라미터들을 검색 애플리케이션에 수동으로 제공해야 할 가능성 또는 필요성을 감소시킬 수 있다. 일부 실시예들에 따르면, 검색 애플리케이션이 활성화될 때마다(예컨대, 모바일 컴퓨팅 디바이스의 사용자 인터페이스 내에 디스플레이될 때마다) 검색 애플리케이션은 예측 엔진 - 이 섹션에서 "애플리케이션 예측 엔진"으로 지칭됨 - 과 인터페이싱하도록 구성될 수 있다. 보다 구체적으로, 검색 애플리케이션이 애플리케이션 예측 엔진과 인터페이싱할 때, 검색 애플리케이션은 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측에 대한 요청을 발행할 수 있다. 이어서, 애플리케이션 예측 엔진은 모바일 컴퓨팅 디바이스 상에 설치된 애플리케이션들과 연관된 정보를 분석하여 예측을 생성할 수 있다. 이어서, 검색 애플리케이션은 사용자에 의한 선택을 위해 검색 애플리케이션의 사용자 인터페이스 내에 예측된 하나 이상의 애플리케이션들을 디스플레이할 수 있다.
일 실시예는 모바일 컴퓨팅 디바이스의 사용자에게 예측들을 제공하기 위한 방법을 기재한다. 구체적으로, 본 방법은 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션 예측 엔진에 의해 구현되고, (1) 모바일 컴퓨팅 디바이스 상에서 실행 중인 검색 애플리케이션으로부터, 모바일 컴퓨팅 디바이스 상에 설치되며 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 제공하라는 요청을 수신하는 단계, (2) 모바일 컴퓨팅 디바이스 상에 설치된 애플리케이션들의 목록을 식별하는 단계, (3) 애플리케이션들의 목록 내에 포함된 각각의 애플리케이션에 대해: (i) 애플리케이션에 대응하는 하나 이상의 데이터 신호들에 대해 하나 이상의 기능들을 수행함으로써 애플리케이션에 대한 점수를 생성하는 단계; 및 (ii) 그 점수를 애플리케이션과 연관시키는 단계, (4) 생성된 점수들에 따라 애플리케이션들의 목록을 필터링하여 애플리케이션들의 필터링된 목록을 생성하는 단계, (5) 예측을 애플리케이션들의 필터링된 목록으로 채우는 단계, 및 (6) 예측을 검색 애플리케이션에 제공하는 단계를 포함한다.
다른 실시예는 모바일 컴퓨팅 디바이스의 사용자에게 예측들을 제시하기 위한 방법을 기재한다. 구체적으로, 본 방법은 모바일 컴퓨팅 디바이스 상에서 실행 중인 검색 애플리케이션에 의해 구현되고, (1) 검색 애플리케이션의 활성화를 검출하는 단계, (2) 모바일 컴퓨팅 디바이스 상에 설치되며 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측에 대한 요청을, 애플리케이션 예측 엔진에 발행하는 단계, (3) 애플리케이션 예측 엔진으로부터 예측을 수신하는 단계 - 예측은 하나 이상의 애플리케이션들의 목록을 포함하고, 각각의 애플리케이션은 각각의 점수와 연관됨 -, 및 (4) 점수들에 따라, 검색 애플리케이션의 사용자 인터페이스 내에, 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 엔트리를 디스플레이하는 단계를 포함한다.
또 다른 실시예는 모바일 컴퓨팅 디바이스의 사용자에게 예측들을 제시하도록 구성된 모바일 컴퓨팅 디바이스를 기재한다. 구체적으로, 모바일 컴퓨팅 디바이스는 프로세서를 포함하는데, 프로세서는, (1) 검색 애플리케이션의 활성화를 검출하는 단계, 및 (2) 검색 애플리케이션의 사용자 인터페이스 내에서 사용자로부터의 입력을 수신하기 전에: (i) 모바일 컴퓨팅 디바이스 상에 설치되며 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 목록에 대한 요청을, 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션 예측 엔진에 발행하는 단계, (ii) 애플리케이션 예측 엔진으로부터 목록을 수신하는 단계, 및 (iii) 검색 애플리케이션의 사용자 인터페이스 내에, 목록 내에 포함된 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 엔트리를 디스플레이하는 단계를 포함하는 단계들을 수행하도록 구성된 검색 애플리케이션을 실행하도록 구성된다. 상기에서 나타낸 바와 같이, 프로세서는 또한, 애플리케이션 예측 엔진을 실행하도록 구성되는데, 여기서 애플리케이션 예측 엔진은, (1) 검색 애플리케이션으로부터, 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 목록에 대한 요청을 수신하는 단계, (2) 목록을 생성하는 단계, 및 (3) 목록을 검색 애플리케이션에 제공하는 단계를 포함하는 단계들을 수행하도록 구성된다.
다른 실시예들은 명령어들을 저장하도록 구성된 비일시적인 컴퓨터 판독가능 매체를 포함하는데, 명령어들은, 프로세서에 의해 실행될 때, 프로세서로 하여금 이 섹션에 기재된 전술한 기법들 중 임의의 것을 구현하게 한다.
이 개요는 단지 이 섹션에 기술된 요지의 일부 태양들에 대한 기본적인 이해를 제공하도록 일부 예시적인 실시예들을 요약하기 위한 목적으로 제공될 뿐이다. 따라서, 전술된 특징들은 단지 예시일 뿐이고 이 섹션에 기술된 요지의 범주 또는 기술적 사상을 어떤 방식으로든 한정하여 해석되어서는 안된다는 것을 이해할 것이다. 이 섹션에 기술된 요지의 다른 특징들, 태양들, 및 이점들은 다음의 상세한 설명, 도면 및 청구범위로부터 명백해질 것이다.
이 섹션에 기술된 실시예들의 다른 태양들 및 이점들은 기술되는 실시예들의 원리들을 예로서 도시하는 첨부 도면들과 함께 취해지는 하기의 상세한 설명으로부터 명백하게 될 것이다.
사전행동적 어시스턴트에 대한 앱 모델에 대한 상세한 설명
이 섹션에서는 현재 설명된 실시예들에 따른 장치 및 방법의 대표적인 응용예들이 제공된다. 이 예들은 단지 내용을 부가하고 기술된 실시예들의 이해에 도움을 주기 위해 제공되어 있다. 따라서, 당업자에게는 현재 설명된 실시예들이 이러한 구체적인 상세내용의 일부 또는 전부 없이도 실시될 수 있음이 명백할 것이다. 다른 경우에, 잘 알려진 공정 단계들은 현재 설명된 실시예들을 불필요하게 불명확하게 하지 않도록 하기 위해 구체적으로 설명되지 않았다. 다른 적용예들도 가능하며, 따라서 이하의 예들을 제한하는 것으로 간주되어서는 안된다.
이 섹션에 기술된 실시예들은, 사용자가 그의 또는 그녀의 모바일 컴퓨팅 디바이스 상의 검색 애플리케이션을 활성화시키는 시기를 식별하고, 사용자로부터 검색 파라미터들의 입력을 수신하기 전에, 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 제시하기 위한 기법들을 기재한다. 일부 실시예들에 따르면, 검색 애플리케이션은, 검색 애플리케이션이 활성화될 때마다(예컨대, 모바일 컴퓨팅 디바이스의 사용자 인터페이스 내에 디스플레이될 때마다) 애플리케이션 예측 엔진과 인터페이싱하도록 그리고 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 위해 애플리케이션 예측 엔진에 질의하도록 구성될 수 있다. 이어서, 애플리케이션 예측 엔진은 모바일 컴퓨팅 디바이스 상에 설치된 애플리케이션들과 연관된 정보를 분석하여 예측을 생성할 수 있다. 이러한 정보는, 예를 들어, 애플리케이션 설치 타임스탬프들, 애플리케이션 활성화 타임스탬프들, 애플리케이션 활성화 총계들, 애플리케이션 사용 메트릭들, 주 사용자 인터페이스 내(예컨대, 홈 화면 상, 폴더 내 등)의 애플리케이션 아이콘들의 위치들, 사용자에 의해 최근에 제공된 검색 파라미터들, 이전 예측들이 정확했는지 여부를 나타내는 수집된 피드백 등을 포함할 수 있는데, 이는 애플리케이션 예측 엔진이 검색 애플리케이션에 의미있고 관련있는 예측들을 제공하는 것을 가능하게 할 수 있다. 이어서, 검색 애플리케이션은 사용자에 의한 선택을 위해 검색 애플리케이션의 사용자 인터페이스 내에 예측된 하나 이상의 애플리케이션들을 디스플레이할 수 있다. 특히, 이 기법은, 사용자가 특정 애플리케이션에 액세스하려고 할 때마다 그 또는 그녀가 검색 파라미터들을 입력하는 번거로운 프로세스를 겪는 일을 실질적으로 감소시킬 수 있는데, 이는 사용자의 모바일 컴퓨팅 디바이스로 그의 또는 그녀의 전반적인 만족도에 대한 상당한 개선을 제공할 수 있다.
이 섹션에 기재된 실시예들이 주로, 사용자가 액세스하기를 원할 수 있는 애플리케이션들을 예측하도록 구성되는 애플리케이션 예측 엔진들을 수반하지만, 다른 종류의 예측들(예컨대, 사용자가 연락할 가능성이 있는 사람들)을 제공하는 역할을 하는 다른 예측 엔진들이 모바일 컴퓨팅 디바이스 내에 구현될 수 있음을 주목한다. 보다 구체적으로, 그리고 일부 실시예들에 따르면, 각각의 예측 엔진은 그 자신을 모바일 컴퓨팅 디바이스 내의 특정 예측 카테고리에 대한 "전문가"로서 할당하도록 구성될 수 있다. 예를 들어, 애플리케이션 예측 엔진은 그 자신을 "애플리케이션" 예측 카테고리에 대한 전문가로서 할당하여, 애플리케이션 예측 엔진이, 모바일 컴퓨팅 디바이스의 사용자가 액세스하는 데에 관심이 있을 수 있는 애플리케이션들을 예측하는 것을 전문으로 함을 나타낼 수 있다. 일부 실시예들에 따르면, 애플리케이션 예측 엔진은 학습 모델들을 채용할 수 있는데, 학습 모델들은 애플리케이션 예측 엔진이 데이터(예컨대, 전술된 정보)를 분석하고 그 데이터에 따라 예측들을 제공하는 것을 가능하게 한다. 이러한 개시내용이 주로 학습 모델들을 구현하도록 구성된 애플리케이션 예측 엔진을 논의하지만, 거동 데이터를 분석하고 예측들을 제공하기 위한 임의의 기법이 이 섹션에 기술된 애플리케이션 예측 엔진에 의해 채용될 수 있음을 주목한다. 게다가, 애플리케이션 예측 엔진이 상이한 유형의 사용자 디바이스들(예컨대, 스마트폰들, 태블릿들, 워치들, 랩톱들 등)에 대한 전문화된 예측들을 제공하기 위해 상이한 유형의 사용자 디바이스들에 걸쳐 기능이 다를 수 있음을 주목한다. 예를 들어, 제1 유형의 애플리케이션 예측 엔진이 스마트폰들에 할당될 수 있고, 제2 유형의 애플리케이션 예측 엔진이 테블릿들에 할당될 수 있고, 기타 등등할 수 있다.
상기 기재된 바와 같이, 모바일 컴퓨팅 디바이스 상에 구현된 각각의 예측 엔진은 그 자신을 모바일 컴퓨팅 디바이스 내의 하나 이상의 예측 카테고리들에 대한 전문가로서 할당할 수 있다. 따라서, 일부 경우에, 2개 이상의 애플리케이션 예측 엔진들이 그 자신을 "애플리케이션" 예측 카테고리에 대한 전문가들로서 할당할 수 있다. 이러한 시나리오에서, 이 섹션에 기술된 검색 애플리케이션이 예측에 대한 요청을 발행할 때, 2개 이상의 애플리케이션 예측 엔진들의 각각의 애플리케이션 예측 엔진은 (예컨대, 애플리케이션 예측 엔진들에 의해 채용되는 학습 모델들에 따라) 그 자신의 분석을 수행하고, 요청에 따라 예측을 생성할 것이다. 이러한 시나리오에서, 예측에 대한 요청에 응답하여 적어도 2개 이상의 예측들이 생성되는데, 이는 검색 애플리케이션이 해석할 수 없는 중복들 및 경쟁 예측들을 확립할 수 있다.
따라서, 실시예들은 또한, 애플리케이션 예측 엔진들과 검색 애플리케이션 사이의 중계자로서의 역할을 하도록 구성되는 "예측 센터"를 기재한다. 이러한 기능을 제공하기 위해, 예측 엔진들이 그들 자신을 하나 이상의 예측 카테고리들(예컨대, "애플리케이션" 예측 카테고리)에 대한 전문가들로서 초기화하고 할당하려고 할 때, 예측 센터는 예측 엔진들(예컨대, 애플리케이션 예측 엔진들)에 대한 레지스트라(registrar)로서의 역할을 하도록 구성될 수 있다. 유사하게 그리고 일부 실시예들에 따르면, 예측 센터는 또한, 모바일 컴퓨팅 디바이스 내의 상이한 유형의 예측 카테고리들을 관리하도록 구성될 수 있어서, 소비자 애플리케이션들(예컨대, 이 섹션에 기술된 검색 애플리케이션)이 예측 센터에 질의하여 제공될 수 있는 예측들의 카테고리들을 식별할 수 있도록 한다. 이러한 방식으로, 소비자 애플리케이션이 특정 예측 카테고리에 대한 예측에 대한 요청을 발행하고, 2개 이상의 예측 엔진들이 그들 각각의 예측(들)으로 응답할 때, 예측 센터는 소비자 애플리케이션에 의해 발행된 요청에 응답하기 전에 예측들을 수신 및 프로세싱하도록 구성될 수 있다. 예측들을 프로세싱하는 것은, 예를 들어, 예측들에 걸쳐 존재하는 중복 정보(duplicate information)를 제거하는 것, 예측 엔진들과 연관된 성능(즉, 정확도) 메트릭들 이력에 따라 예측들에 가중치들을 적용하는 것, 그들의 예측들을 생성할 때 예측 엔진들에 의해 광고되는 점수들에 따라 예측들을 분류하는 것 등을 수반할 수 있다. 이러한 방식으로, 예측 센터는 다수의 예측들을 최적화된 예측으로 추출하고 최적화된 예측을 소비자 애플리케이션에 제공할 수 있다. 따라서, 이러한 설계는 소비자 애플리케이션들의 동작 요건들을 유익하게 단순화하고(그들이 다수의 예측들을 프로세싱할 필요가 없기 때문임), 예측 센터에 무거운 짐을 통합하고, 관심 대상의 예측 카테고리에 대한 전문가들로서 자신들을 할당한 다양한 예측 엔진들의 입력을 나타내는 예측을 소비자 애플리케이션이 획득하는 것을 가능하게 한다.
따라서, 상기 기재된 상이한 기법들은, 검색 애플리케이션이 예측 센터와 상호작용하여, 전반적인 사용자 경험을 향상시키는 데 잠재적으로 사용될 수 있는 예측들을 수신하는 것을 가능하게 한다. 일부 경우들에서, 검색 애플리케이션이, 예측이 정확했는지 여부를 나타내기 위해 피드백을 예측 센터/애플리케이션 예측 엔진에 제공하는 것이 중요할 수 있다. 그러한 피드백은, 예를 들어, 학습 알고리즘들이 애플리케이션 예측 엔진들에 의해 구현될 때 유익할 수 있는데, 이는 피드백이 학습 알고리즘들을 "훈련"시키고 그들의 예측들의 전반적인 정확도를 개선하는 데 사용될 수 있기 때문이다. 예를 들어, 애플리케이션 예측 엔진이, 특정 애플리케이션이 사용자에 의해 활성화될 가능성이 가장 크다는 예측을 생성할 때(예컨대, 사용자로부터 검색 입력을 수신하기 전에 검색 애플리케이션 내에 디스플레이될 때), 검색 애플리케이션은, 예측이 참으로 유지됨(예컨대, 특정 애플리케이션이 사용자에 의해 선택되고 활성화되었음)을 나타내는 피드백을 제공할 수 있다. 이어서, 애플리케이션 예측 엔진은, 예측 엔진에 의해 유사한 후속 예측들이 생성될 때 광고되는 점수들을 증가시킬 수 있다.
추가로, 예측 센터의 아키텍처는 이 섹션에 기술된 상이한 엔티티들 - 예컨대, 애플리케이션 예측 엔진들 - 이 모바일 컴퓨팅 디바이스 내의 모듈형 컴포넌트들로서 기능할 수 있게 하는 방식으로 구성될 수 있음을 주목한다. 하나의 아키텍처 접근법에서, 각각의 애플리케이션 예측 엔진은, 포맷(예컨대, 트리형 구조)이 예측 센터에 의해 이해되는 번들로서 구성될 수 있고, 예측 센터가 애플리케이션 예측 엔진의 기능을 구현하기 위한 플랫폼으로서 기능할 수 있게 한다. 이러한 접근법에 따르면, 예측 센터는, 예를 들어 모바일 컴퓨팅 디바이스 내에 상주하는 상이한 번들들을 식별하기 위해 (예컨대, 초기화할 때) 상이한 파일 시스템 경로들을 파싱하도록 구성될 수 있다. 이러한 방식으로, 번들들은 편리하게 모바일 컴퓨팅 디바이스의 파일 시스템에 추가되고, 그의 내부에서 업데이트되고, 그로부터 제거되어서, 이에 의해 모듈형 구성을 촉진시킬 수 있는데, 모듈형 구성은 모바일 컴퓨팅 디바이스에 실질적인 업데이트들(예컨대, 운영 체제 업그레이드들)을 요구할 필요없이 시간 경과에 따라 효율적으로 진화할 수 있다. 예를 들어, 애플리케이션 예측 엔진은, 애플리케이션 예측 엔진에 의해 구현되는 로직의 전부 또는 일부가 (예컨대, 무선(OTA) 업데이트를 통해) 업데이트될 수 있게 하는 방식으로 구성될 수 있다. 전술한 아키텍처들이 예시적이고, 이 섹션에 기술된 다양한 엔티티들이 서로 통신하며 그들의 상이한 기능들을 제공할 수 있게 하는 임의의 아키텍처가 사용될 수 있음을 주목한다.
추가적으로, 예측 센터/애플리케이션 예측 엔진들은 또한, 예측들을 생성할 때 발생하는 프로세싱의 양을 감소시키기 위해 사용될 수 있는 하나 이상의 캐시들을 구현하도록 구성될 수 있다. 일부 실시예들에 따르면, 예측은, 생성 시에, 예측이 저장되는 캐시로부터 예측이 제거되어야 하는 시기를 나타내는 "유효성 파라미터들"을 동반할 수 있다. 유효성 파라미터들 - 이 섹션에서는 "만료 정보"로도 지칭됨 - 은, 예를 들어, 시간-기반 만료들, 이벤트-기반 만료들 등을 정의할 수 있다. 이러한 방식으로, 애플리케이션 예측 엔진이 검색 애플리케이션으로부터 예측에 대한 요청들을 자주 수신할 때, 애플리케이션 예측 엔진은, 예측에 대한 반복된 요청들을 프로세싱할 때 달리 발생할 향후 프로세싱의 양을 실질적으로 감소시키기 위해 예측을 생성하여 캐시에 저장할 수 있다. 예측 센터/애플리케이션 예측 엔진들이 다양한 접근법들을 사용하여 예측들을 캐시에 저장하도록 구성될 수 있음을 주목한다. 예를 들어, 이용가능한 캐시 메모리가 제한될 때, 예측 센터/애플리케이션 예측 엔진들은 예측들을 임계 횟수로 (예컨대, 시간 윈도우 내에서) 생성하도록, 그리고 임계치가 만족될 때, 예측을 캐시에 저장하고 (만료 정보가 예측이 유효함을 나타내는 한) 예측에 대한 후속 요청들을 위해 캐시를 참조하는 것으로 전이하도록 구성될 수 있다.
따라서, 이 섹션에 기술된 실시예들은, 사용자가 그의 또는 그녀의 모바일 컴퓨팅 디바이스 상의 검색 애플리케이션을 활성화시키는 시기를 식별하고, 사용자로부터 검색 파라미터들의 입력을 수신하기 전에, 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 제시하기 위한 기법들을 기재한다. 이들 기법들에 대한 보다 상세한 논의는 이하에서 기재되며, 이들 기법들을 구현하는데 사용될 수 있는 시스템들, 방법들, 및 사용자 인터페이스들의 상세한 다이어그램들을 도시하는 도 38a 내지 도 38d와 함께 기술된다.
도 38a은 일부 실시예들에 따른, 이 섹션에 기술된 다양한 기법들을 구현하도록 구성된 모바일 컴퓨팅 디바이스(38_100)의 상이한 컴포넌트들의 블록도를 예시한다. 보다 구체적으로, 도 38a은 도시된 바와 같이, 예측 센터(38_102), 애플리케이션 예측 엔진(38_104), 및 검색 애플리케이션(38_116)을 구현하도록 구성되는 모바일 컴퓨팅 디바이스(38_100)의 고레벨 개요를 예시한다. 일부 실시예들에 따르면, 예측 센터(38_102), 애플리케이션 예측 엔진(38_104), 및 검색 애플리케이션(38_116)은 모바일 컴퓨팅 디바이스(38_100) 상에서 실행하도록 구성되는 운영 체제(OS)(도 38a에는 예시되지 않음) 내에서 구현될 수 있다. 도 38a에 도시된 바와 같이, 예측 센터(38_102)는 애플리케이션 예측 엔진(38_104)과 검색 애플리케이션(38_116) 사이의 중계자로서의 역할을 하도록 구성될 수 있다. 도 38a에 예시되지 않지만, 예측 센터(38_102)는 집계기를 구현하도록 구성될 수 있는데, 집계기는, 예컨대, 2개 이상의 애플리케이션 예측 엔진들(38_104)이 구현되고 검색 애플리케이션(38_116)에 의해 발행된 요청에 응답하여 2개 이상의 예측들이 생성될 때 다수의 예측들을 통합하도록 구성된다. 그러나, 애플리케이션 예측 엔진(38_104) 및 검색 애플리케이션(38_116) 양쪽 모두는 서로 직접 통신하여 예측 센터(38_102)가 모바일 컴퓨팅 디바이스(38_100) 내에 구현될 필요성을 감소시키거나 또는 심지어 제거하도록 구성될 수 있음을 주목한다. 애플리케이션 예측 엔진(38_104) 및 검색 애플리케이션(38_116)이 서로 논리적으로 분리되도록 요구되지 않고 이러한 엔티티들에 의해 구현된 상이한 기능들이 동일한 결과들을 제공하는 상이한 아키텍처 접근법들을 확립하도록 조합될 수 있음을 추가로 주목한다.
도 38a에 도시된 바와 같이, 예측들(38_112)이 애플리케이션 예측 엔진(38_104)과 검색 애플리케이션(38_116) 사이에서 통신될 수 있는데, 예컨대, 예측 센터(38_102)는 애플리케이션 예측 엔진(38_104)에 의해 생성된 예측들(38_112)을 수신하고 예측들(38_112)을 검색 애플리케이션(38_116)으로 전송할 수 있다. 피드백(38_114)이 또한 애플리케이션 예측 엔진(38_104)과 검색 애플리케이션(38_116) 사이에서 통신될 수 있는데, 예컨대, 예측 센터(38_102)는 검색 애플리케이션(38_116)으로부터 피드백(38_114)을 수신하고 피드백(38_114)을 애플리케이션 예측 엔진(38_104)에 제공하여, 애플리케이션 예측 엔진(38_104)이 시간 경과에 따라 예측(38_112) 정확도를 증가시킬 수 있도록 할 수 있다.
추가적으로, 예측 센터(38_102)는 캐시를 구현하도록 구성될 수 있는데, 캐시는, 모바일 컴퓨팅 디바이스(38_100)에서의 프로세싱 및 에너지 소비 효율을 증가시키기 위한 시도로 예측 센터(38_102)/애플리케이션 예측 엔진(38_104)이 예측들(38_112)을 캐시에 저장할 수 있게 한다. 예를 들어, 캐시는 다수의 엔트리들을 포함할 수 있는데, 여기서 각각의 엔트리는 예측(38_112), 및 예측(38_112)이 얼마나 오래 유효한 것으로 고려되는지를 나타내는 만료 정보를 포함한다. 만료 정보는, 예를 들어, 시간-기반 만료들, 이벤트-기반 만료들 등을 포함할 수 있다. 이러한 방식으로, 애플리케이션 예측 엔진(38_104)이 예측(38_112)에 대한 요청들을 자주 수신할 때, 애플리케이션 예측 엔진(38_104)은, 모바일 컴퓨팅 디바이스(38_100)에서 달리 발생할 프로세싱의 양을 실질적으로 감소시키기 위해 예측(38_112)을 생성하여 캐시에 저장하여, 이에 의해 성능을 향상시킬 수 있다.
이 섹션에서 이전에 기재된 바와 같이, 애플리케이션 예측 엔진(38_104)은 다양한 아키텍처 접근법들을 사용하여 구현될 수 있는데, 예컨대, 애플리케이션 예측 엔진(38_104)은, 예측 센터(38_102)에 의해 지원되고 애플리케이션 예측 엔진(38_104)에 의해 이용되는 API 커맨드들을 통해 예측 센터(38_102)와 통신하며 예측 센터(38_102)의 외부에 있는 독립형 실행 파일일 수 있고, 애플리케이션 예측 엔진(38_104)은, 모바일 컴퓨팅 디바이스(38_100)의 파일 시스템 내에 저장되고 예측 센터(38_102) 등에 의해 해석되고 구현되는 번들일 수 있다. 도 38a에 도시된 바와 같이, 애플리케이션 예측 엔진(38_104)은, 애플리케이션 예측 엔진(38_104)이 검색 애플리케이션(38_116)에 대한 예측들을 생성하는 방식을 구술하는 구성 파라미터들(38_106)을 포함할 수 있다. 특히, 구성 파라미터들(38_106)은, 데이터 신호들(38_110) - 이는 모바일 컴퓨팅 디바이스(38_100) 내의 애플리케이션 예측 엔진(38_104)에 이용가능한 설치된 애플리케이션 정보(38_108)에 대응함 - 이 애플리케이션 예측 엔진(38_104)에 의해 수신되며 애플리케이션 예측 엔진(38_104) 에 의해 프로세싱되는 방식을 정의할 수 있다. 일부 실시예들에 따르면, 데이터 신호들(38_110)은 애플리케이션 설치 타임스탬프들(예컨대, 각각의 애플리케이션이 설치된 시기), 애플리케이션 활성화 타임스탬프들(예컨대, 각각의 애플리케이션이 활성화된 마지막 시간), 애플리케이션 활성화 총계들(예컨대, 애플리케이션이 활성화된 총 횟수), 애플리케이션 사용 메트릭들(예컨대, 애플리케이션이 활성화되는 빈도) 등을 나타낼 수 있다. 데이터 신호들(38_110)은 또한, 모바일 컴퓨팅 디바이스(38_100)의 주 사용자 인터페이스 내의(예컨대, 홈 화면 상의, 폴더 내의 등) 애플리케이션 아이콘들의 위치들, 사용자에 의해 최근에 제공된 애플리케이션 검색 파라미터들, 애플리케이션 예측 엔진(38_104)에 의해 제공된 이전 예측들이 정확했는지 여부를 나타내는 수집된 피드백 등을 포함할 수 있다.
도 38a에 예시되지 않지만, 애플리케이션 예측 엔진(38_104)은 학습 모델들을 구현하도록 구성될 수 있는데, 학습 모델들은 애플리케이션 예측 엔진(38_104)이, 시간 경과에 따라 진화하고 모바일 컴퓨팅 디바이스(38_100)의 사용자와 관련되어 유지되는 예측들(38_112)을 제공할 수 있게 한다. 일부 실시예들에 따르면, 학습 모델들은, 정보(예컨데, 데이터 신호들(38_110))를 분석하고, 모바일 컴퓨팅 디바이스(38_100)를 동작시킬 때 사용자의 전반적인 경험을 향상시킬 수 있는 예측들(38_112)을 생성하도록 구성되는 알고리즘들을 나타낼 수 있다. 일부 실시예들에 따르면, 애플리케이션 예측 엔진(38_104)에 의해 프로세싱되는 정보는, 모바일 컴퓨팅 디바이스(38_100) 내의 다양한 소스들, 예컨대, 모바일 컴퓨팅 디바이스(38_100) 상에 구현되는 파일 시스템들, 검색 애플리케이션(38_116)에 의해 제공되는 피드백 정보, 모바일 컴퓨팅 디바이스(38_100)의 센서들(예컨대, 글로벌 포지셔닝 시스템(GPS) 센서들, 마이크로폰 센서들, 온도 센서들, 가속도계 센서들 등)에 의해 수집된 정보, 외부 소스들(예컨대, 모바일 컴퓨팅 디바이스(38_100) 상에서 실행 중인 다른 애플리케이션들, OS 커널 등)에 의해 제공된 정보 등으로부터 수집될 수 있다.
추가적으로 그리고 도 38a에 도시된 바와 같이, 모바일 컴퓨팅 디바이스(38_100)는, 애플리케이션 예측 엔진(38_104), 예측 센터(38_102), 및 검색 애플리케이션(38_116) 중 하나 이상을 부분적으로 또는 완전히 업데이트하는 데 사용될 수 있는 무선(OTA) 업데이트들(38_122)을 수신하기 위해 (예컨대, 인터넷 연결을 통해) 하나 이상의 서버들(38_120)과 인터페이싱하도록 구성될 수 있다. 따라서, 도 38a은 이 섹션에 기재된 기법들을 구현하기 위해 사용될 수 있는 다양한 컴포넌트들의 고레벨 개요를 제공한다.
도 38b도 38b 실시예들에 따른, 애플리케이션 예측 엔진(38_104)에 의해 구현되는 방법(38_200)을 예시한다. 방법(38_200)은 애플리케이션 예측 엔진(38_104)과 검색 애플리케이션(38_116)이 서로 간에 직접 통신하는 것으로서 기술되어 있지만, 예측 센터(38_102)가 이 섹션에 기술된 예측 센터(38_102)에 의해 제공된 다양한 기능들에 따라 애플리케이션 예측 엔진(38_104)과 검색 애플리케이션(38_116) 사이의 중계자로서의 역할을 할 수 있음을 주목한다. 도시된 바와 같이, 방법(38_200)은, 애플리케이션 예측 엔진(38_104)이 검색 애플리케이션(38_116)으로부터, 모바일 컴퓨팅 디바이스(38_100)의 사용자가 액세스하는 데에 관심이 있을 수 있는 모바일 컴퓨팅 디바이스(38_100) 상에 설치된 하나 이상의 애플리케이션들의 예측(38_112)을 제공하라는 요청을 수신하는, 단계(38_202)에서 시작한다. 이러한 요청은, 모바일 컴퓨팅 디바이스(38_100) 상에서 활성화 중인 검색 애플리케이션에 응답하여, 예컨대, 모바일 컴퓨팅 디바이스(38_100)의 사용자가 검색 애플리케이션으로 하여금 활성화되게 하는 제스처를 입력할 때, 검색 애플리케이션(38_116)에 의해 발행될 수 있다.
단계(38_204)에서, 애플리케이션 예측 엔진(38_104)은 모바일 컴퓨팅 디바이스(38_100) 상에 설치된 애플리케이션들의 목록을 식별한다. 이러한 정보는, 예를 들어, 설치된 애플리케이션 정보(38_108) 및 데이터 신호들(38_110)에 의해 획득될 수 있다. 단계(38_206)에서, 애플리케이션 예측 엔진(38_104)은 현재 애플리케이션을 애플리케이션들의 목록에서의 제1 애플리케이션으로서 설정한다. 단계(38_208)에서, 애플리케이션 예측 엔진(38_104)은 현재 애플리케이션에 대응하는 하나 이상의 데이터 신호들(38_110)에 대해 하나 이상의 기능들을 수행함으로써 현재 애플리케이션의 점수를 생성한다. 일부 실시예들에 따르면, 데이터 신호(38_110)에 대해 기능을 수행하는 것은, 데이터 신호(38_110)에 대한 점수를 계산하는 것, 및 데이터 신호(38_110)와 연관된 고정된 가중치에 따라 점수를 조정하는 것을 수반할 수 있다. 예를 들어, 데이터 신호(38_110)가 애플리케이션의 설치 날짜에 대응할 때, 점수는 애플리케이션이 설치된 이후로 경과하였는 시간에 기초할 수 있는데, 예컨대, 보다 최근의 설치 날짜에 대해 보다 높은 점수이다. 일부 경우들에서, 점수는 감쇠 값(예컨대, 반감기)에 따라 조정될 수 있는데, 이는 애플리케이션들과 연관된 시간 정보(예컨대, 애플리케이션 설치 타임스탬프들, 애플리케이션 활성화 타임스탬프들 등)를 나타내는 데이터 신호들(38_110)에 특히 적용될 수 있다. 이어서, 데이터 신호(38_110)와 연관된 고정된 가중치가 점수에 적용되어 점수의 업데이트된 형태를 생성할 수 있다. 이러한 방식으로, 그리고 현재 애플리케이션에 대응하는 하나 이상의 데이터 신호들(38_110)에 대한 하나 이상의 기능들의 완료 시에, 예측 엔진은 현재 애플리케이션에 대한 점수의 최종 형태(예컨대, 개별 점수들의 합계)를 생성할 수 있다.
단계(38_210)에서, 애플리케이션 예측 엔진(38_104)은 추가 애플리케이션들이 애플리케이션들의 목록 내에 포함되는지 여부를 결정한다. 단계(38_210)에서, 애플리케이션 예측 엔진(38_104)이, 추가 애플리케이션들이 애플리케이션들의 목록 내에 포함된다고 결정하는 경우, 방법(38_200)은 단계(38_212)로 진행한다. 그렇지 않으면, 방법(38_200)은 단계(38_214)로 진행하는데, 이는 아래에서 더욱 상세하게 기술된다. 단계(38_212)에서, 애플리케이션 예측 엔진(38_104)은 현재 애플리케이션을 애플리케이션들의 목록에서의 다음 애플리케이션으로서 설정한다. 단계(38_214)에서, 애플리케이션 예측 엔진(38_104)은, (1) 생성된 점수들, 및 (2) 단계(38_202)에서 수신된 요청에 따라 애플리케이션들의 목록을 필터링한다. 예를 들어, 요청은 (예컨대, 화면 크기 또는 해상도 설정값에 따라) 3개의 애플리케이션 제안들만이 모바일 컴퓨팅 디바이스(38_100)의 사용자 인터페이스 내에 디스플레이될 수 있음을 나타낼 수 있는데, 이는 애플리케이션 예측 엔진(38_104)으로 하여금 애플리케이션들의 목록으로부터, 점수들이 목록의 상위 3개의 위치들에 있지 않은 임의의 애플리케이션들을 제거하게 할 수 있다. 단계(38_216)에서, 애플리케이션 예측 엔진(38_104)은 예측(38_112)을 애플리케이션들의 필터링된 목록으로 채우고, 예측(38_112)을 검색 애플리케이션(38_116)에 제공한다.
도 3은 일부 실시예들에 따른, 검색 애플리케이션(38_116)에 의해 구현되는 방법(38_300)을 예시한다. 도시된 바와 같이, 방법(38_300)은, 검색 애플리케이션(38_116)이 활성화되는 단계(38_302)에서 시작한다. 단계(38_304)에서, 검색 애플리케이션(38_116)은 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측(38_112)에 대한 요청을 발행한다. 단계(38_306)에서, 검색 애플리케이션(38_116)은 요청에 응답하여 예측(38_112)을 수신하는데, 여기서 예측(38_112)은 하나 이상의 애플리케이션들의 목록을 포함하고, 각각의 애플리케이션이 각각의 점수와 연관된다. 단계(38_308)에서, 검색 애플리케이션(38_116)은, 점수들에 따라, 검색 애플리케이션(38_116)의 사용자 인터페이스 내에, 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 엔트리를 디스플레이한다(예컨대, 도 38d에 예시되고 후술되는 바와 같음). 단계(38_310)에서, 검색 애플리케이션(38_116)은 사용자 인터페이스를 통해 사용자 입력을 수신한다.
단계(38_312)에서, 검색 애플리케이션(38_116)은 사용자 입력이 사용자 인터페이스 엔트리에 대응하는지 여부를 결정한다. 단계(38_312)에서, 검색 애플리케이션(38_116)이, 사용자 입력이 사용자 인터페이스 엔트리에 대응한다고 결정하는 경우, 방법(38_300)은 단계(38_314)로 진행한다. 그렇지 않으면, 방법(38_300)은 단계(38_318)로 진행하는데, 이는 아래에서 더욱 상세하게 기술된다. 단계(38_314)에서, 검색 애플리케이션(38_116)은 사용자 인터페이스 엔트리에 대응하는 애플리케이션을 활성화시킨다. 단계(38_316)에서, 검색 애플리케이션(38_116)은 애플리케이션이 활성화되었음을 나타내는 피드백을 제공한다. 마지막으로, 단계(38_318)에서, 검색 애플리케이션(38_116)은 자신을 비활성화시킨다.
도 38d는 일부 실시예들에 따른, 이 섹션에 기술된 검색 애플리케이션(38_116)의 예시적인 사용자 인터페이스(38_402)의 개념도(38_400)를 예시한다. 도 38d에 도시된 바와 같이, 사용자 인터페이스(38_402)는 모바일 컴퓨팅 디바이스(38_100)의 사용자가 (예컨대, 사용자 인터페이스(38_402) 내에 포함된 가상 키보드(38_408)를 사용하여) 검색 파라미터들을 입력할 수 있게 하는 검색 필드(38_404)를 포함할 수 있다. 게다가, 사용자 인터페이스(38_402)는 사용자가 활성화시키는 데에 관심이 있을 수 있는 애플리케이션들에 대한 다수의 사용자 인터페이스 엔트리들(38_406)의 목록을 포함할 수 있는데, 이는 이 섹션에 기술된 애플리케이션 예측 엔진(38_104)에 의해 생성된 예측들(38_112)에 의해 획득될 수 있다. 이어서, 피드백이 사용자에 의해 제공될 때 - 이는, 예를 들어, 검색을 취소하는 것, 제안된 앱들을 무시하고 검색 파라미터들을 입력하는 것, 또는 사용자 인터페이스 엔트리들(38_406) 중 하나의 사용자 인터페이스 엔트리를 선택하는 것을 포함할 수 있음 -, 피드백은 처리하기 위해 애플리케이션 예측 엔진(38_104)으로 전송될 수 있다.
상기 도 1a는 일부 실시예들에 따른, 이 섹션에 기술된 다양한 컴포넌트들을 구현하는 데 사용될 수 있는 컴퓨팅 디바이스(100)의 상세도를 도시한다. 특히, 상세도는 도 37a에 도시된 모바일 컴퓨팅 디바이스(37_100)에 포함될 수 있는 다양한 컴포넌트들을 도시한다.
사전행동적 어시스턴트에 대한 앱 모델에 대한 예시적인 방법 및 디바이스
이 섹션에 기술된 실시예들은, 사용자가 그의 또는 그녀의 모바일 컴퓨팅 디바이스 상의 검색 애플리케이션을 활성화시키는 시기를 식별하고, 사용자로부터 검색 파라미터들의 입력을 수신하기 전에, 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 제시하기 위한 기법들을 기재한다. 일부 실시예들에 따르면, 검색 애플리케이션은, 검색 애플리케이션이 활성화될 때마다 "애플리케이션 예측 엔진"과 인터페이싱하도록 그리고 사용자가 액세스하는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측을 위해 애플리케이션 예측 엔진에 질의하도록 구성될 수 있다. 이어서, 애플리케이션 예측 엔진은 모바일 컴퓨팅 디바이스 상에 설치된 애플리케이션들과 연관된 정보를 분석하여 예측을 생성할 수 있다. 예측을 사용하여, 검색 애플리케이션은 사용자에 의한 선택을 위해 검색 애플리케이션의 사용자 인터페이스 내에 예측된 하나 이상의 애플리케이션들을 디스플레이할 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스의 사용자에게 예측들을 사전행동적으로 제공하기 위한 방법이 제공되는데, 본 방법은, 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션 예측 엔진에서: 모바일 컴퓨팅 디바이스 상에 설치된 애플리케이션들의 목록 내에 포함된 각각의 애플리케이션에 대해: 애플리케이션에 대한 점수를 확립하기 위해 애플리케이션에 대응하는 적어도 하나의 데이터 신호에 대해 적어도 하나의 기능을 수행하는 단계 - 점수는 애플리케이션이 사용자에 의해 활성화될 가능성을 나타냄 -, 및 점수를 애플리케이션과 연관시키는 단계; 및 모바일 컴퓨팅 디바이스 상에서 실행 중인 검색 애플리케이션에 예측을 제공하는 단계를 포함하고, 예측은 애플리케이션들의 목록 및 그들의 연관된 점수들을 포함한다. 일부 실시예들에서, 본 방법은, 검색 애플리케이션에 예측을 제공하는 단계 이전에, 검색 애플리케이션으로부터, 예측에 대한 요청을 수신하는 단계를 포함하고, 검색 애플리케이션은, 검색 애플리케이션의 활성화에 응답하여 그리고 사용자로부터의 검색 입력을 수신하기 전에 요청을 발행한다. 일부 실시예들에서, 요청은 예측에 포함된 애플리케이션들의 목록 내에 포함되어야 하는 애플리케이션들의 특정 개수를 나타낸다. 일부 실시예들에서, 본 방법은, 애플리케이션들의 목록 내에 포함된 각각의 애플리케이션에 대해: 적어도 하나의 데이터 신호와 연관되는 가중치에 따라 점수를 조정하는 단계를 포함한다. 일부 실시예들에서, 적어도 하나의 데이터 신호가 모바일 컴퓨팅 디바이스 내의 애플리케이션 액세스의 시간적 측면에 대응할 때, 적어도 하나의 데이터 신호에 대해 적어도 하나의 기능을 수행하는 단계는, 적어도 하나의 데이터 신호와 연관되는 가중치에 따라 점수를 조정하는 단계 이전에: 적어도 하나의 데이터 신호에 적용되는 감쇠 요인에 따라 적어도 하나의 데이터 신호에 대한 점수를 조정하는 단계를 추가로 포함한다. 일부 실시예들에서, 적어도 하나의 데이터 신호는, 애플리케이션 설치 타임스탬프들, 애플리케이션 활성화 타임스탬프들, 애플리케이션 활성화 총계들, 애플리케이션 사용 메트릭들, 모바일 컴퓨팅 디바이스의 주 사용자 인터페이스 내의 애플리케이션 아이콘들의 위치들, 사용자에 의해 최근에 제공된 검색 파라미터들, 및 이전 예측들이 정확했는지 여부를 나타내는 수집된 피드백 중 하나 이상으로부터 선택된다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스의 주 사용자 인터페이스 내의 애플리케이션 아이콘의 위치는, 애플리케이션 아이콘이 포함되는 주 사용자 인터페이스의 페이지 번호, 및 애플리케이션이 주 사용자 인터페이스 내의 폴더에 포함되어 있는지 여부를 나타낼 수 있다. 일부 실시예들에서, 본 방법은, 검색 애플리케이션에 예측을 제공하는 단계 이후에: 검색 애플리케이션으로부터 피드백을 수신하는 단계 - 피드백은 검색 애플리케이션에 예측을 제공하는 것에 후속하는 사용자의 거동을 나타냄 -; 및 검색 애플리케이션으로부터 수신된 피드백을 반영하도록 수집된 피드백을 업데이트하는 단계를 포함한다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스의 사용자에게 예측들을 사전행동적으로 제시하기 위한 방법이 제공되는데, 본 방법은, 모바일 컴퓨팅 디바이스 상에서 실행 중인 검색 애플리케이션에서: 검색 애플리케이션의 활성화를 검출하는 단계; 모바일 컴퓨팅 디바이스 상에 설치되며 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 예측에 대한 요청을, 애플리케이션 예측 엔진에 발행하는 단계; 애플리케이션 예측 엔진으로부터 예측을 수신하는 단계 - 예측은 하나 이상의 애플리케이션들의 목록을 포함하고, 각각의 애플리케이션은 각자의 점수와 연관됨 -; 및 점수들에 따라, 검색 애플리케이션의 사용자 인터페이스 내에, 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 엔트리를 디스플레이하는 단계를 포함한다. 일부 실시예들에서, 요청은, 검색 애플리케이션의 사용자 인터페이스 내에 포함된 검색 필드를 통해 검색 입력을 수신하기 전에 애플리케이션 예측 엔진에 발행된다. 일부 실시예들에서, 본 방법은, 검색 애플리케이션의 사용자 인터페이스를 통해 사용자 입력을 수신하는 단계; 및 사용자 입력과 연관된 정보를 피드백의 형태로 제공하는 단계를 포함한다. 일부 실시예들에서, 피드백은 사용자가 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 엔트리를 선택하였는지 또는 검색 파라미터들을 입력하였는지 여부를 나타낸다. 일부 실시예들에서, 요청은 예측에 포함되어야 하는 애플리케이션들의 특정 개수를 나타내고, 애플리케이션들의 특정 개수는 검색 애플리케이션의 사용자 인터페이스 내에서 사용자에게 디스플레이될 수 있는 애플리케이션들에 대한 사용자 인터페이스 엔트리들의 개수에 기초한다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스의 사용자에게 예측들을 사전행동적으로 제시하도록 구성된 모바일 컴퓨팅 디바이스가 제공되는데, 모바일 컴퓨팅 디바이스는 프로세서를 포함하고, 프로세서는, 검색 애플리케이션의 활성화를 검출하는 단계, 및 검색 애플리케이션의 사용자 인터페이스 내에서 사용자로부터의 입력을 수신하기 전에: 모바일 컴퓨팅 디바이스 상에 설치되며 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 목록에 대한 요청을, 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션 예측 엔진에 발행하는 단계, 애플리케이션 예측 엔진으로부터 목록을 수신하는 단계, 및 검색 애플리케이션의 사용자 인터페이스 내에, 목록 내에 포함된 하나 이상의 애플리케이션들 중 적어도 하나의 애플리케이션에 대한 사용자 인터페이스 엔트리를 디스플레이하는 단계를 포함하는 단계들을 수행하도록 구성된 검색 애플리케이션; 및 검색 애플리케이션으로부터, 사용자가 활성화시키는 데에 관심이 있을 수 있는 하나 이상의 애플리케이션들의 목록에 대한 요청을 수신하는 단계, 목록을 생성하는 단계, 및 목록을 검색 애플리케이션에 제공하는 단계를 포함하는 단계들을 수행하도록 구성된 애플리케이션 예측 엔진을 실행하도록 구성된다. 일부 실시예들에서, 목록을 생성하는 단계는, 모바일 컴퓨팅 디바이스 상에 설치된 각각의 애플리케이션에 대해: 애플리케이션에 대응하는 하나 이상의 데이터 신호들에 대해 하나 이상의 기능들을 수행함으로써 애플리케이션에 대한 점수를 생성하는 단계, 및 점수를 애플리케이션과 연관시키는 단계; 및 생성된 점수들에 따라 애플리케이션들을 필터링하는 단계; 및 필터링된 애플리케이션들을 목록 내로 통합하는 단계를 포함한다. 일부 실시예들에서, 하나 이상의 데이터 신호들 중 일 데이터 신호에 대해 하나 이상의 기능들 중 하나의 기능을 수행하는 단계는, 데이터 신호와 연관된 정보에 기초하여 데이터 신호에 대한 점수를 확립하는 단계; 및 데이터 신호와 연관되는 가중치에 따라 점수를 조정하는 단계를 포함한다. 일부 실시예들에서, 데이터 신호는 모바일 컴퓨팅 디바이스 내의 애플리케이션 액세스의 시간적 측면에 대응하고, 데이터 신호에 대해 기능을 수행하는 단계는, 데이터 신호와 연관되는 가중치에 따라 점수를 조정하는 단계 이전에: 데이터 신호에 적용되는 감쇠 요인에 따라 데이터 신호에 대한 점수를 조정하는 단계를 추가로 포함한다. 일부 실시예들에서, 하나 이상의 데이터 신호들은 애플리케이션 설치 타임스탬프들, 애플리케이션 활성화 타임스탬프들, 애플리케이션 활성화 총계들, 애플리케이션 사용 메트릭들, 모바일 컴퓨팅 디바이스의 주 사용자 인터페이스 내의 애플리케이션 아이콘들의 위치들, 사용자에 의해 최근에 제공된 검색 파라미터들, 및 이전 예측들이 정확했는지 여부를 나타내는 수집된 피드백을 포함한다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스의 주 사용자 인터페이스 내의 애플리케이션 아이콘의 위치는, 애플리케이션 아이콘이 포함되는 주 사용자 인터페이스의 페이지 번호, 및 애플리케이션이 주 사용자 인터페이스 내의 폴더에 포함되어 있는지 여부를 나타낼 수 있다. 일부 실시예들에서, 애플리케이션 예측 엔진은 추가로, 목록을 검색 애플리케이션에 제공하는 단계 이후에: 검색 애플리케이션으로부터 피드백을 수신하는 단계 - 피드백은 목록을 검색 애플리케이션에 제공하는 단계에 후속하여 사용자의 거동을 나타냄 -; 및 검색 애플리케이션으로부터 수신된 피드백을 반영하도록 수집된 피드백을 업데이트하는 단계를 포함하는 단계들을 수행하도록 구성된다.
섹션 9: 전문가 센터(예측된 콘텐츠 항목을 전자 디바이스의 컴포넌트들에 제공)
이 섹션 "전문가 센터"에서의 내용은 일부 실시예들에 따른, 전문가 센터를 설명하고 전자 디바이스의 컴포넌트들에(예컨대, 도 1a의 디바이스(100)의 컴포넌트들 중 임의의 것에) 예측된 콘텐츠 항목들을 제공하는 것을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 예측 엔진들 및 예측 카테고리들의 생성을 설명하는데, 이는 본 명세서에 제공된 개시내용들, 예컨대, 트리거 조건들의 생성/저장에 관련된 것들(도 4a 및 도 4b), 및 검색 인터페이스 내의 예측된 콘텐츠 항목들의 인출 및 제시에 관련된 것들(예컨대, 방법들(600, 800, 1000, 1200))을 보완하거나, 또는 메시징 애플리케이션에서의 제안된 항목들의 인출 및 제시에 관련된 것들(예컨대, 방법들(2200, 2900, 2280, 2400, 2600, 2700))을 보완한다. 일부 실시예들에서, 본 명세서에 개시된 방법들은 적절한 시간들에 다양한 관련 콘텐츠 항목들(예컨대, 예측된 애플리케이션들, 예측된 사람들/연락처들, 예측된 위치들, 다양한 유형의 애플리케이션들에 콘텐츠를 신속하게 추가하는 데 사용되는 이벤트들/연락처들/위치들에 관련된 정보, 및 방법들 중 임의의 것을 참조하여 상기 논의된 다른 관련 콘텐츠 항목들)을 사용자들에게 제공하기 위해 섹션 9에서 후술되는 예측 엔진을 이용하거나 또는 활용한다.
전문가 센터에 대한 개요
이 섹션에 기술된 실시예들은 모바일 컴퓨팅 디바이스 내에서 상이한 종류의 예측들을 제공하도록 구성될 수 있는 다양한 "예측 엔진들"을 구현하기 위한 기법들을 기재한다. 일부 실시예들에 따르면, 각각의 예측 엔진은 그 자신을 모바일 컴퓨팅 디바이스 내의 하나 이상의 "예측 카테고리들"에 대한 "전문가"로서 할당할 수 있다. 소비자 애플리케이션이 특정 예측 카테고리에 대한 예측에 대한 요청을 발행하고, 2개 이상의 예측 엔진들이 각각 예측들로 응답할 때, "예측 센터"는 요청에 응답하기 전에 예측들을 수신 및 프로세싱하도록 구성될 수 있다. 예측들을 프로세싱하는 것은, 예측들에 걸쳐 존재하는 중복 정보를 제거하는 것, 예측 엔진들에 의해 광고되는 신뢰도 레벨들에 따라 예측들을 분류하는 것 등을 수반할 수 있다. 이러한 방식으로, 예측 센터는 다수의 예측들을 최적화된 예측으로 추출하고 최적화된 예측을 소비자 애플리케이션에 제공할 수 있다.
일 실시예는 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 예측을 동기식으로 제공하기 위한 방법을 기재한다. 구체적으로, 본 방법은 모바일 컴퓨팅 디바이스 상에서 실행 중인 예측 센터에서 구현되고, (1) 애플리케이션으로부터, 예측 카테고리에 대한 예측을 동기식으로 제공하라는 요청을 수신하는 단계, (2) 예측 카테고리와 연관되는 하나 이상의 예측 엔진들을 식별하는 단계, (3) 요청에 따라 하나 이상의 예측 엔진들에 의해 생성된 하나 이상의 예측들을 수신하는 단계, (4) 애플리케이션에 의해 요청된 예측을 생성하기 위해 하나 이상의 예측들을 집계하는 단계, 및 (5) 애플리케이션에 예측을 제공하는 단계를 포함한다.
다른 실시예는 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 예측을 비동기식으로 제공하기 위한 방법을 기재한다. 구체적으로, 본 방법은 모바일 컴퓨팅 디바이스 상에서 실행 중인 예측 센터에서 구현되고, (1) 애플리케이션으로부터, 예측 카테고리에 대한 예측을 비동기식으로 제공하라는 요청을 수신하는 단계, (2) 예측 카테고리와 연관되는 하나 이상의 예측 엔진들을 식별하는 단계, 및 (3) 요청에 따라 하나 이상의 예측들을 비동기식으로 제공하도록 하나 이상의 예측 엔진들의 각각의 예측 엔진에게 통지하는 단계를 포함한다.
또 다른 실시예는 사용자 거동에 따라 예측들을 생성하도록 구성된 모바일 컴퓨팅 디바이스를 기재한다. 구체적으로, 모바일 디바이스는, (1) 하나 이상의 예측 엔진들과 하나 이상의 애플리케이션들 사이의 중계자로서의 역할을 하도록 구성된 예측 센터 - 예측 센터는 복수의 예측 카테고리들을 관리함 -, (2) 하나 이상의 예측 엔진들 - 하나 이상의 예측 엔진들의 각각의 예측 엔진은 예측 센터에 의해 관리되는 복수의 예측 카테고리들의 적어도 하나의 예측 카테고리에 대한 전문가로서의 역할을 함 -, 및 (3) 하나 이상의 애플리케이션들을 구현하도록 구성되고, 하나 이상의 애플리케이션들의 각각의 애플리케이션은, (i) 복수의 예측 카테고리들 중 특정 예측 카테고리에 대한 예측에 대한 요청을 예측 센터에 발행하는 단계, 및 (ii) 요청에 따라 예측 센터로부터 예측을 수신하는 단계를 포함하는 단계들을 수행하도록 구성되는데, 예측은 특정 예측 카테고리에 대한 전문가로서의 역할을 하는 예측 엔진들에 의해 생성되는 적어도 2개의 예측들의 집계이다.
다른 실시예들은 명령어들을 저장하도록 구성된 비일시적인 컴퓨터 판독가능 매체를 포함하는데, 명령어들은, 프로세서에 의해 실행될 때, 프로세서로 하여금 이 섹션에 기재된 전술한 기법들 중 임의의 것을 구현하게 한다.
이 개요는 단지 이 섹션에 기술된 요지의 일부 태양들에 대한 기본적인 이해를 제공하도록 일부 예시적인 실시예들을 요약하기 위한 목적으로 제공될 뿐이다. 따라서, 전술된 특징들은 단지 예시일 뿐이고 이 섹션에 기술된 요지의 범주 또는 기술적 사상을 어떤 방식으로든 한정하여 해석되어서는 안된다는 것을 이해할 것이다. 이 섹션에 기술된 요지의 다른 특징들, 태양들, 및 이점들은 다음의 상세한 설명, 도면 및 청구범위로부터 명백해질 것이다.
이 섹션에 기술된 실시예들의 다른 태양들 및 이점들은 기술되는 실시예들의 원리들을 예로서 도시하는 첨부 도면들과 함께 취해지는 하기의 상세한 설명으로부터 명백하게 될 것이다.
전문가 센터에 대한 상세한 설명
이 섹션에서는 현재 설명된 실시예들에 따른 장치 및 방법의 대표적인 응용예들이 제공된다. 이 예들은 단지 내용을 부가하고 기술된 실시예들의 이해에 도움을 주기 위해 제공되어 있다. 따라서, 당업자에게는 현재 설명된 실시예들이 이러한 구체적인 상세내용의 일부 또는 전부 없이도 실시될 수 있음이 명백할 것이다. 다른 경우에, 잘 알려진 공정 단계들은 현재 설명된 실시예들을 불필요하게 불명확하게 하지 않도록 하기 위해 구체적으로 설명되지 않았다. 다른 적용예들도 가능하며, 따라서 이하의 예들을 제한하는 것으로 간주되어서는 안된다.
이 섹션에 기술된 실시예들은, 모바일 컴퓨팅 디바이스가 그의 최종 사용자에게 의미있는 예측들을 제공할 수 있게 하는 방식으로 거동 데이터를 수집 및 체계화하기 위한 기법들을 기재한다. 일부 실시예들에 따르면, 모바일 컴퓨팅 디바이스는, 각각이 모바일 컴퓨팅 디바이스 내에서 상이한 종류의 예측들을 제공하도록 구성될 수 있는 다양한 "예측 엔진들"을 구현하도록 구성될 수 있다. 보다 구체적으로, 그리고 일부 실시예들에 따르면, 각각의 예측 엔진은 그 자신을 모바일 컴퓨팅 디바이스의 전체 동작을 향상시키기 위해 사용될 수 있는 하나 이상의 "예측 카테고리들"에 대한 "전문가"로서 할당할 수 있다. 예측 카테고리들의 예들은 애플리케이션들(예컨대, 활성화들/비활성화들), 사람들(예컨대, 전화 통화들, 채팅들 등), 지오데이터(geodata)(예컨대, 모바일 컴퓨팅 디바이스 이동/로케일들), 통지들(예컨대, 푸시 통지 도착들), 물리적 입력(예컨대, 헤드폰들을 부착시킴/모바일 컴퓨팅 디바이스에 전력을 공급함) 등을 포함할 수 있다. 전술한 예측 카테고리들은 단지 예시적이고 이 섹션에 기재된 실시예들은 모바일 컴퓨팅 디바이스가 유지할 수 있는 임의의 예측 카테고리를 채용할 수 있음을 주목한다. 일부 실시예들에 따르면, 예측 엔진은 학습 모델들을 채용할 수 있는데, 학습 모델들은 예측 엔진이 데이터(예컨대, 모바일 컴퓨팅 디바이스의 사용자의 동작과 연관된 거동 데이터)를 분석하고 그 데이터에 따라 예측들을 제공하는 것을 가능하게 한다. 이러한 개시내용이 주로 학습 모델들을 구현하도록 구성된 예측 엔진을 논의하지만, 거동 데이터를 분석하고 예측들을 제공하기 위한 임의의 기법이 이 섹션에 기술된 예측 엔진들에 의해 채용될 수 있음을 주목한다.
이 섹션에서 이전에 기재된 바와 같이, 그리고 일부 실시예들에 따르면, 예측 엔진은 그 자신을 모바일 컴퓨팅 디바이스 내의 하나 이상의 예측 카테고리들에 대한 전문가로서 할당할 수 있다. 따라서, 일부 경우에, 2개 이상의 예측 엔진들이 그 자신을 모바일 컴퓨팅 디바이스 내에서 동일한 예측 카테고리에 대한 전문가들로서 할당할 수 있다. 따라서, 요청 엔티티 - 이 섹션에서 "소비자 애플리케이션"으로 지칭됨 - 가 2개 이상의 예측 엔진들이 그 자신을 전문가로서 할당한 예측 카테고리에 대한 예측에 대한 요청을 발행할 때, 2개 이상의 예측 엔진들의 각각의 예측 엔진은 (예컨대, 예측 엔진에 의해 채용된 학습 모델들에 따라) 그 자신의 분석을 수행하고 요청에 따라 예측(또는 그 이상)을 생성할 것이다. 이러한 시나리오에서, 예측에 대한 요청에 응답하여 적어도 2개 이상의 예측들이 생성되는데, 이는 소비자 애플리케이션이 해석할 수 없는 중복들 및 경쟁 예측들을 확립할 수 있다.
따라서, 실시예들은 또한, 예측 엔진들과 소비자 애플리케이션들 사이의 중계자로서의 역할을 하도록 구성되는 "예측 센터"를 기재한다. 일부 실시예들에 따르면, 예측 엔진들이 초기화하고 그 자신을 하나 이상의 예측 카테고리들에 대한 전문가들로서 할당하려고 할 때, 예측 센터는 예측 엔진들에 대한 레지스트라로서의 역할을 하도록 구성될 수 있다. 유사하게 그리고 일부 실시예들에 따르면, 예측 센터는 또한, 모바일 컴퓨팅 디바이스 내의 상이한 유형의 예측 카테고리들을 관리하도록 구성될 수 있어서, 소비자 애플리케이션들이 예측 센터에 질의하여 제공될 수 있는 예측들의 카테고리들을 식별할 수 있도록 한다. 이러한 방식으로, 소비자 애플리케이션이 특정 예측 카테고리에 대한 예측에 대한 요청을 발행하고, 2개 이상의 예측 엔진들이 그들 각각의 예측(들)으로 응답할 때, 예측 센터는 소비자 애플리케이션에 의해 발행된 요청에 응답하기 전에 예측들을 수신 및 프로세싱하도록 구성될 수 있다. 예측들을 프로세싱하는 것은, 예를 들어, 예측들에 걸쳐 존재하는 중복 정보를 제거하는 것, 예측 엔진들과 연관된 성능(즉, 정확도) 메트릭들 이력에 따라 예측들에 가중치들을 적용하는 것, 그들의 예측들을 생성할 때 예측 엔진들에 의해 광고되는 신뢰도 레벨들에 따라 예측들을 분류하는 것 등을 수반할 수 있다. 이러한 방식으로, 예측 센터는 다수의 예측들을 최적화된 예측으로 추출하고 최적화된 예측을 소비자 애플리케이션에 제공할 수 있다. 따라서, 이러한 설계는 소비자 애플리케이션들의 동작 요건들을 유익하게 단순화하고(그들이 다수의 예측들을 프로세싱할 필요가 없기 때문임), 예측 센터에 무거운 짐을 통합하고, 관심 대상의 예측 카테고리에 대한 전문가들로서 자신들을 할당한 다양한 예측 엔진들의 입력을 나타내는 예측을 소비자 애플리케이션이 획득하는 것을 가능하게 한다.
일부 실시예들에 따르면, 예측 센터는 소비자 애플리케이션이 "동기" 방식으로 예측들을 수신하는 것을 가능하게 할 수 있다. 보다 구체적으로, 소비자 애플리케이션은, 예측 센터에, 예측 센터로 하여금 하나 이상의 예측 엔진들과 상호작용하게 하고 다소 즉각적인(즉, 동기식) 응답/예측을 소비자 애플리케이션에 제공하게 하는 요청을 발행하도록 구성될 수 있다. 이러한 동기식 구성은, 예를 들어, 소비자 애플리케이션 - 예컨대, 채팅 애플리케이션 - 이 개시되고 있고 (예컨대, 하루 중 현재 시간에 따라) 모바일 컴퓨팅 디바이스의 사용자가 메시지를 보낼 가능성이 가장 큰 연락처를 우선적으로 식별하려고 하고 있을 때, 사용될 수 있다. 다른 실시예들에 따르면, 예측 센터는 소비자 애플리케이션이 "비동기" 방식으로 예측들을 수신하는 것을 가능하게 할 수 있다. 보다 구체적으로, 소비자 애플리케이션은, 예측 센터에, 예측 센터로 하여금 필요에 따라 (즉, 비동기식으로/트리거링식으로) 예측들을 제공하도록 하나 이상의 예측 엔진들을 구성하게 하고/그에게 통지하게 하는 요청을 발행하도록 구성될 수 있다. 이러한 비동기식 구성은, 예를 들어, 소비자 애플리케이션 - 예컨대, 모바일 컴퓨팅 디바이스 상의 애플리케이션들을 활성화(즉, 개시) 및 비활성화(즉, 종료)하도록 구성된 OS 커널 - 이 모바일 컴퓨팅 디바이스에서 발생하는 물리적 입력에 응답하여 애플리케이션을 반응적으로 로딩하려고 하고 있을 때 사용될 수 있다. 예를 들어, 예측 엔진은, 헤드폰들이 그의 또는 그녀의 모바일 컴퓨팅 디바이스에 플러그인되어 있는 대부분의 시간 동안 특정 음악 애플리케이션이 사용자에 의해 수동으로 개시된다고 결정할 수 있다. 이어서, 예측 엔진은, 헤드폰들이 모바일 컴퓨팅 디바이스에 연결될 때 예측을 통해 OS 커널에 이러한 특정 음악 애플리케이션을 나타낼 수 있다. 이어서, OS 커널은 (예측에 따라) 적절한 음악 애플리케이션을 우선적으로 로딩할 수 있는데, 이는 사용자의 경험을 개선하고 모바일 컴퓨팅 디바이스의 성능을 향상시키는 것을 도울 수 있다.
따라서, 상기 기재된 상이한 기법들은, 소비자 애플리케이션들이 예측 센터와 상호작용하여, 전반적인 사용자 경험을 향상시키는 데 잠재적으로 사용될 수 있는 예측들을 수신하는 것을 가능하게 한다. 일부 경우들에서, 소비자 애플리케이션이 예측 엔진에 의해 생성된 예측이 정확했는지 여부를 나타내기 위해 피드백을 예측 센터에 제공하는 것이 중요할 수 있다. 그러한 피드백은, 예를 들어, 학습 알고리즘들이 예측 엔진들에 의해 구현될 때 유익할 수 있는데, 이는 피드백이 학습 알고리즘들을 "훈련"시키고 그들의 예측들의 전반적인 정확도를 개선하는 데 사용될 수 있기 때문이다. 예를 들어, 예측 엔진이 사용자에 의해 특정 액션이 취해질 것이라는 예측을 생성하고, 소비자 애플리케이션이 예측이 참으로 유지됨(즉, 사용자에 의해 특정 액션이 취해졌음)을 나타내는 피드백을 제공할 때, 예측 엔진은 예측 엔진에 의해 유사한 후속 예측들이 생성될 때 광고되는 신뢰도 레벨을 증가시킬 수 있다. 신뢰도 레벨이 높아짐에 따라, 예측 엔진에 의해 생성된 예측들은 (만일 있다면) 다른 예측 엔진들에 의해 생성되는 경쟁 예측들보다 우선할 수 있다. 대안적으로, 예측 엔진이 사용자에 의해 특정 액션이 취해질 것임을 예측하고, 소비자 애플리케이션이 예측이 참으로 유지되지 않았음(즉, 사용자에 의해 다른 액션이 취해졌음)을 나타내는 피드백을 제공할 때, 예측 엔진은 예측 엔진에 의해 유사한 후속 예측들이 생성될 때 광고되는 신뢰도 레벨을 감소시킬 수 있다. 신뢰도 레벨이 낮아짐에 따라, 예측 엔진에 의해 생성된 예측들은 (만일 있다면) 다른 예측 엔진들에 의해 생성되는 경쟁 예측들에 의해 가려질 수 있다.
추가적으로, 그리고 일부 실시예들에 따르면, 예측 센터/예측 엔진들은, 생성된 예측들 및 그들의 대응하는 피드백의 레코드들을 유지하는 로거들을 구현하도록 구성될 수 있다. 이러한 레코드들은 다양한 방식으로 유익할 수 있는데, 예컨대, 예측 엔진의 개발자가 많은 수의 모바일 컴퓨팅 디바이스들로부터 레코드들을 수신할 수 있고, 여기서 레코드들은 예측 엔진이 부정확한 예측들을 계속해서 생성하고 있음을 나타낸다. 이어서, 예측 엔진의 개발자는 그의 정확도를 개선하기 위해 예측 엔진의 구성을 다시 논의할 수 있다. 상이한 모바일 컴퓨팅 디바이스들에 걸친 예측 센터들은 또한, 전반적인 사용자 경험을 향상시키는 데 사용될 수 있고 관찰되는 고레벨 트렌드들을 식별하기 위해 서로 정보를 교환하도록 구성될 수 있다. 예를 들어, 예측 센터들은, 대부분의 모바일 컴퓨팅 디바이스들이 특정 지리적 영역 - 예컨대, 영화관 주변 - 에 들어갈 때, 모바일 컴퓨팅 디바이스들의 사용자들이 수동으로 그들의 모바일 컴퓨팅 디바이스들을 무음 모드로 놓는 것을 서로 간에 식별할 수 있다. 이어서, 이러한 식별은, 특정 지리적 영역 내에 들어갈 때 사용자들에게 그들의 모바일 컴퓨팅 디바이스들을 무음 모드로 놓는 제안들을 제공하기 위해 사용될 수 있다. 이러한 식별은 또한, 모바일 컴퓨팅 디바이스가 특정 지리적 영역에 들어갈 때 모바일 컴퓨팅 디바이스가 자동으로 무음 모드에 진입하는 자동 규칙이 제자리에서 설정되는 것을 제안하기 위해 사용되어, 이에 의해 사용자가 그의 또는 그녀의 모바일 컴퓨팅 디바이스에 액세스하고 모바일 컴퓨팅 디바이스를 수동으로 무음 모드로 놓아야 하는 필요성을 제거할 수 있다.
전술한 기법들에 더하여, 예측 센터는 또한, 예측들이 모바일 컴퓨팅 디바이스 내에서 생성되는 방식을 추가로 향상시키기 위해 이용될 수 있는 하나 이상의 "필터들"을 구현하도록 구성될 수 있다. 일부 실시예들에 따르면, 필터들은, (예측 엔진들의 범주 내에서) 정확하고 신뢰성이 있음에도 불구하고, 실세계 시나리오들에서 실제로 비실용적이고 비효과적인 예측들의 발생을 감소 또는 제거하는 것을 돕는 프로세싱의 추가적인 층들을 제공하기 위해 사용될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스 상의 잠금 화면 애플리케이션이 소비자 애플리케이션을 나타내는 시나리오가 고려되는데, 여기서 잠금 화면 애플리케이션은 카메라 애플리케이션에 대한 정적 아이콘 및 (예컨대, 하루 중 현재 시간에 기초하여) 사용자에 의해 액세스될 가능성이 가장 큰 애플리케이션에 대한 동적 아이콘을 디스플레이한다. 이 예에서, 잠금 화면 애플리케이션은, 잠금 화면 애플리케이션 내에 디스플레이된 동적 아이콘과 연관되어야 하는 애플리케이션을 식별하려고 할 때 "애플리케이션" 예측 카테고리와 연관된 예측에 대한 요청을 예측 센터에 발행할 수 있다. 추가로, 이 예에서, 단일 예측 엔진이 "애플리케이션" 예측 카테고리와 연관되는 것이 고려되는데, 여기서 단일 예측 엔진은 카메라 애플리케이션이 사용자에 의해 액세스될 가능성이 가장 크다고(잠금 화면 애플리케이션이 디스플레이될 때 종종 그렇기 때문임) 결정한다. 특히, 이 예에서, 이러한 예측은 다소 무의미한데, 이는 잠금 화면 애플리케이션 내에 동일한 카메라 애플리케이션에 대한 2개의 상이한 아이콘들을 디스플레이하는 것은 낭비적일 것이기 때문이다. 따라서, 필터는 이러한 시나리오들이 발생하는 것을 방지하는 것을 돕기 위해 사용될 수 있는데, 예컨대, 필터는 잠금 화면 애플리케이션이 모바일 컴퓨팅 디바이스 상에서 활성일 때 언제라도 "애플리케이션" 예측 카테고리와 연관된 예측들로부터 카메라 애플리케이션을 제거하도록 구성될 수 있다.
추가적으로, 예측 센터/예측 엔진들은 또한, 예측들을 생성할 때 발생하는 프로세싱의 양을 감소시키기 위해 사용될 수 있는 하나 이상의 캐시들을 구현하도록 구성될 수 있다. 일부 실시예들에 따르면, 예측은, 생성 시에, 예측이 저장되는 캐시로부터 예측이 제거되어야 하는 시기를 나타내는 "유효성 파라미터들"을 동반할 수 있다. 유효성 파라미터들 - 이 섹션에서는 만료 정보로도 지칭됨 - 은, 예를 들어, 시간-기반 만료들, 이벤트-기반 만료들 등을 정의할 수 있다. 이러한 방식으로, 예측 엔진이 특정 예측 카테고리에 대한 예측에 대한 요청들을 자주 수신할 때, 예측 엔진은, 예측에 대한 반복된 요청들을 프로세싱할 때 달리 발생할 향후 프로세싱의 양을 실질적으로 감소시키기 위해 예측을 생성하여 캐시에 저장할 수 있다. 예측 센터/예측 엔진들이 다양한 접근법들을 사용하여 예측들을 캐시에 저장하도록 구성될 수 있음을 주목한다. 예를 들어, 이용가능한 캐시 메모리가 제한될 때, 예측 센터/예측 엔진들은 예측들을 임계 횟수로 (예컨대, 시간 윈도우 내에서) 생성하도록, 그리고 임계치가 만족될 때, 예측을 캐시에 저장하고 (만료 정보가 예측이 유효함을 나타내는 한) 예측에 대한 후속 요청들을 위해 캐시를 참조하는 것으로 전이하도록 구성될 수 있다.
추가로, 예측 센터의 아키텍처는 이 섹션에 기술된 상이한 엔티티들 - 예측 엔진들, 예측 카테고리들, 필터들, 로거들 등을 포함함 - 이 모바일 컴퓨팅 디바이스 내의 모듈형 컴포넌트들로서 기능할 수 있게 하는 방식으로 구성될 수 있음을 주목한다. 하나의 아키텍처 접근법에서, 각각의 엔티티는, 엔티티가 예측 센터와 통신하는 것을 가능하게 하고 이 섹션에 기술된 상이한 기능들을 제공하게 하는 API 함수 호출들의 세트를 구현하도록 구성될 수 있다. 이러한 아키텍처 접근법에 따르면, 예를 들어, 엔티티는, 예측 센터의 외부에서 동작할 수 있고 이 섹션에 기술된 다양한 기능들을 제공할 수 있는 자족적(self-contained) 실행 파일로서 구성될 수 있다. 다른 아키텍처 접근법에서, 각각의 엔티티는, 포맷 및 콘텐츠들이 예측 센터에 의해 이해되는 번들로서 구성될 수 있고, 예측 센터가 엔티티의 기능을 구현하기 위한 플랫폼으로서 기능할 수 있게 한다. 이러한 접근법에 따르면, 예측 센터는, 예를 들어 모바일 컴퓨팅 디바이스 내에 상주하는 상이한 번들들을 식별하기 위해 (예컨대, 초기화할 때) 상이한 파일 시스템 경로들을 파싱하도록 구성될 수 있다. 이러한 방식으로, 번들들은 편리하게 모바일 컴퓨팅 디바이스의 파일 시스템에 추가되고, 그의 내부에서 업데이트되고, 그로부터 제거되어서, 이에 의해 모듈형 구성을 촉진시킬 수 있는데, 모듈형 구성은 모바일 컴퓨팅 디바이스에 실질적인 업데이트들(예컨대, 운영 체제 업그레이드들)을 요구할 필요없이 시간 경과에 따라 효율적으로 진화할 수 있다. 전술한 아키텍처들이 예시적이고, 이 섹션에 기술된 다양한 엔티티들이 서로 통신하며 그들의 상이한 기능들을 제공할 수 있게 하는 임의의 아키텍처가 사용될 수 있음을 주목한다.
따라서, 실시예들은, 모바일 컴퓨팅 디바이스가 그의 최종 사용자에게 의미있는 예측들을 제공할 수 있게 하는 방식으로 거동 데이터를 수집 및 체계화하기 위한 기법들을 기재한다. 이들 기법들에 대한 보다 상세한 논의는 이하에서 기재되며, 이들 기법들을 구현하는데 사용될 수 있는 시스템들 및 방법들의 상세한 다이어그램들을 도시하는 도 39a, 도 39b, 도 39c 내지 도 39e, 도 39f, 도 39g, 도 39h 내지 도 39j, 및 도 1a에 예시된 모바일 디바이스(100)와 함께 기술된다.
도 39a은 일부 실시예들에 따른, 이 섹션에 기술된 다양한 기법들을 구현하도록 구성된 모바일 컴퓨팅 디바이스(39_100)의 상이한 컴포넌트들의 블록도를 예시한다. 보다 구체적으로, 도 39a은 도시된 바와 같이, 예측 센터(39_102) 및 다양한 소비자 애플리케이션들(39_112)을 구현하도록 구성되는 모바일 컴퓨팅 디바이스(39_100)의 고레벨 개요를 예시한다. 일부 실시예들에 따르면, 예측 센터(39_102) 및 다양한 소비자 애플리케이션들(39_112)은 모바일 컴퓨팅 디바이스(39_100) 상에서 실행하도록 구성되는 운영 체제(OS)(도 39a에는 예시되지 않음) 내에서 구현될 수 있다. 도 39a에 또한 도시된 바와 같이, 예측 센터(39_102)는 다양한 로거들(39_105), 다양한 예측 카테고리들(39_106), 다양한 예측 엔진들(39_108), 및 다양한 필터들(39_110)을 관리하도록 구성될 수 있다. 예측 센터(39_102)는 또한, 예측 엔진들(39_108)과 소비자 애플리케이션들(39_112) 사이의 중계자로서의 역할을 하도록 구성되는 관리자(39_104)를 구현할 수 있는데, 예컨대, 관리자(39_104)는 예측 엔진들(39_108)에 의해 생성된 예측들(도 39a에 예측들(39_114)로서 예시됨)을 수신하고 예측들(39_114)을 소비자 애플리케이션들(39_112)로 전송할 수 있다. 예측 센터(39_102)는 또한, 소비자 애플리케이션들(39_112)로부터 피드백 정보(39_116)를 수신하고 피드백 정보(39_116)를 예측 엔진들(39_108)에 제공하도록 구성되어서, 그들이 시간 경과에 따라 보다 정확한 예측들(39_114)을 생성할 수 있도록 할 수 있다. 따라서, 도 39a은 이 섹션에 기재된 기법들을 구현하기 위해 사용될 수 있는 다양한 컴포넌트들의 고레벨 개요를 제공한다.
도 39b는 일 실시예에 따른, 도 39a의 모바일 컴퓨팅 디바이스(39_100)의 특정 컴포넌트들을 더 상세하게 보여주는 블록도(39_200)를 도시한다. 도 39b에 도시된 바와 같이, 각각의 예측 엔진(39_108)은 하나 이상의 학습 모델들(39_202), 대응하는 상태(39_204), 및 예측 엔진(39_108)이 그 자신을 전문가로서 할당한 예측 카테고리들(39_106)의 목록을 포함하도록 구성될 수 있다. 일부 실시예들에 따르면, 학습 모델들(39_202)은, 정보(예컨데, 상태(39_204))를 분석하고, 모바일 컴퓨팅 디바이스(39_100)를 동작시킬 때 사용자의 전반적인 경험을 향상시킬 수 있는 예측들을 생성하도록 구성되는 알고리즘들을 나타낼 수 있다. 일부 실시예들에 따르면, 상태(39_204)는, 모바일 컴퓨팅 디바이스(39_100) 내의 다양한 소스들, 예컨대, 소비자 애플리케이션들에 의해 제공된 피드백 정보(39_116), 모바일 컴퓨팅 디바이스(39_100)의 센서들(예컨대, 글로벌 포지셔닝 시스템(GPS) 센서들, 마이크로폰 센서들, 온도 센서들, 가속도계 센서들 등)에 의해 수집된 정보, 외부 소스들(예컨대, 모바일 컴퓨팅 디바이스(39_100) 상에서 실행 중인 애플리케이션들, OS 커널 등)에 의해 제공된 정보 등으로부터 수집될 수 있다.
도 39b에 또한 도시된 바와 같이, 관리자(39_104)는 다양한 로거들(39_105), 다양한 예측 카테고리들(39_106), 다양한 예측 엔진들(39_108), 및 다양한 필터들(39_110)을 관리하도록 구성될 수 있다. 상기에서 이전에 기재된 바와 같이, 이러한 엔티티들은 다양한 아키텍처 접근법들을 사용하여 구현될 수 있는데, 예컨대, 엔티티들은, API 커맨드들을 통해 관리자(39_104)와 통신하고 예측 센터(39_102)의 외부에 있는 독립형 실행 파일들일 수 있고, 엔티티들은, 모바일 컴퓨팅 디바이스(39_100)의 파일 시스템 내에 저장되고 관리자(39_104)에 의해 해석가능하고/구현되는 번들들일 수 있고 등등일 수 있다. 도 39b에 또한 도시된 바와 같이, 관리자(39_104)는 (예컨대, 상이한 예측 엔진들(39_108)에 의해 생성될 때) 다수의 예측들(39_114)을 통합하도록 구성되는 집계기(39_220)를 구현할 수 있다. 게다가, 도 39b에 도시된 바와 같이, 관리자(39_104)는 예측 센터(39_102)와 상호작용하는 소비자 애플리케이션들(39_112)의 레코드들을 유지하도록 구성될 수 있다. 이 섹션에서 더욱 상세하게 기술된 바와 같이, 이러한 레코드들은 예측 엔진들(39_108)로부터 예측들을 비동기식으로 수신하도록 등록되는 소비자 애플리케이션들(39_112)을 예측 엔진들(39_108)과 연관시키는 기능을 할 수 있다.
추가적으로 그리고 도 39b에 도시된 바와 같이, 예측 센터(39_102)는 캐시(39_206)를 구현하도록 구성될 수 있는데, 캐시는, 모바일 컴퓨팅 디바이스(39_100)에서의 프로세싱 및 에너지 소비 효율을 증가시키기 위한 시도로 예측 센터(39_102)/예측 엔진들(39_108)이 생성된 예측들(39_114)을 캐시에 저장할 수 있게 한다. 도 39b에 도시된 바와 같이, 캐시(39_206)는 엔트리들(39_208)을 포함할 수 있는데, 여기서 각각의 엔트리(39_208)는 예측(39_114), 및 예측(39_114)이 얼마나 오래 유효한 것으로 고려되는지를 나타내는 만료 정보(39_210)를 포함한다. 만료 정보(39_210)는, 예를 들어, 시간-기반 만료들, 이벤트-기반 만료들 등을 포함할 수 있다. 이러한 방식으로, 예측 엔진(39_108)이 특정 예측 카테고리(39_106)에 대한 예측(39_114)에 대한 요청들을 자주 수신할 때, 예측 엔진(39_108)은, 모바일 컴퓨팅 디바이스(39_100)에서 달리 발생할 프로세싱의 양을 실질적으로 감소시키기 위해 예측(39_114)을 생성하여 캐시에 저장하여, 이에 의해 성능을 향상시킬 수 있다.
도 3a는 일부 실시예들에 따른, 예측 엔진(39_108)의 고레벨 초기화 및 동작을 위한 방법(39_300)을 예시한다. 도 3a에 도시된 바와 같이, 방법(39_300)은 예측 엔진(39_108)이 하나 이상의 학습 모델들(39_202)을 로딩하는 단계(39_302)에서 시작한다. 선택적인 단계(39_304)에서, 예측 엔진(39_108)은 하나 이상의 학습 모델들(39_202)과 연관된 이전에 확립된 상태(39_204)를 로딩한다. 일부 실시예들에 따르면, 이전에 확립된 상태(39_204)는 예측 엔진(39_108)이 이용가능한 임의의 저장 리소스, 예컨대, 국부 비휘발성 메모리, 클라우드 저장소 등으로부터 인출될 수 있다. 단계(39_306)에서, 예측 엔진(39_108)은 적어도 하나의 예측 카테고리(39_106)에 대한 전문가로서의 역할을 하라는 (그리고 그에 대한 예측들(39_114)을 제공하라는) 요청을 예측 센터(39_102)에 발행한다. 단계(39_308)에서, 예측 엔진(39_108)은 적어도 하나의 예측 카테고리(39_106)에 대한 예측들(39_114)을 동기식으로 제공하거나 예측들(39_114)을 비동기식으로 제공하라는 요청을 수신한다. 단계(39_310)에서, 예측 엔진(39_108)은 하나 이상의 학습 모델들(39_202)에 따라 예측들을 비동기식으로 그리고/또는 동기식으로 제공하는데, 여기서 각각의 예측(39_114)은 신뢰도 레벨 정보를 포함한다. 단계(39_312)에서, 예측 엔진(39_108)은 제공된 예측들(39_114)과 연관된 정확도 레벨을 나타내는 피드백 정보를 수신한다. 그러한 피드백 정보(39_116)는, 학습 모델들(39_202)을 "훈련"시키고 그들의 예측들(39_114)의 전반적인 정확도를 개선하는 데 사용될 수 있다. 예를 들어, 예측 엔진(39_108)이 모바일 컴퓨팅 디바이스(39_100)의 사용자에 의해 특정 액션이 취해질 것이라는 예측(39_114)을 생성하고, 소비자 애플리케이션(39_112)이 예측(39_114)이 참으로 유지됨(즉, 사용자에 의해 특정 액션이 취해졌음)을 나타내는 피드백을 제공할 때, 예측 엔진(39_108)은 예측 엔진(39_108)에 의해 유사한 후속 예측들(39_114)이 생성될 때 광고되는 신뢰도 레벨을 증가시킬 수 있다. 단계(39_314)에서, 예측 엔진(39_108)은 피드백 정보에 따라 하나 이상의 학습 모델들(39_202)을 업데이트한다.
도 3b는 일부 실시예들에 따른, 예측 엔진(39_108)에서 예측(39_114)을 동기식으로 제공하기 위한 방법(39_330)을 예시한다. 도 3b에 도시된 바와 같이, 방법(39_330)은 예측 엔진(39_108)이 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 동기식으로 제공하라는 요청을 수신하는 단계(39_332)에서 시작한다. 일부 실시예들에 따르면, 요청은, 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 요청하고 있는 소비자 애플리케이션(39_112)을 대신하여 예측 센터(39_102)에 의해 생성될 수 있다. 대안적으로, 요청은 소비자 애플리케이션(39_112)에 의해 생성되고 예측 엔진(39_108)에 직접 제공될 수 있다. 이러한 방식으로, 예측 센터(39_102)의 전반적인 개입은, 예측 센터(39_102)가 예측 엔진(39_108)과 소비자 애플리케이션(39_112) 사이의 중계자로서의 역할을 하는 것과 관련하여 감소 또는 심지어 제거될 수 있다. 단계(39_334)에서, 예측 엔진(39_108)은 특정 예측 카테고리(39_106)와 연관되는 적어도 하나의 학습 모델(39_202)을 식별한다. 단계(39_336)에서, 예측 엔진(39_108)은 적어도 하나의 학습 모델(39_202)에 따라 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 생성한다. 단계(39_338)에서, 예측 엔진(39_108)은 예측(39_114)을 신뢰도 레벨 정보와 연관시킨다. 단계(39_340)에서, 예측 엔진(39_108)은 예측(39_114)을 제공한다. 보다 구체적으로, 그리고 구성에 따라(예컨대, 단계(39_332)와 함께 전술된 바와 같이), 예측 엔진(39_108)은 예측(39_114)을 예측 센터(39_102)에 또는 직접 소비자 애플리케이션(39_112)에 제공할 수 있다. 이어서, 예측(39_114)은, 다른 예측 엔진들(39_108)이 유사한 예측들(39_114)을 제공할 때 (만일 있다면) 다른 예측들(39_114)과 함께 (예컨대, 예측(39_114)이 예측 센터(39_102)에 제공될 때 집계기(39_220)에 의해) 집계된다.
도 3c는 일부 실시예들에 따른, 예측 엔진(39_108)에서 예측(39_114)을 비동기식으로 제공하기 위한 방법(39_350)을 예시한다. 도 3c에 도시된 바와 같이, 방법(39_350)은 예측 엔진(39_108)이 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 비동기식으로 제공하라는 요청을 수신하는 단계(39_352)에서 시작한다. 단계(39_354)에서, 예측 엔진(39_108)은 특정 예측 카테고리(39_106)와 연관된 적어도 하나의 학습 모델(39_202)을 식별한다. 단계(39_356)에서, 예측 엔진(39_108)은 적어도 하나의 학습 모델(39_202) 및/또는 특정 예측 카테고리(39_106)와 연관된 적어도 하나의 트리거를 식별한다. 단계(39_358)에서, 예측 엔진(39_108)은 트리거가 활성화/발생되는지 여부를 결정한다. 단계(39_358)에서, 예측 엔진(39_108)이 트리거가 활성화된다고 결정하는 경우, 방법(39_350)은 단계(39_360)로 진행한다. 그렇지 않으면, 방법(39_350)은 트리거가 활성화/발생될 때까지 단계(39_358)에서 반복된다. 단계(39_360)에서, 예측 엔진(39_108)은 적어도 하나의 학습 모델(39_202)에 따라 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 생성한다. 단계(39_362)에서, 예측 엔진(39_108)은 예측(39_114)을 신뢰도 레벨 정보와 연관시킨다. 단계(39_364)에서, 예측 엔진(39_108)은 (예컨대, 집계를 위해 예측 센터(39_102)에) 예측(39_114)을 제공한다.
도 39f는 일부 실시예들에 따른, 소비자 애플리케이션(39_112)이 예측(39_114)을 동기식으로 수신하도록 요청하기 위한 방법(39_400)을 예시한다. 도 39f에 도시된 바와 같이, 방법(39_400)은 소비자 애플리케이션(39_112)이 특정 예측 카테고리(39_106)에 대한 예측(39_114)에 대한 요청을 발행하는 단계(39_402)에서 시작한다. 일부 실시예들에 따르면, 소비자 애플리케이션(39_112)은 요청을 예측 센터(39_102)에 발행하도록 구성될 수 있는데, 여기서, 이어서, 예측 센터(39_102)는 특정 예측 카테고리(39_106)에 대한 전문가로서 등록된 예측 엔진들(39_108)과 인터페이싱한다. 대안적으로, 소비자 애플리케이션(39_112)은, 예컨대, 예측 엔진(39_108)이 모바일 컴퓨팅 디바이스(39_100) 내의 특정 예측 카테고리(39_106)에 대한 유일한 전문가일 때, 요청을 예측 엔진(39_108)에 직접 발행하도록 구성될 수 있다. 단계(39_404)에서, 소비자 애플리케이션(39_112)은 단계(39_402)에서 발행된 요청과 함께 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 동기식으로 수신한다. 단계(39_406)에서, 소비자 애플리케이션(39_112)은 예측(39_114)이 정확한지 여부를 결정하기 위해 모바일 컴퓨팅 디바이스(39_100)에서의 거동(예컨대, 사용자 거동)을 관찰한다. 단계(39_408)에서, 소비자 애플리케이션(39_112)은 예측(39_114)과 연관된 정확도 레벨을 나타내는 피드백 정보(39_116)를 제공한다.
도 39g는 일부 실시예들에 따른, 소비자 애플리케이션(39_112)이 예측들(39_114)을 비동기식으로 수신하도록 등록하기 위한 방법(39_450)을 예시한다. 도 39g에 도시된 바와 같이, 방법(39_450)은 소비자 애플리케이션(39_112)이 특정 예측 카테고리(39_106)에 대한 예측들(39_114)을 비동기식으로 수신하라는 요청을 발행하는 단계(39_452)에서 시작한다. 단계(39_454)에서, 소비자 애플리케이션(39_112)은 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 비동기식으로 수신한다. 단계(39_456)에서, 소비자 애플리케이션(39_112)은 예측(39_114)이 정확한지 여부를 결정하기 위해 모바일 컴퓨팅 디바이스(39_100)에서의 거동(예컨대, 사용자 거동)을 관찰한다. 단계(39_458)에서, 소비자 애플리케이션(39_112)은 예측(39_114)과 연관된 정확도 레벨을 나타내는 피드백 정보(39_116)를 제공한다.
도 39h는 일부 실시예들에 따른, 예측 센터(39_102)에서 예측 엔진(39_108)의 등록들을 관리하기 위한 방법(39_500)을 예시한다. 도시된 바와 같이, 방법(39_500)은, 예측 센터(39_102)의 관리자(39_104)가 예측 엔진(39_108)으로부터, 예측 엔진(39_108)으로서의 역할을 하며 적어도 하나의 예측 카테고리(39_106)에 대한 예측들(39_114)을 제공하라는 요청을 수신하는 단계(39_500)에서 시작한다. 단계(39_504)에서, 관리자(39_104)는 적어도 하나의 예측 카테고리(39_106)에 대한 예측들(39_114)을 제공하도록 할당된 예측 엔진(39_108)의 목록에 예측 엔진들(39_108)을 추가한다. 선택적인 단계(39_506)에서, 관리자(39_104)는 예측 엔진(39_108)과 연관된 성능 메트릭 이력에 따라 예측 엔진(39_108)에 가중치를 할당한다. 선택적인 단계(39_508)에서, 관리자(39_104)는, 만일 있다면, 예측 엔진(39_108) 및/또는 적어도 하나의 예측 카테고리(39_106)와 연관되는 필터들(39_110)을 초기화한다. 단계(39_510)에서, 관리자(39_104)는, 소비자 애플리케이션들(39_112)이 적어도 하나의 예측 카테고리(39_106)와 연관된 예측들(39_114)을 동기식으로 그리고/또는 비동기식으로 수신하라는 요청들을 발행할 수 있게 하기 위해 예측 센터(39_102)의 구성을 업데이트한다.
도 39i는 일부 실시예들에 따른, 예측 센터(39_102)에서 소비자 애플리케이션들(39_112)에 예측들(39_114)을 동기식으로 제공하기 위한 방법(39_550)을 예시한다. 도 39i에 도시된 바와 같이, 방법(39_550)은 관리자(39_104)가 소비자 애플리케이션(39_112)으로부터, 특정 예측 카테고리(39_106)에 대한 예측(39_114)을 동기식으로 제공하라는 요청을 수신하는 단계(39_552)에서 시작한다. 하나의 예시적인 시나리오는, 메시징 애플리케이션이 모바일 컴퓨팅 디바이스(39_100)에서 활성화하는 것, 및 사용자가 메시징 애플리케이션을 동작시킴으로써 제기될 가능성이 가장 큰 3개의 연락처들에 대한 예측(39_114)에 대한 요청을 발행하는 것을 수반할 수 있다. 단계(39_554)에서, 관리자(39_104)는 특정 예측 카테고리(39_106)에 할당된 예측 엔진들(39_108)의 목록을 식별한다. 전술한 예시적인 시나리오를 계속하면, 2개의 상이한 예측 엔진들(39_108)이 자신들을 "사람" 예측 카테고리(39_106)에 대한 전문가들로서 등록하였다는 것이 추가로 고려된다. 단계(39_556)에서, 관리자(39_104)는 예측(39_114)에 대해 예측 엔진들(39_108)의 목록 내에 포함된 각각의 예측 엔진(39_108)에 질의한다.
단계(39_558)에서, 관리자(39_104)는 예측 엔진들(39_108)의 목록 내에 포함된 각각의 예측 엔진(39_108)으로부터, 신뢰도 레벨 정보와 연관된 대응하는 예측(39_114)을 수신한다. 전술한 예시적인 시나리오를 계속하면, 2개의 예측 엔진들(39_108)이 예측들(39_114)을 제공하는데, 예측들 각각이 사용자에 의해 연락될 가능성이 가장 큰 3개의 연락처들의 별개의 목록을 포함한다는 것이 추가로 고려된다. 예를 들어, 제1 목록은 "Greg:0.7", "Amy:0.5", 및 "Mom:0.3"(여기서, 이름(예컨대, "Greg")은 연락될 예측된 개인을 나타내고, 이름 뒤에 있는 숫자(예컨대, 0.7)는 예측된 개인이 연락될 대응하는 신뢰도 레벨을 나타냄)이라고 적혀 있는 엔트리들을 포함할 수 있고, 제2 목록은 "Mom:0.7", "Greg:0.4", 및 "Julie:0.2"라고 적혀 있는 엔트리들을 포함할 수 있다. 단계(39_560)에서, 관리자(39_104)는 (만일 있다면) 대응하는 예측 엔진들(39_108)에 할당된 가중치들에 따라 예측들(39_114)과 연관된 신뢰도 레벨 정보를 업데이트한다. 예를 들어, 제1 목록을 생성하는 예측 엔진(39_108)이 (예컨대, 피드백 정보(39_116)를 통해) 관리자(39_104)에 의해 관찰된 지속적으로 열악한 성능에 따른 0.75의 할당된 가중치를 갖는 경우, 제1 목록 내의 각각의 엔트리에 대한 신뢰도 레벨 정보는 0.75만큼 감소될 것이다. 단계(39_562)에서, 관리자(39_104)는 예측들(39_114)을 그들의 연관된 신뢰도 레벨 정보에 따라 (예컨대, 집계기(39_220)를 사용하여) 집계한다. 전술한 예를 계속하면 - 그리고 단계(39_560)에서 가중치들이 적용되지 않음을 가정하면 -, 단계(39_562)는 관리자(39_104)가 하기의 업데이트된 목록을 확립하는 것을 수반할 것이다: "Greg:1.1"(즉, 0.7+0.4=1.1), "Mom:1.0"(즉, 0.3+0.7=1.0), "Amy:0.5", 및 "Julie:0.2", 여기서 "Julie:0.2"에 대한 엔트리는 메시징 애플리케이션이 3개의 연락처들에 대해서만 예측을 수신하기를 원하기 때문에 제거된다. 단계(39_564)에서, 관리자(39_104)는 집계된 예측들(39_114) - 이는 "Greg:1.1", "Mom:1.0", 및 "Amy:0.5"를 포함할 것임 - 에 따른 예측(39_114)을 소비자 애플리케이션(39_112)에 제공한다.
도 39j는 일부 실시예들에 따른, 예측 센터(39_102)에서 소비자 애플리케이션들(39_112)에 예측들(39_114)을 비동기식으로 제공하기 위한 방법(39_570)을 예시한다. 도시된 바와 같이, 방법(39_570)은 관리자(39_104)가 소비자 애플리케이션(39_112)으로부터, 특정 예측 카테고리(39_106)에 대한 예측들(39_114)을 비동기식으로 수신하라는 요청을 수신하는 단계(39_572)에서 시작한다. 단계(39_574)에서, 관리자(39_104)는 특정 예측 카테고리(39_106)에 할당된 예측 엔진들(39_108)의 목록을 식별한다. 단계(39_576)에서, 관리자(39_104)는 특정 예측 카테고리(39_106)와 연관된 예측들(39_114)을 비동기식으로 제공하도록 예측 엔진들(39_108)의 목록 내에 포함된 각각의 예측 엔진(39_108)에게 통지한다. 단계(39_578)에서, 관리자(39_104)는 예측 엔진들(39_108)의 목록 내에 포함된 각각의 예측 엔진(39_108)으로부터, 신뢰도 레벨 정보와 연관된 대응하는 예측(39_114)을 수신한다. 단계(39_580)에서, 관리자(39_104)는 (만일 있다면) 대응하는 예측 엔진들(39_108)에 할당된 가중치들에 따라 예측들(39_114)과 연관된 신뢰도 레벨 정보를 업데이트한다. 단계(39_582)에서, 관리자(39_104)는 예측들(39_114)을 그들의 연관된 신뢰도 레벨 정보에 따라 집계한다. 단계(39_584)에서, 관리자(39_104)는 집계된 예측들(39_114)에 따른 예측(39_114)을 소비자 애플리케이션(39_112)에 제공한다.
전문가 센터에 대한 예시적인 방법 및 디바이스
실시예들은 모바일 컴퓨팅 디바이스 내에서 상이한 종류의 예측들을 제공하도록 구성될 수 있는 다양한 "예측 엔진들"을 구현하기 위한 기법들을 기재한다. 일부 실시예들에 따르면, 각각의 예측 엔진은 그 자신을 모바일 컴퓨팅 디바이스 내의 하나 이상의 "예측 카테고리들"에 대한 "전문가"로서 할당할 수 있다. 소비자 애플리케이션이 특정 카테고리에 대한 예측에 대한 요청을 발행하고, 2개 이상의 예측 엔진들이 그들 각각의 예측(들)으로 응답할 때, "예측 센터"는 요청에 응답하기 전에 예측들을 수신 및 프로세싱하도록 구성될 수 있다. 예측들을 프로세싱하는 것은, 예측들에 걸쳐 존재하는 중복 정보를 제거하는 것, 예측 엔진들에 의해 광고되는 신뢰도 레벨들에 따라 예측들을 분류하는 것 등을 수반할 수 있다. 이러한 방식으로, 예측 센터는 다수의 예측들을 최적화된 예측으로 추출하고 최적화된 예측을 소비자 애플리케이션에 제공할 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 예측을 동기식으로 제공하기 위한 방법이 제공되는데, 본 방법은, 모바일 컴퓨팅 디바이스 상에서 실행 중인 예측 센터에서: 애플리케이션으로부터, 예측 카테고리에 대한 예측을 동기식으로 제공하라는 요청을 수신하는 단계; 예측 카테고리와 연관되는 하나 이상의 예측 엔진들을 식별하는 단계; 요청에 따라 하나 이상의 예측 엔진들에 의해 생성된 하나 이상의 예측들을 수신하는 단계; 애플리케이션에 의해 요청된 예측을 생성하기 위해 하나 이상의 예측들을 집계하는 단계; 및 애플리케이션에 예측을 제공하는 단계를 포함한다. 일부 실시예들에서, 하나 이상의 예측들을 집계하는 단계는, 하기로부터 선택되는 하나 이상의 동작들을 수행하는 단계를 포함한다: 하나 이상의 예측들로부터 중복 예측들을 제거하는 동작; 예측 센터에 의해 구현된 하나 이상의 필터들에 따라 하나 이상의 예측들을 필터링하는 동작; 하나 이상의 예측들의 각각의 예측에 대해: 예측을 생성하는 예측 엔진에 할당되는 가중치에 따라 예측과 연관된 신뢰도 레벨을 조정하는 동작 - 예측과 연관된 신뢰도 레벨은 예측을 생성할 때 예측 엔진에 의해 생성됨 -; 및 예측과 연관된 신뢰도 레벨에 따라 하나 이상의 예측들의 각각의 예측을 분류하는 동작. 일부 실시예들에서, 본 방법은, 예측에 대한 요청을 수신하기 전에: 하나 이상의 예측 엔진들의 각각의 예측 엔진에 대해: 예측 엔진으로부터, 예측 엔진이 예측 카테고리에 대한 전문가로서의 역할을 하라는 요청을 수신하는 단계; 및 예측 엔진을 예측 카테고리와 연관시키는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 애플리케이션에 의해 요청된 예측을 생성하는 단계에 후속하여: 예측과 연관된 유효성 파라미터들을 확립하는 단계; 유효성 파라미터들을 예측과 연관시키는 단계; 예측 및 유효성 파라미터들을 캐시에 저장하는 단계를 포함한다. 일부 실시예들에서, 유효성 파라미터들은 시간-기반 만료 또는 트리거-기반 만료 중 하나 이상을 정의한다. 일부 실시예들에서, 본 방법은, 예측 및 유효성 파라미터들을 캐시에 저장하는 단계에 후속하여: 제2 애플리케이션으로부터, 예측 카테고리에 대한 예측을 동기식으로 제공하라는 제2 요청을 수신하는 단계; 캐시 내에서 예측을 찾아내는 단계; 및 예측과 연관된 유효성 파라미터들이 예측이 유효하다는 것을 나타낼 때: 제2 애플리케이션에 예측을 제공하는 단계를 포함한다. 일부 실시예들에서, 예측 카테고리는 예측 센터에 의해 관리되는 복수의 예측 카테고리들 내에 포함되고, 복수의 예측 카테고리들의 각각의 예측 카테고리는: 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션들의 활성화들 및 비활성화들, 모바일 컴퓨팅 디바이스에 알려진 연락처들, 모바일 컴퓨팅 디바이스에 이용가능한 글로벌 포지셔닝 시스템(GPS) 정보, 모바일 컴퓨팅 디바이스에 의해 프로세싱되는 통지들, 또는 모바일 컴퓨팅 디바이스에 대해 행해진 물리적 입력과 연관된다. 일부 실시예들에서, 본 방법은, 애플리케이션에 예측을 제공하는 단계에 후속하여: 애플리케이션으로부터, 예측의 정확도를 나타내는 피드백 정보를 수신하는 단계; 및 피드백 정보를 하나 이상의 예측 엔진들에 제공하는 단계를 포함하는데, 피드백 정보는 하나 이상의 예측 엔진들에 의해 생성되는 후속 예측들의 정확도를 증가시키기 위해 하나 이상의 예측 엔진들에 의해 이용될 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션에 예측을 비동기식으로 제공하기 위한 방법이 제공되는데, 본 방법은, 모바일 컴퓨팅 디바이스 상에서 실행 중인 예측 센터에서: 애플리케이션으로부터, 예측 카테고리에 대한 예측을 비동기식으로 제공하라는 요청을 수신하는 단계; 예측 카테고리와 연관되는 하나 이상의 예측 엔진들을 식별하는 단계; 및 요청에 따라 하나 이상의 예측들을 비동기식으로 제공하도록 하나 이상의 예측 엔진들의 각각의 예측 엔진에게 통지하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 하나 이상의 예측 엔진들의 각각의 예측 엔진에게 통지하는 단계에 후속하여: 하나 이상의 예측들을 수신하는 단계; 애플리케이션에 의해 요청된 예측을 생성하기 위해 하나 이상의 예측들을 집계하는 단계; 및 애플리케이션에 예측을 제공하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 애플리케이션에 의해 요청된 예측을 생성하는 단계에 후속하여: 예측과 연관된 유효성 파라미터들을 확립하는 단계; 유효성 파라미터들을 예측과 연관시키는 단계; 예측 및 유효성 파라미터들을 캐시에 저장하는 단계를 포함한다. 일부 실시예들에서, 유효성 파라미터들은 하나 이상의 예측 엔진들에 의해 제공되고, 시간-기반 만료 또는 트리거-기반 만료 중 하나 이상을 정의한다. 일부 실시예들에서, 하나 이상의 예측들을 집계하는 단계는, 하기로부터 선택되는 하나 이상의 동작들을 수행하는 단계를 포함한다: 하나 이상의 예측들로부터 중복 예측들을 제거하는 동작; 예측 센터에 의해 구현된 하나 이상의 필터들에 따라 하나 이상의 예측들을 필터링하는 동작; 하나 이상의 예측들의 각각의 예측에 대해: 예측을 생성하는 예측 엔진에 할당되는 가중치에 따라 예측과 연관된 신뢰도 레벨을 조정하는 동작 - 예측과 연관된 신뢰도 레벨은 예측을 생성할 때 예측 엔진에 의해 생성됨 -; 및 예측과 연관된 신뢰도 레벨에 따라 하나 이상의 예측들의 각각의 예측을 분류하는 동작. 일부 실시예들에서, 하나 이상의 예측 엔진들은 모바일 컴퓨팅 디바이스에서 발생하는 트리거-기반 이벤트에 응답하여 하나 이상의 예측들을 예측 센터에 비동기식으로 제공한다. 일부 실시예들에서, 본 방법은, 예측에 대한 요청을 수신하기 전에: 하나 이상의 예측 엔진들의 각각의 예측 엔진에 대해: 예측 엔진으로부터, 예측 엔진이 예측 카테고리에 대한 전문가로서의 역할을 하라는 요청을 수신하는 단계; 및 예측 엔진을 예측 카테고리와 연관시키는 단계를 포함한다. 일부 실시예들에서, 예측 카테고리는 예측 센터에 의해 관리되는 복수의 예측 카테고리들 내에 포함되고, 복수의 예측 카테고리들의 각각의 예측 카테고리는: 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션들의 활성화들 및 비활성화들, 모바일 컴퓨팅 디바이스에 알려진 연락처들, 모바일 컴퓨팅 디바이스에 이용가능한 글로벌 포지셔닝 시스템(GPS) 정보, 모바일 컴퓨팅 디바이스에 의해 프로세싱되는 통지들, 또는 모바일 컴퓨팅 디바이스에 대해 행해진 물리적 입력과 연관된다.
일부 실시예들에서, 사용자 거동에 따라 예측들을 생성하도록 구성된 모바일 컴퓨팅 디바이스가 제공되는데, 모바일 컴퓨팅 디바이스는 프로세서를 포함하고, 프로세서는, 하나 이상의 예측 엔진들과 하나 이상의 애플리케이션들 사이의 중계자로서의 역할을 하도록 구성된 예측 센터 - 예측 센터는 복수의 예측 카테고리들을 관리함 -; 하나 이상의 예측 엔진들 - 하나 이상의 예측 엔진들의 각각의 예측 엔진은 예측 센터에 의해 관리되는 복수의 예측 카테고리들의 적어도 하나의 예측 카테고리에 대한 전문가로서의 역할을 함 -; 및 하나 이상의 애플리케이션들을 실행하도록 구성되고, 하나 이상의 애플리케이션들의 각각의 애플리케이션은, 복수의 예측 카테고리들 중 특정 예측 카테고리에 대한 예측에 대한 요청을 예측 센터에 발행하는 단계, 및 요청에 따라 예측 센터로부터 예측을 수신하는 단계를 포함하는 단계들을 수행하도록 구성되는데, 예측은 특정 예측 카테고리에 대한 전문가로서의 역할을 하는 예측 엔진들에 의해 생성되는 적어도 2개의 예측들의 집계이다. 일부 실시예들에서, 적어도 2개의 예측들을 집계하는 것은, 하기로부터 선택되는 하나 이상의 동작들을 수행하는 것을 포함한다: 적어도 2개의의 예측들로부터 중복 예측들을 제거하는 동작; 예측 센터에 의해 구현된 하나 이상의 필터들에 따라 적어도 2개의 예측들을 필터링하는 동작; 적어도 2개의 예측들의 각각의 예측에 대해: 예측을 생성하는 예측 엔진에 할당되는 가중치에 따라 예측과 연관된 신뢰도 레벨을 조정하는 동작 - 예측과 연관된 신뢰도 레벨은 예측을 생성할 때 예측 엔진에 의해 생성됨 -; 및 예측과 연관된 신뢰도 레벨에 따라 적어도 2개의 예측들의 각각의 예측을 분류하는 동작. 일부 실시예들에서, 예측 센터는, 애플리케이션에 예측을 제공하는 것에 후속하여: 애플리케이션으로부터, 예측의 정확도를 나타내는 피드백 정보를 수신하는 단계; 및 피드백 정보를 적어도 2개의 예측들을 생성한 예측 엔진에 제공하는 단계를 포함하는 단계들을 수행하도록 구성되고, 피드백 정보는 예측 엔진들에 의해 생성되는 후속 예측들의 정확도를 증가시키기 위해 예측 엔진들에 의해 이용될 수 있다. 일부 실시예들에서, 복수의 예측 카테고리들의 각각의 예측 카테고리는: 모바일 컴퓨팅 디바이스 상에서 실행 중인 애플리케이션들의 활성화들 및 비활성화들, 모바일 컴퓨팅 디바이스에 알려진 연락처들, 모바일 컴퓨팅 디바이스에 이용가능한 글로벌 포지셔닝 시스템(GPS) 정보, 모바일 컴퓨팅 디바이스에 의해 프로세싱되는 통지들, 또는 모바일 컴퓨팅 디바이스에 대해 행해진 물리적 입력과 연관된다.
섹션 10: 컨텍스트 모니터링, 컨텍스트 통지들, 컨텍스트 예측, 및 효율적인 컨텍스트 모니터링
이 섹션 "컨텍스트 모니터링, 컨텍스트 통지들, 컨텍스트 예측, 및 효율적인 컨텍스트 모니터링"에서의 내용은, 일부 실시예들에 따른, 디바이스 컨텍스트 모니터링, 컨텍스트 통지들, 컨텍스트 예측, 및 효율적인 컨텍스트 모니터링을 설명하고, 본 명세서에 제공된 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 일부분들은 컴퓨팅 디바이스의 운영 컨텍스트를 모니터링하는 것을 기술하는데, 이는 본 명세서에 제공되는 개시내용, 예컨대 사용 데이터의 수집/저장(도 3a, 도 3b), 트리거 조건들의 생성/저장(도 4a, 도 4b), 및 사용 데이터 및 트리거 조건들에 기초한 사용자들을 위한 관련 콘텐츠의 표면화(예컨대, 방법들(600, 800))에 관한 것들을 보완한다. 일부 실시예들에서, 이 섹션에서 논의되는 컨텍스트 모니터링/예측 상세사항들은 본 명세서에서 논의되는 방법들 중 임의의 방법에 대한 검색 결과들 및 다른 제안된 콘텐츠의 프레젠테이션을 개선하기 위해(예컨대, 방법들(600, 800, 1000, 1200, 2200, 2280, 2900), 또는 추가적인 컨텍스트 정보의 이용으로부터 이익을 얻을 수 있는, 본 명세서에서 논의되는 다른 방법들 중 임의의 방법을 보완하기 위해) 데이터를 제공하는 데 이용되는 컨텍스트 정보를 제공하기 위해 사용된다.
컨텍스트 모니터링/예측의 간략한 개요
컴퓨팅 디바이스의 현재 컨텍스트를 모니터링하기 위한 시스템들, 방법들, 및 비일시적 컴퓨터 판독가능 저장 매체들이 개시된다. 일부 구현예들에서, 컨텍스트 데몬이 컴퓨팅 디바이스에 관한 컨텍스트 정보를 수집할 수 있다. 컨텍스트 정보는 현재 디바이스 하드웨어 상태 정보를 포함할 수 있다. 컨텍스트 정보는 현재 소프트웨어 상태 정보를 포함할 수 있다. 컨텍스트는 하드웨어 상태 정보, 소프트웨어 상태 정보, 또는 임의의 다른 유형의 상태 정보의 조합으로부터 도출 또는 암시될 수 있다. 예를 들어, 도출된 컨텍스트는 하드웨어 또는 소프트웨어 상태 정보로부터 도출되거나 또는 그에 의해 암시되는 사용자 상태(예컨대, 사용자 활동, 취침, 달리기 등)일 수 있다.
일부 구현예들에서, 컨텍스트 정보는 컨텍스트 모니터들에 의해 컨텍스트 데몬에 보고될 수 있다. 컨텍스트 모니터들은, 구체적으로, 컨텍스트 데몬에 의해 모니터링되는 컨텍스트 정보를 수집하도록 구축될 수 있다. 컨텍스트 모니터들은 다른 목적들을 위해 구축된 애플리케이션, 유틸리티, 툴 등일 수 있고, 하드웨어 또는 소프트웨어 상태 정보를 이용 또는 생성할 수 있고, 그 상태 정보를 컨텍스트 데몬에 보고할 수 있다. 일단 컨텍스트 정보가 수집되었다면, 컨텍스트 데몬은 컴퓨팅 디바이스의 현재 컨텍스트를 중앙 위치에 저장하여 컨텍스트 클라이언트들(예컨대, 소프트웨어, 애플리케이션, 유틸리티, 운영 체제 등)이 단일 소스로부터 현재 컨텍스트 정보를 획득할 수 있게 할 수 있다. 일부 구현예들에서, 컨텍스트 데몬은 컨텍스트 정보 이력을 생성할 수 있고/있거나 수집할 수 있다. 컨텍스트 정보 이력은 오래된 또는 낡은 컨텍스트 정보를 포함할 수 있다. 컨텍스트 정보 이력은 컨텍스트 정보로부터 도출될 수 있다. 따라서, 컨텍스트 데몬은 컨텍스트 클라이언트들(예컨대, 프로세스들)이 컴퓨팅 디바이스의 현재 컨텍스트를 결정하는 데 사용할 수 있는 컨텍스트 정보의 중앙 저장소를 제공할 수 있다.
컴퓨팅 디바이스의 현재 컨텍스트에 대한 변화들을 컨텍스트 클라이언트들에게 통지하기 위한 시스템들, 방법들, 및 비일시적 컴퓨터 판독가능 저장 매체들이 개시된다. 일부 구현예들에서, 컨텍스트 클라이언트는 컨텍스트 데몬이 특정된 컨텍스트를 검출할 때 콜백되도록 등록할 수 있다. 예를 들어, 컨텍스트 클라이언트는 컨텍스트 클라이언트가 관심이 있는 컨텍스트를 특정할 수 있다. 컨텍스트 데몬이, 컴퓨팅 디바이스의 현재 컨텍스트가 등록된 컨텍스트에 대응함을 검출하는 경우, 컨텍스트 데몬은, 현재 컨텍스트가, 컨텍스트 클라이언트가 관심이 있는 컨텍스트와 매칭함을 컨텍스트 클라이언트에게 통지할 수 있다. 따라서, 컨텍스트 클라이언트들은, 컨텍스트 업데이트들을 독립적으로 획득하고 컨텍스트 클라이언트에게 관련되거나 그에게 관심 대상인 컨텍스트의 변화들을 검출하는 데 필수적인 프로그래밍을 필요로 하지 않는다.
컴퓨팅 디바이스의 운영 컨텍스트를 효율적으로 모니터링하기 위한 시스템들, 방법들, 및 비일시적 컴퓨터 판독가능 저장 매체들이 개시된다. 일부 구현예들에서, 컨텍스트 데몬 및/또는 컨텍스트 클라이언트는 종료되어 시스템 리소스들을 절약할 수 있다. 예를 들어, 컨텍스트 데몬 및/또는 컨텍스트 클라이언트가 아이들(idle)인 경우, 그들은 셧다운되어 배터리 전력을 절약하거나 다른 시스템 리소스들(예컨대, 메모리)을 사용 중이 아니게 할 수 있다. 컨텍스트 데몬 및/또는 컨텍스트 클라이언트가 구동되고 있을 필요가 있는 이벤트(예컨대, 현재 컨텍스트의 변화)가 발생하는 경우, 컨텍스트 데몬 및/또는 컨텍스트 클라이언트는 그 이벤트를 처리하도록 재시작될 수 있다. 따라서, 시스템 리소스들은 관련 컨텍스트 정보 수집 및 콜백 통지 특징들을 여전히 제공하면서 절약될 수 있다.
컴퓨팅 디바이스의 향후 컨텍스트를 예측하기 위한 시스템들, 방법들, 및 비일시적 컴퓨터 판독가능 저장 매체들이 개시된다. 일부 구현예들에서, 컨텍스트 데몬은 컨텍스트 정보 이력을 이용하여 향후 이벤트들 및/또는 컨텍스트 변화들을 예측할 수 있다. 예를 들어, 컨텍스트 데몬은 컨텍스트 정보 이력을 분석하여 사용자 취침 패턴들, 사용자 운동 패턴들, 및/또는 다른 사용자 활동을 예측할 수 있다. 일부 구현예들에서, 컨텍스트 클라이언트는 예측된 향후 컨텍스트에 대한 콜백을 등록할 수 있다. 예를 들어, 컨텍스트 클라이언트는 예측된 이벤트 및/또는 컨텍스트 변화에 10분 앞서서 통지될 것을 요청할 수 있다. 컨텍스트 데몬은 예측된 이벤트에 앞서서 컨텍스트 클라이언트에게 통지하기 위해 예측을 이용할 수 있다.
컨텍스트 모니터링/예측의 상세한 설명
현재 컨텍스트의 결정
도 40a은 컴퓨팅 디바이스의 운영 컨텍스트의 변화들을 모니터링하고 예측하고 컨텍스트 클라이언트들에게 통지하기 위한 예시적인 시스템(40_100)의 블록도이다. 컴퓨팅 디바이스는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 스마트폰, 태블릿 컴퓨터, 또는 임의의 다른 유형의 컴퓨팅 디바이스일 수 있다. 시스템(40_100)은, 예를 들어, 컴퓨팅 디바이스 상에서 구동되도록 구성될 수 있다. 일부 구현예들에서, 시스템(40_100)은 컨텍스트 데몬(40_102)을 포함할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스 상에서 실행되는 백그라운드 프로세스일 수 있다. 컨텍스트 데몬(40_102)은, 예를 들어, 컴퓨팅 디바이스의 운영 체제에 포함된 프로세스일 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스의 현재 운영 컨텍스트에 관한 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 정보는 컴퓨팅 디바이스의 내부 및/또는 외부 컨텍스트를 설명하는 정보를 포함할 수 있다. 일부 구현예들에서, 내부 컨텍스트 정보는 하드웨어 상태 정보를 포함할 수 있다. 예를 들어, 하드웨어 상태 정보는 사용 중인 하드웨어 및 그 하드웨어가 사용되고 있는 방법을 식별할 수 있다. 하드웨어가 다른 디바이스와 통신하는 데 사용되고 있는 무선 송수신기인 경우, 하드웨어 상태 정보는 다른 디바이스, 접속이 언제 생성되었는지, 얼마나 많은 데이터가 송신되었는지 등을 식별할 수 있다. 일부 구현예들에서, 내부 컨텍스트 정보는 소프트웨어 상태 정보를 포함할 수 있다. 예를 들어, 캘린더 애플리케이션에 대한 상태 정보는 캘린더 이벤트들, 모임들, 모임들에 참석할 연락처의 이름들, 모임들의 시작 및 종료 시간 등을 포함할 수 있다.
일부 구현예들에서, 외부 컨텍스트 정보는 사용자 활동을 포함할 수 있다. 예를 들어, 외부 컨텍스트 정보는 하드웨어 상태 정보 및/또는 소프트웨어 상태 정보로부터 도출될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 하드웨어 및/또는 소프트웨어 상태 정보로부터 사용자 거동(예컨대, 취침 패턴들, 작업 패턴들, 식사 패턴들, 이동 패턴들 등)을 도출할 수 있고, 이는 이하 더 설명되는 바와 같다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 다양한 유형들의 컨텍스트 정보를 수집하기 위한 모니터 번들들(40_104)을 포함할 수 있다. 모니터 번들들(40_104) 내의 각각의 모니터 번들(40_106)은 대응하는 컨텍스트 항목들에 관한 컨텍스트를 수집하도록 구성될 수 있다. 예를 들어, 모니터 번들(40_106)은 컨텍스트 데몬(40_102) 외부의 프로세스일 수 있다. 모니터 번들(40_106)은 컨텍스트 데몬(40_102) 내에서 실행될 수 있는 동적으로 로딩된 소프트웨어 패키지일 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 컨텍스트 모니터(40_108)를 포함할 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 컴퓨팅 디바이스의 현재 컨텍스트에 관한 정보를 수집하도록 구성될 수 있다. 일부 구현예들에서, 모니터 번들(40_106)은 이력 모니터(historical monitor)(40_110)를 포함할 수 있다. 예를 들어, 이력 모니터(40_110)는 컴퓨팅 디바이스에 대한 컨텍스트 이력을 수집 또는 결정하도록 구성될 수 있고, 이는 이하 더 설명되는 바와 같다.
일부 구현예들에서, 모니터 번들들(40_104) 내의 각각의 모니터 번들(40_106)는 특정 유형들의 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 많은 상이한 모니터 번들들(40_106)을 로딩할 수 있다. 각각의 모니터 번들(40_106)은 컴퓨팅 디바이스 내의 상이한 소스들(40_130)로부터 상이한 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 하나의 모니터 번들(40_106)은 블루투스 컨텍스트 항목에 관한 컨텍스트 정보를 수집할 수 있는 반면, 다른 모니터 번들(40_106)은 잠금 상태 컨텍스트 항목에 관한 컨텍스트 정보를 수집할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 위치 API(40_132)로부터 디바이스 위치 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 위치 API(40_132)로부터 GNSS(global navigational satellite system) 수신기에 의해 수신되는 현재 GNSS 위치 데이터를 수신할 수 있다. 모니터 번들(40_106)은 위치 API(40_132)로부터 현재 셀룰러 및/또는 WiFi 도출된 위치 데이터를 수신할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 잠금 상태 API(40_134)로부터 잠금 상태 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 컴퓨팅 디바이스의 현재 잠금 상태(예컨대, 잠김, 잠금해제됨 등)를 설명하는 잠금 상태 컨텍스트 정보를 수집할 수 있다. 예를 들어, 컴퓨팅 디바이스의 사용자는 컴퓨팅 디바이스와 함께 사용하거나 그와 상호작용하기 위해 컴퓨팅 디바이스를 잠금해제해야 한다. 디바이스가 잠긴 경우, 디바이스는 사용자 입력을 수용하지 않을 것이다. 디바이스가 잠금해제되어 있는 경우, 디바이스는 사용자 입력을 수용할 것이다. 터치 스크린 디스플레이들을 갖는 핸드헬드 디바이스들의 경우, 디바이스가 잠금해제되어 있을 때, 디스플레이는 조명될 수 있고, 사용자로부터의 터치 입력을 수용할 수 있다. 터치 스크린 디바이스가 잠긴 경우, 디스플레이는 어두울 수 있고 터치 스크린 디스플레이는 터치 입력을 수용하지 않을 것이다. 따라서, 컴퓨팅 디바이스의 잠금 상태는 사용자가 컴퓨팅 디바이스와 상호작용했다는 증거를 제공할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 애플리케이션 관리자 API(40_136)로부터 애플리케이션 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 애플리케이션 관리자 API(40_136)로부터, 어느 애플리케이션들이 컴퓨팅 디바이스 상에서 현재 구동 중인지, 애플리케이션들이 얼마나 오랫동안 구동되고 있었는지, 애플리케이션들이 언제 호출되었는지, 그리고/또는 어느 애플리케이션이 현재 (예컨대, 포어그라운드에서, 디스플레이 상에서 가시적인) 포커스 애플리케이션인지를 설명하는 정보를 수신할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 블루투스 API(40_138)로부터 블루투스 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 블루투스 API(40_138)로부터, 컴퓨팅 디바이스에 접속된 블루투스 디바이스의 식별 및 유형, 접속이 언제 확립되었는지, 그리고 컴퓨팅 디바이스가 블루투스 디바이스와 얼마나 오랫동안 접속되었는지(예컨대, 지속기간)를 포함한, 활성 블루투스 연결을 설명하는 정보를 수신할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 헤드폰 API(40_138)로부터 헤드폰 잭 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 헤드폰 API(40_138)로부터, 유선 헤드폰 또는 헤드셋(또는 다른 디바이스)이 컴퓨팅 디바이스의 헤드폰 잭에 현재 접속되어 있는지 여부를 설명하는 정보를 수신할 수 있다. 일부 구현예들에서, 모니터 번들(40_106)은 헤드폰 API(40_138)로부터, 헤드폰 잭에 접속된 디바이스의 유형에 관한 정보를 수신할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 다른 디바이스 상태 API들(40_142)로부터 다른 컨텍스트 정보를 수집하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 다른 상태 API들(40_138)로부터, WiFi 연결들, 전화 연결들, 애플리케이션 사용, 캘린더 이벤트들, 사진들, 미디어 사용 정보, 배터리 충전 상태, 및/또는 컴퓨팅 디바이스의 현재 내부 및/또는 외부 컨텍스트를 설명 또는 추론하는 데 이용될 수 있는 임의의 다른 상태 정보를 설명하는 정보를 수신할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 필요에 따라 컨텍스트 데몬(40_102) 내에 동적으로 로딩될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)에 의해 위치 컨텍스트 정보가 필요한 경우(예컨대, 클라이언트가 위치 정보를 요청한 경우), 컨텍스트 데몬(40_102)은 위치 특정 모니터 번들(40_106)을 모니터 번들들(40_104) 내에 로딩할 수 있다. 일단 로딩되면, 모니터 번들(40_106)의 컨텍스트 모니터(40_108)는 현재 위치 특정 컨텍스트를 수집하기 시작할 것이다. 필요에 따라 모니터 번들들(40_106)을 로딩함으로써, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스의 시스템 리소스들, 예컨대 메모리 및 배터리 전력을 절약할 수 있다. 일부 구현예들에서, 모니터 번들(40_106)은 외부 프로세스, 예컨대 보고 클라이언트(40_124)일 수 있다. 컨텍스트 데몬(40_102)은 필요에 따라 외부 프로세스 모니터 번들(40_106)을 호출하여 컨텍스트 정보를 수집할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 콜백 요청을 수신하는 것에 응답하여 모니터 번들(40_106)을 로딩 또는 호출할 수 있고, 이는 이하 설명되는 바와 같다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 보고 클라이언트(40_124)로부터 컨텍스트 정보를 수신할 수 있다. 예를 들어, 보고 클라이언트(40_124)(컨텍스트 클라이언트)는, 컨텍스트 정보를 생성 또는 수집하고 그 컨텍스트 정보를 컨텍스트 데몬(40_102)에 보고하는, 컴퓨팅 디바이스 상에서 구동되는 임의의 소프트웨어일 수 있다. 예를 들어, 컴퓨팅 디바이스 상에서 구동되는 지도 애플리케이션은 위치 API(40_132)를 이용하여 위치 정보를 획득함으로써 시작 위치로부터 목적지 위치까지 사용자의 경로를 어떻게 정할지 결정하게 할 수 있다. 경로를 결정하는 것 외에도, 지도 애플리케이션은 위치 API(40_132)로부터 획득되는 위치 정보를 컨텍스트 데몬(40_102)에 보고할 수 있다. 따라서, 보고 클라이언트(40_124)가 모니터 번들(40_106)처럼 컨텍스트 정보를 수집 및 보고할 목적으로 구축되지는 않지만, 보고 클라이언트(40_124)는 보고 클라이언트(40_124)가 그의 주 기능을 수행하면서 컨텍스트 정보를 획득하는 경우에 그 컨텍스트 정보를 보고하도록 구성될 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 현재 컨텍스트(40_112)를 포함할 수 있다. 예를 들어, 현재 컨텍스트(40_112)는 모니터 번들들(40_104)(예컨대, 모니터 번들(40_106)) 및/또는 보고 클라이언트(40_124)로부터 수신되는 컨텍스트 정보의 메모리 내 저장소일 수 있다. 모니터 번들들(40_104) 및/또는 보고 클라이언트(40_124)가 컨텍스트 정보를 컨텍스트 데몬(40_102)에 보고하는 경우, 컨텍스트 데몬(40_102)은 새로 수신된 컨텍스트 정보로 현재 컨텍스트(40_112)를 업데이트할 수 있다. 따라서, 현재 컨텍스트(40_112)는 컴퓨팅 디바이스의 현재 컨텍스트를 설명하는 컨텍스트 정보(예컨대, 컨텍스트 항목들)를 포함할 수 있다.
도 2a 및 도 2b는 예시적인 현재 컨텍스트들(40_200, 40_250)을 도시한다. 도 2a는 현재 컨텍스트(40_200)를 구성할 수 있는 컨텍스트 항목들의 일례를 도시한다. 예를 들어, 현재 컨텍스트(40_200)(예컨대, 현재 컨텍스트(40_112))는 시간(T)에서의 컴퓨팅 디바이스에 대한 컨텍스트 정보를 포함할 수 있다. 예를 들어, 현재 컨텍스트(40_200)는 현재 잠김 상태(거짓)를 표현하는 컨텍스트 항목을 포함할 수 있다. 현재 컨텍스트(40_200)는 헤드폰 잭의 플러그인 상태(거짓)를 표현하는 컨텍스트 항목을 포함할 수 있다. 현재 컨텍스트(40_200)는 배터리의 충전 상태(거짓)를 표현하는 컨텍스트 항목을 포함할 수 있다. 현재 컨텍스트(40_200)는 블루투스 송수신기의 연결 상태(거짓)를 표현하는 컨텍스트 항목을 포함할 수 있다. 현재 컨텍스트(40_200)는 컴퓨팅 디바이스 상에서 현재 포커스를 두고 있는 애플리케이션(소셜 앱)을 식별하는 컨텍스트 항목을 포함할 수 있다. 현재 컨텍스트(40_200)에 나타난 컨텍스트 정보는, 예를 들어, 모니터 번들(40_106)로부터 그리고/또는 보고 클라이언트(40_124)로부터 수신될 수 있다.
도 40c는 현재 컨텍스트(40_250)에 추가되는 새로운 컨텍스트 항목의 일례를 도시한다. 현재 컨텍스트(40_250)(현재 컨텍스트(40_112))는 소정 시간(T') 뒤의 컴퓨팅 디바이스에 대한 컨텍스트 정보를 포함할 수 있다. 예를 들어, 현재 컨텍스트(40_250)는 컴퓨팅 디바이스의 현재 위치를 식별하는 새로운 컨텍스트 항목을 포함한다. 새로운 위치 컨텍스트 항목은, 새로운 위치 모니터 번들(40_106)이 컨텍스트 데몬(40_102) 내에 로딩되고 위치 컨텍스트 정보를 컨텍스트 데몬(40_102)에 보고하기 시작할 때 추가될 수 있다. 예를 들어, 새로운 위치 모니터 번들(40_106)은 위치 정보에 대한 컨텍스트 클라이언트로부터의 요청에 응답하여 로딩될 수 있다.
콜백 요청들
도 40a을 참조하면, 일부 구현예들에서, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스 상에서 구동되는 컨텍스트 클라이언트 소프트웨어가 현재 컨텍스트(40_112) 내의 정보에 액세스(예컨대, 질의, 보기 등)하게 하는 API를 노출시킬 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 특정 컨텍스트가 컨텍스트 데몬(40_102)에 의해 검출될 때 요청 클라이언트(40_126)(컨텍스트 클라이언트)를 콜백하라는 요청을 요청 클라이언트(40_126)로부터 수신할 수 있다. 예를 들어, 요청 클라이언트(40_126)는 콜백 요청을 컨텍스트 데몬(40_102)으로 전송할 수 있다. 콜백 데몬(40_102)은 콜백 요청 정보를 콜백 레지스트리(40_114)에 저장할 수 있다. 콜백 레지스트리(40_114)는 콜백 정보의 메모리 내 저장소일 수 있다. 예를 들어, 콜백 요청은 요청 클라이언트(40_126)에게 통지하기 위한 술어(예컨대, 컨텍스트 조건)를 특정할 수 있다. 콜백 요청은 요청 클라이언트(40_126)에 대한 클라이언트 식별자를 포함할 수 있다.
일부 구현예들에서, 콜백 요청이 수신된 경우, 콜백 레지스트리(40_114)는 콜백 요청에 대한 고유 식별자를 생성할 수 있고, 콜백 술어 데이터베이스(40_116)에 콜백 요청 식별자, 클라이언트 식별자, 및 콜백 술어를 저장할 수 있다. 컨텍스트 데몬(40_102)은 콜백 요청을 수신하는 것에 응답하여 콜백 요청 식별자를 요청 클라이언트(40_126)에게 반환할 수 있다. 현재 컨텍스트(40_112) 내의 컨텍스트 정보가 술어를 만족시키는 경우, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에게 통지할 것이다. 예를 들어, 콜백 통지는 요청 클라이언트(40_126)가 통지에 대응하는 콜백 요청을 결정할 수 있도록 콜백 요청 식별자를 포함할 수 있다. 예를 들어, 요청 클라이언트(40_126)는 많은 콜백 요청들을 컨텍스트 데몬(40_102)에 등록할 수 있다. 콜백 데몬(40_102)이 콜백 통지를 요청 클라이언트(40_126)로 전송하는 경우, 요청 클라이언트(40_126)는 콜백 요청 식별자를 사용하여 콜백 통지가 어느 콜백 요청과 관련되는지 판정할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)로부터 콜백 요청을 수신하는 것에 응답하여 모니터 번들(40_106)을 로딩할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 모니터 번들들(40_106)의 지연 초기화(lazy initialization)를 지원할 수 있다. 다시 말하면, 컨텍스트 데몬(40_102)은 콜백 요청을 서비스할 필요가 있는 경우에 모니터 번들(40_106)을 로딩 및 초기화할 수 있다. 예를 들어, 어떠한 클라이언트도 위치 정보에 관심이 없는 경우, 컨텍스트 데몬(40_102)은 필요하지 않은 컨텍스트 항목을 모니터링하는 데 시스템 리소스들(예컨대, 배터리, 메모리 등)이 낭비되지 않도록 위치 모니터 번들(40_106)을 로딩하지 않을 수도 있다. 그러나, 위치 컨텍스트 항목에 대한 콜백 요청의 수신 시, 콘텐츠 데몬(40_102)은 위치 컨텍스트 항목과 연관된 모니터 번들(40_106)을 로딩, 초기화, 또는 호출할 수 있고, 컴퓨팅 디바이스의 위치에 관한 컨텍스트 정보를 수신하기 시작할 수 있다.
일부 구현예들에서, 모니터 번들(40_106)은 컨텍스트 데몬(40_102)에 대한 소프트웨어 플러그인일 수 있다. 예를 들어, 모니터 번들(40_106)은 동적으로 컨텍스트 데몬(40_102) 내로 로딩될 수 있고 컨텍스트 정보를 모니터링하도록 실행될 수 있는 소프트웨어 코드(예컨대, 라이브러리, 객체 코드, 자바 자(java jar) 파일 등)일 수 있다. 일부 구현예들에서, 모니터 번들(40_106)은 컨텍스트 데몬(40_102) 외부의 별개의 프로세스일 수 있다. 예를 들어, 모니터 번들(40_106)은 컨텍스트 데몬(40_102)이 컨텍스트 정보를 모니터링 및 보고하도록 호출할 수 있는 독립형 실행가능물(executable)일 수 있다.
도 40d은 예시적인 콜백 술어 데이터베이스(40_300)를 도시한다. 예를 들어, 술어 데이터베이스(40_300)는 도 1의 술어 데이터베이스(40_116)에 대응할 수 있다. 일부 구현예들에서, 술어 데이터베이스(40_300) 내의 각각의 엔트리(40_302 내지 40_316)는 콜백 요청 식별자를 포함할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)로부터 콜백 요청을 수신하는 경우, 컨텍스트 데몬(40_102)은 콜백 요청에 대한 고유 요청 식별자를 생성할 수 있다. 전술된 바와 같이, 컨텍스트 데몬(40_102)은 콜백 요청에 응답하여 콜백 요청 식별자를 요청 클라이언트(40_126)에게 반환할 수 있다. 컨텍스트 데몬(40_102)은 생성된 콜백 요청 식별자를 콜백 데이터베이스 내의 클라이언트 식별자 및 콜백 술어와 연관시킬 수 있다. 컨텍스트 데몬(40_102)이 콜백 통지를 요청 클라이언트(40_126)로 전송하는 경우, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)가, 컨텍스트 데몬(40_102)이 콜백 통지를 왜 전송하고 있는지 판정할 수 있도록 통지에 콜백 식별자를 포함시킬 수 있다. 예를 들어, 요청 클라이언트(40_126)는 다수의 콜백 요청들을 컨텍스트 데몬(40_102)으로 전송할 수 있다. 요청 클라이언트(40_126)는 콜백 요청 식별자에 기초하여 컨텍스트 데몬(40_102)이 어느 콜백 요청에 대한 통지를 전송하고 있는지 판정할 수 있다.
일부 구현예들에서, 술어 데이터베이스(40_300) 내의 각각의 엔트리(40_302 내지 40_316)는 클라이언트 식별자 및 콜백 술어를 포함할 수 있다. 클라이언트 식별자는 컴퓨팅 디바이스의 현재 컨텍스트가 요청 클라이언트(40_126)에 의해 특정된 대응하는 술어를 만족시키는 경우에 통지(예컨대, 콜백)받을 것을 요청한 클라이언트에 대응할 수 있다. 일부 구현예들에서, 클라이언트 식별자는 컴퓨팅 디바이스 상에서 프로세스들을 개시(예컨대, 실행, 호출 등)하도록 구성된 개시 데몬에 의해 생성될 수 있고, 이는 이하에 더 설명되는 바와 같다. 예를 들어, 엔트리(40_302)는 컴퓨팅 디바이스의 현재 컨텍스트가, 디바이스가 잠겨 있음을 그리고 포커스 애플리케이션이 음악 애플리케이션임을 나타낼 때 통지받을 것을 요청한, 클라이언트 식별자 "Client_ID1"을 갖는 요청 클라이언트(40_126)에 대응한다. 다르게 말하면, 클라이언트 식별자 "Client_ID1"에 대응하는 컨텍스트 클라이언트(예컨대, 요청 클라이언트(40_126))는 컨텍스트 클라이언트에게 통지(예컨대, 콜백)하기 위한 술어가, 디바이스가 잠겨 있고 사용자에 의해 현재 사용되고 있는 애플리케이션이 음악 애플리케이션이라는 것을 특정했다. 예를 들어, 요청 클라이언트(40_126)에 의해 특정된 술어는 논리(예컨대, 불(Boolean)) 연산자들에 의해 구분되는 하나 이상의 컨텍스트 조건들(예컨대, 하드웨어 상태 값들, 소프트웨어 상태 값들, 및 도출된 컨텍스트 등)을 식별할 수 있다. 컴퓨팅 디바이스의 현재 상태가 특정된 술어에 대응하는 경우, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에게 통지(예컨대, 콜백)할 것이다.
일부 구현예들에서, 술어는 시간 컴포넌트를 포함할 수 있다. 예를 들어, 술어는 요청 클라이언트(40_126)가, 요청 클라이언트(40_126)가 통지받아야 하는 소정 이벤트(예컨대, 상태 변화, 컨텍스트 변화 등) 이전 또는 이후의 시간을 나타내게 하는 "before" 및/또는 "after" 연산자(항)들을 포함할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 모임이 향후 특정 시간에 스케줄링됨을 나타내는 캘린더 애플리케이션 상태 정보를 수신할 수 있다. 요청 클라이언트(40_126)는 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)에게 모임 30분 전에 통지해야 함을 특정하는 술어(예컨대, 엔트리(40_316))를 등록할 수 있다. 현재 시간이 모임 30분 전에 대응하는 경우, 컨텍스트 데몬(40_102)은 통지를 요청 클라이언트(40_126)에게 전송할 수 있다. 유사하게, 컨텍스트 데몬(40_102)은 컨텍스트 정보 이력에 기초하여 향후 이벤트(예컨대, 사용자 취침 기간, 사용자가 귀가하는 것, 사용자가 출근하는 것, 사용자가 기상하는 것 등)를 예측할 수 있다. 예를 들어, 요청 클라이언트(40_126)는 예측된 사용자 취침 기간 30분 전에 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)에게 통지해야 하는 것을 특정하는 술어(예컨대, 엔트리(40_306))를 등록할 수 있다. 현재 시간이 예측된 취침 기간 30분 전에 대응하는 경우, 컨텍스트 데몬(40_102)은 통지를 요청 클라이언트(40_126)에게 전송할 수 있다. 마찬가지로, 요청 클라이언트(40_126)는 컨텍스트 데몬(40_102)이 예측된 취침 기간에 기초하여 사용자가 기상할 것으로 예측된 뒤 5분 후에 요청 클라이언트(40_126)에게 통지해야 함을 특정하는 술어(예컨대, 엔트리(40_310))를 등록할 수 있다. 예를 들어, 현재 시간이 사용자가 기상한 뒤 5분 후에 대응하는 경우, 컨텍스트 데몬(40_102)은 통지를 요청 클라이언트(40_126)에게 전송할 수 있다.
이벤트 스트림들
도 40a을 참조하면, 일부 구현예들에서, 컨텍스트 데몬(40_102)은 이력 지식 저장소(40_118)를 포함할 수 있다. 예를 들어, 현재 컨텍스트(40_112)가 전술된 바와 같이 컴퓨팅 디바이스의 현재 상태를 반영하는 컨텍스트 정보를 포함하는 한편, 이력 지식(40_118)은 컨텍스트 정보 이력을 포함한다. 이력 지식(40_118)은 컨텍스트 정보 이력의 메모리 내 저장소일 수 있다. 예를 들어, 이력 지식(40_118)은 시간 경과에 따른 컨텍스트(예컨대, 상태)의 변화를 표현하는 이벤트 스트림들을 포함할 수 있다. 예를 들어, 현재 컨텍스트(40_112)에서 추적되는 각각의 이벤트 또는 컨텍스트 항목은 대응하는 값을 갖는다. 현재 컨텍스트(40_112) 내의 컨텍스트 항목이 값을 변화시키는 경우, 오래된 값은 이력 지식(40_118)에 기록될 수 있다. 상태 변화들을 분석함으로써, 시작 시간, 종료 시간, 및 지속기간이 각각의 컨텍스트 항목 값에 대해 계산될 수 있다.
도 40e는 시간 경과에 따른, 컨텍스트 항목들과 연관된 예시적인 값 변화들을 나타낸 그래프(40_400)이다. 예를 들어, 그래프(40_400)는 잠김, 헤드폰, 충전, 블루투스, 포커스 앱, 취침, 및 위치 컨텍스트 항목들에 대한 현재 값들을 나타내는 현재 컨텍스트(40_402)를 포함한다. 그래프(40_400)는 시간 경과에 따른, 동일한 컨텍스트 항목들에 대한 과거(이력) 값들(40_404)을 포함한다. 컨텍스트 항목 값들의 변화들을 분석함으로써, 컨텍스트 데몬(40_102)은 컨텍스트 항목들과 연관되는 각각의 값에 대해 시작 시간들, 종료 시간들, 및 지속기간들을 판정할 수 있고, 이는 이하 도 5에 의해 도시된 바와 같다.
도 40f는 컨텍스트 항목들과 연관된 예시적인 이벤트 스트림들을 나타낸 그래프(40_500)이다. 일부 구현예들에서, 도 40e의 그래프(40_400)에 표현된 각각의 상태 변화는 특정 상태가 시스템 내에 존재했던 지속기간을 설명하는 데이터 및 그 상태와 연관된 메타데이터를 포함하는 데이터 객체(예컨대, 객체(40_502))로 변환될 수 있다. 일부 구현예들에서, 이력 모니터(40_110)는 현재의 컨텍스트 정보 및/또는 컨텍스트 정보 이력을 이벤트 스트림 객체들 이력으로 변환하도록 구성될 수 있다. 예를 들어, 값 변화가 특정 모니터 번들(40_106)에 대응하는 컨텍스트 항목에 대해 검출되는 경우, 이력 모니터(40_110)는 컨텍스트 항목의 이전 값에 기초하여 이벤트 스트림 객체들 이력을 생성할 수 있다. 예를 들어, 일부 컨텍스트 모니터들(40_106)은 컴퓨팅 디바이스의 소프트웨어 및/또는 하드웨어 컴포넌트의 상태를 주기적으로 보고하도록 구성될 수 있다. 컨텍스트 모니터(40_106)는, 예를 들어, 블루투스 상태 정보를 주기적으로 보고하도록 구성될 수 있다. 보고된 블루투스 상태 정보는 동일한 상태 값들의 시퀀스와 뒤이은 상태 변화를 포함할 수 있다. 예를 들어, 컨텍스트 모니터(40_106)는 블루투스의 상태가 "오프, 오프, 오프, 오프, 온"임을 보고할 수 있다. 이력 모니터(40_110)는 일련의 "오프" 블루투스 컨텍스트 항목 값들을 조합할 수 있고, "오프" 값의 시작 시간 및 종료 시간을 판정할 수 있고, 블루투스 컴포넌트가 얼마나 오랫동안 "오프" 상태에 있었는지 계산할 수 있다.
일부 구현예들에서, 이력 모니터(40_110)는 이벤트 스트림 객체들에 대한 추가 정보(예컨대, 메타데이터)를 수집할 수 있다. 예를 들어, 상기의 블루투스 예를 계속 참조하면, 이력 모니터(40_110)는, 블루투스 컨텍스트 항목이 "온" 값을 가졌던 것으로 판정할 수 있고 블루투스 API(40_138)로부터 추가 정보를 요청할 수 있다. 예를 들어, 이력 모니터(40_110)는 블루투스 API(40_138)로부터, 컴퓨팅 디바이스에 접속된 블루투스 디바이스의 유형을 식별하는 정보, 사용된 블루투스 프로토콜, 블루투스 연결을 통해 송신된 데이터의 양, 및/또는 블루투스 연결과 관련된 임의의 다른 정보를 수신할 수 있다.
다른 예에서, 컨텍스트 모니터(40_108)가 전화 API(예컨대, 호출된 전화 번호, 호출이 시작된 시간, 호출이 종료된 시간 등)로부터 현재 컨텍스트 정보(예컨대, 호출 정보)를 수집하도록 구성될 수 있는 반면, 이력 모니터(40_110)는 연락처 API(예컨대, 호출된 사람의 이름 등) 또는 호출 이력 API(예컨대, 호출된 사람의 이름, 호출의 지속기간 등)로부터 호출에 대한 이벤트 스트림 메타데이터를 수신할 수 있고 이러한 추가 정보를 전화 컨텍스트 항목에 대한 이벤트 스트림 객체에 추가할 수 있다. 따라서, 이력 모니터(40_110)는 이력 참조를 위해 그리고 향후 이벤트들을 예측하기 위해 이벤트(예컨대, 이벤트 스트림, 이벤트 스트림 객체) 이력이 더 가치있게 되도록 하기 위해 이벤트 이력에 관한 추가 데이터를 생성 또는 수집하도록 구성될 수 있다. 일단 이력 모니터(40_110)가 이벤트 스트림 메타데이터를 수집 또는 생성하면, 이력 모니터(40_110)는 이력 지식 저장소(40_118)에 이벤트 스트림 메타데이터를 저장할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102) 및/또는 이력 모니터(40_110)는 이력 데이터베이스(40_120)에 이벤트 스트림 객체들(예컨대, 시작 시간, 종료 시간, 지속기간, 및/또는 메타데이터를 포함함)을 저장할 수 있다.
도 6은 예시적인 이벤트 스트림 이력 데이터베이스(40_600)를 도시한다. 예를 들어, 이벤트 스트림 이력 데이터베이스는 이력 데이터베이스(40_120)에 대응할 수 있다. 예시적인 이벤트 스트림 이력 데이터베이스(40_600)는 이력 데이터베이스(40_600)에 저장된 이벤트 스트림 데이터 이력의 개념적 묘사를 표현하고, 이력 데이터베이스(40_600)의 실제 구현을 반영하지 않을 수도 있다. 당업자는 데이터베이스(40_600) 내의 이벤트 스트림 데이터 이력이 많은 상이한 방식들로 체계화 및 저장될 수 있음을 인식할 것이다.
일부 구현예들에서, 이력 데이터베이스(40_600)는 이벤트 스트림 테이블들(40_602 내지 40_614)을 포함할 수 있다. 예를 들어, 각각의 이벤트 스트림 테이블(40_602 내지 40_614)은 단일 이벤트 스트림(예컨대, 컨텍스트 항목)에 대응할 수 있다. 각각의 이벤트 스트림 테이블(예컨대, 테이블(40_602))은 이벤트 스트림 내의 이벤트 스트림 객체에 대응하는 레코드들((예컨대, 40_616, 40_618 등)을 포함할 수 있다. 예를 들어, "잠김" 이벤트 스트림 테이블(40_602)은 "잠김" 이벤트 스트림의 잠긴(또는 잠금해제된) 상태를 설명하는 이벤트 스트림 객체 레코드들(40_616, 40_618)을 포함할 수 있다. 이벤트 스트림 객체 레코드들은 이벤트가 언제 시작되었는지 나타내는 타임스탬프(TS) 값을 갖는 "시작" 필드를 포함할 수 있다. 이벤트 스트림 객체 레코드들은 이벤트의 지속기간(D)을 나타내는 "지속기간" 필드를 포함할 수 있다. 이벤트 스트림 객체 레코드들은 이벤트에 대응하는 상태 변화를 설명하는 상태 정보(예컨대, 디바이스가 잠기지 않았음을 나타내는 "잠김:거짓")를 포함할 수 있다.
일부 구현예들에서, 이벤트 스트림 객체 레코드들은 이벤트와 연관된 다른 데이터를 설명하는 메타데이터를 포함할 수 있다. 예를 들어, 이벤트 스트림 데이터 이력을 생성하는 경우, 이력 모니터(40_110)는 이벤트의 시간에 시스템의 추가 속성들 또는 그의 상태를 둘러싸는 환경들을 설명하는 메타데이터를 수집할 수 있고/있거나 생성할 수 있다. 예를 들어, "충전" 이벤트 스트림(40_606)의 경우, 이력 모니터(40_110)는 충전 이벤트의 시작 및/또는 종료 시에 배터리 충전의 상태(예컨대, 퍼센트 충전, 충전 레벨 등)와 관련된 정보를 수집할 수 있다. 블루투스 이벤트 스트림(40_608)의 경우, 이력 모니터(40_110)는 컴퓨팅 디바이스에 접속된 블루투스 디바이스의 유형 및/또는 블루투스 디바이스로 송신되는 미디어의 소스에 관련된 정보를 수집할 수 있다. 위치 이벤트 스트림(40_612)의 경우, 이력 모니터(40_110)는 원시 위치 데이터(예컨대, 격자식 좌표, GNSS 데이터, 셀 타워 식별 데이터, Wi-Fi 네트워크 식별자들 등)를 인간 사용자가 이해할 수 있는 위치 용어들(예컨대, 집, 직장, 학교, 잡화점, 식당 이름 등)로 변환할 수 있다.
일부 구현예들에서, 이력 모니터(40_110)는 컨텍스트 모니터(40_108)보다 더 정확한 위치 정보를 생성 또는 획득할 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는, 만일 있다면, 많은 프로세싱이 없이 현재(예컨대, 순간) 위치 정보를 제공할 수 있다. 이 초기 위치 데이터는 위치 기술들에 따른 다양한 문제들(예컨대, 신호 다중경로 문제들, 충분한 위성들과의 접속 곤란성 등)로 인해 부정확할 수 있다. 추가 시간 및 추가 데이터가 주어지면, 위치는 더 큰 정확도로 판정될 수 있다. 이력 모니터(40_110)가 (현재 또는 순간 데이터보다는) 데이터 이력을 프로세싱하므로, 예를 들어, 이력 모니터(40_110)는 위치 API(40_132)로부터 더 정확한 위치 정보를 획득하는 데 시간을 소요할 수 있다. 이벤트를 설명하는 이러한 추가 메타데이터는 이력 데이터베이스(40_600)의 이벤트 스트림 레코드들에 저장될 수 있다.
일부 구현예들에서, 이력 모니터(40_110)는 모니터 번들(40_106)의 초기화 시에 컨텍스트 항목에 관한 이력 정보를 획득할 수 있다. 예를 들어, 모니터 번들(40_106)이 위치 컨텍스트를 모니터링하도록 구성된 경우, 전술된 바와 같이, 컨텍스트 데몬(40_102)은 필요에 따라 모니터 번들(40_106)을 로딩, 호출, 및/또는 초기화할 수 있다. 모니터 번들(40_106)이 초기화된 경우, 컨텍스트 모니터(40_108)는 위치 컨텍스트 항목에 대한 컨텍스트 정보를 수집할 것이다. 그러나, 모니터 번들(40_106)이 초기화되는 경우, 위치 컨텍스트 항목에 대한 어떠한 데이터 이력도 없는데, 그 이유는 그 위치 컨텍스트 항목이 이전에 모니터링되지 않았기 때문이다. 따라서, 일부 구현예들에서, 이력 모니터(40_110)는 위치 API(40_132)로부터 위치 데이터 이력을 요청할 수 있고, 위치 API(40_132)로부터 수신된 위치 데이터 이력에 기초하여 컨텍스트 정보(예컨대, 이벤트 스트림들, 이벤트 스트림 객체들 등) 이력을 생성할 수 있다.
이벤트 스트림 프라이버시
일부 구현예들에서, 각각의 이벤트 스트림은 대응하는 프라이버시 정책을 가질 수 있다. 일부 구현예들에서, 이벤트 스트림들은 디폴트 프라이버시 정책들로 구성될 수 있다. 일부 구현예들에서, 관리자 사용자가 각각의 이벤트 스트림에 대한(예컨대, 각각의 컨텍스트 항목에 대한) 프라이버시 정책들을 구성하도록 입력을 컴퓨팅 디바이스에 제공할 수 있다. 예를 들어, 각각의 이벤트 스트림들에 대응하는 프라이버시 정책은 시간 경과에 따라 변화할 수 있다.
일부 구현예들에서, 컨텍스트 항목에 대한 이벤트 스트림은 컨텍스트 항목에 대한 이력 정보를 유지하는 것을 방지하는 프라이버시 정책을 가질 수 있다. 예를 들어, 위치 컨텍스트 항목에 대응하는 이벤트 스트림은 컴퓨팅 디바이스의 위치의 이력 레코드를 유지하는 것을 불허하는 정책을 가질 수 있다. 이러한 "이력적이지 않은" 정책이 이벤트 스트림에 대해 구성된 경우, 이력 모니터(40_110)는 이벤트 스트림에 대한 컨텍스트 정보(예컨대, 이벤트 스트림 객체들) 이력을 생성하지 않을 것이다.
일부 구현예들에서, 컨텍스트 항목에 대한 이벤트 스트림은 컨텍스트 정보 이력이 삭제되기 전에 저장되어야 하는 시간(예컨대, 타임-투-라이브(time-to-live))을 특정하는 프라이버시 정책을 가질 수 있다. 예를 들어, "포커스 앱" 컨텍스트 항목에 대응하는 이벤트 스트림은 특정된 시간(예컨대, 3일, 1개월 등)보다 더 오래된 "포커스 앱" 컨텍스트 항목에 대한 이벤트 스트림 데이터가 삭제되어야 함을 특정하는 타임-투-라이브 정책을 가질 수 있다. 컨텍스트 데몬(40_102)은 타임-투-라이브 정책에서 특정된 시간보다 더 오래된 이벤트 스트림 객체들을 삭제하도록 이벤트 스트림에 대해 유지보수를 주기적으로 수행할 수 있다.
일부 구현예들에서, 컨텍스트 항목에 대한 이벤트 스트림은 타임스탬프 디-레졸루션(de-resolution) 정책을 가질 수 있다. 예를 들어, 타임스탬프 디-레졸루션 정책이 시행되는 경우, 이력 모니터(40_110)는 이벤트 스트림 내의 이벤트들(예컨대, 상태 변화들)과 연관된 정밀한 타임스탬프들을 덜 정밀하게 한다. 예를 들어, 위치 변화 이벤트는 밀리초에 이르기까지 정확하게 되는 타임스탬프를 가질 수 있다. 디-레졸루션 정책이 이벤트 스트림에 적용되는 경우, 이력 모니터(40_110)는 초 또는 분에 이르기까지 정확하게 되는 덜 정확한 타임스탬프를 사용할 수 있다. 예를 들어, 위치 이벤트 스트림에 대한 덜 정확한 타임스탬프를 사용함으로써, 시스템은 컨텍스트 클라이언트들이 사용자의 움직임들의 정밀한 타이밍을 판정하는 것을 방지함으로써 사용자의 프라이버시를 보호할 수 있다.
일부 구현예들에서, 컨텍스트 항목에 대한 이벤트 스트림은 저장 위치 정책을 가질 수 있다. 예를 들어, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 보안 상태에 대응하는 상이한 저장 위치들을 갖도록 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스는 컴퓨팅 디바이스가 잠금해제되어 있는 경우(예컨대, 사용자가 패스코드를 입력하여 디바이스를 잠금해제한 경우)에만 액세스될 수 있는 "A" 클래스 데이터베이스를 가질 수 있다. 컴퓨팅 디바이스는 컴퓨팅 디바이스의 재부팅 또는 시동 뒤의 제1 잠금해제 이후에(예컨대, 후속 잠금해제를 필요로 하지 않고서) 액세스될 수 있는 "B" 클래스 데이터베이스를 가질 수 있다. 컴퓨팅 디바이스는 언제든지(예컨대, 패스코드 입력과는 무관하게) 액세스될 수 있는 "C" 클래스 데이터베이스를 가질 수 있다. 이벤트 스트림에 대한 저장 위치 프라이버시 정책은 대응하는 이벤트 스트림 데이터를 저장할 데이터베이스의 클래스를 식별할 수 있다.
효율적인 컨텍스트 모니터링
일부 구현예들에서, 컴퓨팅 디바이스는 소프트웨어가 사용되고 있지 않을 때 컴퓨팅 디바이스 상에서 구동되는 소프트웨어를 종료하도록 구성될 수 있다. 예를 들어, 컴퓨팅 디바이스의 운영 체제는 아이들인 프로세스들을 식별하도록 구성될 수 있다. 운영 체제는 아이들 프로세스들을 셧다운(예컨대, 종료, 소멸(kill))시켜서, 시스템의 다른 컴포넌트들(예컨대, 소프트웨어, 하드웨어)에 의한 사용을 위해 메모리를 비워두거나 또는 배터리 리소스들을 절약할 수 있다. 그러나, 운영 체제가 아이들 컨텍스트 데몬(40_102)을 종료시키는 경우, 컨텍스트 데몬(40_102)은 시스템의 현재 컨텍스트를 더 이상 모니터링할 수 없을 것이고 요청 클라이언트들(40_126)에게 컨텍스트 변화들을 통지할 수 없을 것이다. 유사하게, 운영 체제가 아이들 요청 클라이언트(40_126)를 종료시키는 경우, 요청 클라이언트(40_126)는 컨텍스트 데몬(40_102)으로부터 콜백 통지를 수신하도록 구동되고 있지 않을 것이다. 하기의 단락들은 컨텍스트 데몬(40_102) 및/또는 요청 클라이언트(40_126)가 컨텍스트 모니터링 및/또는 콜백 동작들을 다루도록 재시작될 수 있게 하는 다양한 메커니즘들을 설명한다.
도 40h은 컨텍스트 콜백 통지를 요청 클라이언트(40_126)에게 제공하기 위한 예시적인 시스템(40_700)의 블록도이다. 예를 들어, 시스템(40_700)은 상기의 도 1의 시스템(40_100)에 대응할 수 있다. 일부 구현예들에서, 시스템(40_700)은 개시 데몬(40_702)을 포함할 수 있다. 예를 들어, 개시 데몬(40_702)은 컴퓨팅 디바이스 상에서 애플리케이션, 유틸리티, 툴, 및/또는 다른 프로세스를 개시(예컨대, 호출, 시작, 실행, 초기화 등)하도록 구성될 수 있다. 개시 데몬(40_702)은 컴퓨팅 디바이스 상에서 프로세스들을 모니터링하도록 그리고 아이들 프로세스들을 종료하도록 구성될 수 있다.
일부 구현예들에서, 개시 데몬(40_702)은 요청 클라이언트(40_126)를 개시할 수 있다. 예를 들어, 컴퓨팅 디바이스 상에서 구동되는 프로세스(예컨대, 운영 체제, 사용자 애플리케이션 등)는 요청 클라이언트(40_126)를 호출할 수 있다. 개시 데몬(40_702)은 호출에 대응하는 메시지를 수신할 수 있고, 요청 클라이언트(40_126)를 개시할 수 있다. 요청 클라이언트(40_126)를 개시할 시, 개시 데몬(40_702)은 컴퓨팅 디바이스 내의 요청 클라이언트(40_126)를 식별하는 데 사용될 수 있는 클라이언트 식별자(40_704)를 요청 클라이언트(40_126)에게 제공할 수 있다.
일부 구현예들에서, 클라이언트 식별자(40_704)는 개시 데몬(40_702)에 의해 생성되고 개시 데몬(40_702)에 의해 요청 클라이언트(40_126)에게 할당된 토큰(예컨대, 암호화된 데이터)일 수 있다. 개시 데몬(40_702)은 요청 클라이언트(40_126)에 대응하는(예컨대, 그를 정의하는) 소프트웨어 패키지와 토큰 사이의 맵핑을 클라이언트 식별자 데이터베이스(40_706)에 저장할 수 있다. 토큰은 토큰 자체가 대응하는 요청 클라이언트(40_126)를 식별하지 않도록 생성될 수 있다. 그러나, 개시 데몬(40_702)이 나중에 토큰을 수신하는 경우, 개시 데몬(40_702)은 토큰을 사용하여, 클라이언트 식별자 데이터베이스(40_706)에서 대응하는 요청 클라이언트(40_126)를 룩업할 수 있다. 따라서, 토큰은 대응하는 요청 클라이언트를 식별하는 인덱스로서 개시 데몬(40_702)에 의해 사용될 수 있는 반면, 토큰은 컴퓨팅 디바이스 내의 다른 소프트웨어에 대해서는 불투명하다.
일부 구현예들에서, 클라이언트 식별자(40_704)는 요청 클라이언트(40_126)의 특정 인스턴스에 대응하는 인스턴스 식별자일 수 있다. 일부 구현예들에서, 클라이언트 식별자(40_704)는 요청 클라이언트(40_126)의 모든 인스턴스들에 걸쳐서 소프트웨어 패키지(예컨대, 애플리케이션, 유틸리티, 툴 등)를 식별할 수 있다. 예를 들어, 개시 데몬(40_702)이 요청 클라이언트(40_126)의 제1 인스턴스를 개시하는 경우, 클라이언트 식별자(40_704)는 요청 클라이언트(40_126)의 제1 인스턴스를 식별할 수 있다. 요청 클라이언트(40_126)가 (예컨대, 요청 클라이언트(40_126)가 아이들이 되었기 때문에) 종료되는 경우, 동일한 클라이언트 식별자(40_704)는 개시 데몬(40_702)에 의해 개시되는 요청 클라이언트(40_126)의 후속 인스턴스들을 식별하는 데 사용될 수 있다. 개시 데몬(40_702)은 요청 클라이언트(40_126)와 유사한 메커니즘을 이용하여 컨텍스트 데몬(40_102)을 개시할 수 있다.
일부 구현예들에서, 요청 클라이언트(40_126)는 콜백 요청(40_708)을 컨텍스트 데몬(40_102)으로 전송할 수 있다. 예를 들어, 전술된 바와 같이, 콜백 요청(40_708)은 클라이언트 식별자(40_704) 및 콜백 술어를 포함할 수 있다. 콜백 요청(40_708)의 수신 시, 전술된 바와 같이, 컨텍스트 데몬(40_102)은 클라이언트 식별자(40_704) 및 술어를 술어 데이터베이스(40_116)에 저장할 수 있다.
일부 구현예들에서, 요청 클라이언트(40_126)가 콜백 요청(40_708)을 컨텍스트 데몬(40_102)으로 전송하는 경우, 요청 클라이언트는 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이에 통신 세션(40_709)을 확립한다. 일부 구현예들에서, 시스템(40_700)은 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이의 통신 세션이 요청 클라이언트(40_126)에 의해서만 시작될 수 있도록 구성될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 통신 세션을 요청 클라이언트(40_126)와 직접 확립할 수 없을 수도 있다. 따라서, 일부 구현예들에서, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)와만 통신(예컨대, 그에게 콜백 통지를 전송)할 수 있는 반면, 요청 클라이언트(40_126)에 의해 확립된 통신 세션(40_709)은 여전히 개방되어 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스 상에서 발생한 이벤트들에 관한 컨텍스트 정보를 수집할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 모니터 번들들(40_106) 및 보고 클라이언트(40_124)로부터 컨텍스트 정보를 수집할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 현재 컨텍스트를 컨텍스트 데이터베이스(40_712)에 저장할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 현재 컨텍스트를 컨텍스트 데이터베이스(40_712)에 저장하여 컨텍스트 데몬(40_102)에의 컨텍스트 정보의 복원을 가능하게 할 수 있다. 컨텍스트 데몬(40_102)이 종료되고 재시작되는 경우, 컨텍스트 데몬(40_102)은 컨텍스트 데몬(40_102)이 모니터 번들들(40_106)로부터 컨텍스트 업데이트를 대기하고 있는 동안에 컨텍스트 데이터베이스(40_712)로부터의 현재 컨텍스트(예컨대, 지금은 오래된 컨텍스트)를 복원할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 현재 컨텍스트가 요청 클라이언트(40_126)로부터 수신된 술어에 대응하는지 여부를 판정할 수 있다. 예를 들어, 현재 컨텍스트를 업데이트하는(예컨대, 컨텍스트 항목의 상태를 변화시키는) 새로운 컨텍스트 데이터가 획득되는 경우, 컨텍스트 데몬(40_102)은 콜백 레지스트리(40_114) 또는 술어 데이터베이스(40_116) 내의 컨텍스트 데몬(40_102)에 의해 저장된 콜백 술어들을 현재 컨텍스트(40_112) 내의 컨텍스트 항목들과 비교하여, 현재 컨텍스트가 술어들에 의해 특정된 조건들과 매칭하는지(그들에 대응하는지) 여부를 판정할 수 있다. 현재 컨텍스트가 요청 클라이언트(40_126)에 의해 등록된 술어와 매칭하는 경우, 컨텍스트 데몬(40_102)은 통지(40_701)를 요청 클라이언트(40_126)로 전송할 수 있다. 예를 들어, 통지(40_701)는, 전술된 바와 같이, 요청 클라이언트(40_126)에 의해 이전에 컨텍스트 데몬(40_102)으로 전송된 콜백 요청을 식별할 수 있다. 따라서, 컨텍스트 데몬(40_102)은 컨텍스트 데몬(40_102)이, 요청 클라이언트(40_126)가 관심이 있는 현재 컨텍스트를 검출하는 경우에 요청 클라이언트(40_126)에게 통지(예컨대, 콜백)할 수 있다.
도 40i 및 도 40j는 종료된 요청 클라이언트를 재시작하는 것을 나타낸 예시적인 시스템(40_700)의 블록도들이다. 예를 들어, 도 8a에서, 시스템(40_700)은, 요청 클라이언트(40_126)가 아이들이라고 판정했고, 요청 클라이언트(40_126)를 종료했다(예컨대, 요청 클라이언트(40_126)의 파선 외곽선이 종료를 나타냄). 도 8a에서, 컨텍스트 데몬(40_102)은 여전히 구동 중이다. 그러나, 요청 클라이언트(40_126)가 종료되었기 때문에, 통신 세션(40_709)도 또한 종료되었다.
도 40j는 시스템(40_700)을 사용하여 요청 클라이언트(40_126)를 재시작하기 위한 예시적인 메커니즘을 나타낸 블록도이다. 도 8a의 예를 계속 참조하면, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에 의해 등록된 콜백 술어와 매칭하는 컨텍스트 정보를 수신할 수 있다. 컨텍스트 정보가 콜백 술어와 매칭하는 것으로 판정한 것에 응답하여, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에게 통지하고자 시도할 수 있다. 요청 클라이언트(40_126)에게 통지하고자 시도하는 동안, 컨텍스트 데몬(40_102)은 컨텍스트 데몬(40_102)과 요청 클라이언트(40_126) 사이의 통신 세션(40_709)이 종료되었다고 판정할 수 있다. 통신 세션(40_709)이 종료되었다고 판정한 것에 응답하여, 컨텍스트 데몬(40_102)은 개시 데몬(40_702)이 요청 클라이언트(40_126)를 재시작할 것을 요청할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)를 재시작하라는 요청 시에 요청 클라이언트(40_126)로부터 수신된 클라이언트 식별자(40_704)를 개시 데몬(40_702)으로 전송할 수 있다.
일부 구현예들에서, 클라이언트 식별자(40_704)의 수신 시, 개시 데몬(40_702)은 요청 클라이언트(40_126)를 개시할 수 있다. 예를 들어, 개시 데몬 (40_702)은 컨텍스트 데몬 (40_102)이 컨텍스트 데몬 (40_102)에 의해 제공되는 클라이언트 식별자에 기초하여 요청 클라이언트(40_126)가 재시작될 것을 요청할 권한이 있는지 판정할 수있다. 예를 들어, 컨텍스트 데몬(40_102)은, 요청 클라이언트(40_126)가 이전에 컨텍스트 데몬(40_102)으로부터 콜백을 요청하지 않았고 클라이언트 식별자(40_704)를 컨텍스트 데몬(40_102)에 제공하지 않은 경우에 클라이언트 식별자(40_704)(예컨대, 토큰)를 갖지 않을 것이다.
일부 구현예들에서, 재시작 시, 요청 클라이언트(40_126)는 콜백 요청(40_708)을 컨텍스트 데몬(40_102)으로 전송할 수 있다. 예를 들어, 요청 클라이언트(40_126)는 콜백 요청(40_708)을 컨텍스트 데몬(40_102)으로 전송함으로써 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이에 새로운 통신 세션(40_802)을 확립할 수 있다. 일단 통신 세션(40_802)이 확립되면, 컨텍스트 데몬(40_102)은 통지(40_710)를 요청 클라이언트(40_126)로 전송하여 요청 클라이언트(40_126)에 의해 제공된 콜백 술어가 현재 컨텍스트에 의해 만족되었음을 요청 클라이언트(40_126)에게 통지할 수 있다.
도 40k 및 도 40l는 종료된 컨텍스트 데몬을 재시작하는 것을 나타낸 예시적인 시스템(40_700)의 블록도들이다. 예를 들어, 도 9a에서, 시스템(40_700)은 컨텍스트 데몬(40_102)이 아이들이라고 판정했고, 컨텍스트 데몬(40_102)을 종료했다(예컨대, 컨텍스트 데몬(40_102)의 파선 외곽선이 종료를 나타냄). 도 9a에서, 요청 클라이언트(40_126)는 여전히 구동 중이다. 그러나, 컨텍스트 데몬(40_102)이 종료되었기 때문에, 통신 세션(40_709)도 또한 종료되었다.
도 40l는 시스템(40_700)을 사용하여 컨텍스트 데몬(40_102)을 재시작하기 위한 예시적인 메커니즘을 나타낸 블록도이다. 도 9a의 예를 계속 참조하면, 시스템(40_700)은 컨텍스트 데몬(40_102)으로 지향되는 요청 클라이언트(40_126)로부터의 메시지를 수신한 것에 응답하여 컨텍스트 데몬(40_102)을 재시작할 수 있다.
일부 구현예들에서, 요청 클라이언트(40_126)는 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이의 통신 세션(40_709)이 종료했음을 검출할 수 있다. 통신 세션(40_709)이 종료했음을 검출한 것에 응답하여, 요청 클라이언트(40_126)는 메시지를 종료된 컨텍스트 데몬(40_102)으로 전송함으로써 통신 세션을 재확립할 수 있다. 일부 구현예들에서, 요청 클라이언트는 메시징 시스템(40_902)을 사용하여 메시지를 컨텍스트 데몬(40_102)으로 전송할 수 있다. 시스템(40_700)의 메시징 시스템(40_902)은 컨텍스트 데몬(40_102)이 구동 중이 아니라고 판정할 수 있고, 메시지를 개시 데몬(40_702)으로 전송하여 개시 데몬(40_702)이 컨텍스트 데몬(40_102)을 재시작하게 할 수 있다. 메시지를 수신한 것에 응답하여, 개시 데몬(40_702)은 컨텍스트 데몬(40_102)을 재시작할 수 있다. 일단 컨텍스트 데몬(40_102)이 구동 중이면, 메시징 시스템(40_902)은 메시지를 요청 클라이언트(40_126)로부터 컨텍스트 데몬(40_102)으로 전송하여, 이에 의해, 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이에 통신 채널을 재확립할 수 있다.
일부 구현예들에서, 재시작 시, 컨텍스트 데몬(40_102)은 그의 콜백 레지스트리(40_114) 및 현재 컨텍스트(40_112)를 복원할 수 있다. 예를 들어, 콜백 레지스트리(40_114)는 술어 데이터베이스(40_116)로부터 복원될 수 있다. 현재 컨텍스트(40_112)는 컨텍스트 데이터베이스(40_712)로부터 복원될 수 있다. 재시작 시, 컨텍스트 데몬(40_102)은 컨텍스트 정보를 수집하는 데 필요한 모니터 번들들(40_106)을 로딩하여 술어 데이터베이스(40_116)로부터 복원된 콜백 요청들을 서비스할 수 있다. 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 로딩된 모니터 번들들(40_104)에 의해 보고된 컨텍스트 정보로 현재 컨텍스트(40_112)를 업데이트할 수 있으며, 현재 컨텍스트(40_112) 내의 컨텍스트 항목들이 요청 클라이언트(40_126)에 의해 등록된 술어와 매칭하는 경우에 요청 클라이언트(40_126)에게 통지할 수 있다.
도 40m 및 도 40n는 종료된 컨텍스트 데몬 및 요청 클라이언트를 재시작하는 것을 나타낸 예시적인 시스템(40_700)의 블록도들이다. 예를 들어, 도 40m에서, 시스템(40_700)은 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126) 양쪽 모두가 아이들이라고 판정했고, 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126)를 종료했다(예컨대, 파선 외곽선이 종료를 나타냄). 도 40m에서, 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126) 양쪽 모두가 종료되기 때문에, 통신 세션(40_709)이 종료된다.
도 40n는 시스템(40_700)을 사용하여 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126)를 재시작하기 위한 예시적인 메커니즘을 나타낸 블록도이다. 도 40m의 예를 계속 참조하면, 시스템(40_700)은 종료된 컨텍스트 데몬(40_102)으로 지향되는 개재 클라이언트(40_1002)로부터의 메시지를 수신한 것에 응답하여 컨텍스트 데몬(40_102)을 재시작할 수 있다. 예를 들어, 도 9b의 요청 클라이언트(40_126)와 유사하게, 개재 클라이언트(40_1002)는 메시지를 이제 종료된 컨텍스트 데몬(40_102)으로 전송할 수 있다. 메시징 시스템(40_902)은 메시지를 수신할 수 있으며, 컨텍스트 데몬(40_102)이 구동 중이 아니라고 판정할 수 있다. 컨텍스트 데몬(40_102)이 구동 중이 아니라고 판정한 것에 응답하여, 메시징 시스템(40_902)은 메시지를 개시 데몬(40_702)으로 전송하여 개시 데몬(40_702)이 컨텍스트 데몬(40_102)을 재시작하게 할 수 있다.
일부 구현예들에서, 재시작 시, 컨텍스트 데몬(40_102)은 술어 데이터베이스(40_116)로부터 그의 콜백 레지스트리(40_114)를 복원할 수 있다. 재시작 시, 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 컨텍스트 데이터베이스(40_712)로부터 그의 현재 컨텍스트(40_112)를 복원할 수 있고, 업데이트된 컨텍스트 정보를 수집하기 시작할 수 있다. 컨텍스트 데몬(40_102)이, 등록된 술어가 현재 컨텍스트 정보와 매칭한다고 판정하는 경우, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에게 통지하고자 시도할 수 있다. 컨텍스트 데몬(40_102)이, 통신 세션(40_709)이 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이에 존재하지 않는다고 판정하는 경우, 도 8b를 참조하여 전술된 바와 같이, 컨텍스트 데몬(40_102)은 개시 데몬(40_702)이 요청 클라이언트(40_126)를 재시작할 것을 요청하여 통신 세션이 재확립될 수 있고 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)를 콜백할 수 있게 할 수 있다.
도 40o은 개시 데몬(40_702)에 의해 수신된 디바이스 상태 정보에 기초하여 요청 클라이언트(40_126) 및/또는 컨텍스트 데몬(40_102)을 재시작하도록 구성된 예시적인 시스템(40_1100)의 블록도이다. 예를 들어, 시스템(40_1100)은, 전술된 바와 같이, 시스템(40_700)에 대응할 수 있고 시스템(40_700)과 유사한 기능들을 수행할 수 있다.
일부 구현예들에서, 개시 데몬(40_702)은 디바이스 상태(40_1104)를 수신하도록 구성될 수 있다. 예를 들어, 디바이스 상태(40_1104)는 컴퓨팅 디바이스의 다양한 하드웨어 및/또는 소프트웨어 컴포넌트들에 의해 생성된 저레벨의 구체적인 상태 데이터일 수 있다. 예를 들어, 개시 데몬(40_702)은 컴퓨팅 디바이스의 위치 서비스 컴포넌트(예컨대, GPS 수신기, Wi-Fi 또는 셀룰러 데이터 컴포넌트 등)에 의해 생성된 위치 데이터를 포함하는 디바이스 상태(40_1104)를 수신할 수 있다. 일부 구현예들에서, 디바이스 상태(40_1104)는 위치 변화를 나타낼 수 있지만, 고레벨 위치 정보(예컨대, 인간 판독가능 라벨들)를 제공하지 않을 수도 있다.
예를 들어, 요청 클라이언트(40_126)는 콜백 요청(40_708)을, 위치 기반 술어를 갖는 컨텍스트 데몬(40_102)으로 전송할 수 있다. 술어는 요청 클라이언트(40_126)가 컴퓨팅 디바이스의 현재 위치(예컨대, 현재 컨텍스트)가 사용자의 집(예컨대, 위치 == 집)이라고 통지되어야 함을 특정할 수 있다. 디바이스 위치가 사용자의 집인지 판정하기 위해, 컨텍스트 데몬(40_102) 및/또는 모니터 번들(40_106)은 위치 API(40_132), 및 "집"이 위치되는 곳을 정의하는(예컨대, "집" 라벨과 연관되는 지리학적 위치를 정의하는) 사용자의 디바이스 상에서 구동되는 연락처 애플리케이션으로부터 정보를 수집할 수 있다. 위치 API(40_132)로부터의 위치 정보를 연락처 애플리케이션에서의 "집"의 정의와 비교함으로써, 컨텍스트 데몬(40_102)은 컨텍스트 항목 "위치"이 언제 "집"과 동일한지를 판정할 수 있다. 이러한 예로 입증되는 바와 같이, 요청 클라이언트(40_126)에 의해 정의된 위치 술어(예컨대, "집")가 만족되는지 판정하는 것은 라벨(예컨대, "집")을 지리적 위치와 상관시키는 사용자 데이터와 현재의 지리적 위치 데이터(예컨대, 격자식 좌표) 양쪽 모두를 조합한 것에 의존한다. 따라서, 추상적인 위치 컨텍스트 "집"은 컴퓨팅 디바이스의 위치 서비스 및 연락처 애플리케이션에 의해 생성된 구체적인 상태 데이터를 분석함으로써 결정될 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)로부터 콜백 요청(40_708)을 수신하는 경우, 컨텍스트 데몬(40_102)은 디바이스 상태 요청(40_1102)을 개시 데몬(40_702)으로 전송하여 컴퓨팅 디바이스의 특정 컴포넌트들의 상태 변화들에 대한 관심을 등록할 수 있다. 디바이스 상태(40_1104)가 개시 데몬(40_702)에 의해 수신되는 경우, 개시 데몬(40_702)은 특정된 컴포넌트들에 대해 상태 변화가 있었다고 판정할 수 있고, 컨텍스트 데몬(40_102) 및/또는 요청 클라이언트(40_126)에게 통지할 수 있다.
일부 구현예들에서, 디바이스 상태 요청(40_1102)은 특정된 상태 변화들이 발생할 때 개시 데몬(40_702)이 컨텍스트 데몬(40_102)에게 통지해야 함을 특정할 수 있다. 예를 들어, 요청 클라이언트(40_126)가 콜백 요청을, 위치 기반 콜백 술어를 특정하는 컨텍스트 데몬(40_102)으로 전송하는 경우, 컨텍스트 데몬(40_102)은 위치 컴포넌트 상태 변화가 개시 데몬(40_702)에 의해 검출될 때 개시 데몬(40_702)이 컨텍스트 데몬(40_102)에게 통지할 것을 요청하는 디바이스 상태 요청(40_1102)을 개시 데몬(40_702)으로 전송할 수 있다.
일부 구현예들에서, 디바이스 상태 요청(40_1102)은 특정된 상태 변화들이 발생할 때 개시 데몬(40_702)이 요청 클라이언트(40_126)에게 통지해야 함을 특정할 수 있다. 예를 들어, 요청 클라이언트(40_126)가 콜백 요청을, 위치 기반 콜백 술어를 특정하는 컨텍스트 데몬(40_102)으로 전송하는 경우, 컨텍스트 데몬(40_102)은 위치 컴포넌트 상태 변화가 개시 데몬(40_702)에 의해 검출될 때 개시 데몬(40_702)이 요청 클라이언트(40_126)에게 통지할 것을 요청하는 디바이스 상태 요청(40_1102)을 개시 데몬(40_702)으로 전송할 수 있다. 일부 구현예들에서, 디바이스 상태 요청(40_1102)은 개시 데몬(40_702)이 어느 요청 클라이언트(40_126)에게 통지할지 판정할 수 있도록 요청 클라이언트(40_126)에 대응하는 클라이언트 식별자(40_704)를 포함할 수 있다.
도 40p 및 도 40q는 개시 데몬을 사용하여 컨텍스트 데몬을 재시작하는 것을 나타낸 예시적인 시스템(40_1100)의 블록도들이다. 예를 들어, 도 40p에서, 시스템(40_1100)은 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126) 양쪽 모두가 아이들이라고 판정했고 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126)를 종료했다(예컨대, 파선 외곽선이 종료를 나타냄). 도 40p에서, 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126) 양쪽 모두가 종료되기 때문에, 통신 세션(40_709)이 또한 종료된다.
도 40q는 시스템(40_1100)의 개시 데몬(40_702)을 사용하여 컨텍스트 데몬(40_102)을 재시작하기 위한 예시적인 메커니즘을 나타낸 블록도이다. 도 40o을 참조하여 전술된 바와 같이, 컨텍스트 데몬(40_102)은 컨텍스트 데몬(40_102)으로부터의 통지(40_710)를 요청 클라이언트(40_126)로 전송하기 위한 컨텍스트 술어를 특정하는 콜백 요청을 요청 클라이언트(40_126)로부터 수신할 수 있다. 술어를 수신한 것에 응답하여, 컨텍스트 데몬(40_102)은 디바이스 상태 요청(40_1102)을 개시 데몬(40_702)으로 전송하여 술어와 연관된 디바이스 상태 변화들에 대한 관심을 등록할 수 있다. 예를 들어, 요청 클라이언트(40_126)가 위치 기반 콜백 술어를 특정하는 경우, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스의 위치가 변화할 때 컨텍스트 데몬(40_102)에게 통지할 것을 개시 데몬(40_702)에게 요청할 수 있다. 개시 데몬(40_702)이 위치 변화를 나타내는 디바이스 상태(40_1104)를 수신하는 경우, 개시 데몬(40_702)은 컨텍스트 데몬(40_102)에게 통지하고자 시도할 수 있다. 도 40p를 계속 참조하면, 컨텍스트 데몬(40_102)이 컴퓨팅 디바이스 상에서 구동 중이 아니므로, 개시 데몬(40_702)은 컨텍스트 데몬(40_102)이 구동 중이 아니라고 판정할 수 있고 컨텍스트 데몬(40_102)을 개시(예컨대, 재시작, 시작, 호출, 실행 등)할 수 있다. 일단 컨텍스트 데몬(40_102)이 재시작되면, 도 8b를 참조하여 전술된 바와 같이, 컨텍스트 데몬(40_102)은 개시 데몬(40_702)이 요청 클라이언트(40_126)를 재시작할 것을 요청할 수 있다.
도 40r 및 도 40s는 개시 데몬을 사용하여 요청 클라이언트(40_126)를 재시작하는 것을 나타낸 예시적인 시스템(40_1100)의 블록도들이다. 예를 들어, 도 40r에서, 시스템(40_1100)은 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126) 양쪽 모두가 아이들이라고 판정했고, 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126)를 종료했다(예컨대, 파선 외곽선이 종료를 나타냄). 도 40r에서, 컨텍스트 데몬(40_102) 및 요청 클라이언트(40_126) 양쪽 모두가 종료되기 때문에, 통신 세션(40_709)이 또한 종료된다.
도 40s는 시스템(40_1100)의 개시 데몬(40_702)을 사용하여 요청 클라이언트(40_126)를 재시작하기 위한 예시적인 메커니즘을 나타낸 블록도이다. 도 40o을 참조하여 전술된 바와 같이, 컨텍스트 데몬(40_102)은 컨텍스트 데몬(40_102)으로부터의 콜백 통지(40_710)를 요청 클라이언트(40_126)로 전송하기 위한 컨텍스트 술어를 특정하는 콜백 요청을 요청 클라이언트(40_126)로부터 수신할 수 있다. 술어를 수신한 것에 응답하여, 컨텍스트 데몬(40_102)은 디바이스 상태 요청(40_1102)을 개시 데몬(40_702)으로 전송하여, 요청 클라이언트(40_126)를 대신하여 술어와 연관된 디바이스 상태 변화들에 대한 관심을 등록할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 술어와 연관된 디바이스 상태 변화들에 대한 관심을 등록할 때 클라이언트 식별자(40_704)를 개시 데몬(40_702)에게 제공할 수 있다. 예를 들어, 요청 클라이언트(40_126)가 위치 기반 콜백 술어를 특정하는 경우, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스의 위치가 변화할 때 요청 클라이언트(40_126)에게 통지할 것을 개시 데몬(40_702)에게 요청할 수 있다. 개시 데몬(40_702)이 위치 변화를 나타내는 디바이스 상태(40_1104)를 수신하는 경우, 개시 데몬(40_702)은 요청 클라이언트(40_126)(예컨대, 클라이언트 식별자(40_704)에 의해 식별됨)에게 통지하고자 시도할 수 있다. 도 40r를 계속 참조하면, 요청 클라이언트(40_126)가 컴퓨팅 디바이스 상에서 구동 중이 아니므로, 개시 데몬(40_702)은 요청 클라이언트(40_126)가 구동 중이 아니라고 판정할 수 있고, 요청 클라이언트(40_126)를 개시(예컨대, 재시작, 시작, 호출, 실행 등)할 수 있다. 일단 요청 클라이언트(40_126)이 재시작되면, 도 9b를 참조하여 전술된 바와 같이, 요청 클라이언트(40_126)는 메시지를 컨텍스트 데몬(40_102)으로 전송함으로써 개시 데몬(40_702)이 컨텍스트 데몬(40_102)을 재시작하게 할 수 있다.
향후 이벤트들의 예측
일부 구현예들에서, 컨텍스트 데몬(40_102)은 이벤트 스트림 정보에 기초하여 향후 이벤트들을 예측할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 컨텍스트 정보(예컨대, 이벤트 스트림들, 이벤트 스트림 객체들 등) 이력을 분석하여 사용자 거동 패턴들 이력을 판정할 수 있다. 컨텍스트 데몬(40_102)은 이들 과거 거동 패턴들에 기초하여 향후 사용자 거동을 예측할 수 있다. 예를 들어, 예측가능한 사용자 거동은 취침 패턴들, 작업 패턴들, 운동 패턴들, 식사 패턴들, 및 다른 반복적인 사용자 거동들을 포함할 수 있다. 컨텍스트 데몬(40_102)은 이들 사용자 활동들 동안에 사용자가 컴퓨팅 디바이스와 어떻게 상호작용하는지 반영하는 이벤트 스트림들 내의 단서들에 기초하여 이들 사용자 거동들이 언제 발생하는지 판정할 수 있다.
설명의 용이함을 위해, 하기의 설명은 디바이스 잠김 상태 이벤트 스트림 데이터 이력에 기초하여 예시적인 취침 예측 구현예를 기술할 것이다. 그러나, 취침 예측에 이용되는 메커니즘은 다른 이벤트 스트림 데이터를 분석함으로써 마찬가지로 다른 사용자 거동들을 예측하는 데 이용될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 위치 데이터를 이용하여 사용자 작업 패턴들을 추론할 수 있다. 컨텍스트 데몬(40_102)은 가속도계 데이터를 이용하여 사용자 운동 패턴들을 추론할 수 있다. 컨텍스트 데몬(40_102)은 애플리케이션 데이터(예컨대, 소셜 미디어 소프트웨어 애플리케이션 상에서 식당을 체크인하는 것)를 이용하여 사용자 식사 패턴들을 추론할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 디바이스 잠금 상태 이벤트 스트림 데이터를 이용하여 사용자 취침 패턴들을 판정하고/하거나 예측할 수 있다. 예를 들어, 컴퓨팅 디바이스(예컨대, 핸드헬드 디바이스, 스마트폰 등)가 장기간(예컨대, 5시간 이상) 동안 잠긴 채로 유지되는 경우, 컨텍스트 데몬(40_102)은 사용자가 취침 중임을 추론할 수 있다. 일부 구현예들에서, 다른 이벤트 스트림 정보(예컨대, 가속도계 데이터, 애플리케이션 사용 데이터 등)가 취침 패턴들 및/또는 취침 예측을 확인하는 데 이용될 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 사용자가 전날 취침으로부터 기상한 이후의 그리고 다음 예측된 취침 기간 이전의 소정 시간에 현재 날짜에 대한 취침 예측을 수행할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 사용자가 현재 취침 기간으로부터 기상했다고 검출할 시에 다음 취침 기간을 예측하는 계산을 수행할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 "잠김" 컨텍스트 항목에 대한 현재 값이 거짓(예컨대, 사용자가 디바이스를 잠금해제했음)이라고 판정함으로써 사용자가 기상해 있고 현재 시간이 예측된 취침 기간이 종료된 이후임을 검출할 수 있다.
향후 이벤트들의 슬롯별 예측
일부 구현예들에서, 컨텍스트 데몬(40_102)은 슬롯별 평균화를 수행하여 향후 이벤트들을 예측할 수 있다. 예를 들어, 사용자 취침 패턴들을 예측하기 위해, 컨텍스트 데몬(40_102)은 전술된 잠김 상태 이벤트 스트림을 분석할 수 있다. 컨텍스트 데몬(40_102)은 이전 40_28일에 걸쳐서 잠김 상태 이벤트 스트림을 연속적인 24시간 기간으로 나눔으로써 잠김 상태 이벤트 스트림을 분석할 수 있다. 컨텍스트 데몬(40_102)은 24시간 기간 각각을 96개의 15분 단위 슬롯(15 minute-minute slot)들로 나눌 수 있다. 컨텍스트 데몬(40_102)은 24시간 기간 각각에서의 15분 단위 블록 각각에 대한 잠김 상태 이벤트 스트림 상태를 판정할 수 있다. 예를 들어, 컴퓨팅 디바이스가 전체 15분 단위 슬롯에 대해 잠긴 채로 유지되는 경우, 그 슬롯에 대한 잠김 상태는 참(예컨대, 1)일 수 있다. 컴퓨팅 디바이스가 15분 단위 슬롯 동안에 잠금해제된 경우, 그 슬롯에 대한 잠김 상태는 거짓(예컨대, 0)일 수 있다. 24시간 기간 각각 내의 15분 단위 슬롯들에 대한 잠김 상태 데이터는 이전 40_28일 각각을 표현하는 28개의 데이터 벡터들을 생성하도록 조합될 수 있다. 예를 들어, 각각의 벡터(예컨대, 96의 길이를 가짐)는 1일 이내에 15분 단위 슬롯들 각각에 대응하는 96개의 잠김 상태 값들을 포함할 수 있다. 이어서, 컨텍스트 데몬(40_102)은 40_28일 기간에 걸쳐서 각각의 15분 단위 슬롯을 평균화하여 사용자의 취침 패턴 이력을 판정할 수 있다.
도 40t는 향후 이벤트들을 예측하기 위한 슬롯별 평균화의 일례를 나타낸 그래프(40_1400)이다. 예를 들어, 그래프(40_1400)는, 디바이스 잠김 상태를 이용하여 취침 패턴을 판정하고 향후 취침 기간들을 예측하는 것을 나타낸다. 예를 들어, 각각의 수평선은 24시간 기간에 대한 잠김 상태 데이터 벡터를 표현한다. 24시간 기간은 t-n 내지 t+n의 범위일 수 있는데, 여기서 't'는 사용자의 취침 사이클의 거의(예컨대, 추정된, 전형적인, 계산된 등) 중간에 대응하는 소정 시간이고, 'n'은 40_12일 수 있다. 예를 들어, 전형적인 사람이 10pm부터 6am까지 취침하는 경우, 't'는 오전 2시일 수 있다. 그래프(40_1400)에서, 'C'는 현재 날짜를 표현한다. 따라서, C-1은 어제이고, C-2는 2일 전이고, C-7은 1주일 전이고, C-28은 4주 전이다. 각각의 날은 96개의 대응하는 15분 단위 슬롯들을 갖는다. 예를 들어, 그래프(40_1400)는 3:30 내지 3:45am, 5:00 내지 5:15am, 및 6:15 내지 6:30am에 대응하는 15분 단위 슬롯들을 묘사한다. 3개의 15분 단위 슬롯들만이 그래프(40_1400) 상에 도시되어 그래프(40_1400) 상의 어수선함(clutter)을 감소시키지만, 각각의 벡터는 96개의 15분 단위 슬롯들을 갖고, 그래프(40_1400) 상의 3개의 15분 단위 슬롯들을 참조하여 기술된 동작들은 각각의 24시간 기간 내의 96개 슬롯들 각각에 대해 수행될 것이다.
그래프(40_1400) 상의 벡터 C-1을 참조하면, 3:30 슬롯 및 5:00 슬롯 내의 1(예컨대, 1, 참)의 값은 컴퓨팅 디바이스가 전체의 대응하는 15분 단위 슬롯 동안에 잠긴 채로 유지됨을 나타낸다. 6:15 슬롯 동안의 0(예컨대, 0, 거짓)의 값은 컴퓨팅 디바이스가 15분 단위 기간 동안의 언젠가에 잠금해제되었음을 나타낸다. 예를 들어, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스를 6:15 슬롯에서 잠금해제하기 위해 사용자가 기상했어야 했다는 것을 추론할 수 있다. 컨텍스트 데몬(40_102)은 디바이스가 임계 기간(예컨대, 5시간) 동안 잠긴 채로 유지될 때 사용자가 자고 있었다고 추론할 수 있고, 이는 이하 더 설명되는 바와 같다.
사용자가 컴퓨팅 디바이스를 현재 날짜에서 각각의 15분 단위 슬롯 동안에 잠겨 있게 (그리고 그에 따라 자고 있는 채로 있게) 유지할 확률을 판정하기 위해, 컨텍스트 데몬(40_102)은 이전 28일에 걸쳐서 각각의 15분 단위 슬롯의 값들을 평균화하여 현재 24시간 기간 내의 각각의 15분 단위 슬롯에 대한 값들을 예측할 수 있다. 컨텍스트 데몬(40_102)은 현재 24시간 기간에 대해 계산된 평균 15분 단위 슬롯 값들을 이용하여, 디바이스가 잠긴 채로 유지할 가능성이 있는 취침 임계치(예컨대, 5시간)를 초과하는 현재 24시간 기간 내의 소정 기간을 식별할 수 있다. 예를 들어, 15분 단위 슬롯에 대한 평균 값이 소정 임계 값(예컨대,.5, 40_50% 등)을 초과하는 경우, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스가 그 15분 단위 슬롯 내에서 잠긴 채로 유지될 것이라고 판정할 수 있다. 컨텍스트 데몬(40_102)은, 조합 시, 취침 임계 기간을 초과하는 임계 값보다 더 큰 값들을 갖는 연속적인(또는 대체로 연속적인) 일련의 15분 단위 슬롯들을 결정할 수 있다. 일단 일련의 15분 단위 슬롯들이 결정되면, 컨텍스트 데몬(40_102)은 일련의 15분 단위 슬롯들에 의해 커버되는 기간을 예측된 취침 기간으로서 식별할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 잠김 상태 데이터 벡터들에 걸쳐서 가중 평균화를 수행할 수 있다. 예를 들어, 각각의 벡터는 더 오래된 잠김 상태 데이터가 더 새로운 잠김 상태 데이터보다 평균에 대해 영향을 덜 미치도록 가중될 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 일련의 최근 날들에 걸쳐서(예컨대, 마지막 7일 각각에 걸쳐서) 단기 평균화를 그리고/또는 일련의 주일들(예컨대, 7일 전, 14일 전, 21일 전, 28일 전)에 걸쳐서 장기 평균화를 수행할 수 있다. 예를 들어, 단기 평균화는 일간 패턴들을 예측하는 데 더 좋을 수 있는 반면, 장기 평균화는 사용자가 그 주의 특정 날에 무엇을 할 것인지 예측하는 데 더 좋을 수 있다. 예를 들어, 오늘이 토요일이면, 특히 사용자가 월요일에서 금요일까지 일하는 경우, 어제(예컨대, 금요일) 사용자의 활동보다 저번 토요일 사용자의 활동이 오늘 사용자 거동에 대한 더 양호한 예측자일 수 있다.
단기 평균화
일부 구현예들에서, 하기의 단기 가중 평균화 알고리즘은 디바이스가 15분 단위 슬롯 내에 잠긴 채로 유지될 확률(PS)을 판정하도록 컨텍스트 데몬(40_102)에 의해 이용될 수 있다:
Figure pat00044
, 여기서 V1은 C-1에 대응하고 V2는 C-2에 대응하고 등등하고 V7은 C-7에 대응하며, λ는 0 내지 1의 값을 갖는, 실험적으로 결정된 가중치이다. 예를 들어, 단기 가중화 알고리즘은 이전 7일에 걸쳐서 각각의 15분 단위의 가중 평균을 계산하는 데 이용될 수 있다.
장기 평균화
일부 구현예들에서, 하기의 장기 가중 평균화 알고리즘은 디바이스가 15분 단위 슬롯 내에 잠긴 채로 유지될 확률(PL)을 판정하도록 컨텍스트 데몬(40_102)에 의해 이용될 수 있다:
Figure pat00045
, 여기서 V7은 C-7에 대응하고 V14는 C-14에 대응하고 V21은 C-21에 대응하고 V28은 C-28에 대응하며, 'λ'는 0 내지 1의 값을 갖는, 실험적으로 결정된 가중치이다. 예를 들어, 장기 가중화 알고리즘은 마지막 4주에 걸쳐서 그 주의 동일한 날에 대해 각각의 15분 단위의 가중 평균을 계산하는 데 이용될 수 있다.
일부 구현예들에서, 단기 가중 평균화 알고리즘 및 장기 가중 평균화 알고리즘은 조합되어, 15분 단위 슬롯이 하기와 같이 15분 단위 슬롯 내에 잠긴 채로 유지될 조합된(예컨대, 합성, 전반적 등) 확률(P)을 생성할 수 있다:
Figure pat00046
, 여기서 'r'은 장기 가중 평균이 확률 계산에 미치는 영향을 조정하는 데 사용될 수 있는, 실험적으로 결정된 수(예컨대, 0.5)이다.
비례적인 슬롯 값들
도 15는 비례적인 슬롯 값들을 계산하는 것을 나타낸 예시적인 그래프들(15 minute00, 15 minute50)을 도시한다. 예를 들어, 상기의 설명에서와 같이, 24시간 기간 C-n 내에서 각각의 15분 단위 슬롯에 대한 참(1) 및 거짓(0) 값들을 할당하는 것보다는, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스가 얼마나 많은 15분 단위 슬롯 각각 동안에 잠겨 있거나 잠금해제되었는지 판정할 수 있고, 디바이스가 잠겨 있던 동안의 슬롯 내의 비례하는 시간을 표현하는 비례적인 값을 슬롯에 할당할 수 있다.
그래프(15 minute00)를 참조하면, 각각의 15분 단위 타임슬롯의 음영 영역은 디바이스가 잠겨 있던 동안의 타임슬롯 내의 시간을 표현할 수 있다. 예를 들어, 디바이스는 3:30 내지 3:45am 및 5:00 내지 5:15am 타임슬롯들 양쪽 모두의 전체 동안에 잠겨 있다. 따라서, 3:30 및 5:00 타임슬롯들에는 1의 값이 할당될 수 있다. 그러나, 컴퓨팅 디바이스는 6:15 내지 6:30am 타임슬롯의 일부 동안에만 잠겨 있었다. 컴퓨팅 디바이스가 6:15 타임슬롯 중 처음 40_10분 동안 잠겨 있던 경우, 그래프(15 minute50)로 나타낸 바와 같이, 6:15 타임슬롯에는 디바이스가 잠겨 있던 동안의 15분 단위 슬롯의 비례하는 양을 표현하는 값 40_10/15 또는 0.67이 할당될 수 있다. 컴퓨팅 디바이스가 반복적으로 잠겼다가 잠금해제된 경우(예컨대, 5분 동안 잠겼고, 2분 동안 잠금해제되었고, 1분 동안 잠겼고, 5분 동안 잠금해제되었고, 등등), 컴퓨팅 디바이스는 잠긴 기간들을 합산할 수 있고, 잠금해제 기간들을 합산할 수 있고, 컴퓨팅 디바이스가 잠겼던 동안의 15분 단위 슬롯의 비율을 계산할 수 있다. 일부 구현예들에서, 비례 값은 24시간 기간 내의 각각의 15분 단위 타임슬롯에 대해 결정될 수 있다(예컨대, 데이터 벡터). 일부 구현예들에서, 각각의 15분 단위 타임슬롯에 대한 비례 값은 전술된 단기 및/또는 장기 확률들을 계산할 때 사용될 수 있다.
취침 곡선의 생성
도 40v는 향후 컨텍스트를 예측하기 위한 예시적인 방법을 나타낸 그래프(40_1600)이다. 예를 들어, 그래프(40_16)로 나타낸 방법은 컴퓨팅 디바이스의 사용자에 대한 향후 취침 기간을 예측하는 데 이용될 수 있다. 예를 들어, 그래프(40_1600)에서 각각의 열(예컨대, 열(40_1602), 열(40_1606))은, 전술된 바와 같이, 15분 단위 타임슬롯을 표현할 수 있다. 각각의 15분 단위 타임슬롯의 값은, 전술된 바와 같이, 열의 높이에 의해 표현될 수 있고 타임슬롯에 대한 조합된 가중 평균 확률(P)에 대응할 수 있다. 예를 들어, 확률(P)은 0(예컨대, 0, 0%) 내지 1(예컨대, 1, 40_100%)의 범위일 수 있다. 확률은, 예를 들어, 전술된 바와 같이, 컴퓨팅 디바이스가 15분 단위 슬롯 동안에 잠긴 채로 유지될 확률을 표현할 수 있다. 확률은 이진(예컨대, 0, 1) 15분 단위 타임슬롯 값들에 기초하여 계산될 수 있다. 확률은 비례적인 15분 단위 타임슬롯 값들에 기초하여 계산될 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 확률 그래프(40_1600)를 컴퓨팅 디바이스의 사용자의 취침 사이클을 표현하는 확률 곡선으로 변환할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 어느 15분 단위 슬롯들이 사용자의 취침 기간에 대응하는지 판정하기 위해 취침 확률 임계 값(40_1606)을 결정할 수 있다. 일부 구현예들에서, 취침 확률 임계 값(40_1606)은 동적으로 결정될 수 있다. 예를 들어, 최소 취침 기간(예컨대, 5시간, 7시간 등)이 주어지면, 컨텍스트 데몬(40_102)은 적어도 최소 취침 기간만큼 긴 연속적 15분 단위 슬롯들의 블록을 생성하고 취침 확률 임계치(40_1606)를 초과하는 (예컨대, 확률, 평균) 값들을 갖는 15분 단위 슬롯들을 포함하는 취침 확률 임계치(40_1606)에 대한 값(예컨대, 0.65, 40_50% 등)을 결정할 수 있다. 다르게 말하면, 컨텍스트 데몬(40_102)은, 일련의 15분 단위 슬롯들이, 조합 시, 최소 취침 기간을 충족시키거나 초과하고 취침 확률 임계치 초과의 값들을 가질 때까지 취침 확률 임계치(40_1606)를 상하로 조절할 수 있다.
일부 구현예들에서, 일단 취침 확률 임계치(40_1606)가 결정되면, 컨텍스트 데몬(40_102)은 연속적인 15분 단위 슬롯들에 기초하여 사용자의 취침 기간(40_1608)을 판정할 수 있다. 예를 들어, 취침 기간(40_1608)은 연속적인 15분 단위 슬롯들에 의해 커버되는 기간에 대응할 수 있다. 도 16을 참조하면, 취침 기간은 11pm에서 시작하고 7am에서 끝나는 기간에 대응할 수 있다.
도 40w는 슬롯별 확률들을 확률 곡선으로 변환하기 위한 예시적인 방법을 나타낸 그래프(40_1650)이다. 예를 들어, 사용자의 취침 사이클의 지속적인 예측을 가능하게 하기 위해, 사용자가 잠들게 됨에 따라 단조롭게 증가하고(예컨대, 디바이스가 잠긴 채로 유지될 확률을 증가시킴) 사용자가 기상함에 따라 단조롭게 감소하는(예컨대, 디바이스가 잠긴 채로 유지될 확률을 감소시킴) 확률 곡선(예컨대, 종형 곡선에 유사함)을 생성하는 것이 유용할 수 있다.
일부 구현예들에서, 확률 곡선(40_1652)을 생성하기 위해, 컨텍스트 데몬(40_102)은 상기에서 결정된 취침 확률 임계 값을 이용하여, 각각의 15분 단위 타임슬롯에 대해 계산된 확률들(예컨대, 평균들)을 이진(예컨대, 1 또는 0) 값들로 변환할 수 있다. 예를 들어, (예컨대, 취침 임계 값(40_1606) 초과의) 취침 기간 내의 15분 단위 타임슬롯들에는 1의 값이 할당될 수 있고, 취침 기간 외의 15분 단위 타임슬롯들에는 0의 값이 할당될 수 있다. 일단 이진 값들이 각각의 15분 단위 타임슬롯에 할당되면, 컨텍스트 데몬(40_102)은 곡선(예컨대, 확률 곡선(40_1652))을 이진 값들로 피팅할 수 있다. 일단 생성되면, 컨텍스트 데몬(40_102)은 확률 곡선(40_1652)을 사용하여, 사용자가 하루 중 특정 시간에 그리고/또는 하루 중 특정 기간 동안에 자고 있을 확률을 추정할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 확률 곡선(40_1652)을 이용하여 사용자가 향후 자고 있을 가능성이 있는 때를 예측할 수 있다. 도 16b를 참조하면, 그래프(40_1650)에 의해 표현되는 계산된 취침 기간이 11pm 내지 7am 사이에 있으므로, 컨텍스트 데몬(40_102)은 사용자가 향후 11pm 내지 7am 사이에 자고 있을 것이라고 예측할 수 있다. 예를 들어, 취침 예측이 (예컨대, 사용자가 아침에 기상한 후) 일간 단위로 행해지는 경우, 컨텍스트 데몬(40_102)은 사용자가 현재 날짜에 11pm 내지 7am 사이에서 나중에 취침할 것이라고 예측할 수 있다.
불규칙성들 - 이상치(Outlier)들 및 누락 데이터 - 의 처리
일부 구현예들에서, 컨텍스트 데몬(40_102)은 이벤트 스트림 데이터 이력 내의 이상치 데이터를 처리하도록 구성될 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은, 그렇지 않으면, 취침 기간에 대응하는 시간 블록 내의 이상치 15분 단위 슬롯들을 처리하도록 구성될 수 있다. 예를 들어, 취침 기간 동안 후보일 수 있는 시간 블록(예컨대, 취침 임계 값을 초과하는 값들을 갖고, 조합 시, 최소 취침 기간을 초과하는 연속적인 15분 단위 슬롯들의 블록)은 취침 임계 값을 초과하지 않는 15분 단위 슬롯을 포함할 수 있다. 예를 들어, 최소 취침 기간이 5시간인 경우, 취침 기간 내에는 적어도 20개의 15분 단위 슬롯들이 있다. 20개의 15분 단위 슬롯들이 있는 경우, 취침 임계 값을 초과하는 10개의 슬롯들, 그 뒤에 취침 임계 값을 초과하지 않는 1개의 슬롯(예컨대, 이상치), 그리고 그 뒤에 취침 임계 값을 초과하는 9개의 슬롯들이 있을 수 있다. 이러한 시나리오의 일례가 도 40v 및 도 40w를 참조하면 알 수 있는데, 여기서 이상치 슬롯(40_1608)은 취침 임계치(40_1606)을 초과하지 않고, 취침 임계치(40_1606)을 초과하는 슬롯들(예컨대, 40_1604)에 의해 둘러싸인다. 취침 임계 값을 초과하는 15분 단위 슬롯들의 블록 내에 적은 수(예컨대, 1개, 2개)의 이상치 15분 단위 슬롯이 있는 경우, 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 마치 이상치 15분 단위 슬롯이 취침 임계 값을 초과하여 취침 기간(예컨대, 취침 곡선)이 생성될 수 있도록 한 것처럼 그 이상치 15분 단위 슬롯을 다룰 수 있다. 예를 들어, 취침 기간에 대응하는 연속적인 15분 단위 슬롯들의 블록을 결정할 때, 컨텍스트 데몬(40_102)은 이상치 15분 단위 슬롯들을 무시할 수 있다. 15분 단위 슬롯들을 이진 값들로 변환하여 (도 40w에서와 같이) 확률 곡선을 생성하는 경우, 컨텍스트 데몬(40_102)은 확률 곡선이 생성될 수 있도록 이상치 15분 단위 슬롯에 1의 값을 할당할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 취침 기간을 예측할 때 이벤트 스트림 이력 내의 이상치 날들(예컨대, 24시간 기간들, 데이터 벡터들 이력 등)을 처리하도록 구성될 수 있다. 예를 들어, 단기 평균들을 계산하기 전, 컨텍스트 데몬(40_102)은 이전 7일간의 잠김 이벤트 데이터(예컨대, 컨텍스트 데이터 이력)를 비교할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 이전 7개의 24시간 기간들 각각에 대한 데이터 벡터들 이력에 대해 유사성 분석을 수행할 수 있다. 7일 중 하루(예컨대, 이상치 날)에 대한 데이터가 다른 6일보다 완전히 상이한 경우, 컨텍스트 데몬(40_102)은 단기 평균 계산으로부터 이상치 날을 제거할 수 있다. 예를 들어, 15분 단위 슬롯에 대한 디바이스 잠금 상태 데이터 이력에서의 작은 일별 변동은 정상적인 것일 수 있다. 그러나, (예컨대, 사용자 취침 기간에 대응하는) 큰 잠금 데이터 블록의 이동은 비정상적이다. 컨텍스트 데몬(40_102)은, 데이터 이력에서의 일별 패턴들을 비교함으로써 그리고 하루에 대해 관찰된 사용 패턴들(예컨대, 사용자 거동)이 그 주 내의 다른 날들에 대해 관찰된 사용 패턴들에 대응하지 않는다고 검출함으로써 이상치 날을 검출할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 15분 단위 슬롯들의 블록이 전형적으로 다른 날들에 잠겨 있을 때 이상치 날(24시간 기간) 내의 15분 단위 슬롯들의 동일한 블록이 잠금해제되어 있는 것으로 판정할 수 있다. 일단 이상치 날이 검출되면, 컨텍스트 데몬(40_102)은 전술된 단기 평균화 계산들로부터 이상치 날을 생략할 수 있다.
유사하게, 장기 평균들을 계산하기 전, 컨텍스트 데몬(40_102)은, 예를 들어, 이전 4주에 대해 그 주의 동일한 날에 대한 잠김 이벤트 데이터(예컨대, 컨텍스트 데이터 이력)를 비교할 수 있다. 그 날들 중 하루에 대한 데이터가 다른 4일보다 현저하게 상이한 경우(예컨대, 이상치 날), 컨텍스트 데몬(40_102)은 장기 평균 계산으로부터 이상치 날을 제거할 수 있다. 예를 들어, 15분 단위 슬롯에 대한 디바이스 잠금 상태 데이터 이력에서의 주별 변동은 정상적일 수 있다. 그러나, (사용자 취침 기간에 대응하는) 큰 잠금 데이터 블록의 이동은 비정상적이다. 컨텍스트 데몬(40_102)은, 데이터 이력에서의 주별 패턴들을 비교함으로써 그리고 하루에 대해 관찰된 사용 패턴들(예컨대, 사용자 거동)이 이전 주들 내의 동일한 날들에 대해 관찰된 사용 패턴들에 대응하지 않는다고 검출함으로써 이상치 날을 검출할 수 있다. 일단 이상치 날이 검출되면, 컨텍스트 데몬(40_102)은 전술된 장기 평균화 계산들로부터 이상치 날을 생략할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 사용자 거동 패턴들에서의 이동에 기초하여 이상치 날을 검출할 수 있다. 예를 들어, 사용자가 11pm 내지 7am 사이에서 정상적으로 취침하는 경우, 잠김 이벤트 데이터 이력은 디바이스가 11pm 내지 7am 사이에서 (대체로) 잠긴 채로 유지된다는 것을 나타낼 것이다. 그러나, 드문 날로, 사용자는 자지 않고 밤새 공부하거나 일할 수 있고, 이에 따라, 그 날에 대한 취침 기간은 다른 기간(예컨대, 6am 내지 12pm)으로 이동할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 잠김 상태 데이터 이력에 기초하여 취침 패턴들에서의 이러한 이동을 검출할 수 있고, 평균화 계산들로부터 이 날을 제거할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 인간 거동에서 공지된 또는 공통으로 수용된 한도들에 기초하여 이상치 날을 검출할 수 있다. 예를 들어, 사용자는 주말 여행을 갈 수 있고, 우발적으로, 주말 전체 동안 컴퓨팅 디바이스(예컨대, 스마트폰)를 집에 남겨둘 수 있다. 이러한 경우에 있어서, 디바이스는 주말 전체(예컨대, 이틀) 동안 잠긴 채로 유지되어, 이에 의해, 컨텍스트 데몬(40_102)에 의해 취침 기간으로서 잘못 해석될 수 있는 잠김 데이터의 블록을 생성할 것이다. 컨텍스트 데몬(40_102)은 잠김 데이터의 블록에 대응하는 기간(예컨대, 취침 기간)을 최대 취침 기간(예컨대, 12시간, 24시간 등)에 비교함으로써 이러한 상황을 검출할 수 있다. 예를 들어, 최대 취침 기간은 보편적인 지식(예컨대, 인간들은 보통 24시간을 초과해서 취침하지 않는다)에 기초할 수 있거나 또는 관찰된 데이터(예컨대, 사용자에 대해 최대로 관찰된 취침 기간은 10시간이다)에 기초하여 판정될 수 있다. 시간 블록이 최대 취침 기간을 초과하는 경우, 컨텍스트 데몬(40_102)은 전술된 장기 및/또는 단기 계산들을 수행할 때 이 시간 블록에 대응하는 날 또는 날들을 무시할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 이벤트 스트림 이력 내의 누락 데이터를 처리하도록 구성될 수 있다. 예를 들어, 사용자가 소정 기간 동안 컴퓨팅 디바이스를 턴오프할 수 있거나, 또는 디바이스는 장기간 외부 전원으로부터 언플러그된 후에 배터리 전력을 손실할 수 있다. 디바이스가 턴오프되어 있는 동안, 디바이스는 컨텍스트 정보를 수집할 수 없고, 이벤트 스트림 이력을 생성할 수 없다. 컴퓨팅 디바이스가 다시 턴온되는 경우, 컨텍스트 데몬(40_102)은 디바이스가 턴오프되었던 기간에 대응하는 누락 데이터에 기초하여 향후 이벤트들(예컨대, 향후 취침 기간)을 예측하고자 시도할 수 있다. 이러한 경우에 있어서, 컨텍스트 데몬(40_102)은 어떠한 이벤트(예컨대, 컨텍스트 항목) 데이터 값들도 이 기간 동안에는 존재하지 않는다고 판정할 수 있고, 전술된 단기 및/또는 장기 평균화 계산들을 수행할 때 이 기간에 대응하는 날 또는 날들(예컨대, 데이터 벡터 이력)을 무시(예컨대, 생략)할 수 있다.
예측된 이벤트들에 기초한 활동들의 스케줄링
도 40x은 예측된 향후 이벤트를 포함하는 예시적인 이벤트 스트림(40_1700)을 도시한다. 예를 들어, 전술된 메커니즘들을 이용하여, 컨텍스트 데몬(40_102)은 향후 취침 기간(40_1702)을 예측할 수 있다. 일부 구현예들에서, 예측된 향후 이벤트는 컴퓨팅 디바이스 내에서 활동들(예컨대, 컨텍스트 콜백들)을 스케줄링하는 데 사용될 수 있다. 도 1을 참조하면, 요청 클라이언트(40_126)는 예측된 이벤트에 앞서서 콜백 통지를 요청할 수 있다. 예를 들어, 요청 클라이언트(40_126)는, 컨텍스트 데몬(40_102)이 사용자가 잠들기 30분 전에 요청 클라이언트(40_126)에게 통지해야 함을 특정하는 술어를 포함하는 콜백 요청을 컨텍스트 데몬(40_102)에게 전송할 수 있다. 콜백 요청이 수신되는 경우, 컨텍스트 데몬(40_102)은 예측된 취침 기간이 시작되기 전 30분 동안 통지를 스케줄링할 수 있다. 유사하게, 요청 클라이언트는, 컨텍스트 데몬(40_102)이 사용자가 잠들고 1시간 후에 요청 클라이언트(40_126)에게 통지해야 함을 특정하는 술어를 포함하는 콜백 요청을 컨텍스트 데몬(40_102)에게 전송할 수 있다. 콜백 요청이 수신되는 경우, 컨텍스트 데몬(40_102)은 예측된 취침 기간이 시작된 후 1시간 동안 통지를 스케줄링할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 예측된 이벤트 시간에서의 현재 컨텍스트에 기초하여 향후 이벤트의 예측을 확인할 수 있다. 예를 들어, 요청 클라이언트(40_126)가, 예측된 취침 기간이 시작되고 30분 후에 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)에게 통지할 것을 요청하는 경우, 컨텍스트 데몬(40_102)은 현재 컨텍스트(40_112)(예컨대, 컨텍스트 항목 값들)를 분석하여 디바이스가 잠겨 있는지 여부를 판정함으로써 사용자가 그 시간에 실제로 자고 있는지 확인할 수 있다. 디바이스가 예측된 취침 기간이 시작되고 30분 후에 잠금해제되어 있는 경우(예컨대, 사용자가 자고 있지 않는 경우), 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에게 통지하지 않을 것이다. 일부 구현예들에서, 다른 컨텍스트 정보가 예측된 취침 기간을 확인하는 데 이용될 수 있다. 예를 들어, 가속도계 상태가 취침 기간을 확인하는 데 이용될 수 있다. 예를 들어, 대부분의 스마트폰 사용자들은 취침할 때 스마트폰을 테이블 상에 또는 바닥 상에 둘 것이다. 테이블들 및 바닥들은 보통 정지된 객체들이다. 따라서, 스마트폰은, 존재한다면, 많은 가속도계 데이터를 생성하지 않을 것이다. 스마트폰이 가속도계 데이터를 생성하고 있는 경우, 스마트폰은 사용자가 이동하고 있는 동안에 사용자의 주머니에 있을 가능성이 가장 크다. 따라서, 가속도계 데이터는, 예측된 취침 기간 동안에 사용자가 이동하고 있고 자고 있지 않음을 나타낼 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 선도(precursor) 이벤트들을 식별함으로써 향후 이벤트들의 예측을 개선할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 이벤트 스트림 데이터 이력를 분석하여 사용자 활동들과 예측된 이벤트들 사이의 관계들을 식별할 수 있다. 예를 들어, 사용자는 취침하기 전에 이메일 애플리케이션, 소셜 네트워킹 애플리케이션, 뉴스 애플리케이션, 또는 다른 애플리케이션을 체크하는 습관을 가질 수 있다. 컨텍스트 데몬(40_102)은 이들 패턴들(예컨대, 알람 시계 애플리케이션을 사용하고, 이어서 취침하는 것)을 검출할 수 있고, 선도 애플리케이션 또는 애플리케이션들(예컨대, 시계 애플리케이션, 뉴스 애플리케이션 등)을 식별할 수 있다. 일단 선도 애플리케이션(또는 애플리케이션들)이 식별되었다면, 컨텍스트 데몬(40_102)은 선도 애플리케이션을 사용하여 사용자가 이제 취침하려고 한다고 예측할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 이벤트 데이터 이력에 기초하여, 사용자가 전형적으로 알람 시계 애플리케이션을 사용하고 40_10분 후에 잠든다고 판정할 수 있다. 컨텍스트 데몬(40_102)이, 사용자가 11pm에 취침하려 할 것이라고 예측했고 사용자가 10pm에 알람 시계 애플리케이션을 사용하고 있는 경우, 컨텍스트 데몬(40_102)은 선도 알람 시계 애플리케이션 활동에 기초하여 11pm으로부터 10:10pm으로 예측된 취침 기간의 시작을 조정할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 예측된 취침 기간의 지속기간을 조정하지 않고서 예측된 취침 기간의 시작 시간과 종료 시간을 조정함으로써 예측된 취침 기간의 시작을 조정할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은, 예측된 취침 기간의 시작 시간을 조정하고 종료 시간을 조정하지 않음으로써 예측된 취침 기간의 시작을 조정하여, 이에 의해 예측된 취침 기간의 지속시간을 연장할 수 있다. 대안으로, 컨텍스트 데몬(40_102)이, 사용자가 선도 애플리케이션을 사용하고 있음을 검출하는 경우(예컨대, 현재 컨텍스트가, 포커스 애플리케이션이 선도 애플리케이션임을 나타냄), 컨텍스트 데몬(40_102)은 사용자의 활동을 모니터링하여 사용자가 컴퓨팅 디바이스를 잠글 때를 판정할 수 있고, 일단 디바이스가 잠기면 현재 취침 기간을 시작할 수 있다.
다른 용례들
일부 구현예들에서, 컴퓨팅 디바이스 상에서 구동되는 컨텍스트 클라이언트들은 전술된 취침 예측을 이용하여, 사용자가 잠자고 있는 동안에 백그라운드 태스크들을 스케줄링할 수 있다. 예를 들어, 운영 체제 프로세스(예컨대, 애플리케이션 업데이터)는 시스템 유지보수에 시스템 리소스들을 할당하는 것에 의해 사용자가 불편해지지 않도록 사용자가 취침 중인 동안에 일부 시스템 유지보수 태스크들(예컨대, 애플리케이션 업데이트들을 다운로드하는 것 및/또는 설치하는 것)을 스케줄링할 필요가 있을 수 있다. 컨텍스트 데몬(40_102)은 다양한 디바이스 컴포넌트들(예컨대, 하드웨어, 소프트웨어 등)의 상태를 분석하여, 스케줄링된 활동이 임의의 사용자 활동에 간섭할 수 있는지 여부를 판정할 수 있고, 이는 이하 더 설명되는 바와 같다.
일부 경우들에 있어서, 운영 체제 프로세스는 시스템 유지보수 태스크들을 수행하기 전에 사용자의 패스코드(예컨대, 패스워드)를 필요로 할 수 있다. 사용자가 자고 있는 동안에 사용자가 패스코드를 제공할 수 없을 것이므로, 운영 체제 프로세스는 사용자에 대한 예측된 취침 기간 전 소정 시간(예컨대, 40_10분)에 컨텍스트 데몬(40_102)으로부터 콜백 통지를 요청할 수 있다. 콜백 요청의 수신 시, 컨텍스트 데몬(40_102)은 예측된 취침 기간이 시작되기 전 40_10분 동안 콜백 통지를 스케줄링할 수 있다. 스케줄링된 시간에 도달할 때(예컨대, 현재 시간이 스케줄링된 시간과 같을 때), 컨텍스트 데몬(40_102)은 콜백 통지를 운영 체제 프로세스로 전송할 수 있다. 운영 체제 프로세스가 콜백 통지를 수신하는 경우, 운영 체제 프로세스는 사용자에게 사용자의 패스코드를 입력할 것을 프롬프트하여, 사용자가 취침 중인 동안에 운영 체제 프로세스가 유지보수 태스크들을 수행할 수 있게 할 수 있다. 예를 들어, 운영 체제 프로세스는 사용자로부터 패스코드를 수신할 수 있고, 시스템 유지보수 태스크들의 수행 동안에 사용하기 위해 패스코드를 저장할 수 있다. 일단 시스템 유지보수 태스크들이 완료되고 패스코드가 더 이상 필요하지 않다면, 운영 체제 프로세스는 컴퓨팅 디바이스로부터 사용자의 패스코드를 삭제할 수 있다.
사용자가 취침 중인 동안에 유지보수 태스크들을 시작하기 위해, 운영 체제 프로세스는 예측된 취침 기간이 시작되고 소정 시간(예컨대, 40_30분) 후에 콜백 통지를 요청할 수 있다. 콜백 요청의 수신 시, 컨텍스트 데몬(40_102)은 예측된 취침 기간이 시작된 후 45분 동안 콜백 통지를 스케줄링할 수 있다. 스케줄링된 시간에 도달할 때(예컨대, 현재 시간이 스케줄링된 시간과 같을 때), 컨텍스트 데몬(40_102)은 콜백 통지를 운영 체제 프로세스로 전송하기 전에 사용자가 컴퓨팅 디바이스를 사용하고 있지 않고/않거나 사용하려고 하고 있지 않음을 검증할 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스가 사용자 시작 활동을 서비스하고 있는지 여부를 판정함으로써 사용자가 컴퓨팅 디바이스를 사용하고 있지 않음을 검증할 수 있다. 예를 들어, 컴퓨팅 디바이스가 잠겨 있다고 하더라도(예컨대, 사용자가 취침하고 있을 수 있음을 나타냄), 컴퓨팅 디바이스는 사용자 내비게이션 요청의 서비스 시에 내비게이션 관련 활동들을 수행할 수 있다. 따라서, 컨텍스트 데몬(40_102)이, 컴퓨팅 디바이스의 내비게이션 컴포넌트들(예컨대, 글로벌 내비게이션 위성 시스템 수신기들)이 턴온되어 있다고 판정하는 경우, 컨텍스트 데몬(40_102)은 사용자가 컴퓨팅 디바이스를 사용하고 있다고 판정할 수 있고, 예측된 취침 기간 동안에 콜백 통지를 운영 체제 프로세스로 전송하는 것을 취소할 수 있거나 또는 지연시킬 수 있다. 유사하게, 컨텍스트 데몬(40_102)이, 컴퓨팅 디바이스가 개인 핫스팟(hotspot) 서비스를 제공하고 있거나 (예컨대, 자동 백그라운드 동기화와 대조적으로) 사용자 요청에 응답하여 데이터를 다른 사용자 디바이스와 동기화시키고 있거나 콜백 통지가 스케줄링되는 시간에 일부 다른 사용자 시작 서비스를 제공하고 있다고 판정하는 경우, 컨텍스트 데몬(40_102)은 콜백 통지를 운영 체제 프로세스로 전송하는 것을 취소할 수 있거나 또는 지연시킬 수 있는데, 그 이유는 디바이스가 잠겨 있다 하더라도 사용자가 여전히 컴퓨팅 디바이스를 사용하고 있기 때문이다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스가 사용자 시인성 활동(user-visible activity)을 시작하려고 하는지 여부를 판정함으로써 사용자가 컴퓨팅 디바이스를 사용하려고 하지 않음을 검증할 수 있다. 예를 들어, 컴퓨팅 디바이스 상에서 구동되는 다양한 프로세스들은 사용자에게 통지할 수 있거나 또는 사용자의 주의를 끌 수 있다. 통신 애플리케이션(예컨대, 인스턴트 메시징, 텍스트 메시징, 이메일, 전화 등)은 수신된 메시지에 관해 사용자에게 상기시킬 수 있다. 예를 들어, 통신 애플리케이션은 메시지가 수신되고 10분 후에 수신된 메시지를 읽거나 그에 응답할 것을 사용자에게 상기시키도록 구성될 수 있다. 시계 애플리케이션은 소정의 향후 시간에 사용자에게 통지하도록(예컨대, 기상시키도록) 구성된 알람 시계 기능을 포함할 수 있다. 캘린더 애플리케이션은 향후 스케줄링된 캘린더 이벤트에 관해 사용자에게 상기시키도록 구성될 수 있다. 사용자가 모임에 참석하도록 스케줄링된 경우, 내비게이션 애플리케이션은 사용자가 사용자의 현재 위치로부터 모임 위치로 이동하는 데 걸리는 시간에 기초하여 사용자에게 출발 시간(time-to-leave) 리마인더를 제시할 수 있다. 운동 애플리케이션은 일어서거나, 걷거나, 달리거나, 또는 일부 다른 유형의 운동을 할 것을 사용자에게 상기시키도록 구성될 수 있다. 이들 통지, 리마인더, 경고 등 각각은 사용자에게 지시되고, 사용자가 컴퓨팅 디바이스와 상호작용할 것을 프롬프트하거나 사용자가 그렇게 하게 할 것이다. 컨텍스트 데몬(40_102)은 이들 사용자 시인성 이벤트들 중 하나가 임계 기간(예컨대, 1분, 10분, 시스템 유지보수 태스크를 완료하는 데 필요한 시간 등) 내에 발생하려고 하는지 여부를 판정할 수 있으며, 사용자가 컴퓨팅 디바이스를 사용하기 시작하려고 하기 때문에 콜백 통지를 운영 체제 프로세스에 전송하는 것을 지연시키거나 취소할 수 있다.
프로세스들
도 40y은 컴퓨팅 디바이스 상에서의 컨텍스트 변화들을 클라이언트들에게 통지하기 위한 예시적인 프로세스(40_1800)의 흐름도이다. 예를 들어, 전술된, 시스템(40_100)에 대응하는 컴퓨팅 디바이스는 프로세스(40_1800)를 수행할 수 있다.
단계(40_1802)에서, 컴퓨팅 디바이스는 컨텍스트 콜백 요청을 수신할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 요청 클라이언트(40_126)로부터 콜백 요청을 수신할 수 있다. 콜백 요청은 요청 클라이언트(40_126)에 대한 식별자, 및 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)에게 콜백 요청을 전송해야 하는 컨텍스트(예컨대, 디바이스 상태) 조건들을 정의하는 술어를 포함할 수 있다. 일부 구현예들에서, 콜백 요청을 수신할 시, 컨텍스트 데몬(40_102)은 콜백 요청을 식별하기 위해 컨텍스트 데몬(40_102) 및/또는 요청 클라이언트(40_126)에 의해 사용될 수 있는 콜백 식별자를 생성할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)로부터 콜백 요청을 수신하는 것에 응답하여 콜백 식별자를 요청 클라이언트(40_126)에게 반환할 수 있다. 컨텍스트 데몬(40_102)은, 예를 들어, 콜백 레지스트리(40_114) 및/또는 술어 데이터베이스(40_116)에 콜백 요청을 저장할 수 있다.
단계(40_1804)에서, 컴퓨팅 디바이스는 콜백 요청을 서비스하기 위해 컨텍스트 모니터를 초기화할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 콜백 요청 술어에 특정된 컨텍스트 항목들에 대응하는 모니터 번들(40_106)(또는 번들들)을 로딩할 수 있다.
단계(40_1806)에서, 컴퓨팅 디바이스는 컨텍스트 모니터 번들(40_106)(컨텍스트 모니터(40_108))로부터 현재 컨텍스트 정보를 수신할 수 있다. 예를 들어, 각각의 컨텍스트 모니터(40_108)는 다양한 시스템 컴포넌트들과 인터페이싱하여 시스템 컴포넌트들의 상태를 획득할 수 있다. 이어서, 컨텍스트 모니터들(40_108)은 상태를 컨텍스트 데몬(40_102)에 보고할 수 있다. 대안으로, 컨텍스트 데몬(40_102)은 보고 클라이언트(40_124)로부터 상태 정보를 수신할 수 있다. 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 수신된 상태 정보에 기초하여 현재 컨텍스트(40_112)를 생성할 수 있다.
단계(40_1808)에서, 컴퓨팅 디바이스는 현재 컨텍스트가 요청된 컨텍스트와 매칭한다고 판정할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 컨텍스트 요청 술어를 현재 컨텍스트와 비교하여, 현재 컨텍스트가 술어에 특정된 조건들을 만족시킨다고 판정할 수 있다.
단계(40_1810)에서, 컴퓨팅 디바이스는 콜백 통지를 요청 클라이언트(40_126)로 전송할 수 있다. 예를 들어, 현재 컨텍스트가 요청된 컨텍스트와 매칭한다고 판정하는 것에 응답하여, 컨텍스트 데몬(40_102)은 콜백 통지를, 콜백 요청을 식별하는 요청 클라이언트(40_126)로 전송할 수 있다. 요청 클라이언트(40_126)는 콜백 요청 식별자를 사용하여, 어느 콜백 술어가 콜백을 트리거했는지 판정할 수 있다(예컨대, 컴퓨팅 디바이스의 현재 운영 컨텍스트를 판정할 수 있다). 이어서, 요청 클라이언트(40_126)는 현재 컨텍스트에 적절한 액션을 수행할 수 있다.
도 40z는 콜백 요청을 서비스하기 위해 컨텍스트 데몬을 재시작하기 위한 예시적인 프로세스(40_1900)의 흐름도이다. 예를 들어, 컴퓨팅 디바이스 상에서 구동되는 프로세스들은, 프로세스 관리자가, 프로세스가 소정 기간 동안 아이들이었다고 판정할 때 운영 체제의 프로세스 관리자 서비스에 의해 종료될 수 있다. 프로세스 관리자(또는 일부 다른 프로세스)가 컨텍스트 데몬(40_102)을 종료하는 경우, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)을 재시작하도록 프로세스(40_1900)를 수행하여, 컨텍스트 데몬(40_102)이 컨텍스트 정보를 수집할 수 있게 그리고 콜백 통지들을 요청 클라이언트(40_126)로 전송할 수 있게 할 수 있다. 예를 들어, 프로세스(40_1900)는 도 7 내지 도 13을 참조하여 기술된 컨텍스트 데몬 재시작 메커니즘들에 대응할 수 있다.
단계(40_1902)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)과 요청 클라이언트(40_126) 사이의 통신 세션을 시작할 수 있다. 일부 구현예들에서, 요청 클라이언트(40_126)는, 전술된 바와 같이, 컨텍스트 데몬(40_102)으로 콜백 요청을 전송함으로써 컨텍스트 데몬(40_102)과의 통신 세션을 시작할 수 있다. 콜백 요청은, 전술된 바와 같이, 클라이언트 식별자 및 콜백 술어를 포함할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에 의해 시작된 통신 세션을 사용하여 요청 클라이언트(40_126)와만 통신할 수 있다(예컨대, 그에게만 콜백 통지를 전송할 수 있다). 일부 구현예들에서, 컨텍스트 데몬(40_102)은 콜백 데이터베이스(예컨대, 술어 데이터베이스(40_116))에 콜백 요청을 저장할 수 있다.
단계(40_1904)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)이 비활성이라고 판정할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)이 소정 기간 동안 어떠한 콜백 요청들 또는 컨텍스트 정보 업데이트들도 수신하지 않는 경우, 프로세스 관리자는 컨텍스트 데몬(40_102)이 아이들 또는 비활성이라고 판정할 수 있다.
단계(40_1906)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)을 셧다운시킬 수 있다. 예를 들어, 컨텍스트 데몬(40_102)이 비활성이라는 판정에 기초하여, 프로세스 관리자는 컨텍스트 데몬(40_102)을 셧다운 또는 종료시켜서 시스템 리소스들(예컨대, 배터리 전력, 메모리 등)을 절약할 수 있다. 컨텍스트 데몬(40_102)을 셧다운시킬 시, 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이의 통신 세션도 또한 종료될 것이다.
단계(40_1908)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)과 연관된 이벤트를 검출할 수 있다. 예를 들어, 이벤트는 메시지를 컨텍스트 데몬(40_102)으로 전송하는 컨텍스트 클라이언트(예컨대, 요청 클라이언트(40_126), 보고 클라이언트(40_124) 등)일 수 있다. 예를 들어, 메시지는 요청 클라이언트(40_126)로부터의 콜백 요청일 수 있다. 메시지는 보고 클라이언트(40_124)로부터 수신된 컨텍스트 정보 업데이트일 수 있다. 일부 구현예들에서, 이벤트는 컨텍스트 데몬(40_102)이 관심을 등록한, 개시 데몬(40_702)에 의해 수신된 디바이스 상태 업데이트일 수 있다.
단계(40_1910)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)을 재시작할 수 있다. 예를 들어, 컨텍스트 클라이언트가 메시지를 종료된 컨텍스트 데몬(40_102)으로 전송하는 경우, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)이 메시지를 수신 및 처리할 수 있도록 컨텍스트 데몬(40_102)을 재시작할 수 있다. 개시 데몬(40_702)이 컨텍스트 데몬(40_102)으로부터 수신되는 요청에 대응하는 디바이스 상태 업데이트를 수신하는 경우, 개시 데몬(40_702)은 컨텍스트 데몬(40_102)을 재시작할 수 있다.
단계(40_1912)에서, 컴퓨팅 디바이스는 콜백 데몬(40_102)에 대해 등록된 콜백 요청들을 복원할 수 있다. 예를 들어, 일단 재시작되면, 콜백 데몬(40_102)은 콜백 데몬(40_102)이 종료되기 전에 수신된 콜백 요청들을 복원할 수 있다. 예를 들어, 콜백 데몬(40_102)은 이전에 수신된 콜백을 콜백 데이터베이스로부터 복원할 수 있다.
단계(40_1914)에서, 컴퓨팅 디바이스는 복원된 콜백 요청들을 서비스하는 데 필요한 이벤트 모니터들을 초기화할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 콜백 요청들을 서비스하기 위해 필요한 컨텍스트 정보를 수집하는 데 필수적인 이벤트 모니터 번들들(40_106)을 로딩할 수 있다.
단계(40_1916)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)과 요청 클라이언트(40_126) 사이의 통신 세션을 재확립할 수 있다. 예를 들어, 일단 컨텍스트 데몬(40_102)이 다시 구동되고 있다면, 요청 클라이언트(40_126)는 메시지(예컨대, 콜백 요청)를 컨텍스트 데몬(40_102)으로 전송하여 통신 세선을 재확립할 수 있다. 컨텍스트 데몬(40_102)은 재확립된 통신 세션을 사용하여, 콜백 요청에서 특정된 술어에 따라 콜백 통지들을 클라이언트에게 전송할 수 있다.
도 40aa은 콜백 통지를 수신하기 위해 콜백 클라이언트를 재시작하기 위한 예시적인 프로세스(40_2000)의 흐름도이다. 예를 들어, 컴퓨팅 디바이스 상에서 구동되는 프로세스들은, 프로세스 관리자가, 프로세스가 소정 기간 동안 아이들이었다고 판정할 때 운영 체제의 프로세스 관리자 서비스에 의해 종료될 수 있다. 프로세스 관리자(또는 일부 다른 프로세스)가 요청 클라이언트(40_126)를 종료하는 경우, 컴퓨팅 디바이스는 요청 클라이언트(40_126)를 재시작하여 요청 클라이언트(40_126)가 컨텍스트 데몬(40_102)으로부터 콜백 통지들을 수신할 수 있도록 프로세스(40_1900)를 수행할 수 있다. 예를 들어, 프로세스(40_1900)는 도 7 내지 도 13을 참조하여 기술된 요청 클라이언트 재시작 메커니즘들에 대응할 수 있다.
단계(40_2002)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)과 요청 클라이언트(40_126) 사이의 통신 세션을 시작할 수 있다. 일부 구현예들에서, 요청 클라이언트(40_126)는, 전술된 바와 같이, 컨텍스트 데몬(40_102)으로 콜백 요청을 전송함으로써 컨텍스트 데몬(40_102)과의 통신 세션을 시작할 수 있다. 콜백 요청은, 전술된 바와 같이, 클라이언트 식별자 및 콜백 술어를 포함할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)에 의해 시작된 통신 세션을 사용하여 요청 클라이언트(40_126)와만 통신할 수 있다(예컨대, 그에게만 콜백 통지를 전송할 수 있다). 일부 구현예들에서, 컨텍스트 데몬(40_102)은 콜백 데이터베이스(예컨대, 술어 데이터베이스(40_116))에 콜백 요청을 저장할 수 있다.
단계(40_2004)에서, 컴퓨팅 디바이스는 요청 클라이언트(40_126)가 비활성이라고 판정할 수 있다. 예를 들어, 요청 클라이언트(40_126)가 컴퓨팅 디바이스 내에서 중요한 프로세싱을 수행하고 있지 않는 경우(예컨대, 요청 클라이언트(40_126)에 대한 CPU 사용이 임계 레벨 미만임), 프로세스 관리자는 요청 클라이언트(40_126)가 아이들 또는 비활성이라고 판정할 수 있다.
단계(40_2006)에서, 컴퓨팅 디바이스는 요청 클라이언트(40_126)를 셧다운시킬 수 있다. 예를 들어, 요청 클라이언트(40_126)가 비활성이라는 판정에 기초하여, 프로세스 관리자는 요청 클라이언트(40_126)를 셧다운 또는 종료시켜서 시스템 리소스들(예컨대, 배터리 전력, 메모리 등)을 절약할 수 있다. 요청 클라이언트(40_126)를 셧다운시킬 시, 요청 클라이언트(40_126)와 컨텍스트 데몬(40_102) 사이의 통신 세션도 또한 종료될 것이다. 따라서, 컨텍스트 데몬(40_102)은 콜백 통지들을 요청 클라이언트(40_126)로 전달하게 하는 통신 채널을 갖지 않을 것이다.
단계(40_2008)에서, 컴퓨팅 디바이스는 요청 클라이언트(40_126)와 연관된 이벤트를 검출할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 컨텍스트 콜백 술어와 매칭하는(예컨대, 술어에 의해 특정된 조건들에 대응하는) 현재 컨텍스트를 검출할 수 있다. 개시 데몬(40_702)은, 컨텍스트 데몬(40_102)으로부터 수신되고 컨텍스트 클라이언트(40_126)의 클라이언트 식별자와 연관된 디바이스 상태 요청에 대응하는 디바이스 상태를 검출할 수 있다.
단계(40_2010)에서, 컴퓨팅 디바이스는 요청 클라이언트(40_126)를 재시작할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)이, 현재 컨텍스트가 컨텍스트 콜백 술어와 매칭함을 검출하는 경우, 컨텍스트 데몬(40_102)은 콜백 통지를 요청 클라이언트(40_126)로 전송하고자 시도할 수 있다. 그러나, 컨텍스트 데몬(40_102)과 요청 클라이언트(40_126) 사이의 통신 세션이 종료되었기 때문에, 컨텍스트 데몬(40_102)은 콜백 통지를 요청 클라이언트(40_126)에게 전송할 수 없다. 따라서, 요청 클라이언트(40_126)와의 통신 채널이 종료되었음을 검출할 시, 컨텍스트 데몬(40_102)은, 요청 클라이언트(40_126)를 재시작하라는 요청 시, 요청 클라이언트(40_126)로부터 수신된 클라이언트 식별자를 개시 데몬(40_702)으로 전송할 수 있다. 일부 구현예들에서, 개시 데몬(40_702)에게 요청 클라이언트(40_126)를 재시작할 것을 요청할 시, 컨텍스트 데몬(40_102)은 요청 클라이언트(40_126)의 클라이언트 식별자와 연관된 모든 콜백 요청 데이터(예컨대, 콜백 레지스트리(40_114) 및/또는 술어 데이터베이스(40_116)에 저장됨)를 삭제할 수 있다. 클라이언트 식별자를 수신할 시, 개시 데몬(40_702)은 요청 클라이언트(40_126)를 재시작할 수 있다. 대안으로, 컨텍스트 데몬(40_102)으로부터 수신되고 컨텍스트 클라이언트(40_126)의 클라이언트 식별자와 연관된 디바이스 상태 요청에 대응하는 디바이스 상태를 검출할 시, 개시 데몬(40_702)은 요청 클라이언트(40_126)를 재시작할 수 있다.
단계(40_2012)에서, 컴퓨팅 디바이스는 컨텍스트 데몬(40_102)과 요청 클라이언트(40_126) 사이의 통신 세션을 재확립할 수 있다. 예를 들어, 재시작 시, 요청 클라이언트(40_126)는 새로운 콜백 요청을 컨텍스트 데몬(40_102)으로 전송하여 새로운 통신 세션을 시작할 수 있다.
단계(40_2014)에서, 컴퓨팅 디바이스는 재시작된 요청 클라이언트(40_126)로부터 클라이언트 콜백 요청을 수신할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 단계(40_2008)에서 기술된 바와 같이, 현재 컨텍스트에 대응하는 동일한 콜백 술어를 특정하는 콜백 요청을 요청 클라이언트(40_126)로부터 수신할 수 있다. 콜백 요청의 수신 시, 컨텍스트 데몬(40_102)은 콜백 요청이 컴퓨팅 디바이스의 현재 컨텍스트에 대응한다고 판정할 수 있다.
단계(40_2016)에서, 컴퓨팅 디바이스는 콜백 통지를 요청 클라이언트(40_126)로 전송할 수 있다. 예를 들어, 현재 컨텍스트가 콜백 요청과 매칭한다고 판정할 시, 컨텍스트 데몬(40_102)은 재확립된 통신 채널을 사용하여 콜백 통지를 요청 클라이언트(40_126)로 전송할 수 있다.
도 40bb은 컨텍스트 정보 이력에 기초하여 향후 이벤트들을 예측하기 위한 예시적인 프로세스(40_2100)의 흐름도이다. 예를 들어, 프로세스(40_2100)는 도 40t 내지 도 40x을 참조하여 기술된 이벤트 예측 메커니즘들에 대응할 수 있다.
단계(40_2102)에서, 컴퓨팅 디바이스는 컨텍스트 항목에 대한 컨텍스트 데이터 이력을 획득할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 (예컨대, 이력 모니터(40_110)를 사용하여) 현재 컨텍스트(40_112)에서의 각각의 컨텍스트 항목에 대해 시간의 경과에 따른 디바이스 컨텍스트(예컨대, 디바이스 상태)의 변화들을 나타내는 이벤트 스트림 이력을 생성할 수 있다. 예를 들어, 이력 모니터(40_110)는, 전술된 바와 같이, 디바이스가 잠겼을 때 또는 잠금해제되었을 때를 나타내는 "잠김" 컨텍스트 항목에 대한 이벤트 스트림 이력을 생성할 수 있다.
단계(40_2104)에서, 컴퓨팅 디바이스는 컨텍스트 항목에 대한 컨텍스트 데이터 벡터들 이력을 생성할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 이전 40_28일간에 걸쳐서 24시간 기간에서의 컨텍스트 항목에 대한 컨텍스트 데이터 이력을 분석할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 40_28개의 이전 24시간 기간들 각각에 대해 28개의 데이터 벡터들을 생성할 수 있다. 28개의 데이터 벡터들 각각은 각각의 40_24시간 기간에서 96개의 15분 단위 슬롯들에 대응하는 96개의 데이터 엔트리들을 포함할 수 있다(예컨대, 각각의 벡터가 96의 길이를 가질 수 있음). 컨텍스트 데몬(40_102)은 40_28개의 이전 24시간 기간(예컨대, 이전 40_28일간) 각각 동안 기록된 컨텍스트 항목(예컨대, 디바이스 상태)의 관찰된 값에 대응하는 확률 값을 96개의 15분 단위 슬롯들 각각에 할당할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 컴퓨팅 디바이스가 이전 40_28일간의 96개의 15분 단위 슬롯들 각각 동안 잠긴 채로 유지될 가능성을 나타내는 값(예컨대, 0, 1, 0.45 등)을 40_28개의 벡터들로 96개의 데이터 슬롯들 각각에 할당할 수 있다.
단계(40_2106)에서, 컴퓨팅 디바이스는 특정 컨텍스트 값이 각각의 타임슬롯에서 관찰될 단기 확률을 판정할 수 있다. 예를 들어, 단기 확률은 이전 일수(number of days)에 걸쳐서 수집된 데이터에 기초하여 계산될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 상기의 "단기 평균화" 섹션에서 전술된 바와 같이, 이전 7일에 걸쳐서 15분 단위 슬롯들을 평균화함으로써 디바이스가 잠긴 채로 유지될 단기 확률(PS)을 계산할 수 있다.
단계(40_2108)에서, 컴퓨팅 디바이스는 특정 컨텍스트 값이 각각의 타임슬롯에서 관찰될 장기 확률을 판정할 수 있다. 예를 들어, 장기 확률은 이전 수의 주들에 걸쳐서 주의 동일한 날(예컨대, 일요일, 수요일 등)에 대해 수집된 데이터에 기초하여 계산될 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 상기의 "장기 평균화" 섹션에서 전술된 바와 같이, 이전 4주에 걸쳐서 15분 단위 슬롯들을 평균화함으로써 디바이스가 잠긴 채로 유지될 장기 확률(PL)을 계산할 수 있다.
단계(40_2110)에서, 컴퓨팅 디바이스는 단기 확률과 장기 확률을 조합하여 조합된 확률을 생성할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 전술된 바와 같이, 단기 확률(PS)과 장기 확률(PL)을 조합하여 조합된 확률(P)을 생성할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 장기 확률(또는 단기 확률)을 가중화하여, 장기 확률이 조합된 확률 상에서 갖는 영향을 조절할 수 있다.
단계(40_2112)에서, 컴퓨팅 디바이스는 컨텍스트 항목 값에 대한 확률 곡선을 생성할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 상기의 "취침 곡선의 생성" 섹션에서 기술된 바와 같이, 슬롯별 확률 값들을 확률 곡선으로 변환할 수 있다.
단계(40_2114)에서, 컴퓨팅 디바이스는 특정 디바이스 컨텍스트의 향후 발생을 예측할 수 있다. 예를 들어, 일단 확률 곡선이 생성되면, 컨텍스트 데몬(40_102)은 확률 곡선에 기초하여 향후의 동일한 컨텍스트 항목 값의 발생을 예측할 수 있다. 예를 들어, 상기의 잠김 컨텍스트 예를 사용하여, 컨텍스트 데몬(40_102)은 11pm 및 7am의 시간들 동안에 디바이스가 잠긴 채로 유지될 것임을 예측할 수 있다. 이러한 잠김 컨텍스트 항목 예측에 기초하여, 컨텍스트 데몬(40_102)은 이러한 예측된 기간 동안에 사용자가 잠들 것이라고 추론할 수 있다.
도 40cc는 취침 컨텍스트 콜백 요청을 서비스하기 위한 예시적인 프로세스(40_2200)의 흐름도이다. 예를 들어, 프로세스(40_2200)는 적어도 상기의 도 40cc에 기술된 메커니즘들에 대응할 수 있다. 예를 들어, 요청 클라이언트(40_126)(예컨대, 애플리케이션, 유틸리티, 운영 체제 툴 등)는 사용자가 취침 중일 때 컨텍스트 데몬(40_102)이 프로세스들에게 통지해야 함을 특정하는 콜백 요청을 컨텍스트 데몬(40_102)으로 전송할 수 있다. 예를 들어, 요청 클라이언트(40_126)는 사용자가 컴퓨팅 디바이스를 사용하면서 사용자가 이들 유지보수 활동들에 의해 불편해지지 않게 하기 위해 사용자가 취침하는 동안에 유지보수 활동들을 스케줄링하도록 구성될 수 있다.
단계(40_2202)에서, 컴퓨팅 디바이스는 취침 컨텍스트 콜백 요청을 수신할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 사용자가 취침하려고 하고서 10분 후, 컨텍스트 데몬(40_102)이 요청 클라이언트(40_126)에게 통지해야 함을 특정하는 콜백 요청을 요청 클라이언트(40_126)로부터 수신할 수 있다.
단계(40_2204)에서, 컴퓨팅 디바이스는 콜백 요청을 서비스하기 위해 취침 컨텍스트 모니터를 초기화할 수 있다. 예를 들어, 취침 컨텍스트 모니터는 컴퓨팅 디바이스의 잠김 상태를 모니터링하도록 구성된 컨텍스트 모니터(40_108)를 포함하는 모니터 번들(40_106)일 수 있다. 일부 경우들에 있어서, 컨텍스트 모니터(40_108)는 컴퓨팅 디바이스의 잠김 상태 및 취침 컨텍스트와 연관된 다른 컴포넌트들의 상태를 모니터링하도록 구성될 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 내비게이션 컴포넌트들, 무선 네트워킹 컴포넌트들(예컨대, 개인 핫스팟, 블루투스 등), 디바이스 동기화 컴포넌트들, 및/또는 디바이스 입/출력 컴포넌트들(예컨대, 헤드폰 잭 커넥터 등)의 상태를 모니터링할 수 있다.
단계(40_2206)에서, 컴퓨팅 디바이스는 컨텍스트 모니터로부터 취침 컨텍스트 정보를 수신할 수 있다. 예를 들어, 컨텍스트 모니터(40_108)는 컴퓨팅 디바이스의 잠김 상태 및/또는 다른 모니터링된 컴포넌트들의 상태를 컨텍스트 데몬(40_102)에게 보고할 수 있다.
단계(40_2208)에서, 컴퓨팅 디바이스는 향후 취침 기간을 예측할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은, 도 40bb을 참조하여 전술된 바와 같이, 향후 취침 기간을 예측할 수 있다.
단계(40_2210)에서, 컴퓨팅 디바이스는 취침 컨텍스트 콜백을 스케줄링할 수 있다. 예를 들어, 예측된 취침 기간이 11pm으로부터 7am까지이고, 취침 기간이 시작되고 10분 후에 슬립 컨텍스트 콜백이, 요청 클라이언트(40_126)가 콜백되어야 한다고 특정하는 경우, 컨텍스트 데몬(40_102)은 11:10pm에 대한 슬립 콜백을 스케줄링할 수 있다.
단계(40_2212)에서, 컴퓨팅 디바이스는 스케줄링된 취침 컨텍스트 콜백을 프로세싱할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 현재 시간이 스케줄링된 11:10am 시간과 동일한 때를 검출할 수 있고, 콜백 통지를 요청 클라이언트(40_126)로 전송할지 여부를 판정할 수 있다.
단계(40_2214)에서, 컴퓨팅 디바이스는 사용자가 취침 중인지 여부를 판정할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)은 사용자가 취침 중인지 확인하기 위해 다양한 컨텍스트 항목들(예컨대, 디바이스 상태)을 분석할 수 있다. 일부 구현예들에서, 컨텍스트 데몬(40_102)은 현재 디바이스 잠김 상태가 디바이스가 잠겨 있음을 나타내는지 여부를 판정할 수 있다. 디바이스가 잠겨 있지 않은 경우, 컨텍스트 데몬(40_102)은 취침 콜백 통지를 요청 클라이언트(40_126)로 전송하는 것을 취소할 수 있거나 또는 지연시킬 수 있다.
일부 구현예들에서, 컨텍스트 데몬(40_102)은 사용자가 컴퓨팅 디바이스를 수동적으로 사용하고 있는지 여부를 판정할 수 있다. 예를 들어, 사용자는 사용자 입력을 제공하거나 디바이스를 잠금해제하지 않고서 디바이스를 사용(예컨대, 그에 의존)하고 있을 수 있다. 사용자가 컴퓨팅 디바이스를 수동적으로 사용하고 있는 경우, 컨텍스트 데몬(40_102)은 취침 콜백 통지를 요청 클라이언트(40_126)로 전송하는 것을 취소할 수 있거나 또는 지연시킬 수 있다. 예를 들어, 사용자는 디바이스가 잠겨 있는 동안 컴퓨팅 디바이스의 내비게이션 특징들을 사용하고 있을 수 있다. 따라서, 컨텍스트 데몬(40_102)은 내비게이션 컴포넌트들(예컨대, GNSS 시스템, Wi-Fi, 및/또는 셀룰러 데이터 송수신기들 등)이 턴온되어 있는지 여부를 판정할 수 있다. 현재 컨텍스트 정보가 이들 내비게이션 컴포넌트들에게 전력이 공급됨을 나타내는 경우, 컨텍스트 데몬(40_102)은 사용자가 컴퓨팅 디바이스를 수동적으로 사용하고 있고 잠자고 있지 않다고 판정할 수 있다.
수동적 사용의 다른 예로서, 사용자는 컴퓨팅 디바이스가 잠겨 있는 동안에 컴퓨팅 디바이스에 의해 제공되는 개인 핫스팟 기능을 사용하고 있을 수 있다. 현재 컨텍스트 정보가 개인 핫스팟 컴포넌트들에게 전력이 공급됨을 나타내는 경우, 컨텍스트 데몬(40_102)은 사용자가 컴퓨팅 디바이스를 수동적으로 사용하고 있고 잠자고 있지 않다고 판정할 수 있다.
수동적 사용의 다른 예로서, 사용자는 다른 디바이스(예컨대, 랩톱, 태블릿 컴퓨터, 스마트 워치 등)와의 동기화 동작을 시작했을 수 있다. 동기화 동작은 컴퓨팅 디바이스가 잠겨 있는 동안에 수행될 수 있다. 현재 컨텍스트 정보가, 컴퓨팅 디바이스가 동기화 동작을 수행하고 있음을 나타내는 경우, 컨텍스트 데몬(40_102)은 사용자가 컴퓨팅 디바이스를 수동적으로 사용하고 있고 잠자고 있지 않다고 판정할 수 있다.
단계(40_2216)에서, 컴퓨팅 디바이스는 어떠한 임박한 사용자 활동도 발생할 것으로 스케줄링되어 있지 않음을 확인할 수 있다. 예를 들어, 사용자는 사실상 잠들어 있을 수 있지만, 컴퓨팅 디바이스는, 곧 발생하여 사용자를 기상시키고 사용자가 컴퓨팅 디바이스를 사용하게 할 사용자 시인성 통지를 스케줄링했을 수 있다. 예를 들어, 컴퓨팅 디바이스는 취침 콜백 통지가 스케줄링된 직후 발생하도록 스케줄링된 인입 통신(예컨대, 텍스트 메시지, 인스턴트 메시지, 이메일, 전화 통화 등)에 관한 리마인더를 스케줄링했을 수 있다. 컴퓨팅 디바이스는 취침 콜백 통지가 스케줄링된 직후 발생할 것으로 스케줄링된 알람 시계 알람을 스케줄링했을 수 있다. 컴퓨팅 디바이스는 취침 콜백 통지가 스케줄링된 직후 발생할 것으로 스케줄링된 캘린더 리마인더 또는 경고를 스케줄링했을 수 있다. 컴퓨팅 디바이스는 취침 콜백 통지가 스케줄링된 직후 발생할 것으로 스케줄링된 출발 시간 통지를 스케줄링했을 수 있다. 컴퓨팅 디바이스는 취침 콜백 통지가 스케줄링된 직후 발생할 것으로 스케줄링된 운동 리마인더를 스케줄링했을 수 있다. 컨텍스트 데몬(40_102)이, 사용자 활동이 소정 임계 기간(예컨대, 1분, 5분 등) 내에 발생하도록 스케줄링되어 있다고 판정하는 경우, 컨텍스트 데몬(40_102)은 취침 콜백 통지를 요청 클라이언트(40_126)로 전송하는 것을 취소할 수 있거나 또는 그를 지연시킬 수 있다.
일부 구현예들에서, 컴퓨팅 디바이스는 취침 콜백 통지를 클라이언트에게 전송할 수 있다. 예를 들어, 컨텍스트 데몬(40_102)이, 단계(40_2214)에서 사용자가 취침 중임을 확인하고 스케줄링된 어떠한 임박한 사용자 활동도 없음을 확인한 경우, 컨텍스트 데몬(40_102)은 취침 콜백 통지를 요청 클라이언트(40_126)로 전송할 수 있다.
예시적인 시스템 아키텍처
도 1a는 이 섹션에서 기술되는 시스템들 및 프로세스들을 구현하기 위한 시스템 아키텍처를 갖는 예시적인 디바이스(100)를 도시한다.
컨텍스트 모니터링/예측을 위한 예시적인 방법들
일부 실시예들에서, 컨텍스트 모니터링의 방법은, 컴퓨팅 디바이스 상에서 실행되는 컨텍스트 데몬 프로세스에 의해, 하나 이상의 컨텍스트 모니터들에 의해 모니터링된 하나 이상의 컨텍스트 항목들에 대응하는 값들을 수신하는 단계; 컨텍스트 클라이언트 프로세스로부터의 컨텍스트 데몬 프로세스에 의해, 제1 컨텍스트 항목에 대응하는 컨텍스트 정보 요청을 수신하는 단계; 컨텍스트 데몬 프로세스에 의해, 제1 컨텍스트 항목이 컨텍스트 모니터들에 의해 현재 모니터링되지 않는다고 판정하는 단계; 및 컨텍스트 데몬 프로세스에 의해, 제1 컨텍스트 항목에 대응하는 새로운 컨텍스트 모니터를 초기화하는 단계를 포함한다. 일부 실시예들에서, 새로운 컨텍스트 모니터를 초기화하는 단계는 새로운 컨텍스트 모니터에 대응하는 새로운 소프트웨어 패키지를 컨텍스트 데몬 프로세스 내에 동적으로 로딩하는 단계를 포함한다. 일부 실시예들에서, 새로운 컨텍스트 모니터를 초기화하는 단계는 컨텍스트 데몬과는 구분되는 새로운 컨텍스트 모니터 프로세스를 호출하는 단계 - 새로운 컨텍스트 모니터 프로세스는 새로운 컨텍스트 모니터에 대응함 - 를 포함한다. 일부 실시예들에서, 하나 이상의 컨텍스트 항목 값들은 컴퓨팅 디바이스의 하나 이상의 하드웨어 컴포넌트들의 현재 상태를 설명한다. 일부 실시예들에서, 하나 이상의 컨텍스트 항목 값들은 컴퓨팅 디바이스의 하나 이상의 소프트웨어 컴포넌트들의 현재 상태를 설명한다. 일부 실시예들에서, 본 방법은, 새로운 컨텍스트 모니터 프로세스에 의해, 제1 컨텍스트 항목에 대응하는 이벤트 스트림 이력을 생성하는 단계를 포함한다. 일부 실시예들에서, 새로운 컨텍스트 모니터 프로세스는 시작 시간, 지속기간, 및 이벤트 스트림 이력 내의 이벤트를 설명하는 컨텍스트 항목 값을 식별하는 이벤트 스트림 객체들 이력을 생성한다.
일부 실시예들에서, 컨텍스트 통지들의 방법은, 컴퓨팅 디바이스 상에서 실행되는 컨텍스트 데몬 프로세스에 의해, 컴퓨팅 디바이스의 현재 컨텍스트를 설명하는 정보를 생성하는 단계; 컨텍스트 데몬 프로세스에 의해, 통지를 컨텍스트 클라이언트 프로세스로 전송하기 위한 술어를 특정하는 콜백 요청을 컨텍스트 클라이언트 프로세스로부터 수신하는 단계 - 술어는 컨텍스트 클라이언트를 콜백하기 위한 컨텍스트 조건들을 특정함 -; 컨텍스트 데몬 프로세스에 의해, 현재 컨텍스트가 술어에 대응함을 검출하는 단계; 및 검출하는 단계에 응답하여, 컨텍스트 데몬 프로세스에 의해, 콜백 통지를 요청 클라이언트로 전송하는 단계를 포함한다. 일부 실시예들에서, 컨텍스트 조건들은, 현재 컨텍스트에서 검출될 때, 컨텍스트 데몬이 콜백 통지를 컨텍스트 클라이언트로 전송하게 하는 하나 이상의 컨텍스트 항목들의 값들을 특정한다. 일부 실시예들에서, 콜백 요청은 컨텍스트 클라이언트에 대한 식별자 및 술어를 포함하고, 본 방법은, 컨텍스트 데몬에 의해, 콜백 요청에 대한 고유 식별자를 생성하는 단계, 및 컨텍스트 데몬에 의해, 고유 식별자를 요청 클라이언트로 전송하는 단계를 추가로 포함한다. 일부 실시예들에서, 본 방법은, 컨텍스트 데몬에 의해, 고유 식별자와 컨텍스트 클라이언트 식별자와 술어 사이의 연관성을 저장하는 단계를 포함한다. 일부 실시예들에서, 저장하는 단계는 고유 식별자, 컨텍스트 클라이언트 식별자, 및 술어를 컨텍스트 데몬과 연관된 메모리에 저장하는 단계를 포함한다. 일부 실시예들에서, 저장하는 단계는 고유 식별자, 컨텍스트 클라이언트 식별자, 및 술어를 술어 데이터베이스에 저장하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 컨텍스트 데몬에 의해, 컴퓨팅 디바이스의 소프트웨어 및 하드웨어 컴포넌트들의 현재 상태를 설명하는 디바이스 상태 정보를 수신하는 단계; 및 컨텍스트 데몬에 의해, 수신된 디바이스 상태 정보에 기초하여 현재 컨텍스트 정보를 생성하는 단계를 포함한다.
일부 실시예들에서, 컨텍스트 예측의 방법은, 컴퓨팅 디바이스에 의해, 컴퓨팅 디바이스에 의해 모니터링되는 컨텍스트 항목에 대응하는 이벤트 스트림 이력을 획득하는 단계; 컴퓨팅 디바이스에 의해, 이벤트 스트림 이력에서 컨텍스트 항목의 특정 값이 각각의 기간 내에 관찰될 복수의 확률들을 계산하는 단계; 컴퓨팅 디바이스에 의해, 계산된 확률들에 기초하여 확률 곡선을 생성하는 단계; 및 컴퓨팅 디바이스에 의해, 확률 곡선에 기초하여 컨텍스트 항목의 특정 값의 향후 발생을 예측하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 확률 곡선에 기초하여 사용자 활동의 향후 발생을 예측하는 단계를 포함한다. 일부 실시예들에서, 예측된 사용자 활동은 예측된 사용자 취침 기간에 대응한다. 일부 실시예들에서, 본 방법은, 컨텍스트 데몬에 의해, 사용자 활동의 예측된 향후 발생에 앞서서 컨텍스트 데몬이 요청된 시간에 콜백 클라이언트에게 통지할 것을 요청하는 콜백 요청을 요청 클라이언트로부터 수신하는 단계; 컨텍스트 데몬에 의해, 요청된 시간에서의 통지의 전송을 스케줄링하는 단계; 및 컨텍스트 데몬에 의해, 사용자 활동의 예측된 향후 발생에 앞서서 요청된 시간에 통지를 요청 클라이언트로 전송하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 컨텍스트 데몬에 의해, 예측된 사용자 취침 기간 동안에 컨텍스트 데몬이 요청된 시간에 콜백 클라이언트에게 통지할 것을 요청하는 콜백 요청을 요청 클라이언트로부터 수신하는 단계; 컨텍스트 데몬에 의해, 예측된 사용자 취침 기간 동안 요청된 시간에서의 통지의 전송을 스케줄링하는 단계; 요청된 시간이 현재 시간에 대응한다고 판정하는 단계; 컨텍스트 데몬에 의해, 사용자가 현재 시간에 잠들어 있는지 여부를 판정하는 단계; 및 컨텍스트 데몬에 의해, 컨텍스트 데몬이 사용자가 현재 시간에 잠들어 있다고 판정할 때 통지를 요청 클라이언트로 전송하는 단계를 포함한다. 일부 실시예들에서, 사용자가 현재 시간에 잠들어 있는지 여부를 판정하는 단계는, 사용자 시작 동작이 현재 시간에 컴퓨팅 디바이스에 의해 수행되고 있는지 여부를 판정하는 단계를 포함한다. 일부 실시예들에서, 사용자가 현재 시간에 잠들어 있는지 여부를 판정하는 단계는, 현재 시간에 대한 임계 기간 내에 사용자 시인성 동작이 컴퓨팅 디바이스에 의해 수행되도록 스케줄링되어 있는지 여부를 판정하는 단계를 포함한다.
일부 실시예들에서, 효율적인 컨텍스트 모니터링의 방법은, 컴퓨팅 디바이스 상에서 실행되는 컨텍스트 데몬 프로세스에서, 컨텍스트 클라이언트로부터 제1 컨텍스트 콜백 요청을 수신하는 단계 - 컨텍스트 콜백 요청은 컨텍스트 클라이언트와 컨텍스트 데몬 사이의 제1 통신 세션을 시작함 -; 컨텍스트 데몬에 의해, 현재 컨텍스트 정보를 수신하는 단계; 현재 컨텍스트 정보가 컨텍스트 콜백 요청에 대응한다고 판정하는 단계; 판정하는 단계에 응답하여, 컨텍스트 데몬에 의해, 컨텍스트 클라이언트와의 제1 통신 세션이 종료했음을 검출하는 단계; 및 검출하는 단계에 응답하여, 컨텍스트 데몬에 의해, 개시 데몬이 컨텍스트 클라이언트를 재시작할 것을 요청하는 재시작 메시지를 개시 데몬으로 전송하는 단계를 포함한다. 일부 실시예들에서, 콜백 요청은 클라이언트 식별자를 포함하고, 본 방법은, 컨텍스트 데몬에 의해, 메시지에서 클라이언트 식별자를 개시 데몬으로 전송하는 단계를 추가로 포함한다. 일부 실시예들에서, 현재 컨텍스트 정보는 컴퓨팅 디바이스의 현재 상태를 설명하는 하나 이상의 컨텍스트 항목들을 포함한다. 일부 실시예들에서, 컨텍스트 콜백 요청은 컨텍스트 데몬에 의해 수신된 현재 컨텍스트 정보에 기초하여 컨텍스트 클라이언트에게 통지하기 위한 조건들을 특정한다. 일부 실시예들에서, 본 방법은, 컨텍스트 데몬이 제1 컨텍스트 콜백 요청을 수신한 후에 컨텍스트 클라이언트를 종료하는 단계를 포함한다. 일부 실시예들에서, 본 방법은, 재시작 메시지의 수신 시, 개시 데몬에 의해, 컨텍스트 클라이언트를 재시작하는 단계; 클라이언트가 재시작된 후, 컨텍스트 데몬에 의해, 컨텍스트 클라이언트로부터 제2 컨텍스트 콜백 요청을 수신하는 단계; 제2 컨텍스트 콜백 요청을 현재 컨텍스트 정보와 비교하는 단계; 및 비교하는 단계에 응답하여, 현재 컨텍스트 정보가 제2 컨텍스트 콜백 요청에 대응한다고 컨텍스트 클라이언트에게 통지하는 단계를 포함한다. 일부 실시예들에서, 제2 컨텍스트 콜백 요청은 컨텍스트 클라이언트와 컨텍스트 데몬 사이에 제2 통신 세션을 확립하고, 여기서 컨텍스트 데몬은 컨텍스트 클라이언트에 의해 확립된 제2 통신 세션을 사용하여 컨텍스트 클라이언트에게 통지한다.
섹션 11: 인앱 검색의 클라이언트, 서버, 및 웹 양상들
이 섹션 "인앱 검색의 클라이언트, 서버, 및 웹 양상들"에서의 내용은, 일부 실시예들에 따른, 인앱 검색, 클라우드소싱 애플리케이션 이력 검색들, 및 애플리케이션 뷰 인덱싱 및 검색의 클라이언트, 서버, 및 웹 기반 양상들을 설명하며, 본 명세서에서 제공되는 개시내용을 보완하는 정보를 제공한다. 예를 들어, 이 섹션의 부분들은 애플리케이션 상태들을 검색하는 방식을 설명하는데, 이는 본 명세서에서 제공되는 개시내용들, 예컨대 딥 링크들(방법들(600, 800)을 참조하여 하기에서 논의되는 바와 같음)의 생성 및 사용에 관련되는 개시내용들을 보완한다.
인앱 검색의 클라이언트, 서버, 및 웹 양상들에 대한 간략한 개요
복수의 애플리케이션 상태들을 이용하여 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 예시적인 실시예에서, 디바이스는 디바이스 상에서 구동되는 복수의 애플리케이션들로부터 복수의 애플리케이션 상태들을 수신한다. 디바이스는 복수의 애플리케이션 상태들의 인덱스를 추가로 생성한다. 추가로, 디바이스는, 디바이스 상에 저장된 데이터에 대해 검색하라는 질의를 수신한다. 게다가, 디바이스는 인덱스 및 질의를 사용하여 복수의 애플리케이션 상태들을 검색한다. 디바이스는 추가적으로 복수의 애플리케이션 상태들 중 하나의 애플리케이션 상태의 질의에 대한 매칭을 판정하고, 매칭하는 애플리케이션 상태에 대한 매칭을 반환한다.
다른 실시예에서, 디바이스는 디바이스에 대해 복수의 애플리케이션 상태들을 이용하여 질의를 수행한다. 이 실시예에서, 디바이스는 디바이스 상에 저장된 인덱스를 사용하여 질의를 수행하는 것을 수행한다. 디바이스는 질의와 매칭되는 복수의 결과들을 추가로 수신한다. 추가로, 디바이스는 디바이스 상에 설치된 네이티브(native) 애플리케이션에 대응하는 애플리케이션 상태에 대응하는 복수의 결과들의 서브세트를 결정한다. 더욱이, 디바이스는, 복수의 결과들의 서브세트 내의 결과들 각각에 대해, 그 결과 및 결과에 대응하는 네이티브 애플리케이션의 표현을 제시한다.
추가 실시예에서, 디바이스는 멀티-디바이스 검색에서 사용하기 위한 애플리케이션 상태를 선택한다. 이 실시예에서, 디바이스는, 디바이스 상에서, 애플리케이션 상태가 그 디바이스 상에서의 디바이스-레벨 검색에 대한 질의 결과로서 선택되었음을 검출한다. 디바이스는 추가로 애플리케이션 상태를 서버로 송신하는데, 여기서 애플리케이션 상태는 다른 디바이스들로부터의 다른 애플리케이션 상태들과 함께 인덱싱되어야 한다.
또 다른 실시예에서, 디바이스는 제2 디바이스로부터 수신된 애플리케이션 상태를 이용하여 제1 디바이스에 대한 검색을 수행한다. 이 실시예에서, 디바이스는 복수의 디바이스들 상에서 구동되는 복수의 애플리케이션들로부터 복수의 애플리케이션 상태들을 수신한다. 디바이스는 복수의 애플리케이션 상태들의 인덱스를 추가로 생성한다. 디바이스는, 추가로, 디바이스 상에 저장된 데이터에 대해 검색하라는 질의를 수신한다. 추가로, 디바이스는 인덱스 및 검색 질의를 사용하여 복수의 애플리케이션 상태들을 검색하고, 매칭하는 애플리케이션 상태에 대한 매칭을 반환한다.
추가 실시예에서, 디바이스는 검색을 수행한다. 이 실시예에서, 디바이스는 질의를 서버로 전송하고, 질의와 매칭되는 복수의 결과들을 수신한다. 디바이스는, 추가로, 디바이스 상에 설치된 네티이브 애플리케이션에 대응하는 다른 디바이스 상에서 생성된 애플리케이션 상태를 포함하는 복수의 결과들의 서브세트를 결정한다. 추가로, 디바이스는, 복수의 결과들의 서브세트 내의 결과들 각각에 대해, 네이티브 애플리케이션의 표현 및 링크를 제시한다.
다른 실시예에서, 디바이스는 검색 질의 인덱스에서 애플리케이션 상태를 인덱싱한다. 이 실시예에서, 디바이스는 서버에 결합된 다른 디바이스로부터 애플리케이션의 애플리케이션 상태를 수신한다. 디바이스는 추가로 애플리케이션 상태에 대응하는 애플리케이션의 뷰를 생성하는데, 여기서 뷰는 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현이다. 추가로, 디바이스는 검색 질의 인덱스에서 뷰를 인덱싱한다.
추가 실시예에서, 디바이스는 질의 결과와 함께 연관된 뷰를 갖는 애플리케이션 상태를 인출한다. 이 실시예에서, 디바이스는 질의를 서버로 전송한다. 디바이스는 추가로 서버로부터 질의에 대한 결과를 수신하는데, 여기서 결과는 그 결과에 대응하는 애플리케이션의 애플리케이션 상태의 뷰를 포함하고, 뷰는 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현이다. 디바이스는 추가로 뷰의 표시와 함께 결과를 제시한다.
다른 방법들 및 장치들이 또한 기술된다.
인앱 검색의 클라이언트, 서버, 및 웹 양상들에 대한 상세한 설명
복수의 애플리케이션 상태들을 이용하여 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 하기의 설명에서, 많은 구체적인 상세사항이 본 발명의 실시예의 완벽한 설명을 제공하기 위해 기재된다. 그러나, 본 발명의 실시예가 이들 구체적인 상세사항 없이도 실시될 수 있음이 당업자에게 자명할 것이다. 다른 경우에, 주지된 컴포넌트들, 구조, 및 기법은 본 설명의 이해를 어렵게 하지 않도록 상세히 나타내지 않았다.
본 명세서에서의 "하나의 실시예" 또는 "일 실시예"에 대한 언급은 그 실시예와 관련하여 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서 내의 여러 곳에 나오는 문구 "일 실시예에서"는 반드시 모두 동일한 실시예를 언급하는 것은 아니다.
다음의 기술 및 청구범위에서, 용어들 "결합된" 및 "연결된"이 그들의 파생어와 함께 사용될 수 있다. 이들 용어들은 서로에 대한 동의어인 것으로 의도되지 않음이 이해되어야 한다. "결합된"은, 서로 직접적인 물리적 또는 전기적 접촉 상태에 있을 수 있거나 그렇지 않을 수 있는 2개 이상의 요소들이 서로 협력 또는 상호작용하는 것을 나타내는 데 사용된다. "연결된"은 서로 결합된 2개 이상의 요소들 사이의 통신의 설정을 나타내는 데 사용된다.
뒤따르는 도면에 묘사된 프로세스들은 하드웨어(예컨대, 회로부, 전용 로직 등), (범용 컴퓨터 시스템 또는 전용 기계 상에서 구동되는 것과 같은) 소프트웨어, 또는 양측 모두의 조합을 포함하는 프로세싱 로직에 의해 수행된다. 프로세스들이 몇 개의 순차적 동작들의 관점에서 후술되지만, 기술된 동작들 중 일부는 상이한 순서로 수행될 수 있음이 이해되어야 한다. 또한, 일부 동작들은 순차적인 대신에 동시에 수행될 수 있다.
"서버", "클라이언트" 및 "디바이스"라는 용어들은 구체적으로 서버, 클라이언트 및/또는 디바이스의 특정 폼 팩터라기 보다는, 일반적으로 데이터 프로세싱 시스템을 지칭하도록 의도된다.
복수의 애플리케이션 상태들을 이용하여 검색을 수행하는 디바이스의 방법 및 장치가 기술된다. 전술된 바와 같이, 웹 브라우저의 이력을 검색할 수 있다는 것은 유용한데, 그 이유는 사용자들이 웹 브라우저를 사용하는 디지털 루틴을 갖기 때문이다. 이 디지털 루틴은, 추가로, 반복되는 단위로 동일한 애플리케이션들에 액세스하는 것, 및 동일한 유형들의 동작들에 대해 이러한 애플리케이션들을 사용하는 것을 포함할 수 있다. 전술된 바와 같이, 스마트폰 사용자들은, 평균적으로, 비-웹 브라우저 애플리케이션들을 사용하는 시간의 86%를 소비한다. 그러나, 비-웹 브라우저 애플리케이션들의 이력을 검색할 수 있는 것은 어려울 수 있는데, 이는 애플리케이션들의 사용 이력에 대한 데이터가 액세스하기 (가능하더라도) 어렵고 독점적 포맷들이기 때문이다. 따라서, 애플리케이션 이력들은 검색하기 어렵다.
일 실시예에서, 디바이스는 실행 애플리케이션들을 생성하고, 이들의 애플리케이션 상태들을 저장한다. 디바이스는, 추가로, 이들 애플리케이션 상태들을 인덱싱하여, 디바이스 상에서 구동되는 로컬 검색 서비스가 인덱싱된 애플리케이션 상태들을 검색하여 질의에 대한 결과들을 서빙할 수 있게 한다. 이 실시예에서, 애플리케이션 상태는 애플리케이션의 적시의 스냅샷이다. 애플리케이션 상태는 웹 브라우저 이력과 유사하다. 일 실시예에서, 애플리케이션 상태는 비-웹 브라우저 애플리케이션에 대한 것이다. 일 실시예에서, 애플리케이션에 대한 애플리케이션 상태는 제목, 뷰, 이러한 뷰에 디스플레이되는 데이터, 연관된 메타데이터, 및/또는 상태에 대한 다른 상태 정보를 포함할 수 있다. 예를 들어 그리고 일 실시예에서, 애플리케이션은 지리적 영역에 대한 상이한 사업체 및 서비스들에 대한 리뷰들을 디스플레이하는 리뷰 유형 애플리케이션일 수 있다. 이 예에서, 각각의 애플리케이션 상태는 사업체 또는 서비스에 대한 리뷰들 및 연관 정보의 세트(예컨대, 이름, 주소, 연락처 정보, 영업 시간, 사업체 또는 서비스에 대한 설명, 서비스 또는 사업체의 방문자들 또는 사용자들에 의해 제출된 리뷰들의 세트, 및/또는 그 사업체 또는 서비스와 연관된 임의의 다른 유형의 정보)일 수 있다. 각각의 애플리케이션 상태는 하나의 사용자 인터페이스 페이지 상에 또는 다수의 사용자 페이지들에 걸쳐서 디스플레이될 수 있는데, 여기서 각각의 페이지는 디스플레이를 위해 체계화된 콘텐츠이다(일부 실시예들에서, 각각의 페이지는 특정 시점에서의 애플리케이션의 윈도우이다). 일 실시예에서, 실행 애플리케이션들 각각은 하나 이상의 애플리케이션 상태들을 익스포트하는데, 여기서 디바이스는 애플리케이션 상태 인덱스에서 애플리케이션 상태들을 인덱싱한다.
애플리케이션 상태들을 인덱싱함으로써, 사용자는 애플리케이션들의 이력을 검색할 수 있다. 이는 사용자가 이전 애플리케이션 상태들을 검색하여 발견하게 한다. 발견된 애플리케이션 상태를 이용하여, 사용은 이 애플리케이션 상태로 대응하는 애플리케이션을 개시할 수 있는데, 이는 애플리케이션이 애플리케이션 상태를 익스포트했을 때 애플리케이션이 실행하고 있던 지점으로 애플리케이션을 불러온다. 사용자는 인덱싱된 애플리케이션 상태들을 이용하여, 다수의 상이한 애플리케이션들에 대한 공통 메커니즘을 통해 애플리케이션을 이전에 사용된 상태로 되돌릴 수 있다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태는 트랜짓(transit) 시스템의 특정 루트에 대한 트랜짓 애플리케이션의 페이지의 것일 수 있다. 이 예에서, 사용자는 트랜짓 애플리케이션에서 로컬 버스 루트 7과 같은 특정 루트를 내비게이팅할 수 있다. 그 특정 루트를 내비게이팅함으로써, 트랜짓 애플리케이션은 그 로컬 버스 루트 페이지에 대한 애플리케이션 상태를 애플리케이션 상태 인덱스로 익스포트할 것이다. 인덱싱된 이 애플리케이션 상태를 이용하여, 사용자는 질의를 통해 그 애플리케이션 상태를 인출할 수 있다. 예를 들어 그리고 일 실시예에서, 사용자는 질의에 "bus route 7"을 입력할 수 있고, 로컬 버스 루트 7에 대한 애플리케이션 상태가 질의 결과로서 나타날 것이다. 이 애플리케이션 상태의 선택 시, 트랜짓 애플리케이션은 로컬 버스 루트 7에 대한 애플리케이션 상태와 함께 로딩될 것이고, 이 트랜짓 애플리케이션에서의 로컬 버스 루트 7에 대한 페이지가 사용자를 위해 디스플레이될 것이다. 따라서, 이 예에서, 트랜짓 애플리케이션은 이전에 실행되고 있던 것과 동일한 상태로 취해진다.
다른 실시예에서, 디바이스는 애플리케이션 상태들을, 이들 애플리케이션 상태들을 생성하지 않은 디바이스들로부터의 질의들을 지원하는 데 사용될 수 있는 원격 애플리케이션 상태 인덱서로 익스포트할 수 있다. 이 실시예에서, 디바이스는 사용자가 관여했던 애플리케이션 상태들을 익스포트하는데, 여기서 관여된 애플리케이션 상태는, 디바이스 상에서 사용자에 의한 질의에 응답하여 질의 결과로서 반환되었고 사용자가 그 애플리케이션 상태를 선택했던 애플리케이션 상태이다. 추가로, 디바이스는, 애플리케이션 상태를 익스포트하기 전에 사적인 정보를 제거함으로써 애플리케이션 상태를 제거한다. 원격 애플리케이션 상태 인덱서는 이 애플리케이션 상태를 수신하고, 원격 애플리케이션 상태 인덱서가 이 애플리케이션 상태를 필요한 횟수 수신한 경우, 애플리케이션 상태를 인덱싱한다. 이 실시예에서, 필요한 횟수 이후에 애플리케이션 상태를 인덱싱함으로써, 이 애플리케이션 상태는 크라우드 소싱되었고, 그러한 많은 상이한 사용자들 및/또는 디바이스들은 로컬 검색 시에 이 애플리케이션 상태에 관여했다. 일 실시예에서, 애플리케이션 상태에 대해 소정의 관여 횟수를 필요로 하는 것은 이 애플리케이션 상태가 다른 사용자들에게 유용할 가능성을 증가시킨다. 일단 인덱싱되면, 원격 검색 서비스는 원격 애플리케이션 상태 인덱스를 검색하여, 질의와 매칭하는 애플리케이션 상태들이 있는지 여부를 판정할 수 있다. 각각의 매칭에 대해, 원격 검색 서비스는 매칭 애플리케이션 상태(들)를 클라이언트로 반환한다. 클라이언트 상에서, 사용자는 애플리케이션 상태를 선택할 수 있는데, 여기서 대응하는 애플리케이션은 시작되고, 애플리케이션이 애플리케이션 상태를 익스포트했을 때 애플리케이션이 실행되고 있던 지점으로 애플리케이션을 불러온다.
추가 실시예에서, 디바이스는 상이한 애플리케이션 상태들에 대한 애플리케이션 상태 뷰들을 생성한다. 이 실시예에서, 애플리케이션 상태 뷰는 그 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현이다. 예를 들어 그리고 일 실시예에서, 사업체들 및 서비스들에 대한 수천 또는 수백만의 리뷰들에 대한 콘텐츠에 액세스하는 리뷰 유형 애플리케이션은 수천 또는 수백만의 리뷰들 각각에 대한 뷰를 가질 수 있다. 이들 뷰들은 애플리케이션 상태를 프리뷰하는 데, 그리고 또한 일반적으로, 애플리케이션을 프리뷰하는 데 이용될 수 있다. 일 실시예에서, 이들 애플리케이션 상태 뷰들은 질의에 대한 결과들의 세트에서 반환되는 애플리케이션 상태를 프리뷰하는 데 이용될 수 있거나, 또는 일반적으로, 애플리케이션을 프리뷰하는 데 이용될 수 있다. 일 실시예에서, 하나의 애플리케이션에 대해 다수의 애플리케이션 상태 뷰들을 수집하는 것은 애플리케이션 스토어에서 그 애플리케이션을 프리뷰하는 데 이용될 수 있다. 예를 들어 그리고 일 실시예에서, 리뷰 유형 애플리케이션은 이 애플리케이션에 이용가능한 수십개의 애플리케이션 상태 뷰들을 가질 수 있다.
도 41a은 로컬 디바이스 검색 인덱스에서 사용하기 위한 애플리케이션 상태들을 인덱싱하는 시스템의 일 실시예의 블록도이다. 도 41a에서, 디바이스(41_100)는 애플리케이션 상태 인덱서(41_104)에 결합되는 다수의 애플리케이션들(41_102)을 포함한다. 일 실시예에서, 디바이스(41_100)는 다른 디바이스(예컨대, 개인 컴퓨터, 랩톱, 서버, 모바일 디바이스(예컨대, 전화기, 스마트폰, 스마트워치, 개인 게이밍 디바이스 등), 다른 네트워크 요소 등)와 네트워크 데이터를 통신할 수 있는 임의의 유형의 디바이스이다. 일 실시예에서, 디바이스(41_100)는 가상 기계일 수 있거나, 또는 하나 이상의 가상 기계들을 호스팅하는 디바이스일 수 있다. 일 실시예에서, 디바이스(41_100)는 추가로 애플리케이션 상태 검색 인덱스(41_108)를 포함한다. 일 실시예에서, 애플리케이션들(41_102) 각각은 그 애플리케이션이 구동되고 있는 동안에 일련의 상태들을 통해서 진행하는 실행 프로그램이다. 예를 들어 그리고 일 실시예에서, 애플리케이션(41_102)은 워드 프로세싱 애플리케이션, 스프레드시트, 연락처, 메일, 전화, 웹 브라우저, 미디어 재생기, 리뷰 애플리케이션, 분류된 광고 애플리케이션, 소셜 네트워킹, 생산성(productivity), 유틸리티, 게임, 부동산(real estate), 사진, 비디오, e-커머스, 점포, 쿠폰, 운영 체제, 및/또는 디바이스 상에서 구동될 수 있는 임의의 다른 유형의 애플리케이션일 수 있다.
전술된 바와 같이, 애플리케이션들(41_102) 각각은 그 애플리케이션이 실행되고 있는 동안에 일련의 상태들을 통해 진행한다. 일 실시예에서, 이들 애플리케이션 상태들 중 하나는 애플리케이션의 적시의 스냅샷이다. 일 실시예에서, 애플리케이션(41_102)에 대한 애플리케이션 상태는 제목, 사용자 인터페이스 상태, 이 사용자 인터페이스에서 디스플레이되는 데이터, 연관된 메타데이터, 및/또는 상태에 대한 다른 상태 정보를 포함할 수 있다. 추가 실시예에서, 애플리케이션 상태는 상태가 검색 결과들에서 어떻게 렌더링해야 하는지를 설명하는 정보를 포함한다. 예를 들어 그리고 일 실시예에서, 애플리케이션(41_102)은 상이한 사업체 및 지리적 영역에 대한 서비스들에 대한 리뷰들을 디스플레이하는 리뷰 유형 애플리케이션일 수 있다. 이 예에서, 각각의 애플리케이션 상태는 사업체 또는 서비스에 대한 리뷰들 및 연관 정보의 세트(예컨대, 이름, 주소, 연락처 정보, 영업 시간, 사업체 또는 서비스에 대한 설명, 서비스 또는 사업체의 방문자들 또는 사용자들에 의해 제출된 리뷰들의 세트, 및/또는 그 사업체 또는 서비스와 연관된 임의의 다른 유형의 정보)일 수 있다. 일 실시예에서, 애플리케이션 상태 제목은, 리뷰 유형 애플리케이션의 경우에, 그 애플리케이션 상태에 대해 주어진 제목, 예컨대 그 사업체 또는 서비스의 이름이다. 애플리케이션 상태에 대한 사용자 인터페이스 상태는 그 애플리케이션 상태에 대응하는 애플리케이션(41_102)의 사용자 인터페이스의 표현일 수 있다. 이 실시예에서, 사용자 인터페이스 상태는 사용자 인터페이스의 표현, 그 사용자 인터페이스들이 어디로 스크롤하는지 또는 사용자 인터페이스의 어느 컴포넌트가 활성인지, 애플리케이션이 어떤 모드에 있을 수 있는지(예컨대, 애플리케이션(41_102)은 사용자에게 정보를 제시하는 데 이용되는 상이한 모드들을 가질 수 있음)를 포함할 수 있다. 추가 실시예에서, 애플리케이션은 상태와 호환가능한 애플리케이션의 버전 번호들 및 URL 또는 애플리케이션 식별자에 제목을 합한 것을 포함하기에 충분히 작을 수 있다.
일 실시예에서, 각각의 애플리케이션 상태는 제목, 검색가능한 데이터 및/또는 메타데이터, 및 애플리케이션 특정 오패크(opaque) 데이터를 포함한다. 이 실시예에서, 검색가능한 데이터 및/또는 메타데이터는 검색 인덱싱 서비스 및/또는 질의 검색 서비스에 의해 액세스가능한 데이터로서 애플리케이션(41_102)에 의해 지정된 데이터이고, 여기서 이 검색가능한 데이터 및/또는 메타데이터는 애플리케이션 상태를 인덱싱하는 데 이용될 수 있고 또한 질의의 결과로서 애플리케이션 상태를 반환하는 데 이용될 수 있다. 예를 들어 그리고 일 실시예에서, 검색가능한 데이터 및/또는 메타데이터는 애플리케이션 상태 내의 콘텐츠(예컨대, 애플리케이션 상태 제목, 사용자 인터페이스 상태에서 디스플레이되는 콘텐츠, 미디어 데이터, 위치 데이터, 시간 데이터, 또는 검색 인덱스에 이용될 수 있는 임의의 다른 유형의 데이터 또는 메타데이터)일 수 있다. 일 실시예에서, 애플리케이션 특정 오패크 데이터는 애플리케이션을 그의 이전 상태로 반환하는 데 이용되는 애플리케이션 특정 데이터이고, 검색가능한 데이터일 수 있거나 또는 아닐 수도 있다. 이 실시예에서, 대응하는 애플리케이션(41_102)에 의해 애플리케이션 상태를 로딩하는 것은 그 애플리케이션을 애플리케이션 상태로 되돌린다. 예를 들어 그리고 일 실시예에서, 애플리케이션 특정 오패크 데이터는 사용자 인터페이스 상태, 사용자 인터페이스 모드, 및/또는 리소스에 대한 참조를 포함할 수 있다. 사용자 인터페이스 모드는 사용자 인터페이스가 현재 사용하고 있는 모드의 유형일 수 있다. 예를 들어 그리고 일 실시예에서, 워드 프로세싱 프로그램은 드래프트 레이아웃 뷰 또는 프린트 레이아웃 뷰일 수 있고, 이미지 편집 프로그램은 라이브러리 모드, 이미지 편집 모드, 또는 프린트 모드에 있을 수 있다. 일 실시예에서, 참조된 리소스는 보이거나 또는 편집되고 있는 파일, 디바이스 또는 다른 디바이스, 예컨대 네트워크에 걸친 서버 상에 있을 수 있는 리소스에 대한 URL일 수 있다. 일 실시예에서, 애플리케이션 상태의 일부인 데이터는 (키, 값) 쌍들을 갖는 사전(dictionary)에 있을 수 있다.
일 실시예에서, 애플리케이션들(41_102) 중 하나 이상은 각각이 하나 이상의 애플리케이션 상태들을 애플리케이션 상태 인덱서(41_104)로 익스포트한다. 이 실시예에서, 애플리케이션들(41_102)은 각각이 고정 또는 가변 스케줄 상에서 애플리케이션 상태들을 익스포트할 수 있다. 예를 들어 그리고 일 실시예에서, 애플리케이션들(41_102)은 고정 시간 단위로 애플리케이션 상태들을 익스포트할 수 있거나, 사용자와의 하나 이상의 상호작용들 이후에, 각각의 새로운 사용자 인터페이스 상태에 대한 애플리케이션 상태를 익스포트할 수 있거나, 또는 일부 다른 메트릭을 익스포트할 수 있다. 다른 예로서 그리고 다른 실시예에서, 리뷰 애플리케이션은 새로운 리뷰 또는 리뷰 검색으로 내비게이팅할 수 있다. 이 예에서, 새로운 리뷰 또는 리뷰 검색으로 내비게이팅함으로써, 새로운 뷰가 생성되고, 새로운 애플리케이션 상태가 생성되어 애플리케이션 상태 인덱서(41_104)로 익스포트된다. 애플리케이션 상태 인덱서는 애플리케이션 상태들을 수신하고, 애플리케이션 상태를 애플리케이션 인덱스(41_108)에 추가한다. 애플리케이션 상태를 인덱스에 추가함으로써, 새로운 애플리케이션 상태는 로컬 검색 서비스에 의해 수신된 질의들과 매칭하기 위해 로컬 검색 서비스에 대해 이용가능하다. 다른 실시예에서, 애플리케이션 상태는 원격 검색 애플리케이션 상태 인덱스(41_108)로 익스포트될 수 있는데, 이는 하기의 도 41g 내지 도 41l에서 설명된다.
도 41b는 온-디바이스 애플리케이션 상태 검색 인덱스를 사용하여 애플리케이션 상태들을 검색하는 시스템의 일 실시예의 블록도이다. 도 41b에서, 디바이스(41_200)는 로컬 검색 서비스(41_208)에 결합되는 애플리케이션(41_204)을 포함한다. 로컬 검색 서비스(41_208)는 애플리케이션 상태 검색 인덱스(41_212) 및 로컬 검색 인덱스(41_214)에 추가로 결합된다. 일 실시예에서, 디바이스(41_200)는 도 41a에서와 같은 디바이스이다. 일 실시예에서, 애플리케이션(41_204)은 검색 입력 필드(41_206)를 포함한다. 이 실시예에서, 질의를 사용하여 검색을 수행하는 검색 입력 필드는 로컬 검색 서비스에 의해 사용될 수 있는 질의를 입력하는 데 사용된다. 질의가 검색 입력(41_206)에 입력되는 경우, 애플리케이션(41_204)은 이 질의를 로컬 검색 서비스(41_208)로 전송한다. 로컬 검색 서비스(41_208)는 질의를 수신하며, 질의에 대한 결과들의 세트를 결정하기 위해 로컬 검색 인덱스(41_214) 및/또는 애플리케이션 상태 검색 인덱스(41_212)를 검색함으로써 순위가 매겨진 결과들을 생성한다. 추가로, 로컬 검색 서비스(41_208)는 결과들의 순위를 매겨서, 이들을 애플리케이션(41_204)으로 다시 전송한다.
이 실시예에서, 검색은 디바이스(41_200) 상에 저장된 객체들의 검색을 포함할 수 있다. 예를 들어 그리고 일 실시예에서, 객체들은 문서, 그림, 음악, 애플리케이션, 이메일, 캘린더 엔트리, 및/또는 로컬 검색 인덱스에 저장된 다른 객체일 수 있다. 일 실시예에서, 검색은 검색 모듈에 의해 유지되는 인덱스에 기초한다. 이 실시예에서, 인덱스는 디바이스의 객체들에 저장되는 메타데이터의 인덱스이다. 대안의 실시예에서, 로컬 검색 서비스(41_208)는 또한 질의를 애플리케이션 상태 검색 인덱스(41_212)에 적용할 수 있다. 이 실시예에서, 로컬 검색 서비스(41_208)는 애플리케이션 상태 검색 인덱스(41_212)에 질의를 적용하여, 질의와 매칭하는 임의의 애플리케이션 상태들이 있는지 여부를 판정한다. 예를 들어 그리고 일 실시예에서, 로컬 검색 서비스(41_208)는 인덱스(41_212)에 저장된 애플리케이션 상태들 각각에 대한 검색가능한 데이터에 질의를 적용한다. 이 예에서, 인덱스(41_212)에서 하나 이상의 애플리케이션 상태들에 대한 질의와의 매칭이 있는 경우, 로컬 검색 서비스(41_208)는 이들 하나 이상의 애플리케이션 상태들을 포함하는 결과들의 세트를 애플리케이션(41_204)으로 반환한다. 애플리케이션(41_204)은 순위가 매겨진 결과들을 디스플레이한다. 디스플레이에 대한 순위가 매겨진 결과들 중 하나의 결과가 애플리케이션 상태인 경우, 애플리케이션은 애플리케이션의 아이콘, 애플리케이션 상태 제목, 및 애플리케이션 상태 개요를 디스플레이할 수 있다. 일 실시예에서, 디스플레이되는 애플리케이션 상태의 선택 시, 애플리케이션 상태에 대응하는 애플리케이션은 그 애플리케이션 상태와 함께 로딩된다 이 실시예에서, 애플리케이션 상태와 함께 애플리케이션을 로딩함으로써, 애플리케이션은 애플리케이션 상태에 대응하는 실행 상태로 로딩된다. 예를 들어, 일 실시예에서, 애플리케이션 상태가 쿠폰 애플리케이션에 대한 특정 쿠폰(예컨대, 50% weekend rental cars!")인 경우, 쿠폰 애플리케이션은 이 애플리케이션 상태와 함께 로딩되고, 애플리케이션 상태는 마치 사용자가 특정 쿠폰으로 내비게이팅했던 것처럼 그 쿠폰을 디스플레이한다.
도 41c은 다른 질의 결과들 중에서 애플리케이션 상태 질의 결과들을 디스플레이하는 사용자 인터페이스들의 실시예들의 블록도이다. 도 41c에는, 디바이스 상에 애플리케이션 상태를 디스플레이하는 3개의 상이한 가능한 사용자 인터페이스들(41_300A 내지 41_300C)이 도시되어 있다. 일 실시예에서, 사용자 인터페이스(41_300A)는 검색 입력(41_302), 애플리케이션 상태 디스플레이(41_314A), 다른 액션들(41_310A), 및 온-스크린 키보드(41_312A)를 포함한다. 일 실시예에서, 검색 입력(41_302A)은 디바이스의 사용자에 의해 질의를 입력하는 데 사용된다. 이 실시예에서, 부분 또는 전체 질의는 질의 결과들의 하나 이상의 세트들을 결정하기 위해 입력되어 로컬 검색 서비스로 전송될 수 있다. 일 실시예에서, 질의에 대한 결과들은 검색의 하나 이상의 문자들이 입력됨에 따라 반환된다. 추가로, 애플리케이션 상태 디스플레이(41_314A)는 애플리케이션 아이콘(41_304A), 애플리케이션 상태 제목(41_306A), 및 애플리케이션 상태 개요(41_308A)를 포함한다. 일 실시예에서, 애플리케이션 아이콘(41_304A)은 애플리케이션 상태에 대응하는 애플리케이션을 표현하는 아이콘이다. 이 실시예에서, 애플리케이션 아이콘(41_304A)은 질의로부터 반환되거나 또는 애플리케이션 상태에 저장된 정보에 기초하여 인출된 애플리케이션 상태의 일부일 수 있다. 일 실시예에서, 애플리케이션 상태 제목(41_306A)은 애플리케이션 상태에 저장된 애플리케이션 상태에 대한 제목이다. 더욱이, 애플리케이션 상태 개요(41_308A)는 애플리케이션 상태의 개요이다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태 개요(41_308A)는 애플리케이션 상태의 설명, 예컨대 애플리케이션 상태의 콘텐츠에 대한 설명을 포함한다. 이 예에서, 애플리케이션 상태 개요(41_308A)는 콘텐츠의 사용자에게 애플리케이션 상태와 연관된 표시를 제공할 수 있다.
일 실시예에서, 사용자 인터페이스(41_300A)는 애플리케이션 상태(41_314A)를 포함하는 질의 결과를 디스플레이하는 것 외에도 다른 액션들(41_310A)을 포함할 수 있다. 예를 들어, 일 실시예에서, 다른 액션들(41_310A)은 질의로 웹을 검색하기 위한 또는 질의로 온라인 백과사전을 검색하기 위한 링크를 포함할 수 있다. 사용자 인터페이스(41_300A)는 또한 검색 질의를 입력하기 위해 사용자에 의해 사용되는 온-스크린 키보드(41_312A)를 포함할 수 있다. 대안으로, 질의는 다른 수단을 통해(예컨대, 디바이스에 결합된 마이크로폰을 통해), 디바이스에 결합된 다른 디바이스, 예컨대 휴대용 디바이스에 결합된 스마트워치에 의해 입력될 수 있다. 일 실시예에서, 아이콘(41_304A)은 앱에 의해 제공된 앱 상태에 특정적인 이미지 썸네일일 수 있다. 추가로, 아이콘(41_304A)은 또한 비디오 또는 비디오 프리뷰일 수 있다. 추가 실시예에서, 애플리케이션 상태 개요들은 "액션" 버튼들, 예컨대 전화 통화 아이콘들, 재생, 길안내, 구매를 포함할 수 있다.
일 실시예에서, 질의 결과로서 디스플레이될 수 있는 많은 상이한 유형들의 애플리케이션 상태들이 있다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태는 트랜짓 시스템의 특정 루트에 대한 트랜짓 애플리케이션의 뷰의 것일 수 있다. 이 예에서, 사용자는 트랜짓 애플리케이션에서 로컬 버스 루트 7과 같은 특정 루트를 내비게이팅할 수 있다. 그 특정 루트를 내비게이팅함으로써, 트랜짓 애플리케이션은 그 로컬 버스 루트 뷰에 대한 애플리케이션 상태를 애플리케이션 상태 인덱스로 익스포트할 것이다. 인덱싱된 이 애플리케이션 상태로, 사용자는 질의를 통해 그 애플리케이션 상태를 인출할 수 있다. 예를 들어 그리고 일 실시예에서, 사용자는 질의에 "bus route 7"을 입력할 수 있고, 로컬 버스 루트 7에 대한 애플리케이션 상태는 질의 결과로서 나타날 것이다. 이 애플리케이션 상태의 선택 시, 트랜짓 애플리케이션은 로컬 버스 루트 7에 대한 애플리케이션 상태와 함께 로딩될 것이고, 이 트랜짓 애플리케이션에서의 로컬 버스 루트 7에 대한 사용자 인터페이스는 사용자를 위해 디스플레이될 것이다. 따라서, 이 예에서, 트랜짓 애플리케이션은 이전에 보였던 것과 동일한 상태로 취해진다.
다른 예로서 그리고 다른 실시예에서, 사용자는 음식 배달 애플리케이션을 사용할 수 있고, 사용자는 단지 그들의 이전 주문들 중 하나를 재주문하기를 원한다. 이 예에서, 사용자는 지역 레스토랑에 대해 특정적인 애플리케이션을 사용하여 그 지역 레스토랑으로부터 포 스프(pho soup)를 주문할 수 있다. 이 주문에서, 지역 레스토랑 애플리케이션은 포 스프의 주문에 대응하는 애플리케이션 상태를 익스포트할 것이다. 이 애플리케이션 상태는 인덱싱될 것이고, 로컬 검색 서비스에 의해 액세스가능할 것이다. 사용자는 나중에 질의 "pho soup", "Vietnamese restaurant", 또는 지역 레스토랑의 이름을 입력할 수 있고, 이 주문에 대응하는 애플리케이션 상태는 결과들 중 하나일 수 있다. 이 애플리케이션 상태는 또한 이 결과에 대한 최고 히트일 수 있다. 이 애플리케이션 상태의 선택 시, 지역 레스토랑 애플리케이션이 개시될 것이고, 사용자가 스프에 대한 주문을 완료할 수 있도록 포 스프의 이전 주문을 디스플레이할 것이다.
추가 예 및 실시예에서, 사용자는 그의 다음 황무지 여행을 계획하기 위해 그림판(picture board)을 유지할 수 있다. 이 예에서, 사용자는 그림판 애플리케이션을 사용하여 이러한 다음 여행에 관한 코멘트들 및 사진들을 링크시킨다. 사용자는 디바이스의 클립보드로부터의 링크들을 추가하기 위해 그림판 애플리케이션을 사용하여 이 특정 그림판으로 되돌아갈 것이다. 그림판 애플리케이션은 황무지 여행에 대해 그림판의 이 애플리케이션 상태를 익스포트할 것인데, 여기서 이 애플리케이션 상태는 로컬 검색 서비스에 의해 이용가능할 것이다. 여행 장소의 이름과 같은 이 애플리케이션 상태를 검색함으로써, 사용자는 그림판 애플리케이션을 개시하고 이 특정 그림판 뷰로 내비게이팅하는 것 대신에 질의를 통해 그림판 애플리케이션 내의 그 황무지 여행 그림판으로 신속하게 이동할 수 있다.
일 실시예에서, 애플리케이션 상태를 저장하는 것은 내비게이팅하기 어려울 수 있는 유틸리티의 특정 뷰들에 신속하게 액세스하는 데 이용될 수 있다. 예를 들어 그리고 일 실시예에서, 디바이스 설정 애플리케이션은 많은 레벨 심도들이 있는 다수의 옵션들을 가질 수 있다. 이 예에서, 사용자는 설정 애플리케이션 내의 배터리 사용량 페이지로 이동하여 어느 애플리케이션이 배터리 중 가장 많은 부분을 소비하고 있는지 알 수 있다. 배터리 사용량 페이지는 4개 이상의 레벨 심도들일 수 있고 액세스하기 어려울 수 있다. 설정 애플리케이션의 더 양호한 사용량 페이지에 대한 애플리케이션 상태를 익스포트함으로써, 사용자는 질의 "battery usage", "battery", "batter", 또는 설정 애플리케이션의 배터리 사용량 페이지의 애플리케이션 상태를 얻도록 배터리 사용량이라는 단어의 일부 다른 프리픽스를 입력하여 질의에 대한 결과로서 나타나게 하는 것이 가능할 수 있다. 이는 설정 애플리케이션 내의 페이지로 내비게이팅하는 것을 가능한 어렵게 하는 퀵 액세스를 제공할 것이다.
다른 실시예에서, 질의에 대한 애플리케이션 상태 결과는 다른 도메인들로부터의 다른 질의 결과들, 예컨대 상기의 도 41b에서 설명되는 바와 같은 로컬 검색 인덱스와 함께 나타내질 수 있다. 도 41c에서, 사용자 인터페이스(41_300B)는 다른 질의 결과들(41_310B)과 함께 애플리케이션 상태(41_314B)를 디스플레이한다. 이 사용자 인터페이스(41_300B)에서, 검색 입력(41_302B)은 애플리케이션 상태(41_314B), 다른 질의 결과들(41_310B), 및 온-스크린 키보드(41_312B)와 함께 디스플레이된다. 일 실시예에서, 검색 입력(41_302B) 및 온-스크린 키보드(41_312C)는 사용자 인터페이스(41_300A)에 대해 전술된 것과 동일하다. 추가로, 애플리케이션 상태(41_314B)는 애플리케이션 아이콘(41_304B), 애플리케이션 상태 제목(41_306B), 및 애플리케이션 상태 개요(41_308B)를 포함하는데, 이들은 사용자 인터페이스(41_300A)에 대해 전술된 것과 동일한 애플리케이션 아이콘, 애플리케이션 상태 제목, 및 애플리케이션 상태 개요와 동일하다. 더욱이, 사용자 인터페이스(41_300B)는 다른 질의 결과들(41_310B)을 포함하는데, 이는 다른 도메인들 또는 애플리케이션 상태들로부터의 다른 질의 결과들일 수 있다. 예를 들어 그리고 일 실시예에서, 질의 "battery"에 대한 다른 질의 결과들(41_310B)은 단어 "battery"와 매칭하는 로컬 검색 인덱스 내의 객체들 인덱스, 단어 "battery"와 매칭하는 다른 애플리케이션 상태들, 또는 단어 "battery"와 매칭하는 로컬 또는 원격 검색 인덱스(예컨대, 웹 검색 인덱스)와 매칭하는 다른 질의 결과들을 포함할 수 있다.
전술된 바와 같이, 애플리케이션 상태는 또한 디바이스 상에서 구동되는 유틸리티 애플리케이션에 대해 저장될 수 있다. 예를 들어, 일 실시예에서, 디바이스를 구성하는 데 사용되는, 디바이스에 대한 이들 설정 애플리케이션은 또한 애플리케이션 상태들을 익스포트할 수 있다. 사용자 인터페이스(41_300C)는 설정 애플리케이션에 대한 애플리케이션 상태를 포함하는 질의 결과의 일례이다. 도 41c에서, 사용자 인터페이스(41_300C), 검색 입력(41_302C)은 애플리케이션 상태(41_314B), 다른 액션들(41_310C), 및 온-스크린 키보드(41_312C)와 함께 디스플레이된다. 일 실시예에서, 검색 입력(41_302C) 및 온-스크린 키보드(41_312C)는 사용자 인터페이스(41_300A)에 대해 전술된 것과 동일하다. 게다가, 애플리케이션 상태(41_314C)는 애플리케이션 아이콘(41_304B), 설정 애플리케이션의 컴포넌트에 대한 애플리케이션 상태 제목(41_306C)(예를 들어, 배터리 사용량), 및 설정 애플리케이션의 컴포넌트에 대한 애플리케이션 상태 개요(41_308C)(배터리 사용량)를 포함한다.
전술된 바와 같이, 애플리케이션 상태들이 로컬 검색 서비스에 의해 액세스가능하게 하기 위해, 애플리케이션 상태들은 로컬 검색 서비스에 의해 액세스가능한 인덱스에 추가된다. 도 4a는 디바이스 상의 다수의 상이한 애플리케이션들로부터 수신되는 애플리케이션 상태들을 인덱싱하기 위한 프로세스(41_400)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_400)는 애플리케이션 상태 인덱서, 예컨대 도 41a에서 전술된 바와 같은 애플리케이션 상태 인덱서(41_104)에 의해 수행된다. 도 4a에서, 프로세스(41_400)는 블록(41_402)에서 디바이스 상의 다수의 애플리케이션들로부터 다수의 애플리케이션 상태들을 수신하는 것으로 시작한다. 예를 들어 그리고 일 실시예에서, 프로세스(41_400)는 워드 프로세싱 애플리케이션, 스프레드시트, 연락처, 메일, 전화, 웹 브라우저, 미디어 재생기, 리뷰 애플리케이션, 분류된 광고 애플리케이션, 소셜 네트워킹, 생산성, 유틸리티, 게임, 부동산, 사진, 비디오, e-커머스, 점포, 쿠폰, 운영 체제, 및/또는 디바이스 상에서 구동될 수 있는 임의의 다른 유형의 애플리케이션과 같은 다양한 애플리케이션들로부터 애플리케이션 상태들을 수신할 수 있다. 일 실시예에서, 애플리케이션들은 애플리케이션 상태를 프로세스(41_400)로 동시에, 연속으로, 그리고/또는 이들의 조합으로 전송할 수 있다. 블록(41_404)에서, 프로세스(41_400)가 수신하는 각각의 애플리케이션 상태에 대해, 프로세스(41_400)는 그들 애플리케이션 상태들을 애플리케이션 상태 인덱스에 추가한다. 일 실시예에서, 프로세스(41_400)는 애플리케이션 상태 식별자, 인덱싱가능한 텍스트, 애플리케이션 식별자, 및/또는 삽입 시간을 검색 인덱스 데이터 구조(예컨대, 역순 인덱스 및 완료 시도들)에 추가함으로써 애플리케이션 상태를 애플리케이션 상태 인덱스에 추가한다.
다수의 애플리케이션 상태들을 애플리케이션 상태 인덱스에 추가함으로써, 이들 인덱스 애플리케이션 상태들은 로컬 검색 서비스에 의한 질의 검색에 이용가능하다. 도 4b는 애플리케이션 상태 인덱스를 사용하여 질의에 대한 질의 결과들을 결정하기 위한 프로세스(450)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(450)는 애플리케이션 상태 인덱스를 사용하여 질의에 대한 질의 결과들을 결정하도록 로컬 검색 서비스, 예컨대 상기의 도 41b에서 설명된 바와 같은 로컬 검색 서비스(41_208)에 의해 수행된다. 도 4b에서, 프로세스(450)는 블록(452)에서 질의를 수신하는 것으로 시작한다. 일 실시예에서, 질의는, 사용자에 의해 애플리케이션에 입력되고 프로세스(450)로 전송되는 검색 문자열이다. 일 실시예에서, 입력은 텍스트, 구어, 자동 생성, 및/또는 질의 프리픽스를 입력하는 일부 다른 방식에 의해 입력될 수 있다. 예를 들어 그리고 일 실시예에서, 사용자는 웹 브라우저 또는 파일 브라우저에 질의를 입력할 수 있다. 블록(454)에서, 프로세스(450)는 로컬 애플리케이션 상태 인덱스를 사용하여 질의에 대한 질의 결과들의 세트를 결정한다. 일 실시예에서, 프로세스(450)는 질의 내의 정보를 이용하여 로컬 애플리케이션 상태 인덱스 내의 매칭하는 애플리케이션 상태들을 결정한다. 블록(456)에서, 프로세스(450)는 질의 결과들의 세트의 순위를 매긴다. 일 실시예에서, 순위들은 질의와 매칭하는 애플리케이션 상태들 각각에 대한 스코어들에 기초한다. 프로세스(450)는 블록(458)에서 질의 결과들의 순위가 매겨진 세트를 반환한다. 일 실시예에서, 프로세스(450)는 질의 결과들의 순위가 매겨진 세트를, 질의를 프로세스(450)로 전송한 애플리케이션으로 다시 전송한다.
도 41f는 질의 결과의 일부로서 애플리케이션 상태를 수신 및 제시하기 위한 프로세스(41_500)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_500)는 질의 결과의 일부로서 애플리케이션 상태를 수신 및 제시하도록 애플리케이션, 예컨대 상기의 도 41b에서 설명된 애플리케이션(41_204)에 의해 수행된다. 도 41f에서, 프로세스(41_500)는 블록(41_502)에서 질의를 로컬 검색 서비스로 전송하는 것으로 시작한다. 일 실시예에서, 질의는, 사용자에 의해 애플리케이션에 입력되고 로컬 검색 서비스로 전송되는 검색 문자열일 수 있다. 이 실시예에서, 입력은 텍스트, 구어, 자동 생성, 결합된 디바이스(예컨대, 휴대용 디바이스에 결합된 스마트워치)로부터의 수신, 및/또는 검색 문자열을 입력하는 일부 다른 방식에 의해 입력될 수 있다. 다른 실시예에서, 질의는 검색 시스템에 의해 제안될 수 있고, 사용자는 다수의 선택들로부터 하나의 질의를 선택할 수 있다. 대안으로, 질의는 컨텍스트로부터 추출될 수 있다. 예를 들어 그리고 일 실시예에서, 사용자는 텍스트 메시지를 판독하고 있고 검색하려고 하고, 질의는 데이터 검출 시스템에 의해 추출되고, 자동으로 발행되거나 사용자에게 제안된다. 더욱이, 질의는 다른 애플리케이션으로부터의 링크를 따라 발행될 수 있다. 블록(41_504)에서, 프로세스(41_500)는 결과들의 세트를 수신하는데, 여기서 결과들은 애플리케이션 상태를 포함한다. 일 실시예에서, 결과들의 세트는 순위가 매겨지는데, 이때 최고 순위가 매겨진 결과는 최고 히트가 된다. 블록(41_506)에서, 프로세스(41_500)는 사용자 인터페이스에 애플리케이션 상태를 제시한다. 이 실시예에서, 애플리케이션 상태는 이 애플리케이션 상태에 대해 애플리케이션 상태 제목, 개요, 및 애플리케이션에 대응하는 아이콘의 표시를 포함한다. 일 실시예에서, 프로세스(41_500)는 상기의 도 41c에서 설명된 바와 같은 애플리케이션 상태를 디스플레이한다. 애플리케이션이 선택되는 것에 응답하여, 프로세스(41_500)는 선택된 애플리케이션 상태를 이용하여 대응하는 애플리케이션을 개시한다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태가 리뷰 유형 애플리케이션에 대한 지역 레스토랑의 리뷰인 경우, 프로세스(41_500)는 지역 레스토랑 애플리케이션 상태와 함께 리뷰 유형 애플리케이션을 개시한다. 이 예에서, 리뷰 유형 애플리케이션은 사용자에게 제시되는 뷰가 리뷰 유형 애플리케이션 내의 지역 레스토랑 중 하나가 되도록 개시될 것이다. 일 실시예에서, 애플리케이션이 디바이스 상에 설치되지 않는 경우, 프로세스(41_500)는 원격 소스, 예컨대 애플리케이션 스토어, 웹페이지, 또는 다른 원격 서버로부터 애플리케이션을 다운로드할 수 있다. 이 실시예에서, 프로세스(41_500)는 애플리케이션을 설치할 것이고, 선택된 애플리케이션 상태를 이용하여 애플리케이션을 개시할 것이다.
전술된 바와 같이, 다수의 애플리케이션들은 이들 애플리케이션들을 실행시키는 디바이스 상에 국부적으로 인덱싱된 애플리케이션 상태들을 익스포트할 수 있다. 일 실시예에서, 이들 애플리케이션 상태들은 추가로 원격 애플리케이션 상태 인덱서로 익스포트될 수 있고, 이들 애플리케이션 상태들을 생성하지 않은 디바이스들로부터의 질의들을 지원하는 데 이용될 수 있다. 도 41g은 원격 검색 인덱스에서 사용하기 위한 애플리케이션 상태들을 인덱싱하는 시스템(41_618)의 일 실시예의 블록도이다. 도 41g에서, 디바이스들(41_600)은 원격 애플리케이션 상태 인덱서(41_610)에 결합된다. 일 실시예에서, 디바이스들(41_600) 각각은 그 디바이스(41_600) 상에서 실행되는 다수의 애플리케이션들(41_602)을 포함하고, 애플리케이션들(41_602) 각각은 디바이스 상의 애플리케이션 상태 모듈(41_604)에 결합된다. 이 실시예에서, 애플리케이션들(41_602) 각각은 하나 이상의 애플리케이션 상태들(41_612)을 애플리케이션 상태 모듈(41_604)로 익스포트할 것이다. 이 실시예에서, 애플리케이션 상태 모듈(41_604)은 도 41a 내지 도 41f에서 전술된 바와 같은 애플리케이션 상태 검색 인덱스(41_608)에서 수신된 애플리케이션 상태들을 인덱싱한다. 다른 실시예에서, 이들 애플리케이션 상태들은 원격 애플리케이션 상태 인덱서(41_610)로 전송될 수 있다. 애플리케이션 상태들을 원격 애플리케이션 상태 인덱서(41_610)로 전송함으로써, 이들 애플리케이션 상태들은 도시되지 않은 다른 디바이스들로부터의 질의들을 지원하는 데 이용가능하게 될 수 있다. 따라서, 이 실시예에서, 다수의 디바이스들 상에서 구동되는 다수의 애플리케이션들로부터의 인덱싱된 애플리케이션 상태들은 이들 애플리케이션 상태들을 생성하지 않은 디바이스들에 의해 전송된 질의들에 응답하여 질의 결과들에 이용될 수 있다.
일 실시예에서, 국부적으로 인덱싱된 각각의 애플리케이션 상태는 또한 원격 애플리케이션 상태 인덱서(41_610)로 익스포트될 수 있다. 이 실시예에서, 수천 또는 수백만개의 애플리케이션 상태들이 생성되어 원격 애플리케이션 상태 인덱서(41_610)로 전송될 수 있다. 그러나, 이들 많은 애플리케이션 상태들이 익스포트 및 인덱싱된다면, 이는 너무 큰 애플리케이션 상태 인덱스를 생성할 수 있고/있거나 유용하지 않은 많은 스퓨리어스 엔트리들을 가질 수 있다. 추가로, 익스포트된 애플리케이션 상태들 중 하나, 일부, 또는 전부가 인덱싱된 애플리케이션 상태(41_614)에 포함되기에는 바람직하지 않은 사적인 정보를 포함할 수 있다.
일 실시예에서, 애플리케이션 상태 모듈(41_604)은, 그들 애플리케이션 상태들이 디바이스 상에서 관여되었던 경우에, 애플리케이션 상태들을 원격 애플리케이션 상태 인덱서(41_610)로 익스포트한다. 이 실시예에서, 애플리케이션 상태에 관여하기 위해, 애플리케이션 상태 모듈은, 그 애플리케이션 상태가 디바이스 상에서의 사용자에 의한 질의에 응답하여 질의 결과로서 반환되었는지 그리고 사용자가 그 애플리케이션 상태를 선택했는지 여부를 판정한다. 일 실시예에서, 애플리케이션 상태에 관여한다는 것은, 사용자가 로컬 검색 서비스로 질의를 전송했고 로컬 검색 서비스가 질의 결과들의 세트에서 그 애플리케이션 상태를 반환했고 사용자가 그 애플리케이션 상태를 선택했거나 보았다는 것을 의미한다. 일 실시예에서, 애플리케이션 상태에 관여하는 것은 이 특정 애플리케이션 상태가 디바이스(41_600)에 의해 생성된 다른 애플리케이션 상태들보다 더 중요할 수 있다는 것을 애플리케이션 상태 모듈(41_604)에 나타낸다. 각각의 관여된 애플리케이션 상태에 대해, 애플리케이션 상태 모듈(41_604)은 그 애플리케이션 상태를 원격 앱 상태 인덱서(41_610)로 익스포트한다.
추가 실시예에서, 관여된 애플리케이션 상태를 원격 애플리케이션 상태 인덱서(41_610)로 익스포트하기 전, 애플리케이션 상태 모듈(41_604)은 애플리케이션 상태 내에 있을 수 있는 임의의 가능한 사적인 정보를 제거함으로써 애플리케이션 상태를 제거한다. 일 실시예에서, 애플리케이션 상태는 사적인 정보, 예컨대 사용자명, 사적인 연락처 정보, 위치, 액세스된 시간, 사회 보장 번호(social security number)들, 은행 계좌 번호, 및/또는 애플리케이션 상태 내에 있을 수 있는 임의의 다른 유형의 사적인 정보를 포함할 수 있다. 일 실시예에서, 애플리케이션 상태를 생성하는 애플리케이션은 소정 정보를 애플리케이션 상태에 저장되는 사적인 것으로 마킹할 수 있다. 다른 실시예에서, 디바이스는 사적인 정보를 그 애플리케이션 상태에 추가할 수 있다. 대안으로, 애플리케이션 상태 모듈(41_604)은, 소정 정보가 사적인 것으로 마킹되는지 여부와는 무관하게, 그 정보가 사적인 것임을 알 수 있다. 이들 실시예들 중 어느 하나에서, 애플리케이션 상태 모듈(41_604)은 이 사적인 정보를 제거할 것이다.
원격 애플리케이션 상태 인덱서(41_610)는, 일 실시예에서, 다수의 디바이스들(41_600)로부터 애플리케이션 상태들을 수신한다. 원격 애플리케이션 상태 인덱서(41_610)는 몇 개의 디바이스들로부터 또는 수천 또는 수백만개만큼 많은 디바이스들로부터 애플리케이션 상태들을 수신할 수 있다. 추가로 그리고 일 실시예에서, 원격 애플리케이션 상태 인덱서(41_610)는 애플리케이션 상태들의 2개의 세트들을 유지한다. 애플리케이션 상태들의 하나의 세트는 인덱싱된 애플리케이션 상태(41_614)이다. 이들은, 인덱싱되었고 검색 서비스에 의한 사용에 이용가능한 애플리케이션 상태들의 세트이다. 애플리케이션 상태들의 다른 세트는 인덱싱되지 않은 애플리케이션 상태(41_616)이다. 일 실시예에서, 원격 애플리케이션 상태 인덱서(41_610)는, 애플리케이션 상태가 하나 이상의 디바이스들에 의해 필요한 횟수만큼 관여되었다면, 애플리케이션 상태를 애플리케이션 상태들의 인덱스 세트에 추가한다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태는, 그 애플리케이션 상태가 50회 관여된 경우, 애플리케이션 상태들의 인덱싱된 세트에 추가된다. 대안의 실시예들에서, 애플리케이션 상태는, 그 애플리케이션 상태가 더 많은 또는 더 적은 횟수 관여되었던 경우, 애플리케이션 상태들의 인덱스 세트에 추가될 수 있다. 일 실시예에서, 애플리케이션 상태가 애플리케이션 인덱스에서 인덱싱되기 전에 관여되어야 하는 필요한 횟수는 애플리케이션 상태의 유형에 따라 다를 수 있다. 예를 들어 그리고 일 실시예에서, 지리적으로 국부화된 정보를 포함하는 애플리케이션 상태(예컨대, 지역 쿠폰에 대한 애플리케이션 상태)는 지리적으로 국부화된 정보를 갖지 않는 애플리케이션 상태와는 반대로, 더 적은 횟수 관여될 필요가 있을 수 있다.
이 실시예에서, 애플리케이션 상태가 관여된 필요한 횟수 이후에 애플리케이션 상태들을 인덱싱하는 것은 이 애플리케이션 상태가 다른 사용자들에게 유용할 가능성을 증가시킨다. 예를 들어, 일 실시예에서, 상이한 디바이스들 상의 많은 상이한 사용자가 로컬 트랜짓 애플리케이션을 사용하고, 로컬 버스 루트 7에 대한 애플리케이션 상태들을 생성한다. 이 예에서, 이는 인기있는 루트여서, 로컬 검색 서비스를 통해 이 애플리케이션 상태에 액세스함으로써 이 애플리케이션 상태가 사용자들에 의해 관여되게 한다. 이 애플리케이션 상태는 원격 애플리케이션 상태 인덱서(41_610)에 의해 인덱싱되고, 원격 검색 서비스에 대해 이용가능하다.
일 실시예에서, 원격 애플리케이션 인덱서(41_610)는 그 애플리케이션 상태에 대한 해시(hash)를 산출함으로써 애플리케이션 상태가 이전에 전송되었는지 여부를 판정한다. 이 해시가 원격 애플리케이션 인덱서(41_610)에 의해 저장된 다른 해시들과 매칭하는 경우, 원격 애플리케이션 인덱서(41_610)는 애플리케이션 상태가 원격 애플리케이션 인덱서에 의해 수신되었던 횟수를 증분한다. 필요한 횟수가 수신된 경우, 원격 애플리케이션 인덱서(41_610)는 그 애플리케이션 상태를 인덱싱한다. 애플리케이션 상태를 인덱싱하는 것은 하기의 도 41i에서 추가로 설명된다.
도 41h은 원격 애플리케이션 상태 검색 인덱스를 사용하여 애플리케이션 상태들을 검색하는 시스템의 일 실시예의 블록도이다. 도 41h에서, 디바이스(41_702)는 원격 애플리케이션 상태 검색 서비스(41_714)에 결합된다. 일 실시예에서, 디바이스(41_702)는 로컬 검색 서비스(41_708)에 결합되는 애플리케이션(41_704)을 포함한다. 로컬 검색 서비스(41_708)는 애플리케이션 상태 검색 인덱스(41_716)에 추가로 결합된다. 일 실시예에서, 디바이스(41_702), 애플리케이션(41_704), 로컬 검색 서비스(41_708), 및 애플리케이션 상태 검색 인덱스(41_716)는 상기의 도 41b에서 설명된 바와 같은 디바이스, 애플리케이션, 로컬 검색 서비스, 및 애플리케이션 상태 검색 인덱스이다. 다른 실시예에서, 로컬 검색 서비스(41_708)는 질의를 원격 애플리케이션 검색 서비스(41_714)로 전송할 수 있는데, 여기서 원격 애플리케이션 검색 서비스(41_714)는 질의에 대한 결과들의 세트가 있는지 여부를 판정한다. 원격 애플리케이션 검색 서비스(41_714)는 결과들의 세트를 로컬 검색 서비스(41_708)로 반환하고, 이 로컬 검색 서비스는, 이어서, 결과들의 세트를 애플리케이션(41_704)으로 반환한다. 대안으로, 애플리케이션(41_704)은 질의를 원격 애플리케이션 검색 서비스(41_714)로 전송할 수 있는데, 이 원격 애플리케이션 검색 서비스는, 이어서, 질의 결과들의 세트를 애플리케이션(41_704)으로 다시 전송한다.
전술된 바와 같이, 원격 애플리케이션 상태 검색 서비스(41_714)는 디바이스(41_702)로부터 질의를 수신하고, 그 질의에 대한 질의 결과들의 세트를 디바이스(41_702)로 역반환한다. 일 실시예에서, 원격 애플리케이션 상태 검색 서비스(41_714)는 질의를 수신하고, 수신된 질의와 매칭하는 애플리케이션 상태들에 대한 인덱스 애플리케이션 상태들(41_712)을 검색하고, 매칭하는 애플리케이션 상태들 각각에 점수를 매기고, 결과들의 이러한 세트의 순위를 매기고, 순위가 매겨진 결과들을 애플리케이션에 반환한다. 애플리케이션(41_704)은 애플리케이션 상태를 포함하는 것에 대한 결과들을 디스플레이한다. 일 실시예에서, 애플리케이션(41_704)은, 상기 도 41c에서 기술된 바와 같은, 애플리케이션의 아이콘, 애플리케이션 상태 제목, 및 애플리케이션 상태 개요를 디스플레이한다. 디스플레이되는 애플리케이션 상태의 선택 시, 애플리케이션은 그 애플리케이션 상태와 함께 로딩된다 일 실시예에서, 애플리케이션은, 이 애플리케이션 상태가 이 디바이스 상에 국부적으로 저장된 경우에, 마치 사용자가 이 애플리케이션 상태에 관여했던 것처럼 애플리케이션이 있게 되는 것과 동일한 상태에 있다.
도 41i은 애플리케이션 상태를 애플리케이션 상태 인덱스에 추가하기 위한 프로세스(41_800)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_800)는 애플리케이션 상태를 애플리케이션 상태 인덱스에 추가하도록 애플리케이션 상태 익스포터 모듈, 예컨대 상기의 도 41g에서 설명된 바와 같은 애플리케이션 상태 익스포터 모듈(41_606)에 의해 수행된다. 도 41i에서, 프로세스(41_800)는 블록(41_802)에서 애플리케이션 상태를 수신하는 것으로 시작한다. 일 실시예에서, 애플리케이션 상태는 프로세스(41_800)를 실행하고 있는 디바이스 상에서 구동되는 하나 이상의 애플리케이션들로부터 프로세스(41_800)에 의해 수신된다. 블록(41_802)에서, 프로세스(41_800)는 애플리케이션 상태가 관여했는지 여부를 판정한다. 일 실시예에서, 애플리케이션 상태는, 그 애플리케이션 상태가 질의와 매칭하는 결과들의 세트에서 반환되고 사용자가 그 애플리케이션 상태를 선택하여 애플리케이 내로 로딩한 경우에 관여된다. 애플리케이션 상태가 관여되지 않은 경우, 실행은 상기의 블록(41_802)으로 진행한다. 애플리케이션 상태가 관여된 경우, 프로세스(41_800)는 블록(41_806)의 애플리케이션 상태를 제거한다. 일 실시예에서, 프로세스(41_800)는, 도 41g에서 전술된 바와 같이, 애플리케이션 상태와 연관되고/되거나 그에 저장된 사적인 정보를 제거함으로써 애플리케이션 상태를 제거한다. 블록(41_808)에서, 프로세스(41_800)는 제거된 애플리케이션 상태를 원격 애플리케이션 상태 인덱싱 서비스로 전송한다. 일 실시예에서, 원격 애플리케이션 상태 인덱싱 서비스는 가능하게는, 이 애플리케이션 상태를 애플리케이션 상태 인덱스에 추가한다.
도 41j는 애플리케이션 상태를 애플리케이션 상태 인덱싱 서비스에 의해 인덱싱하기 위한 프로세스(41_900)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_900)는 애플리케이션 상태를 인덱싱하도록 원격 애플리케이션 상태 인덱서, 예컨대 상기의 도 41g에서 설명된 바와 같은 원격 애플리케이션 상태 인덱서(41_610)에 의해 수행된다. 도 41g에서, 프로세스(41_900)는 블록(41_902)에서 디바이스로부터 애플리케이션 상태 표시를 수신하는 것으로 시작한다. 일 실시예에서, 애플리케이션 상태 표시는 애플리케이션 상태의 해시이다. 전체 애플리케이션 상태 대신에 애플리케이션 상태 해시를 수신함으로써, 프로세스(41_900)는 애플리케이션 상태가 다수의 클라이언트들에 걸쳐서 공통적이거나 필요한 횟수 관여된 때까지 애플리케이션 상태를 수신하지 않는다. 블록(41_904)에서, 프로세스(41_900)는 이 애플리케이션 상태의 발생 횟수를 증분한다. 일 실시예에서, 프로세스(41_900)는 이 애플리케이션 상태 해시의 카운터를 유지한다. 프로세스(41_900)가 이러한 표시를 처음 수신한 경우, 카운터는 1이다. 프로세스(41_900)는 블록(41_906)에서 발생 횟수가 임계치 초과인지 여부를 판정한다. 일 실시예에서, 프로세스(41_900)에 의해 필요 횟수 수신된 애플리케이션 상태는, 이 애플리케이션 상태가 다수회 관여되었고 인덱싱되어 질의들을 서빙하는 데 이용가능한 후보라는 것을 의미한다. 예를 들어 그리고 일 실시예에서, 쿠폰 애플리케이션의 특정 쿠폰에 대한 애플리케이션 상태는, 이 애플리케이션 상태가 50회 관여된 경우, 애플리케이션 상태 인덱스에 대해 이용가능하게 될 수 있다. 발생 횟수가 임계치 초과인 경우, 프로세스(41_900)는 전체 애플리케이션 상태에 대한 요청을, 최종 애플리케이션 상태 표시를 전송한 디바이스로 전송한다. 프로세스(41_900)는 블록(41_910)에서 애플리케이션 상태를 수신한다. 프로세스(41_900)는 블록(41_910)에서 애플리케이션 상태를 인덱싱한다. 애플리케이션 상태를 인덱싱함으로써, 프로세스(41_900)는 이 애플리케이션 상태를 질의에 대한 결과들의 세트의 일부가 되도록 이용가능하게 하고 있다.
다른 실시예에서, 애플리케이션 상태 표시의 최종 수신 시에 전체 애플리케이션 상태를 요청하는 것 대신, 프로세스(41_900)는 프로세스(41_900)가 최종 애플리케이션 상태를 수신하고 애플리케이션 상태를 인덱싱할 때까지 애플리케이션 상태를 증분적으로 구축하기 시작한다. 예를 들어 그리고 일 실시예에서, 프로세스(41_900)는 최종 M개의 클라이언트들에게 애플리케이션 상태의 1/M을 프로세스(900)로 전송할 것을 요청한다. 이 예에서, 애플리케이션 상태가 동일한 애플리케이션 상태 해시를 생성하기 때문에, 이는 동일한 애플리케이션 상태이다. 이는, 애플리케이션 상태의 이들 M개의 편부들이 프로세스(41_900)에 의해 결합될 수 있다는 것을 의미한다. 이 실시예는 추가적인 프라이버시를 제공할 수 있는데, 그 이유는 프로세스(41_900)가 완전한 애플리케이션 상태를 구축하게 할 때마다 애플리케이션 상태의 일부분들이 전송되기 때문이다.
도 41k은 애플리케이션 상태 인덱스를 사용하여 질의 검색을 수행하기 위한 프로세스(41_1000)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_1000)는 애플리케이션 상태 인덱스를 사용하여 질의 검색을 수행하도록 원격 애플리케이션 상태 검색 서비스, 예컨대 도 41h에서 전술된 바와 같은 원격 애플리케이션 상태 검색 서비스(41_714)에 의해 수행된다. 도 41k에서, 프로세스(41_1000)는 블록(41_1002)에서 클라이언트로부터 질의를 수신하는 것으로 시작한다. 일 실시예에서, 질의는 애플리케이션에서 사용자에 의해 입력되고 전술된 바와 같은 원격 검색 서비스로 전송되는 검색 문자열이다. 블록(41_1004)에서, 프로세스(41_1000)는 질의를 사용하여 애플리케이션 상태 인덱스를 검색한다. 일 실시예에서, 프로세스(41_1000)는 질의와 매칭하는 임의의 애플리케이션 상태들이 있는지 여부를 판정한다. 프로세스(41_1000)는 블록(41_1006)에서 질의에 대한 결과들의 세트를 결정한다. 일 실시예에서, 결과들의 세트는 질의 내의 텍스트 중 일부 또는 전부와 매칭하는 하나 이상의 애플리케이션 상태들을 포함한다. 블록(41_1008)에서, 프로세스(41_1000)는 결과들의 세트의 순위를 매긴다. 일 실시예에서, 프로세스(41_1000)는 결과들 각각에 대한 점수를 결정하고 이들 점수들을 사용하여 그들 결과들의 순위를 매김으로써 결과들의 세트의 순위를 매긴다. 블록(41_1010)에서, 프로세스(41_1000)는 결과들의 세트를 다른 검색 도메인들로부터의 결과들과 조합한다. 일 실시예에서, 검색이, 동일한 질의가 상이한 인덱스들을 검색하는 데 사용되는 연합 검색인 경우, 프로세스(41_1000)는 다른 검색 도메인들로부터의 결과들을 애플리케이션 상태 인덱스를 사용하여 결정된 결과들의 세트와 조합한다. 예를 들어 그리고 일 실시예에서, 질의는 애플리케이션 상태 인덱스, 일반적인 웹 검색 인덱스, 및/또는 상이한 인덱스들(예컨대, 미디어 인덱스, 애플리케이션 스토어 인덱스, 지도 인덱스, 온라인 백과사전 인덱스, 및/또는 다른 유형의 인덱스)을 검색하는 데 사용될 수 있다. 블록(41_1012)에서, 프로세스(41_1000)는, 블록(41_1010)에서 생성된 다른 결과들과 함께, 순위가 매겨진 결과들의 세트를 클라이언트로 반환한다.
도 41l은 질의 결과의 일부로서 애플리케이션 상태를 수신 및 제시하기 위한 프로세스(41_1100)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_1100)는 질의 결과의 일부로서 애플리케이션 상태를 수신 및 제시하도록 애플리케이션, 예컨대 상기의 도 41h에서 설명된 애플리케이션(41_704)에 의해 수행된다. 도 41l에서, 프로세스(41_1100)는 블록(41_1102)에서 질의를 원격 검색 서비스로 전송하는 것으로 시작한다. 일 실시예에서, 질의는, 사용자에 의해 애플리케이션에 입력되고 원격 검색 서비스로 전송되는 검색 문자열일 수 있다. 이 실시예에서, 입력은 텍스트, 구어, 자동 생성, 결합된 디바이스(예컨대, 휴대용 디바이스에 결합된 스마트 워치)로부터의 수신, 및/또는 검색 문자열을 입력하는 일부 다른 방식에 의해 입력될 수 있다. 블록(41_1104)에서, 프로세스(41_1100)는 결과들의 세트를 수신하는데, 여기서 결과들은 애플리케이션 상태를 포함한다. 이 실시예에서, 애플리케이션 상태는, 상기의 도 41g에서 설명된 바와 같이, 사용자에 의해 필요한 횟수 관여된 제거된 애플리케이션 상태이다. 일 실시예에서, 결과들의 세트는 순위가 매겨지고, 이때 최고 순위가 매겨진 결과는 최고 히트가 된다. 블록(41_1106)에서, 프로세스(41_1100)는 사용자 인터페이스에 애플리케이션 상태를 제시한다. 이 실시예에서, 애플리케이션 상태는 이 애플리케이션 상태에 대해 애플리케이션 상태 제목, 개요, 및 애플리케이션에 대응하는 아이콘의 표시를 포함한다. 일 실시예에서, 프로세스(41_1100)는 상기의 도 41b에서 설명된 바와 같은 애플리케이션 상태를 디스플레이한다. 애플리케이션이 선택되는 것에 응답하여, 프로세스(41_1100)는 선택된 애플리케이션 상태를 이용하여 대응하는 애플리케이션을 개시한다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태가 리뷰 유형 애플리케이션에 대한 지역 레스토랑의 리뷰인 경우, 프로세스(41_1100)는 지역 레스토랑 애플리케이션 상태와 함께 리뷰 유형 애플리케이션을 개시한다. 이 예에서, 리뷰 유형 애플리케이션은 사용자에게 제시되는 뷰가 리뷰 유형 애플리케이션 내의 지역 레스토랑 중 하나가 되도록 개시될 것이다. 일 실시예에서, 애플리케이션이 디바이스 상에 설치되지 않은 경우, 프로세스(41_1100)는 원격 소스, 예컨대 애플리케이션 스토어, 웹페이지, 또는 다른 원격 서버로부터 애플리케이션을 다운로드할 수 있다. 이 실시예에서, 프로세스(41_1100)는 애플리케이션을 설치할 것이고, 선택된 애플리케이션 상태를 이용하여 애플리케이션을 개시할 것이다.
도 41m는 원격 검색 인덱스에서 사용하기 위한 애플리케이션 상태 뷰들을 인덱싱하는 시스템(41_1200)의 일 실시예의 블록도이다. 도 41m에서, 디바이스(41_1202)는 애플리케이션 상태 저장소(41_1206) 및 애플리케이션 상태 인덱스(41_1208)에 결합된다. 일 실시예에서, 디바이스(41_1202)는 애플리케이션 상태 저장소(41_1206)에 저장된 애플리케이션 상태들을 인출하고, 애플리케이션 상태들 각각에 대해, 디바이스(41_1202)는 이들 애플리케이션 상태들 각각에 대한 뷰를 생성한다. 이 실시예에서, 애플리케이션 상태의 뷰는 그 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현이다. 예를 들어, 일 실시예에서, 사용자 인터페이스는 텍스트, 이미지, 비디오, 오디오, 애니메이션, 그래픽, 및/또는 다른 유형의 사용자 인터페이스 컴포넌트를 포함할 수 있다. 이 예에서, 대응하는 뷰는 사용자 인터페이스의 2차원 표현이다. 일 실시예에서, 하나의 애플리케이션은 이 애플리케이션과 연관된 상이한 애플리케이션 상태들에 기초하여 생성된 많은 상이한 뷰들을 가질 수 있다. 예를 들어 그리고 일 실시예에서, 사업체들 및 서비스들에 대한 수천 또는 수백만의 리뷰들에 대한 콘텐츠에 액세스하는 리뷰 유형 애플리케이션은 수천 또는 수백만의 리뷰들 각각에 대한 뷰를 가질 수 있다. 뷰가 하기의 도 41n에 추가로 기술된다.
일 실시예에서, 애플리케이션 상태 저장소(41_1206)에 저장된 애플리케이션 상태들은, 도 41g에서 전술된 바와 같이, 사용자에 의해 필요한 횟수 관여된 애플리케이션 상태들일 수 있다. 대안으로, 애플리케이션 상태 저장소(41_1206)는 또한 인덱싱되지 않은 애플리케이션 상태들을 포함할 수 있다. 추가로, 애플리케이션 상태 인덱스(41_1208)는 그들 애플리케이션 상태들에 대해 생성된 뷰들을 갖는 인덱싱된 애플리케이션 상태들을 포함한다. 이 실시예에서, 이들 뷰들은 질의에 대한 결과들의 세트의 일부로서 애플리케이션 상태와 함께 반환될 수 있다. 검색 엔진(41_1210)이 디바이스들(41_1214)로부터 질의들을 수신하는 애플리케이션 상태 검색 서비스(41_1212)를 포함한다. 애플리케이션 상태 검색 서비스(41_1212)는 디바이스들(41_1214)로부터 질의들을 수신하고, 이들 질의들을 사용하여 애플리케이션 상태 인덱스를 검색하고, 연관된 뷰들을 갖는 질의들에 대한 매칭하는 애플리케이션 상태들을 판정하고, 매칭하는 애플리케이션 상태들의 점수를 매기고, 매칭하는 애플리케이션 상태들의 순위를 매기고, 이들 매칭하는 애플리케이션 상태들을 결과들의 세트로서, 오리지널 질의를 전송한 디바이스로 반환한다.
전술된 바와 같이, 애플리케이션 상태는 연관된 뷰를 가질 수 있다. 도 41n은 애플리케이션 상태 뷰(41_1302)의 일 실시예의 블록도이다. 도 41n에서, 디바이스(41_1300)는 특정 애플리케이션 상태 내에 있는 실행 애플리케이션을 갖는다. 이 애플리케이션 상태에서의 애플리케이션은 애플리케이션 상태 사용자 인터페이스(41_1302)를 디스플레이한다. 애플리케이션 상태 사용자 인터페이스(41_1302)는 아이콘, 텍스트, 이미지, 비디오, 오디오, 애니메이션, 그래픽, 및/또는 다른 유형의 사용자 인터페이스 컴포넌트와 같은 다양한 컴포넌트들을 포함할 수 있다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태 사용자 인터페이스(41_1302)는 이미지(41_1304), 텍스트(41_1306), 및 아이콘(41_1308)을 포함한다. 일 실시예에서, 뷰는 이 애플리케이션 상태 사용자 인터페이스(41_1302)로부터 생성될 수 있다. 이러한 환경에서, 뷰는 애플리케이션 상태 인덱스에서 애플리케이션 상태와 함께 저장 및 인덱싱될 수 있는 애플리케이션 상태 사용자 인터페이스(41_1302)의 표현이다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태 사용자 인터페이스(41_1302)에 대한 뷰는 GIF, JPEG, PNG, 및/또는 다른 유형의 2차원 이미지와 같은 2차원 이미지이다. 이 예에서, 뷰의 2차원 이미지는 애플리케이션 상태 인덱스에서 애플리케이션 상태와 함게 저장될 수 있다.
도 41o는 애플리케이션 상태를 사용하여 애플리케이션 상태 뷰를 생성하기 위한 프로세스(41_1400)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_1400)는 애플리케이션 상태를 이용하여 애플리케이션 상태 뷰를 생성하도록 애플리케이션 상태 뷰 생성기 및 인덱서, 예컨대 상기의 도 41m에서 설명된 애플리케이션 상태 뷰 생성기 및 인덱서(41_1204)에 의해 수행된다. 도 41o에서, 프로세스(41_1400)는 블록(41_1402)에서 애플리케이션 상태를 수신하는 것으로 시작한다. 일 실시예에서, 프로세스(41_1400)는 애플리케이션 상태 저장소, 예컨대 도 41m에서 기술된 바와 같은 애플리케이션 상태 저장소(41_1206)로부터 애플리케이션 상태를 수신한다. 블록(41_1404)에서, 프로세스(41_1400)는 이 애플리케이션 상태를 이용하여 애플리케이션 상태 뷰를 생성한다. 일 실시예에서, 프로세스(41_1400)는 그 애플리케이션 상태를 이용하여 애플리케이션을 시뮬레이션함으로써 애플리케이션 상태 뷰를 생성한다. 이 실시예에서, 애플리케이션은 이 애플리케이션 상태와 함께 시뮬레이터에서 실행된다. 프로세스(41_1400)는 시뮬레이터의 사적인 프레임워크를 사용하여 이 애플리케이션 상태에 대한 애플리케이션 사용자 인터페이스를 캡처할 수 있다. 대안으로, 프로세스(41_1400)는 애플리케이션을 가상 플랫폼 또는 디바이스 자체 상에 로딩할 수 있고, 그 애플리케이션 상태의 뷰를 생성하는 메커니즘을 이용할 수 있다. 블록(41_1406)에서, 프로세스(41_1400)는 애플리케이션 상태 뷰를 대응하는 애플리케이션 상태에 대한 애플리케이션 상태 인덱스에 추가한다.
이들 애플리케이션 상태 뷰들을 생성함으로써, 프로세스(41_1400)는 하나 이상의 애플리케이션들에 대한 다수의 뷰들을 생성할 수 있다. 이들 뷰들은 애플리케이션 상태를 프리뷰하는 데, 그리고 또한 일반적으로, 애플리케이션을 프리뷰하는 데 이용될 수 있다. 일 실시예에서, 이들 애플리케이션 상태 뷰들은 질의에 대한 결과들의 세트에서 반환되는 애플리케이션 상태를 프리뷰하는 데 이용될 수 있거나, 또는 일반적으로, 애플리케이션을 프리뷰하는 데 이용될 수 있다. 질의와 함께 뷰를 사용하는 것은 하기의 도 41p에 추가로 기술된다. 일 실시예에서, 하나의 애플리케이션에 대해 다수의 애플리케이션 상태 뷰들을 수집하는 것은 그 애플리케이션을 프리뷰하는 데 이용될 수 있다. 예를 들어 그리고 일 실시예에서, 리뷰 유형 애플리케이션은 이 애플리케이션에 이용가능한 수십개의 애플리케이션 상태 뷰들을 가질 수 있다. 이러한 리뷰 유형 애플리케이션에 관심을 두어, 예를 들어 애플리케이션 스토어 내의 애플리케이션을 보는 누군가에 대해, 이들 애플리케이션 상태 뷰들은 애플리케이션을 구매 및/또는 다운로드하기 전에 사용자가 애플리케이션을 프리뷰할 수 있도록 이용가능하게 될 수 있다. 이 예에서, 사용자는 애플리케이션이 무엇처럼 보일 것인지에 대한 아이디어를 얻기 위해 수십개의 뷰들을 앞뒤로 스크럽할 수 있다.
도 41p는 질의 결과의 일부로서 애플리케이션 상태 뷰를 포함하는 애플리케이션 상태를 수신 및 제시하기 위한 프로세스(41_1500)의 일 실시예의 흐름도이다. 일 실시예에서, 프로세스(41_1500)는 질의 결과의 일부로서 애플리케이션 상태 뷰를 수신 및 제시하도록 디바이스, 예컨대 상기의 도 41m에서 기술된 디바이스(41_1214)에 의해 수행된다. 도 41p에서, 프로세스(41_1500)는 블록(41_1502)에서 질의를 원격 검색 서비스로 전송하는 것으로 시작한다. 일 실시예에서, 질의는, 사용자에 의해 애플리케이션에 입력되고 원격 검색 서비스로 전송되는 검색 문자열일 수 있다. 이 실시예에서, 입력은 텍스트, 구어, 자동 생성, 결합된 디바이스(예컨대, 휴대용 디바이스에 결합된 스마트워치)로부터의 수신, 및/또는 검색 문자열을 입력하는 일부 다른 방식에 의해 입력될 수 있다. 블록(41_1504)에서, 프로세스(41_1500)는 결과들의 세트를 수신하는데, 여기서 결과들은 애플리케이션 상태를 포함한다. 이 실시예에서, 애플리케이션 상태는, 상기의 도 41g에서 설명된 바와 같이, 사용자에 의해 필요한 횟수 관여된 제거된 애플리케이션 상태이다. 일 실시예에서, 결과들의 세트는 순위가 매겨지고, 이때 최고 순위가 매겨진 결과는 최고 히트가 된다. 블록(41_1506)에서, 프로세스(41_1500)는 사용자 인터페이스에 애플리케이션 상태를 제시한다. 이 실시예에서, 애플리케이션 상태는 이 애플리케이션 상태에 대해 애플리케이션 상태 제목, 개요, 애플리케이션에 대응하는 아이콘의 표시, 및 대응하는 애플리케이션 뷰의 이용가능성의 표시를 포함한다. 애플리케이션 상태 뷰가 선택되는 것에 응답하여, 프로세스(41_1500)는 애플리케이션 상태 뷰를 인출 및 제시한다. 일 실시예에서, 애플리케이션 상태 뷰를 디스플레이함으로써, 사용자는 이 애플리케이션 상태에서 실행되는 애플리케이션의 프리뷰를 얻을 수 있다. 이는 애플리케이션 상태를 선택할 것인지 여부를 결정하는 데 있어서 사용자에게 도움이 될 수 있다. 다른 실시예에서, 뷰를 프리뷰하는 것은, 애플리케이션이 디바이스 상에 설치된다 하더라도, 이 애플리케이션 상태와 함께 애플리케이션을 개시하는 것보다 더 빠를 수 있다. 예를 들어 그리고 일 실시예에서, 애플리케이션 상태 뷰가 리뷰 유형 애플리케이션에 대한 지역 레스토랑의 리뷰인 경우, 프로세스(41_1500)는 애플리케이션 상태 뷰를 인출 및 디스플레이한다.
인앱 검색의 클라이언트, 서버, 웹 측면에 대한 예시적인 기계-판독가능 매체, 방법, 및 시스템
일 태양에서, 복수의 애플리케이션 상태들을 사용하여 검색을 수행하는 디바이스의 방법 및 장치가 제공된다. 예시적인 실시예에서, 디바이스는, 디바이스 상에서 구동되는 복수의 애플리케이션들로부터 복수의 애플리케이션 상태들을 수신한다. 디바이스는 추가로 복수의 애플리케이션 상태들의 인덱스를 생성한다. 또한, 디바이스는, 디바이스 상에 저장된 데이터에 대해 검색하라는 질의를 수신한다. 게다가, 디바이스는 인덱스 및 질의를 사용하여 복수의 애플리케이션 상태들을 검색한다. 디바이스는 추가적으로 복수의 애플리케이션 상태들 중 하나의 애플리케이션 상태의 질의에 대한 매칭을 결정하고, 매칭되는 애플리케이션 상태에 대한 매칭을 반환한다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 복수의 애플리케이션 상태들을 사용하여 검색을 수행하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 디바이스 상에서 구동되는 복수의 애플리케이션들로부터 복수의 애플리케이션 상태들을 수신하는 단계; 복수의 애플리케이션 상태들의 인덱스를 생성하는 단계 - 인덱스는 디바이스 상에 저장됨 -; 디바이스 상에 저장된 데이터에 대해 검색하라는 질의를 수신하는 단계; 인덱스 및 질의를 사용하여 복수의 애플리케이션 상태들을 검색하는 단계; 복수의 애플리케이션 상태들 중 하나의 애플리케이션 상태의 질의에 대한 매칭을 결정하는 단계; 및 매칭되는 애플리케이션 상태에 대한 매칭을 반환하는 단계를 포함한다. 일부 실시예들에서, 복수의 애플리케이션 상태들 각각은, 그 애플리케이션 상태에 대한 애플리케이션의 적시의 스냅샷을 나타내는 데이터를 포함한다. 일부 실시예들에서, 복수의 애플리케이션들 중 하나의 애플리케이션에 대한 다수의 애플리케이션 상태들이 있다. 일부 실시예들에서, 복수의 애플리케이션 상태들의 검색에 더하여 디바이스 상에 저장된 파일들을 검색하기 위한 질의가 사용된다. 일부 실시예들에서, 복수의 애플리케이션 상태들 중 하나의 애플리케이션 상태는 복수의 애플리케이션들 중 대응하는 하나의 애플리케이션에 의해 사용되는 사용자 인터페이스 데이터의 뷰 위치를 나타내는 사용자 인터페이스 정보를 포함한다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 복수의 애플리케이션 상태들을 사용하여 질의를 수행하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 디바이스 상에 저장된 인덱스를 사용하여 디바이스에 대해 질의를 수행하는 단계; 질의에 매칭되는 복수의 결과들을 수신하는 단계; 디바이스 상에 설치된 네이티브 애플리케이션에 대응하는 애플리케이션 상태에 대응하는 복수의 결과들의 서브세트를 결정하는 단계; 및 복수의 결과들의 서브세트 내의 결과들 각각에 대해, 그 결과 및 결과에 대응하는 네이티브 애플리케이션의 표현을 제시하는 단계를 포함한다.
다른 태양에서, 다중 디바이스 검색에서 사용하기 위한 애플리케이션 상태를 선택하는 디바이스의 방법 및 장치가 제공되다. 이 실시예에서, 디바이스는, 디바이스 상에서, 그 애플리케이션 상태가 그 디바이스 상에서의 디바이스-레벨 검색에 대한 질의 결과로서 선택되었음을 검출한다. 디바이스는 추가로 애플리케이션 상태를 서버로 송신하는데, 애플리케이션 상태는 다른 디바이스들로부터의 다른 애플리케이션 상태들과 함께 인덱싱되어야 한다. 일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 다중 디바이스 검색에서 사용하기 위한 애플리케이션 상태를 선택하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 디바이스 상에서, 그 애플리케이션 상태가 그 디바이스 상에서의 디바이스-레벨 검색에 대한 질의 결과로서 선택되었음을 검출하는 단계; 및 애플리케이션 상태를 서버로 송신하는 단계를 포함하고, 애플리케이션 상태는 다른 디바이스들로부터의 다른 애플리케이션 상태들과 함께 인덱싱된다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 제2 디바이스로부터 수신된 애플리케이션 상태를 사용하여 제1 디바이스에 대한 검색을 수행하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 복수의 디바이스들 상에서 구동되는 복수의 애플리케이션들로부터 복수의 애플리케이션 상태들을 수신하는 단계; 복수의 애플리케이션 상태들의 인덱스를 생성하는 단계; 디바이스 상에 저장된 데이터에 대해 검색하라는 질의를 수신하는 단계; 인덱스 및 검색 질의를 사용하여 복수의 애플리케이션 상태들을 검색하는 단계; 복수의 애플리케이션 상태들 중 하나의 애플리케이션 상태의 검색 질의에 대한 매칭을 결정하는 단계; 및 매칭되는 애플리케이션 상태에 대한 매칭을 반환하는 단계를 포함한다. 일부 실시예들에서, 인덱스를 생성하는 단계는, 복수의 애플리케이션 상태들 중 하나의 애플리케이션 상태가 임계치를 충족하는 횟수로 수신되는 경우 그 애플리케이션 상태를 인덱스에 추가하는 단계를 포함한다. 일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 검색을 수행하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 디바이스로부터 서버로 질의를 송신하는 단계; 질의에 매칭되는 복수의 결과들을 수신하는 단계; 각각이 디바이스 상에 설치된 네이티브 애플리케이션에 대응하는 다른 디바이스 상에서 생성된 애플리케이션 상태를 포함하는 복수의 결과들의 서브세트를 결정하는 단계; 및 복수의 결과들의 서브세트 내의 결과들 각각에 대해, 네이티브 애플리케이션의 링크 및 표현을 제시하는 단계를 포함한다.
하나의 추가 태양에서, 검색 질의 인덱스에서 애플리케이션 상태를 인덱싱하는 디바이스의 방법 및 장치가 제공된다. 이 실시예에서, 서버에 결합된 다른 디바이스로부터의 애플리케이션의 애플리케이션 상태를 수신하는 것. 디바이스는 추가로 애플리케이션 상태에 대응하는 애플리케이션의 뷰를 생성하는데, 뷰는 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현이다. 또한, 디바이스는 검색 질의 인덱스에서 뷰를 인덱싱한다. 일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금 검색 질의 인덱스에서 애플리케이션 상태 뷰를 인덱싱하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 서버를 이용하여, 서버에 결합된 디바이스로부터의 애플리케이션의 애플리케이션 상태를 수신하는 단계; 애플리케이션 상태에 대응하는 애플리케이션의 뷰를 생성하는 단계 - 뷰는 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현임 -; 및 검색 질의 인덱스에서 뷰를 인덱싱하는 단계를 포함한다. 일부 실시예들에서, 본 방법은 뷰를 애플리케이션 상태에 대한 인덱스 엔트리에 링크하는 단계를 추가로 포함한다. 일부 실시예들에서, 인덱스 엔트리는 인덱스의 일부이고, 인덱스는 서버에 결합된 복수의 디바이스들로부터 비롯되는 복수의 애플리케이션들에 대한 애플리케이션 상태들의 복수의 인덱스 엔트리들을 포함한다. 일부 실시예들에서, 애플리케이션 상태는, 그 애플리케이션 상태에 대한 애플리케이션의 적시의 스냅샷을 나타내는 데이터를 포함한다. 일부 실시예들에서, 인덱스 엔트리는 제목, 검색가능한 데이터, 및 애플리케이션 특정 불투명 데이터의 그룹으로부터 선택된 정보를 포함한다. 일부 실시예들에서, 뷰는 이미지이다. 일부 실시예들에서, 뷰는 다수의 프레임들을 갖는 이미지이다. 일부 실시예들에서, 생성하는 단계는, 가상 디바이스 상에서 애플리케이션을 실행하는 단계; 및 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 화면 이미지를 캡처하는 단계를 포함한다. 일부 실시예들에서, 생성하는 단계는, 애플리케이션 상태를 이용하여 애플리케이션을 시뮬레이팅하는 단계; 및 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 화면 이미지를 캡처하는 단계를 포함한다.
일부 실시예들에서, 하나 이상의 프로세싱 유닛들로 하여금
질의 결과를 이용하여 연관된 뷰를 갖는 애플리케이션 상태를 인출하기 위한 방법을 수행하게 하는 실행가능한 명령어들을 갖는 기계-판독가능 매체가 제공되는데, 본 방법은, 질의를 서버로 전송하는 단계; 서버로부터 질의에 대한 결과를 수신하는 단계 - 결과는, 그 결과에 대응하는 애플리케이션의 애플리케이션 상태의 뷰를 포함하고, 뷰는 애플리케이션 상태에 대응하는 애플리케이션의 사용자 인터페이스의 표현임 -; 및 결과를 뷰의 표시로 제시하는 단계를 포함한다. 일부 실시예들에서, 본 방법은 사용자에 의한 제스처에 응답하여 뷰를 제시하는 단계를 추가로 포함한다.
예시적인 전자 디바이스의 기능 블록도
일부 실시예들에 따르면, 도 42는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4200)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 42에 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4200)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 42에 도시된 바와 같이, 전자 디바이스(4200)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4201)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4203)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(4201) 및 터치 감응형 표면 유닛(4203)과 결합된 프로세싱 유닛(4205)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 42는 전자 디바이스(4200)와 통합된 바와 같은 디스플레이 유닛(4201) 및 터치 감응형 표면 유닛(4203)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 프로세싱 유닛은 실행 유닛(예컨대, 도 42의 실행 유닛(4207)), 수집 유닛(예컨대, 도 42의 수집 유닛(4209)), 획득 유닛(예컨대, 도 42의 획득 유닛(4211)), 연관 유닛(예컨대, 도 42의 연관 유닛(4213)), 제공 유닛(예컨대, 도 42의 제공 유닛(4215)), 전송 유닛(예컨대, 도 42의 전송 유닛(4217)), 수신 유닛(예컨대, 도 42의 수신 유닛(4219)), 표시 유닛(예컨대, 도 42의 표시 유닛(4221)), 검출 유닛(예컨대, 도 42의 검출 유닛(4223)), 수행 유닛(예컨대, 도 42의 수행 유닛(4225)), 결정 유닛(예컨대, 도 42의 결정 유닛(4227)), 및 모니터링 유닛(예컨대, 도 42의 모니터링 유닛(4229))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(4205)(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(1007 내지 1029))은, 전자 디바이스 상에서, 전자 디바이스의 사용자로부터의 지시에 응답하여 애플리케이션을 (예컨대, 실행 유닛(4207)으로) 실행하도록; 애플리케이션을 실행하는 동안, 사용 데이터를 (예컨대, 수집 유닛(4209)으로) 수집하도록 - 사용 데이터는 적어도 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들을 포함함 -; 자동으로, 인간의 개입 없이, 수집된 사용 데이터에 기초하여 적어도 하나의 트리거 조건을 (예컨대, 획득 유닛(4211)으로) 획득하도록; 적어도 하나의 트리거 조건을, 애플리케이션 내에서 사용자에 의해 수행된 하나 이상의 액션들 중 특정 액션과 (예컨대, 연관 유닛(4213)으로) 연관시키도록; 그리고 적어도 하나의 트리거 조건이 만족되었다고 결정할 시에, 사용자에게 트리거 조건과 연관된 특정 액션이 이용가능하다는 표시를 (예컨대, 제공 유닛(4215)으로) 제공하도록 구성된다. 전자 디바이스(4200)의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4207 내지 4229))은 추가로 "발명의 내용" 섹션에서 전술된 바와 같은 A2 내지 A22 중 임의의 하나의 방법을 수행하도록 구성된다.
일부 실시예에 따르면, 도 43은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4300)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 43에서 기술된 기능 블록들이 선택적으로 조합되거나 서브 블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4300)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 43에 도시된 바와 같이, 전자 디바이스(4300)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4301)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4303)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(4301) 및 터치 감응형 표면 유닛(4303)과 결합된 프로세싱 유닛(4305)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 43은 전자 디바이스(4300)와 통합된 바와 같은 디스플레이 유닛(4301) 및 터치 감응형 표면 유닛(4303)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 프로세싱 유닛은 표시 유닛(예컨대, 도 43의 표시 유닛(4309)), 검출 유닛(예컨대, 도 43의 검출 유닛(4307)), 인출 유닛(예컨대, 도 43의 인출 유닛(4311)), 채움 유닛(예컨대, 도 43의 채움 유닛(4313)), 스크롤 유닛(예컨대, 도 43의 스크롤 유닛(4315)), 노출 유닛(예컨대, 도 43의 노출 유닛(4317)), 선택 유닛(예컨대, 도 43의 선택 유닛(4319)), 연락 유닛(예컨대, 도 43의 연락 유닛(4321)), 수신 유닛(예컨대, 도 43의 수신 유닛(4323)), 및 실행 유닛(예컨대, 도 43의 실행 유닛(4325))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(4305)(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4307 내지 4329))은, 전자 디바이스의 사용자로부터 터치 감응형 디스플레이 상의 검색 활성화 제스처를 (예컨대, 검출 유닛(4307) 및/또는 터치 감응형 표면 유닛(4303)으로) 검출하도록; 검색 활성화 제스처를 검출하는 것에 응답하여, 터치 감응형 디스플레이 상에 검색 인터페이스를 (예컨대, 표시 유닛(4309) 및/또는 디스플레이 유닛(4301)으로) 디스플레이하도록 구성되고, 검색 인터페이스는, (i) 검색 엔트리 부분, 및 (ii) 검색 엔트리 부분에서 임의의 사용자 입력을 수신하기 전에 디스플레이되는 예측 부분을 포함하고, 예측 부분은, (a) 복수의 이전에 연락된 사람들 중 개인과 연락하기 위한 적어도 하나의 어포던스 - 개인은 현재 시간에 적어도 부분적으로 기초하여 복수의 이전에 연락된 사람들로부터 (예컨대, 선택 유닛(4319)에 의해) 자동으로 선택됨 -; 및 (b) 전자 디바이스 상에서 이용가능한 복수의 애플리케이션들 중 일 애플리케이션 내의 예측된 액션을 실행하기 위한 적어도 하나의 어포던스 중 하나 이상으로 채워지고, 예측된 액션은, 전자 디바이스의 사용자와 연관된 애플리케이션 사용 이력에 적어도 부분적으로 기초하여 (예컨대, 선택 유닛(4319)에 의해) 자동으로 선택된다. 전자 디바이스(4300)의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4307 내지 4325))은 추가로 "발명의 내용" 섹션에서 전술된 바와 같은 C2 내지 C18 중 임의의 하나의 방법을 수행하도록 구성된다.
일부 실시예들에 따르면, 도 44는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4400)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 44에서 기술된 기능 블록들이 선택적으로 조합되거나 서브 블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4400)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 44에 도시된 바와 같이, 전자 디바이스(4400)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4401)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4403)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(4401) 및 터치 감응형 표면 유닛(4403)과 결합된 프로세싱 유닛(4405)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 44는 전자 디바이스(4400)와 통합된 바와 같은 디스플레이 유닛(4401) 및 터치 감응형 표면 유닛(4403)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 프로세싱 유닛은 검출 유닛(예컨대, 도 44의 검출 유닛(4407)), 표시 유닛(예컨대, 도 44의 표시 유닛(4409)), 인출 유닛(예컨대, 도 44의 인출 유닛(4411)), 검색 모드 진입 유닛(예컨대, 도 44의 검색 모드 진입 유닛(4412)), 채움 유닛(예컨대, 도 44의 채움 유닛(4413)), 획득 유닛(예컨대, 도 44의 획득 유닛(4415)), 결정 유닛(예컨대, 도 44의 결정 유닛(4417)), 및 선택 유닛(예컨대, 도 44의 선택 유닛(4419))을 포함한다.
프로세싱 유닛(4405)(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4407 내지 4419))은, 디스플레이 유닛(예컨대, 디스플레이 유닛(4401)) 상에, 전자 디바이스 상에서 실행 중인 애플리케이션과 연관된 콘텐츠를 (예컨대, 표시 유닛(4409) 및/또는 디스플레이 유닛(4401)으로) 디스플레이하도록; 터치 감응형 표면 유닛(예컨대, 터치 감응형 표면 유닛(4403))을 통해, 스와이프 제스처를 (예컨대, 검출 유닛(4407) 및/또는 터치 감응형 표면 유닛(4403)으로) 검출하도록 - 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 애플리케이션과는 별개인 검색 모드에 진입하게 함 -; 스와이프 제스처를 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4411)으로) 검색 모드에 진입하도록 - 검색 모드는 디스플레이 유닛(예컨대, 디스플레이 유닛(4407)) 상에 디스플레이되는 검색 인터페이스를 포함함 -; 검색 모드에 진입하는 것과 함께, 콘텐츠와 연관된 정보에 적어도 부분적으로 기초하여 적어도 하나의 제안된 검색 질의를 (예컨대, 결정 유닛(4417)으로) 결정하도록; 그리고 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 적어도 하나의 제안된 검색 질의로 디스플레이된 검색 인터페이스를 (예컨대, 채움 유닛(4413)으로) 채우도록 구성된다. 전자 디바이스(4400)의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4407 내지 4419))은 추가로 "발명의 내용" 섹션에서 전술된 바와 같은 D2 내지 D16 중 임의의 하나의 방법을 수행하도록 구성된다.
일부 실시예들에 따르면, 도 45는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4500)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 45에서 기술된 기능 블록들이 선택적으로 조합되거나 서브 블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4500)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 45에 도시된 바와 같이, 전자 디바이스(4500)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4501)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4503)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(4501) 및 터치 감응형 표면 유닛(4503)과 결합된 프로세싱 유닛(4505)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 45는 전자 디바이스(4500)와 통합된 바와 같은 디스플레이 유닛(4501) 및 터치 감응형 표면 유닛(4503)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 프로세싱 유닛은 검출 유닛(예컨대, 도 45의 검출 유닛(4507)), 표시 유닛(예컨대, 도 45의 표시 유닛(4509)), 채움 유닛(예컨대, 도 45의 채움 유닛(4511)), 및 검색 모드 진입 유닛(예컨대, 도 45의 검색 모드 진입 유닛(4513))을 포함한다.
프로세싱 유닛(4505)(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(1007 내지 1029))은, 터치 감응형 표면 유닛(예컨대, 터치 감응형 표면 유닛(4503))을 통해, 사용자 인터페이스 위에서의 스와이프 제스처를 (예컨대, 검출 유닛(4507) 및/또는 터치 감응형 표면 유닛(4503)으로) 검출하도록 - 스와이프 제스처는, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 함 -; 그리고 스와이프 제스처를 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4513)으로) 검색 모드에 진입하도록 구성되고, 검색 모드에 진입하는 것은, 사용자 인터페이스와는 별개인 검색 인터페이스를, 검색 인터페이스 내에 임의의 사용자 입력을 수신하기 전에, 제1 콘텐츠 항목으로 (예컨대, 채움 유닛(4511) 및/또는 표시 유닛(4509) 및/또는 디스플레이 유닛(4501)으로) 채우는 것을 포함한다. 일부 실시예들에서, 사용자 인터페이스가, 애플리케이션들을 호출하기 위한 선택가능한 아이콘들을 포함하는 홈 화면과는 별개인 애플리케이션과 연관되는 콘텐츠를 포함한다는 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 것은, 검색 인터페이스를, 애플리케이션과 연관되는 콘텐츠에 적어도 부분적으로 기초하는 적어도 하나의 제안된 검색 질의로 (예컨대, 채움 유닛(4511)으로) 채우는 것을 포함하고, 사용자 인터페이스가 홈 화면의 일정 페이지와 연관된다는 결정에 따라, 검색 인터페이스를 제1 콘텐츠 항목으로 채우는 것은, 검색 인터페이스를, 전자 디바이스의 현재 위치의 임계 거리 내에 있는 적어도 하나의 관심 지점의 선택가능한 설명을 포함하는 어포던스로 (예컨대, 채움 유닛(4511)으로) 채우는 것을 포함한다. 전자 디바이스(4500)의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4507 내지 4513))은 추가로 "발명의 내용" 섹션에서 전술된 바와 같은 E2의 방법을 수행하도록 구성된다.
일부 실시예들에 따르면, 도 46은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4600)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 46에서 기술된 기능 블록들이 선택적으로 조합되거나 서브 블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4600)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 46에 도시된 바와 같이, 전자 디바이스(4600)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4601)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4603)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 전자 디바이스에 대한 포지셔닝 정보를 획득하도록 구성된 위치 센서 유닛(4607), 및 디스플레이 유닛(4601), 터치 감응형 표면 유닛(4603), 및 위치 센서 유닛(4607)과 결합된 프로세싱 유닛(4605)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 46은 전자 디바이스(4600)와 통합된 바와 같은 디스플레이 유닛(4601) 및 터치 감응형 표면 유닛(4603)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 프로세싱 유닛은 표시 유닛(예컨대, 도 46의 표시 유닛(4609)), 인출 유닛(예컨대, 도 46의 인출 유닛(4611)), 결정 유닛(예컨대, 도 46의 결정 유닛(4613)), 저장 유닛(예컨대, 도 46의 저장 유닛(4615)), 식별 유닛(예컨대, 도 46의 식별 유닛(4617)), 선택 유닛(예컨대, 도 46의 선택 유닛(4619)), 수신 유닛(예컨대, 도 46의 수신 유닛(4621)), 제공 유닛(예컨대, 도 46의 제공 유닛(4623)), 및 재생 유닛(예컨대, 도 46의 재생 유닛(4625))을 포함한다.
프로세싱 유닛(4605)(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4609 내지 4625))은, 자동으로 그리고 사용자로부터의 지시들 없이, 전자 디바이스의 사용자가 지리적 위치에 멈춰 있는 차량 내에 있다고 (예컨대, 결정 유닛(4613)으로) 결정하도록; 사용자가 지리적 위치에 있는 차량을 떠났다고 결정할 시에, 지리적 위치를 (예컨대, 식별 유닛(4617)으로) 식별하기 위해 위치 센서 유닛(예컨대, 위치 센서 유닛(4607))으로부터 (예컨대, 인출 유닛(4621)으로) 인출되는 포지셔닝 정보가 정확도 기준들을 만족하는지 여부를 (예컨대, 결정 유닛(4613)으로) 결정하도록; 포지셔닝 정보가 정확도 기준들을 만족하지 않는다고 (예컨대, 결정 유닛(4613)으로) 결정할 시에, 사용자에게 지리적 위치에 관한 정보를 입력하라는 프롬프트를 (예컨대, 제공 유닛(4623)으로) 제공하도록; 그리고 프롬프트를 제공하는 것에 응답하여, 사용자로부터 지리적 위치에 관한 정보를 (예컨대, 수신 유닛(4623)으로) 수신하도록 그리고 그 정보를 차량 위치 정보로서 (예컨대, 저장 유닛(4615)으로) 저장하도록 구성된다. 전자 디바이스(4600)의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4609 내지 4625))은 추가로 "발명의 내용" 섹션에서 전술된 바와 같은 F2 내지 F16 중 임의의 하나의 방법을 수행하도록 구성된다.
일부 실시예들에 따르면, 도 47은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4700)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 47에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4700)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 47에 도시된 바와 같이, 전자 디바이스(4700)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4701)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4703)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 전자 디바이스에 대한 포지셔닝 정보를 획득하도록 구성된 위치 센서 유닛(4707), 및 디스플레이 유닛(4701) 및 터치 감응형 표면 유닛(4703)과 결합된 프로세싱 유닛(4705)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 47은 전자 디바이스(4700)와 통합된 바와 같은 디스플레이 유닛(4701) 및 터치 감응형 표면 유닛(4703)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 일부 실시예들에서, 프로세싱 유닛은 검출 유닛(예컨대, 도 47의 검출 유닛(4709)), 표시 유닛(예컨대, 도 47의 표시 유닛(4711)), 인출 유닛(예컨대, 도 47의 인출 유닛(4713)), 결정 유닛(예컨대, 도 47의 결정 유닛(4715)), 식별 유닛(예컨대, 도 47의 식별 유닛(4717)), 잠금해제 유닛(예컨대, 도 47의 잠금해제 유닛(4719)), 및 검색 모드 진입 유닛(예컨대, 도 47의 검색 모드 진입 유닛(4721))을 포함한다.
프로세싱 유닛(4705)(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4709 내지 4719))은, 전자 디바이스의 사용자로부터 어떠한 지시들도 수신하지 않고서, 위치 센서 유닛(예컨대, 위치 센서 유닛(4707))을 사용하여, 전자 디바이스의 지리적 위치를 모니터링하도록; 모니터링된 지리적 위치에 기초하여, 전자 디바이스가 미리결정된 유형의 관심 지점의 임계 거리 내에 있다고 (예컨대, 결정 유닛(4715)으로) 결정하도록; 전자 디바이스가 관심 지점의 임계 거리 내에 있다고 결정하는 것에 따라, 관심 지점에서 현재 인기 있는 적어도 하나의 활동을 (예컨대, 식별 유닛(4717)으로) 식별하도록; 관심 지점에서 현재 인기 있는 적어도 하나의 활동에 관한 정보를 인출하는 것을 포함하는, 관심 지점에 관한 정보를 (예컨대, 인출 유닛(4713)으로) 인출하도록; 터치 감응형 표면 유닛(예컨대, 터치 감응형 표면 유닛(4703))을 통해, 제1 입력을 (예컨대, 검출 유닛(4709) 및/또는 터치 감응형 표면 유닛(4703)으로) 검출하도록 - 제1 입력은, 검출될 때, 전자 디바이스로 하여금 검색 모드에 진입하게 함 -; 그리고 제1 입력을 검출하는 것에 응답하여, (예컨대, 검색 모드 진입 유닛(4721)으로) 검색 모드에 진입하도록 구성되고, 검색 모드에 진입하는 것은, 검색 인터페이스에서 임의의 사용자 입력을 수신하기 전에, 디스플레이 유닛(예컨대, 디스플레이 유닛(4701))을 통해 어포던스를 (예컨대, 표시 유닛(4711) 및/또는 디스플레이 유닛(4701)으로) 제시하는 것을 포함하는데, 어포던스는, (i) 적어도 하나의 활동에 관한 정보, 및 (ii) 적어도 하나의 활동이 관심 지점에서 현재 인기 있는 것으로 식별되었다는 표시를 포함한다. 전자 디바이스(4700)의 일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4709 내지 4719))은 추가로 "발명의 내용" 섹션에서 전술된 바와 같은 G2 내지 G10 중 임의의 하나의 방법을 수행하도록 구성된다.
일부 실시예들에 따르면, 도 48은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4800)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 48에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4800)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 48에 도시된 바와 같이, 전자 디바이스(4800)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4801)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4803)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(4801) 및 터치 감응형 표면 유닛(4803)과 결합된 프로세싱 유닛(4805)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 48은 전자 디바이스(4800)와 통합된 바와 같은 디스플레이 유닛(4801) 및 터치 감응형 표면 유닛(4803)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 음성 통신 수신 유닛(예컨대, 도 48의 음성 통신 수신 유닛(4807)), 콘텐츠 항목 추출 유닛(예컨대, 도 48의 콘텐츠 항목 추출 유닛(4809)), 이용가능성 결정 유닛(예컨대, 도 48의 이용가능성 결정 유닛(4811)), 애플리케이션 식별 유닛(예컨대, 도 48의 애플리케이션 식별 유닛(4813)), 표시 유닛(예컨대, 도 48의 표시 유닛(4815)), 콘텐츠 항목 저장 유닛(예컨대, 도 48의 콘텐츠 항목 저장 유닛(4817)), 피드백 제공 유닛(예컨대, 도 48의 피드백 제공 유닛(4819)), 입력 검출 유닛(예컨대, 도 48의 입력 검출 유닛(4821)), 애플리케이션 열기 유닛(예컨대, 도 48의 수신 유닛(4823)), 채움 유닛(예컨대, 도 48의 채움 유닛(4825)), 및 음성 통신 분석 유닛(예컨대, 도 48의 음성 통신 분석 유닛(4827))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4807 내지 4827))은, (예컨대, 음성 통신 수신 유닛(4807)으로) 음성 통신의 적어도 일부분을 수신하도록 구성되고, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다. 프로세싱 유닛은 추가로, 원격 디바이스의 원격 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 (예컨대, 콘텐츠 항목 추출 유닛(4809)으로) 콘텐츠 항목을 추출하도록, 그리고 (예컨대, 이용가능성 결정 유닛(4811)으로) 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능한지 여부를 결정하도록 구성된다. 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, 프로세싱 유닛은 추가로, (i) (예컨대, 애플리케이션 식별 유닛(4813)으로) 콘텐츠 항목과 연관되는 애플리케이션을 식별하도록 그리고 (ii) (예컨대, 표시 유닛(4815) 및/또는 디스플레이 유닛(4801)으로) 디스플레이 상에 콘텐츠 항목의 선택가능한 설명을 디스플레이하도록 구성된다. (예컨대, 입력 검출 유닛(4821) 및/또는 터치 감응형 표면 유닛(4803)으로) 선택가능한 설명의 선택을 검출하는 것에 응답하여, 프로세싱 유닛은 (예컨대, 콘텐츠 항목 저장 유닛(4817)으로) 식별된 애플리케이션으로 제시를 위해 콘텐츠 항목을 저장하도록 구성된다.
전자 디바이스(4800)의 일부 실시예들에서, 콘텐츠 항목은 새로운 이벤트이다.
전자 디바이스(4800)의 일부 실시예들에서, 콘텐츠 항목은 전자 디바이스 상의 캘린더 애플리케이션과 현재 연관되는 이벤트에 대한 새로운 이벤트 상세사항들이다.
전자 디바이스(4800)의 일부 실시예들에서, 콘텐츠 항목은 새로운 연락처이다.
전자 디바이스(4800)의 일부 실시예들에서, 콘텐츠 항목은 전자 디바이스 상의 전화 애플리케이션과 연관되는 기존의 연락처에 대한 새로운 연락처 정보이다.
전자 디바이스(4800)의 일부 실시예들에서, 음성 통신은 라이브 전화 통화이다.
전자 디바이스(4800)의 일부 실시예들에서, 음성 통신은 라이브 페이스타임 통화이다.
전자 디바이스(4800)의 일부 실시예들에서, 음성 통신은 녹음된 음성메일이다.
전자 디바이스(4800)의 일부 실시예들에서, 선택가능한 설명을 디스플레이하는 것은, (예컨대, 표시 유닛(4815) 및/또는 디스플레이 유닛(4801)으로) 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 선택가능한 설명을 디스플레이하는 것을 포함한다.
전자 디바이스(4800)의 일부 실시예들에서, 선택가능한 설명은 (예컨대, 표시 유닛(4815) 및/또는 디스플레이 유닛(4801)을 사용하여) 콘텐츠 항목이 음성 통신과 연관된다는 표시와 함께 디스플레이된다.
전자 디바이스(4800)의 일부 실시예들에서, 선택을 검출하는 것은, (예컨대, 입력 검출 유닛(4821)을 사용하여) 최근 통화들을 포함하는 사용자 인터페이스가 디스플레이되는 동안 선택을 수신하는 것을 포함한다.
전자 디바이스(4800)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 콘텐츠 항목의 선택가능한 설명을 디스플레이하는 것과 함께, (예컨대, 피드백 제공 유닛(4819)을 사용하여) 전자 디바이스의 사용자에게 콘텐츠 항목이 검출되었다는 피드백을 제공하도록 구성된다.
전자 디바이스(4800)의 일부 실시예들에서, 피드백을 제공하는 것은, (예컨대, 피드백 제공 유닛(4819)을 통해) 전자 디바이스에 근접해 있는 상이한 전자 디바이스로 콘텐츠 항목의 검출에 관한 정보를 전송하는 것을 포함한다.
전자 디바이스(4800)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 음성 통신이 제1 물리적 위치에 관한 정보를 포함한다고 결정하도록; (예컨대, 입력 검출 유닛(4821)을 통해) 입력을 검출하도록; 그리고, 입력을 검출하는 것에 응답하여, (예컨대, 애플리케이션 열기 유닛(4823)을 통해) 위치 데이터를 수용할 수 있는 애플리케이션을 열도록 그리고 애플리케이션을 제1 물리적 위치에 관한 정보로 채우도록 구성된다.
전자 디바이스(4800)의 일부 실시예들에서, 애플리케이션은 지도 애플리케이션이고, 지도 애플리케이션을 제1 물리적 위치에 관한 정보로 채우는 것은, 지도 애플리케이션 내에 디스플레이되는 지도를 제1 물리적 위치에 대응하는 위치 식별자로 채우는 것을 포함한다.
전자 디바이스(4800)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 음성 통신이 제1 물리적 위치에 관한 정보를 포함한다고 결정하도록; (예컨대, 입력 검출 유닛(4821)을 통해) 입력을 검출하도록, 그리고 입력을 검출하는 것에 응답하여, (예컨대, 채움 유닛(4825)을 통해) 검색 인터페이스를 제1 물리적 위치에 관한 정보로 채우도록 구성된다.
전자 디바이스(4800)의 일부 실시예들에서, 콘텐츠 항목을 추출하는 것은, 미리결정된 유형의 콘텐츠를 검출하기 위해 음성 통신의 일부분을 분석하는 것을 포함하고, 분석하는 것은, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 음성 통신을 출력하면서 수행된다.
전자 디바이스(4800)의 일부 실시예들에서, 음성 통신을 분석하는 것은, (예컨대, 음성 통신 분석 유닛(4827)을 사용하여): (i) 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 텍스트로 변환하는 것; (ii) 텍스트에 자연 언어 프로세싱 알고리즘을 적용하여 텍스트가 하나 이상의 미리정의된 키워드들을 포함하는지 여부를 결정하는 것; 및 (iii) 텍스트가 각각의 미리정의된 키워드를 포함한다는 결정에 따라, 음성 통신이 콘텐츠 항목을 설명하는 스피치를 포함한다고 결정하는 것을 포함한다
전자 디바이스(4800)의 일부 실시예들에서, 적어도 음성 통신의 일부분을 수신하는 것은, 전자 디바이스의 사용자로부터 음성 통신의 일부분이 분석되어야 한다는 표시(예컨대, 지시)를 수신하는 것을 포함한다.
전자 디바이스(4800)의 일부 실시예들에서, 표시는 하드웨어 버튼의 선택에 대응한다.
전자 디바이스(4800)의 일부 실시예들에서, 표시는 단어들 "hey Siri"를 포함하는 전자 디바이스의 사용자로부터의 커맨드에 대응한다.
전자 디바이스(4800)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 음성 통신의 제2 부분을 수신하도록 구성되고, 제2 부분은 원격 디바이스의 원격 사용자에 의해 제공된 스피치 및 전자 디바이스의 사용자에 의해 제공된 스피치를 포함한다(예컨대, 음성 통신은 라이브 전화 통화이고 제2 부분은 사용자와 원격 사용자 사이의 논의를 포함한다). 프로세싱 유닛은 또한, (예컨대, 콘텐츠 항목 추출 유닛(4809)으로) 원격 디바이스의 원격 사용자에 의해 제공된 스피치 및 전자 디바이스의 사용자에 의해 제공된 스피치에 적어도 부분적으로 기초하여 제2 콘텐츠 항목을 추출하도록; 제2 콘텐츠 항목이 전자 디바이스 상에서 현재 이용가능하지 않다는 결정에 따라, (i) (예컨대, 애플리케이션 식별 유닛(4813)으로) 제2 콘텐츠 항목과 연관되는 제2 애플리케이션을 식별하도록 그리고 (ii) (예컨대, 표시 유닛(4815) 및/또는 디스플레이 유닛(4801)으로) 디스플레이 상에 제2 콘텐츠 항목의 제2 선택가능한 설명을 디스플레이하도록 구성된다. 제2 선택가능한 설명의 선택을 검출하는 것에 응답하여, 프로세싱 유닛은 (예컨대, 콘텐츠 항목 저장 유닛(4817)으로) 식별된 제2 애플리케이션으로 제시를 위해 제2 콘텐츠 항목을 저장하도록 구성된다.
전자 디바이스(4800)의 일부 실시예들에서, 선택가능한 설명 및 제2 선택가능한 설명은, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 디스플레이된다.
일부 실시예들에 따르면, 도 49는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(4900)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 49에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(4900)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 49에 도시된 바와 같이, 전자 디바이스(4900)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(4901)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(4903)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(4901) 및 터치 감응형 표면 유닛(4903)과 결합된 프로세싱 유닛(4905)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 49는 전자 디바이스(4900)와 통합된 바와 같은 디스플레이 유닛(4901) 및 터치 감응형 표면 유닛(4903)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 음성 통신 수신 유닛(예컨대, 도 49의 음성 통신 수신 유닛(4907)), 콘텐츠 항목 추출 유닛(예컨대, 도 49의 콘텐츠 항목 추출 유닛(4909)), 표시 제공 유닛(예컨대, 도 49의 표시 제공 유닛(4911)), 입력 검출 유닛(예컨대, 도 49의 입력 검출 유닛(4913)), 애플리케이션 열기 유닛(예컨대, 도 49의 애플리케이션 열기 유닛(4915)), 애플리케이션 채움 유닛(예컨대, 도 49의 애플리케이션 채움 유닛(4917)), 피드백 제공 유닛(예컨대, 도 49의 피드백 제공 유닛(4919)), 및 음성 통신 분석 유닛(예컨대, 도 49의 음성 통신 분석 유닛(4921))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(4907 내지 4921))은, (예컨대, 음성 통신 수신 유닛(4907)으로) 음성 통신의 적어도 일부분을 수신하도록 구성되고, 음성 통신의 일부분은 전자 디바이스의 사용자와는 별개인 원격 디바이스의 원격 사용자에 의해 제공된 스피치를 포함한다. 프로세싱 유닛은 추가로, (예컨대, 콘텐츠 항목 추출 유닛(4909)으로) 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하도록 구성된다. 음성 통신이 물리적 위치를 식별하는 스피치를 포함한다고 결정하는 것에 응답하여, 프로세싱 유닛은 (예컨대, 콘텐츠 항목 추출 유닛(4909)으로) 물리적 위치에 관한 정보가 검출되었다는 표시를 제공하도록 구성된다. 프로세싱 유닛은 또한, 터치 감응형 표면 유닛을 통해, (예컨대, 입력 검출 유닛(4911)으로) 입력을 검출하도록 구성된다. 입력을 검출하는 것에 응답하여, 프로세싱 유닛은, (i) (예컨대, 애플리케이션 열기 유닛(4913)으로) 지리적 위치 데이터를 수용하는 애플리케이션을 열도록 그리고 (ii) (예컨대, 애플리케이션 채움 유닛(4915)으로) 애플리케이션을 물리적 위치에 관한 정보로 채우도록 구성된다.
전자 디바이스(4900)의 일부 실시예들에서, 음성 통신은 라이브 전화 통화이다.
전자 디바이스(4900)의 일부 실시예들에서, 음성 통신은 라이브 페이스타임 통화이다.
전자 디바이스(4900)의 일부 실시예들에서, 음성 통신은 녹음된 음성메일이다.
전자 디바이스(4900)의 일부 실시예들에서, 표시를 제공하는 것은, 전화 애플리케이션을 사용하여 이루어진 최근 통화들을 포함하는 사용자 인터페이스 내에 물리적 위치의 선택가능한 설명을 디스플레이하는 것을 포함한다.
전자 디바이스(4900)의 일부 실시예들에서, 선택가능한 설명은 콘텐츠 항목이 음성 통신과 연관됨을 나타낸다.
전자 디바이스(4900)의 일부 실시예들에서, 입력을 검출하는 것은, 최근 통화들을 포함하는 사용자 인터페이스가 디스플레이되는 동안 선택가능한 설명 위에서 입력을 검출하는 것을 포함한다.
전자 디바이스(4900)의 일부 실시예들에서, 표시를 제공하는 것은, (예컨대, 피드백 제공 유닛(4919)으로) 전자 디바이스의 사용자에게 햅틱 피드백을 제공하는 것을 포함한다.
전자 디바이스(4900)의 일부 실시예들에서, 표시를 제공하는 것은, (예컨대, 피드백 제공 유닛(4919)으로) 전자 디바이스에 근접해 있는 상이한 전자 디바이스로 물리적 위치에 관한 정보를 전송하는 것을 포함한다.
전자 디바이스(4900)의 일부 실시예들에서, 음성 통신이 물리적 위치를 설명하는 스피치를 포함한다고 결정하는 것은, (예컨대, 음성 통신 분석 유닛(4921)을 사용하여) 물리적 위치들에 관한 정보를 검출하기 위해 음성 통신의 일부분을 분석하는 것을 포함하고, 분석하는 것은, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 음성 통신을 출력하면서 수행된다.
전자 디바이스(4900)의 일부 실시예들에서, 적어도 음성 통신의 일부분을 수신하는 것은, 전자 디바이스의 사용자로부터 음성 통신의 일부분이 분석되어야 한다는 지시를 수신하는 것을 포함한다.
전자 디바이스(4900)의 일부 실시예들에서, 지시는 하드웨어 버튼의 선택에 대응한다.
전자 디바이스(4900)의 일부 실시예들에서, 지시는 단어들 "hey Siri"를 포함하는 전자 디바이스의 사용자로부터의 커맨드에 대응한다.
일부 실시예들에 따르면, 도 50은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(5000)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 50에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(5000)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 50에 도시된 바와 같이, 전자 디바이스(5000)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(5001)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(5003)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(5001) 및 터치 감응형 표면 유닛(5003)과 결합된 프로세싱 유닛(5005)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 50은 전자 디바이스(5000)와 통합된 바와 같은 디스플레이 유닛(5001) 및 터치 감응형 표면 유닛(5003)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 제시 유닛(예컨대, 도 50의 제시 유닛(5007)), 다음 입력 결정 유닛(예컨대, 도 50의 다음 입력 결정 유닛(5009)), 콘텐츠 분석 유닛(예컨대, 도 50의 콘텐츠 분석 유닛(5011)), 선택 수신 유닛(예컨대, 도 50의 선택 수신 유닛(5013)), 타이핑 입력 모니터링 유닛(예컨대, 도 50의 타이핑 입력 모니터링 유닛(5015)), 및 제시 중지 유닛(예컨대, 도 50의 제시 중지 유닛(5017))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5007 내지 5017))은, (예컨대, 제시 유닛(5007) 및/또는 디스플레이 유닛(5001)으로) 디스플레이 상의 메시징 애플리케이션에서, 텍스트 입력 필드 및 대화 기록을 제시하도록 구성된다. 메시징 애플리케이션이 디스플레이 상에 제시되는 동안, 프로세싱 유닛은 또한, (예컨대, 다음 입력 결정 유닛(5009)으로) 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하도록 구성된다. 프로세싱 유닛은 추가적으로, (예컨대, 콘텐츠 분석 유닛(5011)으로) 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 분석하여, 분석된 콘텐츠의 일부분에 적어도 부분적으로 기초하여, 제안된 물리적 위치를 결정하도록; (예컨대, 제시 유닛(5007)으로) 디스플레이 상의 메시징 애플리케이션 내에서, 제안된 물리적 위치를 식별하는 선택가능한 사용자 인터페이스 요소를 제시하도록; (예컨대, 선택 수신 유닛(5013) 및/또는 터치 감응형 표면 유닛(5003)으로) 선택가능한 사용자 인터페이스 요소의 선택을 수신하도록; 그리고 선택을 수신하는 것에 응답하여, (예컨대, 제시 유닛(5007)으로) 텍스트 입력 필드에서 제안된 물리적 위치의 표현을 제시하도록 구성된다.
전자 디바이스(5000)의 일부 실시예들에서, 메시징 애플리케이션은 가상 키보드를 포함하고, 선택가능한 사용자 인터페이스 요소는, 가상 키보드에 인접하게 그리고 그의 상부에 있는 제안 부분에서 디스플레이된다.
전자 디바이스(5000)의 일부 실시예들에서, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 것은, 대화 기록이 사용자의 현재 위치에 관한 질문을 포함함을 검출하기 위해 텍스트 입력 필드 및 대화 기록과 연관된 콘텐츠를 프로세싱하는 것을 포함한다.
전자 디바이스(5000)의 일부 실시예들에서, 콘텐츠를 프로세싱하는 것은, 질문을 형성하는 하나 이상의 미리정의된 키워드들을 검출하기 위해 자연 언어 프로세싱 알고리즘을 적용하는 것을 포함한다.
전자 디바이스(5000)의 일부 실시예들에서, 질문은 사용자와는 별개인 제2 사용자로부터 수신되는 메시지 내에 포함된다.
전자 디바이스(5000)의 일부 실시예들에서, 전자 디바이스의 사용자로부터의 다음 가능성 있는 입력이 물리적 위치에 관한 정보라고 결정하는 것은, (예컨대, 타이핑 입력 모니터링 유닛(5015)을 사용하여) 메시징 애플리케이션의 텍스트 입력 부분에서 사용자로부터 수신되는 타이핑 입력들을 모니터링하는 것을 포함한다.
전자 디바이스(5000)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자가 타이핑 중이고 선택가능한 사용자 인터페이스 요소를 선택하지 않았다는 결정에 따라, (예컨대, 제시 중지 유닛(5017)으로) 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지하도록 구성된다.
전자 디바이스(5000)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자가 선택가능한 사용자 인터페이스 요소를 선택하지 않을 것임을 나타내는 추가 입력을 사용자가 제공하였다는 결정에 따라, (예컨대, 제시 중지 유닛(5017)으로) 선택가능한 사용자 인터페이스 요소를 제시하는 것을 중지하도록 구성된다.
전자 디바이스(5000)의 일부 실시예들에서, 제안된 물리적 위치의 표현은 전자 디바이스의 현재 지리적 위치를 식별하는 정보를 포함한다.
전자 디바이스(5000)의 일부 실시예들에서, 제안된 물리적 위치의 표현은 주소이다.
전자 디바이스(5000)의 일부 실시예들에서, 제안된 물리적 위치의 표현은 제안된 물리적 위치에 대한 식별자를 포함하는 지도 객체이다.
전자 디바이스(5000)의 일부 실시예들에서, 제안된 물리적 위치는, 메시징 애플리케이션 이외의 애플리케이션에서 사용자가 최근에 본 위치에 대응한다.
전자 디바이스(5000)의 일부 실시예들에서, 메시징 애플리케이션은 이메일 애플리케이션이다.
전자 디바이스(5000)의 일부 실시예들에서, 메시징 애플리케이션은 텍스트 메시징 애플리케이션이다.
일부 실시예들에 따르면, 도 51은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(5100)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 51에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(5100)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 51에 도시된 바와 같이, 전자 디바이스(5100)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(5101)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(5103)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(5101) 및 터치 감응형 표면 유닛(5103)과 결합된 프로세싱 유닛(5105)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 51은 전자 디바이스(5100)와 통합된 바와 같은 디스플레이 유닛(5101) 및 터치 감응형 표면 유닛(5103)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 정보 획득 유닛(예컨대, 도 51의 정보 획득 유닛(5107)), 애플리케이션 종료 유닛(예컨대, 도 51의 애플리케이션 종료 유닛(5109)), 요청 수신 유닛(예컨대, 도 51의 요청 수신 유닛(5111)), 애플리케이션 능력 결정 유닛(예컨대, 도 51의 애플리케이션 능력 결정 유닛(5113)), 애플리케이션 제시 유닛(예컨대, 도 51의 애플리케이션 제시 유닛(5115)), 애플리케이션 채움 유닛(예컨대, 도 51의 애플리케이션 채움 유닛(5117)), 입력 검출 유닛(예컨대, 도 51의 입력 검출 유닛(5119)), 애플리케이션-스위칭 사용자 인터페이스 표시 유닛(예컨대, 도 51의 애플리케이션-스위칭 사용자 인터페이스 표시 유닛(5121)), 애플리케이션 연관성 결정 유닛(예컨대, 도 51의 애플리케이션 연관성 결정 유닛(5123)), 및 액세스 제공 유닛(예컨대, 도 51의 액세스 제공 유닛(5125))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5107 내지 5125))은, 제1 애플리케이션을 디스플레이하는 동안, (예컨대, 정보 획득 유닛(5107)으로) 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하도록 구성된다. 프로세싱 유닛은 또한, (예컨대, 애플리케이션 종료 유닛(5109)으로) 제1 애플리케이션을 종료하도록, 그리고 제1 애플리케이션을 종료한 후에, (예컨대, 요청 수신 유닛(5111)으로) 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하도록 구성된다. 요청을 수신하는 것에 응답하여 그리고 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정(예컨대, 애플리케이션 능력 결정 유닛(5113)에 의해 프로세싱되거나 수행된 결정)에 따라, (예컨대, 애플리케이션 제시 유닛(5115)으로) 제2 애플리케이션을 제시하도록, 제2 애플리케이션을 제시하는 것은, (예컨대, 애플리케이션 채움 유닛(5117)으로) 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보로 제2 애플리케이션을 채우는 것을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 제2 애플리케이션을 열라는 요청을 수신하는 것은, 제1 애플리케이션을 종료한 후에, (예컨대, 입력 검출 유닛(5119)으로) 제2 애플리케이션에 대한 어포던스 위에서의 입력을 검출하는 것을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 제2 애플리케이션에 대한 어포던스는 전자 디바이스의 홈 화면 내에 디스플레이되는 아이콘이다.
전자 디바이스(5100)의 일부 실시예들에서, 입력을 검출하는 것은, (i) 물리적 홈 버튼에서의 더블 탭을 검출하는 것, (ii) 더블 탭을 검출하는 것에 응답하여, (예컨대, 앱-스위칭 사용자 인터페이스 디스플레이 유닛(5121)으로) 애플리케이션-스위칭 사용자 인터페이스를 디스플레이하는 것, 및 (iii) 애플리케이션-스위칭 사용자 인터페이스 내로부터 어포던스의 선택을 검출하는 것을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 제2 애플리케이션을 채우는 것은, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 것을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 사용자 인터페이스 객체는, 제1 물리적 위치가 제1 애플리케이션에서 최근에 보여졌다는 것을 사용자에게 알려주는 텍스트 설명을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 사용자 인터페이스 객체는 제2 애플리케이션 내에 디스플레이된 지도이고, 제2 애플리케이션을 채우는 것은, 제1 물리적 위치의 식별자를 포함하도록 지도를 채우는 것을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 제2 애플리케이션에는 가상 키보드가 제시되고, 사용자 인터페이스 객체는 가상 키보드의 상부에 디스플레이된다.
전자 디바이스(5100)의 일부 실시예들에서, 정보를 획득하는 것은 제2 물리적 위치에 관한 정보를 획득하는 것을 포함하고, 사용자 인터페이스 객체를 디스플레이하는 것은, 제2 물리적 위치에 관한 정보와 함께 사용자 인터페이스 객체를 디스플레이하는 것을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정(예컨대, 애플리케이션 연관성 결정 유닛(5123) 및/또는 애플리케이션 능력 결정 유닛(5113)에 의해 수행되는 하나 이상의 결정들)은: (i) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것; (ii) 제2 애플리케이션이 지도 상에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 것; (iii) 제2 애플리케이션이 지리적 위치 정보를 사용하여 경로 안내를 가능하게 할 수 있다고 결정하는 것; 및 (iv) 제2 애플리케이션이 지리적 위치 정보를 사용하여 운송 서비스들을 찾아내고 제공할 수 있다고 결정하는 것 중 하나 이상을 포함한다.
전자 디바이스(5100)의 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 결정은, 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것을 포함하고, 입력 수신 필드는, 제2 애플리케이션 내에 디스플레이되는 지도 내의 검색을 허용하는 검색 상자이다.
전자 디바이스(5100)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 요청을 수신하는 것에 응답하여, 사용자에 대한 애플리케이션 사용 이력에 기초하여, (예컨대, 애플리케이션 연관성 결정 유닛(5123)을 사용하여) 제2 애플리케이션이 제1 애플리케이션과 연관되는지 여부를 결정하도록 구성된다.
전자 디바이스(5100)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 제2 애플리케이션을 제시하기 전에, (예컨대, 액세스 제공 유닛(5125)을 사용하여) 제1 물리적 위치를 식별하는 정보에의 액세스를 제2 애플리케이션에 제공하도록 구성되고, 액세스가 제공되기 전에, 제2 애플리케이션은 제1 물리적 위치를 식별하는 정보에 액세스할 수 없었다.
일부 실시예들에 따르면, 도 52는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(5200)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 52에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(5200)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 52에 도시된 바와 같이, 전자 디바이스(5200)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(5201)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(5203)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(5201) 및 터치 감응형 표면 유닛(5203)과 결합된 프로세싱 유닛(5205)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 52는 전자 디바이스(5200)와 통합된 바와 같은 디스플레이 유닛(5201) 및 터치 감응형 표면 유닛(5203)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 정보 획득 유닛(예컨대, 도 52의 정보 획득 유닛(5207)), 입력 검출 유닛(예컨대, 도 52의 입력 검출 유닛(5209)), 애플리케이션 식별 유닛(예컨대, 도 52의 애플리케이션 식별 유닛(5211)), 어포던스 제시 유닛(예컨대, 도 52의 어포던스 제시 유닛(5213)), 애플리케이션 열기 유닛(예컨대, 도 52의 애플리케이션 열기 유닛(5215)), 애플리케이션 채움 유닛(예컨대, 도 52의 애플리케이션 채움 유닛(5217)), 애플리케이션-스위칭 사용자 인터페이스 제시 유닛(예컨대, 도 52의 애플리케이션-스위칭 사용자 인터페이스 제시 유닛(5219)), 및 애플리케이션 능력 결정 유닛(예컨대, 도 52의 애플리케이션 능력 결정 유닛(5221))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5207 내지 5221))은 (예컨대, 정보 획득 유닛(5207)으로) 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하도록 그리고 (예컨대, 입력 검출 유닛(5209)으로) 제1 입력을 검출하도록 구성된다. 제1 입력을 검출하는 것에 응답하여, 프로세싱 유닛은, (i) (예컨대, 애플리케이션 식별 유닛(5209)으로) 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하도록, 그리고 (ii) (예컨대, 어포던스 제시 유닛(5213)으로) 디스플레이의 적어도 일부분 위에서, 제1 물리적 위치에 관한 정보와 함께 제2 애플리케이션을 열기 위한 제안으로, 제1 애플리케이션과는 별개인 어포던스를 제시하도록 구성된다. 프로세싱 유닛은 또한, (예컨대, 입력 검출 유닛(5209)으로) 어포던스에서의 제2 입력을 검출하도록 구성된다. 어포던스에서의 제2 입력을 검출하는 것에 응답하여, 프로세싱 유닛은, (i) (예컨대, 애플리케이션 열기 유닛(5215)으로) 제2 애플리케이션을 열도록, 그리고 (ii) (예컨대, 애플리케이션 채움 유닛(5217)으로) 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하도록 제2 애플리케이션을 채우도록 구성된다.
전자 디바이스(5200)의 일부 실시예들에서, 제1 입력은 애플리케이션-스위칭 사용자 인터페이스를 열라는 요청에 대응한다(예컨대, 제1 입력은 전자 디바이스의 물리적 홈 버튼 상의 더블 탭이다).
전자 디바이스(5200)의 일부 실시예들에서, 어포던스는 애플리케이션-스위칭 사용자 인터페이스 내에 제시된다.
전자 디바이스(5200)의 일부 실시예들에서, 어포던스를 제시하는 것은, 어포던스를 제시하는 것과 함께, (예컨대, 애플리케이션-스위칭 사용자 인터페이스 제시 유닛(5219)을 사용하여) 전자 디바이스 상에서 실행 중인 애플리케이션들의 표현들을 애플리케이션-스위칭 사용자 인터페이스 내에 제시하는 것; 및 애플리케이션들의 표현들의 하부에 위치되는 디스플레이의 영역에서 어포던스를 제시하는 것을 포함한다.
전자 디바이스(5200)의 일부 실시예들에서, 제1 입력은 전자 디바이스의 홈 화면을 열라는 요청에 대응한다(예컨대, 제1 입력은 전자 디바이스의 물리적 홈 버튼 상의 단일 탭이다).
전자 디바이스(5200)의 일부 실시예들에서, 어포던스는 홈 화면의 일부분 위에 제시된다.
전자 디바이스(5200)의 일부 실시예들에서, 제안은 제2 애플리케이션과 연관된 유형에 특정한 텍스트 설명을 포함한다.
전자 디바이스(5200)의 일부 실시예들에서, 제2 애플리케이션을 채우는 것은, 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 것을 포함한다.
전자 디바이스(5200)의 일부 실시예들에서, 사용자 인터페이스 객체는, 제1 물리적 위치가 제1 애플리케이션에서 최근에 보여졌다는 것을 사용자에게 알려주는 텍스트 설명을 포함한다.
전자 디바이스(5200)의 일부 실시예들에서, 사용자 인터페이스 객체는 제2 애플리케이션 내에 디스플레이된 지도이고, 제2 애플리케이션을 채우는 것은, 제1 물리적 위치의 식별자를 포함하도록 지도를 채우는 것을 포함한다
전자 디바이스(5200)의 일부 실시예들에서, 제2 애플리케이션에는 가상 키보드가 제시되고, 사용자 인터페이스 객체는 가상 키보드의 상부에 디스플레이된다.
전자 디바이스(5200)의 일부 실시예들에서, 지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하는 것(예컨대, 애플리케이션 능력 결정 유닛(5221)을 사용하여 수행되는 하나 이상의 결정들)은: (i) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것; (ii) 제2 애플리케이션이 지도 상에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 것; (iii) 제2 애플리케이션이 지리적 위치 정보를 사용하여 경로 안내를 가능하게 할 수 있다고 결정하는 것; 및 (iv) 제2 애플리케이션이 지리적 위치 정보를 사용하여 운송 서비스들을 찾아내고 제공할 수 있다고 결정하는 것 중 하나 이상을 포함한다.
전자 디바이스(5200)의 일부 실시예들에서, 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다고 식별하는 것은, (예컨대, 애플리케이션 능력 결정 유닛(5221)을 사용하여) 제2 애플리케이션이, 지리적 위치 데이터를 수용하며 프로세싱할 수 있는 입력 수신 필드를 포함한다고 결정하는 것을 포함하고, 입력 수신 필드는, 제2 애플리케이션 내에 디스플레이되는 지도 내의 검색을 허용하는 검색 상자이다.
일부 실시예들에 따르면, 도 53은 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(5300)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 53에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(5300)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 53에 도시된 바와 같이, 전자 디바이스(5300)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(5301)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(5303)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(5301) 및 터치 감응형 표면 유닛(5303)과 결합된 프로세싱 유닛(5305)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 53은 전자 디바이스(5300)와 통합된 바와 같은 디스플레이 유닛(5301) 및 터치 감응형 표면 유닛(5303)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은, 정보 획득 유닛(예컨대, 도 53의 정보 획득 유닛(5307)), 차량 탑승 결정 유닛(예컨대, 도 53의 차량 탑승 결정 유닛(5309)), 프롬프트 제공 유닛(예컨대, 도 53의 프롬프트 제공 유닛(5311)), 지시 수신 유닛(예컨대, 도 53의 지시 수신 유닛(5313)), 경로 안내 가능화 유닛(예컨대, 도 53의 경로 안내 가능화 유닛(5315)), 및 메시지 검출 유닛(예컨대, 도 53의 메시지 검출 유닛(5317))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5307 내지 5317))은, (예컨대, 정보 획득 유닛(5307)으로) 전자 디바이스 상에서 실행 중인 제1 애플리케이션에서 사용자가 본 제1 물리적 위치를 식별하는 정보를 획득하도록 구성된다. 프로세싱 유닛은 또한, (예컨대, 차량 탑승 결정 유닛(5309)으로) 사용자가 차량에 탔다고 결정하도록 구성된다. 사용자가 차량에 탔다고 결정하는 것에 응답하여, 프로세싱 유닛은, (예컨대, 프롬프트 제공 유닛(5311)으로) 사용자에게 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 프롬프트를 제공하도록, 프롬프트를 제공하는 것에 응답하여, (예컨대, 지시 수신 유닛(5313)으로) 사용자로부터 제1 물리적 위치를 경로 안내를 위한 목적지로서 사용하라는 지시를 수신하도록 구성된다. 프로세싱 유닛은 추가적으로, (예컨대, 경로 안내 가능화 유닛(5307)으로) 제1 물리적 위치로의 경로 안내를 가능하게 하도록 구성된다.
전자 디바이스(5300)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 전자 디바이스에 의해 메시지가 수신되었음을 검출하도록 - (예컨대, 메시지 검출 유닛(5317)을 통해) 메시지가 제2 물리적 위치를 식별하는 정보를 포함함을 검출하는 것을 포함함 -; 그리고, 검출하는 것에 응답하여, (예컨대, 프롬프트 제공 유닛(5311)을 통해) 사용자에게 제2 물리적 위치를 경로 안내를 위한 새로운 목적지로서 사용하라는 새로운 프롬프트를 제공하도록 구성된다.
전자 디바이스(5300)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 사용자로부터 제2 물리적 위치를 새로운 목적지로서 사용하라는 지시를 수신하는 것에 응답하여, (예컨대, 경로 안내 가능화 유닛(5315)을 통해) 제2 물리적 위치로의 경로 안내를 가능하게 하도록 구성된다.
전자 디바이스(5300)의 일부 실시예들에서, 메시지가 제2 물리적 위치를 식별하는 정보를 포함함을 검출하는 것은, 전자 디바이스 상에서 이용가능한 가상 어시스턴트가, 전자 디바이스와 통신 상태에 있는 오디오 시스템을 통해 사용자에게 메시지를 읽어 주는 동안 검출을 수행하는 것을 포함한다.
전자 디바이스(5300)의 일부 실시예들에서, 사용자가 차량에 탔다고 결정하는 것은, 전자 디바이스가 차량과의 통신 링크를 확립했음을 검출하는 것을 포함한다.
전자 디바이스(5300)의 일부 실시예들에서, 경로 안내를 가능하게 하는 것은, 전자 디바이스의 디스플레이를 통해 경로 안내를 제공하는 것을 포함한다.
전자 디바이스(5300)의 일부 실시예들에서, 경로 안내를 가능하게 하는 것은, 제1 물리적 위치를 식별하는 정보를 차량으로 전송하는 것을 포함한다.
전자 디바이스(5300)의 일부 실시예들에서, 경로 안내를 가능하게 하는 것은, 전자 디바이스와 통신 상태에 있는 오디오 시스템(예컨대, 차량의 스피커들 또는 디바이스 자신의 내부 스피커들)을 통해 경로 안내를 제공하는 것을 포함한다.
일부 실시예들에 따르면, 도 54는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(5400)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 54에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(5400)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 54에 도시된 바와 같이, 전자 디바이스(5400)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(5401)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(5403)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(5401) 및 터치 감응형 표면 유닛(5403)과 결합된 프로세싱 유닛(5405)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 54는 전자 디바이스(5400)와 통합된 바와 같은 디스플레이 유닛(5401) 및 터치 감응형 표면 유닛(5403)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 제시 유닛(예컨대, 도 54의 제시 유닛(5407)), 요청 수신 유닛(예컨대, 도 54의 요청 수신 유닛(5409)), 사용자 인터페이스 객체 제공 유닛(예컨대, 도 54의 사용자 인터페이스 객체 제공 유닛(5411)), 사전행동적 붙여넣기 유닛(예컨대, 도 54의 사전행동적 붙여넣기 유닛(5413)), 및 능력 결정 유닛(예컨대, 도 54의 능력 결정 유닛(5415))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5407 내지 5415))은, (예컨대, 제시 유닛(5407) 및/또는 디스플레이 유닛(5401)으로) 제1 애플리케이션에서 콘텐츠를 제시하도록; (예컨대, 요청 수신 유닛 및/또는 터치 감응형 표면 유닛(5403)으로) 사용자로부터 제1 애플리케이션과는 별개인 제2 애플리케이션을 열라는 요청을 수신하도록 - 제2 애플리케이션은 입력 수신 필드를 포함함 -; 요청을 수신하는 것에 응답하여, (예컨대, 제시 유닛(5407) 및/또는 디스플레이 유닛(5401)으로) 입력 수신 필드를 갖는 제2 애플리케이션을 제시하도록; 입력 수신 필드에서 임의의 사용자 입력을 수신하기 전에, (예컨대, 사용자 인터페이스 객체 제공 유닛(5411) 및/또는 디스플레이 유닛(5401)으로) 사용자가 콘텐츠의 적어도 일부분을 입력 수신 필드 내에 붙여넣을 수 있게 하기 위한 선택가능한 사용자 인터페이스 객체를 제공하도록; 그리고 선택가능한 사용자 인터페이스 객체의 선택을 검출하는 것에 응답하여, (예컨대, 사전행동적 붙여넣기 유닛(5413)으로) 콘텐츠의 일부분을 입력 수신 필드 내에 붙여넣도록 구성된다.
전자 디바이스(5400)의 일부 실시예들에서, 선택가능한 사용자 인터페이스 객체를 제공하기 전에, 프로세싱 유닛은 추가로, (예컨대, 능력 결정 유닛(5415)으로) 입력 수신 필드를 콘텐츠의 일부분을 수용할 수 있는 필드로서 식별하도록 구성된다.
전자 디바이스(5400)의 일부 실시예들에서, 입력 수신 필드를 콘텐츠의 일부분을 수용할 수 있는 필드로서 식별하는 것은, 입력 수신 필드의 선택을 검출하는 것에 응답하여 수행된다.
전자 디바이스(5400)의 일부 실시예들에서, 콘텐츠의 일부분은 이미지에 대응한다.
전자 디바이스(5400)의 일부 실시예들에서, 콘텐츠의 일부분은 텍스트 콘텐츠에 대응한다.
전자 디바이스(5400)의 일부 실시예들에서, 콘텐츠의 일부분은 텍스트 콘텐츠 및 이미지에 대응한다.
전자 디바이스(5400)의 일부 실시예들에서, 제1 애플리케이션은 웹 브라우징 애플리케이션이고, 제2 애플리케이션은 메시징 애플리케이션이다.
전자 디바이스(5400)의 일부 실시예들에서, 제1 애플리케이션은 사진 탐색 애플리케이션이고, 제2 애플리케이션은 메시징 애플리케이션이다.
전자 디바이스(5400)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 제2 애플리케이션을 열라는 요청을 수신하기 전에, 콘텐츠의 적어도 일부분을 복사하라는 요청을 수신하도록 구성된다.
전자 디바이스(5400)의 일부 실시예들에서, 선택가능한 사용자 인터페이스 객체는, 콘텐츠의 일부분이 제1 애플리케이션에서 최근에 보여졌다는 표시와 함께 디스플레이된다.
일부 실시예들에 따르면, 도 55는 다양한 기술된 실시예들의 원리들에 따라 구성된 전자 디바이스(5500)의 기능 블록도를 도시한다. 디바이스의 기능 블록들은 다양한 기술된 실시예들의 원리를 수행하도록 선택적으로, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 구현된다. 당업자라면 다양한 기술된 실시예들의 원리들을 구현하기 위해 도 55에서 기술된 기능 블록들이 선택적으로 조합되거나 서브블록들로 분리된다는 것이 이해된다. 따라서, 본 명세서의 설명은, 선택적으로, 본 명세서에 기술된 기능 블록들의 임의의 가능한 조합 또는 분리 또는 추가 정의를 지원한다. 논의의 용이함을 위해, 전자 디바이스(5500)는 휴대용 다기능 디바이스(100)(도 1a 및 도 1b)로서 구현된다.
도 55에 도시된 바와 같이, 전자 디바이스(5500)는, 정보를 디스플레이하도록 구성된 디스플레이 유닛(5501)(예컨대, 도 1a의 터치 감응형 디스플레이 시스템(112)(터치 스크린 및 터치 스크린 디스플레이로도 지칭됨)), 터치 스크린 디스플레이 상의 접촉들, 제스처들, 및 다른 사용자 입력들을 수신하도록 구성된 터치 감응형 표면 유닛(5503)(예컨대, 도 1a의 디스플레이 제어기(156) 및 터치 감응형 디스플레이 시스템(112)), 및 디스플레이 유닛(5501) 및 터치 감응형 표면 유닛(5503)과 결합된 프로세싱 유닛(5505)을 포함한다. 일부 실시예들에서, 전자 디바이스는 도 1e에 도시된 컴퓨팅 디바이스들(예컨대, 컴퓨팅 디바이스 A 내지 컴퓨팅 디바이스 D) 중 임의의 하나에 따라 구성된다. 예시의 용이함을 위해, 도 55는 전자 디바이스(5500)와 통합된 바와 같은 디스플레이 유닛(5501) 및 터치 감응형 표면 유닛(5503)을 도시하지만, 일부 실시예들에서는, 이러한 유닛들 중 하나 또는 양쪽 모두가 전자 디바이스와 통신 상태에 있지만 그 유닛들은 전자 디바이스로부터 물리적으로 분리된 채로 유지된다. 프로세싱 유닛은 제시 유닛(예컨대, 도 55의 제시 유닛(5507)), 결정 유닛(예컨대, 도 55의 결정 유닛(5509)), 획득 유닛(예컨대, 도 55의 획득 유닛(5511)), 검색 수행 유닛(예컨대, 도 55의 검색 수행 유닛(5513)), 정보 준비 유닛(예컨대, 도 55의 정보 준비 유닛(5515)), 어포던스 표시 유닛(예컨대, 도 55의 어포던스 표시 유닛(5517)), 및 검출 유닛(예컨대, 도 55의 검출 유닛(5519))을 포함한다.
일부 실시예들에서, 프로세싱 유닛(또는 그의 하나 이상의 컴포넌트들, 예컨대 유닛들(5507 내지 5519))은, (예컨대, 제시 유닛(5507) 및/또는 디스플레이 유닛(5501)으로) 디스플레이 상에서, 애플리케이션과 연관되는 텍스트 콘텐츠를 제시하도록; (예컨대, 결정 유닛(5509)으로) 텍스트 콘텐츠의 일부분이 (i) 위치, (ii) 연락처, 또는 (iii) 이벤트에 관련된다고 결정하도록; 텍스트 콘텐츠의 일부분이 위치에 관련된다고 결정할 시에, (예컨대, 획득 유닛(5511)으로) 전자 디바이스 상의 위치 센서로부터 위치 정보를 획득하도록 그리고 (예컨대, 정보 준비 유닛(5515)으로) 획득된 위치 정보를 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하도록; 텍스트 콘텐츠의 일부분이 연락처에 관련된다고 결정할 시에, (예컨대, 검색 수행 유닛(5513)으로) 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 연락처 정보에 대한 검색을 수행하도록 그리고 (예컨대, 정보 준비 유닛(5515)으로) 검색을 통해 인출되는, 적어도 하나의 연락처와 연관된 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하도록; 텍스트 콘텐츠의 일부분이 이벤트에 관련된다고 결정할 시에, (예컨대, 검색 수행 유닛(5513)으로) 전자 디바이스 상에서 텍스트 콘텐츠의 일부분에 관련된 이벤트 정보에 대한 새로운 검색을 수행하도록 그리고 (예컨대, 정보 준비 유닛(5515)으로) 새로운 검색을 통해 인출되는, 적어도 하나의 이벤트에 적어도 부분적으로 기초하는 정보를, 예측된 콘텐츠 항목으로서의 디스플레이를 위해 준비하도록; (예컨대, 어포던스 표시 유닛(5517) 및/또는 디스플레이 유닛(5501)으로) 애플리케이션 내에서, 예측된 콘텐츠 항목을 포함하는 어포던스를 디스플레이하도록; (예컨대, 검출 유닛(5519)으로) 터치 감응형 표면을 통해, 어포던스의 선택을 검출하도록; 그리고 선택을 검출하는 것에 응답하여, (예컨대, 제시 유닛(5507) 및/또는 디스플레이 유닛(5501)으로) 텍스트 콘텐츠에 인접하게 디스플레이 상에 예측된 콘텐츠 항목과 연관된 정보를 디스플레이하도록 구성된다.
전자 디바이스(5500)의 일부 실시예들에서, 텍스트 콘텐츠의 일부분은 애플리케이션 내에서 가장 최근에 제시된 텍스트 콘텐츠에 대응한다.
전자 디바이스(5500)의 일부 실시예들에서, 애플리케이션은 메시징 애플리케이션이고, 텍스트 콘텐츠의 일부분은 전자 디바이스와는 별개인 원격 디바이스의 원격 사용자로부터 메시징 애플리케이션에서 수신된 질문이다.
전자 디바이스(5500)의 일부 실시예들에서, 텍스트 콘텐츠의 일부분은 애플리케이션 내의 입력 수신 필드에서 전자 디바이스의 사용자에 의해 제공된 입력이다.
전자 디바이스(5500)의 일부 실시예들에서, 텍스트 콘텐츠의 일부분은, 텍스트 콘텐츠의 일부분을 포함하는 사용자 인터페이스 객체를 선택하는 사용자 입력에 응답하여 식별된다.
전자 디바이스(5500)의 일부 실시예들에서, 애플리케이션은 메시징 애플리케이션이고, 사용자 인터페이스 객체는 메시징 애플리케이션 내에 디스플레이되는 대화에서의 메시징 풍선이다.
전자 디바이스(5500)의 일부 실시예들에서, 프로세싱 유닛은 추가로, 제2 사용자 인터페이스 객체의 선택을 검출하도록; 선택을 검출하는 것에 응답하여, (i) 예측된 콘텐츠 항목을 갖는 어포던스를 디스플레이하는 것을 중지하도록, 그리고 (ii) 제2 사용자 인터페이스 객체와 연관된 텍스트 콘텐츠가 위치, 연락처, 또는 이벤트에 관련된다고 결정하도록; 그리고 결정하는 것에 따라, 애플리케이션 내에 새로운 예측된 콘텐츠 항목을 디스플레이하도록 구성된다.
전자 디바이스(5500)의 일부 실시예들에서, 어포던스는 애플리케이션 내의 가상 키보드에 인접하게 디스플레이된다.
전자 디바이스(5500)의 일부 실시예들에서, 예측된 콘텐츠 항목과 연관된 정보는 입력 수신 필드에 디스플레이되고, 입력 수신 필드는 가상 키보드에서 수신되는 타이핑 입력들을 디스플레이하는 필드이다.
전술된 정보 프로세싱 방법들 중 임의의 것에서의 동작들은 선택적으로 (예컨대, 도 1a 및 도 3과 관련하여 전술된 바와 같은) 범용 프로세서들 또는 애플리케이션 특정 칩들과 같은 정보 프로세싱 장치 내의 하나 이상의 기능 모듈들을 구동시킴으로써 구현된다.
도 6a와 도 6b, 및 도 8a와 도 8b를 참조하여 전술된 동작들은, 선택적으로, 도 1a와 도 1b 또는 도 42 내지 도 55에 도시된 컴포넌트들에 의해 구현된다. 예를 들어, 실행 동작(602) 및 검출 동작(802)이 선택적으로 이벤트 분류기(170), 이벤트 인식기(180) 및 이벤트 핸들러(190)에 의해 구현된다. 이벤트 분류기(170) 내의 이벤트 모니터(171)는 터치 감응형 디스플레이(112) 상의 접촉을 검출하고, 이벤트 디스패처 모듈(174)은 이벤트 정보를 애플리케이션(136-1)에 전달한다. 애플리케이션(136-1)의 개별 이벤트 인식기(180)는 이벤트 정보를 개별 이벤트 정의(186)와 비교하고, 터치 감응형 표면 상의 제1 위치에서의 제1 접촉이 사용자 인터페이스 상의 객체의 선택과 같은 미리정의된 이벤트 또는 서브이벤트, 또는 하나의 배향에서 다른 배향으로의 디바이스의 회전에 대응하는지 여부(또는 디바이스의 회전 여부)를 결정한다. 각각의 미리정의된 이벤트 또는 서브이벤트가 검출되는 경우에, 이벤트 인식기(180)는 이벤트 또는 서브이벤트의 검출과 연관된 이벤트 핸들러(190)를 활성화시킨다. 이벤트 핸들러(190)는 선택적으로 데이터 업데이터(176) 또는 객체 업데이터(177)를 이용하거나 호출하여, 애플리케이션 내부 상태(192)를 업데이트한다. 일부 실시예들에서, 이벤트 핸들러(190)는 각자의 GUI 업데이터(178)에 액세스하여, 애플리케이션에 의해 디스플레이되는 것을 업데이트한다. 유사하게, 다른 프로세스들이 도 1a 및 도 1b에 도시된 컴포넌트들에 기초하여 어떻게 구현될 수 있는지는 당업자에게 자명할 것이다.
전술한 설명은, 설명의 목적을 위해, 특정 실시예들을 참조하여 기술되었다. 그러나, 상기의 예시적인 논의들은 본 발명을 개시된 정확한 형태들로 규명하거나 제한하려는 의도는 아니다. 많은 수정들 및 변형들이 상기 교시 내용들의 관점에서 가능하다. 본 발명의 원리 및 그의 실제적인 응용을 가장 잘 설명하여 다른 당업자들이 본 발명 및 기술된 다양한 실시예를 고려되는 특정 용도에 적합한 바와 같은 다양한 변형과 함께 가장 잘 사용하는 것을 가능하게 하도록 실시예들이 선택 및 설명되었다.

Claims (15)

  1. 방법으로서,
    터치 감응형 디스플레이를 갖는 전자 디바이스에서:
    제1 애플리케이션에서 사용자가 시청한 제1 물리적 위치를 식별하는 정보를 획득하는 단계;
    제1 입력을 검출하는 단계;
    상기 제1 입력의 검출에 응답하여,
    지리적 위치 정보를 수용할 수 있는 제2 애플리케이션을 식별하는 단계; 및
    상기 터치 감응형 디스플레이의 적어도 일부를 통해, 상기 제2 애플리케이션을 열기 위한 제안과 함께 상기 제1 애플리케이션과 별개인 어포던스를 제시하는 단계 - 상기 제안은 상기 제1 물리적 위치에 관한 정보를 포함함 -;
    상기 어포던스에서 제2 입력을 검출하는 단계; 및
    상기 어포던스에서 상기 제2 입력을 검출하는 것에 응답하여:
    상기 제2 애플리케이션을 여는 단계; 및
    상기 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하도록 상기 제2 애플리케이션을 채우는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 제1 입력은 애플리케이션 스위칭 사용자 인터페이스를 열기 위한 요청에 대응하는, 방법.
  3. 제2항에 있어서, 상기 어포던스는 상기 애플리케이션 스위칭 사용자 인터페이스 내에 제시되는, 방법.
  4. 제3항에 있어서, 상기 어포던스를 제시하는 단계는:
    상기 어포던스를 제시하는 것과 연계하여, 상기 전자 디바이스 상에서 실행 중인 애플리케이션들의 표현들을 상기 애플리케이션 스위칭 사용자 인터페이스 내에 제시하는 단계; 및
    상기 애플리케이션들의 상기 표현들 아래에 위치되는 상기 터치 감응형 디스플레이의 영역에 상기 어포던스를 제시하는 단계
    를 포함하는, 방법.
  5. 제1항에 있어서, 상기 제1 입력은 상기 전자 디바이스의 홈 스크린을 열기 위한 요청에 대응하는, 방법.
  6. 제5항에 있어서, 상기 어포던스는 상기 홈 스크린의 일부 위에 제시되는, 방법.
  7. 제1항에 있어서, 상기 제안은 상기 제2 애플리케이션과 연관된 유형에 고유한 텍스트 설명을 포함하는, 방법.
  8. 제1항에 있어서, 상기 제2 애플리케이션을 채우는 단계는 상기 제1 물리적 위치를 식별하는 정보에 적어도 부분적으로 기초하는 정보를 포함하는 사용자 인터페이스 객체를 디스플레이하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 사용자 인터페이스 객체는 상기 제1 물리적 위치가 최근에 상기 제1 애플리케이션에서 시청되었다는 것을 상기 사용자에게 알리는 텍스트 설명을 포함하는, 방법.
  10. 제9항에 있어서,
    상기 사용자 인터페이스 객체는 상기 제2 애플리케이션 내에 디스플레이된 지도이고;
    상기 제2 애플리케이션을 채우는 단계는 상기 제1 물리적 위치의 식별자를 포함하도록 상기 지도를 채우는 단계를 포함하는, 방법.
  11. 제9항에 있어서, 상기 제2 애플리케이션은 가상 키보드를 제시받고, 상기 사용자 인터페이스 객체는 상기 가상 키보드 위에 디스플레이되는, 방법.
  12. 제1항에 있어서, 지리적 위치 정보를 수용할 수 있는 상기 제2 애플리케이션을 식별하는 단계는 (i) 상기 제2 애플리케이션이 지리적 위치 데이터를 수용 및 처리할 수 있는 입력 수신 필드를 포함한다고 결정하는 단계; (ii) 상기 제2 애플리케이션이 지도에 지리적 위치 정보를 디스플레이할 수 있다고 결정하는 단계; (iii) 상기 제2 애플리케이션이 루트 안내를 용이하게 하기 위해 지리적 위치 정보를 사용할 수 있다고 결정하는 단계; 및 (iv) 상기 제2 애플리케이션이 지리적 위치 정보를 사용하여 수송 서비스들을 찾아서 제공할 수 있다고 결정하는 단계 중 하나 이상을 포함하는, 방법.
  13. 제12항에 있어서,
    상기 제2 애플리케이션이 지리적 위치 정보를 수용할 수 있다는 것을 식별하는 단계는 상기 제2 애플리케이션이 지리적 위치 데이터를 수용하고 처리할 수 있는 입력 수신 필드를 포함한다고 결정하는 단계를 포함하고;
    상기 입력 수신 필드는 상기 제2 애플리케이션 내에 디스플레이되는 지도 내에서 검색하는 것을 허용하는 검색 상자인, 방법.
  14. 터치 감응형 디스플레이를 갖는 전자 디바이스에 의해 실행될 때, 상기 전자 디바이스로 하여금 제1항 내지 제13항 중 어느 한 항의 방법을 수행하게 하는 실행 가능한 명령어들을 저장하는 컴퓨터 판독가능 저장 매체.
  15. 전자 디바이스로서,
    터치 감응형 디스플레이;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 전자 디바이스로 하여금 제1항 내지 제13항 중 어느 한 항의 방법을 수행하게 하는 하나 이상의 프로그램을 저장하는 메모리
    를 포함하는 전자 디바이스.
KR1020207027429A 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법 KR102242267B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562167265P 2015-05-27 2015-05-27
US62/167,265 2015-05-27
US201562172019P 2015-06-05 2015-06-05
US62/172,019 2015-06-05
US15/166,226 US10200824B2 (en) 2015-05-27 2016-05-26 Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US15/166,226 2016-05-26
PCT/US2016/034807 WO2016191737A2 (en) 2015-05-27 2016-05-27 Systems and methods for proactively identifying and surfacing relevant content on a touch-senstitive device

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207010467A Division KR102244698B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20200113021A true KR20200113021A (ko) 2020-10-05
KR102242267B1 KR102242267B1 (ko) 2021-04-19

Family

ID=56121210

Family Applications (9)

Application Number Title Priority Date Filing Date
KR1020217034413A KR102653387B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020197034093A KR102102570B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020207027429A KR102242267B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020217011779A KR102429889B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020197013923A KR102048366B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020207010467A KR102244698B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020217011778A KR102318884B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020247010361A KR20240046294A (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020177037413A KR101981423B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217034413A KR102653387B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020197034093A KR102102570B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법

Family Applications After (6)

Application Number Title Priority Date Filing Date
KR1020217011779A KR102429889B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020197013923A KR102048366B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020207010467A KR102244698B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020217011778A KR102318884B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020247010361A KR20240046294A (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법
KR1020177037413A KR101981423B1 (ko) 2015-05-27 2016-05-27 터치 감응형 디바이스 상의 관련 콘텐츠를 사전행동적으로 식별 및 표면화하기 위한 시스템 및 방법

Country Status (8)

Country Link
US (5) US10200824B2 (ko)
EP (6) EP3779685A1 (ko)
JP (7) JP6419993B2 (ko)
KR (9) KR102653387B1 (ko)
CN (8) CN118331669A (ko)
AU (9) AU2016268860B2 (ko)
DK (4) DK201670370A1 (ko)
WO (1) WO2016191737A2 (ko)

Families Citing this family (399)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
EP3493074A1 (en) * 2006-10-05 2019-06-05 Splunk Inc. Time series search engine
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
AU2010282311B2 (en) 2009-08-13 2015-08-13 Acufocus, Inc. Masked intraocular implants and lenses
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US11494793B2 (en) * 2010-05-26 2022-11-08 Userzoom Technologies, Inc. Systems and methods for the generation, administration and analysis of click testing
US10225683B1 (en) * 2010-08-02 2019-03-05 Intellectual Ventures Fund 79 Llc Systems, methods, and mediums for receiving reminders and/or identifying available goods and/or services
US9462067B2 (en) * 2011-10-26 2016-10-04 Cybeye, Inc. Engine, system and method for an adaptive search engine on the client computer using domain social network data as the search topic sources
DE112013001018T5 (de) 2012-02-16 2014-10-30 Acufocus, Inc. Eine Maske aufweisende Okularvorrichtung zur Implantation neben einer Intraokularlinse
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US8787888B2 (en) * 2012-08-29 2014-07-22 Facebook, Inc. Sharing location information during a communication session
DE112014000709B4 (de) 2013-02-07 2021-12-30 Apple Inc. Verfahren und vorrichtung zum betrieb eines sprachtriggers für einen digitalen assistenten
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
US10614132B2 (en) 2013-04-30 2020-04-07 Splunk Inc. GUI-triggered processing of performance data and log data from an information technology environment
US10353957B2 (en) 2013-04-30 2019-07-16 Splunk Inc. Processing of performance data and raw log data from an information technology environment
US10019496B2 (en) 2013-04-30 2018-07-10 Splunk Inc. Processing of performance data and log data from an information technology environment by using diverse data stores
US10997191B2 (en) 2013-04-30 2021-05-04 Splunk Inc. Query-triggered processing of performance data and log data from an information technology environment
US10318541B2 (en) 2013-04-30 2019-06-11 Splunk Inc. Correlating log data with performance measurements having a specified relationship to a threshold value
US10346357B2 (en) 2013-04-30 2019-07-09 Splunk Inc. Processing of performance data and structure data from an information technology environment
US10225136B2 (en) 2013-04-30 2019-03-05 Splunk Inc. Processing of log data and performance data obtained via an application programming interface (API)
EP3937002A1 (en) 2013-06-09 2022-01-12 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
DE112014003653B4 (de) 2013-08-06 2024-04-18 Apple Inc. Automatisch aktivierende intelligente Antworten auf der Grundlage von Aktivitäten von entfernt angeordneten Vorrichtungen
US9710126B2 (en) * 2013-10-17 2017-07-18 Blackberry Limited Method and apparatus for displaying a preview of an application to a user
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
TWI566107B (zh) 2014-05-30 2017-01-11 蘋果公司 用於處理多部分語音命令之方法、非暫時性電腦可讀儲存媒體及電子裝置
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
TWI601033B (zh) * 2014-07-08 2017-10-01 拓連科技股份有限公司 移動偵測之管理方法及系統,及相關電腦程式產品
US9830167B2 (en) * 2014-08-12 2017-11-28 Linkedin Corporation Enhancing a multitasking user interface of an operating system
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US10496420B2 (en) 2014-12-02 2019-12-03 Cerner Innovation, Inc. Contextual help within an application
US10152480B2 (en) 2015-01-31 2018-12-11 Splunk Inc. Archiving indexed data
US20160257198A1 (en) 2015-03-02 2016-09-08 Ford Global Technologies, Inc. In-vehicle component user interface
US10152299B2 (en) 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9678707B2 (en) * 2015-04-10 2017-06-13 Sonos, Inc. Identification of audio content facilitated by playback device
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10097973B2 (en) 2015-05-27 2018-10-09 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10228841B2 (en) * 2015-06-04 2019-03-12 Cisco Technology, Inc. Indicators for relative positions of connected devices
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
CN105095351B (zh) * 2015-06-18 2019-03-26 百度在线网络技术(北京)有限公司 一种用于提供本地搜索建议的方法和装置
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
CN105100444A (zh) * 2015-06-29 2015-11-25 小米科技有限责任公司 信息展示方法及装置
US10422657B2 (en) * 2015-07-17 2019-09-24 International Business Machines Corporation Notification of proximal points of interest
KR20170010574A (ko) * 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
US20170038933A1 (en) * 2015-08-06 2017-02-09 Facebook, Inc. Systems and methods for providing reminders for content in social networks
US10582011B2 (en) * 2015-08-06 2020-03-03 Samsung Electronics Co., Ltd. Application cards based on contextual data
US20170054767A1 (en) * 2015-08-17 2017-02-23 Google Inc. Transferring application state between devices
US10108150B1 (en) * 2015-08-28 2018-10-23 Google Llc Waking user up in time to arrive at appointment by calculating bed-to-door time
US9967717B2 (en) 2015-09-01 2018-05-08 Ford Global Technologies, Llc Efficient tracking of personal device locations
US9914418B2 (en) 2015-09-01 2018-03-13 Ford Global Technologies, Llc In-vehicle control location
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10365811B2 (en) * 2015-09-15 2019-07-30 Verizon Patent And Licensing Inc. Home screen for wearable devices
RU2634221C2 (ru) * 2015-09-23 2017-10-24 Общество С Ограниченной Ответственностью "Яндекс" Способ и устройство для отрисовки представления электронного документа на экране
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10178527B2 (en) * 2015-10-22 2019-01-08 Google Llc Personalized entity repository
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US10084672B2 (en) * 2015-11-10 2018-09-25 Dynatrace Llc System and method for measuring performance and availability of applications utilizing monitoring of distributed systems processes combined with analysis of the network communication between the processes
US10046637B2 (en) * 2015-12-11 2018-08-14 Ford Global Technologies, Llc In-vehicle component control user interface
EP3182738B1 (en) * 2015-12-16 2018-12-05 Snips Method and means for triggering at least one action based on geolocation and user information, places and user habits
US10845950B2 (en) * 2015-12-17 2020-11-24 Microsoft Technology Licensing, Llc Web browser extension
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10474475B2 (en) * 2016-03-02 2019-11-12 Western Digital Technologies, Inc. Non-intrusive restart of a task manager
US10082877B2 (en) 2016-03-15 2018-09-25 Ford Global Technologies, Llc Orientation-independent air gesture detection service for in-vehicle environments
US9914415B2 (en) 2016-04-25 2018-03-13 Ford Global Technologies, Llc Connectionless communication with interior vehicle components
US10275529B1 (en) 2016-04-29 2019-04-30 Rich Media Ventures, Llc Active content rich media using intelligent personal assistant applications
US10757377B2 (en) * 2016-06-01 2020-08-25 Pixart Imaging Inc. Surveillance system and operation method thereof
TW201743241A (zh) * 2016-06-01 2017-12-16 原相科技股份有限公司 可攜式電子裝置及其運作方法
CN107463574A (zh) * 2016-06-02 2017-12-12 广州市动景计算机科技有限公司 内容信息提供方法、设备、浏览器、电子设备和服务器
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10401502B2 (en) * 2016-06-07 2019-09-03 Timothy B. Morford Low energy Wi-Fi device for location
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
USD803238S1 (en) * 2016-06-12 2017-11-21 Apple Inc. Display screen or portion thereof with graphical user interface
KR20180003884A (ko) * 2016-07-01 2018-01-10 삼성전자주식회사 전자 장치 및 그의 정보 제공 방법
US10885463B2 (en) * 2016-07-08 2021-01-05 Microsoft Technology Licensing, Llc Metadata-driven machine learning for systems
US10002474B1 (en) 2016-07-12 2018-06-19 United Services Automobile Association (Usaa) Access control based on rhythmic pattern repetition
US20180018652A1 (en) * 2016-07-18 2018-01-18 Ebay Inc. Messaging transaction application
US10055481B2 (en) * 2016-07-20 2018-08-21 LogsHero Ltd. Method and system for automatic event classification
US10051108B2 (en) * 2016-07-21 2018-08-14 Google Llc Contextual information for a notification
US10832221B2 (en) * 2016-07-21 2020-11-10 Microsoft Technology Licensing, Llc Storage and structure of calendars with an infinite set of intentional-time events for calendar applications
US10255738B1 (en) 2016-07-25 2019-04-09 United Services Automobile Association (Usaa) Authentication based on through-body signals detected in body area networks
JP6784085B2 (ja) * 2016-07-27 2020-11-11 富士通株式会社 設定制御プログラム、設定制御方法、及び設定制御装置
US9967750B1 (en) * 2016-07-28 2018-05-08 United Services Automobile Association (Usaa) Location verification based on environmental sensor data
US10600220B2 (en) * 2016-08-01 2020-03-24 Facebook, Inc. Systems and methods for content interaction
US11455545B2 (en) * 2016-08-10 2022-09-27 Palo Alto Research Center Incorporated Computer-implemented system and method for building context models in real time
US10607192B2 (en) * 2016-08-25 2020-03-31 Ford Global Technologies, Llc Methods and apparatus for autonomous vehicle scheduling
US11200026B2 (en) * 2016-08-26 2021-12-14 Bragi GmbH Wireless earpiece with a passive virtual assistant
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
WO2018052257A1 (en) * 2016-09-19 2018-03-22 Samsung Electronics Co., Ltd. Apparatus and method for managing notification
US10498852B2 (en) * 2016-09-19 2019-12-03 Ebay Inc. Prediction-based caching system
US20180082184A1 (en) * 2016-09-19 2018-03-22 TCL Research America Inc. Context-aware chatbot system and method
USD835153S1 (en) * 2016-09-20 2018-12-04 Google Llc Display screen with a graphical user interface for a messaging application
USD819044S1 (en) 2016-09-20 2018-05-29 Google Llc Display screen with graphical user interface for an assistive agent
US10192448B2 (en) * 2016-09-30 2019-01-29 Nec Corporation Method to control vehicle fleets to deliver on-demand transportation services
CA2970088C (en) 2016-09-30 2022-02-08 The Toronto-Dominion Bank Device lock bypass on selectable alert
US10484324B2 (en) * 2016-10-02 2019-11-19 Vmware, Inc. Hero cards that display contextual information and actions for backend systems
US10321096B2 (en) * 2016-10-05 2019-06-11 Avaya Inc. Embedding content of interest in video conferencing
US10846612B2 (en) * 2016-11-01 2020-11-24 Google Llc Actionable suggestions for activities
US10846350B2 (en) * 2016-10-18 2020-11-24 Facebook, Inc. Systems and methods for providing service directory predictive search recommendations
USD828371S1 (en) * 2016-10-20 2018-09-11 Google Llc Display screen or portion thereof with graphical user interface
US20180123986A1 (en) * 2016-11-01 2018-05-03 Microsoft Technology Licensing, Llc Notification of a Communication Session in a Different User Experience
US10509645B2 (en) * 2016-12-02 2019-12-17 Factual Inc. Method and apparatus for enabling an application to detect specified circumstances
US10356200B2 (en) 2016-12-28 2019-07-16 Google Llc Optimizing user interface data caching for future actions
US11074554B2 (en) * 2016-12-30 2021-07-27 Verizon Patent And Licensing Inc. Cloud-based event calendar synching and notification
CN108279954B (zh) * 2016-12-30 2020-07-07 华为技术有限公司 一种应用程序排序的方法及装置
CN108287647B (zh) * 2017-01-09 2021-06-18 斑马智行网络(香港)有限公司 一种应用运行方法及装置
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US10972297B2 (en) 2017-01-23 2021-04-06 Bank Of America Corporation Data processing system with machine learning engine to provide automated collaboration assistance functions
US10297255B2 (en) 2017-01-23 2019-05-21 Bank Of America Corporation Data processing system with machine learning engine to provide automated collaboration assistance functions
US11436347B2 (en) * 2017-02-14 2022-09-06 Meta Platforms, Inc. Methods and systems for dynamic sampling of application events
DE102017203570A1 (de) 2017-03-06 2018-09-06 Volkswagen Aktiengesellschaft Verfahren und vorrichtung zur darstellung von empfohlenen bedienhandlungen eines vorschlagssystems und interaktion mit dem vorschlagssystem
US11399264B2 (en) * 2017-03-07 2022-07-26 Skyscanner Limited Content recommendation and display based on geographic and user context
US10825117B2 (en) * 2017-03-07 2020-11-03 Skyscanner Limited Content recommendation and display based on geographic and user context
US11871310B2 (en) 2017-03-07 2024-01-09 Skyscanner Limited Content recommendation and display based on geographic and user context
US10841321B1 (en) * 2017-03-28 2020-11-17 Veritas Technologies Llc Systems and methods for detecting suspicious users on networks
JP6875905B2 (ja) * 2017-03-29 2021-05-26 株式会社日立情報通信エンジニアリング 通話制御システム及び通話制御方法
US11514346B2 (en) * 2017-04-24 2022-11-29 Google Llc Contextual situation analysis
US10423638B2 (en) * 2017-04-27 2019-09-24 Google Llc Cloud inference system
USD881202S1 (en) * 2017-05-08 2020-04-14 Kci Licensing, Inc. Display screen with graphical user interface for negative pressure unit
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. USER INTERFACE FOR CORRECTING RECOGNITION ERRORS
CN108874812B (zh) * 2017-05-10 2021-12-10 腾讯科技(北京)有限公司 一种数据处理方法及服务器、计算机存储介质
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770428A1 (en) 2017-05-12 2019-02-18 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
US10466889B2 (en) 2017-05-16 2019-11-05 Apple Inc. Devices, methods, and graphical user interfaces for accessing notifications
DK179560B1 (en) 2017-05-16 2019-02-18 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US11243658B1 (en) * 2017-05-31 2022-02-08 Pinterest, Inc. Intelligent directives for user interface interactions
EP3410362B1 (en) * 2017-05-31 2022-03-30 HERE Global B.V. Method and apparatus for next token prediction based on previously observed tokens
US20180349467A1 (en) 2017-06-02 2018-12-06 Apple Inc. Systems and methods for grouping search results into dynamic categories based on query and result set
US11416817B2 (en) * 2017-06-02 2022-08-16 Apple Inc. Event extraction systems and methods
US20180365636A1 (en) * 2017-06-15 2018-12-20 Flex Ltd. Systems and methods for pallet tracking with mixed local-area and wide-area trackers
US9967520B1 (en) * 2017-06-30 2018-05-08 Ringcentral, Inc. Method and system for enhanced conference management
US10565274B2 (en) * 2017-06-30 2020-02-18 Microsoft Technology Licensing, Llc Multi-application user interest memory management
KR102367053B1 (ko) * 2017-07-13 2022-02-24 삼성전자주식회사 외부 전자 장치와 통신을 수행하기 위한 전자 장치
US11366872B1 (en) * 2017-07-19 2022-06-21 Amazon Technologies, Inc. Digital navigation menus with dynamic content placement
US11323398B1 (en) * 2017-07-31 2022-05-03 Snap Inc. Systems, devices, and methods for progressive attachments
USD859453S1 (en) 2017-08-01 2019-09-10 Google Llc Display screen with an animated graphical user interface
US11294530B2 (en) * 2017-08-07 2022-04-05 Microsoft Technology Licensing, Llc Displaying a translucent version of a user interface element
US11392664B1 (en) 2017-08-29 2022-07-19 Massachusetts Mutual Life Insurance Company Dynamic web application based on events
CN107577522B (zh) 2017-09-30 2020-04-21 Oppo广东移动通信有限公司 应用控制方法、装置、存储介质以及电子设备
WO2019070230A1 (en) * 2017-10-03 2019-04-11 Google Llc COORDINATION OF MULTIPLE DIGITAL ASSISTANT IN VEHICULAR ENVIRONMENTS
US20190122140A1 (en) * 2017-10-20 2019-04-25 STATGRAF Research LLP. Data analysis and rendering
CN112181220A (zh) * 2017-10-20 2021-01-05 华为技术有限公司 一种图标显示方法、设备及系统
US10664784B2 (en) * 2017-11-27 2020-05-26 International Business Machines Corporation Analyzing product impact on a system
US10783013B2 (en) 2017-12-15 2020-09-22 Google Llc Task-related sorting, application discovery, and unified bookmarking for application managers
US11568003B2 (en) 2017-12-15 2023-01-31 Google Llc Refined search with machine learning
US10846109B2 (en) 2017-12-20 2020-11-24 Google Llc Suggesting actions based on machine learning
CN107995370B (zh) * 2017-12-21 2020-11-24 Oppo广东移动通信有限公司 通话控制方法、装置及存储介质和移动终端
USD854037S1 (en) 2017-12-21 2019-07-16 State Farm Mutual Automobile Insurance Company Display screen or portion thereof with graphical user interface
USD847182S1 (en) 2017-12-21 2019-04-30 State Farm Mutual Automobile Insurance Company Display screen or portion thereof with graphical user interface
USD853424S1 (en) 2017-12-21 2019-07-09 State Farm Mutual Automobile Insurance Company Display screen or portion thereof with graphical user interface
US10355773B1 (en) * 2018-01-02 2019-07-16 Talal Awad Connectivity system and method for high speed aircraft internet
USD852222S1 (en) * 2018-01-04 2019-06-25 Samsung Electronics Co., Ltd. Display screen or portion thereof with graphical user interface
USD852223S1 (en) * 2018-01-04 2019-06-25 Samsung Electronics Co., Ltd. Display screen or portion thereof with graphical user interface
US10299216B1 (en) * 2018-01-06 2019-05-21 Eric John Wengreen Self-driving vehicle actions in response to a low battery
US10303181B1 (en) 2018-11-29 2019-05-28 Eric John Wengreen Self-driving vehicle systems and methods
US11073838B2 (en) 2018-01-06 2021-07-27 Drivent Llc Self-driving vehicle systems and methods
US11410075B2 (en) * 2018-01-15 2022-08-09 Microsoft Technology Licensing, Llc Contextually-aware recommendations for assisting users with task completion
CN108257037A (zh) * 2018-01-18 2018-07-06 封玉涛 一种以社交场景化为切入点的多应用融合方法及装置
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US11669345B2 (en) * 2018-03-13 2023-06-06 Cloudblue Llc System and method for generating prediction based GUIs to improve GUI response times
US10749828B2 (en) 2018-03-14 2020-08-18 Rovi Guides, Inc. Systems and methods for presenting event notifications, based on trending communications, on devices notwithstanding a user instruction to disable event notifications
CN108418970A (zh) * 2018-03-15 2018-08-17 韶关市磊信机械制造有限公司 一种操作立体车库升降的手机app系统
JP6749359B2 (ja) * 2018-03-20 2020-09-02 本田技研工業株式会社 車両乗合支援システム
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US11275991B2 (en) * 2018-04-04 2022-03-15 Nokia Technologies Oy Coordinated heterogeneous processing of training data for deep neural networks
US11481837B1 (en) 2018-04-12 2022-10-25 Wells Fargo Bank, N.A. Authentication circle management
JP7003822B2 (ja) * 2018-04-12 2022-01-21 富士通株式会社 情報処理装置、情報処理システム、及びプライバシ保護プログラム
US11386412B1 (en) 2018-04-12 2022-07-12 Wells Fargo Bank, N.A. Authentication circle management
FR3080472B1 (fr) * 2018-04-19 2021-06-04 Amadeus Sas Controle de la generation des resultats de recherche a entrees multiples
US11016982B2 (en) * 2018-04-20 2021-05-25 Slack Technologies, Inc. Methods, apparatuses and computer program products for outputting improved autosuggestions in a group-based communication platform
US10943308B1 (en) 2018-05-03 2021-03-09 Wells Fargo Bank, N.A. Systems and methods for pervasive advisor for major expenditures
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
CN109743438B (zh) * 2018-06-19 2020-05-15 北京字节跳动网络技术有限公司 一种发送多媒体信息的方法和装置
CN110544473B (zh) 2018-05-28 2022-11-08 百度在线网络技术(北京)有限公司 语音交互方法和装置
US10877784B1 (en) * 2018-05-30 2020-12-29 Facebook, Inc. Determining and servicing user intent with a virtual assistant
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
DK201870360A1 (en) 2018-06-03 2019-12-20 Apple Inc. ACCELERATED TASK PERFORMANCE
US11076039B2 (en) 2018-06-03 2021-07-27 Apple Inc. Accelerated task performance
WO2019236545A1 (en) * 2018-06-04 2019-12-12 Smartsky Networks LLC Contextually aware, smart ip address cross reference to related applications
CN108735216B (zh) * 2018-06-12 2020-10-16 广东小天才科技有限公司 一种基于语义识别的语音搜题方法及家教设备
CN109033865B (zh) * 2018-06-20 2021-10-01 苏州大学 一种空间众包中隐私保护的任务分配方法
USD933078S1 (en) * 2018-07-03 2021-10-12 Google Llc Display screen with animated graphical user interface
USD931869S1 (en) * 2018-07-03 2021-09-28 Google Llc Display screen with animated graphical user interface
CN108984073A (zh) 2018-07-06 2018-12-11 北京微播视界科技有限公司 一种搜索页面显示方法、装置、终端及存储介质
WO2020018063A1 (en) * 2018-07-16 2020-01-23 Hewlett-Packard Development Company, L.P. Predicted usage based on monitored usage
US11176215B2 (en) * 2018-07-23 2021-11-16 International Business Machines Corporation Navigational notifications based on filtered interests
US20200036803A1 (en) * 2018-07-24 2020-01-30 Star2Star Communications, LLC Social Metrics Connection Representor, System, and Method
CN109033386B (zh) * 2018-07-27 2020-04-10 北京字节跳动网络技术有限公司 搜索排序方法、装置、计算机设备和存储介质
CN109241180B (zh) * 2018-08-01 2021-06-04 福建天泉教育科技有限公司 一种基于日志的数据同步的方法及装置
US20200065513A1 (en) * 2018-08-24 2020-02-27 International Business Machines Corporation Controlling content and content sources according to situational context
CN109214386B (zh) * 2018-09-14 2020-11-24 京东数字科技控股有限公司 用于生成图像识别模型的方法和装置
US10493952B1 (en) 2019-03-21 2019-12-03 Drivent Llc Self-driving vehicle systems and methods
US10479319B1 (en) 2019-03-21 2019-11-19 Drivent Llc Self-driving vehicle systems and methods
US10282625B1 (en) 2018-10-01 2019-05-07 Eric John Wengreen Self-driving vehicle systems and methods
US10471804B1 (en) 2018-09-18 2019-11-12 Drivent Llc Self-driving vehicle systems and methods
CN112997171B (zh) * 2018-09-27 2024-08-27 谷歌有限责任公司 分析网页以促进自动导航
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
JP6724223B2 (ja) * 2018-09-29 2020-07-15 ジェギュ イ 多様なアイコンバッジを表示できるデータ処理ターミナル及び該バッジとターミナルを用いる方法
US10832569B2 (en) 2019-04-02 2020-11-10 Drivent Llc Vehicle detection systems
US10794714B2 (en) 2018-10-01 2020-10-06 Drivent Llc Self-driving vehicle systems and methods
US11644833B2 (en) 2018-10-01 2023-05-09 Drivent Llc Self-driving vehicle systems and methods
US10900792B2 (en) 2018-10-22 2021-01-26 Drivent Llc Self-driving vehicle systems and methods
US11221621B2 (en) 2019-03-21 2022-01-11 Drivent Llc Self-driving vehicle systems and methods
US11226962B2 (en) * 2018-10-05 2022-01-18 Sap Se Efficient event correlation in a streaming environment
US10518750B1 (en) * 2018-10-11 2019-12-31 Denso International America, Inc. Anti-theft system by location prediction based on heuristics and learning
USD884017S1 (en) * 2018-10-26 2020-05-12 Salesforce.Com, Inc. Display screen or portion thereof with graphical user interface
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
US10481606B1 (en) 2018-11-01 2019-11-19 Drivent Llc Self-driving vehicle systems and methods
US11604844B2 (en) * 2018-11-05 2023-03-14 Samsung Electronics Co., Ltd. System and method for cross-domain recommendations
US10896492B2 (en) 2018-11-09 2021-01-19 Qwake Technologies, Llc Cognitive load reducing platform having image edge enhancement
US10417497B1 (en) * 2018-11-09 2019-09-17 Qwake Technologies Cognitive load reducing platform for first responders
US11890494B2 (en) 2018-11-09 2024-02-06 Qwake Technologies, Inc. Retrofittable mask mount system for cognitive load reducing platform
CN109584879B (zh) 2018-11-23 2021-07-06 华为技术有限公司 一种语音控制方法及电子设备
CN109362032B (zh) * 2018-12-11 2020-06-30 安徽大学 一种基于位置服务的用户位置个性化差分隐私保护方法
US10983766B2 (en) 2018-12-13 2021-04-20 SlackTechnologies, Inc. Developer tools for a communication platform
US11048486B2 (en) 2018-12-13 2021-06-29 Slack Technologies, Inc. Developer tools for a communication platform
US10853061B2 (en) * 2018-12-13 2020-12-01 Slack Technologies, Inc. Developer tools for a communication platform
USD926780S1 (en) * 2018-12-20 2021-08-03 Google Llc Display screen with graphical user interface
CN109740493A (zh) * 2018-12-27 2019-05-10 维沃移动通信有限公司 一种目标对象推荐方法及移动终端
US11415430B2 (en) 2018-12-29 2022-08-16 Yandex Europe Ag Method of and server for presenting points of interest to user on map
US10936659B2 (en) * 2019-01-02 2021-03-02 International Business Machines Corporation Parallel graph events processing
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
WO2020150518A1 (en) * 2019-01-18 2020-07-23 Apple Inc. User interfaces for presenting information about and facilitating application functions
KR20200091278A (ko) * 2019-01-22 2020-07-30 삼성전자주식회사 음성 입력과 관련된 비주얼 정보를 표시하는 방법 및 이를 지원하는 전자 장치
US10805362B1 (en) * 2019-01-31 2020-10-13 Slack Technologies, Inc. Seamless communication resource transition between communication systems
US10377342B1 (en) 2019-02-04 2019-08-13 Drivent Technologies Inc. Self-driving vehicle systems and methods
US10744976B1 (en) 2019-02-04 2020-08-18 Drivent Llc Self-driving vehicle systems and methods
US11168990B2 (en) * 2019-03-11 2021-11-09 Toyota Research Institute, Inc. Crowdsourcing annotations of roadway information
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11343208B1 (en) * 2019-03-21 2022-05-24 Intrado Corporation Automated relevant subject matter detection
CN110083460A (zh) * 2019-03-25 2019-08-02 华东师范大学 一种利用事件总线技术的微内核架构的设计方法
US11222061B2 (en) * 2019-03-28 2022-01-11 Facebook, Inc. Generating digital media clusters corresponding to predicted distribution classes from a repository of digital media based on network distribution history
US20220187963A9 (en) * 2019-04-16 2022-06-16 Apple Inc. Reminders techniques on a user device
CN110225180B (zh) * 2019-04-23 2021-01-08 维沃软件技术有限公司 一种内容输入方法及终端设备
US12060002B2 (en) 2019-04-24 2024-08-13 The Research Foundation For The State University Of New York System and method for tracking human behavior real-time with single magnetometer sensor and magnets
CN110046484A (zh) * 2019-04-29 2019-07-23 中核武汉核电运行技术股份有限公司 一种工业控制系统信息安全控制方法及装置
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
CN110133369B (zh) * 2019-05-15 2021-06-15 宁波三星医疗电气股份有限公司 一种负荷曲线数据显示方法、装置及电能表
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
CN110222263B (zh) * 2019-05-24 2021-08-24 苏州达家迎信息技术有限公司 应用程序维护控制方法、装置、服务器、终端及存储介质
US11372696B2 (en) 2019-05-30 2022-06-28 Apple Inc. Siri reminders found in apps
WO2020242711A1 (en) * 2019-05-31 2020-12-03 Apple Inc. Voice assistant discoverability through on-device targeting and personalization
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
DK201970510A1 (en) 2019-05-31 2021-02-11 Apple Inc Voice identification in digital assistant systems
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
DK180649B1 (en) 2019-05-31 2021-11-11 Apple Inc Voice assistant discoverability through on-device targeting and personalization
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
EP3959713B1 (en) * 2019-05-31 2023-08-23 Apple Inc. Voice assistant discoverability through on-device targeting and personalization
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
EP3977053A1 (en) * 2019-06-03 2022-04-06 Microsoft Technology Licensing, LLC Coarse relocalization using signal fingerprints and session-specific identifiers
US11509479B2 (en) 2019-06-04 2022-11-22 Vmware, Inc. Service authentication through a voice assistant
US20200388280A1 (en) 2019-06-05 2020-12-10 Google Llc Action validation for digital assistant-based applications
EP3776175B1 (en) * 2019-06-05 2023-10-18 Google LLC Action validation for digital assistant-based applications
CN110278327B (zh) * 2019-06-10 2021-01-08 维沃移动通信有限公司 数据处理方法及移动终端
US11262978B1 (en) * 2019-06-19 2022-03-01 Amazon Technologies, Inc. Voice-adapted reformulation of web-based answers
KR20200144846A (ko) * 2019-06-19 2020-12-30 삼성전자주식회사 외부 장치의 위치 정보를 결정하기 위한 전자 장치 및 그의 동작 방법
CN112130714B (zh) * 2019-06-25 2021-08-20 华为技术有限公司 可进行学习的关键词搜索方法和电子设备
US11122423B2 (en) 2019-06-26 2021-09-14 Vmware, Inc. Proximity based authentication of a user through a voice assistant device
CN110489215A (zh) * 2019-06-29 2019-11-22 华为技术有限公司 一种应用程序中等待场景的处理方法和装置
US20220291789A1 (en) * 2019-07-11 2022-09-15 Google Llc System and Method for Providing an Artificial Intelligence Control Surface for a User of a Computing Device
CN110413169B (zh) * 2019-07-24 2021-11-23 北京小米移动软件有限公司 一种信息展示方法、装置及介质
JP2021026308A (ja) * 2019-07-31 2021-02-22 シャープ株式会社 リソース管理サーバ、制御方法、プログラム及びシステム
KR20190099169A (ko) * 2019-08-06 2019-08-26 엘지전자 주식회사 인공지능 기반의 기상 및 취침 시간 정보 제공 장치 및 방법
CN110458912B (zh) * 2019-08-08 2023-05-09 金瓜子科技发展(北京)有限公司 一种车辆图标处理方法和装置
US11915376B2 (en) 2019-08-28 2024-02-27 Qwake Technologies, Inc. Wearable assisted perception module for navigation and communication in hazardous environments
US11204675B2 (en) * 2019-09-06 2021-12-21 Aptiv Technologies Limited Adaptive input countermeasures on human machine interface
US10942625B1 (en) * 2019-09-09 2021-03-09 Atlassian Pty Ltd. Coordinated display of software application interfaces
US10992605B2 (en) 2019-09-09 2021-04-27 PAG Financial International LLC Systems and methods for operating a mobile application using a conversation interface
US11157167B2 (en) * 2019-09-09 2021-10-26 PAG Financial International LLC Systems and methods for operating a mobile application using a communication tool
US11488406B2 (en) 2019-09-25 2022-11-01 Apple Inc. Text detection using global geometry estimators
KR102666329B1 (ko) * 2019-09-27 2024-05-16 삼성전자 주식회사 어플리케이션 실행 방법 및 장치
US11252274B2 (en) * 2019-09-30 2022-02-15 Snap Inc. Messaging application sticker extensions
CN110677190B (zh) * 2019-10-09 2021-06-22 大连大学 一种天地一体化智能网络节点静态处理与缓存方法
WO2021084571A1 (ja) * 2019-10-28 2021-05-06 日本たばこ産業株式会社 時間的に変化する風味を時間的に変化する視覚的要素として表示するための方法、プログラム及び情報処理装置
CN110856201B (zh) * 2019-11-11 2022-02-11 重庆邮电大学 一种基于Kullback-Leibler散度的WiFi异常链路检测方法
CN111026304B (zh) * 2019-12-06 2021-05-14 维沃移动通信有限公司 一种应用程序图标显示方法及电子设备
US11570165B2 (en) 2019-12-09 2023-01-31 Vmware, Inc. Single sign-on service authentication through a voice assistant
US11550598B2 (en) 2019-12-13 2023-01-10 Google Llc Systems and methods for adding digital content during an application opening operation
US11262711B2 (en) 2019-12-18 2022-03-01 K4Connect Inc. Home automation (HA) system including virtual assistant audible notification based upon learned device operational pattern and related methods
CN111159552A (zh) * 2019-12-30 2020-05-15 北京每日优鲜电子商务有限公司 商品搜索方法、装置、服务器和存储介质
US11830098B2 (en) 2020-01-02 2023-11-28 Vmware, Inc. Data leak prevention using user and device contexts
US12063214B2 (en) 2020-01-02 2024-08-13 VMware LLC Service authentication through a voice assistant
US12088585B2 (en) 2020-01-06 2024-09-10 VMware LLC Voice skill session lifetime management
US11482231B2 (en) * 2020-01-06 2022-10-25 Vmware, Inc. Skill redirections in a voice assistant
US20210248195A1 (en) * 2020-02-10 2021-08-12 Statum Systems Inc. Messaging interface with contextual search
CN111292749B (zh) * 2020-02-10 2023-06-09 北京声智科技有限公司 智能语音平台的会话控制方法及装置
US11873000B2 (en) 2020-02-18 2024-01-16 Toyota Motor North America, Inc. Gesture detection for transport control
US11137904B1 (en) 2020-03-10 2021-10-05 Apple Inc. Devices, methods, and graphical user interfaces for interacting with user interface objects corresponding to applications
CN113409777B (zh) * 2020-03-16 2023-05-23 上海博泰悦臻网络技术服务有限公司 一种记录用户关注点的方法、车载主机及车辆
US11256736B2 (en) * 2020-03-19 2022-02-22 Mercari, Inc. Personalized image recognition
US11038934B1 (en) 2020-05-11 2021-06-15 Apple Inc. Digital assistant hardware abstraction
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11755276B2 (en) 2020-05-12 2023-09-12 Apple Inc. Reducing description length based on confidence
US11693541B2 (en) * 2020-06-21 2023-07-04 Apple Inc. Application library and page hiding
CN113867855A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种任务推送方法、装置和电子设备
CN111651074B (zh) * 2020-07-06 2024-09-10 深圳市精源宇科技有限公司 电磁输入装置及电磁输入方法
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
CN112199190B (zh) * 2020-07-31 2023-11-03 星宸科技股份有限公司 内存分配方法、装置、存储介质及电子设备
US20220043869A1 (en) * 2020-08-06 2022-02-10 Rovi Guides, Inc. Methods and systems for searching based on multiple user profiles
US20220067754A1 (en) * 2020-08-27 2022-03-03 Coupang Corporation Computerized systems and methods for predicting a minimum detectable effect
KR102380091B1 (ko) * 2020-08-27 2022-03-29 충북대학교 산학협력단 모바일 환경에 강인한 중위값을 중심으로 한 시간 동기화 방법 및 시간 동기화 장치
US11748660B2 (en) * 2020-09-17 2023-09-05 Google Llc Automated assistant training and/or execution of inter-user procedures
US12086548B2 (en) 2020-09-30 2024-09-10 Amazon Technologies, Inc. Event extraction from documents with co-reference
US20220100967A1 (en) * 2020-09-30 2022-03-31 Amazon Technologies, Inc. Lifecycle management for customized natural language processing
JP1724470S (ja) * 2020-10-07 2022-09-12 コミュニケーション機能付き電子計算機
WO2022076950A1 (en) * 2020-10-09 2022-04-14 Olive AI, Inc. Controlling presentation of data through an operator interface by monitoring user interactions across various compute devices
JP1699377S (ko) * 2020-10-13 2021-11-15
US11790173B2 (en) * 2020-10-22 2023-10-17 Google Llc Recommending action(s) based on entity or entity type
US11540007B2 (en) 2020-11-04 2022-12-27 Digital Turbine, Inc. Cross-device interaction
US11853381B2 (en) * 2020-11-13 2023-12-26 Google Llc Hybrid fetching using a on-device cache
CN112328891B (zh) * 2020-11-24 2023-08-01 北京百度网讯科技有限公司 训练搜索模型的方法、搜索目标对象的方法及其装置
CN112417288B (zh) * 2020-11-25 2024-04-12 南京大学 一种用于众包软件测试的任务跨域推荐方法
US11762667B2 (en) * 2020-12-22 2023-09-19 International Business Machines Corporation Adjusting system settings based on displayed content
US20220222482A1 (en) * 2021-01-08 2022-07-14 Google Llc Providing ambient information based on learned user context and interaction, and associated systems and devices
US11947783B2 (en) * 2021-01-25 2024-04-02 Google Llc Undoing application operation(s) via user interaction(s) with an automated assistant
KR20220107860A (ko) * 2021-01-26 2022-08-02 삼성전자주식회사 화면 캡쳐를 수행하는 전자 장치 및 전자 장치에서 화면을 캡쳐하는 방법
CN112837817A (zh) * 2021-02-10 2021-05-25 四川黑石曼星健康科技有限公司 一种新型体能评估方案
CN113053133B (zh) * 2021-03-10 2023-03-24 江西岱泊智能科技有限公司 用于开放式路内停车位的车辆信息采集智能终端
US11664031B2 (en) * 2021-03-11 2023-05-30 Apple Inc. Multi-mode voice triggering for audio devices
US11893399B2 (en) 2021-03-22 2024-02-06 Samsung Electronics Co., Ltd. Electronic device for executing routine based on content and operating method of the electronic device
KR20220131721A (ko) * 2021-03-22 2022-09-29 삼성전자주식회사 콘텐츠에 기초하여 루틴을 실행하는 전자 장치 및 전자 장치의 동작 방법
WO2022213313A1 (en) 2021-04-08 2022-10-13 Citrix Systems, Inc. Intelligent collection of meeting background information
CN112800376B (zh) * 2021-04-15 2021-07-13 成都万创科技股份有限公司 一种基于Http循环请求的实现方法及其装置
KR20220147252A (ko) * 2021-04-27 2022-11-03 삼성전자주식회사 사용 패턴을 이용한 예측 기반의 제어 방법 및 그 장치
CN115334191B (zh) * 2021-05-10 2023-10-20 博泰车联网科技(上海)股份有限公司 控制方法、存储介质及电子设备
US11845347B2 (en) 2021-05-12 2023-12-19 David Alan Copeland Precision charging control of an untethered vehicle with a modular vehicle charging roadway
CN115373834B (zh) * 2021-05-27 2024-08-20 北京火山引擎科技有限公司 一种基于进程调用链的入侵检测方法
US12004114B2 (en) * 2021-06-11 2024-06-04 AT&T Intellectual Propety I, L.P. Geolocation of wireless network users
US20230013527A1 (en) * 2021-07-16 2023-01-19 Revvstreet Inc. Decaying scores to rank artists
US20230029420A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Maps auto-complete through query expansion
KR20230023352A (ko) * 2021-08-10 2023-02-17 삼성전자주식회사 전자 장치 및 전자 장치의 운동 데이터 제공 방법
CN113641243B (zh) * 2021-08-18 2022-03-18 江西科技学院 可穿戴设备的交互式手势识别方法、系统及可穿戴设备
US11954193B2 (en) 2021-09-01 2024-04-09 International Business Machines Corporation Automatic configuration switching in biometric matching
US12112192B2 (en) * 2021-09-23 2024-10-08 ZenDesk, Inc. Split triggers for executing computer operations
CN114036954B (zh) * 2021-09-30 2022-11-01 荣耀终端有限公司 同步通知消息的方法和装置
KR20230050807A (ko) * 2021-10-08 2023-04-17 삼성전자주식회사 전자 장치 및 이의 제어 방법
US11550702B1 (en) 2021-11-04 2023-01-10 T-Mobile Usa, Inc. Ensuring that computer programs are accessible to users with disabilities, such as for use with mobile phones
WO2023085851A1 (ko) * 2021-11-12 2023-05-19 삼성전자 주식회사 추천 정보를 표시하는 방법 및 전자 장치
EP4445666A1 (en) * 2021-12-07 2024-10-16 Qualcomm Incorporated Prevention of out-of-synchronization state due to user equipment tune-away
WO2023102762A1 (en) * 2021-12-08 2023-06-15 Citrix Systems, Inc. Systems and methods for intelligent messaging
CN117648137A (zh) * 2022-01-10 2024-03-05 荣耀终端有限公司 应用启动方法、电子设备及可读存储介质
US11709653B1 (en) * 2022-04-11 2023-07-25 Google Llc Contextual assistant using mouse pointing or touch cues
WO2023206058A1 (en) 2022-04-26 2023-11-02 Citrix Systems, Inc. Aggregating electronic messages for meetings
US20230409352A1 (en) * 2022-04-27 2023-12-21 Fotobom Media, Inc. Systems and Methods for Dynamically Generating Context Aware Active Icons on a Mobile Device
KR20230154591A (ko) * 2022-05-02 2023-11-09 쿠팡 주식회사 정보를 설정하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치
EP4273678A1 (en) 2022-05-06 2023-11-08 Apple Inc. Devices, methods, and graphical user interfaces for updating a session region
US11842028B2 (en) 2022-05-06 2023-12-12 Apple Inc. Devices, methods, and graphical user interfaces for updating a session region
US20230367777A1 (en) * 2022-05-10 2023-11-16 Apple Inc. Systems and methods for providing search interface with contextual suggestions
US20230367795A1 (en) * 2022-05-10 2023-11-16 Apple Inc. Navigating and performing device tasks using search interface
CN114821271B (zh) * 2022-05-19 2022-09-16 平安科技(深圳)有限公司 模型训练方法、图像描述生成方法、装置及存储介质
WO2023235143A1 (en) * 2022-05-31 2023-12-07 Apple Inc. Two-layer bandit optimization for recommendations
US11995457B2 (en) 2022-06-03 2024-05-28 Apple Inc. Digital assistant integration with system interface
US12105764B2 (en) * 2022-06-29 2024-10-01 Dropbox, Inc. Empty search state
CN114863939B (zh) * 2022-07-07 2022-09-13 四川大学 一种基于声音的大熊猫属性识别方法及系统
US11662832B1 (en) * 2022-08-25 2023-05-30 Google Llc System and method for enhancing functionality of electronic devices
US12021815B2 (en) * 2022-09-08 2024-06-25 Lenovo (Singapore) Pte. Ltd Message reminder upon detection of no response
WO2024086048A1 (en) * 2022-10-16 2024-04-25 Google Llc Mitigating latency in spoken input guided selection of item(s)
US20240203173A1 (en) * 2022-12-15 2024-06-20 Mercedes-Benz Group AG System and/or method for predicting user action in connection with a vehicle user interface using machine learning
US11954325B1 (en) * 2023-04-05 2024-04-09 Honeywell International Inc. Methods and systems for assigning text entry components to cursors
US12106042B1 (en) * 2023-06-09 2024-10-01 International Business Machines Corporation Enhanced computer automation to transfer data between software applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002197566A (ja) * 2000-12-22 2002-07-12 Sony Corp 車両検索装置及び車両検索方法
US20100073201A1 (en) * 2008-09-24 2010-03-25 Denso International America, Inc. Car finder by cell phone
JP2012022478A (ja) * 2010-07-13 2012-02-02 Fujitsu Ten Ltd 携帯端末装置および駐車位置案内プログラム

Family Cites Families (2767)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8073695B1 (en) 1992-12-09 2011-12-06 Adrea, LLC Electronic book with voice emulation features
US5621878A (en) 1993-03-03 1997-04-15 Apple Computer, Inc. Method and apparatus or manipulating data from a suspended application program on a computer-controlled display system
US6122482A (en) 1995-02-22 2000-09-19 Global Communications, Inc. Satellite broadcast receiving and distribution system
US5901287A (en) 1996-04-01 1999-05-04 The Sabre Group Inc. Information aggregation and synthesization system
US6169911B1 (en) 1997-09-26 2001-01-02 Sun Microsystems, Inc. Graphical user interface for a portable telephone
US8479122B2 (en) 2004-07-30 2013-07-02 Apple Inc. Gestures for touch sensitive input devices
US6553308B1 (en) 1999-04-29 2003-04-22 Donnelly Corporation Vehicle-based navigation system with smart map filtering, portable unit home-base registration and multiple navigation system preferential use
IL140805A0 (en) 1998-10-02 2002-02-10 Ibm Structure skeletons for efficient voice navigation through generic hierarchical objects
US6163794A (en) 1998-10-23 2000-12-19 General Magic Network system extensible by users
US7447637B1 (en) 1998-12-23 2008-11-04 Eastern Investments, Llc System and method of processing speech within a graphic user interface
US6157891A (en) * 1998-11-16 2000-12-05 Lin; Ching-Fang Positioning and ground proximity warning method and system thereof for vehicle
US8938688B2 (en) 1998-12-04 2015-01-20 Nuance Communications, Inc. Contextual prediction of user words and user actions
US7881936B2 (en) 1998-12-04 2011-02-01 Tegic Communications, Inc. Multimodal disambiguation of speech recognition
US6842877B2 (en) 1998-12-18 2005-01-11 Tangis Corporation Contextual responses based on automated learning techniques
WO2000074240A1 (en) 1999-05-27 2000-12-07 America Online Keyboard system with automatic correction
JP2003505778A (ja) 1999-05-28 2003-02-12 セーダ インコーポレイテッド 音声制御ユーザインタフェース用の認識文法作成の特定用途を有する句ベースの対話モデル化
US20140098247A1 (en) 1999-06-04 2014-04-10 Ip Holdings, Inc. Home Automation And Smart Home Control Using Mobile Devices And Wireless Enabled Electrical Switches
US8065155B1 (en) 1999-06-10 2011-11-22 Gazdzinski Robert F Adaptive advertising apparatus and methods
AUPQ138199A0 (en) 1999-07-02 1999-07-29 Telstra R & D Management Pty Ltd A search system
US7925610B2 (en) 1999-09-22 2011-04-12 Google Inc. Determining a meaning of a knowledge item using document-based information
US6266615B1 (en) 1999-09-27 2001-07-24 Televigation, Inc. Method and system for an interactive and real-time distributed navigation system
US8392188B1 (en) 1999-11-05 2013-03-05 At&T Intellectual Property Ii, L.P. Method and system for building a phonotactic model for domain independent speech recognition
US9076448B2 (en) 1999-11-12 2015-07-07 Nuance Communications, Inc. Distributed real time speech recognition system
US7392185B2 (en) 1999-11-12 2008-06-24 Phoenix Solutions, Inc. Speech based learning/training system using semantic decoding
US7130807B1 (en) 1999-11-22 2006-10-31 Accenture Llp Technology sharing during demand and supply planning in a network-based supply chain environment
US8271336B2 (en) 1999-11-22 2012-09-18 Accenture Global Services Gmbh Increased visibility during order management in a network-based supply chain environment
US8032409B1 (en) 1999-11-22 2011-10-04 Accenture Global Services Limited Enhanced visibility during installation management in a network-based supply chain environment
US7337389B1 (en) 1999-12-07 2008-02-26 Microsoft Corporation System and method for annotating an electronic document independently of its content
US8271287B1 (en) 2000-01-14 2012-09-18 Alcatel Lucent Voice command remote control system
US6757362B1 (en) 2000-03-06 2004-06-29 Avaya Technology Corp. Personal virtual assistant
US6587782B1 (en) 2000-03-14 2003-07-01 Navigation Technologies Corp. Method and system for providing reminders about points of interests while traveling
US8645137B2 (en) 2000-03-16 2014-02-04 Apple Inc. Fast, language-independent method for user authentication by voice
US8024415B2 (en) 2001-03-16 2011-09-20 Microsoft Corporation Priorities generation and management
US7917366B1 (en) 2000-03-24 2011-03-29 Exaudios Technologies System and method for determining a personal SHG profile by voice analysis
US7606706B1 (en) 2000-04-20 2009-10-20 Rubin Aviel D System and method for storage and retrieval of personal communications in a broadband network
US6915262B2 (en) 2000-11-30 2005-07-05 Telesector Resources Group, Inc. Methods and apparatus for performing speech recognition and using speech recognition results
US7277853B1 (en) 2001-03-02 2007-10-02 Mindspeed Technologies, Inc. System and method for a endpoint detection of speech for improved speech recognition in noisy environments
WO2002073452A1 (en) 2001-03-14 2002-09-19 At & T Corp. Method for automated sentence planning
US7209880B1 (en) 2001-03-20 2007-04-24 At&T Corp. Systems and methods for dynamic re-configurable speech recognition
CA2446085C (en) 2001-04-30 2010-04-27 Octave Communications, Inc. Audio conference platform with dynamic speech detection threshold
US6975304B1 (en) 2001-06-11 2005-12-13 Handspring, Inc. Interface for processing of an alternate symbol in a computer device
US8831949B1 (en) 2001-06-28 2014-09-09 At&T Intellectual Property I, L.P. Voice recognition for performing authentication and completing transactions in a systems interface to legacy systems
JP2003121164A (ja) 2001-06-29 2003-04-23 Spencer Stephens 位置識別子を受けるナビゲータ並びに関連する装置及び方法
US6489921B1 (en) * 2001-07-12 2002-12-03 Jeffrey Fergus Wilkinson Vehicle locating apparatus
US20050134578A1 (en) 2001-07-13 2005-06-23 Universal Electronics Inc. System and methods for interacting with a control environment
US7987151B2 (en) 2001-08-10 2011-07-26 General Dynamics Advanced Info Systems, Inc. Apparatus and method for problem solving using intelligent agents
US7920682B2 (en) 2001-08-21 2011-04-05 Byrne William J Dynamic interactive voice interface
US11004114B2 (en) 2001-08-21 2021-05-11 Bookit Oy Components, system, platform and methodologies for mediating and provisioning services and product delivery and orchestrating, mediating and authenticating transactions and interactions
JP2003085696A (ja) 2001-09-10 2003-03-20 Mitsubishi Heavy Ind Ltd 車両位置検索システム及びそれを備えた駐車場並びにその駐車場における料金徴収方法
US7403938B2 (en) 2001-09-24 2008-07-22 Iac Search & Media, Inc. Natural language query processing
US6985865B1 (en) 2001-09-26 2006-01-10 Sprint Spectrum L.P. Method and system for enhanced response to voice commands in a voice command platform
US7324947B2 (en) 2001-10-03 2008-01-29 Promptu Systems Corporation Global speech user interface
US7113572B2 (en) * 2001-10-03 2006-09-26 Cingular Wireless Ii, Llc System and method for recognition of and automatic connection using spoken address information received in voice mails and live telephone conversations
ITFI20010199A1 (it) 2001-10-22 2003-04-22 Riccardo Vieri Sistema e metodo per trasformare in voce comunicazioni testuali ed inviarle con una connessione internet a qualsiasi apparato telefonico
US7913185B1 (en) 2001-10-25 2011-03-22 Adobe Systems Incorporated Graphical insertion of JavaScript pop-up menus
US20030101054A1 (en) 2001-11-27 2003-05-29 Ncc, Llc Integrated system and method for electronic speech recognition and transcription
US9374451B2 (en) 2002-02-04 2016-06-21 Nokia Technologies Oy System and method for multimodal short-cuts to digital services
US8374879B2 (en) 2002-02-04 2013-02-12 Microsoft Corporation Systems and methods for managing interactions from multiple speech-enabled applications
US7221287B2 (en) 2002-03-05 2007-05-22 Triangle Software Llc Three-dimensional traffic report
US7707221B1 (en) 2002-04-03 2010-04-27 Yahoo! Inc. Associating and linking compact disc metadata
US7869998B1 (en) 2002-04-23 2011-01-11 At&T Intellectual Property Ii, L.P. Voice-enabled dialog system
US8135115B1 (en) 2006-11-22 2012-03-13 Securus Technologies, Inc. System and method for multi-channel recording
US7221937B2 (en) 2002-05-06 2007-05-22 Research In Motion Limited Event reminder method
US8611919B2 (en) 2002-05-23 2013-12-17 Wounder Gmbh., Llc System, method, and computer program product for providing location based services and mobile e-commerce
US7398209B2 (en) 2002-06-03 2008-07-08 Voicebox Technologies, Inc. Systems and methods for responding to natural language speech utterance
US8219608B2 (en) 2002-06-20 2012-07-10 Koninklijke Philips Electronics N.V. Scalable architecture for web services
AU2003280474A1 (en) 2002-06-28 2004-01-19 Conceptual Speech, Llc Multi-phoneme streamer and knowledge representation speech recognition system and method
US7079713B2 (en) 2002-06-28 2006-07-18 Microsoft Corporation Method and system for displaying and linking ink objects with recognized text and objects
US6876727B2 (en) 2002-07-24 2005-04-05 Sbc Properties, Lp Voice over IP method for developing interactive voice response system
US7027842B2 (en) 2002-09-24 2006-04-11 Bellsouth Intellectual Property Corporation Apparatus and method for providing hands-free operation of a device
US9342829B2 (en) 2002-10-01 2016-05-17 Andrew H B Zhou Systems and methods for mobile application, wearable application, transactional messaging, calling, digital multimedia capture and payment transactions
US7822611B2 (en) 2002-11-12 2010-10-26 Bezar David B Speaker intent analysis system
US8972266B2 (en) 2002-11-12 2015-03-03 David Bezar User intent analysis extent of speaker intent analysis system
US8005919B2 (en) 2002-11-18 2011-08-23 Aol Inc. Host-based intelligent results related to a character stream
US8661112B2 (en) 2002-12-20 2014-02-25 Nuance Communications, Inc. Customized interactive voice response menus
FI115190B (fi) 2003-01-21 2005-03-15 Nokia Corp Menetelmä paikkariippuvan toiminnon käynnistämiseksi, järjestelmä ja laite
US8064753B2 (en) 2003-03-05 2011-11-22 Freeman Alan D Multi-feature media article and method for manufacture of same
US8244712B2 (en) 2003-03-18 2012-08-14 Apple Inc. Localized viewing of file system names
US7623892B2 (en) 2003-04-02 2009-11-24 Palm, Inc. System and method for enabling a person to switch use of computing devices
US7941009B2 (en) 2003-04-08 2011-05-10 The Penn State Research Foundation Real-time computerized annotation of pictures
US8224757B2 (en) 2003-04-15 2012-07-17 Sap Ag Curriculum management system
JP2004326498A (ja) 2003-04-25 2004-11-18 Matsushita Electric Ind Co Ltd 情報端末機器及びプログラム
US7669134B1 (en) 2003-05-02 2010-02-23 Apple Inc. Method and apparatus for displaying information during an instant messaging session
US7407384B2 (en) 2003-05-29 2008-08-05 Robert Bosch Gmbh System, method and device for language education through a voice portal server
US7496230B2 (en) 2003-06-05 2009-02-24 International Business Machines Corporation System and method for automatic natural language translation of embedded text regions in images during information transfer
US8311835B2 (en) 2003-08-29 2012-11-13 Microsoft Corporation Assisted multi-modal dialogue
US7539619B1 (en) 2003-09-05 2009-05-26 Spoken Translation Ind. Speech-enabled language translation system and method enabling interactive user supervision of translation and speech recognition accuracy
US7917364B2 (en) 2003-09-23 2011-03-29 Hewlett-Packard Development Company, L.P. System and method using multiple automated speech recognition engines
US7386440B2 (en) 2003-10-01 2008-06-10 International Business Machines Corporation Method, system, and apparatus for natural language mixed-initiative dialogue processing
US20090018918A1 (en) 2004-11-04 2009-01-15 Manyworlds Inc. Influence-based Social Network Advertising
JP3734815B2 (ja) 2003-12-10 2006-01-11 任天堂株式会社 携帯ゲーム装置及びゲームプログラム
US7427024B1 (en) 2003-12-17 2008-09-23 Gazdzinski Mark J Chattel management apparatus and methods
JPWO2005064592A1 (ja) 2003-12-26 2007-12-20 株式会社ケンウッド 機器制御装置、音声認識装置、エージェント装置、車載機器制御装置、ナビゲーション装置、オーディオ装置、機器制御方法、音声認識方法、エージェント処理方法、車載機器制御方法、ナビゲーション方法、オーディオ装置制御方法及びプログラム
US8160883B2 (en) 2004-01-10 2012-04-17 Microsoft Corporation Focus tracking in dialogs
US8281339B1 (en) 2004-01-12 2012-10-02 United Video Properties, Inc. Customizable flip and browse overlays in an interactive television system
US7433876B2 (en) 2004-02-23 2008-10-07 Radar Networks, Inc. Semantic web portal and platform
US8654936B1 (en) 2004-02-24 2014-02-18 At&T Intellectual Property I, L.P. Home control, monitoring and communication system using remote voice commands
US7983835B2 (en) 2004-11-03 2011-07-19 Lagassey Paul J Modular intelligent transportation system
GB2412546B (en) 2004-03-25 2009-03-04 Samsung Electronics Co Ltd Messaging in a mobile communications network
US8713418B2 (en) 2004-04-12 2014-04-29 Google Inc. Adding value to a rendered document
US8233884B2 (en) 2004-04-20 2012-07-31 Sony Mobile Communications Ab Information service phonebook update
US8020101B2 (en) 2004-05-20 2011-09-13 International Business Machines Corporation User specified transfer of data between applications
US20050258632A1 (en) 2004-05-21 2005-11-24 Bradford Currier Parking location reminder and business advertisement
US8130929B2 (en) 2004-05-25 2012-03-06 Galileo Processing, Inc. Methods for obtaining complex data in an interactive voice response system
US7873149B2 (en) 2004-06-01 2011-01-18 Verizon Business Global Llc Systems and methods for gathering information
US8224649B2 (en) 2004-06-02 2012-07-17 International Business Machines Corporation Method and apparatus for remote command, control and diagnostics of systems using conversational or audio interface
US8095364B2 (en) 2004-06-02 2012-01-10 Tegic Communications, Inc. Multimodal disambiguation of speech recognition
US8321786B2 (en) 2004-06-17 2012-11-27 Apple Inc. Routine and interface for correcting electronic text
US8099395B2 (en) 2004-06-24 2012-01-17 Oracle America, Inc. System level identity object
US8589156B2 (en) 2004-07-12 2013-11-19 Hewlett-Packard Development Company, L.P. Allocation of speech recognition tasks and combination of results thereof
US8036893B2 (en) 2004-07-22 2011-10-11 Nuance Communications, Inc. Method and system for identifying and correcting accent-induced speech recognition difficulties
US7936861B2 (en) 2004-07-23 2011-05-03 At&T Intellectual Property I, L.P. Announcement system and method of use
US8381135B2 (en) 2004-07-30 2013-02-19 Apple Inc. Proximity detector in handheld device
US7728821B2 (en) 2004-08-06 2010-06-01 Touchtable, Inc. Touch detecting interactive display
US7869999B2 (en) 2004-08-11 2011-01-11 Nuance Communications, Inc. Systems and methods for selecting from multiple phonectic transcriptions for text-to-speech synthesis
US8407239B2 (en) 2004-08-13 2013-03-26 Google Inc. Multi-stage query processing system and method for use with tokenspace repository
US8117542B2 (en) 2004-08-16 2012-02-14 Microsoft Corporation User interface for displaying selectable software functionality controls that are contextually relevant to a selected object
US7895531B2 (en) 2004-08-16 2011-02-22 Microsoft Corporation Floating command object
US7912699B1 (en) 2004-08-23 2011-03-22 At&T Intellectual Property Ii, L.P. System and method of lattice-based search for spoken utterance retrieval
US20060048055A1 (en) 2004-08-25 2006-03-02 Jun Wu Fault-tolerant romanized input method for non-roman characters
US20060059424A1 (en) 2004-09-15 2006-03-16 Petri Jonah W Real-time data localization
US7936863B2 (en) 2004-09-30 2011-05-03 Avaya Inc. Method and apparatus for providing communication tasks in a workflow
US8107401B2 (en) 2004-09-30 2012-01-31 Avaya Inc. Method and apparatus for providing a virtual assistant to a communication participant
US8744852B1 (en) 2004-10-01 2014-06-03 Apple Inc. Spoken interfaces
US7885844B1 (en) 2004-11-16 2011-02-08 Amazon Technologies, Inc. Automatically generating task recommendations for human task performers
US8117623B1 (en) 2004-11-18 2012-02-14 Adobe Systems Incorporated System and method for providing notices to users of a computer program in a flexible way
US20060111835A1 (en) 2004-11-23 2006-05-25 Texas Instruments Incorporated Location system for locating a parked vehicle, a method for providing a location of a parked vehicle and a personal wireless device incorporating the system or method
US8498865B1 (en) 2004-11-30 2013-07-30 Vocera Communications, Inc. Speech recognition system and method using group call statistics
GB0426347D0 (en) 2004-12-01 2005-01-05 Ibm Methods, apparatus and computer programs for automatic speech recognition
US7987244B1 (en) 2004-12-30 2011-07-26 At&T Intellectual Property Ii, L.P. Network repository for voice fonts
US8478589B2 (en) 2005-01-05 2013-07-02 At&T Intellectual Property Ii, L.P. Library of existing spoken dialog data for use in generating new natural language spoken dialog systems
US8069422B2 (en) 2005-01-10 2011-11-29 Samsung Electronics, Co., Ltd. Contextual task recommendation system and method for determining user's context and suggesting tasks
US8150872B2 (en) 2005-01-24 2012-04-03 The Intellection Group, Inc. Multimodal natural language query system for processing and analyzing voice and proximity-based queries
US7873654B2 (en) 2005-01-24 2011-01-18 The Intellection Group, Inc. Multimodal natural language query system for processing and analyzing voice and proximity-based queries
US8228299B1 (en) 2005-01-27 2012-07-24 Singleton Technology, Llc Transaction automation and archival system using electronic contract and disclosure units
EP1849099B1 (en) 2005-02-03 2014-05-07 Apple Inc. Recommender system for identifying a new set of media items responsive to an input set of media items and knowledge base metrics
US7895039B2 (en) 2005-02-04 2011-02-22 Vocollect, Inc. Methods and systems for optimizing model adaptation for a speech recognition system
US8200495B2 (en) 2005-02-04 2012-06-12 Vocollect, Inc. Methods and systems for considering information about an expected response when performing speech recognition
US8577683B2 (en) 2008-08-15 2013-11-05 Thomas Majchrowski & Associates, Inc. Multipurpose media players
CN101124579A (zh) 2005-02-24 2008-02-13 富士施乐株式会社 单词翻译装置、翻译方法以及翻译程序
US7933399B2 (en) 2005-03-22 2011-04-26 At&T Intellectual Property I, L.P. System and method for utilizing virtual agents in an interactive voice response application
US7925525B2 (en) 2005-03-25 2011-04-12 Microsoft Corporation Smart reminders
US8346757B1 (en) 2005-03-28 2013-01-01 Google Inc. Determining query terms of little significance
US9471566B1 (en) 2005-04-14 2016-10-18 Oracle America, Inc. Method and apparatus for converting phonetic language input to written language output
US8260617B2 (en) 2005-04-18 2012-09-04 Nuance Communications, Inc. Automating input when testing voice-enabled applications
US7996589B2 (en) 2005-04-22 2011-08-09 Microsoft Corporation Auto-suggest lists and handwritten input
US7684990B2 (en) 2005-04-29 2010-03-23 Nuance Communications, Inc. Method and apparatus for multiple value confirmation and correction in spoken dialog systems
US8046374B1 (en) 2005-05-06 2011-10-25 Symantec Corporation Automatic training of a database intrusion detection system
US7571161B2 (en) 2005-05-13 2009-08-04 Microsoft Corporation System and method for auto-sensed search help
US7886233B2 (en) 2005-05-23 2011-02-08 Nokia Corporation Electronic text input involving word completion functionality for predicting word candidates for partial word inputs
US8041570B2 (en) 2005-05-31 2011-10-18 Robert Bosch Corporation Dialogue management using scripts
US7725476B2 (en) 2005-06-14 2010-05-25 International Business Machines Corporation System and method for automated data retrieval based on data placed in clipboard memory
US8477323B2 (en) 2005-06-22 2013-07-02 Xerox Corporation System and method for conveying rendering intents
US8024195B2 (en) 2005-06-27 2011-09-20 Sensory, Inc. Systems and methods of performing speech recognition using historical information
US8396715B2 (en) 2005-06-28 2013-03-12 Microsoft Corporation Confidence threshold tuning
GB0513225D0 (en) 2005-06-29 2005-08-03 Ibm Method and system for building and contracting a linguistic dictionary
US7873523B2 (en) 2005-06-30 2011-01-18 Microsoft Corporation Computer implemented method of analyzing recognition results between a user and an interactive application utilizing inferred values instead of transcribed speech
US7885390B2 (en) 2005-07-01 2011-02-08 Soleo Communications, Inc. System and method for multi-modal personal communication services
US7881283B2 (en) 2005-07-13 2011-02-01 Research In Motion Limited Customizability of event notification on telephony-enabled devices
US9094636B1 (en) 2005-07-14 2015-07-28 Zaxcom, Inc. Systems and methods for remotely controlling local audio devices in a virtual wireless multitrack recording system
US7912720B1 (en) 2005-07-20 2011-03-22 At&T Intellectual Property Ii, L.P. System and method for building emotional machines
US8694322B2 (en) 2005-08-05 2014-04-08 Microsoft Corporation Selective confirmation for execution of a voice activated user interface
US7640160B2 (en) 2005-08-05 2009-12-29 Voicebox Technologies, Inc. Systems and methods for responding to natural language speech utterance
US7844037B2 (en) 2005-08-08 2010-11-30 Palm, Inc. Method and device for enabling message responses to incoming phone calls
CA2618623C (en) 2005-08-09 2015-01-06 Mobilevoicecontrol, Inc. Control center for a voice controlled wireless communication device system
US7620549B2 (en) 2005-08-10 2009-11-17 Voicebox Technologies, Inc. System and method of supporting adaptive misrecognition in conversational speech
JP2009505204A (ja) 2005-08-11 2009-02-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ インタラクティブシステムとインタフェースシステムを駆動する方法
US7949529B2 (en) 2005-08-29 2011-05-24 Voicebox Technologies, Inc. Mobile systems and methods of supporting natural language human-machine interactions
JP4178154B2 (ja) 2005-08-30 2008-11-12 松下電器産業株式会社 駐車位置探索支援装置、方法およびプログラム
US8265939B2 (en) 2005-08-31 2012-09-11 Nuance Communications, Inc. Hierarchical methods and apparatus for extracting user intent from spoken utterances
WO2007027989A2 (en) 2005-08-31 2007-03-08 Voicebox Technologies, Inc. Dynamic speech sharpening
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US8819659B2 (en) 2005-09-14 2014-08-26 Millennial Media, Inc. Mobile search service instant activation
US8688671B2 (en) 2005-09-14 2014-04-01 Millennial Media Managing sponsored content based on geographic region
US8635073B2 (en) 2005-09-14 2014-01-21 At&T Intellectual Property I, L.P. Wireless multimodal voice browser for wireline-based IPTV services
US8509827B2 (en) 2005-09-21 2013-08-13 Buckyball Mobile Inc. Methods and apparatus of context-data acquisition and ranking
US7505784B2 (en) 2005-09-26 2009-03-17 Barbera Melvin A Safety features for portable electronic device
US7992085B2 (en) 2005-09-26 2011-08-02 Microsoft Corporation Lightweight reference user interface
US8270933B2 (en) 2005-09-26 2012-09-18 Zoomsafer, Inc. Safety features for portable electronic device
US9009046B1 (en) 2005-09-27 2015-04-14 At&T Intellectual Property Ii, L.P. System and method for disambiguating multiple intents in a natural language dialog system
US7633076B2 (en) 2005-09-30 2009-12-15 Apple Inc. Automated response to and sensing of user activity in portable devices
JP4908094B2 (ja) 2005-09-30 2012-04-04 株式会社リコー 情報処理システム、情報処理方法及び情報処理プログラム
US7930168B2 (en) 2005-10-04 2011-04-19 Robert Bosch Gmbh Natural language processing of disfluent sentences
US8401163B1 (en) 2005-10-18 2013-03-19 Callwave Communications, Llc Methods and systems for call processing and for providing call progress status over a network
US20070094024A1 (en) 2005-10-22 2007-04-26 International Business Machines Corporation System and method for improving text input in a shorthand-on-keyboard interface
US7395959B2 (en) 2005-10-27 2008-07-08 International Business Machines Corporation Hands free contact database information entry at a communication device
KR100755678B1 (ko) 2005-10-28 2007-09-05 삼성전자주식회사 개체명 검출 장치 및 방법
US9026915B1 (en) 2005-10-31 2015-05-05 At&T Intellectual Property Ii, L.P. System and method for creating a presentation using natural language
US7936339B2 (en) 2005-11-01 2011-05-03 Leapfrog Enterprises, Inc. Method and system for invoking computer functionality by interaction with dynamically generated interface regions of a writing surface
US8042048B2 (en) 2005-11-17 2011-10-18 Att Knowledge Ventures, L.P. System and method for home automation
EP1949264A4 (en) 2005-11-17 2010-10-13 Nokia Corp INTERWORKING APPLICATIONS
US8055707B2 (en) 2005-11-30 2011-11-08 Alcatel Lucent Calendar interface for digital communications
US9330668B2 (en) 2005-12-20 2016-05-03 International Business Machines Corporation Sharing voice application processing via markup
US8234494B1 (en) 2005-12-21 2012-07-31 At&T Intellectual Property Ii, L.P. Speaker-verification digital signatures
US7996228B2 (en) 2005-12-22 2011-08-09 Microsoft Corporation Voice initiated network operations
US7685144B1 (en) 2005-12-29 2010-03-23 Google Inc. Dynamically autocompleting a data entry
US7890330B2 (en) 2005-12-30 2011-02-15 Alpine Electronics Inc. Voice recording tool for creating database used in text to speech synthesis system
KR101265263B1 (ko) 2006-01-02 2013-05-16 삼성전자주식회사 발음 기호를 이용한 문자열 매칭 방법 및 시스템과 그방법을 기록한 컴퓨터 판독 가능한 기록매체
US8006180B2 (en) 2006-01-10 2011-08-23 Mircrosoft Corporation Spell checking in network browser based applications
US9600568B2 (en) 2006-01-23 2017-03-21 Veritas Technologies Llc Methods and systems for automatic evaluation of electronic discovery review and productions
US9275129B2 (en) 2006-01-23 2016-03-01 Symantec Corporation Methods and systems to efficiently find similar and near-duplicate emails and files
US7929805B2 (en) 2006-01-31 2011-04-19 The Penn State Research Foundation Image-based CAPTCHA generation system
US8352183B2 (en) 2006-02-04 2013-01-08 Microsoft Corporation Maps for social networking and geo blogs
US9101279B2 (en) 2006-02-15 2015-08-11 Virtual Video Reality By Ritchey, Llc Mobile user borne brain activity data and surrounding environment data correlation system
US7983910B2 (en) 2006-03-03 2011-07-19 International Business Machines Corporation Communicating across voice and text channels with emotion preservation
US9250703B2 (en) 2006-03-06 2016-02-02 Sony Computer Entertainment Inc. Interface with gaze detection and voice input
US8532678B2 (en) 2006-03-08 2013-09-10 Tomtom International B.V. Portable GPS navigation device
JP4734155B2 (ja) 2006-03-24 2011-07-27 株式会社東芝 音声認識装置、音声認識方法および音声認識プログラム
US8018431B1 (en) 2006-03-29 2011-09-13 Amazon Technologies, Inc. Page turner for handheld electronic book reader device
US7930183B2 (en) 2006-03-29 2011-04-19 Microsoft Corporation Automatic identification of dialog timing problems for an interactive speech dialog application using speech log data indicative of cases of barge-in and timing problems
US7283072B1 (en) 2006-03-30 2007-10-16 International Business Machines Corporation Methods of creating a dictionary for data compression
US8244545B2 (en) 2006-03-30 2012-08-14 Microsoft Corporation Dialog repair based on discrepancies between user model predictions and speech recognition results
US7996769B2 (en) 2006-04-05 2011-08-09 Research In Motion Limited Handheld electronic device and method for performing spell checking during text entry and for providing a spell-check learning feature
US8046363B2 (en) 2006-04-13 2011-10-25 Lg Electronics Inc. System and method for clustering documents
KR100744380B1 (ko) 2006-04-17 2007-07-30 삼성전자주식회사 외부 디스플레이 장치로 영상을 출력할 수 있는 기능을구비한 이동 단말기에서의 디스플레이 제어 장치 및 방법
US8077153B2 (en) 2006-04-19 2011-12-13 Microsoft Corporation Precise selection techniques for multi-touch screens
US8103947B2 (en) 2006-04-20 2012-01-24 Timecove Corporation Collaborative system and method for generating biographical accounts
US8214213B1 (en) 2006-04-27 2012-07-03 At&T Intellectual Property Ii, L.P. Speech recognition based on pronunciation modeling
US9020804B2 (en) 2006-05-10 2015-04-28 Xerox Corporation Method for aligning sentences at the word level enforcing selective contiguity constraints
US7523108B2 (en) 2006-06-07 2009-04-21 Platformation, Inc. Methods and apparatus for searching with awareness of geography and languages
US8332218B2 (en) 2006-06-13 2012-12-11 Nuance Communications, Inc. Context-based grammars for automated speech recognition
US9219767B2 (en) 2006-06-22 2015-12-22 Linkedin Corporation Recording and indicating preferences
JP5218052B2 (ja) 2006-06-26 2013-06-26 日本電気株式会社 言語モデル生成システム、言語モデル生成方法および言語モデル生成用プログラム
US8279171B2 (en) 2006-07-06 2012-10-02 Panasonic Corporation Voice input device
US8050500B1 (en) 2006-07-06 2011-11-01 Senapps, LLC Recognition method and system
US20080022208A1 (en) 2006-07-18 2008-01-24 Creative Technology Ltd System and method for personalizing the user interface of audio rendering devices
US8134481B2 (en) 2006-08-11 2012-03-13 Honda Motor Co., Ltd. Method and system for receiving and sending navigational data via a wireless messaging service on a navigation system
US7646296B2 (en) 2006-08-11 2010-01-12 Honda Motor Co., Ltd. Method and system for receiving and sending navigational data via a wireless messaging service on a navigation system
US9071701B2 (en) 2006-08-31 2015-06-30 Qualcomm Incorporated Using wireless characteristic to trigger generation of position fix
US8170790B2 (en) 2006-09-05 2012-05-01 Garmin Switzerland Gmbh Apparatus for switching navigation device mode
US7996792B2 (en) 2006-09-06 2011-08-09 Apple Inc. Voicemail manager for portable multifunction device
US8589869B2 (en) 2006-09-07 2013-11-19 Wolfram Alpha Llc Methods and systems for determining a formula
TWI322610B (en) 2006-09-08 2010-03-21 Htc Corp Handheld electronic device
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US7528713B2 (en) 2006-09-28 2009-05-05 Ektimisi Semiotics Holdings, Llc Apparatus and method for providing a task reminder based on travel history
US7649454B2 (en) 2006-09-28 2010-01-19 Ektimisi Semiotics Holdings, Llc System and method for providing a task reminder based on historical travel information
US8214208B2 (en) 2006-09-28 2012-07-03 Reqall, Inc. Method and system for sharing portable voice profiles
US8014308B2 (en) 2006-09-28 2011-09-06 Microsoft Corporation Hardware architecture for cloud services
US7930197B2 (en) 2006-09-28 2011-04-19 Microsoft Corporation Personal data mining
US7945470B1 (en) 2006-09-29 2011-05-17 Amazon Technologies, Inc. Facilitating performance of submitted tasks by mobile task performers
JP2008092269A (ja) 2006-10-02 2008-04-17 Matsushita Electric Ind Co Ltd ハンズフリー通話装置
US7937075B2 (en) 2006-10-06 2011-05-03 At&T Intellectual Property I, L.P. Mode changing of a mobile communications device and vehicle settings when the mobile communications device is in proximity to a vehicle
JP2008096541A (ja) 2006-10-06 2008-04-24 Canon Inc 音声処理装置およびその制御方法
US8434133B2 (en) 2006-10-06 2013-04-30 Fmr Llc Single-party, secure multi-channel authentication
US8073681B2 (en) 2006-10-16 2011-12-06 Voicebox Technologies, Inc. System and method for a cooperative conversational voice user interface
US8972268B2 (en) 2008-04-15 2015-03-03 Facebook, Inc. Enhanced speech-to-speech translation system and methods for adding a new word
US8255216B2 (en) 2006-10-30 2012-08-28 Nuance Communications, Inc. Speech recognition of character sequences
WO2008061903A1 (en) 2006-11-22 2008-05-29 Agfa Healthcate Inc. Method and system for client / server distributed image processing
US8055502B2 (en) 2006-11-28 2011-11-08 General Motors Llc Voice dialing using a rejection reference
US9830912B2 (en) 2006-11-30 2017-11-28 Ashwin P Rao Speak and touch auto correction interface
GB0623915D0 (en) 2006-11-30 2007-01-10 Ibm Phonetic decoding and concatentive speech synthesis
US8731610B2 (en) 2006-12-13 2014-05-20 Samsung Electronics Co., Ltd. Method for adaptive user interface in mobile devices
US8010367B2 (en) 2006-12-22 2011-08-30 Nuance Communications, Inc. Spoken free-form passwords for light-weight speaker verification using standard speech recognition engines
US8019271B1 (en) 2006-12-29 2011-09-13 Nextel Communications, Inc. Methods and systems for presenting information on mobile devices
US7865817B2 (en) 2006-12-29 2011-01-04 Amazon Technologies, Inc. Invariant referencing in digital works
US8060824B2 (en) 2007-01-05 2011-11-15 Starz Entertainment Llc User interface for a multimedia service
WO2008086216A2 (en) 2007-01-05 2008-07-17 Johnson Controls Technology Company System and method for customized audio prompting
US7889184B2 (en) 2007-01-05 2011-02-15 Apple Inc. Method, system and graphical user interface for displaying hyperlink information
US7889185B2 (en) 2007-01-05 2011-02-15 Apple Inc. Method, system, and graphical user interface for activating hyperlinks
US8391844B2 (en) 2007-01-07 2013-03-05 Apple Inc. Voicemail systems and methods
AU2008204404B2 (en) 2007-01-09 2013-05-30 Spinvox Limited Detection of unanswered call in order to give calling party the option to alternatively dictate a text message for delivery to the called party
US8056070B2 (en) 2007-01-10 2011-11-08 Goller Michael D System and method for modifying and updating a speech recognition program
US7912724B1 (en) 2007-01-18 2011-03-22 Adobe Systems Incorporated Audio comparison using phoneme matching
US9524355B2 (en) 2007-01-22 2016-12-20 Mozy, Inc. Methods for delivering task-related digital content based on task-oriented user activity
JP2008185805A (ja) 2007-01-30 2008-08-14 Internatl Business Mach Corp <Ibm> 高品質の合成音声を生成する技術
US20110047605A1 (en) 2007-02-06 2011-02-24 Vidoop, Llc System And Method For Authenticating A User To A Computer System
US7818176B2 (en) 2007-02-06 2010-10-19 Voicebox Technologies, Inc. System and method for selecting and presenting advertisements based on natural language processing of voice-based input
US8078978B2 (en) 2007-10-19 2011-12-13 Google Inc. Method and system for predicting text
US7912828B2 (en) 2007-02-23 2011-03-22 Apple Inc. Pattern searching methods and apparatuses
WO2008106655A1 (en) 2007-03-01 2008-09-04 Apapx, Inc. System and method for dynamic learning
TWI321313B (en) 2007-03-03 2010-03-01 Ind Tech Res Inst Apparatus and method to reduce recognization errors through context relations among dialogue turns
US8886540B2 (en) 2007-03-07 2014-11-11 Vlingo Corporation Using speech recognition results based on an unstructured language model in a mobile communication facility application
US20110054894A1 (en) 2007-03-07 2011-03-03 Phillips Michael S Speech recognition through the collection of contact information in mobile dictation application
US8949266B2 (en) 2007-03-07 2015-02-03 Vlingo Corporation Multiple web-based content category searching in mobile search application
US8635243B2 (en) 2007-03-07 2014-01-21 Research In Motion Limited Sending a communications header with voice recording to send metadata for use in speech recognition, formatting, and search mobile search application
US20110060587A1 (en) 2007-03-07 2011-03-10 Phillips Michael S Command and control utilizing ancillary information in a mobile voice-to-speech application
US8838457B2 (en) 2007-03-07 2014-09-16 Vlingo Corporation Using results of unstructured language model based speech recognition to control a system-level function of a mobile communications facility
US8880405B2 (en) 2007-03-07 2014-11-04 Vlingo Corporation Application text entry in a mobile environment using a speech processing facility
US8219406B2 (en) 2007-03-15 2012-07-10 Microsoft Corporation Speech-centric multimodal user interface design in mobile technology
CN101636784B (zh) 2007-03-20 2011-12-28 富士通株式会社 语音识别系统及语音识别方法
US8943018B2 (en) 2007-03-23 2015-01-27 At&T Mobility Ii Llc Advanced contact management in communications networks
US7689916B1 (en) 2007-03-27 2010-03-30 Avaya, Inc. Automatically generating, and providing multiple levels of, tooltip information over time
CA2682000A1 (en) 2007-03-28 2008-10-02 Breakthrough Performancetech, Llc Systems and methods for computerized interactive training
US8370145B2 (en) 2007-03-29 2013-02-05 Panasonic Corporation Device for extracting keywords in a conversation
US8775931B2 (en) 2007-03-30 2014-07-08 Blackberry Limited Spell check function that applies a preference to a spell check algorithm based upon extensive user selection of spell check results generated by the algorithm, and associated handheld electronic device
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
CN101286094A (zh) 2007-04-10 2008-10-15 谷歌股份有限公司 多模式输入法编辑器
EP2140341B1 (en) 2007-04-26 2012-04-25 Ford Global Technologies, LLC Emotive advisory system and method
US8695074B2 (en) 2007-04-26 2014-04-08 Microsoft Corporation Pre-authenticated calling for voice applications
US8005664B2 (en) 2007-04-30 2011-08-23 Tachyon Technologies Pvt. Ltd. System, method to generate transliteration and method for generating decision tree to obtain transliteration
US7983915B2 (en) 2007-04-30 2011-07-19 Sonic Foundry, Inc. Audio content search engine
US7912289B2 (en) 2007-05-01 2011-03-22 Microsoft Corporation Image text replacement
US8032383B1 (en) 2007-05-04 2011-10-04 Foneweb, Inc. Speech controlled services and devices using internet
US7899666B2 (en) 2007-05-04 2011-03-01 Expert System S.P.A. Method and system for automatically extracting relations between concepts included in text
US8886521B2 (en) 2007-05-17 2014-11-11 Redstart Systems, Inc. System and method of dictation for a speech recognition command system
WO2008146456A1 (ja) 2007-05-28 2008-12-04 Panasonic Corporation 情報探索支援方法および情報探索支援装置
US8055708B2 (en) 2007-06-01 2011-11-08 Microsoft Corporation Multimedia spaces
KR100968864B1 (ko) 2007-06-01 2010-07-09 엔에이치엔(주) 전자메일에 대한 부가 정보 서비스 제공방법 및 그 시스템
RU2009148311A (ru) * 2007-06-04 2011-07-20 Томтом Интернэшнл Б.В. (Nl) Устройство обработки данных местоположения и способ импортирования информации о местоположении
US8204238B2 (en) 2007-06-08 2012-06-19 Sensory, Inc Systems and methods of sonic communication
WO2008151466A1 (en) 2007-06-14 2008-12-18 Google Inc. Dictionary word and phrase determination
US7987176B2 (en) 2007-06-25 2011-07-26 Sap Ag Mixed initiative semantic search
US8090621B1 (en) 2007-06-27 2012-01-03 Amazon Technologies, Inc. Method and system for associating feedback with recommendation rules
US8630841B2 (en) 2007-06-29 2014-01-14 Microsoft Corporation Regular expression word verification
KR100930802B1 (ko) 2007-06-29 2009-12-09 엔에이치엔(주) 이미지를 이용한 브라우저 제어 방법 및 시스템
US8050919B2 (en) 2007-06-29 2011-11-01 Microsoft Corporation Speaker recognition via voice sample based on multiple nearest neighbor classifiers
AU2008201643B1 (en) 2007-07-24 2008-08-28 Rambrandt Messaging Technologies, LP Messaging service in a wireless communications network
ITFI20070177A1 (it) 2007-07-26 2009-01-27 Riccardo Vieri Sistema per la creazione e impostazione di una campagna pubblicitaria derivante dall'inserimento di messaggi pubblicitari all'interno di uno scambio di messaggi e metodo per il suo funzionamento.
US7983919B2 (en) 2007-08-09 2011-07-19 At&T Intellectual Property Ii, L.P. System and method for performing speech synthesis with a cache of phoneme sequences
JP2010236858A (ja) 2007-08-10 2010-10-21 Mitsubishi Electric Corp ナビゲーション装置
US7983478B2 (en) 2007-08-10 2011-07-19 Microsoft Corporation Hidden markov model based handwriting/calligraphy generation
JP2009048245A (ja) 2007-08-14 2009-03-05 Konami Digital Entertainment:Kk 入力受付装置、領域制御方法、および、プログラム
US8260619B1 (en) 2008-08-22 2012-09-04 Convergys Cmg Utah, Inc. Method and system for creating natural language understanding grammars
US7847709B2 (en) 2007-08-28 2010-12-07 Gm Global Technology Operations, Inc. Multimode vehicle location device and method
US8374316B2 (en) 2007-08-28 2013-02-12 International Business Machines Corporation System for recording spoken phone numbers during a voice call
US8190359B2 (en) 2007-08-31 2012-05-29 Proxpro, Inc. Situation-aware personal information management for a mobile device
US8661340B2 (en) 2007-09-13 2014-02-25 Apple Inc. Input methods for device having multi-language environment
US8042053B2 (en) 2007-09-24 2011-10-18 Microsoft Corporation Method for making digital documents browseable
US8595642B1 (en) 2007-10-04 2013-11-26 Great Northern Research, LLC Multiple shell multi faceted graphical user interface
US8165886B1 (en) 2007-10-04 2012-04-24 Great Northern Research LLC Speech interface system and method for control and interaction with applications on a computing system
US8036901B2 (en) 2007-10-05 2011-10-11 Sensory, Incorporated Systems and methods of performing speech recognition using sensory inputs of human position
US9532164B2 (en) 2007-10-12 2016-12-27 Empire Ip Llc Mashing mapping content displayed on mobile devices
US8594996B2 (en) 2007-10-17 2013-11-26 Evri Inc. NLP-based entity recognition and disambiguation
US8126863B2 (en) 2007-10-25 2012-02-28 Apple Inc. Search control combining classification and text-based searching techniques
US8364694B2 (en) 2007-10-26 2013-01-29 Apple Inc. Search assistant for digital media assets
US7840447B2 (en) 2007-10-30 2010-11-23 Leonard Kleinrock Pricing and auctioning of bundled items among multiple sellers and buyers
US9063979B2 (en) 2007-11-01 2015-06-23 Ebay, Inc. Analyzing event streams of user sessions
US8010614B1 (en) 2007-11-01 2011-08-30 Bitdefender IPR Management Ltd. Systems and methods for generating signatures for electronic communication classification
US7983997B2 (en) 2007-11-02 2011-07-19 Florida Institute For Human And Machine Cognition, Inc. Interactive complex task teaching system that allows for natural language input, recognizes a user's intent, and automatically performs tasks in document object model (DOM) nodes
US8055296B1 (en) 2007-11-06 2011-11-08 Sprint Communications Company L.P. Head-up display communication system and method
US8065152B2 (en) 2007-11-08 2011-11-22 Demand Media, Inc. Platform for enabling voice commands to resolve phoneme based domain name registrations
JP4910991B2 (ja) 2007-11-08 2012-04-04 株式会社デンソー 駐車場案内システム
DE102008051757A1 (de) 2007-11-12 2009-05-14 Volkswagen Ag Multimodale Benutzerschnittstelle eines Fahrerassistenzsystems zur Eingabe und Präsentation von Informationen
US8112280B2 (en) 2007-11-19 2012-02-07 Sensory, Inc. Systems and methods of performing speech recognition with barge-in for use in a bluetooth system
US8620662B2 (en) 2007-11-20 2013-12-31 Apple Inc. Context-aware unit selection
US20150046537A1 (en) 2007-11-21 2015-02-12 Vdoqwest, Inc., A Delaware Corporation Retrieving video annotation metadata using a p2p network and copyright free indexes
US20110246471A1 (en) 2010-04-06 2011-10-06 Selim Shlomo Rakib Retrieving video annotation metadata using a p2p network
US8190596B2 (en) 2007-11-28 2012-05-29 International Business Machines Corporation Method for assembly of personalized enterprise information integrators over conjunctive queries
US8543622B2 (en) 2007-12-07 2013-09-24 Patrick Giblin Method and system for meta-tagging media content and distribution
US8140335B2 (en) 2007-12-11 2012-03-20 Voicebox Technologies, Inc. System and method for providing a natural language voice user interface in an integrated voice navigation services environment
US8331958B2 (en) 2007-12-13 2012-12-11 Garmin Switzerland Gmbh Automatically identifying location information in text data
KR101300839B1 (ko) 2007-12-18 2013-09-10 삼성전자주식회사 음성 검색어 확장 방법 및 시스템
US8595004B2 (en) 2007-12-18 2013-11-26 Nec Corporation Pronunciation variation rule extraction apparatus, pronunciation variation rule extraction method, and pronunciation variation rule extraction program
US10002189B2 (en) 2007-12-20 2018-06-19 Apple Inc. Method and apparatus for searching using an active ontology
US8019604B2 (en) 2007-12-21 2011-09-13 Motorola Mobility, Inc. Method and apparatus for uniterm discovery and voice-to-voice search on mobile device
US8583416B2 (en) 2007-12-27 2013-11-12 Fluential, Llc Robust information extraction from utterances
US8219407B1 (en) 2007-12-27 2012-07-10 Great Northern Research, LLC Method for processing the output of a speech recognizer
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US7870133B2 (en) 2008-01-14 2011-01-11 Infosys Technologies Ltd. Method for semantic based storage and retrieval of information
US10176827B2 (en) 2008-01-15 2019-01-08 Verint Americas Inc. Active lab
ITPO20080002A1 (it) 2008-01-22 2009-07-23 Riccardo Vieri Sistema e metodo per la generazione di pubblicita' contestuale durante l'invio di sms, relativo dispositivo e interfaccia.
US20120284015A1 (en) 2008-01-28 2012-11-08 William Drewes Method for Increasing the Accuracy of Subject-Specific Statistical Machine Translation (SMT)
US8099289B2 (en) 2008-02-13 2012-01-17 Sensory, Inc. Voice interface and search for electronic devices including bluetooth headsets and remote systems
US20090210391A1 (en) 2008-02-14 2009-08-20 Hall Stephen G Method and system for automated search for, and retrieval and distribution of, information
US8595119B2 (en) 2008-02-15 2013-11-26 New York Mercantile Exchange, Inc. Symbolic language for trade matching
US8065143B2 (en) 2008-02-22 2011-11-22 Apple Inc. Providing text input using speech data and non-speech data
US8706474B2 (en) 2008-02-23 2014-04-22 Fair Isaac Corporation Translation of entity names based on source document publication date, and frequency and co-occurrence of the entity names
US8015144B2 (en) 2008-02-26 2011-09-06 Microsoft Corporation Learning transportation modes from raw GPS data
US8068604B2 (en) 2008-12-19 2011-11-29 Computer Product Introductions Corporation Method and system for event notifications
US9049255B2 (en) 2008-02-29 2015-06-02 Blackberry Limited Visual event notification on a handheld communications device
US8201109B2 (en) 2008-03-04 2012-06-12 Apple Inc. Methods and graphical user interfaces for editing on a portable multifunction device
US8205157B2 (en) 2008-03-04 2012-06-19 Apple Inc. Methods and graphical user interfaces for conducting searches on a portable multifunction device
US8255224B2 (en) 2008-03-07 2012-08-28 Google Inc. Voice recognition grammar selection based on context
US20090234655A1 (en) 2008-03-13 2009-09-17 Jason Kwon Mobile electronic device with active speech recognition
US20090235176A1 (en) 2008-03-14 2009-09-17 Madhavi Jayanthi Social interaction system for facilitating display of current location of friends and location of businesses of interest
US7958136B1 (en) 2008-03-18 2011-06-07 Google Inc. Systems and methods for identifying similar documents
EP2274895A1 (en) 2008-03-27 2011-01-19 Markport Limited Processing of messaging service attributes in communication systems
US7472061B1 (en) 2008-03-31 2008-12-30 International Business Machines Corporation Systems and methods for building a native language phoneme lexicon having native pronunciations of non-native words derived from non-native pronunciations
US8996376B2 (en) 2008-04-05 2015-03-31 Apple Inc. Intelligent text-to-speech conversion
US8140368B2 (en) 2008-04-07 2012-03-20 International Business Machines Corporation Method and system for routing a task to an employee based on physical and emotional state
CN101981614B (zh) 2008-04-08 2012-06-27 株式会社Ntt都科摩 媒体处理服务器设备及其媒体处理方法
KR20090107365A (ko) 2008-04-08 2009-10-13 엘지전자 주식회사 이동 단말기 및 그 메뉴 제어방법
US8285737B1 (en) 2008-04-10 2012-10-09 Google Inc. Selecting content for publication
US7889101B2 (en) 2008-04-14 2011-02-15 Alpine Electronics, Inc Method and apparatus for generating location based reminder message for navigation system
JP4656177B2 (ja) 2008-04-14 2011-03-23 トヨタ自動車株式会社 ナビゲーション装置、操作部表示方法
US8433778B1 (en) 2008-04-22 2013-04-30 Marvell International Ltd Device configuration
US8972432B2 (en) 2008-04-23 2015-03-03 Google Inc. Machine translation using information retrieval
US8121837B2 (en) 2008-04-24 2012-02-21 Nuance Communications, Inc. Adjusting a speech engine for a mobile computing device based on background noise
US8194827B2 (en) 2008-04-29 2012-06-05 International Business Machines Corporation Secure voice transaction method and system
US8254829B1 (en) 2008-05-09 2012-08-28 Sprint Communications Company L.P. Network media service with track delivery adapted to a user cadence
US8219115B1 (en) 2008-05-12 2012-07-10 Google Inc. Location based reminders
US20130275899A1 (en) 2010-01-18 2013-10-17 Apple Inc. Application Gateway for Providing Different User Interfaces for Limited Distraction and Non-Limited Distraction Contexts
US8516562B2 (en) 2008-05-13 2013-08-20 Veritrix, Inc. Multi-channel multi-factor authentication
US9965035B2 (en) 2008-05-13 2018-05-08 Apple Inc. Device, method, and graphical user interface for synchronizing two or more displays
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US20090288022A1 (en) 2008-05-15 2009-11-19 Sony Corporation Dynamically changing a user interface based on device location and/or date/time
US10203861B2 (en) 2008-05-21 2019-02-12 Please Don't Go, LLC. Messaging window overlay for a browser
US20130100268A1 (en) 2008-05-27 2013-04-25 University Health Network Emergency detection and response system and method
US8589161B2 (en) 2008-05-27 2013-11-19 Voicebox Technologies, Inc. System and method for an integrated, multi-modal, multi-device natural language voice services environment
US9305548B2 (en) 2008-05-27 2016-04-05 Voicebox Technologies Corporation System and method for an integrated, multi-modal, multi-device natural language voice services environment
US8082498B2 (en) 2008-05-27 2011-12-20 Appfolio, Inc. Systems and methods for automatic spell checking of dynamically generated web pages
US8464150B2 (en) 2008-06-07 2013-06-11 Apple Inc. Automatic language identification for dynamic text processing
EP2133772B1 (en) 2008-06-11 2011-03-09 ExB Asset Management GmbH Device and method incorporating an improved text input mechanism
JP5093494B2 (ja) 2008-06-12 2012-12-12 カシオ計算機株式会社 ナビゲーション装置およびナビゲーションプログラム
US8140330B2 (en) 2008-06-13 2012-03-20 Robert Bosch Gmbh System and method for detecting repeated patterns in dialog systems
US8412707B1 (en) 2008-06-13 2013-04-02 Ustringer LLC Method and apparatus for distributing content
US8195460B2 (en) 2008-06-17 2012-06-05 Voicesense Ltd. Speaker characterization through speech analysis
DE102008028885A1 (de) 2008-06-18 2009-12-31 Epcos Ag Verfahren zur Abstimmung einer Resonanzfrequenz eines piezoelektrischen Bauelementes
US9510044B1 (en) 2008-06-18 2016-11-29 Gracenote, Inc. TV content segmentation, categorization and identification and time-aligned applications
GB2462800A (en) 2008-06-20 2010-02-24 New Voice Media Ltd Monitoring a conversation between an agent and a customer and performing real time analytics on the audio signal for determining future handling of the call
US8300801B2 (en) 2008-06-26 2012-10-30 Centurylink Intellectual Property Llc System and method for telephone based noise cancellation
US20110106736A1 (en) 2008-06-26 2011-05-05 Intuitive User Interfaces Ltd. System and method for intuitive user interaction
US8423288B2 (en) 2009-11-30 2013-04-16 Apple Inc. Dynamic alerts for calendar events
US8364481B2 (en) 2008-07-02 2013-01-29 Google Inc. Speech recognition with parallel recognition tasks
US20100005085A1 (en) 2008-07-03 2010-01-07 Oracle International Corporation Creating relationship maps from enterprise application system data
US20110112837A1 (en) 2008-07-03 2011-05-12 Mobiter Dicta Oy Method and device for converting speech
US20100017741A1 (en) 2008-07-16 2010-01-21 Nokia Corporation Start of an application from an idle state display mode of a mobile terminal
US8166019B1 (en) 2008-07-21 2012-04-24 Sprint Communications Company L.P. Providing suggested actions in response to textual communications
JP5791861B2 (ja) 2008-07-25 2015-10-07 シャープ株式会社 情報処理装置および情報処理方法
US8818816B2 (en) 2008-07-30 2014-08-26 Mitsubishi Electric Corporation Voice recognition device
US8001125B1 (en) 2008-07-30 2011-08-16 Intuit Inc. Method and apparatus for defining relationships between tags
US8386485B2 (en) 2008-07-31 2013-02-26 George Mason Intellectual Properties, Inc. Case-based framework for collaborative semantic search
US20100030549A1 (en) 2008-07-31 2010-02-04 Lee Michael M Mobile device having human language translation capability with positional feedback
CN102119412B (zh) 2008-08-11 2013-01-02 旭化成株式会社 例外语辞典制作装置、例外语辞典制作方法、和声音识别装置和声音识别方法
US8221125B2 (en) 2008-08-14 2012-07-17 World View Time Inc. Electronic presentation of world time zones
US8326630B2 (en) 2008-08-18 2012-12-04 Microsoft Corporation Context based online advertising
US8805110B2 (en) 2008-08-19 2014-08-12 Digimarc Corporation Methods and systems for content processing
US20110161072A1 (en) 2008-08-20 2011-06-30 Nec Corporation Language model creation apparatus, language model creation method, speech recognition apparatus, speech recognition method, and recording medium
US20110144901A1 (en) 2008-08-29 2011-06-16 Zhanyong Wang Method for Playing Voice Guidance and Navigation Device Using the Same
US8768702B2 (en) 2008-09-05 2014-07-01 Apple Inc. Multi-tiered voice feedback in an electronic device
US8090616B2 (en) 2008-09-08 2012-01-03 Proctor Jr James Arthur Visual identification information used as confirmation in a wireless communication
US8898568B2 (en) 2008-09-09 2014-11-25 Apple Inc. Audio user interface
US20100063926A1 (en) 2008-09-09 2010-03-11 Damon Charles Hougland Payment application framework
US8259082B2 (en) 2008-09-12 2012-09-04 At&T Intellectual Property I, L.P. Multimodal portable communication interface for accessing video content
US8929877B2 (en) 2008-09-12 2015-01-06 Digimarc Corporation Methods and systems for content processing
JP5213605B2 (ja) 2008-09-17 2013-06-19 シャープ株式会社 通信装置、情報提示装置、通信方法、プログラム、および記録媒体
US8775154B2 (en) 2008-09-18 2014-07-08 Xerox Corporation Query translation through dictionary adaptation
US8352268B2 (en) 2008-09-29 2013-01-08 Apple Inc. Systems and methods for selective rate of speech and speech preferences for text to speech synthesis
GB2476011B (en) 2008-09-29 2013-05-15 Fisher Rosemount Systems Inc Efficient design and configuration of elements in a process control system
US8355919B2 (en) 2008-09-29 2013-01-15 Apple Inc. Systems and methods for text normalization for text to speech synthesis
US8396714B2 (en) 2008-09-29 2013-03-12 Apple Inc. Systems and methods for concatenation of words in text to speech synthesis
US8352272B2 (en) 2008-09-29 2013-01-08 Apple Inc. Systems and methods for text to speech synthesis
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US8539342B1 (en) 2008-10-16 2013-09-17 Adobe Systems Incorporated Read-order inference via content sorting
US8724829B2 (en) 2008-10-24 2014-05-13 Qualcomm Incorporated Systems, methods, apparatus, and computer-readable media for coherence detection
US8644488B2 (en) 2008-10-27 2014-02-04 Nuance Communications, Inc. System and method for automatically generating adaptive interaction logs from customer interaction text
JP5412083B2 (ja) * 2008-10-31 2014-02-12 ソニーモバイルコミュニケーションズ, エービー 携帯端末装置、操作オブジェクトの表示方法、及び操作オブジェクトの表示プログラム
US8170966B1 (en) 2008-11-04 2012-05-01 Bitdefender IPR Management Ltd. Dynamic streaming message clustering for rapid spam-wave detection
WO2010053437A1 (en) 2008-11-04 2010-05-14 Saplo Ab Method and system for analyzing text
US8122094B1 (en) 2008-11-05 2012-02-21 Kotab Dominic M Methods for performing an action relating to the scheduling of an event by performing one or more actions based on a response to a message
US8122353B2 (en) 2008-11-07 2012-02-21 Yahoo! Inc. Composing a message in an online textbox using a non-latin script
US20100205628A1 (en) 2009-02-12 2010-08-12 Davis Bruce L Media processing methods and arrangements
EP3258468B1 (en) 2008-11-10 2019-08-21 Google LLC Multisensory speech detection
US9202171B2 (en) 2008-11-11 2015-12-01 Digideal Corporation Virtual game assistant based on artificial intelligence
US8832319B2 (en) 2008-11-18 2014-09-09 Amazon Technologies, Inc. Synchronization of digital content
US8108214B2 (en) 2008-11-19 2012-01-31 Robert Bosch Gmbh System and method for recognizing proper names in dialog systems
JP2010122928A (ja) * 2008-11-20 2010-06-03 Toshiba Corp 携帯端末
US8296124B1 (en) 2008-11-21 2012-10-23 Google Inc. Method and apparatus for detecting incorrectly translated text in a document
JP2010128838A (ja) 2008-11-28 2010-06-10 Toyota Motor Corp 入力デバイス
US8140328B2 (en) 2008-12-01 2012-03-20 At&T Intellectual Property I, L.P. User intention based on N-best list of recognition hypotheses for utterances in a dialog
US8489599B2 (en) 2008-12-02 2013-07-16 Palo Alto Research Center Incorporated Context and activity-driven content delivery and interaction
US20100146012A1 (en) * 2008-12-04 2010-06-10 Microsoft Corporation Previewing search results for suggested refinement terms and vertical searches
US8054180B1 (en) 2008-12-08 2011-11-08 Amazon Technologies, Inc. Location aware reminders
EP2196989B1 (en) 2008-12-10 2012-06-27 Nuance Communications, Inc. Grammar and template-based speech recognition of spoken utterances
US20100153968A1 (en) 2008-12-11 2010-06-17 Christof Engel External rendering of clipboard data
WO2010067118A1 (en) 2008-12-11 2010-06-17 Novauris Technologies Limited Speech recognition involving a mobile device
US8618958B2 (en) 2008-12-16 2013-12-31 Mitsubishi Electric Corporation Navigation device
US8918321B2 (en) 2012-04-13 2014-12-23 At&T Intellectual Property I, L.P. System and method for enhancing speech recognition accuracy
US8332205B2 (en) 2009-01-09 2012-12-11 Microsoft Corporation Mining transliterations for out-of-vocabulary query terms
US10088976B2 (en) 2009-01-15 2018-10-02 Em Acquisition Corp., Inc. Systems and methods for multiple voice document narration
US8670583B2 (en) 2009-01-22 2014-03-11 Panasonic Corporation Hearing aid system
US8635020B2 (en) 2009-01-23 2014-01-21 International Business Machines Corporation GPS location and favorite prediction based on in-vehicle meta-data
US8213911B2 (en) 2009-01-28 2012-07-03 Virtual Hold Technology Llc Mobile communication device for establishing automated call back
US8200489B1 (en) 2009-01-29 2012-06-12 The United States Of America As Represented By The Secretary Of The Navy Multi-resolution hidden markov model using class specific features
US8862252B2 (en) 2009-01-30 2014-10-14 Apple Inc. Audio user interface for displayless electronic device
US9070282B2 (en) 2009-01-30 2015-06-30 Altorr Corp. Smartphone control of electrical devices
US9183881B2 (en) 2009-02-02 2015-11-10 Porto Technology, Llc System and method for semantic trick play
US20110307491A1 (en) 2009-02-04 2011-12-15 Fisk Charles M Digital photo organizing and tagging method
US8254972B2 (en) 2009-02-13 2012-08-28 Sony Mobile Communications Ab Device and method for handling messages
US8428758B2 (en) 2009-02-16 2013-04-23 Apple Inc. Dynamic audio ducking
EP2399385B1 (en) 2009-02-18 2019-11-06 Google LLC Automatically capturing information, such as capturing information using a document-aware device
US8326637B2 (en) 2009-02-20 2012-12-04 Voicebox Technologies, Inc. System and method for processing multi-modal device interactions in a natural language voice services environment
MX2011008925A (es) 2009-02-25 2012-04-02 Miri Systems Llc Sistema y metodo de pago.
KR101041039B1 (ko) 2009-02-27 2011-06-14 고려대학교 산학협력단 오디오 및 비디오 정보를 이용한 시공간 음성 구간 검출 방법 및 장치
US9171284B2 (en) 2009-03-02 2015-10-27 Microsoft Technology Licensing, Llc Techniques to restore communications sessions for applications having conversation and meeting environments
CN102341843B (zh) 2009-03-03 2014-01-29 三菱电机株式会社 语音识别装置
US8380507B2 (en) 2009-03-09 2013-02-19 Apple Inc. Systems and methods for determining the language to use for speech generated by a text to speech engine
US8165321B2 (en) 2009-03-10 2012-04-24 Apple Inc. Intelligent clip mixing
WO2010105246A2 (en) 2009-03-12 2010-09-16 Exbiblio B.V. Accessing resources based on capturing information from a rendered document
US8589374B2 (en) * 2009-03-16 2013-11-19 Apple Inc. Multifunction device with integrated search and application selection
WO2010105428A1 (en) 2009-03-19 2010-09-23 Google Inc. Input method editor
US8924156B2 (en) 2009-03-26 2014-12-30 Nokia Corporation Method, apparatus, computer program and user interface
KR101078864B1 (ko) 2009-03-26 2011-11-02 한국과학기술원 질의/문서 주제 범주 변화 분석 시스템 및 그 방법과 이를 이용한 질의 확장 기반 정보 검색 시스템 및 그 방법
US8537980B2 (en) 2009-03-27 2013-09-17 Verizon Patent And Licensing Inc. Conversation support
GB201016385D0 (en) 2010-09-29 2010-11-10 Touchtype Ltd System and method for inputting text into electronic devices
US9424246B2 (en) 2009-03-30 2016-08-23 Touchtype Ltd. System and method for inputting text into electronic devices
GB0917753D0 (en) 2009-10-09 2009-11-25 Touchtype Ltd System and method for inputting text into electronic devices
US10191654B2 (en) 2009-03-30 2019-01-29 Touchtype Limited System and method for inputting text into electronic devices
US9189472B2 (en) 2009-03-30 2015-11-17 Touchtype Limited System and method for inputting text into small screen devices
GB0905457D0 (en) 2009-03-30 2009-05-13 Touchtype Ltd System and method for inputting text into electronic devices
US8798255B2 (en) 2009-03-31 2014-08-05 Nice Systems Ltd Methods and apparatus for deep interaction analysis
US8166032B2 (en) 2009-04-09 2012-04-24 MarketChorus, Inc. System and method for sentiment-based text classification and relevancy ranking
JP4851556B2 (ja) * 2009-04-10 2012-01-11 株式会社エヌ・ティ・ティ・ドコモ 連携サーバ装置、アプリケーション連携判断システム、及び、アプリケーション連携判断方法
US8275736B2 (en) 2009-04-17 2012-09-25 International Business Machines Corporation Increasing knowledge sharing success rates using real time match making
US20110065456A1 (en) 2009-04-20 2011-03-17 Brennan Joseph P Cellular device deactivation system
US8660970B1 (en) 2009-04-23 2014-02-25 The Boeing Company Passive learning and autonomously interactive system for leveraging user knowledge in networked environments
US8798903B2 (en) 2009-04-24 2014-08-05 Alpine Electronics, Inc. Method and apparatus for detecting arrival at new city and producing information on new city
KR101032792B1 (ko) 2009-04-30 2011-05-06 주식회사 코오롱 에어백용 폴리에스테르 원단 및 그의 제조 방법
US8660924B2 (en) 2009-04-30 2014-02-25 Navera, Inc. Configurable interactive assistant
CN102405463B (zh) 2009-04-30 2015-07-29 三星电子株式会社 利用多模态信息的用户意图推理装置及方法
NZ596948A (en) 2009-05-08 2014-05-30 Obdedge Llc Systems, methods, and devices for policy-based control and monitoring of use of mobile devices by vehicle operators
WO2010131256A1 (en) 2009-05-13 2010-11-18 Rajesh Mehra A keyboard for linguistic scripts
US8583511B2 (en) 2009-05-19 2013-11-12 Bradley Marshall Hendrickson Systems and methods for storing customer purchasing and preference data and enabling a customer to pre-register orders and events
US8498857B2 (en) 2009-05-19 2013-07-30 Tata Consultancy Services Limited System and method for rapid prototyping of existing speech recognition solutions in different languages
US20150294377A1 (en) 2009-05-30 2015-10-15 Edmond K. Chow Trust network effect
US20120310652A1 (en) 2009-06-01 2012-12-06 O'sullivan Daniel Adaptive Human Computer Interface (AAHCI)
US8095119B2 (en) 2009-06-02 2012-01-10 Microsoft Corporation In-call contact information display
US8560313B2 (en) 2010-05-13 2013-10-15 General Motors Llc Transient noise rejection for speech recognition
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US10540976B2 (en) 2009-06-05 2020-01-21 Apple Inc. Contextual voice commands
US10255566B2 (en) 2011-06-03 2019-04-09 Apple Inc. Generating and processing task items that represent tasks to perform
US20120327009A1 (en) 2009-06-07 2012-12-27 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface
CN101923853B (zh) 2009-06-12 2013-01-23 华为技术有限公司 说话人识别方法、设备和系统
US8484027B1 (en) 2009-06-12 2013-07-09 Skyreader Media Inc. Method for live remote narration of a digital book
US10408623B2 (en) * 2009-06-12 2019-09-10 Microsoft Technology Licensing, Llc Retracing steps
US20130219333A1 (en) 2009-06-12 2013-08-22 Adobe Systems Incorporated Extensible Framework for Facilitating Interaction with Devices
US8290777B1 (en) 2009-06-12 2012-10-16 Amazon Technologies, Inc. Synchronizing the playing and displaying of digital content
US9431006B2 (en) 2009-07-02 2016-08-30 Apple Inc. Methods and apparatuses for automatic speech recognition
US20110002487A1 (en) 2009-07-06 2011-01-06 Apple Inc. Audio Channel Assignment for Audio Output in a Movable Device
US8700399B2 (en) 2009-07-06 2014-04-15 Sensory, Inc. Systems and methods for hands-free voice control and voice search
US8943423B2 (en) 2009-07-07 2015-01-27 International Business Machines Corporation User interface indicators for changed user interface elements
KR101083540B1 (ko) 2009-07-08 2011-11-14 엔에이치엔(주) 통계적인 방법을 이용한 한자에 대한 자국어 발음열 변환 시스템 및 방법
US8344847B2 (en) 2009-07-09 2013-01-01 Medtronic Minimed, Inc. Coordination of control commands in a medical device system having at least one therapy delivery device and at least one wireless controller device
KR101061443B1 (ko) 2009-07-13 2011-09-02 엘지전자 주식회사 전자 기기, 이동 단말기 및 이를 이용한 기능 수행 방법
US9159151B2 (en) * 2009-07-13 2015-10-13 Microsoft Technology Licensing, Llc Bringing a visual representation to life via learned input from the user
US8588378B2 (en) 2009-07-15 2013-11-19 Google Inc. Highlighting of voice message transcripts
US8892439B2 (en) 2009-07-15 2014-11-18 Microsoft Corporation Combination and federation of local and remote speech recognition
US9998552B1 (en) 2010-04-30 2018-06-12 Open Invention Network Llc Dynamic creation, data population, and communication establishment across various mediums
US20110016421A1 (en) 2009-07-20 2011-01-20 Microsoft Corporation Task oriented user interface platform
US20110016150A1 (en) 2009-07-20 2011-01-20 Engstroem Jimmy System and method for tagging multiple digital images
US8213962B2 (en) 2009-07-21 2012-07-03 Verizon Patent And Licensing Inc. Vehicle computer link to mobile phone
US7953679B2 (en) 2009-07-22 2011-05-31 Xerox Corporation Scalable indexing for layout based document retrieval and ranking
US8378798B2 (en) 2009-07-24 2013-02-19 Research In Motion Limited Method and apparatus for a touch-sensitive display
US8239129B2 (en) 2009-07-27 2012-08-07 Robert Bosch Gmbh Method and system for improving speech recognition accuracy by use of geographic information
US9117448B2 (en) 2009-07-27 2015-08-25 Cisco Technology, Inc. Method and system for speech recognition using social networks
US9489577B2 (en) 2009-07-27 2016-11-08 Cxense Asa Visual similarity for video content
US20110029616A1 (en) 2009-07-29 2011-02-03 Guanming Wang Unified auto-reply to an email coming from unified messaging service
US8875219B2 (en) 2009-07-30 2014-10-28 Blackberry Limited Apparatus and method for controlled sharing of personal information
US8229488B2 (en) 2009-07-30 2012-07-24 Sony Ericsson Mobile Communications Ab Methods, apparatuses and computer programs for media content distribution
US9015818B2 (en) 2009-07-31 2015-04-21 Adobe Systems Incorporated Software application operational transfer
KR101608770B1 (ko) 2009-08-03 2016-04-04 엘지전자 주식회사 이동단말기 및 그 제어방법
JP2011033874A (ja) 2009-08-03 2011-02-17 Alpine Electronics Inc 多言語音声認識装置及び多言語音声認識辞書作成方法
US8340312B2 (en) 2009-08-04 2012-12-25 Apple Inc. Differential mode noise cancellation with active real-time control for microphone-speaker combinations used in two way audio communications
US8532574B2 (en) 2009-08-05 2013-09-10 Honda Motor Co., Ltd. Destination information sharing for the automobile environment
US8160877B1 (en) 2009-08-06 2012-04-17 Narus, Inc. Hierarchical real-time speaker recognition for biometric VoIP verification and targeting
US20110047072A1 (en) 2009-08-07 2011-02-24 Visa U.S.A. Inc. Systems and Methods for Propensity Analysis and Validation
US8233919B2 (en) 2009-08-09 2012-07-31 Hntb Holdings Ltd. Intelligently providing user-specific transportation-related information
JP5201599B2 (ja) 2009-08-11 2013-06-05 Necカシオモバイルコミュニケーションズ株式会社 端末装置、および、プログラム
US20110040707A1 (en) 2009-08-12 2011-02-17 Ford Global Technologies, Llc Intelligent music selection in vehicles
US8768313B2 (en) 2009-08-17 2014-07-01 Digimarc Corporation Methods and systems for image or audio recognition processing
US8626133B2 (en) 2009-08-19 2014-01-07 Cisco Technology, Inc. Matching a location of a contact with a task location
US8654952B2 (en) 2009-08-20 2014-02-18 T-Mobile Usa, Inc. Shareable applications on telecommunications devices
US9277021B2 (en) 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
EP2629211A1 (en) 2009-08-21 2013-08-21 Mikko Kalervo Väänänen Method and means for data searching and language translation
KR101496649B1 (ko) 2009-08-21 2015-03-02 삼성전자주식회사 복합 네트워크 망을 통한 외부 디바이스의 기능 공유 방법 및 그 장치
JP2011045005A (ja) 2009-08-24 2011-03-03 Fujitsu Toshiba Mobile Communications Ltd 携帯電話機
WO2011025462A1 (en) 2009-08-25 2011-03-03 Nanyang Technological University A method and system for reconstructing speech from an input signal comprising whispers
US20110054647A1 (en) 2009-08-26 2011-03-03 Nokia Corporation Network service for an audio interface unit
JP2011048671A (ja) 2009-08-27 2011-03-10 Kyocera Corp 入力装置および入力装置の制御方法
US8583638B2 (en) 2009-08-27 2013-11-12 Apple Inc. Adaptive mapping of search results
CN101996631B (zh) 2009-08-28 2014-12-03 国际商业机器公司 用于对齐文本的方法和装置
US20110238407A1 (en) 2009-08-31 2011-09-29 O3 Technologies, Llc Systems and methods for speech-to-speech translation
WO2011028844A2 (en) 2009-09-02 2011-03-10 Sri International Method and apparatus for tailoring the output of an intelligent automated assistant to a user
US8451238B2 (en) 2009-09-02 2013-05-28 Amazon Technologies, Inc. Touch-screen user interface
US8624851B2 (en) 2009-09-02 2014-01-07 Amazon Technologies, Inc. Touch-screen user interface
WO2011026247A1 (en) 2009-09-04 2011-03-10 Svox Ag Speech enhancement techniques on the power spectrum
TW201110108A (en) 2009-09-04 2011-03-16 Chunghwa Telecom Co Ltd Voice noise elimination method for microphone array
US8675084B2 (en) 2009-09-04 2014-03-18 Apple Inc. Systems and methods for remote camera control
US20120265535A1 (en) 2009-09-07 2012-10-18 Donald Ray Bryant-Rich Personal voice operated reminder system
US8560300B2 (en) 2009-09-09 2013-10-15 International Business Machines Corporation Error correction using fact repositories
US8788267B2 (en) 2009-09-10 2014-07-22 Mitsubishi Electric Research Laboratories, Inc. Multi-purpose contextual control
US20110060812A1 (en) 2009-09-10 2011-03-10 Level 3 Communications, Llc Cache server with extensible programming framework
US8321527B2 (en) 2009-09-10 2012-11-27 Tribal Brands System and method for tracking user location and associated activity and responsively providing mobile device updates
US20110066468A1 (en) 2009-09-11 2011-03-17 Internationl Business Machines Corporation Dynamic event planning through location awareness
WO2011032060A1 (en) 2009-09-11 2011-03-17 Telenav, Inc. Location based system with contextual contact manager mechanism and method of operation thereof
US9264758B2 (en) 2009-09-14 2016-02-16 Tivo Inc. Method and an apparatus for detecting media content recordings
US10587833B2 (en) 2009-09-16 2020-03-10 Disney Enterprises, Inc. System and method for automated network search and companion display of result relating to audio-video metadata
KR101660348B1 (ko) 2009-09-16 2016-09-27 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
US8972878B2 (en) 2009-09-21 2015-03-03 Avaya Inc. Screen icon manipulation by context and frequency of Use
US9015148B2 (en) 2009-09-21 2015-04-21 Microsoft Corporation Suggesting related search queries during web browsing
US8473558B2 (en) 2009-09-22 2013-06-25 Thwapr, Inc. Progressive registration for mobile media sharing
WO2011037587A1 (en) 2009-09-28 2011-03-31 Nuance Communications, Inc. Downsampling schemes in a hierarchical neural network structure for phoneme recognition
US8768308B2 (en) 2009-09-29 2014-07-01 Deutsche Telekom Ag Apparatus and method for creating and managing personal schedules via context-sensing and actuation
US8995625B2 (en) 2009-09-30 2015-03-31 T-Mobile Usa, Inc. Unified interface and routing module for handling audio input
US9111538B2 (en) 2009-09-30 2015-08-18 T-Mobile Usa, Inc. Genius button secondary commands
TW201113741A (en) 2009-10-01 2011-04-16 Htc Corp Lock-state switching method, electronic apparatus and computer program product
KR20110036385A (ko) 2009-10-01 2011-04-07 삼성전자주식회사 사용자 의도 분석 장치 및 방법
US9338274B2 (en) 2009-10-02 2016-05-10 Blackberry Limited Method of interacting with electronic devices in a locked state and handheld electronic device configured to permit interaction when in a locked state
US20110083079A1 (en) 2009-10-02 2011-04-07 International Business Machines Corporation Apparatus, system, and method for improved type-ahead functionality in a type-ahead field based on activity of a user within a user interface
EP2487597A4 (en) 2009-10-05 2013-05-08 Nec Corp COMMUNICATION TERMINAL HAVING ELECTRONIC MAIL TRANSMISSION FUNCTIONALITY, ELECTRONIC MAIL TRANSMISSION METHOD, AND COMPUTER READABLE RECORDING MEDIUM
JP5473520B2 (ja) 2009-10-06 2014-04-16 キヤノン株式会社 入力装置及びその制御方法
US20110087685A1 (en) 2009-10-09 2011-04-14 Microsoft Corporation Location-based service middleware
US8335689B2 (en) 2009-10-14 2012-12-18 Cogi, Inc. Method and system for efficient management of speech transcribers
US8611876B2 (en) 2009-10-15 2013-12-17 Larry Miller Configurable phone with interactive voice response engine
US8510103B2 (en) 2009-10-15 2013-08-13 Paul Angott System and method for voice recognition
EP2488963A1 (en) 2009-10-15 2012-08-22 Rogers Communications Inc. System and method for phrase identification
US8255217B2 (en) 2009-10-16 2012-08-28 At&T Intellectual Property I, Lp Systems and methods for creating and using geo-centric language models
US8451112B2 (en) 2009-10-19 2013-05-28 Qualcomm Incorporated Methods and apparatus for estimating departure time based on known calendar events
US8332748B1 (en) 2009-10-22 2012-12-11 Google Inc. Multi-directional auto-complete menu
US8554537B2 (en) 2009-10-23 2013-10-08 Samsung Electronics Co., Ltd Method and device for transliteration
US8326624B2 (en) 2009-10-26 2012-12-04 International Business Machines Corporation Detecting and communicating biometrics of recorded voice during transcription process
CA2779289A1 (en) 2009-10-28 2011-05-19 Google Inc. Computer-to-computer communication
US20110099507A1 (en) 2009-10-28 2011-04-28 Google Inc. Displaying a collection of interactive elements that trigger actions directed to an item
US9197736B2 (en) 2009-12-31 2015-11-24 Digimarc Corporation Intuitive computing methods and systems
US8386574B2 (en) 2009-10-29 2013-02-26 Xerox Corporation Multi-modality classification for one-class classification in social networks
US20110106536A1 (en) 2009-10-29 2011-05-05 Rovi Technologies Corporation Systems and methods for simulating dialog between a user and media equipment device
US9247421B2 (en) 2009-10-30 2016-01-26 Samsung Electronics Co., Ltd Mobile device, content delivery apparatus, content providing apparatus and control method thereof
US8315617B2 (en) 2009-10-31 2012-11-20 Btpatent Llc Controlling mobile device functions
US8832205B2 (en) 2009-11-02 2014-09-09 Lextine Software, Llc System and method for extracting calendar events from free-form email
US8279052B2 (en) 2009-11-04 2012-10-02 Immersion Corporation Systems and methods for haptic confirmation of commands
CN102056026B (zh) 2009-11-06 2013-04-03 中国移动通信集团设计院有限公司 音视频同步检测方法及其系统、语音检测方法及其系统
JP5622744B2 (ja) 2009-11-06 2014-11-12 株式会社東芝 音声認識装置
US20120137367A1 (en) 2009-11-06 2012-05-31 Cataphora, Inc. Continuous anomaly detection based on behavior modeling and heterogeneous information analysis
WO2011059997A1 (en) 2009-11-10 2011-05-19 Voicebox Technologies, Inc. System and method for providing a natural language content dedication service
US9171541B2 (en) 2009-11-10 2015-10-27 Voicebox Technologies Corporation System and method for hybrid processing in a natural language voice services environment
US8527859B2 (en) 2009-11-10 2013-09-03 Dulcetta, Inc. Dynamic audio playback of soundtracks for electronic visual works
US8358747B2 (en) 2009-11-10 2013-01-22 International Business Machines Corporation Real time automatic caller speech profiling
US20110111724A1 (en) 2009-11-10 2011-05-12 David Baptiste Method and apparatus for combating distracted driving
US8321209B2 (en) 2009-11-10 2012-11-27 Research In Motion Limited System and method for low overhead frequency domain voice authentication
US8732180B2 (en) 2009-11-12 2014-05-20 Apple Inc. Recommending media items
US8682649B2 (en) 2009-11-12 2014-03-25 Apple Inc. Sentiment prediction from textual data
CN102860039B (zh) 2009-11-12 2016-10-19 罗伯特·亨利·弗莱特 免提电话和/或麦克风阵列以及使用它们的方法和系统
US20130166303A1 (en) 2009-11-13 2013-06-27 Adobe Systems Incorporated Accessing media data using metadata repository
KR20110052863A (ko) 2009-11-13 2011-05-19 삼성전자주식회사 모바일 기기 및 그 제어 신호 생성 방법
US8712759B2 (en) 2009-11-13 2014-04-29 Clausal Computing Oy Specializing disambiguation of a natural language expression
KR20110052997A (ko) 2009-11-13 2011-05-19 삼성전자주식회사 디스플레이 장치와 클라이언트 단말 및 이의 제어 방법
US8989086B2 (en) 2009-11-13 2015-03-24 Samsung Electronics Co., Ltd. Methods and apparatus to support interference management in multi-tier wireless communication systems
TWI391915B (zh) 2009-11-17 2013-04-01 Inst Information Industry 語音變異模型建立裝置、方法及應用該裝置之語音辨識系統和方法
KR101595029B1 (ko) 2009-11-18 2016-02-17 엘지전자 주식회사 이동단말기 및 그 제어방법
US8358752B2 (en) 2009-11-19 2013-01-22 At&T Mobility Ii Llc User profile based speech to text conversion for visual voice mail
US8630971B2 (en) 2009-11-20 2014-01-14 Indian Institute Of Science System and method of using Multi Pattern Viterbi Algorithm for joint decoding of multiple patterns
US8358749B2 (en) 2009-11-21 2013-01-22 At&T Intellectual Property I, L.P. System and method to search a media content database based on voice input data
KR101960835B1 (ko) 2009-11-24 2019-03-21 삼성전자주식회사 대화 로봇을 이용한 일정 관리 시스템 및 그 방법
US20110153330A1 (en) 2009-11-27 2011-06-23 i-SCROLL System and method for rendering text synchronized audio
US8731901B2 (en) 2009-12-02 2014-05-20 Content Savvy, Inc. Context aware back-transliteration and translation of names and common phrases using web resources
EP2507729A4 (en) 2009-12-04 2017-03-29 TiVo Solutions Inc. Multifunction multimedia device
US8396888B2 (en) 2009-12-04 2013-03-12 Google Inc. Location-based searching using a search area that corresponds to a geographical location of a computing device
US20110137664A1 (en) 2009-12-09 2011-06-09 International Business Machines Corporation Providing Schedule Related Information to External Entities
US8224300B2 (en) 2009-12-11 2012-07-17 Alpine Electronics, Inc. Method and apparatus to enhance navigation user experience for a smart phone device
US8543917B2 (en) 2009-12-11 2013-09-24 Nokia Corporation Method and apparatus for presenting a first-person world view of content
US8737975B2 (en) 2009-12-11 2014-05-27 At&T Mobility Ii Llc Audio-based text messaging
US8812990B2 (en) 2009-12-11 2014-08-19 Nokia Corporation Method and apparatus for presenting a first person world view of content
KR101622111B1 (ko) 2009-12-11 2016-05-18 삼성전자 주식회사 대화 시스템 및 그의 대화 방법
US9766089B2 (en) 2009-12-14 2017-09-19 Nokia Technologies Oy Method and apparatus for correlating and navigating between a live image and a prerecorded panoramic image
US20110144857A1 (en) 2009-12-14 2011-06-16 Theodore Charles Wingrove Anticipatory and adaptive automobile hmi
US8892443B2 (en) 2009-12-15 2014-11-18 At&T Intellectual Property I, L.P. System and method for combining geographic metadata in automatic speech recognition language and acoustic models
KR101211796B1 (ko) 2009-12-16 2012-12-13 포항공과대학교 산학협력단 외국어 학습 장치 및 그 제공 방법
US8922485B1 (en) 2009-12-18 2014-12-30 Google Inc. Behavioral recognition on mobile devices
US8341037B2 (en) 2009-12-18 2012-12-25 Apple Inc. Mixed source media playback
US8385982B2 (en) 2009-12-21 2013-02-26 At&T Intellectual Property I, L.P. Controlling use of a communications device in accordance with motion of the device
US20110154193A1 (en) 2009-12-21 2011-06-23 Nokia Corporation Method and Apparatus for Text Input
US9100809B2 (en) 2009-12-21 2015-08-04 Julia Olincy Olincy Automatic response option mobile system for responding to incoming texts or calls or both
US9222798B2 (en) 2009-12-22 2015-12-29 Modena Enterprises, Llc Systems and methods for identifying an activity of a user based on a chronological order of detected movements of a computing device
US8805711B2 (en) 2009-12-22 2014-08-12 International Business Machines Corporation Two-layer data architecture for reservation management systems
CN101763341B (zh) * 2009-12-23 2014-10-22 宇龙计算机通信科技(深圳)有限公司 一种文本协同方法及系统
EP2339576B1 (en) 2009-12-23 2019-08-07 Google LLC Multi-modal input on an electronic device
KR20110072847A (ko) 2009-12-23 2011-06-29 삼성전자주식회사 열려진 사용자 의도 처리를 위한 대화관리 시스템 및 방법
US20110161309A1 (en) 2009-12-29 2011-06-30 Lx1 Technology Limited Method Of Sorting The Result Set Of A Search Engine
US8479107B2 (en) 2009-12-31 2013-07-02 Nokia Corporation Method and apparatus for fluid graphical user interface
US8988356B2 (en) 2009-12-31 2015-03-24 Google Inc. Touch sensor and touchscreen user input combination
US20110166862A1 (en) 2010-01-04 2011-07-07 Eyal Eshed System and method for variable automated response to remote verbal input at a mobile device
US8494852B2 (en) 2010-01-05 2013-07-23 Google Inc. Word-level correction of speech input
US8600743B2 (en) 2010-01-06 2013-12-03 Apple Inc. Noise profile determination for voice-related feature
WO2011082521A1 (en) 2010-01-06 2011-07-14 Zoran Corporation Method and apparatus for voice controlled operation of a media player
US20110167350A1 (en) 2010-01-06 2011-07-07 Apple Inc. Assist Features For Content Display Device
WO2011085387A2 (en) 2010-01-11 2011-07-14 Everspeech, Inc. Integrated data processing and transcription service
US8311838B2 (en) 2010-01-13 2012-11-13 Apple Inc. Devices and methods for identifying a prompt corresponding to a voice input in a sequence of prompts
US8381107B2 (en) 2010-01-13 2013-02-19 Apple Inc. Adaptive audio feedback system and method
US20110179372A1 (en) 2010-01-15 2011-07-21 Bradford Allen Moore Automatic Keyboard Layout Determination
US8334842B2 (en) 2010-01-15 2012-12-18 Microsoft Corporation Recognizing user intent in motion capture system
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US8417575B2 (en) 2010-01-19 2013-04-09 Apple Inc. On-device offline purchases using credits
US20110179002A1 (en) 2010-01-19 2011-07-21 Dell Products L.P. System and Method for a Vector-Space Search Engine
US8301121B2 (en) 2010-01-22 2012-10-30 Sony Ericsson Mobile Communications Ab Regulating alerts generated by communication terminals responsive to sensed movement
US8626511B2 (en) 2010-01-22 2014-01-07 Google Inc. Multi-dimensional disambiguation of voice commands
US20110184736A1 (en) 2010-01-26 2011-07-28 Benjamin Slotznick Automated method of recognizing inputted information items and selecting information items
US8346590B2 (en) 2010-01-27 2013-01-01 Google Inc. Automatically schedule and re-schedule meetings through search interface
JP5633042B2 (ja) 2010-01-28 2014-12-03 本田技研工業株式会社 音声認識装置、音声認識方法、及び音声認識ロボット
US8406745B1 (en) 2010-01-28 2013-03-26 Sprint Communications Company L.P. Synchronization of voice mail greeting and email auto-reply by a wireless communication device
WO2011093025A1 (ja) 2010-01-29 2011-08-04 日本電気株式会社 入力支援システム、方法、およびプログラム
JP2013519162A (ja) 2010-02-01 2013-05-23 ジャンプタップ,インコーポレイテッド 統合化された広告システム
US9015036B2 (en) 2010-02-01 2015-04-21 Ginger Software, Inc. Automatic context sensitive language correction using an internet corpus particularly for small keyboard devices
CA2794542A1 (en) 2010-02-02 2011-08-11 4D Retail Technology Corporation Systems and methods for human intelligence personal assistance
US8687777B1 (en) 2010-02-03 2014-04-01 Tal Lavian Systems and methods for visual presentation and selection of IVR menu
US8600967B2 (en) 2010-02-03 2013-12-03 Apple Inc. Automatic organization of browsing histories
US8645287B2 (en) 2010-02-04 2014-02-04 Microsoft Corporation Image tagging based upon cross domain context
US8886541B2 (en) 2010-02-04 2014-11-11 Sony Corporation Remote controller with position actuatated voice transmission
US8751218B2 (en) 2010-02-09 2014-06-10 Siemens Aktiengesellschaft Indexing content at semantic level
US8179370B1 (en) 2010-02-09 2012-05-15 Google Inc. Proximity based keystroke resolution
US9413869B2 (en) 2010-02-10 2016-08-09 Qualcomm Incorporated Mobile device having plurality of input modes
US8402018B2 (en) 2010-02-12 2013-03-19 Korea Advanced Institute Of Science And Technology Semantic search system using semantic ranking scheme
US8782556B2 (en) 2010-02-12 2014-07-15 Microsoft Corporation User-centric soft keyboard predictive technologies
US8812056B2 (en) 2010-02-12 2014-08-19 Christopher D. Higginbotham Voice-based command driven computer implemented method
US8898219B2 (en) 2010-02-12 2014-11-25 Avaya Inc. Context sensitive, cloud-based telephony
WO2011101845A1 (en) 2010-02-16 2011-08-25 Screenovate Technologies Ltd. Modified operating systems allowing mobile devices to accommodate io devices more convenient than their own inherent io devices and methods for generating such systems
US9965165B2 (en) 2010-02-19 2018-05-08 Microsoft Technology Licensing, Llc Multi-finger gestures
WO2011105996A1 (en) 2010-02-23 2011-09-01 Hewlett-Packard Development Company, L.P. Skipping through electronic content on an electronic device
US9665344B2 (en) 2010-02-24 2017-05-30 GM Global Technology Operations LLC Multi-modal input system for a voice-based menu and content navigation service
US8682667B2 (en) 2010-02-25 2014-03-25 Apple Inc. User profiling for selecting user specific voice input processing information
US9710556B2 (en) 2010-03-01 2017-07-18 Vcvc Iii Llc Content recommendation based on collections of entities
US20110218855A1 (en) 2010-03-03 2011-09-08 Platformation, Inc. Offering Promotions Based on Query Analysis
US20120066303A1 (en) 2010-03-03 2012-03-15 Waldeck Technology, Llc Synchronized group location updates
US8502837B2 (en) 2010-03-04 2013-08-06 Research In Motion Limited System and method for activating components on an electronic device using orientation data
US8903847B2 (en) 2010-03-05 2014-12-02 International Business Machines Corporation Digital media voice tags in social networks
US8948515B2 (en) 2010-03-08 2015-02-03 Sightera Technologies Ltd. Method and system for classifying one or more images
JP5642809B2 (ja) 2010-03-12 2014-12-17 ニュアンス コミュニケーションズ, インコーポレイテッド 携帯電話のタッチスクリーンとの使用等のためのマルチモーダルテキスト入力システム
US8521513B2 (en) 2010-03-12 2013-08-27 Microsoft Corporation Localization for interactive voice response systems
US20110228913A1 (en) 2010-03-16 2011-09-22 Telcordia Technologies, Inc. Automatic extraction of information from ongoing voice communication system and methods
US8374864B2 (en) 2010-03-17 2013-02-12 Cisco Technology, Inc. Correlation of transcribed text with corresponding audio
US20110231218A1 (en) 2010-03-18 2011-09-22 Tovar Tom C Systems and Methods for Providing Reminders for a Task List
EP2559030B1 (en) 2010-03-19 2017-06-21 Digimarc Corporation Intuitive computing methods and systems
US20110231189A1 (en) 2010-03-19 2011-09-22 Nuance Communications, Inc. Methods and apparatus for extracting alternate media titles to facilitate speech recognition
US9323756B2 (en) 2010-03-22 2016-04-26 Lenovo (Singapore) Pte. Ltd. Audio book and e-book synchronization
US8554280B2 (en) 2010-03-23 2013-10-08 Ebay Inc. Free-form entries during payment processes
US20110239111A1 (en) 2010-03-24 2011-09-29 Avaya Inc. Spell checker interface
US9628831B2 (en) 2010-03-25 2017-04-18 Whatsapp, Inc. Multimedia transcoding method and system for mobile devices
US20110238676A1 (en) 2010-03-25 2011-09-29 Palm, Inc. System and method for data capture, storage, and retrieval
US20110238412A1 (en) 2010-03-26 2011-09-29 Antoine Ezzat Method for Constructing Pronunciation Dictionaries
US9378202B2 (en) 2010-03-26 2016-06-28 Virtuoz Sa Semantic clustering
WO2011119168A1 (en) 2010-03-26 2011-09-29 Nuance Communications, Inc. Context based voice activity detection sensitivity
US8428759B2 (en) 2010-03-26 2013-04-23 Google Inc. Predictive pre-recording of audio for voice input
WO2011123122A1 (en) 2010-03-31 2011-10-06 Hewlett-Packard Development Company, L.P. Contextual user interface
US8296380B1 (en) 2010-04-01 2012-10-23 Kel & Partners LLC Social media based messaging systems and methods
US8930176B2 (en) 2010-04-01 2015-01-06 Microsoft Corporation Interactive multilingual word-alignment techniques
US20110242007A1 (en) 2010-04-01 2011-10-06 Gray Theodore W E-Book with User-Manipulatable Graphical Objects
CA2795812A1 (en) 2010-04-07 2011-10-13 Max Value Solutions INTL, LLC Method and system for name pronunciation guide services
US9929982B2 (en) 2010-04-08 2018-03-27 Microsoft Technology Licensing, Llc Designating automated agents as friends in a social network service
US8810684B2 (en) 2010-04-09 2014-08-19 Apple Inc. Tagging images in a mobile communications device using a contacts list
KR101369810B1 (ko) 2010-04-09 2014-03-05 이초강 로봇을 위한 경험적 상황인식 방법을 실행하는 프로그램을 기록한 컴퓨터 판독가능한 기록 매체.
CN102214187B (zh) 2010-04-12 2017-03-01 阿里巴巴集团控股有限公司 复合事件处理方法及装置
JP5315289B2 (ja) 2010-04-12 2013-10-16 トヨタ自動車株式会社 オペレーティングシステム及びオペレーティング方法
EP2558923A4 (en) 2010-04-12 2014-11-19 Google Inc EXTENSION FRAMEWORK FOR AN ENTRY METHOD EDITOR
US8140567B2 (en) 2010-04-13 2012-03-20 Microsoft Corporation Measuring entity extraction complexity
US8265928B2 (en) 2010-04-14 2012-09-11 Google Inc. Geotagged environmental audio for enhanced speech recognition accuracy
US8756233B2 (en) 2010-04-16 2014-06-17 Video Semantics Semantic segmentation and tagging engine
US8595014B2 (en) 2010-04-19 2013-11-26 Qualcomm Incorporated Providing audible navigation system direction updates during predetermined time windows so as to minimize impact on conversations
WO2011133543A1 (en) 2010-04-21 2011-10-27 Proteus Biomedical, Inc. Diagnostic system and method
US20110260829A1 (en) 2010-04-21 2011-10-27 Research In Motion Limited Method of providing security on a portable electronic device having a touch-sensitive display
WO2011131785A1 (en) 2010-04-21 2011-10-27 Université Catholique de Louvain Normalisation of noisy typewritten texts
WO2011133195A1 (en) 2010-04-22 2011-10-27 Zipit Wireless, Inc. System and method for administration and operation of one or more mobile electronic communications devices
US20110264495A1 (en) 2010-04-22 2011-10-27 Apple Inc. Aggregation of tagged media item information
US20110264530A1 (en) 2010-04-23 2011-10-27 Bryan Santangelo Apparatus and methods for dynamic secondary content and data insertion and delivery
US20110264999A1 (en) 2010-04-23 2011-10-27 Research In Motion Limited Electronic device including touch-sensitive input device and method of controlling same
US8874432B2 (en) 2010-04-28 2014-10-28 Nec Laboratories America, Inc. Systems and methods for semi-supervised relationship extraction
US8452037B2 (en) 2010-05-05 2013-05-28 Apple Inc. Speaker clip
US8380504B1 (en) 2010-05-06 2013-02-19 Sprint Communications Company L.P. Generation of voice profiles
US8756571B2 (en) 2010-05-07 2014-06-17 Hewlett-Packard Development Company, L.P. Natural language text instructions
US8938436B2 (en) 2010-05-10 2015-01-20 Verizon Patent And Licensing Inc. System for and method of providing reusable software service information based on natural language queries
JP2011238022A (ja) 2010-05-11 2011-11-24 Panasonic Corp 端末、コンテンツの利用の把握方法およびコンテンツの利用システム
JP5595112B2 (ja) 2010-05-11 2014-09-24 本田技研工業株式会社 ロボット
US20110279368A1 (en) 2010-05-12 2011-11-17 Microsoft Corporation Inferring user intent to engage a motion capture system
US20110283189A1 (en) 2010-05-12 2011-11-17 Rovi Technologies Corporation Systems and methods for adjusting media guide interaction modes
US9634855B2 (en) 2010-05-13 2017-04-25 Alexander Poltorak Electronic personal interactive device that determines topics of interest using a conversational agent
US8982738B2 (en) 2010-05-13 2015-03-17 Futurewei Technologies, Inc. System, apparatus for content delivery for internet traffic and methods thereof
US9015139B2 (en) 2010-05-14 2015-04-21 Rovi Guides, Inc. Systems and methods for performing a search based on a media content snapshot image
US8392186B2 (en) 2010-05-18 2013-03-05 K-Nfb Reading Technology, Inc. Audio synchronization for document narration with user-selected playback
US8694313B2 (en) 2010-05-19 2014-04-08 Google Inc. Disambiguation of contact information using historical data
WO2011146276A2 (en) 2010-05-19 2011-11-24 Google Inc. Television related searching
US8522283B2 (en) 2010-05-20 2013-08-27 Google Inc. Television remote control data transfer
US9552355B2 (en) 2010-05-20 2017-01-24 Xerox Corporation Dynamic bi-phrases for statistical machine translation
US9236047B2 (en) 2010-05-21 2016-01-12 Microsoft Technology Licensing, Llc Voice stream augmented note taking
US9552125B2 (en) 2010-05-21 2017-01-24 Google Inc. Input method editor
US20110288917A1 (en) 2010-05-21 2011-11-24 James Wanek Systems and methods for providing mobile targeted advertisements
US8606579B2 (en) 2010-05-24 2013-12-10 Microsoft Corporation Voice print identification for identifying speakers
US9569549B1 (en) 2010-05-25 2017-02-14 Amazon Technologies, Inc. Location based recommendation and tagging of media content items
JP2011250027A (ja) 2010-05-25 2011-12-08 Panasonic Electric Works Co Ltd リモートコントロール機器及び情報通信システム
US8468012B2 (en) 2010-05-26 2013-06-18 Google Inc. Acoustic model adaptation using geographic information
WO2011150730A1 (zh) 2010-05-31 2011-12-08 百度在线网络技术(北京)有限公司 一种用于英文与另一种文字混合输入的方法和设备
EP2393046A1 (en) 2010-06-02 2011-12-07 Research In Motion Limited Method for assisted message generation
EP2393056A1 (en) 2010-06-02 2011-12-07 Layar B.V. Acquiring, ranking and displaying points of interest for use in an augmented reality service provisioning system and graphical user interface for displaying such ranked points of interests
US8639516B2 (en) 2010-06-04 2014-01-28 Apple Inc. User-specific noise suppression for voice quality improvements
US10204625B2 (en) 2010-06-07 2019-02-12 Affectiva, Inc. Audio analysis learning using video data
US8707195B2 (en) 2010-06-07 2014-04-22 Apple Inc. Devices, methods, and graphical user interfaces for accessibility via a touch-sensitive surface
EP2397972B1 (en) 2010-06-08 2015-01-07 Vodafone Holding GmbH Smart card with microphone
US8458115B2 (en) 2010-06-08 2013-06-04 Microsoft Corporation Mining topic-related aspects from user generated content
US8954425B2 (en) 2010-06-08 2015-02-10 Microsoft Corporation Snippet extraction and ranking
US20110306426A1 (en) 2010-06-10 2011-12-15 Microsoft Corporation Activity Participation Based On User Intent
US8874129B2 (en) * 2010-06-10 2014-10-28 Qualcomm Incorporated Pre-fetching information based on gesture and/or location
US9529918B2 (en) 2010-06-11 2016-12-27 Doat Media Ltd. System and methods thereof for downloading applications via a communication network
US20110307810A1 (en) 2010-06-11 2011-12-15 Isreal Hilerio List integration
US8234111B2 (en) 2010-06-14 2012-07-31 Google Inc. Speech and noise models for speech recognition
US8560610B2 (en) 2010-06-16 2013-10-15 Brighttag Inc. Unified collection and distribution of data
US20110314003A1 (en) 2010-06-17 2011-12-22 Microsoft Corporation Template concatenation for capturing multiple concepts in a voice query
US20120136572A1 (en) 2010-06-17 2012-05-31 Norton Kenneth S Distance and Location-Aware Reminders in a Calendar System
WO2011160140A1 (en) 2010-06-18 2011-12-22 Susan Bennett System and method of semantic based searching
US9443071B2 (en) 2010-06-18 2016-09-13 At&T Intellectual Property I, L.P. Proximity based device security
US9009592B2 (en) 2010-06-22 2015-04-14 Microsoft Technology Licensing, Llc Population of lists and tasks from captured voice and audio content
EP2400373A1 (en) 2010-06-22 2011-12-28 Vodafone Holding GmbH Inputting symbols into an electronic device having a touch-screen
US20110313803A1 (en) 2010-06-22 2011-12-22 Microsoft Corporation Social Task Lists
US8375320B2 (en) 2010-06-22 2013-02-12 Microsoft Corporation Context-based task generation
US8655901B1 (en) 2010-06-23 2014-02-18 Google Inc. Translation-based query pattern mining
US8581844B2 (en) 2010-06-23 2013-11-12 Google Inc. Switching between a first operational mode and a second operational mode using a natural motion gesture
WO2011163538A1 (en) 2010-06-24 2011-12-29 Honda Motor Co., Ltd. Communication system and method between an on-vehicle voice recognition system and an off-vehicle voice recognition system
US8812299B1 (en) 2010-06-24 2014-08-19 Nuance Communications, Inc. Class-based language model and use
US11068657B2 (en) 2010-06-28 2021-07-20 Skyscanner Limited Natural language question answering system and method based on deep semantics
US8250071B1 (en) 2010-06-30 2012-08-21 Amazon Technologies, Inc. Disambiguation of term meaning
JP5323770B2 (ja) 2010-06-30 2013-10-23 日本放送協会 ユーザ指示取得装置、ユーザ指示取得プログラムおよびテレビ受像機
US8411874B2 (en) 2010-06-30 2013-04-02 Google Inc. Removing noise from audio
EP2402867B1 (en) 2010-07-02 2018-08-22 Accenture Global Services Limited A computer-implemented method, a computer program product and a computer system for image processing
US20120005602A1 (en) 2010-07-02 2012-01-05 Nokia Corporation Methods and apparatuses for facilitating task switching
US8885978B2 (en) 2010-07-05 2014-11-11 Apple Inc. Operating a device to capture high dynamic range images
US20120010886A1 (en) 2010-07-06 2012-01-12 Javad Razavilar Language Identification
US8848882B2 (en) 2010-07-07 2014-09-30 Verizon Patent And Licensing Inc. System for and method of measuring caller interactions during a call session
US8249556B2 (en) 2010-07-13 2012-08-21 Google Inc. Securing a mobile computing device
US9104670B2 (en) 2010-07-21 2015-08-11 Apple Inc. Customized search or acquisition of digital media assets
US8260247B2 (en) 2010-07-21 2012-09-04 Research In Motion Limited Portable electronic device and method of operation
US9786159B2 (en) 2010-07-23 2017-10-10 Tivo Solutions Inc. Multi-function remote control device
WO2012010218A1 (en) 2010-07-23 2012-01-26 Phonak Ag Hearing system and method for operating a hearing system
US8528072B2 (en) 2010-07-23 2013-09-03 Apple Inc. Method, apparatus and system for access mode control of a device
US8463592B2 (en) 2010-07-27 2013-06-11 International Business Machines Corporation Mode supporting multiple language input for entering text
US9633656B2 (en) 2010-07-27 2017-04-25 Sony Corporation Device registration process from second display
CN102340590A (zh) 2010-07-27 2012-02-01 上海闻泰电子科技有限公司 一种用于手机的感光加解锁装置及其实现方法
CN102346557B (zh) 2010-07-28 2016-08-03 深圳市世纪光速信息技术有限公司 一种输入法和输入法系统
JP5606205B2 (ja) 2010-07-28 2014-10-15 京セラ株式会社 携帯端末装置
US8521526B1 (en) 2010-07-28 2013-08-27 Google Inc. Disambiguation of a spoken query term
US8861925B1 (en) 2010-07-28 2014-10-14 Intuit Inc. Methods and systems for audio-visual synchronization
US8694537B2 (en) 2010-07-29 2014-04-08 Soundhound, Inc. Systems and methods for enabling natural language processing
KR101699720B1 (ko) 2010-08-03 2017-01-26 삼성전자주식회사 음성명령 인식 장치 및 음성명령 인식 방법
JP2012037619A (ja) 2010-08-04 2012-02-23 Nec Corp 話者適応化装置、話者適応化方法および話者適応化用プログラム
BRPI1004128A2 (pt) 2010-08-04 2012-04-10 Magneti Marelli Sist S Automotivos Ind E Com Ltda definição dos parámetros chave de nìvel superior para sensor lógico de biodiesel
US8775156B2 (en) 2010-08-05 2014-07-08 Google Inc. Translating languages in response to device motion
US9349368B1 (en) 2010-08-05 2016-05-24 Google Inc. Generating an audio notification based on detection of a triggering event
US8402533B2 (en) 2010-08-06 2013-03-19 Google Inc. Input to locked computing device
US8359020B2 (en) 2010-08-06 2013-01-22 Google Inc. Automatically monitoring for voice input based on context
US8731939B1 (en) 2010-08-06 2014-05-20 Google Inc. Routing queries based on carrier phrase registration
US8473289B2 (en) 2010-08-06 2013-06-25 Google Inc. Disambiguating input based on context
WO2012019637A1 (en) 2010-08-09 2012-02-16 Jadhav, Shubhangi Mahadeo Visual music playlist creation and visual music track exploration
US8802957B2 (en) 2010-08-16 2014-08-12 Boardwalk Technology Group, Llc Mobile replacement-dialogue recording system
CN101951553B (zh) 2010-08-17 2012-10-10 深圳市车音网科技有限公司 基于语音命令的导航方法及系统
EP2609488A4 (en) 2010-08-27 2015-03-11 Intel Corp APPARATUS AND METHOD FOR PRESSURE ACTIVATION
US8719006B2 (en) 2010-08-27 2014-05-06 Apple Inc. Combined statistical and rule-based part-of-speech tagging for text-to-speech synthesis
US8478519B2 (en) 2010-08-30 2013-07-02 Google Inc. Providing results to parameterless search queries
US8676583B2 (en) 2010-08-30 2014-03-18 Honda Motor Co., Ltd. Belief tracking and action selection in spoken dialog systems
US8225137B2 (en) 2010-09-04 2012-07-17 Cisco Technology, Inc. System and method for providing media server redundancy in a network environment
US9800721B2 (en) 2010-09-07 2017-10-24 Securus Technologies, Inc. Multi-party conversation analyzer and logger
US20120059655A1 (en) 2010-09-08 2012-03-08 Nuance Communications, Inc. Methods and apparatus for providing input to a speech-enabled application program
KR20130108563A (ko) 2010-09-08 2013-10-04 뉘앙스 커뮤니케이션즈, 인코포레이티드 인터넷 검색 관련 방법 및 장치
US8341142B2 (en) 2010-09-08 2012-12-25 Nuance Communications, Inc. Methods and apparatus for searching the Internet
WO2012033492A1 (en) 2010-09-09 2012-03-15 Sony Ericsson Mobile Communications Ab Annotating e-books/e-magazines with application results
KR102000618B1 (ko) 2010-09-13 2019-10-21 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 부가기능의 관리
CN102402985A (zh) 2010-09-14 2012-04-04 盛乐信息技术(上海)有限公司 提高声纹识别安全性的声纹认证系统及其实现方法
US9538229B2 (en) 2010-09-15 2017-01-03 Verizon Patent And Licensing Inc. Media experience for touch screen devices
US8560229B1 (en) 2010-09-15 2013-10-15 Google Inc. Sensor based activity detection
WO2012034273A1 (en) 2010-09-15 2012-03-22 Empire Technology Development Llc Task assignment in cloud computing environment
JP5480760B2 (ja) 2010-09-15 2014-04-23 株式会社Nttドコモ 端末装置、音声認識方法および音声認識プログラム
US20120068937A1 (en) 2010-09-16 2012-03-22 Sony Ericsson Mobile Communications Ab Quick input language/virtual keyboard/ language dictionary change on a touch screen device
US20120078635A1 (en) 2010-09-24 2012-03-29 Apple Inc. Voice control system
US8836638B2 (en) 2010-09-25 2014-09-16 Hewlett-Packard Development Company, L.P. Silent speech based command to a computing device
US8594997B2 (en) 2010-09-27 2013-11-26 Sap Ag Context-aware conversational user interface
KR20120031722A (ko) 2010-09-27 2012-04-04 삼성전자주식회사 동적 응답 생성 장치 및 방법
CN101937194B (zh) 2010-09-27 2012-12-19 鸿富锦精密工业(深圳)有限公司 具有学习功能的智能控制系统和方法
US8719014B2 (en) 2010-09-27 2014-05-06 Apple Inc. Electronic device with text error correction based on voice recognition data
US20120114108A1 (en) 2010-09-27 2012-05-10 Voxer Ip Llc Messaging communication application
WO2012040872A1 (en) 2010-09-29 2012-04-05 Yahoo! Inc. Training search query intent classifier using wiki article titles and search click log
CN102436456B (zh) 2010-09-29 2016-03-30 国际商业机器公司 用于对命名实体进行分类的方法和装置
US10037319B2 (en) 2010-09-29 2018-07-31 Touchtype Limited User input prediction
CN101958958A (zh) 2010-09-29 2011-01-26 中兴通讯股份有限公司 一种回复信息的方法和终端
US8812321B2 (en) 2010-09-30 2014-08-19 At&T Intellectual Property I, L.P. System and method for combining speech recognition outputs from a plurality of domain-specific speech recognizers via machine learning
US8644519B2 (en) 2010-09-30 2014-02-04 Apple Inc. Electronic devices with improved audio
US20120084248A1 (en) 2010-09-30 2012-04-05 Microsoft Corporation Providing suggestions based on user intent
US8965545B2 (en) 2010-09-30 2015-02-24 Google Inc. Progressive encoding of audio
US8515736B1 (en) 2010-09-30 2013-08-20 Nuance Communications, Inc. Training call routing applications by reusing semantically-labeled data collected for prior applications
US20120084634A1 (en) 2010-10-05 2012-04-05 Sony Corporation Method and apparatus for annotating text
US8606293B2 (en) 2010-10-05 2013-12-10 Qualcomm Incorporated Mobile device location estimation using environmental information
US9679256B2 (en) 2010-10-06 2017-06-13 The Chancellor, Masters And Scholars Of The University Of Cambridge Automated assessment of examination scripts
US9043386B2 (en) 2010-10-06 2015-05-26 Hbr Labs Inc. System and method for synchronizing collaborative form filling
US9465798B2 (en) 2010-10-08 2016-10-11 Iq Technology Inc. Single word and multi-word term integrating system and a method thereof
US10900799B2 (en) 2010-10-12 2021-01-26 Toyota Motor Engineering & Manufacturing North America, Inc. Systems and methods for determining a destination location from a communication
US20120271640A1 (en) 2010-10-15 2012-10-25 Basir Otman A Implicit Association and Polymorphism Driven Human Machine Interaction
JP5572059B2 (ja) 2010-10-21 2014-08-13 京セラ株式会社 表示装置
US8335774B2 (en) 2010-10-28 2012-12-18 Google Inc. Replacing a master media file
US20120108221A1 (en) 2010-10-28 2012-05-03 Microsoft Corporation Augmenting communication sessions with applications
JP5017441B2 (ja) 2010-10-28 2012-09-05 株式会社東芝 携帯型電子機器
SG189182A1 (en) 2010-10-29 2013-05-31 Anhui Ustc Iflytek Co Ltd Method and system for endpoint automatic detection of audio record
US9311308B2 (en) 2010-10-29 2016-04-12 Hewlett-Packard Development Company, L.P. Content recommendation for groups
US9058105B2 (en) 2010-10-31 2015-06-16 International Business Machines Corporation Automated adjustment of input configuration
US20120110456A1 (en) 2010-11-01 2012-05-03 Microsoft Corporation Integrated voice command modal user interface
US9348417B2 (en) 2010-11-01 2016-05-24 Microsoft Technology Licensing, Llc Multimodal input system
US8660531B2 (en) 2010-11-03 2014-02-25 Blackberry Limited Access to locked functions
US8831947B2 (en) 2010-11-07 2014-09-09 Nice Systems Ltd. Method and apparatus for large vocabulary continuous speech recognition using a hybrid phoneme-word lattice
US20120116770A1 (en) 2010-11-08 2012-05-10 Ming-Fu Chen Speech data retrieving and presenting device
WO2012063260A2 (en) 2010-11-09 2012-05-18 Mango Technologies Pvt Ltd. Virtual secretary on a smart device
US8881057B2 (en) 2010-11-09 2014-11-04 Blackberry Limited Methods and apparatus to display mobile device contexts
US8352576B2 (en) 2010-11-15 2013-01-08 Google Inc. Media file access
US20120124172A1 (en) 2010-11-15 2012-05-17 Google Inc. Providing Different Versions of a Media File
MY187902A (en) 2010-11-16 2021-10-27 Shardul Suresh Shroff System and method for providing virtual arbitration
US20120124126A1 (en) 2010-11-17 2012-05-17 Microsoft Corporation Contextual and task focused computing
US10144440B2 (en) 2010-11-17 2018-12-04 General Electric Company Methods and systems for data communications
US8713024B2 (en) 2010-11-22 2014-04-29 Microsoft Corporation Efficient forward ranking in a search engine
US9484018B2 (en) 2010-11-23 2016-11-01 At&T Intellectual Property I, L.P. System and method for building and evaluating automatic speech recognition via an application programmer interface
US8938216B2 (en) 2010-11-24 2015-01-20 Cisco Technology, Inc. Geographical location information/signal quality-context based recording and playback of multimedia data from a conference session
US8489625B2 (en) 2010-11-29 2013-07-16 Microsoft Corporation Mobile query suggestions with time-location awareness
US9105008B2 (en) 2010-11-29 2015-08-11 Yahoo! Inc. Detecting controversial events
US20120135714A1 (en) 2010-11-29 2012-05-31 Toyota Motor Engineering & Manufacturing North America, Inc. Information system for motor vehicle
US8862458B2 (en) 2010-11-30 2014-10-14 Sap Ag Natural language interface
WO2012074338A2 (ko) 2010-12-02 2012-06-07 에스케이텔레콤 주식회사 자연어 및 수학식 처리 방법과 그를 위한 장치
JP5652913B2 (ja) 2010-12-03 2015-01-14 アイシン・エィ・ダブリュ株式会社 車載端末装置
US9135241B2 (en) 2010-12-08 2015-09-15 At&T Intellectual Property I, L.P. System and method for learning latent representations for natural language tasks
US9092425B2 (en) 2010-12-08 2015-07-28 At&T Intellectual Property I, L.P. System and method for feature-rich continuous space language models
US8312096B2 (en) 2010-12-08 2012-11-13 Google Inc. Priority inbox notifications and synchronization for mobile messaging application
KR101330328B1 (ko) 2010-12-14 2013-11-15 한국전자통신연구원 음성 인식 방법 및 이를 위한 시스템
KR20120066825A (ko) * 2010-12-15 2012-06-25 고스트리트(주) 휴대용 단말의 인터페이스 방법
US9244606B2 (en) 2010-12-20 2016-01-26 Apple Inc. Device, method, and graphical user interface for navigation of concurrently open software applications
WO2012084003A1 (en) * 2010-12-20 2012-06-28 Tomtom Belgium N.V. Method for generating map data
US20120158293A1 (en) 2010-12-21 2012-06-21 General Electric Company Methods and systems for dynamically providing users with appointment reminders
US20120158422A1 (en) 2010-12-21 2012-06-21 General Electric Company Methods and systems for scheduling appointments in healthcare systems
US8666726B2 (en) 2010-12-21 2014-03-04 Nuance Communications, Inc. Sample clustering to reduce manual transcriptions in speech recognition system
US20130035086A1 (en) 2010-12-22 2013-02-07 Logitech Europe S.A. Remote control system for providing content suggestions
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US8532377B2 (en) 2010-12-22 2013-09-10 Xerox Corporation Image ranking based on abstract concepts
US10515147B2 (en) 2010-12-22 2019-12-24 Apple Inc. Using statistical language models for contextual lookup
US10620794B2 (en) 2010-12-23 2020-04-14 Apple Inc. Device, method, and graphical user interface for switching between two user interfaces
US8731902B2 (en) 2010-12-23 2014-05-20 Sap Ag Systems and methods for accessing applications based on user intent modeling
US20120166959A1 (en) 2010-12-23 2012-06-28 Microsoft Corporation Surfacing content including content accessed from jump list tasks and items
US8838449B2 (en) 2010-12-23 2014-09-16 Microsoft Corporation Word-dependent language model
JP2012142744A (ja) 2010-12-28 2012-07-26 Sanyo Electric Co Ltd 通信装置
EP2659366A1 (en) 2010-12-30 2013-11-06 Ambientz Information processing using a population of data acquisition devices
TWI413105B (zh) 2010-12-30 2013-10-21 Ind Tech Res Inst 多語言之文字轉語音合成系統與方法
US8626681B1 (en) 2011-01-04 2014-01-07 Google Inc. Training a probabilistic spelling checker from structured data
KR101828273B1 (ko) 2011-01-04 2018-02-14 삼성전자주식회사 결합기반의 음성명령 인식 장치 및 그 방법
CN103370705B (zh) 2011-01-05 2018-01-02 谷歌公司 用于便利文本输入的方法和系统
US8589950B2 (en) 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
EP2661869B1 (fr) 2011-01-05 2018-12-26 Connecthings Système pour actionner un terminal portable
US8781456B2 (en) 2011-01-07 2014-07-15 Blackberry Limited System and method for controlling mobile communication devices
JP5712618B2 (ja) 2011-01-07 2015-05-07 サクサ株式会社 電話システム
US8898065B2 (en) 2011-01-07 2014-11-25 Nuance Communications, Inc. Configurable speech recognition system using multiple recognizers
US9183843B2 (en) 2011-01-07 2015-11-10 Nuance Communications, Inc. Configurable speech recognition system using multiple recognizers
US20120176255A1 (en) 2011-01-10 2012-07-12 Deutsche Telekom Ag Mobile device-based automatic parking location recorder and reminder using on-board diagnostics
TWI546700B (zh) 2011-01-13 2016-08-21 宏達國際電子股份有限公司 手持電子裝置及其控制方法與電腦程式產品
US20130283283A1 (en) 2011-01-13 2013-10-24 Htc Corporation Portable electronic device and control method therefor
US8689116B2 (en) 2011-01-14 2014-04-01 Apple Inc. Email user interface
US8863256B1 (en) 2011-01-14 2014-10-14 Cisco Technology, Inc. System and method for enabling secure transactions using flexible identity management in a vehicular environment
KR101242073B1 (ko) 2011-01-20 2013-03-11 주식회사 웨이브애프터 사용자단말의 터치스크린의 사용자 인터페이스 방법 및 그 기록매체
US20120192096A1 (en) 2011-01-25 2012-07-26 Research In Motion Limited Active command line driven user interface
US9031970B1 (en) 2011-01-26 2015-05-12 Google Inc. Query autocompletions
US8666895B2 (en) 2011-01-31 2014-03-04 Bank Of America Corporation Single action mobile transaction device
US8943054B2 (en) 2011-01-31 2015-01-27 Social Resolve, Llc Social media content management system and method
FI126119B (fi) 2011-01-31 2016-06-30 Waertsilae Finland Oy Massavaimennin
WO2012106198A1 (en) 2011-02-04 2012-08-09 Google Inc. Posting to social networks by voice
US9452735B2 (en) 2011-02-10 2016-09-27 Ford Global Technologies, Llc System and method for controlling a restricted mode in a vehicle
US20120209654A1 (en) 2011-02-11 2012-08-16 Avaya Inc. Mobile activity assistant analysis
US8862612B2 (en) 2011-02-11 2014-10-14 Sony Corporation Direct search launch on a second display
US9628842B2 (en) 2011-02-11 2017-04-18 Sony Corporation Method and apparatus for identifying content using IPTV devices
US10631246B2 (en) 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices
TW201241640A (en) 2011-02-14 2012-10-16 Microsoft Corp Dormant background applications on mobile devices
US10429869B2 (en) 2011-02-16 2019-10-01 Kortek Industries Pty Ltd Wireless power, light and automation control
AU2011359604B2 (en) 2011-02-16 2014-05-22 Kortek Industries Pty Ltd Wireless power, light and automation control
US20130318478A1 (en) 2011-02-17 2013-11-28 Nec Casio Mobile Communications Ltd. Electronic device, display method and non-transitory storage medium
US8694335B2 (en) 2011-02-18 2014-04-08 Nuance Communications, Inc. Methods and apparatus for applying user corrections to medical fact extraction
US9916420B2 (en) 2011-02-18 2018-03-13 Nuance Communications, Inc. Physician and clinical documentation specialist workflow integration
US9686732B2 (en) 2011-02-22 2017-06-20 Theatrolabs, Inc. Observation platform for using structured communications with distributed traffic flow
US10145960B2 (en) 2011-02-24 2018-12-04 Ford Global Technologies, Llc System and method for cell phone restriction
KR101178310B1 (ko) 2011-02-24 2012-08-29 포항공과대학교 산학협력단 대화 관리 방법 및 이를 실행하는 시스템
CN102651217A (zh) 2011-02-25 2012-08-29 株式会社东芝 用于合成语音的方法、设备以及用于语音合成的声学模型训练方法
US8688453B1 (en) 2011-02-28 2014-04-01 Nuance Communications, Inc. Intent mining via analysis of utterances
US20120221552A1 (en) 2011-02-28 2012-08-30 Nokia Corporation Method and apparatus for providing an active search user interface element
US9632677B2 (en) 2011-03-02 2017-04-25 The Boeing Company System and method for navigating a 3-D environment using a multi-input interface
US8972275B2 (en) 2011-03-03 2015-03-03 Brightedge Technologies, Inc. Optimization of social media engagement
EP2498250B1 (en) 2011-03-07 2021-05-05 Accenture Global Services Limited Client and server system for natural language-based control of a digital network of devices
US9081760B2 (en) 2011-03-08 2015-07-14 At&T Intellectual Property I, L.P. System and method for building diverse language models
CN102122506B (zh) 2011-03-08 2013-07-31 天脉聚源(北京)传媒科技有限公司 一种语音识别的方法
US20120233266A1 (en) 2011-03-11 2012-09-13 Microsoft Corporation Peer-to-peer group with renegotiation of group owner
CN202092650U (zh) 2011-03-14 2011-12-28 深圳市车乐数码科技有限公司 一种带按键的语音导航的车载多媒体
US8849931B2 (en) 2011-03-15 2014-09-30 Idt Messaging, Llc Linking context-based information to text messages
US8606090B2 (en) 2011-03-17 2013-12-10 Sony Corporation Sport program chaptering
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US20120246064A1 (en) 2011-03-23 2012-09-27 Ebay, Inc. Customer refunds using payment service providers
US8868111B1 (en) 2011-03-23 2014-10-21 Dp Technologies, Inc. Method and apparatus to enable the use of a personal communication device with an integrated vehicle interface
US20120246133A1 (en) 2011-03-23 2012-09-27 Microsoft Corporation Online spelling correction/phrase completion system
US8862255B2 (en) 2011-03-23 2014-10-14 Audible, Inc. Managing playback of synchronized content
US8766793B2 (en) 2011-03-25 2014-07-01 Microsoft Corporation Contextually-appropriate task reminders
US9202465B2 (en) 2011-03-25 2015-12-01 General Motors Llc Speech recognition dependent on text message content
CN202035047U (zh) 2011-03-29 2011-11-09 张磊 一种提取地址信息进行导航的移动终端
US9171546B1 (en) 2011-03-29 2015-10-27 Google Inc. Performing functions based on commands in context of telephonic communication
US9154555B2 (en) 2011-03-30 2015-10-06 Paypal, Inc. Device specific remote disabling of applications
JP2012211932A (ja) 2011-03-30 2012-11-01 Toshiba Corp 音声認識装置及び音声認識方法
WO2012135210A2 (en) 2011-03-31 2012-10-04 Microsoft Corporation Location-based conversational understanding
US10630795B2 (en) 2011-03-31 2020-04-21 Oath Inc. Systems and methods for transferring application state between devices based on gestural input
US9842168B2 (en) 2011-03-31 2017-12-12 Microsoft Technology Licensing, Llc Task driven user intents
US9280535B2 (en) 2011-03-31 2016-03-08 Infosys Limited Natural language querying with cascaded conditional random fields
US9760566B2 (en) 2011-03-31 2017-09-12 Microsoft Technology Licensing, Llc Augmented conversational understanding agent to identify conversation context between two humans and taking an agent action thereof
US9337999B2 (en) 2011-04-01 2016-05-10 Intel Corporation Application usage continuum across platforms
EP2884812B1 (en) 2011-04-01 2016-12-28 Interdigital Patent Holdings, Inc. Apparatus and method for sharing a common PDP context
US9098488B2 (en) 2011-04-03 2015-08-04 Microsoft Technology Licensing, Llc Translation of multilingual embedded phrases
EP2695057A4 (en) 2011-04-04 2015-07-01 Hewlett Packard Development Co CREATION OF A CORRELATION RULE DEFINING A RELATIONSHIP BETWEEN TYPES OF EVENTS
US20120252367A1 (en) 2011-04-04 2012-10-04 Meditalk Devices, Llc Auditory Speech Module For Medical Devices
US20120316955A1 (en) * 2011-04-06 2012-12-13 Yahoo! Inc. System and Method for Mobile Application Search
US8914275B2 (en) 2011-04-06 2014-12-16 Microsoft Corporation Text prediction
US9292877B2 (en) 2011-04-13 2016-03-22 Longsand Limited Methods and systems for generating concept-based hash tags
CN102137193A (zh) 2011-04-13 2011-07-27 深圳凯虹移动通信有限公司 一种移动通讯终端及其通讯控制方法
US8983995B2 (en) 2011-04-15 2015-03-17 Microsoft Corporation Interactive semantic query suggestion for content search
US9366749B2 (en) 2011-04-15 2016-06-14 Qualcomm Incorporated Device position estimates from motion and ambient light classifiers
US9493130B2 (en) 2011-04-22 2016-11-15 Angel A. Penilla Methods and systems for communicating content to connected vehicle users based detected tone/mood in voice input
US20120272156A1 (en) 2011-04-22 2012-10-25 Kerger Kameron N Leveraging context to present content on a communication device
WO2012148904A1 (en) 2011-04-25 2012-11-01 Veveo, Inc. System and method for an intelligent personal timeline assistant
US9444692B2 (en) 2011-04-26 2016-09-13 Openet Telecom Ltd. Systems, devices and methods of crowd-sourcing across multiple domains
US9065660B2 (en) 2011-04-26 2015-06-23 Alcatel Lucent Usage monitoring after rollover
US9110556B2 (en) 2011-04-28 2015-08-18 Nokia Technologies Oy Method and apparatus for increasing the functionality of an electronic device in a locked state
EP2521051A3 (en) 2011-05-03 2012-11-21 HTC Corporation Handheld electronic device and method for recording multimedia clip
WO2012149627A1 (en) 2011-05-04 2012-11-08 Research In Motion Limited Methods for adjusting a presentation of graphical data displayed on a graphical user interface
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US8150385B1 (en) 2011-05-09 2012-04-03 Loment, Inc. Automated reply messages among end user communication devices
KR101760422B1 (ko) 2011-05-11 2017-07-31 엘지전자 주식회사 이동 단말기 및 그 제어방법
US9064006B2 (en) 2012-08-23 2015-06-23 Microsoft Technology Licensing, Llc Translating natural language utterances to keyword search queries
EP2707872A2 (en) 2011-05-12 2014-03-19 Johnson Controls Technology Company Adaptive voice recognition systems and methods
KR101233561B1 (ko) 2011-05-12 2013-02-14 엔에이치엔(주) 단어 수준의 후보 생성에 기초한 음성 인식 시스템 및 방법
US9075875B1 (en) 2011-05-13 2015-07-07 Google Inc. System and method for recommending television programs based on user search queries
US20120290291A1 (en) 2011-05-13 2012-11-15 Gabriel Lee Gilbert Shelley Input processing for character matching and predicted word matching
US9626441B2 (en) 2011-05-13 2017-04-18 Inolex Group, Inc. Calendar-based search engine
US8793624B2 (en) 2011-05-18 2014-07-29 Google Inc. Control of a device using gestures
US8972240B2 (en) 2011-05-19 2015-03-03 Microsoft Corporation User-modifiable word lattice display for editing documents and search queries
US8914290B2 (en) 2011-05-20 2014-12-16 Vocollect, Inc. Systems and methods for dynamically improving user intelligibility of synthesized speech in a work environment
US20140157319A1 (en) 2011-05-20 2014-06-05 Japan Broadcasting Corporation Program switching control device and program
US20120304124A1 (en) 2011-05-23 2012-11-29 Microsoft Corporation Context aware input engine
US10522133B2 (en) 2011-05-23 2019-12-31 Nuance Communications, Inc. Methods and apparatus for correcting recognition errors
WO2012161359A1 (ko) 2011-05-24 2012-11-29 엘지전자 주식회사 사용자 인터페이스 방법 및 장치
US8731936B2 (en) 2011-05-26 2014-05-20 Microsoft Corporation Energy-efficient unobtrusive identification of a speaker
US9164983B2 (en) 2011-05-27 2015-10-20 Robert Bosch Gmbh Broad-coverage normalization system for social media language
US10672399B2 (en) 2011-06-03 2020-06-02 Apple Inc. Switching between text data and audio data based on a mapping
TWI488174B (zh) 2011-06-03 2015-06-11 Apple Inc 自動地建立文字資料與音訊資料間之映射
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US9268857B2 (en) 2011-06-03 2016-02-23 Facebook, Inc. Suggesting search results to users before receiving any search query from the users
US8751971B2 (en) 2011-06-05 2014-06-10 Apple Inc. Devices, methods, and graphical user interfaces for providing accessibility using a touch-sensitive surface
US20120317498A1 (en) 2011-06-07 2012-12-13 Research In Motion Limited Electronic communication device and method for displaying icons
US8781841B1 (en) 2011-06-07 2014-07-15 Cisco Technology, Inc. Name recognition of virtual meeting participants
US20120316774A1 (en) 2011-06-09 2012-12-13 Microsoft Corporation Automatic navigation to a prior known location
WO2012170817A1 (en) 2011-06-10 2012-12-13 Google Inc. Augmenting statistical machine translation with linguistic knowledge
US8732319B2 (en) 2011-06-10 2014-05-20 Qualcomm Incorporated Context awareness proximity-based establishment of wireless communication connection
US20120316875A1 (en) 2011-06-10 2012-12-13 Red Shift Company, Llc Hosted speech handling
US9082408B2 (en) 2011-06-13 2015-07-14 Mmodal Ip Llc Speech recognition using loosely coupled components
US20130158977A1 (en) 2011-06-14 2013-06-20 Andrew Senior System and Method for Evaluating Speech Exposure
US20120323967A1 (en) 2011-06-14 2012-12-20 Microsoft Corporation Spelling Using a Fuzzy Pattern Search
US9201862B2 (en) 2011-06-16 2015-12-01 Asociacion Instituto Tecnologico De Informatica Method for symbolic correction in human-machine interfaces
US20120321112A1 (en) 2011-06-16 2012-12-20 Apple Inc. Selecting a digital stream based on an audio sample
US20120324391A1 (en) 2011-06-16 2012-12-20 Microsoft Corporation Predictive word completion
CN102237088B (zh) 2011-06-17 2013-10-23 盛乐信息技术(上海)有限公司 语音识别多信息文本获取装置及方法
US20120329529A1 (en) 2011-06-21 2012-12-27 GreatCall, Inc. Gesture activate help process and system
WO2012174738A1 (en) 2011-06-24 2012-12-27 Google Inc. Evaluating query translations for cross-language query suggestion
US10984387B2 (en) 2011-06-28 2021-04-20 Microsoft Technology Licensing, Llc Automatic task extraction and calendar entry
ES2539259T3 (es) 2011-06-30 2015-06-29 Huawei Technologies Co., Ltd. Método, aparato y sistema para la transmisión de datos multimedia sobre la base de un servidor de nivel superior (OTT)
US20130007240A1 (en) 2011-06-30 2013-01-03 At&T Intellectual Property I, L.P. Systems and methods to provide availability notifications for denied content requests
US20130006633A1 (en) 2011-07-01 2013-01-03 Qualcomm Incorporated Learning speech models for mobile device users
DE102011078642A1 (de) 2011-07-05 2013-01-10 Robert Bosch Gmbh Verfahren zum Prüfen eines m aus n Codes
CN103650034A (zh) 2011-07-05 2014-03-19 三菱电机株式会社 语音识别装置及导航装置
US9367824B2 (en) 2011-07-05 2016-06-14 Sap Se Provisioning and performing action items
US9582598B2 (en) 2011-07-05 2017-02-28 Visa International Service Association Hybrid applications utilizing distributed models and views apparatuses, methods and systems
US8682670B2 (en) 2011-07-07 2014-03-25 International Business Machines Corporation Statistical enhancement of speech output from a statistical text-to-speech synthesis system
US8209183B1 (en) 2011-07-07 2012-06-26 Google Inc. Systems and methods for correction of text from different input types, sources, and contexts
US20130010575A1 (en) 2011-07-07 2013-01-10 International Business Machines Corporation Systems and methods of managing electronic calendar applications
US8665212B2 (en) 2011-07-08 2014-03-04 Blackberry Limited Systems and methods for locking an electronic device
US20130018659A1 (en) 2011-07-12 2013-01-17 Google Inc. Systems and Methods for Speech Command Processing
US8812474B2 (en) 2011-07-14 2014-08-19 Nuance Communications, Inc. Methods and apparatus for identifying and providing information sought by a user
DE102012212514A1 (de) 2011-07-18 2013-02-21 Logitech Europe S.A. Fernbedienungs-Benutzerschnittstelle für Handgerät
US20130024277A1 (en) 2011-07-18 2013-01-24 Teletech Holdings, Inc. Platform to provide advertisements to users of registered products
CA2747153A1 (en) 2011-07-19 2013-01-19 Suleman Kaheer Natural language processing dialog system for obtaining goods, services or information
US20130024576A1 (en) 2011-07-22 2013-01-24 Microsoft Corporation Proximity-Based Detection
US20130031476A1 (en) 2011-07-25 2013-01-31 Coin Emmett Voice activated virtual assistant
US8781810B2 (en) 2011-07-25 2014-07-15 Xerox Corporation System and method for productive generation of compound words in statistical machine translation
US8732028B2 (en) 2011-07-26 2014-05-20 Expose Retail Strategies Inc. Scheduling of order processing for remotely ordered goods
US8260117B1 (en) 2011-07-26 2012-09-04 Ooyala, Inc. Automatically recommending content
US9009041B2 (en) 2011-07-26 2015-04-14 Nuance Communications, Inc. Systems and methods for improving the accuracy of a transcription using auxiliary data such as personal data
EP2737476A4 (en) 2011-07-28 2014-12-10 Blackberry Ltd METHOD AND DEVICES FOR COMMUNICATION RELIEF
US9240010B2 (en) 2011-07-28 2016-01-19 Iii Holdings 1, Llc Systems and methods for generating and using a digital pass
US9292112B2 (en) 2011-07-28 2016-03-22 Hewlett-Packard Development Company, L.P. Multimodal interface
EP2551784A1 (en) 2011-07-28 2013-01-30 Roche Diagnostics GmbH Method of controlling the display of a dataset
US20130030789A1 (en) 2011-07-29 2013-01-31 Reginald Dalce Universal Language Translator
US20130030913A1 (en) 2011-07-29 2013-01-31 Guangyu Zhu Deriving Ads Ranking of Local Advertisers based on Distance and Aggregate User Activities
US20130031216A1 (en) 2011-07-29 2013-01-31 Myxer, Inc. Systems and methods for generation of customized media playlists
CN102905499B (zh) 2011-07-29 2015-12-09 纬创资通股份有限公司 竖卡模块及电子装置
US20130035117A1 (en) 2011-08-04 2013-02-07 GM Global Technology Operations LLC System and method for restricting driver mobile device feature usage while vehicle is in motion
EP2986014A1 (en) 2011-08-05 2016-02-17 Samsung Electronics Co., Ltd. Method for controlling electronic apparatus based on voice recognition and motion recognition, and electronic apparatus applying the same
WO2013022218A2 (en) 2011-08-05 2013-02-14 Samsung Electronics Co., Ltd. Electronic apparatus and method for providing user interface thereof
WO2013022222A2 (en) 2011-08-05 2013-02-14 Samsung Electronics Co., Ltd. Method for controlling electronic apparatus based on motion recognition, and electronic apparatus applying the same
US9417754B2 (en) 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
US8595015B2 (en) 2011-08-08 2013-11-26 Verizon New Jersey Inc. Audio communication assessment
CN102929710B (zh) 2011-08-09 2017-10-27 中兴通讯股份有限公司 一种调用应用模块的方法及移动终端
US8706472B2 (en) 2011-08-11 2014-04-22 Apple Inc. Method for disambiguating multiple readings in language conversion
WO2013022135A1 (en) 2011-08-11 2013-02-14 Lg Electronics Inc. Electronic device and method of controlling the same
US8589160B2 (en) 2011-08-19 2013-11-19 Dolbey & Company, Inc. Systems and methods for providing an electronic dictation interface
KR101893151B1 (ko) 2011-08-21 2018-08-30 엘지전자 주식회사 영상 표시 장치, 단말 장치 및 그 동작 방법
US20130055099A1 (en) 2011-08-22 2013-02-28 Rose Yao Unified Messaging System with Integration of Call Log Data
US8943071B2 (en) 2011-08-23 2015-01-27 At&T Intellectual Property I, L.P. Automatic sort and propagation associated with electronic documents
JP5736276B2 (ja) * 2011-08-23 2015-06-17 京セラ株式会社 携帯電子機器、制御方法、および、制御プログラム
US20130054945A1 (en) 2011-08-24 2013-02-28 Microsoft Corporation Adaptive sensing for early booting of devices
US9195768B2 (en) 2011-08-26 2015-11-24 Amazon Technologies, Inc. Remote browsing session management
CN102955652A (zh) 2011-08-29 2013-03-06 王道平 一种拼音输入方法
US20130055147A1 (en) 2011-08-29 2013-02-28 Salesforce.Com, Inc. Configuration, generation, and presentation of custom graphical user interface components for a virtual cloud-based application
US20130054706A1 (en) 2011-08-29 2013-02-28 Mary Graham Modulation of Visual Notification Parameters Based on Message Activity and Notification Value
US8994660B2 (en) 2011-08-29 2015-03-31 Apple Inc. Text correction processing
US8819012B2 (en) 2011-08-30 2014-08-26 International Business Machines Corporation Accessing anchors in voice site content
US20130054631A1 (en) 2011-08-30 2013-02-28 Microsoft Corporation Adding social network data to search suggestions
US8554729B2 (en) 2011-08-31 2013-10-08 Google Inc. System and method for synchronization of actions in the background of an application
US8914288B2 (en) 2011-09-01 2014-12-16 At&T Intellectual Property I, L.P. System and method for advanced turn-taking for interactive spoken dialog systems
US20130061139A1 (en) 2011-09-01 2013-03-07 Google Inc. Server-based spell checking on a user device
CN102968416A (zh) * 2011-09-01 2013-03-13 佳能株式会社 基于用户意图识别执行推荐的设备和方法
US8660847B2 (en) 2011-09-02 2014-02-25 Microsoft Corporation Integrated local and cloud based speech recognition
CN104025079A (zh) 2011-09-09 2014-09-03 谷歌公司 用于翻译网页的用户接口
US9596084B2 (en) 2011-09-09 2017-03-14 Facebook, Inc. Initializing camera subsystem for face detection based on sensor inputs
US8788979B2 (en) 2011-09-10 2014-07-22 Microsoft Corporation Secondary actions on a notification
US20130066832A1 (en) 2011-09-12 2013-03-14 Microsoft Corporation Application state synchronization
US9612670B2 (en) 2011-09-12 2017-04-04 Microsoft Technology Licensing, Llc Explicit touch selection and cursor placement
CN102331908A (zh) * 2011-09-14 2012-01-25 惠州Tcl移动通信有限公司 一种无线通讯设备对近期使用应用程序的提示方法及系统
US20130073346A1 (en) 2011-09-16 2013-03-21 David Chun Identifying companies most closely related to a given company
US20130073286A1 (en) 2011-09-20 2013-03-21 Apple Inc. Consolidating Speech Recognition Results
US20130073293A1 (en) 2011-09-20 2013-03-21 Lg Electronics Inc. Electronic device and method for controlling the same
CN103947219A (zh) 2011-09-21 2014-07-23 瑞典爱立信有限公司 用于传送或用于接收和播放媒体流的方法、设备和计算机程序
US8699963B2 (en) 2011-09-22 2014-04-15 Blackberry Limited Mobile communication device with receiver speaker
US8798995B1 (en) 2011-09-23 2014-08-05 Amazon Technologies, Inc. Key word determinations from voice data
US9129606B2 (en) 2011-09-23 2015-09-08 Microsoft Technology Licensing, Llc User query history expansion for improving language model adaptation
US8812301B2 (en) 2011-09-26 2014-08-19 Xerox Corporation Linguistically-adapted structural query annotation
US20130080251A1 (en) 2011-09-26 2013-03-28 Accenture Global Services Limited Product registration and tracking system
KR20130032966A (ko) 2011-09-26 2013-04-03 엘지전자 주식회사 사용자 인터페이스 방법 및 장치
US8768707B2 (en) 2011-09-27 2014-07-01 Sensory Incorporated Background speech recognition assistant using speaker verification
US8996381B2 (en) 2011-09-27 2015-03-31 Sensory, Incorporated Background speech recognition assistant
US8762156B2 (en) 2011-09-28 2014-06-24 Apple Inc. Speech recognition repair using contextual information
US20130086609A1 (en) 2011-09-29 2013-04-04 Viacom International Inc. Integration of an Interactive Virtual Toy Box Advertising Unit and Digital Media Content
AU2015203483A1 (en) 2011-09-30 2015-07-16 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
WO2013048880A1 (en) 2011-09-30 2013-04-04 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US8452602B1 (en) 2011-09-30 2013-05-28 Google Inc. Structuring verbal commands to allow concatenation in a voice interface in a mobile device
US8468022B2 (en) 2011-09-30 2013-06-18 Google Inc. Voice control for asynchronous notifications
EP3392876A1 (en) 2011-09-30 2018-10-24 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US8452597B2 (en) 2011-09-30 2013-05-28 Google Inc. Systems and methods for continual speech recognition and detection in mobile computing devices
CN103035251A (zh) 2011-09-30 2013-04-10 西门子公司 一种建立语音转换模型的方法、语音转换的方法及系统
US8340975B1 (en) 2011-10-04 2012-12-25 Theodore Alfred Rosenberger Interactive speech recognition device and system for hands-free building control
US8386926B1 (en) 2011-10-06 2013-02-26 Google Inc. Network-based custom dictionary, auto-correction and text entry preferences
US9640175B2 (en) 2011-10-07 2017-05-02 Microsoft Technology Licensing, Llc Pronunciation learning from user correction
US9521175B2 (en) 2011-10-07 2016-12-13 Henk B. Rogers Media tagging
US9021565B2 (en) 2011-10-13 2015-04-28 At&T Intellectual Property I, L.P. Authentication techniques utilizing a computing device
US8738363B2 (en) 2011-10-13 2014-05-27 Xerox Corporation System and method for suggestion mining
US20130097566A1 (en) 2011-10-17 2013-04-18 Carl Fredrik Alexander BERGLUND System and method for displaying items on electronic devices
US9058486B2 (en) * 2011-10-18 2015-06-16 Mcafee, Inc. User behavioral risk assessment
US9253282B2 (en) * 2011-10-18 2016-02-02 Qualcomm Incorporated Method and apparatus for generating, using, or updating an enriched user profile
US9686088B2 (en) 2011-10-19 2017-06-20 Facebook, Inc. Notification profile configuration based on device orientation
KR101873741B1 (ko) 2011-10-26 2018-07-03 엘지전자 주식회사 휴대 단말기 및 그 제어 방법
US8738376B1 (en) 2011-10-28 2014-05-27 Nuance Communications, Inc. Sparse maximum a posteriori (MAP) adaptation
KR20140135147A (ko) 2011-10-29 2014-11-25 스윗 스팟 인크. 위치-기반, 대화형 소비자 참여 플랫폼용 시스템 및 방법
US20130111330A1 (en) 2011-11-01 2013-05-02 Research In Motion Limited Accelerated compositing of fixed position elements on an electronic device
US9223948B2 (en) 2011-11-01 2015-12-29 Blackberry Limited Combined passcode and activity launch modifier
US9471666B2 (en) 2011-11-02 2016-10-18 Salesforce.Com, Inc. System and method for supporting natural language queries and requests against a user's personal data cloud
US8996350B1 (en) 2011-11-02 2015-03-31 Dub Software Group, Inc. System and method for automatic document management
US20130110943A1 (en) 2011-11-02 2013-05-02 Apple Inc. Notification and reminder generation, distribution, and storage system
EP3157205B1 (en) 2011-11-02 2019-03-27 BlackBerry Limited System and method for enabling voice and video communications using a messaging application
CN103093334A (zh) 2011-11-04 2013-05-08 周超然 活动通知文本识别并自动转换为日历项的方法
JP5681611B2 (ja) 2011-11-09 2015-03-11 株式会社日立製作所 ナビゲーションシステム、ナビゲーション装置、方法及びサーバ
US9711137B2 (en) 2011-11-10 2017-07-18 At&T Intellectual Property I, Lp Network-based background expert
US8863202B2 (en) 2011-11-11 2014-10-14 Sony Corporation System and method for voice driven cross service search using second display
US8996651B2 (en) 2011-11-12 2015-03-31 Yang Pan System and method for delivering media assets in a cloud environment
CN103105995B (zh) * 2011-11-14 2016-06-01 联想(北京)有限公司 显示方法和电子设备
US9697016B2 (en) * 2011-11-15 2017-07-04 Microsoft Technology Licensing, Llc Search augmented menu and configuration for computer applications
US8972263B2 (en) 2011-11-18 2015-03-03 Soundhound, Inc. System and method for performing dual mode speech recognition
WO2013075071A1 (en) 2011-11-18 2013-05-23 Ayman Hammad Mobile wallet store and service injection platform apparatuses, methods and systems
KR101467519B1 (ko) 2011-11-21 2014-12-02 주식회사 케이티 음성 정보를 이용한 컨텐츠 검색 서버 및 방법
CN102510426A (zh) 2011-11-29 2012-06-20 安徽科大讯飞信息科技股份有限公司 个人助理应用访问方法及系统
CN103135916A (zh) 2011-11-30 2013-06-05 英特尔公司 手持无线设备中的智能图形界面
WO2013082507A1 (en) 2011-11-30 2013-06-06 Decarta Systems and methods for performing geo-search and retrieval of electronic point-of-interest records using a big index
KR101830656B1 (ko) 2011-12-02 2018-02-21 엘지전자 주식회사 이동 단말기 및 이의 제어방법
US9323746B2 (en) 2011-12-06 2016-04-26 At&T Intellectual Property I, L.P. System and method for collaborative language translation
US9214157B2 (en) 2011-12-06 2015-12-15 At&T Intellectual Property I, L.P. System and method for machine-mediated human-human conversation
KR101193668B1 (ko) 2011-12-06 2012-12-14 위준성 스마트 기기를 이용한 상황 인식 기반 외국어 습득 및 학습 서비스 제공 방법
US9082402B2 (en) 2011-12-08 2015-07-14 Sri International Generic virtual personal assistant platform
US9646313B2 (en) * 2011-12-13 2017-05-09 Microsoft Technology Licensing, Llc Gesture-based tagging to view related content
US20130159847A1 (en) 2011-12-14 2013-06-20 International Business Machines Corporation Dynamic Personal Dictionaries for Enhanced Collaboration
KR102101043B1 (ko) 2011-12-14 2020-04-16 리얼네트웍스 인코포레이티드 맞춤가능한 미디어 자동―응답 시스템들 및 방법들
US8868529B2 (en) 2011-12-16 2014-10-21 Sap Se N-dimensional locking
US9408011B2 (en) 2011-12-19 2016-08-02 Qualcomm Incorporated Automated user/sensor location recognition to customize audio performance in a distributed multi-sensor environment
CN202453859U (zh) 2011-12-20 2012-09-26 安徽科大讯飞信息科技股份有限公司 一种用于家电的语音交互装置
US20150039295A1 (en) 2011-12-20 2015-02-05 Alona Soschen Natural language processor
US8622836B2 (en) 2011-12-22 2014-01-07 Igt Use of wireless signal strength to determine connection
JP5715042B2 (ja) * 2011-12-27 2015-05-07 京セラ株式会社 装置、方法、及びプログラム
JP2013134430A (ja) 2011-12-27 2013-07-08 Toyota Motor Corp コマンド処理装置、方法、及びプログラム
US8996729B2 (en) 2012-04-12 2015-03-31 Nokia Corporation Method and apparatus for synchronizing tasks performed by multiple devices
US9218122B2 (en) 2011-12-29 2015-12-22 Rovi Guides, Inc. Systems and methods for transferring settings across devices based on user gestures
US9094534B2 (en) 2011-12-29 2015-07-28 Apple Inc. Device, method, and graphical user interface for configuring and implementing restricted interactions with a user interface
US8818810B2 (en) 2011-12-29 2014-08-26 Robert Bosch Gmbh Speaker verification in a health monitoring system
US9836177B2 (en) 2011-12-30 2017-12-05 Next IT Innovation Labs, LLC Providing variable responses in a virtual-assistant environment
US9189252B2 (en) 2011-12-30 2015-11-17 Microsoft Technology Licensing, Llc Context-based device action prediction
JP5790509B2 (ja) 2012-01-05 2015-10-07 富士通株式会社 画像再生装置、画像再生プログラム、及び画像再生方法
JP5887937B2 (ja) 2012-01-06 2016-03-16 株式会社リコー 出力制御システム、出力制御方法、出力制御装置、および出力制御プログラム
JP5547216B2 (ja) 2012-01-06 2014-07-09 株式会社東芝 電子機器及び表示制御方法
US8994560B2 (en) * 2012-01-06 2015-03-31 International Business Machines Corporation Managing parking space availability
KR101590332B1 (ko) 2012-01-09 2016-02-18 삼성전자주식회사 영상장치 및 그 제어방법
US9547832B2 (en) 2012-01-10 2017-01-17 Oracle International Corporation Identifying individual intentions and determining responses to individual intentions
US8825020B2 (en) 2012-01-12 2014-09-02 Sensory, Incorporated Information access and device control using mobile phones and audio in the home environment
CN103209369A (zh) 2012-01-16 2013-07-17 晨星软件研发(深圳)有限公司 电子装置的声控系统以及相关控制方法
US9418674B2 (en) 2012-01-17 2016-08-16 GM Global Technology Operations LLC Method and system for using vehicle sound information to enhance audio prompting
US8812302B2 (en) 2012-01-17 2014-08-19 Google Inc. Techniques for inserting diacritical marks to text input via a user device
JP2013148419A (ja) 2012-01-18 2013-08-01 Clarion Co Ltd 誘導システム、携帯端末装置および車載装置
US9134810B2 (en) 2012-01-19 2015-09-15 Blackberry Limited Next letter prediction for virtual keyboard
US20130204813A1 (en) 2012-01-20 2013-08-08 Fluential, Llc Self-learning, context aware virtual assistants, systems and methods
US9372978B2 (en) * 2012-01-20 2016-06-21 Apple Inc. Device, method, and graphical user interface for accessing an application in a locked device
US9099098B2 (en) 2012-01-20 2015-08-04 Qualcomm Incorporated Voice activity detection in presence of background noise
US8571528B1 (en) 2012-01-25 2013-10-29 Intuit Inc. Method and system to automatically create a contact with contact details captured during voice calls
US20130197914A1 (en) 2012-01-26 2013-08-01 Microtechnologies Llc D/B/A Microtech Voice activated audio control system and associated method of use
US9423266B2 (en) 2012-01-26 2016-08-23 Telecommunication Systems, Inc. Navigational lane guidance
JP5682578B2 (ja) 2012-01-27 2015-03-11 日本電気株式会社 音声認識結果修正支援システム、音声認識結果修正支援方法および音声認識結果修正支援プログラム
US8745760B2 (en) 2012-01-30 2014-06-03 Cisco Technology, Inc. Malware classification for unknown executable files
US20140310365A1 (en) 2012-01-31 2014-10-16 Global Relay Communications Inc. System and Method for Tracking Messages in a Messaging Service
US8626748B2 (en) 2012-02-03 2014-01-07 International Business Machines Corporation Combined word tree text visualization system
US9253135B2 (en) 2012-02-07 2016-02-02 Google Inc. Notification management
KR101900319B1 (ko) 2012-02-07 2018-09-19 삼성전자 주식회사 서비스 연동 수행 방법과 이를 위한 시스템
CN102629246B (zh) 2012-02-10 2017-06-27 百纳(武汉)信息技术有限公司 识别浏览器语音命令的服务器及浏览器语音命令识别方法
US8995960B2 (en) 2012-02-10 2015-03-31 Dedo Interactive, Inc. Mobile device authentication
US8533266B2 (en) 2012-02-14 2013-09-10 Google Inc. User presence detection and event discovery
US10209954B2 (en) 2012-02-14 2019-02-19 Microsoft Technology Licensing, Llc Equal access to speech and touch input
CN103247290A (zh) 2012-02-14 2013-08-14 富泰华工业(深圳)有限公司 通信装置及其控制方法
CN103259907A (zh) 2012-02-15 2013-08-21 深圳富泰宏精密工业有限公司 情景模式切换系统及方法
JP2013167806A (ja) 2012-02-16 2013-08-29 Toshiba Corp 情報通知支援装置、情報通知支援方法、および、プログラム
US8682932B2 (en) 2012-02-16 2014-03-25 Oracle International Corporation Mechanisms for searching enterprise data graphs
US8832092B2 (en) 2012-02-17 2014-09-09 Bottlenose, Inc. Natural language processing optimized for micro content
US8793136B2 (en) 2012-02-17 2014-07-29 Lg Electronics Inc. Method and apparatus for smart voice recognition
WO2013121374A2 (en) 2012-02-17 2013-08-22 Koninklijke Philips N.V. Acute lung injury (ali)/acute respiratory distress syndrome (ards) assessment and monitoring
US8453058B1 (en) 2012-02-20 2013-05-28 Google Inc. Crowd-sourced audio shortcuts
US9064497B2 (en) 2012-02-22 2015-06-23 Htc Corporation Method and apparatus for audio intelligibility enhancement and computing apparatus
KR101889836B1 (ko) 2012-02-24 2018-08-20 삼성전자주식회사 음성인식을 통한 단말기의 잠금 상태 해제 및 조작 방법 및 장치
US9042867B2 (en) 2012-02-24 2015-05-26 Agnitio S.L. System and method for speaker recognition on mobile devices
WO2013123572A1 (en) 2012-02-24 2013-08-29 Research In Motion Limited Touchscreen keyboard providing word predictions in partitions of the touchscreen keyboard in proximate association with candidate letters
US10984337B2 (en) 2012-02-29 2021-04-20 Microsoft Technology Licensing, Llc Context-based search query formation
US9026441B2 (en) 2012-02-29 2015-05-05 Nant Holdings Ip, Llc Spoken control for user construction of complex behaviors
US8543398B1 (en) 2012-02-29 2013-09-24 Google Inc. Training an automatic speech recognition system using compressed word frequencies
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US20130235987A1 (en) 2012-03-06 2013-09-12 Jose Arroniz-Escobar Automatic machine to machine distribution of subscriber contact information
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9240970B2 (en) 2012-03-07 2016-01-19 Accenture Global Services Limited Communication collaboration
US8775177B1 (en) 2012-03-08 2014-07-08 Google Inc. Speech recognition process
US20130238326A1 (en) 2012-03-08 2013-09-12 Lg Electronics Inc. Apparatus and method for multiple device voice control
US9639174B2 (en) 2012-03-09 2017-05-02 Paypal, Inc. Mobile device display content based on shaking the device
US20150006157A1 (en) 2012-03-14 2015-01-01 Nec Corporation Term synonym acquisition method and term synonym acquisition apparatus
WO2013138633A1 (en) 2012-03-15 2013-09-19 Regents Of The University Of Minnesota Automated verbal fluency assessment
KR101980173B1 (ko) 2012-03-16 2019-05-20 삼성전자주식회사 서드 파티 테스크 공급자들의 서비스 제공을 대행하는 협력적 퍼스널 어시스턴트 시스템 및 그에 따른 방법
US9223497B2 (en) 2012-03-16 2015-12-29 Blackberry Limited In-context word prediction and word correction
EP2639792A1 (en) 2012-03-16 2013-09-18 France Télécom Voice control of applications by associating user input with action-context idendifier pairs
JP5870790B2 (ja) 2012-03-19 2016-03-01 富士通株式会社 文章校正装置、及び文章校正方法
US8898064B1 (en) 2012-03-19 2014-11-25 Rawles Llc Identifying candidate passwords from captured audio
WO2013138999A1 (en) 2012-03-20 2013-09-26 Nokia Corporation Method and apparatus for providing group context sensing and inference
JP2013200423A (ja) 2012-03-23 2013-10-03 Toshiba Corp 音声対話支援装置、方法、およびプログラム
US20130343720A1 (en) 2012-03-26 2013-12-26 Customplay Llc Providing Plot Explanation Within A Video
US9609395B2 (en) 2012-03-26 2017-03-28 Max Abecassis Second screen subtitles function
JP2013200265A (ja) * 2012-03-26 2013-10-03 Aisin Aw Co Ltd ナビゲーションアプリがインストールされた電子機器、電子機器の制御方法及びコンピュータプログラム
JP5965175B2 (ja) 2012-03-27 2016-08-03 ヤフー株式会社 応答生成装置、応答生成方法および応答生成プログラム
US8681950B2 (en) 2012-03-28 2014-03-25 Interactive Intelligence, Inc. System and method for fingerprinting datasets
US10237696B2 (en) 2012-03-29 2019-03-19 Intel Corporation Location-based assistance for personal planning
US9230257B2 (en) 2012-03-30 2016-01-05 Sap Se Systems and methods for customer relationship management
US8881269B2 (en) 2012-03-31 2014-11-04 Apple Inc. Device, method, and graphical user interface for integrating recognition of handwriting gestures with a screen reader
CN103366741B (zh) 2012-03-31 2019-05-17 上海果壳电子有限公司 语音输入纠错方法及系统
ITRM20120142A1 (it) 2012-04-05 2013-10-06 X2Tv S R L Procedimento e sistema per la raccolta in tempo reale di un feedback da parte del pubblico di una trasmissione televisiva o radiofonica
US8996356B1 (en) 2012-04-10 2015-03-31 Google Inc. Techniques for predictive input method editors
US8892419B2 (en) 2012-04-10 2014-11-18 Artificial Solutions Iberia SL System and methods for semiautomatic generation and tuning of natural language interaction applications
US8346563B1 (en) 2012-04-10 2013-01-01 Artificial Solutions Ltd. System and methods for delivering advanced natural language interaction applications
US20130275117A1 (en) 2012-04-11 2013-10-17 Morgan H. Winer Generalized Phonetic Transliteration Engine
US9685160B2 (en) 2012-04-16 2017-06-20 Htc Corporation Method for offering suggestion during conversation, electronic device using the same, and non-transitory storage medium
US20130282709A1 (en) 2012-04-18 2013-10-24 Yahoo! Inc. Method and system for query suggestion
US9223537B2 (en) 2012-04-18 2015-12-29 Next It Corporation Conversation user interface
US20130279724A1 (en) 2012-04-19 2013-10-24 Sony Computer Entertainment Inc. Auto detection of headphone orientation
EP2839391A4 (en) 2012-04-20 2016-01-27 Maluuba Inc CONVERSATION AGENT
US20130283199A1 (en) * 2012-04-24 2013-10-24 Microsoft Corporation Access to an Application Directly from a Lock Screen
US9117449B2 (en) 2012-04-26 2015-08-25 Nuance Communications, Inc. Embedded system for construction of small footprint speech recognition with user-definable constraints
CN102682771B (zh) 2012-04-27 2013-11-20 厦门思德电子科技有限公司 一种适用于云平台的多语音控制方法
TWI511537B (zh) 2012-04-27 2015-12-01 Wistron Corp 智慧型電視系統、智慧型電視、行動裝置及其輸入操作方法
US9626150B2 (en) 2012-04-27 2017-04-18 Hewlett-Packard Development Company, L.P. Audio input from user
JP5921320B2 (ja) * 2012-04-27 2016-05-24 富士通テン株式会社 表示システム、携帯装置、車載装置、及び、プログラム
US20130285916A1 (en) 2012-04-30 2013-10-31 Research In Motion Limited Touchscreen keyboard providing word predictions at locations in association with candidate letters
US20130289991A1 (en) 2012-04-30 2013-10-31 International Business Machines Corporation Application of Voice Tags in a Social Media Context
KR101946364B1 (ko) 2012-05-01 2019-02-11 엘지전자 주식회사 적어도 하나의 마이크 센서를 갖는 모바일 디바이스 및 그 제어방법
US10088853B2 (en) 2012-05-02 2018-10-02 Honeywell International Inc. Devices and methods for interacting with an HVAC controller
CN103384290A (zh) 2012-05-03 2013-11-06 中兴通讯股份有限公司 具备定位导航功能的移动终端及其快捷定位导航的方法
US9058332B1 (en) 2012-05-04 2015-06-16 Google Inc. Blended ranking of dissimilar populations using an N-furcated normalization technique
CN102694909A (zh) 2012-05-07 2012-09-26 深圳桑菲消费通信有限公司 一种手机的智能锁屏系统和方法
KR101977072B1 (ko) 2012-05-07 2019-05-10 엘지전자 주식회사 음성 파일과 관련된 텍스트의 표시 방법 및 이를 구현한 전자기기
US8732560B2 (en) 2012-05-08 2014-05-20 Infineon Technologies Ag Method and device for correction of ternary stored binary data
US9406299B2 (en) 2012-05-08 2016-08-02 Nuance Communications, Inc. Differential acoustic model representation and linear transform-based adaptation for efficient user profile update techniques in automatic speech recognition
US9423870B2 (en) 2012-05-08 2016-08-23 Google Inc. Input determination method
WO2013169842A2 (en) 2012-05-09 2013-11-14 Yknots Industries Llc Device, method, and graphical user interface for selecting object within a group of objects
CN105260049B (zh) 2012-05-09 2018-10-23 苹果公司 用于响应于用户接触来显示附加信息的设备、方法和图形用户界面
WO2013169843A1 (en) 2012-05-09 2013-11-14 Yknots Industries Llc Device, method, and graphical user interface for manipulating framed graphical objects
WO2013169043A1 (ko) 2012-05-10 2013-11-14 엘지전자 주식회사 Nfc를 이용한 콘텐트 다운로드 방법 및 장치
US8725808B2 (en) 2012-05-10 2014-05-13 Intel Mobile Communications GmbH Method for transferring data between a first device and a second device
US9746916B2 (en) 2012-05-11 2017-08-29 Qualcomm Incorporated Audio user interaction recognition and application interface
JP5996262B2 (ja) 2012-05-11 2016-09-21 シャープ株式会社 文字入力装置、電子機器、制御方法、制御プログラムおよび記録媒体
US9002768B2 (en) 2012-05-12 2015-04-07 Mikhail Fedorov Human-computer interface system
US8897822B2 (en) 2012-05-13 2014-11-25 Wavemarket, Inc. Auto responder
US9280610B2 (en) 2012-05-14 2016-03-08 Apple Inc. Crowd sourcing information to fulfill user requests
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
US8775442B2 (en) 2012-05-15 2014-07-08 Apple Inc. Semantic search using a single-source semantic model
US20130308922A1 (en) 2012-05-15 2013-11-21 Microsoft Corporation Enhanced video discovery and productivity through accessibility
US20130307855A1 (en) 2012-05-16 2013-11-21 Mathew J. Lamb Holographic story telling
TWI466101B (zh) 2012-05-18 2014-12-21 Asustek Comp Inc 語音識別方法及系統
US20120296638A1 (en) 2012-05-18 2012-11-22 Ashish Patwa Method and system for quickly recognizing and responding to user intents and questions from natural language input using intelligent hierarchical processing and personalized adaptive semantic interface
CN103426428B (zh) 2012-05-18 2016-05-25 华硕电脑股份有限公司 语音识别方法及系统
US9247306B2 (en) 2012-05-21 2016-01-26 Intellectual Ventures Fund 83 Llc Forming a multimedia product using video chat
US8484573B1 (en) 2012-05-23 2013-07-09 Google Inc. Predictive virtual keyboard
US9406084B2 (en) 2012-05-23 2016-08-02 Specialty's Café & Bakery, Inc. Methods for submitting a food order remotely
US8850037B2 (en) 2012-05-24 2014-09-30 Fmr Llc Communication session transfer between devices
US9173074B2 (en) 2012-05-27 2015-10-27 Qualcomm Incorporated Personal hub presence and response
US9374448B2 (en) 2012-05-27 2016-06-21 Qualcomm Incorporated Systems and methods for managing concurrent audio messages
US9582146B2 (en) * 2012-05-29 2017-02-28 Nokia Technologies Oy Causing display of search results
KR20130133629A (ko) 2012-05-29 2013-12-09 삼성전자주식회사 전자장치에서 음성명령을 실행시키기 위한 장치 및 방법
US20130325436A1 (en) 2012-05-29 2013-12-05 Wright State University Large Scale Distributed Syntactic, Semantic and Lexical Language Models
TWI492221B (zh) 2012-05-30 2015-07-11 友達光電股份有限公司 遙控裝置、遙控系統及遙控裝置之控制方法
US9307293B2 (en) 2012-05-30 2016-04-05 Palo Alto Research Center Incorporated Collaborative video application for remote servicing
US20130325447A1 (en) 2012-05-31 2013-12-05 Elwha LLC, a limited liability corporation of the State of Delaware Speech recognition adaptation systems based on adaptation data
CN103608759B (zh) 2012-05-31 2019-05-14 都特媒体有限公司 在设备上动态显示个性化主屏的方法
US8768693B2 (en) 2012-05-31 2014-07-01 Yahoo! Inc. Automatic tag extraction from audio annotated photos
CN102750087A (zh) 2012-05-31 2012-10-24 华为终端有限公司 控制语音识别功能的方法、装置和终端设备
US8843371B2 (en) 2012-05-31 2014-09-23 Elwha Llc Speech recognition adaptation systems based on adaptation data
CN103455234A (zh) 2012-06-01 2013-12-18 腾讯科技(深圳)有限公司 显示应用程序界面的方法及装置
JP2013248292A (ja) * 2012-06-01 2013-12-12 Nintendo Co Ltd 情報処理プログラム、情報処理装置、情報処理システムおよび表示方法
US9123338B1 (en) 2012-06-01 2015-09-01 Google Inc. Background audio identification for speech disambiguation
US20130321267A1 (en) 2012-06-04 2013-12-05 Apple Inc. Dynamically changing a character associated with a key of a keyboard
US20130325343A1 (en) 2012-06-05 2013-12-05 Apple Inc. Mapping application with novel search field
US9997069B2 (en) 2012-06-05 2018-06-12 Apple Inc. Context-aware voice guidance
US8725823B2 (en) 2012-06-05 2014-05-13 Forget You Not, LLC Location-based communications
US8515750B1 (en) 2012-06-05 2013-08-20 Google Inc. Realtime acoustic adaptation using stability measures
US9043150B2 (en) 2012-06-05 2015-05-26 Apple Inc. Routing applications for navigation
US10156455B2 (en) 2012-06-05 2018-12-18 Apple Inc. Context-aware voice guidance
US9311750B2 (en) 2012-06-05 2016-04-12 Apple Inc. Rotation operations in a mapping application
US9071564B2 (en) 2012-06-07 2015-06-30 Apple Inc. Data synchronization using mail and push notification services
US9261961B2 (en) 2012-06-07 2016-02-16 Nook Digital, Llc Accessibility aids for users of electronic devices
US9721563B2 (en) 2012-06-08 2017-08-01 Apple Inc. Name recognition system
WO2013185107A1 (en) 2012-06-08 2013-12-12 Spotify Ab Systems and methods for recognizing ambiguity in metadata
WO2013185109A2 (en) 2012-06-08 2013-12-12 Apple Inc. Systems and methods for recognizing textual identifiers within a plurality of words
US20130332168A1 (en) 2012-06-08 2013-12-12 Samsung Electronics Co., Ltd. Voice activated search and control for applications
US20130332159A1 (en) 2012-06-08 2013-12-12 Apple Inc. Using fan throttling to enhance dictation accuracy
US9002380B2 (en) 2012-06-08 2015-04-07 Apple Inc. Proximity-based notifications in a mobile device
US9674331B2 (en) 2012-06-08 2017-06-06 Apple Inc. Transmitting data from an automated assistant to an accessory
EP2675147B1 (en) 2012-06-11 2022-03-23 Samsung Electronics Co., Ltd. Service providing system in a vehicle including display device and mobile device, and method for providing service using the same
US9916514B2 (en) 2012-06-11 2018-03-13 Amazon Technologies, Inc. Text recognition driven functionality
US9183845B1 (en) 2012-06-12 2015-11-10 Amazon Technologies, Inc. Adjusting audio signals based on a specific frequency range associated with environmental noise characteristics
JP6368455B2 (ja) 2012-06-12 2018-08-01 京セラ株式会社 装置、方法、及びプログラム
JP5921348B2 (ja) 2012-06-13 2016-05-24 三菱電機株式会社 映像表示端末
EP2862349A4 (en) 2012-06-14 2015-11-11 Flextronics Ap Llc METHOD AND SYSTEM FOR ADAPTING TELEVISION CONTENTS
CN104603773A (zh) 2012-06-14 2015-05-06 诺基亚公司 基于用户之间的社交扩散使兴趣标签与媒体项关联的方法和设备
US20130339454A1 (en) 2012-06-15 2013-12-19 Michael Walker Systems and methods for communicating between multiple access devices
JP5819261B2 (ja) 2012-06-19 2015-11-18 株式会社Nttドコモ 機能実行指示システム、機能実行指示方法及び機能実行指示プログラム
US9185501B2 (en) 2012-06-20 2015-11-10 Broadcom Corporation Container-located information transfer module
US9734839B1 (en) 2012-06-20 2017-08-15 Amazon Technologies, Inc. Routing natural language commands to the appropriate applications
US20140012574A1 (en) 2012-06-21 2014-01-09 Maluuba Inc. Interactive timeline for presenting and organizing tasks
US20130347029A1 (en) 2012-06-21 2013-12-26 United Video Properties, Inc. Systems and methods for navigating to content without an advertisement
US20130347018A1 (en) 2012-06-21 2013-12-26 Amazon Technologies, Inc. Providing supplemental content with active media
US20130346347A1 (en) 2012-06-22 2013-12-26 Google Inc. Method to Predict a Communicative Action that is Most Likely to be Executed Given a Context
US8606577B1 (en) 2012-06-25 2013-12-10 Google Inc. Visual confirmation of voice recognized text input
US9813882B1 (en) 2012-06-25 2017-11-07 Amazon Technologies, Inc. Mobile notifications based upon notification content
US20130342672A1 (en) 2012-06-25 2013-12-26 Amazon Technologies, Inc. Using gaze determination with device input
US20130346068A1 (en) 2012-06-25 2013-12-26 Apple Inc. Voice-Based Image Tagging and Searching
CN104412323B (zh) 2012-06-25 2017-12-12 三菱电机株式会社 车载信息装置
US20150201064A1 (en) 2012-06-26 2015-07-16 Blackberry Limited Methods and apparatus to detect and add impact events to a calendar program
US8819841B2 (en) 2012-06-26 2014-08-26 Google Inc. Automated accounts for media playback
CN102801853B (zh) 2012-06-27 2017-02-15 宇龙计算机通信科技(深圳)有限公司 移动终端和自动触发任务执行方法
US20140006153A1 (en) 2012-06-27 2014-01-02 Infosys Limited System for making personalized offers for business facilitation of an entity and methods thereof
US9141504B2 (en) 2012-06-28 2015-09-22 Apple Inc. Presenting status data received from multiple devices
US20140002338A1 (en) 2012-06-28 2014-01-02 Intel Corporation Techniques for pose estimation and false positive filtering for gesture recognition
KR101961139B1 (ko) 2012-06-28 2019-03-25 엘지전자 주식회사 이동 단말기 및 그것의 음성 인식 방법
JP6050625B2 (ja) 2012-06-28 2016-12-21 サターン ライセンシング エルエルシーSaturn Licensing LLC 情報処理装置及び情報処理方法、コンピューター・プログラム、並びに情報通信システム
US9426229B2 (en) 2012-06-29 2016-08-23 Nokia Technologies Oy Apparatus and method for selection of a device for content sharing operations
US9195383B2 (en) 2012-06-29 2015-11-24 Spotify Ab Systems and methods for multi-path control signals for media presentation devices
JP5852930B2 (ja) 2012-06-29 2016-02-03 Kddi株式会社 入力文字推定装置およびプログラム
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US9996628B2 (en) 2012-06-29 2018-06-12 Verisign, Inc. Providing audio-activated resource access for user devices based on speaker voiceprint
US10620797B2 (en) 2012-06-29 2020-04-14 Spotify Ab Systems and methods for multi-context media control and playback
US20140006012A1 (en) 2012-07-02 2014-01-02 Microsoft Corporation Learning-Based Processing of Natural Language Questions
KR20140004515A (ko) 2012-07-03 2014-01-13 삼성전자주식회사 디스플레이 장치, 대화형 시스템 및 응답 정보 제공 방법
CN103533143A (zh) 2012-07-03 2014-01-22 联想(北京)有限公司 一种信息处理方法及电子设备
US9536528B2 (en) 2012-07-03 2017-01-03 Google Inc. Determining hotword suitability
KR101972955B1 (ko) 2012-07-03 2019-04-26 삼성전자 주식회사 음성을 이용한 사용자 디바이스들 간 서비스 연결 방법 및 장치
CN103543902A (zh) 2012-07-09 2014-01-29 上海博路信息技术有限公司 一种短信地址的地图显示方法
US9064493B2 (en) 2012-07-09 2015-06-23 Nuance Communications, Inc. Detecting potential significant errors in speech recognition results
CN103544140A (zh) 2012-07-12 2014-01-29 国际商业机器公司 一种数据处理方法、展示方法和相应的装置
US20140019460A1 (en) 2012-07-12 2014-01-16 Yahoo! Inc. Targeted search suggestions
US9053708B2 (en) 2012-07-18 2015-06-09 International Business Machines Corporation System, method and program product for providing automatic speech recognition (ASR) in a shared resource environment
IN2015KN00242A (ko) 2012-07-20 2015-06-12 Intertrust Tech Corp
US9658746B2 (en) 2012-07-20 2017-05-23 Nook Digital, Llc Accessible reading mode techniques for electronic devices
US9442687B2 (en) 2012-07-23 2016-09-13 Korea Advanced Institute Of Science And Technology Method and apparatus for moving web object based on intent
US20140028477A1 (en) 2012-07-24 2014-01-30 Apple Inc. Vehicle location system
US9953584B2 (en) 2012-07-24 2018-04-24 Nook Digital, Llc Lighting techniques for display devices
US20140032358A1 (en) 2012-07-25 2014-01-30 Aro, Inc. Sharing Recommendation Agents
US8949334B2 (en) * 2012-07-26 2015-02-03 Microsoft Corporation Push-based recommendations
JP2014026629A (ja) 2012-07-26 2014-02-06 Panasonic Corp 入力装置及び入力支援方法
US8589911B1 (en) 2012-07-26 2013-11-19 Google Inc. Intent fulfillment
JP6102923B2 (ja) 2012-07-27 2017-03-29 ソニー株式会社 情報処理システムおよび記憶媒体
US8922034B2 (en) 2012-07-27 2014-12-30 Illinois Tool Works Inc. Power converter for engine generator
US8442821B1 (en) 2012-07-27 2013-05-14 Google Inc. Multi-frame prediction for hybrid neural network/hidden Markov models
US8990343B2 (en) 2012-07-30 2015-03-24 Google Inc. Transferring a state of an application from a first computing device to a second computing device
US9465833B2 (en) 2012-07-31 2016-10-11 Veveo, Inc. Disambiguating user intent in conversational interaction system for large corpus information retrieval
US20140039893A1 (en) 2012-07-31 2014-02-06 Sri International Personalized Voice-Driven User Interfaces for Remote Multi-User Services
US20140035823A1 (en) 2012-08-01 2014-02-06 Apple Inc. Dynamic Context-Based Language Determination
US8831957B2 (en) 2012-08-01 2014-09-09 Google Inc. Speech recognition models based on location indicia
US10108725B2 (en) 2012-08-02 2018-10-23 Rule 14 Real-time and adaptive data mining
US9160844B2 (en) 2012-08-06 2015-10-13 Angel.Com Incorporated Conversation assistant
US9390174B2 (en) 2012-08-08 2016-07-12 Google Inc. Search result ranking and presentation
KR20150046100A (ko) 2012-08-10 2015-04-29 뉘앙스 커뮤니케이션즈, 인코포레이티드 전자 디바이스에 대한 가상 에이전트 통신
US20140052791A1 (en) 2012-08-14 2014-02-20 International Business Machines Corporation Task Based Filtering of Unwanted Electronic Communications
US10163058B2 (en) 2012-08-14 2018-12-25 Sri International Method, system and device for inferring a mobile user's current context and proactively providing assistance
EP2885918A4 (en) 2012-08-15 2016-06-15 Ie Business Plains Llc ONLINE COLLABORATIVE SUITE
US20140053101A1 (en) 2012-08-15 2014-02-20 Ge Aviation Systems Llc Methods for displaying on a graphical user interface
US9031848B2 (en) 2012-08-16 2015-05-12 Nuance Communications, Inc. User interface for searching a bundled service content data source
US9497515B2 (en) 2012-08-16 2016-11-15 Nuance Communications, Inc. User interface for entertainment systems
US9292487B1 (en) 2012-08-16 2016-03-22 Amazon Technologies, Inc. Discriminative language model pruning
EP2803004A1 (en) 2012-08-16 2014-11-19 Nuance Communications, Inc. User interface for entertainment systems
KR101922464B1 (ko) 2012-08-16 2018-11-27 삼성전자주식회사 메시지 송수신 방법 및 그 전자장치
CN102820033B (zh) 2012-08-17 2013-12-04 南京大学 一种声纹识别方法
US20160357790A1 (en) 2012-08-20 2016-12-08 InsideSales.com, Inc. Resolving and merging duplicate records using machine learning
US20140279739A1 (en) 2013-03-15 2014-09-18 InsideSales.com, Inc. Resolving and merging duplicate records using machine learning
KR20140025996A (ko) * 2012-08-24 2014-03-05 엘지전자 주식회사 단말기 및 그 제어 방법
US9229924B2 (en) 2012-08-24 2016-01-05 Microsoft Technology Licensing, Llc Word detection and domain dictionary recommendation
WO2014029099A1 (en) 2012-08-24 2014-02-27 Microsoft Corporation I-vector based clustering training data in speech recognition
JP5936698B2 (ja) 2012-08-27 2016-06-22 株式会社日立製作所 単語意味関係抽出装置
CN104584601B (zh) 2012-08-28 2018-10-09 诺基亚技术有限公司 发现方法和用于发现的装置和系统
US9026425B2 (en) 2012-08-28 2015-05-05 Xerox Corporation Lexical and phrasal feature domain adaptation in statistical machine translation
JP6393021B2 (ja) 2012-08-28 2018-09-19 京セラ株式会社 電子機器、制御方法、及び制御プログラム
US9049295B1 (en) 2012-08-28 2015-06-02 West Corporation Intelligent interactive voice response system for processing customer communications
US9390370B2 (en) 2012-08-28 2016-07-12 International Business Machines Corporation Training deep neural network acoustic models using distributed hessian-free optimization
KR102081925B1 (ko) 2012-08-29 2020-02-26 엘지전자 주식회사 디스플레이 디바이스 및 스피치 검색 방법
CN102866828B (zh) 2012-08-29 2015-11-25 腾讯科技(深圳)有限公司 一种终端控制方法和设备
US9424840B1 (en) 2012-08-31 2016-08-23 Amazon Technologies, Inc. Speech recognition platforms
US9218333B2 (en) 2012-08-31 2015-12-22 Microsoft Technology Licensing, Llc Context sensitive auto-correction
US20140074589A1 (en) 2012-09-02 2014-03-13 Aaron David NIELSEN System and method for the selection and delivery of a customized consumer offer or engagement dialog by a live customer service representative in communication with a consumer
KR101398218B1 (ko) 2012-09-03 2014-05-22 경희대학교 산학협력단 감정 음성 인식장치 및 방법
CN103493500A (zh) 2012-09-04 2014-01-01 华为终端有限公司 媒体播放方法、控制点和终端
US8826415B2 (en) 2012-09-04 2014-09-02 Apple Inc. Automated device access
JP2014052445A (ja) 2012-09-06 2014-03-20 Canon Inc ズームレンズ
US9325809B1 (en) 2012-09-07 2016-04-26 Mindmeld, Inc. Audio recall during voice conversations
US9536049B2 (en) 2012-09-07 2017-01-03 Next It Corporation Conversational virtual healthcare assistant
US8600746B1 (en) 2012-09-10 2013-12-03 Google Inc. Speech recognition parameter adjustment
EP2706458A1 (en) 2012-09-10 2014-03-12 Canon Kabushiki Kaisha Method and device for controlling communication between applications in a web runtime environment
US20140074466A1 (en) 2012-09-10 2014-03-13 Google Inc. Answering questions using environmental context
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US20150088523A1 (en) 2012-09-10 2015-03-26 Google Inc. Systems and Methods for Designing Voice Applications
US20140074470A1 (en) 2012-09-11 2014-03-13 Google Inc. Phonetic pronunciation
US20140074472A1 (en) 2012-09-12 2014-03-13 Chih-Hung Lin Voice control system with portable voice control device
WO2014040263A1 (en) 2012-09-14 2014-03-20 Microsoft Corporation Semantic ranking using a forward index
US20140078065A1 (en) 2012-09-15 2014-03-20 Ahmet Akkok Predictive Keyboard With Suppressed Keys
JP6057637B2 (ja) 2012-09-18 2017-01-11 株式会社アイ・オー・データ機器 携帯型情報端末装置、機能切替方法、および機能切替プログラム
US9519641B2 (en) 2012-09-18 2016-12-13 Abbyy Development Llc Photography recognition translation
US9081482B1 (en) 2012-09-18 2015-07-14 Google Inc. Text input suggestion ranking
US10656808B2 (en) 2012-09-18 2020-05-19 Adobe Inc. Natural language and user interface controls
US9105268B2 (en) 2012-09-19 2015-08-11 24/7 Customer, Inc. Method and apparatus for predicting intent in IVR using natural language queries
US9547647B2 (en) 2012-09-19 2017-01-17 Apple Inc. Voice-based media searching
US8823507B1 (en) 2012-09-19 2014-09-02 Amazon Technologies, Inc. Variable notification alerts
US8769651B2 (en) 2012-09-19 2014-07-01 Secureauth Corporation Mobile multifactor single-sign-on authentication
KR101919792B1 (ko) 2012-09-20 2018-11-19 엘지전자 주식회사 휴대 단말기 및 그 제어 방법
US10042603B2 (en) 2012-09-20 2018-08-07 Samsung Electronics Co., Ltd. Context aware service provision method and apparatus of user device
US9076450B1 (en) 2012-09-21 2015-07-07 Amazon Technologies, Inc. Directed audio for speech recognition
US20140211944A1 (en) 2012-09-24 2014-07-31 Daniel Joseph Lutz System and method of protecting, storing and decrypting keys over a computerized network
US8935167B2 (en) 2012-09-25 2015-01-13 Apple Inc. Exemplar-based latent perceptual modeling for automatic speech recognition
US9092415B2 (en) 2012-09-25 2015-07-28 Rovi Guides, Inc. Systems and methods for automatic program recommendations based on user interactions
US8983383B1 (en) 2012-09-25 2015-03-17 Rawles Llc Providing hands-free service to multiple devices
US8983836B2 (en) 2012-09-26 2015-03-17 International Business Machines Corporation Captioning using socially derived acoustic profiles
US8498864B1 (en) 2012-09-27 2013-07-30 Google Inc. Methods and systems for predicting a text
US20140087711A1 (en) 2012-09-27 2014-03-27 Aegis Mobility, Inc. Mobile device context incorporating near field communications
JP2014072586A (ja) 2012-09-27 2014-04-21 Sharp Corp 表示装置、表示方法、テレビジョン受像機、プログラム、および、記録媒体
CN104469255A (zh) 2013-09-16 2015-03-25 杜比实验室特许公司 改进的音频或视频会议
US10824310B2 (en) 2012-12-20 2020-11-03 Sri International Augmented reality virtual personal assistant for external representation
US10096316B2 (en) 2013-11-27 2018-10-09 Sri International Sharing intents to provide virtual assistance in a multi-person dialog
US8806613B2 (en) 2012-09-28 2014-08-12 Intel Corporation Intelligent task assignment and authorization systems and methods
US9052964B2 (en) 2012-09-28 2015-06-09 International Business Machines Corporation Device operability enhancement with alternative device utilization
KR20140042994A (ko) 2012-09-28 2014-04-08 한국전자통신연구원 가상 에이전트와의 대화 내용에서 자동으로 추출되는 개인 프로파일링 정보를 이용한 자동학습 기반의 인공지능 대화 시스템
US20140095172A1 (en) 2012-10-01 2014-04-03 Nuance Communications, Inc. Systems and methods for providing a voice agent user interface
US10276157B2 (en) 2012-10-01 2019-04-30 Nuance Communications, Inc. Systems and methods for providing a voice agent user interface
US20140095171A1 (en) 2012-10-01 2014-04-03 Nuance Communications, Inc. Systems and methods for providing a voice agent user interface
US8645128B1 (en) 2012-10-02 2014-02-04 Google Inc. Determining pitch dynamics of an audio signal
US9367236B2 (en) 2012-10-05 2016-06-14 Google Inc. System and method for processing touch actions
KR102009423B1 (ko) 2012-10-08 2019-08-09 삼성전자주식회사 음성 인식을 이용한 미리 설정된 동작 모드의 수행 방법 및 장치
US9230560B2 (en) 2012-10-08 2016-01-05 Nant Holdings Ip, Llc Smart home automation systems and methods
US8606568B1 (en) 2012-10-10 2013-12-10 Google Inc. Evaluating pronouns in context
US8543397B1 (en) 2012-10-11 2013-09-24 Google Inc. Mobile device voice activation
JP6066471B2 (ja) 2012-10-12 2017-01-25 本田技研工業株式会社 対話システム及び対話システム向け発話の判別方法
CN103727948B (zh) * 2012-10-16 2016-08-17 北京掌行通信息技术有限公司 乘车导航的实时诱导方法
US8713433B1 (en) 2012-10-16 2014-04-29 Google Inc. Feature-based autocorrection
US8843845B2 (en) 2012-10-16 2014-09-23 Google Inc. Multi-gesture text input prediction
US9031293B2 (en) 2012-10-19 2015-05-12 Sony Computer Entertainment Inc. Multi-modal sensor based emotion recognition and emotional interface
CN102882752A (zh) 2012-10-19 2013-01-16 天津光宏科技有限公司 基于物联网及安卓系统的智能家居系统及控制方法
US9319445B2 (en) 2012-10-22 2016-04-19 Spotify Ab Systems and methods for pre-fetching media content
US20150241962A1 (en) 2012-10-22 2015-08-27 Vid Scale, Inc. User presence detection in mobile devices
US8527276B1 (en) 2012-10-25 2013-09-03 Google Inc. Speech synthesis using deep neural networks
US9305439B2 (en) 2012-10-25 2016-04-05 Google Inc. Configurable indicator on computing device
US20140122086A1 (en) 2012-10-26 2014-05-01 Microsoft Corporation Augmenting speech recognition with depth imaging
US9158560B2 (en) * 2012-10-26 2015-10-13 Verizon Patent And Licensing Inc. Dynamic application arranger
WO2014064324A1 (en) 2012-10-26 2014-05-01 Nokia Corporation Multi-device speech recognition
US9459176B2 (en) 2012-10-26 2016-10-04 Azima Holdings, Inc. Voice controlled vibration data analyzer systems and methods
KR20140054643A (ko) 2012-10-29 2014-05-09 삼성전자주식회사 음성인식장치 및 음성인식방법
US10304465B2 (en) 2012-10-30 2019-05-28 Google Technology Holdings LLC Voice control user interface for low power mode
KR101967917B1 (ko) 2012-10-30 2019-08-13 삼성전자주식회사 음성을 인식하는 전자 장치 및 방법
KR102117841B1 (ko) 2012-10-30 2020-06-02 삼성전자주식회사 전자장치 및 그 제어방법
WO2014070872A2 (en) 2012-10-30 2014-05-08 Robert Bosch Gmbh System and method for multimodal interaction with reduced distraction in operating vehicles
US9734151B2 (en) 2012-10-31 2017-08-15 Tivo Solutions Inc. Method and system for voice based media search
WO2014071043A1 (en) 2012-10-31 2014-05-08 DoWhatILikeBest, LLC Favorite and serendipitous event correlation and notification
US8606576B1 (en) 2012-11-02 2013-12-10 Google Inc. Communication log with extracted keywords from speech-to-text processing
US9093069B2 (en) 2012-11-05 2015-07-28 Nuance Communications, Inc. Privacy-sensitive speech model creation via aggregation of multiple user models
US9734249B2 (en) 2012-11-07 2017-08-15 Intertrust Technologies Corporation Personalized data management systems and methods
JP6018881B2 (ja) 2012-11-07 2016-11-02 株式会社日立製作所 ナビゲーション装置、及びナビゲーション方法
US20140136987A1 (en) 2012-11-09 2014-05-15 Apple Inc. Generation of a user interface based on contacts
KR20140060995A (ko) 2012-11-13 2014-05-21 삼성전자주식회사 상황별 거절 메시지 제공 방법 및 이를 지원하는 단말기
US9275642B2 (en) 2012-11-13 2016-03-01 Unified Computer Intelligence Corporation Voice-operated internet-ready ubiquitous computing device and method thereof
US9247387B2 (en) 2012-11-13 2016-01-26 International Business Machines Corporation Proximity based reminders
KR20140061803A (ko) 2012-11-14 2014-05-22 삼성전자주식회사 프로젝션 장치
KR101709187B1 (ko) 2012-11-14 2017-02-23 한국전자통신연구원 계층적 대화 태스크 라이브러리를 이용한 이중 대화관리 기반 음성대화시스템
US9235321B2 (en) 2012-11-14 2016-01-12 Facebook, Inc. Animation sequence associated with content item
US9085303B2 (en) 2012-11-15 2015-07-21 Sri International Vehicle personal assistant
US9798799B2 (en) 2012-11-15 2017-10-24 Sri International Vehicle personal assistant that interprets spoken natural language input based upon vehicle context
KR102028702B1 (ko) 2012-11-16 2019-10-04 삼성전자주식회사 현재의 상태에 따른 응답 메시지를 송신하는 전자 장치 및 방법
US9032219B2 (en) 2012-11-16 2015-05-12 Nuance Communications, Inc. Securing speech recognition data
US9378456B2 (en) 2012-11-19 2016-06-28 Microsoft Technology Licensing, Llc Task completion
KR101995428B1 (ko) 2012-11-20 2019-07-02 엘지전자 주식회사 이동 단말기 및 그 제어방법
JP2014102669A (ja) 2012-11-20 2014-06-05 Toshiba Corp 情報処理装置、情報処理方法およびプログラム
US8965754B2 (en) 2012-11-20 2015-02-24 International Business Machines Corporation Text prediction using environment hints
US9251713B1 (en) 2012-11-20 2016-02-02 Anthony J. Giovanniello System and process for assessing a user and for assisting a user in rehabilitation
KR20140064246A (ko) 2012-11-20 2014-05-28 한국전자통신연구원 착용형 디스플레이 장치
US10551928B2 (en) 2012-11-20 2020-02-04 Samsung Electronics Company, Ltd. GUI transitions on wearable electronic device
US9756049B2 (en) 2012-11-22 2017-09-05 8303142 Canada Inc. System and method for managing several mobile devices simultaneously
RU2530268C2 (ru) 2012-11-28 2014-10-10 Общество с ограниченной ответственностью "Спиктуит" Способ обучения информационной диалоговой системы пользователем
WO2014084413A1 (ko) 2012-11-28 2014-06-05 엘지전자 주식회사 가전 기기 구동 장치 및 방법
US20140146200A1 (en) 2012-11-28 2014-05-29 Research In Motion Limited Entries to an electronic calendar
WO2014142702A1 (en) 2013-03-15 2014-09-18 Obschestvo S Ogranichennoy Otvetstvennostiyu "Speaktoit" Selective speech recognition for chat and digital personal assistant systems
US20140149118A1 (en) 2012-11-28 2014-05-29 Lg Electronics Inc. Apparatus and method for driving electric device using speech recognition
US10026400B2 (en) 2013-06-27 2018-07-17 Google Llc Generating dialog recommendations for chat information systems based on user interaction and environmental data
KR102104025B1 (ko) 2012-11-29 2020-04-23 에드센스, 엘.엘.씨. 여러 애플리케이션들을 디스플레이하기 위한 시스템 및 방법
JP2014109889A (ja) 2012-11-30 2014-06-12 Toshiba Corp コンテンツ検索装置、コンテンツ検索方法及び制御プログラム
US9589149B2 (en) 2012-11-30 2017-03-07 Microsoft Technology Licensing, Llc Combining personalization and privacy locally on devices
US9159319B1 (en) 2012-12-03 2015-10-13 Amazon Technologies, Inc. Keyword spotting with competitor models
US9549323B2 (en) 2012-12-03 2017-01-17 Samsung Electronics Co., Ltd. Method and mobile terminal for controlling screen lock
US9819786B2 (en) 2012-12-05 2017-11-14 Facebook, Inc. Systems and methods for a symbol-adaptable keyboard
US9026429B2 (en) 2012-12-05 2015-05-05 Facebook, Inc. Systems and methods for character string auto-suggestion based on degree of difficulty
US8615221B1 (en) 2012-12-06 2013-12-24 Google Inc. System and method for selection of notification techniques in an electronic device
US8930181B2 (en) 2012-12-06 2015-01-06 Prashant Parikh Automatic dynamic contextual data entry completion
US20140164476A1 (en) 2012-12-06 2014-06-12 At&T Intellectual Property I, Lp Apparatus and method for providing a virtual assistant
US9244905B2 (en) 2012-12-06 2016-01-26 Microsoft Technology Licensing, Llc Communication context based predictive-text suggestion
US20140163951A1 (en) 2012-12-07 2014-06-12 Xerox Corporation Hybrid adaptation of named entity recognition
KR102091003B1 (ko) 2012-12-10 2020-03-19 삼성전자 주식회사 음성인식 기술을 이용한 상황 인식 서비스 제공 방법 및 장치
US9471559B2 (en) 2012-12-10 2016-10-18 International Business Machines Corporation Deep analysis of natural language questions for question answering system
WO2014093339A1 (en) 2012-12-11 2014-06-19 Nuance Communications, Inc. System and methods for virtual agent recommendation for multiple persons
US9704486B2 (en) 2012-12-11 2017-07-11 Amazon Technologies, Inc. Speech recognition power management
US20140164532A1 (en) 2012-12-11 2014-06-12 Nuance Communications, Inc. Systems and methods for virtual agent participation in multiparty conversation
US9148394B2 (en) 2012-12-11 2015-09-29 Nuance Communications, Inc. Systems and methods for user interface presentation of virtual agent
US9276802B2 (en) 2012-12-11 2016-03-01 Nuance Communications, Inc. Systems and methods for sharing information between virtual agents
US20140164953A1 (en) 2012-12-11 2014-06-12 Nuance Communications, Inc. Systems and methods for invoking virtual agent
US9659298B2 (en) 2012-12-11 2017-05-23 Nuance Communications, Inc. Systems and methods for informing virtual agent recommendation
US9697827B1 (en) 2012-12-11 2017-07-04 Amazon Technologies, Inc. Error reduction in speech processing
US9679300B2 (en) 2012-12-11 2017-06-13 Nuance Communications, Inc. Systems and methods for virtual agent recommendation for multiple persons
US9190057B2 (en) 2012-12-12 2015-11-17 Amazon Technologies, Inc. Speech model retrieval in distributed speech recognition systems
US9117450B2 (en) 2012-12-12 2015-08-25 Nuance Communications, Inc. Combining re-speaking, partial agent transcription and ASR for improved accuracy / human guided ASR
US9185742B2 (en) 2012-12-13 2015-11-10 Google Technology Holdings LLC System and methods for a cloud based wireless personal area network service enabling context activity handoffs between devices
KR102090269B1 (ko) 2012-12-14 2020-03-17 삼성전자주식회사 정보 검색 방법, 그와 같은 기능을 갖는 디바이스 및 기록 매체
KR102014778B1 (ko) 2012-12-14 2019-08-27 엘지전자 주식회사 텍스트 메시징 서비스를 제공하는 디지털 디바이스 및 그 제어 방법
US9141660B2 (en) 2012-12-17 2015-09-22 International Business Machines Corporation Intelligent evidence classification and notification in a deep question answering system
US9213754B1 (en) 2012-12-17 2015-12-15 Google Inc. Personalizing content items
CN103870168A (zh) * 2012-12-17 2014-06-18 北京千橡网景科技发展有限公司 利用锁屏获取信息的方法和设备
WO2014098477A1 (ko) 2012-12-18 2014-06-26 삼성전자 주식회사 홈 네트워크 시스템에서 홈 디바이스를 원격으로 제어하는 방법 및 장치
US9070366B1 (en) 2012-12-19 2015-06-30 Amazon Technologies, Inc. Architecture for multi-domain utterance processing
US9098467B1 (en) 2012-12-19 2015-08-04 Rawles Llc Accepting voice commands based on user identity
US8977555B2 (en) 2012-12-20 2015-03-10 Amazon Technologies, Inc. Identification of utterance subjects
US8645138B1 (en) 2012-12-20 2014-02-04 Google Inc. Two-pass decoding for speech recognition of search and action requests
US20140179295A1 (en) 2012-12-20 2014-06-26 Enno Luebbers Deriving environmental context and actions from ad-hoc state broadcast
WO2014096506A1 (en) 2012-12-21 2014-06-26 Nokia Corporation Method, apparatus, and computer program product for personalizing speech recognition
KR20140082157A (ko) 2012-12-24 2014-07-02 한국전자통신연구원 다중 음향 모델을 이용하여 음성을 인식하기 위한 장치 및 그 방법
JP2014126600A (ja) 2012-12-25 2014-07-07 Panasonic Corp 音声認識装置、音声認識方法、およびテレビ
JP2014124332A (ja) 2012-12-26 2014-07-07 Daiichi Shokai Co Ltd 遊技機
KR101905174B1 (ko) 2012-12-29 2018-10-08 애플 인크. 사용자 인터페이스 계층을 내비게이션하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스
CN105144057B (zh) 2012-12-29 2019-05-17 苹果公司 用于根据具有模拟三维特征的控制图标的外观变化来移动光标的设备、方法和图形用户界面
JP6093877B2 (ja) 2012-12-29 2017-03-08 アップル インコーポレイテッド 複数接触ジェスチャのために触知出力の生成を見合わせるためのデバイス、方法、及びグラフィカルユーザインタフェース
JP6097843B2 (ja) 2012-12-29 2017-03-15 アップル インコーポレイテッド コンテンツをスクロールするか選択するかを判定するためのデバイス、方法、及びグラフィカルユーザインタフェース
US8571851B1 (en) 2012-12-31 2013-10-29 Google Inc. Semantic interpretation using user gaze order
CN103049567A (zh) 2012-12-31 2013-04-17 威盛电子股份有限公司 检索方法、检索系统以及自然语言理解系统
CN103020047A (zh) 2012-12-31 2013-04-03 威盛电子股份有限公司 修正语音应答的方法及自然语言对话系统
CN103021403A (zh) 2012-12-31 2013-04-03 威盛电子股份有限公司 基于语音识别的选择方法及其移动终端装置及信息系统
CN103902630B (zh) 2012-12-31 2017-08-18 华为技术有限公司 处理消息的方法、终端和系统
CN103077165A (zh) 2012-12-31 2013-05-01 威盛电子股份有限公司 自然语言对话方法及其系统
KR20140088449A (ko) 2013-01-02 2014-07-10 엘지전자 주식회사 중앙 제어 장치 및 그것의 제어 방법
KR101892734B1 (ko) 2013-01-04 2018-08-28 한국전자통신연구원 음성 인식 시스템에서의 오류 수정 방법 및 그 장치
US9497137B2 (en) 2013-01-04 2016-11-15 Sookbox, LLC Digital content connectivity and control via a plurality of controllers that are treated discriminatively
KR20140089862A (ko) 2013-01-07 2014-07-16 삼성전자주식회사 디스플레이 장치 및 그의 제어 방법
KR20140093303A (ko) 2013-01-07 2014-07-28 삼성전자주식회사 디스플레이 장치 및 그의 제어 방법
US20140195233A1 (en) 2013-01-08 2014-07-10 Spansion Llc Distributed Speech Recognition System
JPWO2014109104A1 (ja) 2013-01-08 2017-01-19 クラリオン株式会社 音声認識装置、音声認識プログラム及び音声認識方法
DE112013006384T5 (de) 2013-01-09 2015-09-24 Mitsubishi Electric Corporation Spracherkennungsvorrichtung und Anzeigeverfahren
US20140198047A1 (en) 2013-01-14 2014-07-17 Nuance Communications, Inc. Reducing error rates for touch based keyboards
US8731912B1 (en) 2013-01-16 2014-05-20 Google Inc. Delaying audio notifications
US9292489B1 (en) 2013-01-16 2016-03-22 Google Inc. Sub-lexical language models with word level pronunciation lexicons
US8942674B2 (en) 2013-01-18 2015-01-27 Blackberry Limited Responding to incoming calls
US9047274B2 (en) 2013-01-21 2015-06-02 Xerox Corporation Machine translation-driven authoring system and method
JP2014140121A (ja) 2013-01-21 2014-07-31 Sharp Corp 会議支援システム
US20140203939A1 (en) 2013-01-21 2014-07-24 Rtc Inc. Control and monitoring of light-emitting-diode (led) bulbs
US9148499B2 (en) 2013-01-22 2015-09-29 Blackberry Limited Method and system for automatically identifying voice tags through user operation
EP2760015A1 (en) 2013-01-23 2014-07-30 BlackBerry Limited Event-triggered hands-free multitasking for media playback
US9530409B2 (en) 2013-01-23 2016-12-27 Blackberry Limited Event-triggered hands-free multitasking for media playback
CN103971680B (zh) 2013-01-24 2018-06-05 华为终端(东莞)有限公司 一种语音识别的方法、装置
US9165566B2 (en) 2013-01-24 2015-10-20 Microsoft Technology Licensing, Llc Indefinite speech inputs
DE102013001219B4 (de) 2013-01-25 2019-08-29 Inodyn Newmedia Gmbh Verfahren und System zur Sprachaktivierung eines Software-Agenten aus einem Standby-Modus
JP2014142566A (ja) 2013-01-25 2014-08-07 Alpine Electronics Inc 音声認識システムおよび音声認識方法
JP6251958B2 (ja) 2013-01-28 2017-12-27 富士通株式会社 発話解析装置、音声対話制御装置、方法、及びプログラム
US9971495B2 (en) 2013-01-28 2018-05-15 Nook Digital, Llc Context based gesture delineation for user interaction in eyes-free mode
JP6115152B2 (ja) 2013-01-29 2017-04-19 コニカミノルタ株式会社 情報処理システム、情報処理装置、情報処理端末及びプログラム
KR20140098947A (ko) 2013-01-31 2014-08-11 삼성전자주식회사 광고 제공 시스템, 사용자 단말 및 광고 제공 방법
WO2014119889A1 (en) * 2013-01-31 2014-08-07 Samsung Electronics Co., Ltd. Method of displaying user interface on device, and device
JP2014150323A (ja) 2013-01-31 2014-08-21 Sharp Corp 文字入力装置
US10055091B2 (en) 2013-02-01 2018-08-21 Microsoft Technology Licensing, Llc Autosave and manual save modes for software applications
US20140222435A1 (en) 2013-02-01 2014-08-07 Telenav, Inc. Navigation system with user dependent language mechanism and method of operation thereof
US9292492B2 (en) 2013-02-04 2016-03-22 Microsoft Technology Licensing, Llc Scaling statistical language understanding systems across domains and intents
US20140218372A1 (en) 2013-02-05 2014-08-07 Apple Inc. Intelligent digital assistant in a desktop environment
US8694315B1 (en) 2013-02-05 2014-04-08 Visa International Service Association System and method for authentication using speaker verification techniques and fraud model
EP2954685A4 (en) 2013-02-07 2016-09-14 Opanga Networks Inc TRANSPARENT MULTIMEDIA ELEMENT DISTRIBUTION AND REPRESENTATIVE
DE112014000709B4 (de) 2013-02-07 2021-12-30 Apple Inc. Verfahren und vorrichtung zum betrieb eines sprachtriggers für einen digitalen assistenten
US20140223481A1 (en) 2013-02-07 2014-08-07 United Video Properties, Inc. Systems and methods for updating a search request
US9519858B2 (en) 2013-02-10 2016-12-13 Microsoft Technology Licensing, Llc Feature-augmented neural networks and applications of same
US9408040B2 (en) 2013-02-14 2016-08-02 Fuji Xerox Co., Ltd. Systems and methods for room-level location using WiFi
US9842489B2 (en) 2013-02-14 2017-12-12 Google Llc Waking other devices for additional data
US9791921B2 (en) 2013-02-19 2017-10-17 Microsoft Technology Licensing, Llc Context-aware augmented reality object commands
US10078437B2 (en) 2013-02-20 2018-09-18 Blackberry Limited Method and apparatus for responding to a notification via a capacitive physical keyboard
US9019129B2 (en) 2013-02-21 2015-04-28 Apple Inc. Vehicle location in weak location signal scenarios
US9080878B2 (en) 2013-02-21 2015-07-14 Apple Inc. Automatic identification of vehicle location
US9621619B2 (en) 2013-02-21 2017-04-11 International Business Machines Corporation Enhanced notification for relevant communications
US20140236986A1 (en) 2013-02-21 2014-08-21 Apple Inc. Natural language document search
US9734819B2 (en) 2013-02-21 2017-08-15 Google Technology Holdings LLC Recognizing accented speech
US9672822B2 (en) 2013-02-22 2017-06-06 Next It Corporation Interaction with a portion of a content item through a virtual assistant
US9484023B2 (en) 2013-02-22 2016-11-01 International Business Machines Corporation Conversion of non-back-off language models for efficient speech decoding
US20140245140A1 (en) 2013-02-22 2014-08-28 Next It Corporation Virtual Assistant Transfer between Smart Devices
US9414004B2 (en) 2013-02-22 2016-08-09 The Directv Group, Inc. Method for combining voice signals to form a continuous conversation in performing a voice search
CN104007832B (zh) 2013-02-25 2017-09-01 上海触乐信息科技有限公司 连续滑行输入文本的方法、系统及设备
US9172747B2 (en) 2013-02-25 2015-10-27 Artificial Solutions Iberia SL System and methods for virtual assistant networks
US9865266B2 (en) 2013-02-25 2018-01-09 Nuance Communications, Inc. Method and apparatus for automated speaker parameters adaptation in a deployed speaker verification system
US9330659B2 (en) 2013-02-25 2016-05-03 Microsoft Technology Licensing, Llc Facilitating development of a spoken natural language interface
US20140304086A1 (en) 2013-02-25 2014-10-09 Turn Inc. Methods and systems for modeling campaign goal adjustment
KR101383552B1 (ko) 2013-02-25 2014-04-10 미디어젠(주) 다중 명령어가 포함된 단일 문장의 음성인식방법
US9280981B2 (en) 2013-02-27 2016-03-08 Blackberry Limited Method and apparatus for voice control of a mobile device
US10354677B2 (en) 2013-02-28 2019-07-16 Nuance Communications, Inc. System and method for identification of intent segment(s) in caller-agent conversations
US9218819B1 (en) 2013-03-01 2015-12-22 Google Inc. Customizing actions based on contextual data and voice-based inputs
US9691382B2 (en) 2013-03-01 2017-06-27 Mediatek Inc. Voice control device and method for deciding response of voice control according to recognized speech command and detection output derived from processing sensor data
US9251467B2 (en) 2013-03-03 2016-02-02 Microsoft Technology Licensing, Llc Probabilistic parsing
US9460715B2 (en) 2013-03-04 2016-10-04 Amazon Technologies, Inc. Identification using audio signatures and additional characteristics
US9886968B2 (en) 2013-03-04 2018-02-06 Synaptics Incorporated Robust speech boundary detection system and method
US9554050B2 (en) 2013-03-04 2017-01-24 Apple Inc. Mobile device using images and location for reminders
US9293129B2 (en) 2013-03-05 2016-03-22 Microsoft Technology Licensing, Llc Speech recognition assisted evaluation on text-to-speech pronunciation issue detection
KR101952179B1 (ko) 2013-03-05 2019-05-22 엘지전자 주식회사 이동 단말기 및 그것의 제어방법
US9454957B1 (en) 2013-03-05 2016-09-27 Amazon Technologies, Inc. Named entity resolution in spoken language processing
US10223411B2 (en) 2013-03-06 2019-03-05 Nuance Communications, Inc. Task assistant utilizing context for improved interaction
CN104038621A (zh) 2013-03-06 2014-09-10 三星电子(中国)研发中心 在通信终端中管理事件信息的装置及方法
US10795528B2 (en) 2013-03-06 2020-10-06 Nuance Communications, Inc. Task assistant having multiple visual displays
US9313261B2 (en) 2013-03-07 2016-04-12 Qualcomm Incorporated System and methods of transferring tasks from a first mobile device to a second mobile device
US20140279622A1 (en) 2013-03-08 2014-09-18 Sudhakar Bharadwaj System and method for semantic processing of personalized social data and generating probability models of personal context to generate recommendations in searching applications
US9496968B2 (en) 2013-03-08 2016-11-15 Google Inc. Proximity detection by mobile devices
US9990611B2 (en) 2013-03-08 2018-06-05 Baydin, Inc. Systems and methods for incorporating calendar functionality into electronic messages
US20140257902A1 (en) 2013-03-08 2014-09-11 Baydin, Inc. Systems and methods for incorporating calendar functionality into electronic messages
KR102113272B1 (ko) * 2013-03-11 2020-06-02 삼성전자주식회사 전자장치에서 복사/붙여넣기 방법 및 장치
US8964947B1 (en) 2013-03-11 2015-02-24 Amazon Technologies, Inc. Approaches for sharing data between electronic devices
US9761225B2 (en) 2013-03-11 2017-09-12 Nuance Communications, Inc. Semantic re-ranking of NLU results in conversational dialogue applications
US9076459B2 (en) 2013-03-12 2015-07-07 Intermec Ip, Corp. Apparatus and method to classify sound to detect speech
US10229697B2 (en) 2013-03-12 2019-03-12 Google Technology Holdings LLC Apparatus and method for beamforming to obtain voice and noise signals
US9129013B2 (en) 2013-03-12 2015-09-08 Nuance Communications, Inc. Methods and apparatus for entity detection
US9112984B2 (en) 2013-03-12 2015-08-18 Nuance Communications, Inc. Methods and apparatus for detecting a voice command
US11393461B2 (en) 2013-03-12 2022-07-19 Cerence Operating Company Methods and apparatus for detecting a voice command
US9477753B2 (en) 2013-03-12 2016-10-25 International Business Machines Corporation Classifier-based system combination for spoken term detection
US9361885B2 (en) 2013-03-12 2016-06-07 Nuance Communications, Inc. Methods and apparatus for detecting a voice command
CN105009203A (zh) 2013-03-12 2015-10-28 纽昂斯通讯公司 用于检测语音命令的方法和装置
US9135248B2 (en) 2013-03-13 2015-09-15 Arris Technology, Inc. Context demographic determination system
US10219100B2 (en) 2013-03-13 2019-02-26 Aliphcom Determining proximity for devices interacting with media devices
US9378739B2 (en) 2013-03-13 2016-06-28 Nuance Communications, Inc. Identifying corresponding positions in different representations of a textual work
US9282423B2 (en) 2013-03-13 2016-03-08 Aliphcom Proximity and interface controls of media devices for media presentations
US20140274005A1 (en) 2013-03-13 2014-09-18 Aliphcom Intelligent connection management in wireless devices
US9514741B2 (en) 2013-03-13 2016-12-06 Nuance Communications, Inc. Data shredding for speech recognition acoustic model training under data retention restrictions
US20140278349A1 (en) 2013-03-14 2014-09-18 Microsoft Corporation Language Model Dictionaries for Text Predictions
US9842584B1 (en) 2013-03-14 2017-12-12 Amazon Technologies, Inc. Providing content on multiple devices
KR20140112910A (ko) 2013-03-14 2014-09-24 삼성전자주식회사 입력 제어 방법 및 이를 지원하는 전자 장치
US10133546B2 (en) 2013-03-14 2018-11-20 Amazon Technologies, Inc. Providing content on multiple devices
WO2014160309A1 (en) 2013-03-14 2014-10-02 Advanced Search Laboratories, Inc. Method and apparatus for human-machine interaction
US10642574B2 (en) 2013-03-14 2020-05-05 Apple Inc. Device, method, and graphical user interface for outputting captions
US9524489B2 (en) 2013-03-14 2016-12-20 Samsung Electronics Co., Ltd. Computing system with task transfer mechanism and method of operation thereof
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
US9247309B2 (en) 2013-03-14 2016-01-26 Google Inc. Methods, systems, and media for presenting mobile content corresponding to media content
US9733821B2 (en) 2013-03-14 2017-08-15 Apple Inc. Voice control to diagnose inadvertent activation of accessibility features
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10572476B2 (en) 2013-03-14 2020-02-25 Apple Inc. Refining a search based on schedule items
US9189196B2 (en) 2013-03-14 2015-11-17 Google Inc. Compartmentalized self registration of external devices
US9123345B2 (en) 2013-03-14 2015-09-01 Honda Motor Co., Ltd. Voice interface systems and methods
US20140267599A1 (en) 2013-03-14 2014-09-18 360Brandvision, Inc. User interaction with a holographic poster via a secondary mobile device
US9977779B2 (en) 2013-03-14 2018-05-22 Apple Inc. Automatic supplementation of word correction dictionaries
US9201865B2 (en) 2013-03-15 2015-12-01 Bao Tran Automated assistance for user request that determines semantics by domain, task, and parameter
US20140279787A1 (en) * 2013-03-15 2014-09-18 Ximplar Limited Systems And Methods for an Adaptive Application Recommender
KR101857648B1 (ko) 2013-03-15 2018-05-15 애플 인크. 지능형 디지털 어시스턴트에 의한 사용자 트레이닝
US20140267933A1 (en) 2013-03-15 2014-09-18 Toshiba America Information Systems, Inc. Electronic Device with Embedded Macro-Command Functionality
US10078487B2 (en) 2013-03-15 2018-09-18 Apple Inc. Context-sensitive handling of interruptions
US20160132046A1 (en) 2013-03-15 2016-05-12 Fisher-Rosemount Systems, Inc. Method and apparatus for controlling a process plant with wearable mobile control devices
US20140282203A1 (en) 2013-03-15 2014-09-18 Research In Motion Limited System and method for predictive text input
WO2014143959A2 (en) 2013-03-15 2014-09-18 Bodhi Technology Ventures Llc Volume control for mobile device using a wireless device
US9378065B2 (en) 2013-03-15 2016-06-28 Advanced Elemental Technologies, Inc. Purposeful computing
US9886160B2 (en) 2013-03-15 2018-02-06 Google Llc Managing audio at the tab level for user notification and control
EP4012719A1 (en) 2013-03-15 2022-06-15 Adityo Prakash Systems and methods for facilitating integrated behavioral support
US9189157B2 (en) 2013-03-15 2015-11-17 Blackberry Limited Method and apparatus for word prediction selection
US20140282178A1 (en) 2013-03-15 2014-09-18 Microsoft Corporation Personalized community model for surfacing commands within productivity application user interfaces
US9299041B2 (en) 2013-03-15 2016-03-29 Business Objects Software Ltd. Obtaining data from unstructured data for a structured data collection
US10638198B2 (en) 2013-03-15 2020-04-28 Ebay Inc. Shoppable video
EP3101392B1 (en) 2013-03-15 2021-12-15 Apple Inc. Mapping application with turn-by-turn navigation mode for output to vehicle display
US9558743B2 (en) 2013-03-15 2017-01-31 Google Inc. Integration of semantic context information
US20140365505A1 (en) 2013-06-08 2014-12-11 Apple Inc. Harvesting Addresses
US10748529B1 (en) 2013-03-15 2020-08-18 Apple Inc. Voice activated device for use with a voice-based digital assistant
JP6151381B2 (ja) 2013-03-15 2017-06-21 グーグル インコーポレイテッド 国際言語のための仮想キーボード入力
US9176649B2 (en) 2013-03-15 2015-11-03 American Megatrends, Inc. Method and apparatus of remote management of computer system using voice and gesture based input
US9317585B2 (en) 2013-03-15 2016-04-19 Google Inc. Search query suggestions based on personal information
US9631930B2 (en) 2013-03-15 2017-04-25 Apple Inc. Warning for frequently traveled trips based on traffic
US20150314454A1 (en) 2013-03-15 2015-11-05 JIBO, Inc. Apparatus and methods for providing a persistent companion device
WO2014144579A1 (en) 2013-03-15 2014-09-18 Apple Inc. System and method for updating an adaptive speech recognition model
AU2014233517B2 (en) 2013-03-15 2017-05-25 Apple Inc. Training an at least partial voice command system
US9305374B2 (en) 2013-03-15 2016-04-05 Apple Inc. Device, method, and graphical user interface for adjusting the appearance of a control
US20140288939A1 (en) 2013-03-20 2014-09-25 Navteq B.V. Method and apparatus for optimizing timing of audio commands based on recognized audio patterns
JP5873038B2 (ja) 2013-03-21 2016-03-01 株式会社ゼンリンデータコム ナビゲーション装置
US9479499B2 (en) 2013-03-21 2016-10-25 Tencent Technology (Shenzhen) Company Limited Method and apparatus for identity authentication via mobile capturing code
US20140298395A1 (en) 2013-03-27 2014-10-02 Tencent Technology (Shenzhen) Company Limited Methods and systems for playing video on multiple terminals
JP6115941B2 (ja) 2013-03-28 2017-04-19 Kddi株式会社 対話シナリオにユーザ操作を反映させる対話プログラム、サーバ及び方法
JP6221301B2 (ja) 2013-03-28 2017-11-01 富士通株式会社 音声処理装置、音声処理システムおよび音声処理方法
CN103236260B (zh) 2013-03-29 2015-08-12 京东方科技集团股份有限公司 语音识别系统
EP2784774A1 (en) 2013-03-29 2014-10-01 Orange Telephone voice personnal assistant
KR102050814B1 (ko) 2013-04-02 2019-12-02 삼성전자주식회사 그룹 대화에서 사적 대화 제공 장치 및 방법
JP2014203207A (ja) 2013-04-03 2014-10-27 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US9462115B2 (en) 2013-04-04 2016-10-04 James S. Rand Unified communications system and method
JP6023874B2 (ja) * 2013-04-04 2016-11-09 パイオニア株式会社 表示制御装置、表示制御方法、表示制御プログラムおよびコンピュータが読み取り可能な記録媒体
US9300718B2 (en) 2013-04-09 2016-03-29 Avaya Inc. System and method for keyword-based notification and delivery of content
CN103198831A (zh) 2013-04-10 2013-07-10 威盛电子股份有限公司 语音操控方法与移动终端装置
US10564815B2 (en) 2013-04-12 2020-02-18 Nant Holdings Ip, Llc Virtual teller systems and methods
US10027723B2 (en) 2013-04-12 2018-07-17 Provenance Asset Group Llc Method and apparatus for initiating communication and sharing of content among a plurality of devices
US9875494B2 (en) 2013-04-16 2018-01-23 Sri International Using intents to analyze and personalize a user's dialog experience with a virtual personal assistant
WO2014172494A1 (en) 2013-04-16 2014-10-23 Imageware Systems, Inc. Conditional and situational biometric authentication and enrollment
US8825474B1 (en) 2013-04-16 2014-09-02 Google Inc. Text suggestion output using past interaction data
US20150193392A1 (en) 2013-04-17 2015-07-09 Google Inc. User Interface for Quickly Checking Agenda and Creating New Events
US9760644B2 (en) 2013-04-17 2017-09-12 Google Inc. Embedding event creation link in a document
NL2010662C2 (en) 2013-04-18 2014-10-21 Bosch Gmbh Robert Remote maintenance.
US10445115B2 (en) 2013-04-18 2019-10-15 Verint Americas Inc. Virtual assistant focused user interfaces
US9075435B1 (en) 2013-04-22 2015-07-07 Amazon Technologies, Inc. Context-aware notifications
US20140315492A1 (en) 2013-04-22 2014-10-23 Salesforce.Com, Inc. Content delivery to a secondary device via a primary device
US9177318B2 (en) 2013-04-22 2015-11-03 Palo Alto Research Center Incorporated Method and apparatus for customizing conversation agents based on user characteristics using a relevance score for automatic statements, and a response prediction function
US9110889B2 (en) 2013-04-23 2015-08-18 Facebook, Inc. Methods and systems for generation of flexible sentences in a social networking system
CN104125322A (zh) 2013-04-24 2014-10-29 腾讯科技(深圳)有限公司 来电和短信控制方法及移动终端
DE102013007502A1 (de) 2013-04-25 2014-10-30 Elektrobit Automotive Gmbh Computer-implementiertes Verfahren zum automatischen Trainieren eins Dialogsystems und Dialogsystem zur Erzeugung von semantischen Annotationen
CN103280217B (zh) 2013-05-02 2016-05-04 锤子科技(北京)有限公司 一种移动终端的语音识别方法及其装置
US9472205B2 (en) 2013-05-06 2016-10-18 Honeywell International Inc. Device voice recognition systems and methods
US9384751B2 (en) 2013-05-06 2016-07-05 Honeywell International Inc. User authentication of voice controlled devices
KR20140132246A (ko) 2013-05-07 2014-11-17 삼성전자주식회사 오브젝트 선택 방법 및 오브젝트 선택 장치
US9064495B1 (en) 2013-05-07 2015-06-23 Amazon Technologies, Inc. Measurement of user perceived latency in a cloud based speech application
US20140337621A1 (en) 2013-05-07 2014-11-13 Serguei Nakhimov Wearable communication device, security complex and user interface
PT2994908T (pt) 2013-05-07 2019-10-18 Veveo Inc Interface de entrada incremental de discurso com retorno em tempo real
US9223898B2 (en) 2013-05-08 2015-12-29 Facebook, Inc. Filtering suggested structured queries on online social networks
US9923849B2 (en) 2013-05-09 2018-03-20 Ebay Inc. System and method for suggesting a phrase based on a context
EP2801974A3 (en) 2013-05-09 2015-02-18 DSP Group Ltd. Low power activation of a voice activated device
US9081411B2 (en) 2013-05-10 2015-07-14 Sri International Rapid development of virtual personal assistant applications
JP2014219614A (ja) 2013-05-10 2014-11-20 アルパイン株式会社 オーディオ装置、ビデオ装置及びコンピュータプログラム
US9489625B2 (en) 2013-05-10 2016-11-08 Sri International Rapid development of virtual personal assistant applications
US20140337751A1 (en) 2013-05-13 2014-11-13 Microsoft Corporation Automatic creation of calendar items
CN103246638B (zh) 2013-05-13 2017-09-01 小米科技有限责任公司 一种信息粘贴方法和装置
US20140343943A1 (en) 2013-05-14 2014-11-20 Saudi Arabian Oil Company Systems, Computer Medium and Computer-Implemented Methods for Authenticating Users Using Voice Streams
US9293138B2 (en) 2013-05-14 2016-03-22 Amazon Technologies, Inc. Storing state information from network-based user devices
US8918272B2 (en) * 2013-05-14 2014-12-23 Sony Corporation Method and apparatus for finding a lost vehicle
US20140347181A1 (en) 2013-05-21 2014-11-27 Michael Edward Smith Luna Sensor-enabled media device
US20140344205A1 (en) 2013-05-15 2014-11-20 Aliphcom Smart media device ecosystem using local and remote data sources
US9495266B2 (en) 2013-05-16 2016-11-15 Advantest Corporation Voice recognition virtual test engineering assistant
KR101334342B1 (ko) 2013-05-16 2013-11-29 주식회사 네오패드 문자 입력 장치 및 문자 입력 방법
US9514470B2 (en) 2013-05-16 2016-12-06 Microsoft Technology Licensing, Llc Enhanced search suggestion for personal information services
CN105122181B (zh) 2013-05-16 2018-12-18 英特尔公司 用于基于情景的自然用户接口输入的技术
US9432499B2 (en) 2013-05-18 2016-08-30 Loralee Hajdu Peripheral specific selection of automated response messages
WO2014189486A1 (en) 2013-05-20 2014-11-27 Intel Corporation Natural human-computer interaction for virtual personal assistant systems
US9466294B1 (en) 2013-05-21 2016-10-11 Amazon Technologies, Inc. Dialog management system
US9188445B2 (en) 2013-05-21 2015-11-17 Honda Motor Co., Ltd. System and method for storing and recalling location data
US20150199077A1 (en) 2013-05-23 2015-07-16 Google Inc. Scheduling and viewing a calender event using time zones based on a user's location at event time
US20140350933A1 (en) 2013-05-24 2014-11-27 Samsung Electronics Co., Ltd. Voice recognition apparatus and control method thereof
US9747900B2 (en) 2013-05-24 2017-08-29 Google Technology Holdings LLC Method and apparatus for using image data to aid voice recognition
US20140351760A1 (en) 2013-05-24 2014-11-27 Google Inc. Order-independent text input
US9710147B2 (en) 2013-05-29 2017-07-18 Lg Electronics Inc. Mobile terminal and controlling method thereof
US20140358523A1 (en) 2013-05-30 2014-12-04 Wright State University Topic-specific sentiment extraction
US20140358519A1 (en) 2013-06-03 2014-12-04 Xerox Corporation Confidence-driven rewriting of source texts for improved translation
US10282213B2 (en) 2013-06-03 2019-05-07 Avaya Inc. System and method for conversational configuration of applications
US20140359637A1 (en) 2013-06-03 2014-12-04 Microsoft Corporation Task continuance across devices
US9294455B2 (en) 2013-06-04 2016-03-22 Google Inc. Maintaining video conference session continuity during transfer of session to alternative device
US9286029B2 (en) 2013-06-06 2016-03-15 Honda Motor Co., Ltd. System and method for multimodal human-vehicle interaction and belief tracking
WO2014197336A1 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
WO2014197334A2 (en) 2013-06-07 2014-12-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
US9267805B2 (en) 2013-06-07 2016-02-23 Apple Inc. Modeling significant locations
KR102369784B1 (ko) 2013-06-07 2022-03-03 애플 인크. 지능형 자동 어시스턴트
KR101947229B1 (ko) * 2013-06-08 2019-02-12 애플 인크. 2개 이상의 디스플레이들을 동기화하기 위한 디바이스, 방법, 및 그래픽 사용자 인터페이스
CN110248019B (zh) 2013-06-08 2022-04-26 苹果公司 用于启用语音的对话界面的方法、计算机存储介质和设备
WO2014197335A1 (en) 2013-06-08 2014-12-11 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US9495620B2 (en) 2013-06-09 2016-11-15 Apple Inc. Multi-script handwriting recognition using a universal recognizer
EP3937002A1 (en) 2013-06-09 2022-01-12 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10481769B2 (en) 2013-06-09 2019-11-19 Apple Inc. Device, method, and graphical user interface for providing navigation and search functionalities
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US9477393B2 (en) 2013-06-09 2016-10-25 Apple Inc. Device, method, and graphical user interface for displaying application status information
JP6534926B2 (ja) 2013-06-10 2019-06-26 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 話者識別方法、話者識別装置及び話者識別システム
KR20140144104A (ko) 2013-06-10 2014-12-18 삼성전자주식회사 전자기기 및 이의 서비스 제공 방법
US20140365878A1 (en) * 2013-06-10 2014-12-11 Microsoft Corporation Shape writing ink trace prediction
US9892115B2 (en) 2013-06-11 2018-02-13 Facebook, Inc. Translation training with cross-lingual multi-media support
US9449600B2 (en) 2013-06-11 2016-09-20 Plantronics, Inc. Character data entry
US9508040B2 (en) 2013-06-12 2016-11-29 Microsoft Technology Licensing, Llc Predictive pre-launch for applications
US9501585B1 (en) 2013-06-13 2016-11-22 DataRPM Corporation Methods and system for providing real-time business intelligence using search-based analytics engine
AU2014278595B2 (en) 2013-06-13 2017-04-06 Apple Inc. System and method for emergency calls initiated by voice command
US9311414B2 (en) 2013-06-14 2016-04-12 Google Inc. Systems and methods of selecting content based on aggregate entity co-occurrence
CN103292437B (zh) 2013-06-17 2016-01-20 广东美的制冷设备有限公司 语音交互式空调器及其控制方法
US9728184B2 (en) 2013-06-18 2017-08-08 Microsoft Technology Licensing, Llc Restructuring deep neural network acoustic models
JP6084123B2 (ja) * 2013-06-18 2017-02-22 株式会社Nttドコモ サーバ装置、表示制御方法及びプログラム
US9437186B1 (en) 2013-06-19 2016-09-06 Amazon Technologies, Inc. Enhanced endpoint detection for speech recognition
USRE49014E1 (en) 2013-06-19 2022-04-05 Panasonic Intellectual Property Corporation Of America Voice interaction method, and device
US9633317B2 (en) 2013-06-20 2017-04-25 Viv Labs, Inc. Dynamically evolving cognitive architecture system based on a natural language intent interpreter
US10474961B2 (en) 2013-06-20 2019-11-12 Viv Labs, Inc. Dynamically evolving cognitive architecture system based on prompting for additional user input
US20140379334A1 (en) 2013-06-20 2014-12-25 Qnx Software Systems Limited Natural language understanding automatic speech recognition post processing
KR102160767B1 (ko) 2013-06-20 2020-09-29 삼성전자주식회사 제스처를 감지하여 기능을 제어하는 휴대 단말 및 방법
KR20140147587A (ko) 2013-06-20 2014-12-30 한국전자통신연구원 Wfst를 이용한 음성 끝점 검출 장치 및 방법
US9311298B2 (en) 2013-06-21 2016-04-12 Microsoft Technology Licensing, Llc Building conversational understanding systems using a toolset
US10051072B2 (en) 2013-06-21 2018-08-14 Google Llc Detecting co-presence in the physical world
JP6171617B2 (ja) 2013-06-24 2017-08-02 日本電気株式会社 応答対象音声判定装置、応答対象音声判定方法および応答対象音声判定プログラム
US10496743B2 (en) 2013-06-26 2019-12-03 Nuance Communications, Inc. Methods and apparatus for extracting facts from a medical text
JP2015012301A (ja) * 2013-06-26 2015-01-19 京セラ株式会社 携帯電話機、携帯端末、音声操作プログラムおよび音声操作方法
US8947596B2 (en) 2013-06-27 2015-02-03 Intel Corporation Alignment of closed captions
US9747899B2 (en) 2013-06-27 2017-08-29 Amazon Technologies, Inc. Detecting self-generated wake expressions
US20150006148A1 (en) 2013-06-27 2015-01-01 Microsoft Corporation Automatically Creating Training Data For Language Identifiers
US9741339B2 (en) 2013-06-28 2017-08-22 Google Inc. Data driven word pronunciation learning and scoring with crowd sourcing based on the word's phonemes pronunciation scores
WO2014210429A1 (en) 2013-06-28 2014-12-31 Harman International Industries, Inc. Wireless control of linked devices
JP6353199B2 (ja) 2013-07-01 2018-07-04 株式会社 ミックウェア 情報処理装置、情報処理方法、およびプログラム
US9646606B2 (en) 2013-07-03 2017-05-09 Google Inc. Speech recognition using domain knowledge
JP2015014960A (ja) * 2013-07-05 2015-01-22 ソニー株式会社 情報処理装置、および記憶媒体
JP6102588B2 (ja) 2013-07-10 2017-03-29 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
US9396727B2 (en) 2013-07-10 2016-07-19 GM Global Technology Operations LLC Systems and methods for spoken dialog service arbitration
DE102014109121B4 (de) 2013-07-10 2023-05-04 Gm Global Technology Operations, Llc Systeme und Verfahren zur Arbitrierung eines Sprachdialogdienstes
CN103365279A (zh) 2013-07-10 2013-10-23 崔海伟 智能家居系统的状态反馈系统、方法及状态检测装置
WO2015006196A1 (en) 2013-07-11 2015-01-15 Mophie, Inc. Method and system for communicatively coupling a wearable computer with one or more non-wearable computers
CN110096253B (zh) 2013-07-11 2022-08-30 英特尔公司 利用相同的音频输入的设备唤醒和说话者验证
TWI508057B (zh) 2013-07-15 2015-11-11 Chunghwa Picture Tubes Ltd 語音辨識系統以及方法
US9711148B1 (en) 2013-07-18 2017-07-18 Google Inc. Dual model speaker identification
US9311912B1 (en) 2013-07-22 2016-04-12 Amazon Technologies, Inc. Cost efficient distributed text-to-speech processing
US9407950B2 (en) 2013-07-23 2016-08-02 Microsoft Technology Licensing, Llc Controlling devices in entertainment environment
US20150032238A1 (en) 2013-07-23 2015-01-29 Motorola Mobility Llc Method and Device for Audio Input Routing
US9772994B2 (en) 2013-07-25 2017-09-26 Intel Corporation Self-learning statistical natural language processing for automatic production of virtual personal assistants
CN103412789B (zh) 2013-07-26 2016-09-21 宇龙计算机通信科技(深圳)有限公司 一种启动应用程序的方法、系统及移动终端
US9247219B2 (en) 2013-07-26 2016-01-26 SkyBell Technologies, Inc. Doorbell communication systems and methods
US8947530B1 (en) 2013-07-26 2015-02-03 Joseph Frank Scalisi Smart lock systems and methods
US9335983B2 (en) 2013-07-28 2016-05-10 Oded Haim Breiner Method and system for displaying a non-installed android application and for requesting an action from a non-installed android application
JP6370033B2 (ja) 2013-07-29 2018-08-08 キヤノン株式会社 情報処理装置、情報処理方法、プログラム
TWI516698B (zh) 2013-07-31 2016-01-11 Apex Medical Corp Air cushion device and its vent valve
US9575720B2 (en) 2013-07-31 2017-02-21 Google Inc. Visual confirmation for a recognized voice-initiated action
US9311915B2 (en) 2013-07-31 2016-04-12 Google Inc. Context-based speech recognition
US20150039606A1 (en) 2013-08-01 2015-02-05 Vamsi Krishna Salaka Search phrase modification
TWI601032B (zh) 2013-08-02 2017-10-01 晨星半導體股份有限公司 應用於聲控裝置的控制器與相關方法
EP3031211B1 (en) 2013-08-06 2020-11-11 Saronikos Trading and Services, Unipessoal Lda. System for controlling electronic devices by means of voice commands, more specifically a remote control to control a plurality of electronic devices by means of voice commands
KR20150017156A (ko) 2013-08-06 2015-02-16 삼성전자주식회사 휴대단말기에서 추천어를 제공하는 방법 및 장치
DE112014003653B4 (de) 2013-08-06 2024-04-18 Apple Inc. Automatisch aktivierende intelligente Antworten auf der Grundlage von Aktivitäten von entfernt angeordneten Vorrichtungen
US20150046828A1 (en) 2013-08-08 2015-02-12 Samsung Electronics Co., Ltd. Contextualizing sensor, service and device data with mobile devices
US9264862B2 (en) 2013-08-15 2016-02-16 Apple Inc. Determining exit from a vehicle
CN103457837B (zh) * 2013-08-18 2018-08-14 苏州量跃信息科技有限公司 通过搜索引擎进行即时通信搜索的方法及系统
KR20150020872A (ko) 2013-08-19 2015-02-27 현대자동차주식회사 차량 기능 제어를 위한 제어 장치 및 제어 방법
CN103780970B (zh) 2013-08-20 2018-03-16 华为终端(东莞)有限公司 一种媒体播放的方法、装置和系统
JP2015041845A (ja) 2013-08-21 2015-03-02 カシオ計算機株式会社 文字入力装置及びプログラム
CN104426841A (zh) 2013-08-21 2015-03-18 阿里巴巴集团控股有限公司 设置背景图像的方法及相关的服务器和系统
EP3036594B1 (en) 2013-08-21 2021-05-26 Ademco Inc. Devices and methods for interacting with an hvac controller
US9161188B2 (en) 2013-08-22 2015-10-13 Yahoo! Inc. System and method for automatically suggesting diverse and personalized message completions
EP2862164B1 (en) 2013-08-23 2017-05-31 Nuance Communications, Inc. Multiple pass automatic speech recognition
EP3040985B1 (en) 2013-08-26 2023-08-23 Samsung Electronics Co., Ltd. Electronic device and method for voice recognition
US20150066817A1 (en) 2013-08-27 2015-03-05 Persais, Llc System and method for virtual assistants with shared capabilities
CN104423780B (zh) * 2013-08-27 2020-07-14 北京三星通信技术研究有限公司 一种终端设备及其应用程序的关联显示方法
US9729592B2 (en) 2013-08-27 2017-08-08 Persais, Llc System and method for distributed virtual assistant platforms
CN104427104B (zh) 2013-08-28 2018-02-27 联想(北京)有限公司 一种信息处理方法及电子设备
WO2015029379A1 (ja) 2013-08-29 2015-03-05 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 機器制御方法、表示制御方法及び購入決済方法
KR102147935B1 (ko) 2013-08-29 2020-08-25 삼성전자주식회사 데이터 처리 방법 및 그 전자 장치
CN105453080A (zh) 2013-08-30 2016-03-30 英特尔公司 用于虚拟个人助理的可扩展上下文感知的自然语言交互
US20150066506A1 (en) 2013-08-30 2015-03-05 Verint Systems Ltd. System and Method of Text Zoning
US10867597B2 (en) 2013-09-02 2020-12-15 Microsoft Technology Licensing, Llc Assignment of semantic labels to a sequence of words using neural network architectures
US9633669B2 (en) 2013-09-03 2017-04-25 Amazon Technologies, Inc. Smart circular audio buffer
EP3340025B1 (en) 2013-09-03 2019-06-12 Apple Inc. User interface for manipulating user interface objects with magnetic properties
US9316400B2 (en) 2013-09-03 2016-04-19 Panasonic Intellctual Property Corporation of America Appliance control method, speech-based appliance control system, and cooking appliance
US10001817B2 (en) 2013-09-03 2018-06-19 Apple Inc. User interface for manipulating user interface objects with magnetic properties
KR102065409B1 (ko) 2013-09-04 2020-01-13 엘지전자 주식회사 이동단말기 및 그 제어방법
GB2517952B (en) 2013-09-05 2017-05-31 Barclays Bank Plc Biometric verification using predicted signatures
JP6295554B2 (ja) 2013-09-06 2018-03-20 株式会社リコー プログラム、情報処理装置
US9460704B2 (en) 2013-09-06 2016-10-04 Google Inc. Deep networks for unit selection speech synthesis
US9208779B2 (en) 2013-09-06 2015-12-08 Google Inc. Mixture of n-gram language models
US9898642B2 (en) 2013-09-09 2018-02-20 Apple Inc. Device, method, and graphical user interface for manipulating user interfaces based on fingerprint sensor inputs
US20150140934A1 (en) 2013-09-10 2015-05-21 Playtabase, LLC Wireless motion activated user device with bi-modality communication
US9485708B2 (en) 2013-09-10 2016-11-01 Qualcomm Incorporated Systems and methods for concurrent service discovery and minimum spanning tree formation for service delivery
US20150074524A1 (en) 2013-09-10 2015-03-12 Lenovo (Singapore) Pte. Ltd. Management of virtual assistant action items
CN104700832B (zh) 2013-12-09 2018-05-25 联发科技股份有限公司 语音关键字检测系统及方法
US9600228B2 (en) 2013-09-16 2017-03-21 Here Global B.V. Enhanced system and method for static query generation and entry
US9343068B2 (en) 2013-09-16 2016-05-17 Qualcomm Incorporated Method and apparatus for controlling access to applications having different security levels
US9240182B2 (en) 2013-09-17 2016-01-19 Qualcomm Incorporated Method and apparatus for adjusting detection threshold for activating voice assistant function
JP2015060423A (ja) 2013-09-19 2015-03-30 株式会社東芝 音声翻訳装置、音声翻訳方法およびプログラム
US9755605B1 (en) 2013-09-19 2017-09-05 Amazon Technologies, Inc. Volume control
CN105793923A (zh) 2013-09-20 2016-07-20 亚马逊技术股份有限公司 本地和远程语音处理
CN104463552B (zh) 2013-09-22 2018-10-02 中国电信股份有限公司 日历提醒生成方法和装置
US20150088511A1 (en) 2013-09-24 2015-03-26 Verizon Patent And Licensing Inc. Named-entity based speech recognition
US9418650B2 (en) 2013-09-25 2016-08-16 Verizon Patent And Licensing Inc. Training speech recognition using captions
US10134395B2 (en) 2013-09-25 2018-11-20 Amazon Technologies, Inc. In-call virtual assistants
US9401881B2 (en) 2013-09-26 2016-07-26 International Business Machines Corporation Automatic question generation and answering based on monitored messaging sessions
US9443527B1 (en) 2013-09-27 2016-09-13 Amazon Technologies, Inc. Speech recognition capability generation and control
US20150092520A1 (en) 2013-09-27 2015-04-02 Google Inc. Adaptive Trigger Point For Smartwatch Gesture-to-Wake
CN104516522B (zh) 2013-09-29 2018-05-01 北京三星通信技术研究有限公司 九宫格键盘输入的方法和装置
US9344755B2 (en) 2013-09-30 2016-05-17 Sonos, Inc. Fast-resume audio playback
US20150095278A1 (en) 2013-09-30 2015-04-02 Manyworlds, Inc. Adaptive Probabilistic Semantic System and Method
US20150095031A1 (en) 2013-09-30 2015-04-02 At&T Intellectual Property I, L.P. System and method for crowdsourcing of word pronunciation verification
US20150095268A1 (en) 2013-10-02 2015-04-02 Apple Inc. Intelligent multi-user task planning
KR101772044B1 (ko) 2013-10-02 2017-08-28 에스케이테크엑스 주식회사 거절메시지 전송 시스템 및 방법, 그리고 이를 위한 장치 및 컴퓨터 프로그램이 기록된 기록매체
US20150100537A1 (en) 2013-10-03 2015-04-09 Microsoft Corporation Emoji for Text Predictions
US20150100983A1 (en) 2013-10-06 2015-04-09 Yang Pan Personal Mobile Device as Ad hoc Set-Top Box for Television
US9436918B2 (en) 2013-10-07 2016-09-06 Microsoft Technology Licensing, Llc Smart selection of text spans
KR101480474B1 (ko) 2013-10-08 2015-01-09 엘지전자 주식회사 오디오 재생장치와 이를 포함하는 시스템
US20150100313A1 (en) 2013-10-09 2015-04-09 Verizon Patent And Licensing, Inc. Personification of computing devices for remote access
EP3055786A4 (en) 2013-10-09 2017-05-17 Google, Inc. Automatic definition of entity collections
KR102114219B1 (ko) 2013-10-10 2020-05-25 삼성전자주식회사 오디오 시스템 및 오디오 출력 방법, 그리고 스피커 장치
KR101506510B1 (ko) 2013-10-10 2015-03-30 송철호 음성인식 홈 네트워크 시스템
US10834546B2 (en) 2013-10-14 2020-11-10 Oath Inc. Systems and methods for providing context-based user interface
US8996639B1 (en) 2013-10-15 2015-03-31 Google Inc. Predictive responses to incoming communications
US9063640B2 (en) 2013-10-17 2015-06-23 Spotify Ab System and method for switching between media items in a plurality of sequences of media items
US9461945B2 (en) 2013-10-18 2016-10-04 Jeffrey P. Phillips Automated messaging response
US9143907B1 (en) 2013-10-21 2015-09-22 West Corporation Providing data messaging support by intercepting and redirecting received short message service (SMS) messages
JP6280342B2 (ja) 2013-10-22 2018-02-14 株式会社Nttドコモ 機能実行指示システム及び機能実行指示方法
US20150120723A1 (en) 2013-10-24 2015-04-30 Xerox Corporation Methods and systems for processing speech queries
US9659279B2 (en) * 2013-10-25 2017-05-23 Palo Alto Research Center Incorporated Method and system for enhanced inferred mode user interface operations
JP2015083938A (ja) 2013-10-25 2015-04-30 三菱電機株式会社 ナビゲーションシステム
US10346753B2 (en) 2013-10-28 2019-07-09 Nant Holdings Ip, Llc Intent engines, systems and method
US20150120296A1 (en) 2013-10-29 2015-04-30 At&T Intellectual Property I, L.P. System and method for selecting network-based versus embedded speech processing
JP6152779B2 (ja) 2013-10-31 2017-06-28 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US10055681B2 (en) 2013-10-31 2018-08-21 Verint Americas Inc. Mapping actions and objects to tasks
US20150123898A1 (en) 2013-10-31 2015-05-07 Lg Electronics Inc. Digital device and control method thereof
US9942396B2 (en) 2013-11-01 2018-04-10 Adobe Systems Incorporated Document distribution and interaction
US9183830B2 (en) 2013-11-01 2015-11-10 Google Inc. Method and system for non-parametric voice conversion
US10019985B2 (en) 2013-11-04 2018-07-10 Google Llc Asynchronous optimization for sequence training of neural networks
FR3012895B1 (fr) 2013-11-05 2015-12-25 Commissariat Energie Atomique Procede et programme d'ordinateur pour l'execution deportee de taches informatiques d'un equipement sans fil
US9600474B2 (en) 2013-11-08 2017-03-21 Google Inc. User interface for realtime language translation
US9547644B2 (en) 2013-11-08 2017-01-17 Google Inc. Presenting translations of text depicted in images
US10088973B2 (en) 2013-11-08 2018-10-02 Google Llc Event scheduling presentation in a graphical user interface environment
US10311482B2 (en) 2013-11-11 2019-06-04 At&T Intellectual Property I, Lp Method and apparatus for adjusting a digital assistant persona
JP6493866B2 (ja) 2013-11-12 2019-04-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、情報処理方法、およびプログラム
US10430024B2 (en) 2013-11-13 2019-10-01 Microsoft Technology Licensing, Llc Media item selection using user-specific grammar
GB2520266A (en) 2013-11-13 2015-05-20 Ibm Cursor-Based Character input interface
US9361084B1 (en) 2013-11-14 2016-06-07 Google Inc. Methods and systems for installing and executing applications
US10454783B2 (en) 2014-02-05 2019-10-22 Apple Inc. Accessory management system using environment model
US10110932B2 (en) 2013-11-18 2018-10-23 Cable Television Laboratories, Inc. Session administration
US9898554B2 (en) 2013-11-18 2018-02-20 Google Inc. Implicit question query identification
US9443522B2 (en) 2013-11-18 2016-09-13 Beijing Lenovo Software Ltd. Voice recognition method, voice controlling method, information processing method, and electronic apparatus
US10162813B2 (en) 2013-11-21 2018-12-25 Microsoft Technology Licensing, Llc Dialogue evaluation via multiple hypothesis ranking
US10058777B2 (en) 2013-11-21 2018-08-28 Tencent Technology (Shenzhen) Company Limited Task execution method, apparatus and system
US10079013B2 (en) 2013-11-27 2018-09-18 Sri International Sharing intents to provide virtual assistance in a multi-person dialog
US20150149354A1 (en) 2013-11-27 2015-05-28 Bank Of America Corporation Real-Time Data Recognition and User Interface Field Updating During Voice Entry
US9451434B2 (en) 2013-11-27 2016-09-20 At&T Intellectual Property I, L.P. Direct interaction between a user and a communication network
US9698999B2 (en) 2013-12-02 2017-07-04 Amazon Technologies, Inc. Natural language control of secondary device
US9110635B2 (en) 2013-12-03 2015-08-18 Lenova (Singapore) Pte. Ltd. Initiating personal assistant application based on eye tracking and gestures
US8719039B1 (en) 2013-12-05 2014-05-06 Google Inc. Promoting voice actions to hotwords
US9215510B2 (en) 2013-12-06 2015-12-15 Rovi Guides, Inc. Systems and methods for automatically tagging a media asset based on verbal input and playback adjustments
US10296160B2 (en) 2013-12-06 2019-05-21 Apple Inc. Method for extracting salient dialog usage from live data
CN103645876B (zh) 2013-12-06 2017-01-18 百度在线网络技术(北京)有限公司 语音输入方法和装置
US9639682B2 (en) 2013-12-06 2017-05-02 Adt Us Holdings, Inc. Voice activated application for mobile devices
US20150160855A1 (en) 2013-12-10 2015-06-11 Google Inc. Multiple character input with a single selection
US20150162001A1 (en) 2013-12-10 2015-06-11 Honeywell International Inc. System and method for textually and graphically presenting air traffic control voice information
GB201321927D0 (en) 2013-12-11 2014-01-22 Touchtype Ltd System and method for inputting text into electronic devices
US9900177B2 (en) 2013-12-11 2018-02-20 Echostar Technologies International Corporation Maintaining up-to-date home automation models
US9696886B2 (en) 2013-12-12 2017-07-04 Google Technology Holdings LLC Systems and methods for communicating task reminders on portable electronic devices
US9208153B1 (en) 2013-12-13 2015-12-08 Symantec Corporation Filtering relevant event notifications in a file sharing and collaboration environment
KR20160101079A (ko) 2013-12-16 2016-08-24 뉘앙스 커뮤니케이션즈, 인코포레이티드 가상 어시스턴트를 제공하기 위한 시스템 및 방법
US9804820B2 (en) 2013-12-16 2017-10-31 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
US9479931B2 (en) 2013-12-16 2016-10-25 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
US10534623B2 (en) 2013-12-16 2020-01-14 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
US9251492B2 (en) 2013-12-16 2016-02-02 Nuiku, Inc. Customized-enterprise-software integration systems and methods
US9571645B2 (en) 2013-12-16 2017-02-14 Nuance Communications, Inc. Systems and methods for providing a virtual assistant
WO2015092943A1 (en) 2013-12-17 2015-06-25 Sony Corporation Electronic devices and methods for compensating for environmental noise in text-to-speech applications
US9721570B1 (en) 2013-12-17 2017-08-01 Amazon Technologies, Inc. Outcome-oriented dialogs on a speech recognition platform
GB2523984B (en) 2013-12-18 2017-07-26 Cirrus Logic Int Semiconductor Ltd Processing received speech data
US10565268B2 (en) 2013-12-19 2020-02-18 Adobe Inc. Interactive communication augmented with contextual information
US9741343B1 (en) 2013-12-19 2017-08-22 Amazon Technologies, Inc. Voice interaction application selection
US10811013B1 (en) 2013-12-20 2020-10-20 Amazon Technologies, Inc. Intent-specific automatic speech recognition result generation
CN105723451B (zh) 2013-12-20 2020-02-28 英特尔公司 从低功率始终侦听模式到高功率语音识别模式的转换
KR102179506B1 (ko) 2013-12-23 2020-11-17 삼성전자 주식회사 전자장치 및 그 제어방법
CN203721183U (zh) 2013-12-25 2014-07-16 安徽科大讯飞信息科技股份有限公司 一种语音唤醒装置
KR102092164B1 (ko) 2013-12-27 2020-03-23 삼성전자주식회사 디스플레이 장치, 서버 장치 및 이들을 포함하는 디스플레이 시스템과 그 컨텐츠 제공 방법들
US9640181B2 (en) 2013-12-27 2017-05-02 Kopin Corporation Text editing with gesture control and natural speech
JP6121896B2 (ja) 2013-12-27 2017-04-26 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置および情報処理システム
JP2015127758A (ja) 2013-12-27 2015-07-09 シャープ株式会社 応答制御装置、制御プログラム
US9460735B2 (en) 2013-12-28 2016-10-04 Intel Corporation Intelligent ancillary electronic device
US20150278737A1 (en) 2013-12-30 2015-10-01 Google Inc. Automatic Calendar Event Generation with Structured Data from Free-Form Speech
US9390726B1 (en) 2013-12-30 2016-07-12 Google Inc. Supplementing speech commands with gestures
US10078489B2 (en) 2013-12-30 2018-09-18 Microsoft Technology Licensing, Llc Voice interface to a social networking service
US10088972B2 (en) 2013-12-31 2018-10-02 Verint Americas Inc. Virtual assistant conversations
US9152307B2 (en) 2013-12-31 2015-10-06 Google Inc. Systems and methods for simultaneously displaying clustered, in-line electronic messages in one display
US9778817B2 (en) 2013-12-31 2017-10-03 Findo, Inc. Tagging of images based on social network tags or comments
US9274673B2 (en) 2013-12-31 2016-03-01 Google Inc. Methods, systems, and media for rewinding media content based on detected audio events
US9471875B2 (en) 2013-12-31 2016-10-18 International Business Machines Corporation Using ontologies to comprehend regular expressions
US9424241B2 (en) 2013-12-31 2016-08-23 Barnes & Noble College Booksellers, Llc Annotation mode including multiple note types for paginated digital content
US9742836B2 (en) 2014-01-03 2017-08-22 Yahoo Holdings, Inc. Systems and methods for content delivery
JP6318621B2 (ja) 2014-01-06 2018-05-09 株式会社デンソー 音声処理装置、音声処理システム、音声処理方法、音声処理プログラム
US20150193379A1 (en) 2014-01-06 2015-07-09 Apple Inc. System and method for cognizant time-based reminders
US9037455B1 (en) 2014-01-08 2015-05-19 Google Inc. Limiting notification interruptions
US8938394B1 (en) 2014-01-09 2015-01-20 Google Inc. Audio triggers based on context
US9443516B2 (en) 2014-01-09 2016-09-13 Honeywell International Inc. Far-field speech recognition systems and methods
US9924215B2 (en) 2014-01-09 2018-03-20 Hsni, Llc Digital media content management system and method
US20150201077A1 (en) 2014-01-12 2015-07-16 Genesys Telecommunications Laboratories, Inc. Computing suggested actions in caller agent phone calls by using real-time speech analytics and real-time desktop analytics
US10360907B2 (en) 2014-01-14 2019-07-23 Toyota Motor Engineering & Manufacturing North America, Inc. Smart necklace with stereo vision and onboard processing
US9514748B2 (en) 2014-01-15 2016-12-06 Microsoft Technology Licensing, Llc Digital personal assistant interaction with impersonations and rich multimedia in responses
US20150199965A1 (en) 2014-01-16 2015-07-16 CloudCar Inc. System and method for recognition and automatic correction of voice commands
US8868409B1 (en) 2014-01-16 2014-10-21 Google Inc. Evaluating transcriptions with a semantic parser
US9336300B2 (en) 2014-01-17 2016-05-10 Facebook, Inc. Client-side search templates for online social networks
CN104794122B (zh) 2014-01-20 2020-04-17 腾讯科技(北京)有限公司 一种位置信息推荐方法、装置和系统
KR102210433B1 (ko) 2014-01-21 2021-02-01 삼성전자주식회사 전자 장치 및 이의 음성 인식 방법
WO2015112137A1 (en) 2014-01-22 2015-07-30 Pearl Capital Developments Llc Coordinated hand-off of audio data transmission
CN105900042B (zh) 2014-01-22 2019-06-28 索尼公司 重定向音频输入和输出的方法及设备
CN103744761B (zh) 2014-01-22 2017-02-08 广东欧珀移动通信有限公司 一种控制多台移动终端自动执行任务的方法及系统
CN103760984A (zh) 2014-01-24 2014-04-30 成都万先自动化科技有限责任公司 人机对话系统
CN103761104A (zh) * 2014-01-27 2014-04-30 贝壳网际(北京)安全技术有限公司 应用程序的功能引导方法、装置和客户端
US9858039B2 (en) 2014-01-28 2018-01-02 Oracle International Corporation Voice recognition of commands extracted from user interface screen devices
US11386886B2 (en) 2014-01-28 2022-07-12 Lenovo (Singapore) Pte. Ltd. Adjusting speech recognition using contextual information
JP6296813B2 (ja) 2014-01-30 2018-03-20 キヤノン株式会社 情報処理端末、情報処理端末の制御方法およびプログラム
US10019060B2 (en) 2014-01-30 2018-07-10 Duane Matthew Cash Mind-controlled virtual assistant on a smartphone device
US10096040B2 (en) 2014-01-31 2018-10-09 Walmart Apollo, Llc Management of the display of online ad content consistent with one or more performance objectives for a webpage and/or website
US20160173960A1 (en) 2014-01-31 2016-06-16 EyeGroove, Inc. Methods and systems for generating audiovisual media items
US10978060B2 (en) 2014-01-31 2021-04-13 Hewlett-Packard Development Company, L.P. Voice input command
US9292488B2 (en) 2014-02-01 2016-03-22 Soundhound, Inc. Method for embedding voice mail in a spoken utterance using a natural language processing computer system
US10157272B2 (en) 2014-02-04 2018-12-18 Qualcomm Incorporated Systems and methods for evaluating strength of an audio password
US10028008B2 (en) 2014-02-04 2018-07-17 Google Llc Persistent media player
JP2015149568A (ja) 2014-02-05 2015-08-20 キヤノン株式会社 画像形成装置、その制御方法およびプログラム
US10050926B2 (en) 2014-02-05 2018-08-14 Facebook, Inc. Ideograms based on sentiment analysis
US20150334346A1 (en) 2014-05-16 2015-11-19 Elwha Llc Systems and methods for automatically connecting a user of a hands-free intercommunication system
US20160336007A1 (en) 2014-02-06 2016-11-17 Mitsubishi Electric Corporation Speech search device and speech search method
US20150228281A1 (en) 2014-02-07 2015-08-13 First Principles,Inc. Device, system, and method for active listening
US9576588B2 (en) 2014-02-10 2017-02-21 Apple Inc. Close-talk detector for personal listening device with adaptive active noise control
US9837075B2 (en) 2014-02-10 2017-12-05 Mitsubishi Electric Research Laboratories, Inc. Statistical voice dialog system and method
US10083205B2 (en) 2014-02-12 2018-09-25 Samsung Electronics Co., Ltd. Query cards
US9037967B1 (en) 2014-02-18 2015-05-19 King Fahd University Of Petroleum And Minerals Arabic spell checking technique
US10469428B2 (en) 2014-02-21 2019-11-05 Samsung Electronics Co., Ltd. Apparatus and method for transmitting message
US9589562B2 (en) 2014-02-21 2017-03-07 Microsoft Technology Licensing, Llc Pronunciation learning through correction logs
WO2015127404A1 (en) 2014-02-24 2015-08-27 Microsoft Technology Licensing, Llc Unified presentation of contextually connected information to improve user efficiency and interaction performance
US20150243279A1 (en) 2014-02-26 2015-08-27 Toytalk, Inc. Systems and methods for recommending responses
US9495959B2 (en) 2014-02-27 2016-11-15 Ford Global Technologies, Llc Disambiguation of dynamic commands
US20150248651A1 (en) 2014-02-28 2015-09-03 Christine E. Akutagawa Social networking event planning
US10389876B2 (en) 2014-02-28 2019-08-20 Ultratec, Inc. Semiautomated relay method and apparatus
WO2015133022A1 (ja) 2014-03-03 2015-09-11 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
US9412363B2 (en) 2014-03-03 2016-08-09 Microsoft Technology Licensing, Llc Model based approach for on-screen item selection and disambiguation
US9574890B2 (en) 2014-03-04 2017-02-21 Qualcomm Incorporated Reduced power consumption and improved user experience when navigating along familiar routes
US9582246B2 (en) 2014-03-04 2017-02-28 Microsoft Technology Licensing, Llc Voice-command suggestions based on computer context
US20150256873A1 (en) 2014-03-04 2015-09-10 Microsoft Technology Licensing, Llc Relayed voice control of devices
US9489171B2 (en) 2014-03-04 2016-11-08 Microsoft Technology Licensing, Llc Voice-command suggestions based on user identity
US10409454B2 (en) 2014-03-05 2019-09-10 Samsung Electronics Co., Ltd. Smart watch device and user interface thereof
US9286910B1 (en) 2014-03-13 2016-03-15 Amazon Technologies, Inc. System for resolving ambiguous queries based on user context
US9405377B2 (en) 2014-03-15 2016-08-02 Microsoft Technology Licensing, Llc Trainable sensor-based gesture recognition
US9430186B2 (en) 2014-03-17 2016-08-30 Google Inc Visual indication of a recognized voice-initiated action
CN103841268A (zh) 2014-03-17 2014-06-04 联想(北京)有限公司 信息处理方法和信息处理装置
US10102274B2 (en) 2014-03-17 2018-10-16 NLPCore LLC Corpus search systems and methods
CN103885608A (zh) 2014-03-19 2014-06-25 百度在线网络技术(北京)有限公司 一种输入方法及系统
US9336306B2 (en) 2014-03-21 2016-05-10 International Business Machines Corporation Automatic evaluation and improvement of ontologies for natural language processing tasks
US9734817B1 (en) 2014-03-21 2017-08-15 Amazon Technologies, Inc. Text-to-speech task scheduling
US9966079B2 (en) 2014-03-24 2018-05-08 Lenovo (Singapore) Pte. Ltd. Directing voice input based on eye tracking
US20170075653A1 (en) 2014-03-26 2017-03-16 Sony Corporation Electronic device and method for controlling the electronic device
US9916839B1 (en) 2014-03-27 2018-03-13 Amazon Technologies, Inc. Shared audio functionality based on device grouping
US9431021B1 (en) 2014-03-27 2016-08-30 Amazon Technologies, Inc. Device grouping for audio based interactivity
RU2014111971A (ru) 2014-03-28 2015-10-10 Юрий Михайлович Буров Способ и система голосового интерфейса
US9710546B2 (en) 2014-03-28 2017-07-18 Microsoft Technology Licensing, Llc Explicit signals personalized search
IN2014DE00899A (ko) 2014-03-28 2015-10-02 Samsung Electronics Co Ltd
CA2943513C (en) 2014-03-29 2020-08-04 Thomson Reuters Global Resources Improved method, system and software for searching, identifying, retrieving and presenting electronic documents
US10037758B2 (en) 2014-03-31 2018-07-31 Mitsubishi Electric Corporation Device and method for understanding user intent
US9196243B2 (en) 2014-03-31 2015-11-24 International Business Machines Corporation Method and system for efficient spoken term detection using confusion networks
US10749989B2 (en) 2014-04-01 2020-08-18 Microsoft Technology Licensing Llc Hybrid client/server architecture for parallel processing
US20150278370A1 (en) 2014-04-01 2015-10-01 Microsoft Corporation Task completion for natural language input
US9286892B2 (en) 2014-04-01 2016-03-15 Google Inc. Language modeling in speech recognition
CN106416309B (zh) 2014-04-02 2020-05-12 索尼公司 电子装置、移动终端和接近检测方法
US10992609B2 (en) 2014-04-02 2021-04-27 CloLa, Inc. Text-messaging based concierge services
CN103902373B (zh) 2014-04-02 2017-09-29 百度在线网络技术(北京)有限公司 智能终端控制方法、服务器和智能终端
US20150286627A1 (en) 2014-04-03 2015-10-08 Adobe Systems Incorporated Contextual sentiment text analysis
KR20150115555A (ko) 2014-04-04 2015-10-14 삼성전자주식회사 전자 장치 및 그의 정보 제공 방법
US9519644B2 (en) 2014-04-04 2016-12-13 Facebook, Inc. Methods and devices for generating media items
KR102249086B1 (ko) 2014-04-04 2021-05-10 삼성전자주식회사 레코딩 지원 전자장치 및 방법
US9383827B1 (en) 2014-04-07 2016-07-05 Google Inc. Multi-modal command display
JP6282516B2 (ja) 2014-04-08 2018-02-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 複数機器の音声操作システム、音声操作方法及び、プログラム
CN104978963A (zh) 2014-04-08 2015-10-14 富士通株式会社 语音识别装置、方法以及电子设备
US9888452B2 (en) 2014-04-10 2018-02-06 Twin Harbor Labs Llc Methods and apparatus notifying a user of the operating condition of a household appliance
US20150294516A1 (en) 2014-04-10 2015-10-15 Kuo-Ching Chiang Electronic device with security module
US20170178664A1 (en) 2014-04-11 2017-06-22 Analog Devices, Inc. Apparatus, systems and methods for providing cloud based blind source separation services
US20150294086A1 (en) 2014-04-14 2015-10-15 Elwha Llc Devices, systems, and methods for automated enhanced care rooms
CN108551675B (zh) 2014-04-14 2022-04-15 创新先进技术有限公司 一种应用客户端、服务端及对应的Portal认证方法
US9652453B2 (en) 2014-04-14 2017-05-16 Xerox Corporation Estimation of parameters for machine translation without in-domain parallel data
US10540979B2 (en) 2014-04-17 2020-01-21 Qualcomm Incorporated User interface for secure access to a device using speaker verification
US20150302856A1 (en) 2014-04-17 2015-10-22 Qualcomm Incorporated Method and apparatus for performing function by speech input
US10770075B2 (en) 2014-04-21 2020-09-08 Qualcomm Incorporated Method and apparatus for activating application by speech input
KR20150122561A (ko) 2014-04-23 2015-11-02 삼성전자주식회사 디바이스 및 상기 디바이스에서의 착신 호출 처리 방법
US9607613B2 (en) 2014-04-23 2017-03-28 Google Inc. Speech endpointing based on word comparisons
US20150310862A1 (en) 2014-04-24 2015-10-29 Microsoft Corporation Deep learning for semantic parsing including semantic utterance classification
CN105025051A (zh) 2014-04-24 2015-11-04 深圳市赛格导航科技股份有限公司 一种云端语音服务提供方法和系统
US10845982B2 (en) 2014-04-28 2020-11-24 Facebook, Inc. Providing intelligent transcriptions of sound messages in a messaging application
US9478247B2 (en) 2014-04-28 2016-10-25 Sonos, Inc. Management of media content playback
US8976063B1 (en) 2014-04-29 2015-03-10 Google Inc. Automated detection of vehicle parking and location
US9520127B2 (en) 2014-04-29 2016-12-13 Microsoft Technology Licensing, Llc Shared hidden layer combination for speech recognition systems
KR102248474B1 (ko) 2014-04-30 2021-05-07 삼성전자 주식회사 음성 명령 제공 방법 및 장치
US9600600B2 (en) 2014-04-30 2017-03-21 Excalibur Ip, Llc Method and system for evaluating query suggestions quality
US9501163B2 (en) 2014-05-06 2016-11-22 Symbol Technologies, Llc Apparatus and method for activating a trigger mechanism
KR102282487B1 (ko) 2014-05-08 2021-07-26 삼성전자주식회사 애플리케이션 실행 장치 및 방법
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US9459889B2 (en) 2014-05-19 2016-10-04 Qualcomm Incorporated Systems and methods for context-aware application control
KR102216048B1 (ko) 2014-05-20 2021-02-15 삼성전자주식회사 음성 명령 인식 장치 및 방법
US10726831B2 (en) 2014-05-20 2020-07-28 Amazon Technologies, Inc. Context interpretation in natural language processing using previous dialog acts
KR102223278B1 (ko) 2014-05-22 2021-03-05 엘지전자 주식회사 글래스 타입 단말기 및 이의 제어방법
WO2015179632A1 (en) 2014-05-22 2015-11-26 Scheffler Lee J Methods and systems for neural and cognitive processing
KR102329420B1 (ko) 2014-05-23 2021-11-22 엘지전자 주식회사 이동단말기 및 그 제어방법
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US9990433B2 (en) 2014-05-23 2018-06-05 Samsung Electronics Co., Ltd. Method for searching and device thereof
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US9437189B2 (en) 2014-05-29 2016-09-06 Google Inc. Generating language models
US11088807B2 (en) 2014-05-30 2021-08-10 Apple Inc. Application-level acknowledgements
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9380123B2 (en) 2014-05-30 2016-06-28 Apple Inc. Activity continuation between electronic devices
US10387451B2 (en) 2014-05-30 2019-08-20 Apple Inc. Synchronization system for multiple client devices
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US9519634B2 (en) 2014-05-30 2016-12-13 Educational Testing Service Systems and methods for determining lexical associations among words in a corpus
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US10579212B2 (en) 2014-05-30 2020-03-03 Apple Inc. Structured suggestions
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
EP3149554B1 (en) 2014-05-30 2024-05-01 Apple Inc. Continuity
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US10237711B2 (en) 2014-05-30 2019-03-19 Apple Inc. Dynamic types for activity continuation between electronic devices
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
TWI520007B (zh) 2014-05-30 2016-02-01 由田新技股份有限公司 眼控密碼輸入設備、方法、電腦可讀取紀錄媒體及電腦程式產品
WO2015183699A1 (en) 2014-05-30 2015-12-03 Apple Inc. Predictive messaging method
US10033818B2 (en) 2014-05-30 2018-07-24 Apple Inc. Using listen ranges to deliver content to electronic devices from local caching servers
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
TWI566107B (zh) 2014-05-30 2017-01-11 蘋果公司 用於處理多部分語音命令之方法、非暫時性電腦可讀儲存媒體及電子裝置
US9887949B2 (en) 2014-05-31 2018-02-06 Apple Inc. Displaying interactive notifications on touch sensitive devices
GB2526805A (en) 2014-06-03 2015-12-09 Nokia Technologies Oy Methods, apparatuses and computer programs for adapting content
US10318016B2 (en) 2014-06-03 2019-06-11 Harman International Industries, Incorporated Hands free device with directional interface
US9363254B2 (en) 2014-06-04 2016-06-07 Sonos, Inc. Cloud queue access control
US8995972B1 (en) 2014-06-05 2015-03-31 Grandios Technologies, Llc Automatic personal assistance between users devices
JP6307356B2 (ja) 2014-06-06 2018-04-04 株式会社デンソー 運転コンテキスト情報生成装置
CN107113222B (zh) 2014-06-06 2020-09-01 谷歌有限责任公司 基于环境的主动聊天信息系统
US10325205B2 (en) 2014-06-09 2019-06-18 Cognitive Scale, Inc. Cognitive information processing system environment
EP2983065B1 (en) 2014-06-11 2018-08-01 Huawei Technologies Co., Ltd. Method and terminal for quickly starting application service
US20150364140A1 (en) 2014-06-13 2015-12-17 Sony Corporation Portable Electronic Equipment and Method of Operating a User Interface
US10127901B2 (en) 2014-06-13 2018-11-13 Microsoft Technology Licensing, Llc Hyper-structure recurrent neural networks for text-to-speech
CN104090652B (zh) 2014-06-13 2017-07-21 北京搜狗科技发展有限公司 一种语音输入方法和装置
US10250538B2 (en) 2014-06-14 2019-04-02 Trisha N. Prabhu Detecting messages with offensive content
US10375129B2 (en) * 2014-06-17 2019-08-06 Microsoft Technology Licensing, Llc Facilitating conversations with automated location mapping
KR20150144668A (ko) 2014-06-17 2015-12-28 엘지전자 주식회사 이동 단말기 및 그 제어 방법
US20150370787A1 (en) 2014-06-18 2015-12-24 Microsoft Corporation Session Context Modeling For Conversational Understanding Systems
US9462112B2 (en) 2014-06-19 2016-10-04 Microsoft Technology Licensing, Llc Use of a digital assistant in communications
US9390706B2 (en) 2014-06-19 2016-07-12 Mattersight Corporation Personality-based intelligent personal assistant system and methods
US10186282B2 (en) 2014-06-19 2019-01-22 Apple Inc. Robust end-pointing of speech signals using speaker recognition
US9384738B2 (en) 2014-06-24 2016-07-05 Google Inc. Dynamic threshold for speaker verification
US9632748B2 (en) 2014-06-24 2017-04-25 Google Inc. Device designation for audio input monitoring
US10783166B2 (en) 2014-06-24 2020-09-22 Google Llc List accumulation and reminder triggering
US20150371529A1 (en) 2014-06-24 2015-12-24 Bose Corporation Audio Systems and Related Methods and Devices
US9807559B2 (en) 2014-06-25 2017-10-31 Microsoft Technology Licensing, Llc Leveraging user signals for improved interactions with digital personal assistant
US20150381923A1 (en) 2014-06-27 2015-12-31 United Video Properties, Inc. Methods and systems for adjusting a play length of a media asset based user actions
US10402453B2 (en) 2014-06-27 2019-09-03 Nuance Communications, Inc. Utilizing large-scale knowledge graphs to support inference at scale and explanation generation
US20150379118A1 (en) 2014-06-27 2015-12-31 United Video Properties, Inc. Methods and systems for generating playlists based on activities being performed by a user
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
KR102261552B1 (ko) 2014-06-30 2021-06-07 삼성전자주식회사 음성 명령어 제공 방법 및 이를 지원하는 전자 장치
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US20160005320A1 (en) 2014-07-02 2016-01-07 Christopher deCharms Technologies for brain exercise training
US20160012038A1 (en) 2014-07-10 2016-01-14 International Business Machines Corporation Semantic typing with n-gram analysis
US10321204B2 (en) 2014-07-11 2019-06-11 Lenovo (Singapore) Pte. Ltd. Intelligent closed captioning
US10506273B2 (en) 2014-07-15 2019-12-10 Verizon Patent And Licensing Inc. Using a media client device to present media content from a mobile device
US9665248B2 (en) 2014-07-15 2017-05-30 Google Inc. Adaptive background playback behavior
KR20160009344A (ko) 2014-07-16 2016-01-26 삼성전자주식회사 귓속말 인식 방법 및 장치
WO2016010857A1 (en) 2014-07-18 2016-01-21 Apple Inc. Raise gesture detection in a device
CN104113471B (zh) 2014-07-18 2018-06-05 广州三星通信技术研究有限公司 通讯连接异常时的信息处理方法和装置
US9257120B1 (en) 2014-07-18 2016-02-09 Google Inc. Speaker verification using co-location information
US9560402B2 (en) 2014-07-23 2017-01-31 Highlands Technologies Solutions Methods for displaying personalized messages, images and the like at event centers including cinema
US20160028666A1 (en) 2014-07-24 2016-01-28 Framy Inc. System and method for instant messaging
US9301256B2 (en) 2014-07-24 2016-03-29 Verizon Patent And Licensing Inc. Low battery indication for callers to mobile device
US20160086116A1 (en) 2014-07-27 2016-03-24 Supriya Rao Method and system of an automatically managed calendar and contextual task list
US9325842B1 (en) 2014-07-28 2016-04-26 Google Inc. Systems and methods for associating a string with a content item
US10178229B2 (en) 2014-07-29 2019-01-08 United Efficiency, Inc. System for limiting mobile phone distraction in motor vehicles and / or within fixed locations
EP2998822B1 (en) 2014-07-31 2018-09-12 Samsung Electronics Co., Ltd Mobile communication device using a plurality of wearable devices in parallel
US20160034811A1 (en) 2014-07-31 2016-02-04 Apple Inc. Efficient generation of complementary acoustic models for performing automatic speech recognition system combination
WO2016017997A1 (en) 2014-07-31 2016-02-04 Samsung Electronics Co., Ltd. Wearable glasses and method of providing content using the same
CN104123191A (zh) 2014-07-31 2014-10-29 北京智谷睿拓技术服务有限公司 任务迁移控制方法、装置和系统
US9377871B2 (en) 2014-08-01 2016-06-28 Nuance Communications, Inc. System and methods for determining keyboard input in the presence of multiple contact points
US9898175B2 (en) 2014-08-05 2018-02-20 Fibar Group S.A. Home network manager for home automation
US9874997B2 (en) 2014-08-08 2018-01-23 Sonos, Inc. Social playback queues
US9767794B2 (en) 2014-08-11 2017-09-19 Nuance Communications, Inc. Dialog flow management in hierarchical task dialogs
US9548066B2 (en) 2014-08-11 2017-01-17 Amazon Technologies, Inc. Voice application architecture
US9361442B2 (en) 2014-08-12 2016-06-07 International Business Machines Corporation Triggering actions on a user device based on biometrics of nearby individuals
US10243891B2 (en) 2014-08-14 2019-03-26 Oath Inc. Cross-device integration system and method
US9838999B2 (en) 2014-08-14 2017-12-05 Blackberry Limited Portable electronic device and method of controlling notifications
JP6044604B2 (ja) 2014-08-18 2016-12-14 カシオ計算機株式会社 端末装置、およびプログラム
WO2016028793A1 (en) 2014-08-18 2016-02-25 Interdigital Patent Holdings, Inc. Injecting streaming media into a playlist
US10345767B2 (en) 2014-08-19 2019-07-09 Samsung Electronics Co., Ltd. Apparatus and method for gamification of sensor data interpretation in smart home
KR20160023089A (ko) 2014-08-21 2016-03-03 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법
US20160055240A1 (en) 2014-08-22 2016-02-25 Microsoft Corporation Orphaned utterance detection system and method
WO2016032806A1 (en) 2014-08-26 2016-03-03 Apple Inc. User interface for limiting notifications and alerts
CN105472587A (zh) 2014-08-26 2016-04-06 小米科技有限责任公司 来电处理方法和装置
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US10068008B2 (en) 2014-08-28 2018-09-04 Microsoft Technologies Licensing, LLC Spelling correction of email queries
US9990610B2 (en) 2014-08-29 2018-06-05 Google Llc Systems and methods for providing suggested reminders
CN105471705B (zh) 2014-09-03 2021-03-23 腾讯科技(深圳)有限公司 一种基于即时通讯的智能控制方法、设备及系统
CN104243699A (zh) 2014-09-04 2014-12-24 宇龙计算机通信科技(深圳)有限公司 一种来电拒接后的提醒方法、系统及移动终端
US9959863B2 (en) 2014-09-08 2018-05-01 Qualcomm Incorporated Keyword detection using speaker-independent keyword models for user-designated keywords
US20160071517A1 (en) 2014-09-09 2016-03-10 Next It Corporation Evaluating Conversation Data based on Risk Factors
CN105960672B (zh) 2014-09-09 2019-11-26 微软技术许可有限责任公司 用于稳健语音识别的变量组件深度神经网络
US10204622B2 (en) 2015-09-10 2019-02-12 Crestron Electronics, Inc. Acoustic sensory network
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10789041B2 (en) 2014-09-12 2020-09-29 Apple Inc. Dynamic thresholds for always listening speech trigger
US10171558B2 (en) 2014-09-12 2019-01-01 Microsoft Technology Licensing, Llc Cross device application discovery and control
US10261672B1 (en) 2014-09-16 2019-04-16 Amazon Technologies, Inc. Contextual launch interfaces
CN105490890A (zh) 2014-09-16 2016-04-13 中兴通讯股份有限公司 智能家庭终端及其控制方法
US9548979B1 (en) 2014-09-19 2017-01-17 United Services Automobile Association (Usaa) Systems and methods for authentication program enrollment
US9778736B2 (en) 2014-09-22 2017-10-03 Rovi Guides, Inc. Methods and systems for calibrating user devices
US9508028B2 (en) 2014-09-24 2016-11-29 Nuance Communications, Inc. Converting text strings into number strings, such as via a touchscreen input
JP6052814B2 (ja) 2014-09-24 2016-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 音声認識モデルの構築方法、音声認識方法、コンピュータ・システム、音声認識装置、プログラムおよび記録媒体
US10317992B2 (en) 2014-09-25 2019-06-11 Microsoft Technology Licensing, Llc Eye gaze for spoken language understanding in multi-modal conversational interactions
US9606986B2 (en) 2014-09-29 2017-03-28 Apple Inc. Integrated word N-gram and class M-gram language models
US20160094889A1 (en) 2014-09-29 2016-03-31 Rovi Guides, Inc. Systems and methods for determining whether to merge search queries based on contextual information
US9578156B2 (en) 2014-09-30 2017-02-21 Samsung Electronics Co., Ltd. Method and apparatus for operating an electronic device
US9646634B2 (en) 2014-09-30 2017-05-09 Google Inc. Low-rank hidden input layer for speech recognition neural network
US9378740B1 (en) 2014-09-30 2016-06-28 Amazon Technologies, Inc. Command suggestions during automatic speech recognition
US9830321B2 (en) 2014-09-30 2017-11-28 Rovi Guides, Inc. Systems and methods for searching for a media asset
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
JP6448971B2 (ja) 2014-09-30 2019-01-09 シャープ株式会社 対話装置
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US10235996B2 (en) 2014-10-01 2019-03-19 XBrain, Inc. Voice and connection platform
US9559993B2 (en) 2014-10-02 2017-01-31 Oracle International Corporation Virtual agent proxy in a real-time chat service
US20160099984A1 (en) 2014-10-03 2016-04-07 Across Lab, Inc. Method and apparatus for remote, multi-media collaboration, including archive and search capability
US9812128B2 (en) 2014-10-09 2017-11-07 Google Inc. Device leadership negotiation among voice interface devices
US9318107B1 (en) 2014-10-09 2016-04-19 Google Inc. Hotword detection on multiple devices
US9424841B2 (en) 2014-10-09 2016-08-23 Google Inc. Hotword detection on multiple devices
US9741344B2 (en) 2014-10-20 2017-08-22 Vocalzoom Systems Ltd. System and method for operating devices using voice commands
US20160117386A1 (en) 2014-10-22 2016-04-28 International Business Machines Corporation Discovering terms using statistical corpus analysis
US9576575B2 (en) 2014-10-27 2017-02-21 Toyota Motor Engineering & Manufacturing North America, Inc. Providing voice recognition shortcuts based on user verbal input
CN104360990A (zh) * 2014-10-27 2015-02-18 深圳市金立通信设备有限公司 一种编辑内容的方法
CN104460593B (zh) 2014-10-29 2017-10-10 小米科技有限责任公司 模式切换方法及装置
US9880714B2 (en) 2014-10-30 2018-01-30 Ebay Inc. Dynamic loading of contextual ontologies for predictive touch screen typing
CN105574067B (zh) 2014-10-31 2020-01-21 株式会社东芝 项目推荐装置以及项目推荐方法
CN104374399A (zh) * 2014-10-31 2015-02-25 北京搜狗科技发展有限公司 一种导航信息显示方法和装置
US9646611B2 (en) 2014-11-06 2017-05-09 Microsoft Technology Licensing, Llc Context-based actions
US10572589B2 (en) 2014-11-10 2020-02-25 International Business Machines Corporation Cognitive matching of narrative data
US9842102B2 (en) 2014-11-10 2017-12-12 Oracle International Corporation Automatic ontology generation for natural-language processing applications
GB2532075A (en) 2014-11-10 2016-05-11 Lego As System and method for toy recognition and detection based on convolutional neural networks
JP6720170B2 (ja) 2014-11-11 2020-07-08 ウェビー・コーポレーション スマートスペースのためのシステム及び方法
US9542927B2 (en) 2014-11-13 2017-01-10 Google Inc. Method and system for building text-to-speech voice from diverse recordings
US20160139662A1 (en) 2014-11-14 2016-05-19 Sachin Dabhade Controlling a visual device based on a proximity between a user and the visual device
US10116748B2 (en) 2014-11-20 2018-10-30 Microsoft Technology Licensing, Llc Vehicle-based multi-modal interface
US9361126B1 (en) 2014-11-24 2016-06-07 International Business Machines Corporation Device driver aggregation in operating system deployment
US9258604B1 (en) 2014-11-24 2016-02-09 Facebook, Inc. Commercial detection based on audio fingerprinting
US9886430B2 (en) 2014-11-25 2018-02-06 Microsoft Technology Licensing, Llc Entity based content selection
US10614799B2 (en) 2014-11-26 2020-04-07 Voicebox Technologies Corporation System and method of providing intent predictions for an utterance prior to a system detection of an end of the utterance
US9812126B2 (en) 2014-11-28 2017-11-07 Microsoft Technology Licensing, Llc Device arbitration for listening devices
US10192549B2 (en) 2014-11-28 2019-01-29 Microsoft Technology Licensing, Llc Extending digital personal assistant action providers
CN111757189B (zh) 2014-12-01 2022-07-15 构造数据有限责任公司 用于连续介质片段识别的系统和方法
KR20160065503A (ko) 2014-12-01 2016-06-09 엘지전자 주식회사 이동 단말기 및 그 제어 방법
US10587541B2 (en) 2014-12-02 2020-03-10 Facebook, Inc. Device, method, and graphical user interface for lightweight messaging
US9466297B2 (en) 2014-12-09 2016-10-11 Microsoft Technology Licensing, Llc Communication system
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US20160162569A1 (en) 2014-12-09 2016-06-09 Idibon, Inc. Methods and systems for improving machine learning performance
US9241073B1 (en) 2014-12-09 2016-01-19 Ringcentral, Inc. Systems and methods for managing an event scheduling request in a telephony system
US20160170966A1 (en) 2014-12-10 2016-06-16 Brian Kolo Methods and systems for automated language identification
CN107209549B (zh) 2014-12-11 2020-04-17 微软技术许可有限责任公司 能够实现可动作的消息传送的虚拟助理系统
US9912758B2 (en) 2014-12-16 2018-03-06 Yahoo Holdings, Inc. Continuing an application session on a different device
US9904673B2 (en) 2014-12-17 2018-02-27 International Business Machines Corporation Conversation advisor
JP6230726B2 (ja) 2014-12-18 2017-11-15 三菱電機株式会社 音声認識装置および音声認識方法
US9552816B2 (en) 2014-12-19 2017-01-24 Amazon Technologies, Inc. Application focus in speech-based systems
US9911415B2 (en) 2014-12-19 2018-03-06 Lenovo (Singapore) Pte. Ltd. Executing a voice command during voice input
US10672390B2 (en) 2014-12-22 2020-06-02 Rovi Guides, Inc. Systems and methods for improving speech recognition performance by generating combined interpretations
JP6504808B2 (ja) 2014-12-22 2019-04-24 キヤノン株式会社 撮像装置、音声コマンド機能の設定方法、コンピュータプログラム、及び記憶媒体
US9690542B2 (en) 2014-12-22 2017-06-27 Microsoft Technology Licensing, Llc Scaling digital personal assistant agents across devices
KR20160076201A (ko) 2014-12-22 2016-06-30 엘지전자 주식회사 이동 단말기 및 그 제어 방법
US9811312B2 (en) 2014-12-22 2017-11-07 Intel Corporation Connected device voice command support
US10229356B1 (en) 2014-12-23 2019-03-12 Amazon Technologies, Inc. Error tolerant neural network model compression
US9483388B2 (en) 2014-12-29 2016-11-01 Quixey, Inc. Discovery of application states
US9837081B2 (en) 2014-12-30 2017-12-05 Microsoft Technology Licensing, Llc Discovering capabilities of third-party voice-enabled resources
US10713005B2 (en) 2015-01-05 2020-07-14 Google Llc Multimodal state circulation
US9959129B2 (en) 2015-01-09 2018-05-01 Microsoft Technology Licensing, Llc Headless task completion within digital personal assistants
EP3193328B1 (en) 2015-01-16 2022-11-23 Samsung Electronics Co., Ltd. Method and device for performing voice recognition using grammar model
CN104575501B (zh) 2015-01-19 2017-11-03 北京云知声信息技术有限公司 一种收音机语音操控指令解析方法及系统
KR102305584B1 (ko) 2015-01-19 2021-09-27 삼성전자주식회사 언어 모델 학습 방법 및 장치, 언어 인식 방법 및 장치
US9367541B1 (en) 2015-01-20 2016-06-14 Xerox Corporation Terminological adaptation of statistical machine translation system through automatic generation of phrasal contexts for bilingual terms
CN105869641A (zh) 2015-01-22 2016-08-17 佳能株式会社 语音识别装置及语音识别方法
US9947313B2 (en) 2015-01-26 2018-04-17 William Drewes Method for substantial ongoing cumulative voice recognition error reduction
CN104573472A (zh) 2015-01-30 2015-04-29 深圳市中兴移动通信有限公司 移动终端及其操作方法
US9424412B1 (en) 2015-02-02 2016-08-23 Bank Of America Corporation Authenticating customers using biometrics
US20160227107A1 (en) 2015-02-02 2016-08-04 Lenovo (Singapore) Pte. Ltd. Method and device for notification preview dismissal
US20160225372A1 (en) 2015-02-03 2016-08-04 Samsung Electronics Company, Ltd. Smart home connected device contextual learning using audio commands
US9613022B2 (en) 2015-02-04 2017-04-04 Lenovo (Singapore) Pte. Ltd. Context based customization of word assistance functions
US10062061B2 (en) * 2015-02-05 2018-08-28 Conduent Business Services, Llc Pay-by-phone parking system aided by a vision based monitoring device
CN104679472A (zh) 2015-02-13 2015-06-03 百度在线网络技术(北京)有限公司 人机语音交互方法和装置
US10121472B2 (en) 2015-02-13 2018-11-06 Knowles Electronics, Llc Audio buffer catch-up apparatus and method with two microphones
KR101678087B1 (ko) 2015-02-16 2016-11-23 현대자동차주식회사 차량 및 그 제어방법
KR20160101826A (ko) 2015-02-17 2016-08-26 삼성전자주식회사 멀티 유저 기반의 전자 장치
JP2016151928A (ja) 2015-02-18 2016-08-22 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
US9554356B2 (en) 2015-02-19 2017-01-24 Microsoft Technology Licensing, Llc Personalized reminders
US10339440B2 (en) 2015-02-19 2019-07-02 Digital Reasoning Systems, Inc. Systems and methods for neural language modeling
US9928232B2 (en) 2015-02-27 2018-03-27 Microsoft Technology Licensing, Llc Topically aware word suggestions
CN107408045B (zh) 2015-02-27 2022-10-04 三星电子株式会社 控制安装有多个操作系统的设备的方法和该设备
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US9911412B2 (en) 2015-03-06 2018-03-06 Nuance Communications, Inc. Evidence-based natural language input recognition
US10152299B2 (en) 2015-03-06 2018-12-11 Apple Inc. Reducing response latency of intelligent automated assistants
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US10216351B2 (en) 2015-03-08 2019-02-26 Apple Inc. Device configuration user interface
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US20160266871A1 (en) 2015-03-11 2016-09-15 Adapx, Inc. Speech recognizer for multimodal systems and signing in/out with and /or for a digital pen
US9805713B2 (en) 2015-03-13 2017-10-31 Google Inc. Addressing missing features in models
US9984686B1 (en) 2015-03-17 2018-05-29 Amazon Technologies, Inc. Mapping device capabilities to a predefined set
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US10721517B2 (en) 2015-03-20 2020-07-21 Liuzhou Guitong Technology Co., Ltd. Method and system for synchronously reproducing multimedia multi-information
CN104869342A (zh) 2015-06-09 2015-08-26 柳州桂通科技股份有限公司 一种多媒体多信息同步重现的方法及其应用
US20160286045A1 (en) 2015-03-23 2016-09-29 Vonage Network Llc System and method for providing an informative message when rejecting an incoming call
US9703394B2 (en) 2015-03-24 2017-07-11 Google Inc. Unlearning techniques for adaptive language models in text entry
US10063510B2 (en) 2015-03-24 2018-08-28 Facebook, Inc. Techniques to share and remix media through a messaging system
US9672725B2 (en) 2015-03-25 2017-06-06 Microsoft Technology Licensing, Llc Proximity-based reminders
US20160284005A1 (en) 2015-03-25 2016-09-29 Facebook, Inc. Techniques for product, service, and business recommendation
US10261482B2 (en) 2015-03-26 2019-04-16 Ca, Inc. Initiating actions on wearable devices
US10133538B2 (en) 2015-03-27 2018-11-20 Sri International Semi-supervised speaker diarization
US20160293157A1 (en) 2015-03-30 2016-10-06 Google Inc. Contextual Voice Action History
US9484021B1 (en) 2015-03-30 2016-11-01 Amazon Technologies, Inc. Disambiguation in speech recognition
US10192546B1 (en) 2015-03-30 2019-01-29 Amazon Technologies, Inc. Pre-wakeword speech processing
TWI525532B (zh) 2015-03-30 2016-03-11 Yu-Wei Chen Set the name of the person to wake up the name for voice manipulation
US20170047063A1 (en) 2015-03-31 2017-02-16 Sony Corporation Information processing apparatus, control method, and program
US20160322044A1 (en) 2015-04-01 2016-11-03 Elwha Llc Networked User Command Recognition
US20170032783A1 (en) 2015-04-01 2017-02-02 Elwha Llc Hierarchical Networked Command Recognition
CN106463112B (zh) 2015-04-10 2020-12-08 华为技术有限公司 语音识别方法、语音唤醒装置、语音识别装置及终端
US10021209B2 (en) 2015-04-10 2018-07-10 Open Text Sa Ulc Systems and methods for caching of managed content in a distributed environment using a multi-tiered architecture
US9678664B2 (en) 2015-04-10 2017-06-13 Google Inc. Neural network for keyboard input decoding
US10095683B2 (en) 2015-04-10 2018-10-09 Facebook, Inc. Contextual speller models on online social networks
US10049099B2 (en) 2015-04-10 2018-08-14 Facebook, Inc. Spell correction with hidden markov models on online social networks
US20160299977A1 (en) 2015-04-13 2016-10-13 Quixey, Inc. Action-Based App Recommendation Engine
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US10218651B2 (en) 2015-04-20 2019-02-26 Oracle International Corporation Virtual assistance for chat agents
KR102269035B1 (ko) 2015-04-21 2021-06-24 삼성전자주식회사 서버 및 서버의 그룹 액션 제어방법
US9472196B1 (en) 2015-04-22 2016-10-18 Google Inc. Developer voice actions system
US10083213B1 (en) 2015-04-27 2018-09-25 Intuit Inc. Method and system for routing a question based on analysis of the question content and predicted user satisfaction with answer content before the answer content is generated
WO2016175354A1 (ko) 2015-04-29 2016-11-03 주식회사 아카인텔리전스 인공지능 대화 장치 및 방법
GB2537903B (en) 2015-04-30 2019-09-04 Toshiba Res Europe Limited Device and method for a spoken dialogue system
US11010768B2 (en) 2015-04-30 2021-05-18 Oracle International Corporation Character-based attribute value extraction system
US9953063B2 (en) 2015-05-02 2018-04-24 Lithium Technologies, Llc System and method of providing a content discovery platform for optimizing social network engagements
US20160328205A1 (en) 2015-05-05 2016-11-10 Motorola Mobility Llc Method and Apparatus for Voice Operation of Mobile Applications Having Unnamed View Elements
CN104867492B (zh) 2015-05-07 2019-09-03 科大讯飞股份有限公司 智能交互系统及方法
US9892363B2 (en) 2015-05-07 2018-02-13 Truemotion, Inc. Methods and systems for sensor-based driving data collection
US10685471B2 (en) 2015-05-11 2020-06-16 Facebook, Inc. Methods and systems for playing video while transitioning from a content-item preview to the content item
US9953648B2 (en) 2015-05-11 2018-04-24 Samsung Electronics Co., Ltd. Electronic device and method for controlling the same
US9761220B2 (en) 2015-05-13 2017-09-12 Microsoft Technology Licensing, Llc Language modeling based on spoken and unspeakable corpuses
US9906482B2 (en) 2015-05-13 2018-02-27 The Travelers Indemnity Company Predictive electronic message management systems and controllers
US20160337299A1 (en) 2015-05-13 2016-11-17 Google Inc. Prioritized notification display
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
KR20160136013A (ko) 2015-05-19 2016-11-29 엘지전자 주식회사 이동 단말기 및 그 제어 방법
EP3300074B1 (en) 2015-05-19 2019-08-21 Sony Corporation Information processing apparatus
US10446142B2 (en) 2015-05-20 2019-10-15 Microsoft Technology Licensing, Llc Crafting feedback dialogue with a digital assistant
US10061848B2 (en) 2015-05-22 2018-08-28 Microsoft Technology Licensing, Llc Ontology-crowd-relevance deep response generation
EP3304440B1 (en) 2015-05-27 2021-05-19 Orion Labs Intelligent agent features for wearable personal communication nodes
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10097973B2 (en) 2015-05-27 2018-10-09 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US9408182B1 (en) 2015-05-28 2016-08-02 Google Inc. Third party action triggers
US9552547B2 (en) 2015-05-29 2017-01-24 Sas Institute Inc. Normalizing electronic communications using a neural-network normalizer and a neural-network flagger
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10755032B2 (en) 2015-06-05 2020-08-25 Apple Inc. Indexing web pages with deep links
US9578173B2 (en) 2015-06-05 2017-02-21 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US10505884B2 (en) 2015-06-05 2019-12-10 Microsoft Technology Licensing, Llc Entity classification and/or relationship identification
US9865265B2 (en) 2015-06-06 2018-01-09 Apple Inc. Multi-microphone speech recognition systems and related techniques
US20160357861A1 (en) 2015-06-07 2016-12-08 Apple Inc. Natural language event detection
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US20160365101A1 (en) 2015-06-15 2016-12-15 Motorola Mobility Llc Enabling Event Driven Voice Interaction with a Device
US20160371250A1 (en) 2015-06-16 2016-12-22 Microsoft Technology Licensing, Llc Text suggestion using a predictive grammar model
WO2016205338A1 (en) 2015-06-18 2016-12-22 Amgine Technologies (Us), Inc. Managing interactions between users and applications
US9818409B2 (en) 2015-06-19 2017-11-14 Google Inc. Context-dependent modeling of phonemes
US9767386B2 (en) 2015-06-23 2017-09-19 Adobe Systems Incorporated Training a classifier algorithm used for automatically generating tags to be applied to images
CN104951077A (zh) 2015-06-24 2015-09-30 百度在线网络技术(北京)有限公司 基于人工智能的人机交互方法、装置和终端设备
WO2016206747A1 (en) 2015-06-25 2016-12-29 Intel IP Corporation A mobile communications device and a method for controlling a mobile communications device receiver
KR102317526B1 (ko) 2015-06-25 2021-10-26 엘지전자 주식회사 헤드셋 및 그 제어 방법
US20160379638A1 (en) 2015-06-26 2016-12-29 Amazon Technologies, Inc. Input speech quality matching
US10325590B2 (en) 2015-06-26 2019-06-18 Intel Corporation Language model modification for local speech recognition systems using remote sources
US20160379641A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Auto-Generation of Notes and Tasks From Passive Recording
US10019992B2 (en) 2015-06-29 2018-07-10 Disney Enterprises, Inc. Speech-controlled actions based on keywords and context thereof
US9881613B2 (en) 2015-06-29 2018-01-30 Google Llc Privacy-preserving training corpus selection
US10134425B1 (en) 2015-06-29 2018-11-20 Amazon Technologies, Inc. Direction-based speech endpointing
US20160378747A1 (en) 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US10121471B2 (en) 2015-06-29 2018-11-06 Amazon Technologies, Inc. Language model speech endpointing
WO2017004204A1 (en) 2015-06-30 2017-01-05 K4Connect Inc. Home automation (ha) system including desired scene implementation based upon user-selectable list of addressable ha devices and related methods
US9536527B1 (en) 2015-06-30 2017-01-03 Amazon Technologies, Inc. Reporting operational metrics in speech-based systems
KR102371188B1 (ko) 2015-06-30 2022-03-04 삼성전자주식회사 음성 인식 장치 및 방법과 전자 장치
US9998597B2 (en) 2015-07-06 2018-06-12 Nuance Communications, Inc. Systems and methods for facilitating communication using an interactive communication system
US10073887B2 (en) 2015-07-06 2018-09-11 Conduent Business Services, Llc System and method for performing k-nearest neighbor search based on minimax distance measure and efficient outlier detection
CN105100356B (zh) 2015-07-07 2018-04-06 上海斐讯数据通信技术有限公司 一种音量自动调节的方法和系统
JP2017019331A (ja) 2015-07-08 2017-01-26 Ntn株式会社 車両用モータ駆動装置
US20170011303A1 (en) 2015-07-09 2017-01-12 Qualcomm Incorporated Contact-Based Predictive Response
US10249297B2 (en) 2015-07-13 2019-04-02 Microsoft Technology Licensing, Llc Propagating conversational alternatives using delayed hypothesis binding
CN104967748B (zh) 2015-07-13 2018-10-23 宁波萨瑞通讯有限公司 一种安全操作应用服务的方法
US10426037B2 (en) 2015-07-15 2019-09-24 International Business Machines Corporation Circuitized structure with 3-dimensional configuration
CN106373575B (zh) 2015-07-23 2020-07-21 阿里巴巴集团控股有限公司 一种用户声纹模型构建方法、装置及系统
US10686738B2 (en) 2015-07-24 2020-06-16 Facebook, Inc. Providing personal assistant service via messaging
US10311384B2 (en) 2015-07-29 2019-06-04 Microsoft Technology Licensing, Llc Automatic creation and maintenance of a taskline
KR20170014297A (ko) 2015-07-29 2017-02-08 엘지전자 주식회사 와치 타입의 이동 단말기 및 그 제어 방법
US10255921B2 (en) 2015-07-31 2019-04-09 Google Llc Managing dialog data providers
US20170039283A1 (en) 2015-08-03 2017-02-09 Microsoft Technology Licensing, Llc Searching Based on the Persona of Another
US9691361B2 (en) 2015-08-03 2017-06-27 International Business Machines Corporation Adjusting presentation of content on a display
JP5906345B1 (ja) 2015-08-05 2016-04-20 株式会社Cygames 操作履歴に基づいてタッチ対象を予測するプログラム、電子装置、システム及び制御方法
US10248308B2 (en) 2015-08-10 2019-04-02 Apple Inc. Devices, methods, and graphical user interfaces for manipulating user interfaces with physical gestures
KR102386854B1 (ko) 2015-08-20 2022-04-13 삼성전자주식회사 통합 모델 기반의 음성 인식 장치 및 방법
US10572073B2 (en) 2015-08-24 2020-02-25 Sony Corporation Information processing device, information processing method, and program
US10362978B2 (en) 2015-08-28 2019-07-30 Comcast Cable Communications, Llc Computational model for mood
US20170061423A1 (en) 2015-09-01 2017-03-02 Bank Of America Corporation Use of wearable as an account control system
US10339917B2 (en) 2015-09-03 2019-07-02 Google Llc Enhanced speech endpointing
US9531862B1 (en) 2015-09-04 2016-12-27 Vishal Vadodaria Contextual linking module with interactive intelligent agent for managing communications with contacts and navigation features
US10740384B2 (en) 2015-09-08 2020-08-11 Apple Inc. Intelligent automated assistant for media search and playback
US10331312B2 (en) 2015-09-08 2019-06-25 Apple Inc. Intelligent automated assistant in a media environment
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10026399B2 (en) 2015-09-11 2018-07-17 Amazon Technologies, Inc. Arbitration between voice-enabled devices
CN106534469A (zh) 2015-09-11 2017-03-22 昆明我行科技有限公司 一种为智能手机实现电话通讯功能扩展的方法及电子设备
US9736318B2 (en) 2015-09-16 2017-08-15 International Business Machines Corporation Adaptive voice-text transmission
US9665567B2 (en) 2015-09-21 2017-05-30 International Business Machines Corporation Suggesting emoji characters based on current contextual emotional state of user
US9875081B2 (en) 2015-09-21 2018-01-23 Amazon Technologies, Inc. Device selection for providing a response
US9734142B2 (en) 2015-09-22 2017-08-15 Facebook, Inc. Universal translation
US20170085547A1 (en) 2015-09-22 2017-03-23 International Business Machines Corporation Storing, indexing and recalling data based on brain activity
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US9990040B2 (en) 2015-09-25 2018-06-05 Immersion Corporation Haptic CAPTCHA
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US10425768B2 (en) 2015-09-30 2019-09-24 Lenovo (Singapore) Pte. Ltd. Adjusting audio output volume based on a detected presence of another device
US20170092278A1 (en) 2015-09-30 2017-03-30 Apple Inc. Speaker recognition
US20170091612A1 (en) 2015-09-30 2017-03-30 Apple Inc. Proactive assistant with memory assistance
US10970646B2 (en) 2015-10-01 2021-04-06 Google Llc Action suggestions for user-selected content
US20170102837A1 (en) 2015-10-07 2017-04-13 Spotify Ab Dynamic control of playlists using wearable devices
US10083685B2 (en) 2015-10-13 2018-09-25 GM Global Technology Operations LLC Dynamically adding or removing functionality to speech recognition systems
US10891106B2 (en) 2015-10-13 2021-01-12 Google Llc Automatic batch voice commands
KR102405793B1 (ko) 2015-10-15 2022-06-08 삼성전자 주식회사 음성 신호 인식 방법 및 이를 제공하는 전자 장치
GB2557532A (en) 2015-10-21 2018-06-20 Google Llc Parameter collection and automatic dialog generation in dialog systems
WO2017070535A1 (en) 2015-10-22 2017-04-27 Knowles Electronics, Llc Microphone with programmable phone onset detection engine
EP3369002A4 (en) 2015-10-26 2019-06-12 24/7 Customer, Inc. METHOD AND DEVICE FOR FACILITATING THE PREDICTION OF CUSTOMER VISIONS
US10146874B2 (en) 2015-10-28 2018-12-04 Fujitsu Limited Refining topic representations
CN106657521A (zh) 2015-10-30 2017-05-10 中兴通讯股份有限公司 一种智能设备语音交流方法、装置和系统
US20170125016A1 (en) 2015-11-02 2017-05-04 Le Holdings (Beijing) Co., Ltd. Method and electronic device for processing voice messages
US9691378B1 (en) 2015-11-05 2017-06-27 Amazon Technologies, Inc. Methods and devices for selectively ignoring captured audio data
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10956666B2 (en) 2015-11-09 2021-03-23 Apple Inc. Unconventional virtual assistant interactions
US9804681B2 (en) 2015-11-10 2017-10-31 Motorola Mobility Llc Method and system for audible delivery of notifications partially presented on an always-on display
KR102432620B1 (ko) 2015-11-12 2022-08-16 삼성전자주식회사 외부 객체의 근접에 따른 동작을 수행하는 전자 장치 및 그 방법
US10769189B2 (en) 2015-11-13 2020-09-08 Microsoft Technology Licensing, Llc Computer speech recognition and semantic understanding from activity patterns
US9940934B2 (en) 2015-11-18 2018-04-10 Uniphone Software Systems Adaptive voice authentication system and method
US9697393B2 (en) 2015-11-20 2017-07-04 Symbol Technologies, Llc Methods and systems for adjusting mobile-device operating parameters based on housing-support type
US10255611B2 (en) 2015-11-20 2019-04-09 International Business Machines Corporation Determining pricing using categorized costs with tree structures
US9792907B2 (en) 2015-11-24 2017-10-17 Intel IP Corporation Low resource key phrase detection for wake on voice
CN105430186A (zh) 2015-11-27 2016-03-23 东莞酷派软件技术有限公司 一种拒接短信的发送方法及系统
CN105897675A (zh) 2015-11-27 2016-08-24 乐视云计算有限公司 视频服务提供方法、访问鉴权方法及服务器和系统
KR102450853B1 (ko) 2015-11-30 2022-10-04 삼성전자주식회사 음성 인식 장치 및 방법
US10546015B2 (en) 2015-12-01 2020-01-28 Facebook, Inc. Determining and utilizing contextual meaning of digital standardized image characters
US9946862B2 (en) 2015-12-01 2018-04-17 Qualcomm Incorporated Electronic device generating notification based on context data in response to speech phrase from user
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10229671B2 (en) 2015-12-02 2019-03-12 GM Global Technology Operations LLC Prioritized content loading for vehicle automatic speech recognition systems
KR102535044B1 (ko) 2015-12-08 2023-05-23 삼성전자주식회사 단말장치, 서버 및 이벤트 제안방법
US10796693B2 (en) 2015-12-09 2020-10-06 Lenovo (Singapore) Pte. Ltd. Modifying input based on determined characteristics
US9990921B2 (en) 2015-12-09 2018-06-05 Lenovo (Singapore) Pte. Ltd. User focus activated voice recognition
US10685170B2 (en) 2015-12-16 2020-06-16 Microsoft Technology Licensing, Llc Dynamic content layout generator
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US10013416B1 (en) 2015-12-18 2018-07-03 Amazon Technologies, Inc. Language based solution agent
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
KR102423588B1 (ko) 2015-12-28 2022-07-22 삼성전자주식회사 정보 제공 방법 및 장치
CN108701125A (zh) 2015-12-29 2018-10-23 Mz知识产权控股有限责任公司 用于建议表情符号的系统和方法
US9716795B1 (en) 2015-12-30 2017-07-25 Qualcomm Incorporated Diversion of a call to a wearable device
US20170193083A1 (en) 2016-01-06 2017-07-06 International Business Machines Corporation Identifying message content related to an event utilizing natural language processing and performing an action pertaining to the event
US10382729B2 (en) 2016-01-06 2019-08-13 Vivint, Inc. Home automation system-initiated calls
JP2017123564A (ja) 2016-01-07 2017-07-13 ソニー株式会社 制御装置、表示装置、方法及びプログラム
US9792534B2 (en) 2016-01-13 2017-10-17 Adobe Systems Incorporated Semantic natural language vector space
US9747289B2 (en) 2016-01-13 2017-08-29 Disney Enterprises, Inc. System and method for proximity-based personalized content recommendations
CN105718448B (zh) 2016-01-13 2019-03-19 北京新美互通科技有限公司 一种对输入字符进行自动翻译的方法和装置
US20170206899A1 (en) 2016-01-20 2017-07-20 Fitbit, Inc. Better communication channel for requests and responses having an intelligent agent
US20170235361A1 (en) 2016-01-20 2017-08-17 Panasonic Automotive Systems Company Of America, Division Of Panasonic Corporation Of North America Interaction based on capturing user intent via eye gaze
KR102490548B1 (ko) 2016-01-25 2023-01-19 삼성전자주식회사 사용자 단말 장치 및 그 제어 방법
US9922647B2 (en) 2016-01-29 2018-03-20 International Business Machines Corporation Approach to reducing the response time of a speech interface
US10182155B2 (en) 2016-02-03 2019-01-15 At&T Intellectual Property I, L.P. Directing care calls using historical call backs, demographics and real time attributes
KR102495523B1 (ko) 2016-02-04 2023-02-03 삼성전자 주식회사 음성 명령을 처리하는 방법 및 이를 제공하는 전자 장치
US10055489B2 (en) 2016-02-08 2018-08-21 Ebay Inc. System and method for content-based media analysis
US9858927B2 (en) 2016-02-12 2018-01-02 Amazon Technologies, Inc Processing spoken commands to control distributed audio outputs
US10431218B2 (en) 2016-02-15 2019-10-01 EVA Automation, Inc. Integration and probabilistic control of electronic devices
US9858129B2 (en) 2016-02-16 2018-01-02 International Business Machines Corporation Dynamic copy content retrieval
US11023680B2 (en) 2016-02-17 2021-06-01 The King Abdulaziz City For Science And Technology (Kacst) Method and system for detecting semantic errors in a text using artificial neural networks
KR20170096774A (ko) 2016-02-17 2017-08-25 이준영 전자기기의 사용자 행동기반 정황인식 작동모드
KR102041063B1 (ko) 2016-02-18 2019-11-05 소니 주식회사 정보 처리 장치, 정보 처리 방법 및 프로그램
US9947316B2 (en) 2016-02-22 2018-04-17 Sonos, Inc. Voice control of a media playback system
US9965247B2 (en) 2016-02-22 2018-05-08 Sonos, Inc. Voice controlled media playback system based on user profile
US9772817B2 (en) 2016-02-22 2017-09-26 Sonos, Inc. Room-corrected voice detection
US20180063308A1 (en) 2016-02-23 2018-03-01 Bioworld Merchandising System and Method for Voice Recognition
US9779735B2 (en) 2016-02-24 2017-10-03 Google Inc. Methods and systems for detecting and processing speech signals
US9922648B2 (en) 2016-03-01 2018-03-20 Google Llc Developer voice actions system
US10404829B2 (en) 2016-03-11 2019-09-03 Wipro Limited Method and system for achieving improved quality of service (QoS) for content delivery in a SDN controller based communication network
DK201670539A1 (en) 2016-03-14 2017-10-02 Apple Inc Dictation that allows editing
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
KR102190856B1 (ko) 2016-03-14 2020-12-14 애플 인크. 크리덴셜을 제공하는 음성 입력의 식별
US10210862B1 (en) 2016-03-21 2019-02-19 Amazon Technologies, Inc. Lattice decoding and result confirmation using recurrent neural networks
US10304444B2 (en) 2016-03-23 2019-05-28 Amazon Technologies, Inc. Fine-grained natural language understanding
US11089132B2 (en) 2016-03-29 2021-08-10 Microsoft Technology Licensing, Llc Extensibility for context-aware digital personal assistant
US20170286397A1 (en) 2016-03-30 2017-10-05 International Business Machines Corporation Predictive Embeddings
US10979843B2 (en) 2016-04-08 2021-04-13 Qualcomm Incorporated Spatialized audio output based on predicted position data
US20170308609A1 (en) 2016-04-21 2017-10-26 Microsoft Technology Licensing, Llc Multi-result ranking exploration
EP3434024B1 (en) 2016-04-21 2023-08-02 Hewlett-Packard Development Company, L.P. Electronic device microphone listening modes
US20170311005A1 (en) 2016-04-26 2017-10-26 Szu-Tung Lin Method of wireless audio transmission and playback
US10431205B2 (en) 2016-04-27 2019-10-01 Conduent Business Services, Llc Dialog device with dialog support generated using a mixture of language models combined using a recurrent neural network
ES2964705T3 (es) 2016-05-06 2024-04-09 Univ Leland Stanford Junior Plataformas móviles y portátiles de captura y retroalimentación de vídeo para la terapia de trastornos mentales
US10332516B2 (en) 2016-05-10 2019-06-25 Google Llc Media transfer among media output devices
RU2632144C1 (ru) 2016-05-12 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Компьютерный способ создания интерфейса рекомендации контента
US10217464B2 (en) 2016-05-13 2019-02-26 Koninklijke Philips N.V. Vocabulary generation system
US20170329466A1 (en) 2016-05-13 2017-11-16 Sap Se User interface application and digital assistant
US10534635B2 (en) 2016-05-13 2020-01-14 Sap Se Personal digital assistant
KR20170128820A (ko) 2016-05-16 2017-11-24 엘지전자 주식회사 이동단말기 및 그 제어방법
US11416212B2 (en) 2016-05-17 2022-08-16 Microsoft Technology Licensing, Llc Context-based user agent
US10417566B2 (en) 2016-05-22 2019-09-17 Microsoft Technology Licensing, Llc Self-learning technique for training a PDA component and a simulated user component
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US10832665B2 (en) 2016-05-27 2020-11-10 Centurylink Intellectual Property Llc Internet of things (IoT) human interface apparatus, system, and method
US9922655B2 (en) 2016-05-31 2018-03-20 International Business Machines Corporation System, method, and recording medium for controlling dialogue interruptions by a speech output device
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US11227589B2 (en) 2016-06-06 2022-01-18 Apple Inc. Intelligent list reading
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
GB2583988B (en) 2016-06-06 2021-03-31 Cirrus Logic Int Semiconductor Ltd Voice user interface
CN107480161A (zh) 2016-06-08 2017-12-15 苹果公司 用于媒体探究的智能自动化助理
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
DK179588B1 (en) 2016-06-09 2019-02-22 Apple Inc. INTELLIGENT AUTOMATED ASSISTANT IN A HOME ENVIRONMENT
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10592601B2 (en) 2016-06-10 2020-03-17 Apple Inc. Multilingual word prediction
US10127926B2 (en) 2016-06-10 2018-11-13 Google Llc Securely executing voice actions with speaker identification and authentication input types
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10586535B2 (en) 2016-06-10 2020-03-10 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
CN113238707A (zh) 2016-06-11 2021-08-10 苹果公司 具有数字助理的应用集成
DK179049B1 (en) 2016-06-11 2017-09-18 Apple Inc Data driven natural language event detection and classification
DK179343B1 (en) 2016-06-11 2018-05-14 Apple Inc Intelligent task discovery
AU2017100486C4 (en) 2016-06-11 2019-09-05 Apple Inc. Intelligent device arbitration and control
DK179415B1 (en) 2016-06-11 2018-06-14 Apple Inc Intelligent device arbitration and control
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
DK201670608A1 (en) 2016-06-12 2018-01-02 Apple Inc User interfaces for retrieving contextually relevant media content
WO2017218194A1 (en) 2016-06-12 2017-12-21 Apple Inc. User interfaces for retrieving contextually relevant media content
US10257314B2 (en) 2016-06-22 2019-04-09 Microsoft Technology Licensing, Llc End-to-end user experiences with a digital assistant
US11232136B2 (en) 2016-06-27 2022-01-25 Google Llc Contextual voice search suggestions
US10332513B1 (en) 2016-06-27 2019-06-25 Amazon Technologies, Inc. Voice enablement and disablement of speech processing functionality
US10271093B1 (en) 2016-06-27 2019-04-23 Amazon Technologies, Inc. Systems and methods for routing content to an associated output device
US10200397B2 (en) 2016-06-28 2019-02-05 Microsoft Technology Licensing, Llc Robust matching for identity screening
US9990176B1 (en) 2016-06-28 2018-06-05 Amazon Technologies, Inc. Latency reduction for content playback
US10491598B2 (en) 2016-06-30 2019-11-26 Amazon Technologies, Inc. Multi-factor authentication to access services
US20180007096A1 (en) 2016-06-30 2018-01-04 Microsoft Technology Licensing, Llc Weighted data center reselection
GB201611380D0 (en) 2016-06-30 2016-08-17 Microsoft Technology Licensing Llc Artificial neural network with side input for language modelling and prediction
US9934777B1 (en) 2016-07-01 2018-04-03 Amazon Technologies, Inc. Customized speech processing language models
WO2018009397A1 (en) 2016-07-06 2018-01-11 Pcms Holdings, Inc. System and method for customizing smart home speech interfaces using personalized speech profiles
US10467114B2 (en) 2016-07-14 2019-11-05 International Business Machines Corporation Hierarchical data processor tester
US9825801B1 (en) 2016-07-22 2017-11-21 Spotify Ab Systems and methods for using seektables to stream media items
US10303772B2 (en) 2016-07-29 2019-05-28 International Business Machines Corporation Measuring mutual understanding in human-computer conversation
US10387461B2 (en) 2016-08-16 2019-08-20 Google Llc Techniques for suggesting electronic messages based on user activity and other context
US9967382B2 (en) 2016-08-19 2018-05-08 Amazon Technologies, Inc. Enabling voice control of telephone device
US20180060312A1 (en) 2016-08-23 2018-03-01 Microsoft Technology Licensing, Llc Providing ideogram translation
US10110272B2 (en) 2016-08-24 2018-10-23 Centurylink Intellectual Property Llc Wearable gesture control device and method
US10313779B2 (en) 2016-08-26 2019-06-04 Bragi GmbH Voice assistant system for wireless earpieces
US11200026B2 (en) 2016-08-26 2021-12-14 Bragi GmbH Wireless earpiece with a passive virtual assistant
US10192551B2 (en) 2016-08-30 2019-01-29 Google Llc Using textual input and user state information to generate reply content to present in response to the textual input
US10546066B2 (en) 2016-08-31 2020-01-28 Microsoft Technology Licensing, Llc End-to-end learning of dialogue agents for information access
US10217462B2 (en) 2016-08-31 2019-02-26 Microsoft Technology Licensing, Llc Automating natural language task/dialog authoring by leveraging existing content
US10474753B2 (en) 2016-09-07 2019-11-12 Apple Inc. Language identification using recurrent neural networks
CN107809372A (zh) 2016-09-08 2018-03-16 阿里巴巴集团控股有限公司 活动提醒消息的生成方法、活动提醒方法及装置
US10403273B2 (en) 2016-09-09 2019-09-03 Oath Inc. Method and system for facilitating a guided dialog between a user and a conversational agent
US20180089166A1 (en) 2016-09-23 2018-03-29 Apple Inc. User interface for providing text prediction
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10846618B2 (en) 2016-09-23 2020-11-24 Google Llc Smart replies using an on-device model
US20180088969A1 (en) 2016-09-28 2018-03-29 Lenovo (Singapore) Pte. Ltd. Method and device for presenting instructional content
US9786271B1 (en) 2016-09-28 2017-10-10 International Business Machines Corporation Voice pattern coding sequence and cataloging voice matching system
JP6683893B2 (ja) 2016-10-03 2020-04-22 グーグル エルエルシー デバイストポロジーに基づく音声コマンドの処理
US10304463B2 (en) 2016-10-03 2019-05-28 Google Llc Multi-user personalization at a voice interface device
JP2018063537A (ja) 2016-10-12 2018-04-19 株式会社東芝 ホームネットワーク、電子機器、処理装置および表示方法
US10372814B2 (en) 2016-10-18 2019-08-06 International Business Machines Corporation Methods and system for fast, adaptive correction of misspells
US11392598B2 (en) 2016-10-19 2022-07-19 Ebay Inc. Applying a quantitative range for qualitative terms
CN106484139B (zh) 2016-10-19 2019-01-29 北京新美互通科技有限公司 表情符号推荐方法及装置
US10678502B2 (en) 2016-10-20 2020-06-09 Qualcomm Incorporated Systems and methods for in-ear control of remote devices
US10950230B2 (en) 2016-10-28 2021-03-16 Panasonic Intellectual Property Corporation Of America Information processing device and information processing method
US10469665B1 (en) 2016-11-01 2019-11-05 Amazon Technologies, Inc. Workflow based communications routing
US20180121432A1 (en) 2016-11-02 2018-05-03 Microsoft Technology Licensing, Llc Digital assistant integration with music services
US10783883B2 (en) 2016-11-03 2020-09-22 Google Llc Focus session at a voice interface device
US10777201B2 (en) 2016-11-04 2020-09-15 Microsoft Technology Licensing, Llc Voice enabled bot platform
US10776714B2 (en) 2016-11-04 2020-09-15 Google Llc Constructing and processing computational graphs for dynamically structured machine learning models
US10127908B1 (en) 2016-11-11 2018-11-13 Amazon Technologies, Inc. Connected accessory for a voice-controlled device
US10515632B2 (en) 2016-11-15 2019-12-24 At&T Intellectual Property I, L.P. Asynchronous virtual assistant
KR102501714B1 (ko) 2016-11-16 2023-02-21 삼성전자주식회사 사용자의 음성 입력에 대한 답변 메시지를 제공하는 디바이스 및 방법
US10170110B2 (en) 2016-11-17 2019-01-01 Robert Bosch Gmbh System and method for ranking of hybrid speech recognition results with neural networks
US10332523B2 (en) 2016-11-18 2019-06-25 Google Llc Virtual assistant identification of nearby computing devices
US10230841B2 (en) 2016-11-22 2019-03-12 Apple Inc. Intelligent digital assistant for declining an incoming call
EP3545374A4 (en) 2016-11-23 2019-12-18 Alarm.com Incorporated DETECTION OF AUTHORIZED USER PRESENCE AND HANDLING OF UN AUTHENTICATED MONITORING SYSTEM COMMANDS
US10331791B2 (en) 2016-11-23 2019-06-25 Amazon Technologies, Inc. Service for developing dialog-driven applications
KR20180060328A (ko) 2016-11-28 2018-06-07 삼성전자주식회사 멀티 모달 입력을 처리하는 전자 장치, 멀티 모달 입력을 처리하는 방법 및 멀티 모달 입력을 처리하는 서버
GB201620235D0 (en) 2016-11-29 2017-01-11 Microsoft Technology Licensing Llc Neural network data entry system
US9934785B1 (en) 2016-11-30 2018-04-03 Spotify Ab Identification of taste attributes from an audio signal
US11281993B2 (en) 2016-12-05 2022-03-22 Apple Inc. Model and ensemble compression for metric learning
US20180158548A1 (en) 2016-12-07 2018-06-07 B9 Systems, LLC Data processing systems for scheduling work shifts, such as physician work shifts
JP6795387B2 (ja) 2016-12-14 2020-12-02 パナソニック株式会社 音声対話装置、音声対話方法、音声対話プログラム及びロボット
US10521245B2 (en) 2016-12-18 2019-12-31 Oracle International Corporation Method and system for recursive plug-in application recipe generation
JP2018101828A (ja) 2016-12-19 2018-06-28 船井電機株式会社 制御装置
US11237696B2 (en) 2016-12-19 2022-02-01 Google Llc Smart assist for repeated actions
US10216832B2 (en) 2016-12-19 2019-02-26 Interactions Llc Underspecification of intents in a natural language processing system
US10032451B1 (en) 2016-12-20 2018-07-24 Amazon Technologies, Inc. User recognition for speech processing systems
US20190182176A1 (en) 2016-12-21 2019-06-13 Facebook, Inc. User Authentication with Voiceprints on Online Social Networks
WO2018118442A1 (en) 2016-12-21 2018-06-28 Google Llc Acoustic-to-word neural network speech recognizer
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US10186266B1 (en) 2016-12-28 2019-01-22 Amazon Technologies, Inc. Message playback using a shared device
US10210864B2 (en) 2016-12-29 2019-02-19 T-Mobile Usa, Inc. Voice command for communication between related devices
WO2018123067A1 (ja) 2016-12-29 2018-07-05 ヤマハ株式会社 コマンドデータ送信装置、ローカルエリア装置、機器制御システム、コマンドデータ送信装置の制御方法、ローカルエリア装置の制御方法、機器制御方法、及びプログラム
US10115396B2 (en) 2017-01-03 2018-10-30 Logitech Europe, S.A. Content streaming system
US11204787B2 (en) 2017-01-09 2021-12-21 Apple Inc. Application integration with a digital assistant
US9747083B1 (en) 2017-01-23 2017-08-29 Essential Products, Inc. Home device application programming interface
US10136364B2 (en) 2017-01-24 2018-11-20 Essential Products, Inc. Media and communications in a connected environment
US10146768B2 (en) 2017-01-25 2018-12-04 Google Llc Automatic suggested responses to images received in messages using language model
US11151130B2 (en) 2017-02-04 2021-10-19 Tata Consultancy Services Limited Systems and methods for assessing quality of input text using recurrent neural networks
US10467509B2 (en) 2017-02-14 2019-11-05 Microsoft Technology Licensing, Llc Computationally-efficient human-identifying smart assistant computer
US11100384B2 (en) 2017-02-14 2021-08-24 Microsoft Technology Licensing, Llc Intelligent device user interactions
CN106776581B (zh) 2017-02-21 2020-01-24 浙江工商大学 基于深度学习的主观性文本情感分析方法
US11314898B2 (en) 2017-02-28 2022-04-26 Samsung Electronics Co., Ltd. Operating method of electronic device for function execution based on voice command in locked state and electronic device supporting the same
KR20180101063A (ko) 2017-03-03 2018-09-12 삼성전자주식회사 사용자 입력을 처리하는 전자 장치 및 그 방법
DE102017203570A1 (de) 2017-03-06 2018-09-06 Volkswagen Aktiengesellschaft Verfahren und vorrichtung zur darstellung von empfohlenen bedienhandlungen eines vorschlagssystems und interaktion mit dem vorschlagssystem
US10096319B1 (en) 2017-03-13 2018-10-09 Amazon Technologies, Inc. Voice-based determination of physical and emotional characteristics of users
US10074371B1 (en) 2017-03-14 2018-09-11 Amazon Technologies, Inc. Voice control of remote device by disabling wakeword detection
US20180268106A1 (en) 2017-03-17 2018-09-20 Orbit Healthcare, Inc. System and method for connecting patients, medical service providers, and medical insurance providers
US20180270343A1 (en) 2017-03-20 2018-09-20 Motorola Mobility Llc Enabling event-driven voice trigger phrase on an electronic device
US10547729B2 (en) 2017-03-27 2020-01-28 Samsung Electronics Co., Ltd. Electronic device and method of executing function of electronic device
US11183181B2 (en) 2017-03-27 2021-11-23 Sonos, Inc. Systems and methods of multiple voice services
US20180285056A1 (en) 2017-03-28 2018-10-04 Microsoft Technology Licensing, Llc Accessory human interface device
US10468032B2 (en) 2017-04-10 2019-11-05 Intel Corporation Method and system of speaker recognition using context aware confidence modeling
US10013979B1 (en) 2017-04-17 2018-07-03 Essential Products, Inc. Expanding a set of commands to control devices in an environment
KR102414122B1 (ko) 2017-04-19 2022-06-29 삼성전자주식회사 사용자 발화를 처리하는 전자 장치 및 그 동작 방법
KR102298947B1 (ko) 2017-04-28 2021-09-08 삼성전자주식회사 음성 데이터 처리 방법 및 이를 지원하는 전자 장치
US10282416B2 (en) 2017-05-05 2019-05-07 Apple Inc. Unified framework for text conversion and prediction
US10902855B2 (en) 2017-05-08 2021-01-26 Motorola Mobility Llc Methods and devices for negotiating performance of control operations with acoustic signals
DK201770383A1 (en) 2017-05-09 2018-12-14 Apple Inc. USER INTERFACE FOR CORRECTING RECOGNITION ERRORS
US10417266B2 (en) 2017-05-09 2019-09-17 Apple Inc. Context-aware ranking of intelligent response suggestions
US10395654B2 (en) 2017-05-11 2019-08-27 Apple Inc. Text normalization based on a data-driven learning network
US10726832B2 (en) 2017-05-11 2020-07-28 Apple Inc. Maintaining privacy of personal information
DK201770439A1 (en) 2017-05-11 2018-12-13 Apple Inc. Offline personal assistant
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK201770428A1 (en) 2017-05-12 2019-02-18 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
US11301477B2 (en) 2017-05-12 2022-04-12 Apple Inc. Feedback analysis of a digital assistant
US20180330714A1 (en) 2017-05-12 2018-11-15 Apple Inc. Machine learned systems
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
US10366692B1 (en) 2017-05-15 2019-07-30 Amazon Technologies, Inc. Accessory for a voice-controlled device
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
DK201770432A1 (en) 2017-05-15 2018-12-21 Apple Inc. Hierarchical belief states for digital assistants
DK201770431A1 (en) 2017-05-15 2018-12-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
US20180336892A1 (en) 2017-05-16 2018-11-22 Apple Inc. Detecting a trigger of a digital assistant
CN109688442B (zh) 2017-05-16 2021-06-04 苹果公司 用于家庭媒体控制的方法和界面
KR102100742B1 (ko) 2017-05-16 2020-04-14 애플 인크. 디지털 어시스턴트 서비스의 원거리 확장
US10403278B2 (en) 2017-05-16 2019-09-03 Apple Inc. Methods and systems for phonetic matching in digital assistant services
US11048995B2 (en) 2017-05-16 2021-06-29 Google Llc Delayed responses by computational assistant
DK179560B1 (en) 2017-05-16 2019-02-18 Apple Inc. FAR-FIELD EXTENSION FOR DIGITAL ASSISTANT SERVICES
US10395659B2 (en) 2017-05-16 2019-08-27 Apple Inc. Providing an auditory-based interface of a digital assistant
US10311144B2 (en) 2017-05-16 2019-06-04 Apple Inc. Emoji word sense disambiguation
US20180336275A1 (en) 2017-05-16 2018-11-22 Apple Inc. Intelligent automated assistant for media exploration
US20180336439A1 (en) 2017-05-18 2018-11-22 Intel Corporation Novelty detection using discriminator of generative adversarial network
US10170137B2 (en) 2017-05-18 2019-01-01 International Business Machines Corporation Voice signal component forecaster
US10521512B2 (en) 2017-05-26 2019-12-31 Bose Corporation Dynamic text-to-speech response from a smart speaker
US20180349447A1 (en) 2017-06-02 2018-12-06 Apple Inc. Methods and systems for customizing suggestions using user-specific information
US20180349472A1 (en) 2017-06-02 2018-12-06 Apple Inc. Methods and systems for providing query suggestions
US20180349346A1 (en) 2017-06-02 2018-12-06 Apple Inc. Lattice-based techniques for providing spelling corrections
US10657328B2 (en) 2017-06-02 2020-05-19 Apple Inc. Multi-task recurrent neural network architecture for efficient morphology handling in neural language modeling
US10410635B2 (en) 2017-06-09 2019-09-10 Soundhound, Inc. Dual mode speech recognition
US20180357073A1 (en) 2017-06-13 2018-12-13 Motorola Solutions, Inc Method, device, and system for electronic digital assistant for natural language detection of a user status change and corresponding modification of a user interface
US10990930B2 (en) 2017-06-19 2021-04-27 International Business Machines Corporation Autonomous event generator
US10453451B2 (en) 2017-07-05 2019-10-22 Comcast Cable Communications, Llc Methods and systems for using voice to control multiple devices
US20190013025A1 (en) 2017-07-10 2019-01-10 Google Inc. Providing an ambient assist mode for computing devices
US20190019077A1 (en) 2017-07-17 2019-01-17 Cisco Technology, Inc. Automatic configuration of cognitive assistant
CN107450800A (zh) 2017-07-25 2017-12-08 维沃移动通信有限公司 一种任务设置方法、移动终端及计算机可读存储介质
US10467552B2 (en) 2017-07-31 2019-11-05 Pearson Education, Inc. System and method for automatic content provisioning
CN107545262B (zh) 2017-07-31 2020-11-06 华为技术有限公司 一种在自然场景图像中检测文本的方法及装置
US10783149B2 (en) 2017-08-02 2020-09-22 Microsoft Technology Licensing, Llc Dynamic productivity content rendering based upon user interaction patterns
US11294530B2 (en) 2017-08-07 2022-04-05 Microsoft Technology Licensing, Llc Displaying a translucent version of a user interface element
US11972327B2 (en) 2017-08-25 2024-04-30 Samsung Electronics Co., Ltd. Method for automating actions for an electronic device
KR102426704B1 (ko) 2017-08-28 2022-07-29 삼성전자주식회사 음성 인식 서비스 운용 방법 및 이를 지원하는 전자 장치
JP6929168B2 (ja) 2017-08-31 2021-09-01 キヤノン株式会社 音声制御デバイス、印刷装置、それらの制御方法およびプログラム
US10796687B2 (en) 2017-09-06 2020-10-06 Amazon Technologies, Inc. Voice-activated selective memory for voice-capturing devices
US11004444B2 (en) 2017-09-08 2021-05-11 Amazon Technologies, Inc. Systems and methods for enhancing user experience by communicating transient errors
US10438594B2 (en) 2017-09-08 2019-10-08 Amazon Technologies, Inc. Administration of privileges by speech for voice assistant system
US10719507B2 (en) 2017-09-21 2020-07-21 SayMosaic Inc. System and method for natural language processing
US10445429B2 (en) 2017-09-21 2019-10-15 Apple Inc. Natural language understanding using vocabularies with compressed serialized tries
US10466962B2 (en) 2017-09-29 2019-11-05 Sonos, Inc. Media playback system with voice assistance
US10755051B2 (en) 2017-09-29 2020-08-25 Apple Inc. Rule-based natural language processing
US11450314B2 (en) 2017-10-03 2022-09-20 Google Llc Voice user interface shortcuts for an assistant application
JP6913897B2 (ja) 2017-10-09 2021-08-04 ボイス・ライフ・インコーポレーテッド 無線給電の効率化
KR102421255B1 (ko) 2017-10-17 2022-07-18 삼성전자주식회사 음성 신호를 제어하기 위한 전자 장치 및 방법
JP7063990B2 (ja) 2017-10-21 2022-05-09 アップル インコーポレイテッド 共用デバイス上の仮想アシスタントシステム用の個人ドメイン
US10680978B2 (en) 2017-10-23 2020-06-09 Microsoft Technology Licensing, Llc Generating recommended responses based on historical message data
US20190129615A1 (en) 2017-10-30 2019-05-02 Futurewei Technologies, Inc. Apparatus and method for simplifying repeat performance of a prior performed task based on a context of a mobile device
US10152966B1 (en) 2017-10-31 2018-12-11 Comcast Cable Communications, Llc Preventing unwanted activation of a hands free device
US9967381B1 (en) 2017-11-03 2018-05-08 Republic Wireless, Inc. Virtual telephony assistant
US10515640B2 (en) 2017-11-08 2019-12-24 Intel Corporation Generating dialogue based on verification scores
US10685648B2 (en) 2017-11-08 2020-06-16 International Business Machines Corporation Sensor fusion model to enhance machine conversational awareness
CN107871500B (zh) 2017-11-16 2021-07-20 百度在线网络技术(北京)有限公司 一种播放多媒体的方法和装置
US10521946B1 (en) 2017-11-21 2019-12-31 Amazon Technologies, Inc. Processing speech to drive animations on avatars
US10013654B1 (en) 2017-11-29 2018-07-03 OJO Labs, Inc. Cooperatively operating a network of supervised learning processors to concurrently distribute supervised learning processor training and provide predictive responses to input data
US10636424B2 (en) 2017-11-30 2020-04-28 Apple Inc. Multi-turn canned dialog
CN107919123B (zh) 2017-12-07 2022-06-03 北京小米移动软件有限公司 多语音助手控制方法、装置及计算机可读存储介质
US11182122B2 (en) 2017-12-08 2021-11-23 Amazon Technologies, Inc. Voice control of computing devices
WO2019112625A1 (en) 2017-12-08 2019-06-13 Google Llc Signal processing coordination among digital voice assistant computing devices
US10971173B2 (en) 2017-12-08 2021-04-06 Google Llc Signal processing coordination among digital voice assistant computing devices
US10818290B2 (en) 2017-12-11 2020-10-27 Sonos, Inc. Home graph
US10664540B2 (en) 2017-12-15 2020-05-26 Intuit Inc. Domain specific natural language understanding of customer intent in self-help
US11409816B2 (en) 2017-12-19 2022-08-09 Motorola Solutions, Inc. Methods and systems for determining an action to be taken in response to a user query as a function of pre-query context information
US11221669B2 (en) 2017-12-20 2022-01-11 Microsoft Technology Licensing, Llc Non-verbal engagement of a virtual assistant
US10685225B2 (en) 2017-12-29 2020-06-16 Wipro Limited Method and system for detecting text in digital engineering drawings
US10170135B1 (en) 2017-12-29 2019-01-01 Intel Corporation Audio gait detection and identification
US10733982B2 (en) 2018-01-08 2020-08-04 Apple Inc. Multi-directional dialog
US10524040B2 (en) 2018-01-29 2019-12-31 Apple Inc. Headphones with orientation sensors
US10733375B2 (en) 2018-01-31 2020-08-04 Apple Inc. Knowledge-based framework for improving natural language understanding
US11145298B2 (en) 2018-02-13 2021-10-12 Roku, Inc. Trigger word detection with multiple digital assistants
US11195000B2 (en) 2018-02-13 2021-12-07 FLIR Belgium BVBA Swipe gesture detection systems and methods
US10789959B2 (en) 2018-03-02 2020-09-29 Apple Inc. Training speaker recognition models for digital assistants
US10592604B2 (en) 2018-03-12 2020-03-17 Apple Inc. Inverse text normalization for automatic speech recognition
US10674014B2 (en) 2018-03-15 2020-06-02 Ways Investments, LLC System, method, and apparatus for providing help
US11044364B2 (en) 2018-03-15 2021-06-22 Ways Investments, LLC System, method, and apparatus for providing help
US10818288B2 (en) 2018-03-26 2020-10-27 Apple Inc. Natural assistant interaction
US10909331B2 (en) 2018-03-30 2021-02-02 Apple Inc. Implicit identification of translation payload with neural machine translation
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
CN108647681B (zh) 2018-05-08 2019-06-14 重庆邮电大学 一种带有文本方向校正的英文文本检测方法
US11175880B2 (en) 2018-05-10 2021-11-16 Sonos, Inc. Systems and methods for voice-assisted media content selection
US10984780B2 (en) 2018-05-21 2021-04-20 Apple Inc. Global semantic word embeddings using bi-directional recurrent neural networks
DK179822B1 (da) 2018-06-01 2019-07-12 Apple Inc. Voice interaction at a primary device to access call functionality of a companion device
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US10892996B2 (en) 2018-06-01 2021-01-12 Apple Inc. Variable latency device coordination
DK201870355A1 (en) 2018-06-01 2019-12-16 Apple Inc. VIRTUAL ASSISTANT OPERATION IN MULTI-DEVICE ENVIRONMENTS
US11386266B2 (en) 2018-06-01 2022-07-12 Apple Inc. Text correction
AU2019100576C4 (en) 2018-06-03 2020-01-30 Apple Inc. Accelerated task performance
US11076039B2 (en) 2018-06-03 2021-07-27 Apple Inc. Accelerated task performance
US10818296B2 (en) 2018-06-21 2020-10-27 Intel Corporation Method and system of robust speaker recognition activation
WO2020010530A1 (en) 2018-07-10 2020-01-16 Microsoft Technology Licensing, Llc Automatically generating motions of an avatar
US20200019609A1 (en) 2018-07-13 2020-01-16 Asapp, Inc. Suggesting a response to a message by selecting a template using a neural network
GB2576016B (en) 2018-08-01 2021-06-23 Arm Ip Ltd Voice assistant devices
EP3642837B1 (en) 2018-08-23 2024-03-13 Google LLC Regulating assistant responsiveness according to characteristics of a multi-assistant environment
TWI683306B (zh) 2018-08-28 2020-01-21 仁寶電腦工業股份有限公司 多語音助理之控制方法
US20200092625A1 (en) 2018-09-13 2020-03-19 Hayes S. Raffle Smart device cover
US10958301B2 (en) 2018-09-18 2021-03-23 Roku, Inc. Audio synchronization of a dumb speaker and a smart speaker using a spread code
US11010561B2 (en) 2018-09-27 2021-05-18 Apple Inc. Sentiment prediction from textual data
US11170166B2 (en) 2018-09-28 2021-11-09 Apple Inc. Neural typographical error modeling via generative adversarial networks
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
US10839159B2 (en) 2018-09-28 2020-11-17 Apple Inc. Named entity normalization in a spoken dialog system
US20200127988A1 (en) 2018-10-19 2020-04-23 Apple Inc. Media intercom over a secure device to device communication channel
KR102608470B1 (ko) 2018-10-23 2023-12-01 삼성전자주식회사 데이터 인식 장치 및 방법과 트레이닝 장치 및 방법
US11196863B2 (en) 2018-10-24 2021-12-07 Verint Americas Inc. Method and system for virtual assistant conversations
US11475898B2 (en) 2018-10-26 2022-10-18 Apple Inc. Low-latency multi-speaker speech recognition
CN110288077B (zh) 2018-11-14 2022-12-16 腾讯科技(深圳)有限公司 一种基于人工智能的合成说话表情的方法和相关装置
TWI682325B (zh) 2018-11-20 2020-01-11 新唐科技股份有限公司 辨識系統及辨識方法
US20200175566A1 (en) 2018-11-30 2020-06-04 International Business Machines Corporation Adding and prioritizing items in a product list
US11183183B2 (en) 2018-12-07 2021-11-23 Sonos, Inc. Systems and methods of operating media playback systems having multiple voice assistant services
CN109657629B (zh) 2018-12-24 2021-12-07 科大讯飞股份有限公司 一种文本行提取方法及装置
US11638059B2 (en) 2019-01-04 2023-04-25 Apple Inc. Content playback on multiple devices
US10937425B2 (en) 2019-01-10 2021-03-02 Dell Products L.P. Systems and methods for selectively activating and interacting with a speech recognition service during application runtime without interrupting execution of the application
US12080395B2 (en) 2019-03-01 2024-09-03 Cambia Health Solutions, Inc. Systems and methods for management of clinical queues
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
US11258865B2 (en) 2019-03-28 2022-02-22 Servicenow, Inc. Automated integration with cloud-based services
CN110135411B (zh) 2019-04-30 2021-09-10 北京邮电大学 名片识别方法和装置
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11423908B2 (en) 2019-05-06 2022-08-23 Apple Inc. Interpreting spoken requests
US11475884B2 (en) 2019-05-06 2022-10-18 Apple Inc. Reducing digital assistant latency when a language is incorrectly determined
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US20200379640A1 (en) 2019-05-29 2020-12-03 Apple Inc. User-realistic path synthesis via multi-task generative adversarial networks for continuous path keyboard input
US11496600B2 (en) 2019-05-31 2022-11-08 Apple Inc. Remote execution of machine-learned models
US11887585B2 (en) 2019-05-31 2024-01-30 Apple Inc. Global re-ranker
DK180649B1 (en) 2019-05-31 2021-11-11 Apple Inc Voice assistant discoverability through on-device targeting and personalization
DK201970510A1 (en) 2019-05-31 2021-02-11 Apple Inc Voice identification in digital assistant systems
DK180129B1 (en) 2019-05-31 2020-06-02 Apple Inc. USER ACTIVITY SHORTCUT SUGGESTIONS
US11289073B2 (en) 2019-05-31 2022-03-29 Apple Inc. Device text to speech
US20200380389A1 (en) 2019-05-31 2020-12-03 Apple Inc. Sentiment and intent analysis for customizing suggestions using user-specific information
US11468890B2 (en) 2019-06-01 2022-10-11 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11360641B2 (en) 2019-06-01 2022-06-14 Apple Inc. Increasing the relevance of new available information
CN110647274A (zh) 2019-08-15 2020-01-03 华为技术有限公司 一种界面显示方法及设备
CN110531860B (zh) 2019-09-02 2020-07-24 腾讯科技(深圳)有限公司 一种基于人工智能的动画形象驱动方法和装置
CN110825469A (zh) 2019-09-18 2020-02-21 华为技术有限公司 语音助手显示方法及装置
CN110598671B (zh) 2019-09-23 2022-09-27 腾讯科技(深圳)有限公司 基于文本的虚拟形象行为控制方法、设备和介质
US10757499B1 (en) 2019-09-25 2020-08-25 Sonos, Inc. Systems and methods for controlling playback and other features of a wireless headphone

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002197566A (ja) * 2000-12-22 2002-07-12 Sony Corp 車両検索装置及び車両検索方法
US20100073201A1 (en) * 2008-09-24 2010-03-25 Denso International America, Inc. Car finder by cell phone
JP2012022478A (ja) * 2010-07-13 2012-02-02 Fujitsu Ten Ltd 携帯端末装置および駐車位置案内プログラム

Also Published As

Publication number Publication date
JP6994559B2 (ja) 2022-02-04
EP3447624A1 (en) 2019-02-27
KR20190131617A (ko) 2019-11-26
AU2022200758B2 (en) 2023-07-13
AU2020230237C1 (en) 2021-05-13
AU2016268860A1 (en) 2017-12-07
US10735905B2 (en) 2020-08-04
AU2020230234A1 (en) 2020-10-01
CN113722033B (zh) 2024-07-26
US11070949B2 (en) 2021-07-20
AU2020203371A1 (en) 2020-06-11
KR102429889B1 (ko) 2022-08-04
JP2024026183A (ja) 2024-02-28
US20200304955A1 (en) 2020-09-24
EP3283950A2 (en) 2018-02-21
EP4340409A2 (en) 2024-03-20
KR20210046856A (ko) 2021-04-28
EP4340408A2 (en) 2024-03-20
CN118377565A (zh) 2024-07-23
JP2021064393A (ja) 2021-04-22
DK201670369A1 (en) 2017-01-16
KR102048366B1 (ko) 2019-11-25
CN109240589B (zh) 2021-10-15
KR102318884B1 (ko) 2021-10-29
JP2024109574A (ja) 2024-08-14
CN109240588B (zh) 2021-08-27
AU2023248134B2 (en) 2023-12-14
CN109240589A (zh) 2019-01-18
JP7524497B1 (ja) 2024-07-29
JP2022091825A (ja) 2022-06-21
EP3428795B1 (en) 2022-03-30
AU2020230234B2 (en) 2020-11-05
CN118331669A (zh) 2024-07-12
JP7042963B1 (ja) 2022-03-28
AU2018222899A1 (en) 2018-09-13
CN108027738A (zh) 2018-05-11
CN109240588A (zh) 2019-01-18
EP4340408A3 (en) 2024-04-17
KR20190055271A (ko) 2019-05-22
DK201670371A1 (en) 2016-12-19
DK179570B1 (da) 2019-02-19
JP7033524B2 (ja) 2022-03-10
EP4340409A3 (en) 2024-04-24
US20210006943A1 (en) 2021-01-07
AU2023248134A1 (en) 2023-11-02
KR20180009795A (ko) 2018-01-29
KR20210133312A (ko) 2021-11-05
KR102242267B1 (ko) 2021-04-19
EP3428795A1 (en) 2019-01-16
US10200824B2 (en) 2019-02-05
AU2020203371B2 (en) 2021-11-11
US20160360382A1 (en) 2016-12-08
DK179571B1 (da) 2019-02-19
DK201670368A1 (en) 2017-01-16
AU2018222899B2 (en) 2020-06-11
KR102653387B1 (ko) 2024-04-02
JP2019057290A (ja) 2019-04-11
KR102102570B1 (ko) 2020-04-20
EP3283950B1 (en) 2019-08-07
WO2016191737A2 (en) 2016-12-01
KR20200040927A (ko) 2020-04-20
WO2016191737A3 (en) 2017-02-09
KR101981423B1 (ko) 2019-05-22
CN113791852A (zh) 2021-12-14
EP3779685A1 (en) 2021-02-17
CN108027738B (zh) 2021-08-13
KR20210046857A (ko) 2021-04-28
US20210306812A1 (en) 2021-09-30
KR102244698B1 (ko) 2021-04-27
JP2018523102A (ja) 2018-08-16
AU2018222890A1 (en) 2018-09-13
JP6419993B2 (ja) 2018-11-07
AU2016268860B2 (en) 2019-01-24
AU2022200758A1 (en) 2022-02-24
JP7478304B2 (ja) 2024-05-02
AU2023248135A1 (en) 2023-11-02
JP2022046537A (ja) 2022-03-23
AU2020230237B1 (en) 2020-10-01
DK179291B1 (en) 2018-04-09
CN113722033A (zh) 2021-11-30
DK201670370A1 (en) 2017-01-16
US20190141494A1 (en) 2019-05-09
KR20240046294A (ko) 2024-04-08
JP7561789B2 (ja) 2024-10-04
CN112905276A (zh) 2021-06-04
AU2020230237B8 (en) 2020-10-08

Similar Documents

Publication Publication Date Title
AU2022200758B2 (en) Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10827330B2 (en) Systems and methods for proactively identifying and surfacing relevant content on an electronic device with a touch-sensitive display

Legal Events

Date Code Title Description
A107 Divisional application of patent
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant