KR20200040752A - 모바일 컴퓨팅 디바이스에서 컨텍스트 액션들을 서피싱하기 위한 개선된 사용자 인터페이스 - Google Patents

모바일 컴퓨팅 디바이스에서 컨텍스트 액션들을 서피싱하기 위한 개선된 사용자 인터페이스 Download PDF

Info

Publication number
KR20200040752A
KR20200040752A KR1020207003052A KR20207003052A KR20200040752A KR 20200040752 A KR20200040752 A KR 20200040752A KR 1020207003052 A KR1020207003052 A KR 1020207003052A KR 20207003052 A KR20207003052 A KR 20207003052A KR 20200040752 A KR20200040752 A KR 20200040752A
Authority
KR
South Korea
Prior art keywords
application
action
actionable
processors
actionable item
Prior art date
Application number
KR1020207003052A
Other languages
English (en)
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 KR20200040752A publication Critical patent/KR20200040752A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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/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/0482Interaction with lists of selectable items, e.g. menus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72448User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions
    • H04M1/72451User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions according to schedules, e.g. using calendar applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72448User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions
    • H04M1/72454User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions according to context-related or environment-related conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72469User interfaces specially adapted for cordless or mobile telephones for operating the device by selecting functions from two or more displayed items, e.g. menus or icons
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72484User interfaces specially adapted for cordless or mobile telephones wherein functions are triggered by incoming communication events
    • H04M1/72566
    • H04M1/72569
    • H04M1/72583
    • H04M1/72597

Abstract

모바일 컴퓨팅 디바이스의 사용자 경험에서 애플리케이션들과 관련된 맞춤형 액션너블 아이템들을 서피싱(surfacing)하는 시스템 및 방법이 개시된다. 본 방법은 애플리케이션과 관련된 이벤트를 결정하는 단계, 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하는 단계, 이벤트에 기초하여 액션 라이브러리로부터 하나 이상의 애플리케이션들과 관련된 하나 이상의 액션너블 아이템들을 식별하는 단계, 하나 이상의 액셔너블 아이템들에 기초하여 액션 메뉴를 생성하는 단계 - 액션 메뉴는 하나 이상의 액셔너블 아이템들을 수행하기 위한 딥 링크(deep link)를 포함함 -, 및 이벤트에 응답하여 애플리케이션과 연계하여 액션 메뉴를 프레젠테이션하는 단계를 포함한다.

Description

모바일 컴퓨팅 디바이스에서 컨텍스트 액션들을 서피싱하기 위한 개선된 사용자 인터페이스
관련 출원에 대한 상호 참조
본원은 2017년 7월 5일자로 출원되고, 발명의 명칭이 "Ultra-Portable Personal Computing and Communication Device(Companion Device) and Associated User Interfaces"인 미국 가특허출원 제62/528,802호에 대하여 35 U.S.C. § 119 하에서 우선권을 주장하며, 이 문헌은 그 전체가 참조로서 본 명세서에 포함된다.
발명의 분야
본 발명은 일반적으로 모바일 컴퓨팅 디바이스 상의 하나 이상의 애플리케이션들과 관련된 맞춤화된 액션들을 서피싱(surfacing)하는 것에 관한 것이다. 특히, 본 발명은 컨텍스트(context)에 기초하여 모바일 컴퓨팅 디바이스의 사용자 인터페이스에 맞춤화된 액션들을 자동으로 서피싱함으로써 모바일 컴퓨팅 디바이스와의 사용자 경험을 개선하기 위한 시스템 및 방법에 관한 것이다.
모바일 컴퓨팅 디바이스의 애플리케이션 에코시스템(ecosystem)은 복잡해졌다. 모든 것을 위한 애플리케이션이 존재하는 듯 하다. 또한, 애플리케이션 및 그 애플리케이션에 의해 제공되는 기능과의 사용자 상호 작용을 향상시키기 위해 각 애플리케이션에 부가 기능이 지속적으로 추가되고 있다. 일반적으로, 모바일 컴퓨팅 디바이스의 운영 체제는 수 개의 레이어의 메뉴들 또는 웹 페이지들을 탐색하여 애플리케이션의 페이지들 깊숙한 곳에서 기능 또는 데이터에 액세스해야 한다. 그 결과, 사용자 경험은 종종 번거롭고 비효율적이게 된다. 예를 들어, 사용자는 애플리케이션 내에서 원하는 기능 또는 데이터에 액세스하기 위해 다양한 선택들을 행하는 것에 의하여 애플리케이션을 실행하고 애플리케이션을 탐색해야 한다. 이로 인해 사용자가 애플리케이션에 액세스하기 위해서는 애플리케이션을 실행하고 메뉴들과 웹 페이지들을 장시간 탐색하는데 많은 시간을 소비하기 때문에, 사용자 생산성이 떨어지게 된다. 또한, 소형 폼 팩터를 갖는 모바일 컴퓨팅 디바이스에서는 적시에 액세스할 애플리케이션을 탐색하고 원하는 기능을 개시시키는 것이 어렵다. 모바일 컴퓨팅 디바이스의 애플리케이션들과 관련된 접근성 및 개시 액션의 용이성을 개선하는 것이 중요하다.
본 명세서에서 제공되는 배경 기술 설명은 본 개시의 맥락을 일반적으로 제시하기 위한 것이다. 출원 당시 종래 기술로서 인정될 수 없는 설명의 측면뿐만 아니라, 본 배경 기술 섹션에 기술된 범위 내에서의, 본 발명자들의 발명 내용은 본 개시에 대한 선행 기술로서 명시적 또는 암시적으로 인정되지 않는다.
본 명세서에서 도입되는 기술들은 모바일 컴퓨팅 디바이스의 사용자 경험에서 애플리케이션들과 관련된 맞춤형 액셔너블 아이템들을 서피싱하기 위한 시스템 및 방법에 의해, 기존 솔루션들의 결함 및 한계를 적어도 부분적으로 극복한다.
본 개시에 기술된 주제의 하나의 혁신적인 양태에 따르면, 컴퓨터 구현 방법은, 제 1 애플리케이션과 관련된 이벤트를 결정하는 단계; 복수의 액셔너블 아이템(actionable item)들을 포함하는 액션 라이브러리(action library)를 결정하는 단계; 이벤트에 기초하여 액션 라이브러리로부터 제 1 애플리케이션과 관련된 제 1 액셔너블 아이템을 식별하는 단계; 제 1 액셔너블 아이템에 기초하여 제 1 액션 메뉴를 생성하는 단계 - 제 1 액션 메뉴는 제 1 액셔너블 아이템을 수행하기 위한 제 1 딥 링크(deep link)를 포함함 -; 및 이벤트에 응답하여 제 1 애플리케이션과 연계하여 제 1 액션 메뉴를 프레젠테이션하는 단계를 포함한다.
일반적으로, 본 개시에 기술된 주제의 다른 혁신적인 양태는 하나 이상의 프로세서들; 명령어들을 저장하는 메모리를 포함하는 시스템으로 구현될 수 있으며, 상기 명령어들은, 실행될 때에, 하나 이상의 프로세서들로 하여금, 제 1 애플리케이션과 관련된 이벤트를 결정하고; 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하고; 이벤트에 기초하여 액션 라이브러리로부터 제 1 애플리케이션과 관련된 제 1 액셔너블 아이템을 식별하고; 제 1 액셔너블 아이템에 기초하여 제 1 액션 메뉴를 생성하고 - 제 1 액션 메뉴는 제 1 액셔너블 아이템을 수행하기 위한 제 1 딥 링크를 포함함 -; 또한 이벤트에 응답하여 제 1 애플리케이션과 연계하여 제 1 액션 메뉴를 프레젠테이션하게 한다.
일반적으로, 본 개시에 기술된 주제의 다른 혁신적인 양태는 모바일 컴퓨팅 디바이스로부터 신호 스트림을 수신하는 단계; 신호 스트림을 처리하는 단계; 처리된 신호 스트림에 기초하여 액티비티 및 액티비티의 컨텍스트를 검출하는 단계; 하나 이상의 애플리케이션들과 관련된 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하는 단계; 액션 라이브러리로부터 액티비티 및 액티비티의 컨텍스트와 관련된 액셔너블 아이템을 결정하는 단계; 액셔너블 아이템을 수행하기 위한 다이렉트 링크를 포함하는 액션 메뉴를 생성하는 단계; 및 검출된 액티비티와 연계하여 액션 메뉴를 프레젠테이션하는 단계를 포함하는 컴퓨터 구현 방법으로 구현될 수 있다.
일반적으로, 본 개시에 기술된 주제의 다른 혁신적인 양태는 애플리케이션 런처와 연계하여 제 1 애플리케이션에 대한 오래 계속되는 선택을 수신하는 단계; 제 1 애플리케이션의 카테고리를 결정하는 단계; 카테고리와 관련된 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하는 단계; 액션 라이브러리로부터 제 1 애플리케이션과 관련된 제 1 액셔너블 아이템을 결정하는 단계; 제 1 애플리케이션의 카테고리와 매칭되는 제 2 액셔너블 아이템의 액션 카테고리에 기초하여 액션 라이브러리로부터 제 2 애플리케이션과 관련된 제 2 액셔너블 아이템을 결정하는 단계; 제 1 액셔너블 아이템 및 제 2 액셔너블 아이템에 기초하여 액션 메뉴를 생성하는 단계 - 액션 메뉴는 제 1 액셔너블 아이템을 수행하기 위한 제 1 딥 링크 및 제 2 액셔너블 아이템을 수행하기 위한 제 2 딥 링크를 포함함 -; 및 제 1 애플리케이션에 대한 오래 계속되는 선택에 응답하여 제 1 애플리케이션과 연계하여 상기 액션 메뉴를 프레젠테이션하는 단계를 포함하는 컴퓨터 구현 방법으로 구현될 수 있다.
다른 양태들은 이들 및 다른 혁신적인 양태들을 위한 대응하는 방법, 시스템, 장치 및 컴퓨터 프로그램 제품을 포함한다.
본 명세서에 기술된 특징들 및 장점들은 모든 것을 포함하는 것이 아니며, 다수의 추가적인 특징들 및 장점들이 도면 및 설명을 고려하여 명백해질 것이다. 또한, 본 명세서에서 사용된 언어는 원칙적으로 가독성 및 예시적 목적을 위해 선택되었으며 설명된 기술들의 범위를 제한하지 않음에 유의해야 한다.
본 명세서에 도입되는 기술들이 첨부된 도면들에 제한이 아닌, 예시적 방식에 의해서 도시되어 있으며, 도면들에 있어서 유사한 참조 번호는 유사한 요소를 지칭하는데 사용된다.
도 1은 모바일 컴퓨팅 디바이스의 사용자 경험에서 애플리케이션들과 관련된 맞춤형 액셔너블 아이템들을 서피싱하기 위한 시스템의 일 실시예를 도시한 하이-레벨 블록도이다.
도 2a는 액션 플랫폼 애플리케이션을 포함하는 컴퓨팅 디바이스의 일 실시예를 도시한 블록도이다.
도 2b는 액션 추천기의 예시적인 실시예를 도시한 블록도이다.
도 3은 액션 플랫폼 애플리케이션의 다른 예시적인 실시예를 도시한 블록도이다.
도 4는 애플리케이션 런처에서 애플리케이션과 관련된 액셔너블 아이템을 서피싱하기 위한 사용자 인터페이스를 나타내는 예시적인 그래픽 표현을 도시한 것이다.
도 5는 애플리케이션과 관련된 동작 메뉴를 도시하기 위한 사용자 인터페이스의 실시예를 도시한 예시적인 그래픽 표현을 도시한 것이다.
도 6은 액션 메뉴에서 액션을 편집하기 위한 사용자 인터페이스를 나타내는 예시적인 그래픽 표현을 도시한 것이다.
도 7은 제 1 애플리케이션의 동작 메뉴에서 제 2 애플리케이션과 관련된 액셔너블 아이템을 서피싱하기 위한 사용자 인터페이스를 나타내는 예시적인 그래픽 표현을 도시한 것이다.
도 8은 사용자 인터페이스에서 애플리케이션의 통지와 관련하여 액셔너블 아이템을 서피싱하기 위한 사용자 인터페이스를 나타내는 예시적인 그래픽 표현을 도시한 것이다.
도 9는 제스처 입력에 응답하여 액셔너블 아이템을 서피싱하기 위한 사용자 인터페이스를 나타내는 예시적인 그래픽 표현을 도시한 것이다.
도 10은 컨텍스트 액티비티에 응답하여 액셔너블 아이템을 서피싱하기 위한 사용자 인터페이스를 나타내는 예시적인 그래픽 표현을 도시한 것이다.
도 11a 및 도 11b는 모바일 컴퓨팅 디바이스의 설정을 커스터마이징하기 위한 사용자 인터페이스의 실시예의 예시적인 그래픽 표현을 도시한 것이다.
도 12는 액션 라이브러리를 생성하기 위한 예시적인 방법의 일 실시예를 도시한 흐름도이다.
도 13은 애플리케이션과 관련된 액션 메뉴를 생성하기 위한 예시적인 방법의 일 실시예를 도시한 흐름도이다.
도 14는 제 1 애플리케이션의 동작 메뉴에서 제 2 애플리케이션과 관련된 액셔너블 아이템을 서피싱하는 예시적인 방법의 일 실시예를 도시한 흐름도이다.
도 15는 액션 메뉴에서의 애플리케이션의 통지와 관련된 액션너블 아이템을 서피싱하는 예시적인 방법의 일 실시예를 도시한 흐름도이다.
도 16은 검출된 액티비티 및 관련 컨텍스트와 관련된 액셔너블 아이템을 서피싱하는 예시적인 방법의 일 실시예를 도시한 흐름도이다.
도 1은 모바일 컴퓨팅 디바이스(115)의 사용자 경험에서 애플리케이션들과 관련된 맞춤형 액션너블 아이템(actionable item)들을 서피싱(surfacing)하기 위한 시스템(100)의 일 실시예를 도시한 하이-레벨 블록도이다. 도시된 시스템(100)은 사용자들, 액션 플랫폼 서버(110) 및 복수의 웹 서버들(101)에 의해 액세스될 수 있는 하나 이상의 모바일 컴퓨팅 디바이스들(115a … 115n)을 가질 수 있다. 도 1 및 나머지 도면에서, 참조 번호 뒤의 문자(예를 들면, "115a")는 특정 참조 번호를 가진 요소에 대한 레퍼런스를 나타낸다. 뒤에 문자가 없는 텍스트의 참조 번호(예를 들면, "115")는 해당 참조 번호를 가진 요소의 인스턴스들에 대한 일반적인 레퍼런스를 나타낸다. 도시된 실시예에서, 이러한 시스템(100)의 엔티티들은 네트워크(105)를 통해 통신 가능하게 연결된다.
네트워크(105)는 유선 또는 무선의 종래의 타입일 수 있으며, 스타(star) 구성, 토큰 링(token ring) 구성, 또는 다른 구성들을 포함하는 다수의 상이한 구성들을 가질 수 있다. 또한, 네트워크(105)는 LAN(local area network), WAN(wide area network)(예를 들어, 인터넷), 및/또는 다수의 디바이스들이 통신할 수 있는 다른 상호 연결된 데이터 경로들을 포함할 수 있다. 일부 실시예들에서, 네트워크(105)는 피어 투 피어 네트워크일 수 있다. 네트워크(105)는 또한 다양한 각종 통신 프로토콜들로 데이터를 전송하기 위해 통신 네트워크의 일부들에 연결되거나 이들을 포함할 수도 있다. 일부 실시예들에서, 네트워크(105)는 SMS(Short Messaging Service), MMS(Multimedia Messaging Service), HTTP(Hypertext Transfer Protocol), 직접 데이터 연결, WAP, 이메일 등을 통해 데이터를 송수신하기 위한 블루투스 통신 네트워크 또는 셀룰러 통신 네트워크를 포함할 수 있다. 도 1이 모바일 컴퓨팅 디바이스(115), 액션 플랫폼 서버(110) 및 웹 서버(101)에 연결된 하나의 네트워크(105)를 도시하고 있지만, 실제에 있어서는 하나 이상의 네트워크들(105)이 이러한 엔티티들에 연결될 수 있다.
일부 실시예들에서, 시스템(100)은 시스템(100)의 다른 구성 요소들, 예컨대 복수의 모바일 컴퓨팅 디바이스들(115) 및 액션 플랫폼 서버(110)와 통신하기 위해 네트워크(105)에 연결된 복수의 웹 서버들(101)을 포함한다. 웹 서버(101)는 프로세서, 메모리, 애플리케이션, 데이터베이스 및 네트워크 통신 능력들을 포함하는 컴퓨팅 디바이스일 수 있거나, 또는 이것에 의해 구현될 수 있다. 웹 서버(101)는 HTTP(Hypertext Transfer Protocol) 서버, REST(Representational State Transfer) 서비스 또는 다른 서버 타입일 수 있으며, 컨텐츠 요청들을 처리하여 만족시키고/거나 네트워크(105)에 연결된 하나 이상의 모바일 컴퓨팅 디바이스들(115)로부터 컨텐츠를 수신하기 위한 구조 및/또는 기능을 갖는다. 일부 실시예들에서, 웹 서버(101)는 하나 이상의 모바일 컴퓨팅 디바이스들(115) 상의 웹, 모바일 및/또는 클라우드 애플리케이션들을 통해 웹 서버(101)에 의해 호스팅되는 다양한 서비스들 및 정보 리소스들에 대한 액세스를 제공하는 전용 온라인 서비스(111)를 포함한다.
온라인 서비스(111)는 사용자 데이터, 컨텐츠 아이템들(예를 들어, 비디오, 텍스트, 이미지 등) 및 컨텐츠 아이템들과 사용자들의 상호 작용을 반영하는 상호 작용 데이터를 획득 및 저장할 수 있다. 본 명세서에 설명된 바와 같이, 사용자 데이터는 사용자 프로파일 정보(예를 들어, 사용자 ID, 사용자 프리퍼런스, 사용자 이력 등), 로그 정보(예를 들어, 클릭 스트림, IP 주소, 사용자 디바이스 특정 정보, 이력 액션 등) 및 기타 사용자 특정 정보 중의 하나 이상을 포함할 수 있다. 일부 실시예들에서, 온라인 서비스(111)는 사용자들이 다른 사용자들(예를 들어, 친구, 연락처, 공개, 비슷한 사용자 등)과 컨텐츠를 공유하고, 아이템들(예를 들어, 책, 영화, 비디오, 음악, 게임, 상품, 항공편, 호텔 등)을 구매 및/또는 볼 수 있게 하며, 기타 유사한 액션들을 가능하게 한다. 예를 들어, 온라인 서비스(111)는 음악 스트리밍 서비스, 웹 매핑 서비스, 멀티미디어 메시징 서비스, 전자 메일 서비스, 뉴스 서비스, 뉴스 어그리게이터 서비스, 소셜 네트워크, 사진 및 비디오 공유 소셜 네트워킹 서비스, 라이드 쉐어링 서비스, 온라인 뱅킹 서비스, 클라우드 스토리지 서비스, 온라인 정보 데이터베이스 서비스, 여행 서비스, 온라인 전자 상거래 시장, 평가 및 리뷰 서비스, 식당 예약 서비스, 음식 배달 서비스, 검색 서비스, 건강 및 피트니스 서비스, 가정 자동화 및 보안, 사물 인터넷(IOT) 등일 수 있다. 상기 온라인 서비스(111)에 대한 예로서 제공된 아이템들의 리스트는 완전한 것이 아니며 다른 것들이 본 명세서에서 설명된 기술들에서 고려된다는 것에 유의해야 한다.
일부 실시예들에서, 웹 서버(101)는 네트워크(105)를 통해 시스템(100)의 다른 엔티티들과 데이터를 송수신한다. 도 1의 예에서, 웹 서버(101)의 구성 요소들은 애플리케이션 프로그래밍 인터페이스(application programming interface, API)(109)를 구현하도록 구성된다. 예를 들어, API(109)는 웹 서버(101)에 의해 HTTP 프로토콜을 통해 노출되는 소프트웨어 인터페이스일 수 있다. API(109)는 도 1의 구성 요소들 사이에서 정보의 이동을 통제 및 가능하게 하는 일련의 요구 사항들을 포함한다. 예를 들어, API(109)는 웹 서버(101)에 의해 호스팅되는 온라인 서비스(111)의 내부 데이터 및 기능을 모바일 컴퓨팅 디바이스(115) 상에 구현된 액션 플랫폼 애플리케이션(103b)으로부터 발생하는 API 요청들에 노출시킨다. API(109)를 통해, 액션 플랫폼 애플리케이션(103b)은 서비스를 필요로 하는 정보를 일련의 파라미터들과 함께 온라인 서비스(111)의 내부 기능에 전달한 후에 관련 결과들을 갖는 객체(예를 들어, XML 또는 JSON)를 모바일 컴퓨팅 디바이스(115)로 반환한다. 웹 서버(101)는 데이터베이스(199)를 포함할 수 있다. 데이터베이스(199)는 네트워크(105)를 통해 웹 서버(101)에 연결되어 구조화된 데이터를 관계형 데이터베이스에 저장하고 비구조화된 또는 반구조화된 데이터를 위한 파일 시스템(예를 들어, HDFS, NFS 등)을 저장하는 별도의 엔티티일 수 있다. 일부 실시예들에서, 웹 서버(101)는 액션 플랫폼 애플리케이션(103c)을 구현하도록 구성될 수 있다. 웹 서버(101) 및 애플리케이션 프로그래밍 인터페이스(109)는 하나의 온라인 서비스 프로바이더를 나타낼 수 있고 네트워크(105)에는 다수의 온라인 서비스 프로바이더가 연결되어 있을 수 있으며, 각각의 온라인 서비스 프로바이더는 자체 서버 또는 서버 클러스터, 애플리케이션들, 애플리케이션 프로그래밍 인터페이스, 및 데이터베이스(199)를 구비한다는 것을 이해해야 한다.
액션 플랫폼 서버(110)는 도 2a, 도 2b 및 도 3을 참조하여 아래에 상세히 설명되는 액션 플랫폼 애플리케이션(103a)을 구현하도록 구성될 수 있다. 일부 실시예들에서, 액션 플랫폼 서버(110)는 복수의 모바일 컴퓨팅 디바이스들(115)로부터 정보 및 분석 내용을 수신하고 처리하는 백엔드 하드웨어 또는 소프트웨어 서버이다. 비록 단일의 액션 플랫폼 서버(110)만이 도 1에 도시되어 있지만, 로드 밸런싱될 수 있는 다수의 액션 플랫폼 서버들(110) 또는 서버 클러스터가 있을 수 있음을 이해해야 한다.
일부 실시예들에서, 서버들(101 및 110) 각각은 하드웨어 서버, 소프트웨어 서버, 또는 소프트웨어와 하드웨어의 조합일 수 있다. 일부 구현예들에서, 서버들(101 및 110) 각각은 데이터 처리(예를 들어, 적어도 하나의 프로세서), 스토리지(예를 들어, 공유 또는 비공유 메모리 풀) 및 통신 능력들을 갖는 하나 이상의 컴퓨팅 디바이스들일 수 있다. 예를 들어, 서버들(101 및 110)은 하나 이상의 하드웨어 서버, 서버 어레이, 저장 디바이스 및/또는 시스템 등을 포함할 수 있다. 또한, 대안적으로 또는 추가적으로, 서버들(101 및 110) 각각은 모바일 컴퓨팅 디바이스(115)에 설치되거나 모바일 컴퓨팅 디바이스(115) 상에서 실행되는 애플리케이션과 서버들(101 및 110) 사이에서의 명령어들, 데이터, 결과들 및 기타 정보의 전송을 위한 자체 API를 구현할 수 있다. 일부 구현예들에서, 서버들(101 및 110)은 추상화 계층을 통해(예를 들면, 가상 머신 매니저), 호스트 서버 환경에서 동작하고 예를 들어 프로세서, 메모리, 스토리지, 네트워크 인터페이스 등을 포함하는 호스트 서버의 물리적 하드웨어에 액세스하는 하나 이상의 가상 서버들을 포함할 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스(115)는 데이터 처리 및 통신 능력들이 있는 작은 폼 팩터를 갖는 울트라-포터블(ultra-portable) 컴퓨팅 디바이스일 수 있다. 모바일 컴퓨팅 디바이스(115)는 메모리, 프로세서, 카메라, 네트워크(105)에 액세스할 수 있는 통신 유닛, 전력원, 및/또는 다른 소프트웨어 및/또는 하드웨어 구성 요소들, 예를 들어 디스플레이(API(109)를 통해 웹 서버(101)에 의해 제공되는 정보를 보기 위한 용도), 그래픽 프로세서 유닛(일반 그래픽 및 멀티미디어 처리를 다루기 위한 용도), 센서(들), 센서 허브, 펌웨어, 운영 체제들, 드라이버들, 가입자 식별 모듈(SIM) 또는 셀룰러 통신을 지원하기 위한 기타 집적 회로, 및 다양한 물리적 연결 인터페이스들(예를 들면, USB, USB-C, USB Micro 등)을 포함할 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스(115)는 다른 프라이머리 컴퓨팅 디바이스(도시되지 않음), 예를 들어 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 휴대 전화, 스마트폰, PDA(personal digital assistant), 모바일 이메일 디바이스, 휴대용 게임 플레이어, 휴대용 음악 플레이어, 하나 이상의 프로세서가 내장되거나 연결된 텔레비전, 웹캠, 사용자 웨어러블 컴퓨팅 디바이스 또는 네트워크(105)에 액세스할 수 있는 임의의 다른 전자 디바이스 등에 대한 컴패니언 디바이스(companion device)일 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스(115)는 네트워크(105)를 통해 자신의 데이터(예를 들어, 이메일, 문자 메시지, 캘린더, 문서, 주소록, 파일 등)를 다른 프라이머리 컴퓨팅 디바이스들과 동기화할 수 있으며, 모바일 컴퓨팅 디바이스(115)는 상기 다른 프라이머리 컴퓨팅 디바이스들에 대한 컴패니언 디바이스이다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스(115)는 동일하거나 상이한 타입의 컴패니언 디바이스에 대한 프라이머리 컴퓨팅 디바이스일 수도 있다. 모바일 컴퓨팅 디바이스(115)는 모바일 컴퓨팅 디바이스(115)가 웹 서버(101)에 의해 호스팅되는 온라인 서비스(111)와 상호 작용할 수 있게 하는 브라우저 애플리케이션, 모바일 컴퓨팅 디바이스(115)가 웹 서버(101)에 의해 호스팅되는 온라인 서비스(111)에 연결되어 상호 작용할 수 있게 설치된 애플리케이션(예를 들어, HTML5 기반 모바일 애플리케이션)을 포함할 수 있으며, 또는 몇몇 다른 방식으로 웹 서버(101)와 연결될 수도 있다. 일부 실시예들에서는, 단일 사용자가 하나보다 많은 모바일 컴퓨팅 디바이스(115)를 사용할 수 있으며, 본 명세서에서 설명된 바와 같이 액션 플랫폼 서버(110)가 이들을 추적하여 그에 따라 기능을 제공할 수 있다. 예를 들어, 액션 플랫폼 서버(110)는 다수의 모바일 컴퓨팅 디바이스들(115)에 걸쳐 사용자의 거동을 추적할 수 있다. 도 1이 2개의 모바일 컴퓨팅 디바이스(115a 및 115n)를 도시하고 있지만, 본 개시는 하나 이상의 모바일 컴퓨팅 디바이스들(115)을 갖는 시스템 아키텍처에 적용된다. 또한, 모바일 컴퓨팅 디바이스들(115a 및 115n)은 동일하거나 상이한 타입의 모바일 컴퓨팅 디바이스들일 수 있다.
액션 플랫폼 애플리케이션(103)은 컨텍스트에 기초하여 모바일 컴퓨팅 디바이스(115)의 사용자 경험에서 하나 이상의 애플리케이션들과 관련된 맞춤형 액션너블 아이템들을 서피싱(surfacing)하기 위한 기능을 제공하는 소프트웨어 및/또는 로직을 포함할 수 있다. 일부 실시예들에서, 액션 플랫폼 애플리케이션(103)은 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit)과 같은 프로그램 가능하거나 특화된 하드웨어를 사용하여 구현될 수 있다. 일부 실시예들에서, 액션 플랫폼 애플리케이션(103)은 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수 있다. 다른 실시예들에서, 액션 플랫폼 애플리케이션(103)은 모바일 컴퓨팅 디바이스(115)와 액션 플랫폼 서버(110)의 조합, 또는 모바일 컴퓨팅 디바이스들(115) 또는 액션 플랫폼 서버(110) 중 어느 하나에 의해 저장되고 실행될 수 있다.
도 1에 도시된 바와 같이, 액션 플랫폼 애플리케이션(103a 및 103b)은 본 명세서에 설명된 액션 플랫폼 애플리케이션(103a 및 103b)에 의해 수행되는 동작들이 모바일 컴퓨팅 디바이스(115), 액션 플랫폼 서버(110), 또는 이들 구성 요소들의 임의의 조합에서 수행될 수 있음을 나타내기 위해 점선으로 도시되어 있다. 일부 실시예들에서, 각각의 인스턴스(103a 및 103b)는 도 2a 및 도 2b에 도시된 액션 플랫폼 애플리케이션(103)의 하나 이상의 구성 요소들을 포함할 수 있으며, 인스턴스가 상주하는 장소에 따라 본 명세서에 설명된 기능들을 완전히 또는 부분적으로 수행하도록 구성될 수 있다. 액션 플랫폼 애플리케이션(103)의 추가적인 구조, 동작 및/또는 기능은 적어도 도 2a, 도 2b 및 도 3과 관련하여 아래에서 더 상세히 설명된다. 액션 플랫폼 애플리케이션(103)이 이하에서 독립형 액션 플랫폼 애플리케이션으로서 설명되지만, 일부 실시예들에서는, 액션 플랫폼 애플리케이션(103)이 모바일 컴퓨팅 디바이스(115) 및 액션 플랫폼 서버(110) 상에서 동작하는 다른 애플리케이션들의 일부일 수 있다.
일부 실시예들에서, 액션 플랫폼 애플리케이션(103b)은 일부 기능이 모바일 컴퓨팅 디바이스(115)에서 실행되고, 추가 기능이 액션 플랫폼 애플리케이션(103a)에 의해서 액션 플랫폼 서버(110)에서 실행되는 씬-클라이언트 애플리케이션일 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(115)의 액션 플랫폼 애플리케이션(103b)은 모바일 컴퓨팅 디바이스(115)에 로딩된 하나 이상의 애플리케이션들과의 사용자 상호 작용의 이력을, 예를 들어 매일 아카이빙하고, 하나 이상의 애플리케이션들과 관련된 액셔너블 아이템들, 예를 들어 일반적으로 액세스되는 기능들을 결정하고, 하나 이상의 애플리케이션들의 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 구축하고, 컨텍스트에 기초하여 OTG(on-the-go) 방식으로 모바일 컴퓨팅 디바이스(115)의 사용자 경험에서 액셔너블 아이템들을 맞춤화하고 맞춤화된 액셔너블 아이템들을 서피싱하기 위한 소프트웨어 및/또는 로직을 포함할 수 있다. 다른 예에서, 웹 서버(101) 상의 액션 플랫폼 애플리케이션(103a)은 러닝 데이터를 준비하고 그 러닝 데이터를 사용하여 하나 이상의 액션 모델들을 트레이닝하기 위한 소프트웨어 및/또는 로직을 포함할 수 있다. 액션 플랫폼 애플리케이션(103)의 동작 및 상기 열거된 기능들에 대하여 도 2 내지 도 16을 참조하여 아래에서 더 상세히 설명한다.
도 2a는 액션 플랫폼 애플리케이션(103)을 포함하는 컴퓨팅 디바이스(200)의 일 실시예를 도시한 블록도이다. 컴퓨팅 디바이스(200)는 또한 일부 예들에 따라 프로세서(235), 메모리(237), 통신 유닛(241), 데이터 스토리지(243), 선택적 캡처 디바이스(245), 입/출력 디바이스(들)(247) 및 센서(들)(249)를 포함할 수 있다. 메모리(237)는 운영 체제(107) 및 액션 플랫폼 애플리케이션(103) 중 하나 이상을 포함할 수 있다. 컴퓨팅 디바이스(200)의 구성 요소들은 버스(220)에 의해 통신 가능하게 연결된다. 일부 실시예들에서, 컴퓨팅 디바이스(200)는 모바일 컴퓨팅 디바이스(115), 액션 플랫폼 서버(110), 웹 서버(101) 또는 모바일 컴퓨팅 디바이스(115), 웹 서버(101) 및 액션 플랫폼 서버(110)의 조합을 나타낼 수 있다. 컴퓨팅 디바이스(200)가 모바일 컴퓨팅 디바이스(115), 웹 서버(101) 또는 액션 플랫폼 서버(110)를 나타내는 실시예들에서는, 도 2a에 도시되지 않았지만, 모바일 컴퓨팅 디바이스(115), 웹 서버(101) 및 액션 플랫폼 서버(110)가 전술한 다른 구성 요소들을 포함할 수 있다.
프로세서(235)는 다양한 입/출력, 논리 및/또는 수학 연산들을 수행함으로써 소프트웨어 명령어들을 실행할 수 있다. 프로세서(235)는 예를 들어, 복잡한 명령어 세트 컴퓨터(CISC) 아키텍처, 축소 명령어 세트 컴퓨터(RISC) 아키텍처 및/또는 명령어 세트들의 조합을 구현하는 아키텍처를 포함하는 데이터 신호들을 처리하기 위한 다양한 컴퓨팅 아키텍처들을 가질 수 있다. 프로세서(235)는 물리적 및/또는 가상적인 것일 수 있으며, 단일 프로세싱 유닛 또는 복수의 프로세싱 유닛들 및/또는 코어들을 포함할 수 있다. 일부 구현예들에서, 프로세서(235)는 전자 디스플레이 신호들을 생성하여 디스플레이 디바이스에 제공하고, 이미지들의 디스플레이를 지원하고, 이미지들을 캡처 및 전송하고, 다양한 타입의 특징 추출 및 샘플링을 포함하는 복잡한 작업들을 수행하는 등의 처리를 수행할 수 있다. 일부 구현예들에서, 프로세서(235)는 버스(220)를 통해 메모리(237)에 연결되어 그로부터 데이터 및 명령어들에 액세스하고, 그 안에 데이터를 저장할 수 있다. 버스(220)는 프로세서(235)를 예를 들어 메모리(237), 통신 유닛(241), 액션 플랫폼 애플리케이션(103) 및 데이터 스토리지(243)를 포함하는 컴퓨팅 디바이스(200)의 다른 구성 요소들에 연결할 수 있다. 일부 구현예들에서, 프로세서(235)는 동일한 집적 회로 또는 별도의 집적 회로에 포함된 저전력 2 차 프로세서(예를 들어, 센서 허브)에 연결될 수 있다. 이러한 2 차 프로세서는 저전력에서 저수준 계산을 수행하기 위해 전용될 수 있다. 예를 들어, 2 차 프로세서는 액션 플랫폼 애플리케이션(103)으로부터 수신된 명령어들에 따라 스텝 카운팅(step counting), 센서 퓨전(sensor fusion), 센서 배칭(sensor batching) 등을 수행할 수 있다.
메모리(237)는 컴퓨팅 디바이스(200)의 다른 구성 요소들의 데이터를 저장하고 이에 대한 액세스를 제공할 수 있다. 메모리(237)는 단일 컴퓨팅 디바이스에 포함되거나 또는 본 명세서의 다른 곳에서 논의된 바와 같이 복수의 컴퓨팅 디바이스들 사이에 분산될 수 있다. 일부 구현예들에서, 메모리(237)는 프로세서(235)에 의해 실행될 수 있는 명령어들 및/또는 데이터를 저장할 수 있다. 명령어들 및/또는 데이터는 본 명세서에서 설명된 기술들을 수행하기 위한 코드를 포함할 수 있다. 메모리(237)는 또한 예를 들어 운영 체제, 하드웨어 드라이버, 다른 소프트웨어 애플리케이션, 데이터베이스 등을 포함하는 다른 명령어들 및 데이터를 저장할 수 있다. 메모리(237)는 프로세서(235), 통신 유닛(241), 데이터 스토리지(243) 및/또는 컴퓨팅 디바이스(200)의 다른 구성 요소들과 통신하기 위해 버스(220)에 연결될 수 있다.
메모리(237)는 하나 이상의 비일시적 컴퓨터 사용 가능(예를 들어, 판독 가능, 기록 가능) 매체를 포함할 수 있으며, 이것은 프로세서(235)에 의해 처리하거나 또는 프로세서(235)와 관련하여 처리하기 위한 명령어들, 데이터, 컴퓨터 프로그램들, 소프트웨어, 코드, 루틴들 등을 포함, 저장, 통신, 전파 또는 전송할 수 있는 유형의 비일시적 장치 또는 디바이스일 수 있다. 일부 구현예들에서, 메모리(237)는 휘발성 메모리 및 비휘발성 메모리 중 하나 이상을 포함할 수 있다. 예를 들어, 메모리(237)는 SRAM(Static Random Access Memory) 디바이스, DRAM(Dynamic Random Access Memory) 디바이스, 내장형 메모리 디바이스, 이산형 메모리 디바이스(예를 들어, PROM, FPROM, ROM), 하드 디스크 드라이브, 광 디스크 드라이브(CD, DVD, Blu-rayTM 등) 중 하나 이상을 포함할 수 있으며, 이에 한정되지 않는다. 메모리(237)는 단일 디바이스일 수 있거나 복수 타입의 디바이스들 및 구성들을 포함할 수 있음을 이해해야 한다.
버스(220)는 ISA(Industry Standard Architecture) 버스, PCI(Peripheral Component Interconnect) 버스, USB(Universal Serial Bus) 또는 유사한 기능을 제공하는 다른 버스를 포함하는 하나 이상의 버스들을 나타낼 수 있다. 버스(220)는 네트워크(105) 또는 그 일부, 프로세서 메시(processor mesh), 이들의 조합 등을 통해 컴퓨팅 디바이스(200)의 구성 요소들 사이에서 또는 컴퓨팅 디바이스(200)와 시스템의 다른 구성 요소들 사이에서 데이터를 전송하기 위한 통신 버스를 포함할 수 있다. 일부 구현예들에서, 액션 플랫폼 애플리케이션(103) 및 운영 체제(107)는 버스(220)와 연계하여 구현된 소프트웨어 통신 메커니즘을 통해 협력 및 통신할 수 있다. 소프트웨어 통신 메커니즘은 예를 들어 프로세스 간 통신, 로컬 기능 또는 프로시저 호출, 원격 프로시저 호출, 네트워크 기반 통신, 보안 통신 등을 포함할 수 있으며/있거나 용이하게 할 수 있다.
통신 유닛(241)은 프로세서(235)를 네트워크(105) 및 다른 처리 시스템들에 링크시킴으로써 데이터를 수신 및 송신하기 위한 하드웨어이다. 통신 유닛(241)은 모바일 컴퓨팅 디바이스(115)로부터의 요청들과 같은 데이터를 수신하여 웹 서버(101)로 전송한다. 통신 유닛(241)은 또한 예를 들어 요청들의 처리에 응답하여, 디스플레이하기 위해 정보를 모바일 컴퓨팅 디바이스(115)에 전송한다. 통신 유닛(241)은 버스(220)에 연결된다. 통신 유닛(241)은 네트워크(105) 및 예를 들어 웹 서버(101), 모바일 컴퓨팅 디바이스(115) 및 액션 플랫폼 서버(110)를 포함하는 시스템(100)을 포함하는 시스템(100)의 다른 엔티티들 및/또는 구성 요소들과의 유선 및 무선 연결을 위한 하나 이상의 인터페이스 디바이스들을 포함할 수 있다. 예를 들어, 통신 유닛(241)은 케이블 인터페이스들(예를 들어, CAT-5); Wi-FiTM를 사용하여 데이터를 송수신하기 위한 무선 송수신기; Bluetooth®, 근거리 통신(NFC), 셀룰러 통신 등; 범용 직렬 버스(USB) 인터페이스; 이들의 다양한 조합 등을 포함할 수 있다. 통신 유닛(241)은 신호 라인(104)을 통해 네트워크(105)에 연결될 수 있다.
다른 실시예에서, 통신 유닛(241)은 SMS(Short Messaging Service), MMS(Multimedia Messaging Service), HTTP(Hypertext Transfer Protocol), 직접 데이터 연결, WAP, 이메일 또는 다른 적절한 타입의 전자 통신과 같은 셀룰러 통신 네트워크를 통해 데이터를 송수신하기 위한 셀룰러 통신 송수신기를 포함할 수 있다. 통신 유닛(241)은 또한 TCP/IP, HTTP, HTTPS 및 SMTP 또는 이들의 임의의 조합과 같은 표준 네트워크 프로토콜들을 사용하여 파일들 및/또는 미디어 객체들의 분배를 위해 네트워크(105)에 다른 종래의 연결들을 제공할 수 있다.
데이터 스토리지(243)는 본 명세서에 설명된 기능을 제공하기 위한 데이터를 저장하는 비일시적 메모리이다. 데이터 스토리지(243)는 DRAM(Dynamic Random Access Memory) 디바이스, SRAM(Static Random Access Memory) 디바이스, 플래시 메모리 또는 다른 메모리 디바이스들일 수 있다. 일부 실시예들에서, 데이터 스토리지(243)는 또한 비휘발성 메모리 또는 유사한 영구 저장 디바이스 및 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 디바이스, DVD-ROM 디바이스, DVD-RAM 디바이스, DVD-RW 디바이스, 플래시 메모리 디바이스 또는 정보를 보다 영구적으로 저장하기 위한 다른 대용량 저장 디바이스를 포함하는 매체를 포함할 수 있다.
데이터 스토리지(243)는 버스(220)에 통신 가능하게 연결된다. 일부 실시예들에서, 데이터 스토리지(243)는 데이터를 수신하고 데이터에에 대한 액세스를 제공하기 위해 버스(214)를 통해 컴퓨팅 디바이스(200)의 구성 요소들(235, 237, 241, 245 또는 249)에 연결될 수 있다. 일부 실시예들에서, 데이터 스토리지(243)는 시스템(100)의 다른 엔티티들(101, 110 또는 115)로부터 수신된 데이터를 저장하고, 이들 엔티티들에 대한 데이터 액세스를 제공할 수 있다. 일부 실시예들에서, 데이터 스토리지(243)는 메모리(237)와 통합될 수 있거나 그것과 구별될 수 있다. 일부 구현예들에서, 데이터 스토리지(243)는 데이터베이스 관리 시스템(DBMS)을 포함할 수 있다. 예를 들어, DBMS는 SQL(Structured Query Language) DBMS, NoSQL DMBS, 이들의 다양한 조합 등을 포함할 수 있다. 일부 경우들에 있어서, DBMS는 행 및 열로 구성된 다차원 테이블들에 데이터를 저장하고, 프로그래밍 동작들을 사용하여 데이터 행들을 삽입, 쿼리, 업데이트 및/또는 삭제하는 등의 조작을 수행할 수 있다. 데이터 스토리지(243)에 저장되는 데이터는 아래에서 보다 상세하게 설명된다.
캡처 디바이스(245)는 관심 대상인 객체의 이미지 또는 데이터를 디지털적으로 캡처하도록 동작 가능할 수 있다. 예를 들어, 캡처 디바이스(245)는 고화질(HD) 카메라, 일반 2D 카메라, 다중 스펙트럼 카메라, 구조 광 3D 카메라, TOF(time-of-flight) 3D 카메라, 스테레오 카메라, 표준 스마트폰 카메라, 웨어러블 컴퓨팅 디바이스, 바코드 리더 등일 수 있다. 캡처 디바이스(245)는 버스에 연결되어 이미지들 및 다른 처리된 메타데이터를 프로세서(235), 메모리(237) 또는 데이터 스토리지(243)에 제공한다. 캡처 디바이스(245)가 선택적인 것임을 나타내기 위해 점선으로 도 2a에 도시되어 있음에 유의해야 한다. 예를 들어, 컴퓨팅 디바이스(200)가 액션 플랫폼 서버(110)인 경우, 캡처 디바이스(245)는 시스템의 일부가 아닐 수 있으며, 컴퓨팅 디바이스(200)가 모바일 컴퓨팅 디바이스(115)인 경우에는, 캡처 디바이스(245)가 포함되어 아래에서 설명되는 이미지들 및 다른 메타데이터 정보를 제공하기 위해 사용된다.
입/출력(I/O) 디바이스(들)(247)는 정보를 입력 또는 출력하기 위한 임의의 표준 디바이스를 포함할 수 있으며, 직접적으로 또는 중간의 I/O 제어기들을 통해 컴퓨팅 디바이스(200)에 연결될 수 있다. 비제한적인 예시적 I/O 디바이스들(247)은 터치 스크린 또는 본 명세서에 설명된 바와 같은 사용자 인터페이스들, 전자 이미지들 및 데이터를 디스플레이하도록 장착된 임의의 다른 유사한 디스플레이 디바이스, 터치 패드, 스캐너, 스타일러스, 발광 다이오드(LED) 인디케이터들, 오디오 재생 디바이스(예를 들면, 스피커), 마이크로폰, 바코드 리더, 시선 추적기, SNP(sip-and-puff) 디바이스, 및 사용자들과의 통신 및/또는 상호 작용을 용이하게 하는 임의의 다른 I/O 구성 요소들을 포함한다. 다른 실시예들에서, 디스플레이는 이진(픽셀들에 대한 단 2개의 상이한 값들), 단색(하나의 색상의 다중 음영), 또는 다수의 색상 및 음영일 수 있다.
센서(들)(249)는 컴퓨팅 디바이스(200)에 적합한 임의의 타입의 센서들을 포함한다. 센서(들)(249)는 버스(220)에 통신 가능하게 연결된다. 모바일 컴퓨팅 디바이스(115)와 관련하여, 센서(들)(249)는 모바일 컴퓨팅 디바이스(115) 및/또는 그 내부 및 외부 환경들의 특성을 결정하기에 적합한 임의의 타입의 신호 데이터를 수집하도록 구성될 수 있다. 센서(249)의 비제한적인 예들로는 다양한 광학 센서(CCD, CMOS, 2D, 3D, LIDAR(light detection and ranging), 카메라 등), 오디오 센서, 모션 감지 센서, 자력계, 기압계, 고도계, 써머커플, 수분 센서, 적외선(IR) 센서, 레이더 센서, 기타 포토 센서, 자이로스코프, 가속도계, 지리적 위치 센서, 방향 센서, 무선 송수신기(예를 들면, 셀룰러, WiFiTM, 니어-필드 등), 소나 센서, 초음파 센서, 터치 센서, 근접 센서, 거리 센서, 마이크로폰 등을 포함한다. 일부 실시예들에서, 하나 이상의 센서들(249)은 모바일 컴퓨팅 디바이스(115)를 둘러싼 상황적 컨텍스트(situational context)를 포착하기 위해 모바일 컴퓨팅 디바이스(115)의 전방측, 후방측, 우측 및/또는 좌측에 제공되는 외향 센서들을 포함할 수 있다. 일부 실시예들에서, 센서(들)(249)는 비디오 이미지 및 스틸 이미지를 포함하는 이미지들을 기록하도록 구성된 하나 이상의 이미지 센서들(예를 들어, 광학 센서들)을 포함할 수 있으며, 임의의 적용 가능한 프레임 레이트를 사용하여 비디오 스트림의 프레임들을 기록할 수 있고, 또한 적용 가능한 방법들을 사용하여 캡처된 비디오 및 스틸 이미지들을 인코딩 및/또는 처리할 수 있다. 일부 실시예들에서, 이미지 센서(들)(249)는 그들의 센서 범위 내에서 주변 환경의 이미지들을 캡처할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(115)와 관련하여, 이미지 센서들(249)은 사람, 주변 광(예를 들어, 낮 또는 밤 시간) 등을 포함하는 모바일 컴퓨팅 디바이스(115) 주위의 환경을 캡처할 수 있다.
다른 프로세서, 운영 체제, 센서, 디스플레이 및 물리적 구성이 가능하다는 것을 이해해야 한다.
도 2a에 도시된 바와 같이, 메모리(237)는 운영 체제(107) 및 액션 플랫폼 애플리케이션(103)을 포함할 수 있다.
메모리(237)에 저장되어 프로세서(235)에 의해 실행되도록 구성된 운영 체제(107)는, 컴퓨팅 디바이스(200)에서 하드웨어 및 소프트웨어 리소스들을 관리하는 시스템 소프트웨어의 구성 요소이다. 운영 체제(107)는 액션 플랫폼 애플리케이션(103)으로부터의 입/출력 요청들을 관리함으로써 액션 플랫폼 애플리케이션(103)의 실행을 제어하는 커널을 포함한다. 액션 플랫폼 애플리케이션(103)은 시스템 호출들을 통해 운영 체제(107)의 커널로부터 서비스를 요청한다. 또한, 운영 체제(107)는 스케줄링, 데이터 관리, 메모리 관리, 통신 제어 및 기타 관련 서비스들을 제공할 수 있다. 예를 들어, 운영 체제(107)는 터치 스크린으로부터의 입력을 인식하여, 디스플레이 스크린으로 출력을 전송하고, 데이터 스토리지(243) 상의 파일들을 추적하며, 또한 주변 디바이스들(예를 들어, Bluetooth® 헤드폰, 이어 버드 등)을 제어하는 역할을 한다. 일 실시예에서, 운영 체제(107)는 범용 운영 체제이다. 예를 들어, 운영 체제(107)는 Microsoft Windows®, Mac OS® 또는 UNIX® 기반 운영 체제일 수 있다. 또는 운영 체제(107)는 Android®, iOS® 또는 Tizen™과 같은 모바일 운영 체제일 수도 있다. 다른 실시예에서, 운영 체제(107)는 특수 목적 운영 체제일 수 있다. 운영 체제(107)는 컴퓨팅 디바이스(200)를 구성 및 유지하기 위한 다른 유틸리티 소프트웨어 또는 시스템 소프트웨어를 포함할 수 있다.
액션 플랫폼 애플리케이션(103)은 아카이버(202), 액션 라이브러리 큐레이터(204), 프로세싱 엔진(206), 컨텍스트 결정기(208), 액션 추천기(210) 및 사용자 인터페이스(212)를 포함한다. 액션 플랫폼 애플리케이션(103)의 구성 요소들(202, 204, 206, 208, 210 및 212)은 서로 간의 통신 및 컴퓨팅 디바이스(200)의 다른 구성 요소들(235, 241, 243, 245, 247 및 249)과의 통신을 위해 버스(220)에 의해 연결된다. 액션 플랫폼 애플리케이션(103)의 구성 요소들(202, 204, 206, 208, 210 및 212)은 또한 시스템(100)의 다른 엔티티들(101, 110 및 115)과의 통신을 위해 통신 유닛(241)을 통해 네트워크(105)에 연결된다.
일부 실시예들에서, 액션 플랫폼 애플리케이션(103)의 구성 요소들(202, 204, 206, 208, 210 및 212) 각각은 그들 각각의 기능을 제공하기 위한 소프트웨어 및/또는 로직을 포함할 수 있다. 일부 실시예들에서, 액션 플랫폼 애플리케이션(103)의 구성 요소들(202, 204, 206, 208, 210 및 212) 각각은 FPGA(field-programmable gate array) 또는 ASIC(application-specific integrated circuit)을 포함하는 프로그램 가능하거나 특화된 하드웨어를 사용하여 구현될 수 있다. 일부 실시예들에서, 액션 플랫폼 애플리케이션(103)의 구성 요소들(202, 204, 206, 208, 210 및 212) 각각은 프로세서(235)에 의해 실행 가능한 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수 있다. 일부 실시예들에서, 액션 플랫폼 애플리케이션(103)의 구성 요소들(202, 204, 206, 208, 210, 및 212) 각각은 메모리(237)에 저장될 수 있고, 프로세서(235)에 의해 액세스 및 실행 가능할 수 있으며 이에 따라 그들 각각의 동작들 및/또는 기능을 제공할 수 있다. 이들 실시예들 중 임의의 것에서, 액션 플랫폼 애플리케이션(103)의 구성 요소들 각각은 버스(220)를 통해 프로세서(235), 메모리(237) 및 컴퓨팅 디바이스(200)의 다른 구성 요소들과 협력 및 통신하도록 적응될 수 있다.
아카이버(202)는 모바일 컴퓨팅 디바이스(115) 상의 하나 이상의 애플리케이션들과 사용자들의 상호 작용을 결정하고 아카이빙하기 위한 기능을 제공하는 소프트웨어 및/또는 로직을 포함할 수 있다. 일부 실시예들에서, 아카이버(202)는 모바일 컴퓨팅 디바이스(115)의 애플리케이션 런처에서 하나 이상의 애플리케이션들에 액세스하는 사용자의 빈도를 결정한다. 예를 들어, 아카이버(202)는 사용자가 일, 주, 월 등에서 메시징 애플리케이션을 실행한 횟수를 결정한다. 아카이버(202)는 사용자가 하나 이상의 애플리케이션들에 액세스하는 시간을 결정한다. 예를 들어, 아카이버(202)는 사용자가 오전 8시에서 오전 10시 사이에 이메일 애플리케이션을 여는 것으로 결정한다. 아카이버(202)는 사용자가 하나 이상의 애플리케이션들에 액세스하는 위치를 결정한다. 예를 들어, 아카이버(202)는 사용자가 집에서 Wi-Fi 스팟에 연결할 경우 사용자가 Wi-Fi 홈 자동화 애플리케이션을 실행하는 것으로 결정한다. 다른 예에서, 아카이버(202)는 사용자가 사무실에 있을 경우 사용자가 캘린더링 애플리케이션을 실행하는 것으로 결정한다. 또 다른 예에서, 아카이버(202)는 사용자가 통근 중인 경우 사용자가 웹 매핑 서비스를 실행하는 것으로 결정한다. 아카이버(202)는 사용자에 의해 하나 이상의 애플리케이션 내에서 액세스되는 데이터 및/또는 기능들의 파라미터 세트를 결정한다. 예를 들어, 아카이버(202)는 사용자가 음악 스트리밍 애플리케이션을 실행하여 통상적으로 "Top 100 Billboard" 플레이 리스트를 재생하는 것으로 결정한다. 다른 예에서, 아카이버(202)는 사용자가 메시징 애플리케이션을 실행하여 통상적으로 부모님에게 문자를 전송하는 것으로 결정한다. 또 다른 예에서, 아카이버(202)는 사용자가 전화 애플리케이션을 열어서 통상적으로 배우자에게 전화하는 것으로 결정한다. 아카이버(202)는 애플리케이션 런처에서의 애플리케이션들과 사용자의 상호 작용을 결정한다. 예를 들어, 아카이버(202)는 애플리케이션 아이콘의 선택, 애플리케이션 런처에서의 애플리케이션 아이콘 재정렬, 애플리케이션들로부터의 통지 해제, 애플리케이션 런처에서 애플리케이션 아이콘 제거, 폴더에서의 애플리케이션 아이콘 그룹화 등을 결정한다. 아카이버(202)는 하나 이상의 애플리케이션들에서 사용자의 사용자 프로파일 계정을 결정한다. 예를 들어, 아카이버(202)는 웹 서버(101)에서의 온라인 서비스(111)에 의해 유지되는 사용자 프로파일에 액세스하는 것에 기초하여 사용자 프리퍼런스들 및 설정들을 결정한다. 아카이버(202)는 전술한 결정들 중 하나 이상을 조합하여 새로운 세트의 상호 작용 데이터를 아카이빙한다. 예를 들어, 아카이버(202)는 사용자가 사무실과 집 사이에서 통근 중일 경우 통상적으로 전화 애플리케이션을 사용하여 배우자와 통화하는 것으로 결정한다. 하나 이상의 애플리케이션들과의 사용자 상호 작용으로부터 아카이버(202)에 의해 아카이빙되는 데이터에 대한 예시적인 파라미터들로는 하나 이상의 애플리케이션들에서의 빈번하게 액세스되는 전화 번호, 빈번하게 액세스되는 소셜 네트워크 친구, 빈번하게 액세스되는 이메일 수신자, 빈번하게 액세스되는 문자 메시지 수신자, 즐겨 찾기 플레이 리스트, 최근 액세스된 플레이 리스트, 직장 주소, 집 주소, 일일 운동 루틴, 가장 일반적으로 사용되는 결제 방법 등 또는 이들의 조합을 포함하며, 이에 한정되지 않는다. 하나 이상의 애플리케이션들과의 사용자 상호 작용으로부터 아카이버(202)에 의해 아카이빙되는 기능에 대한 예시적인 파라미터들로는 하나 이상의 애플리케이션들에서의 플레이 리스트 스트리밍, 교통 상황 확인, 지도 방향 찾기, 라이드 쉐어 서비스 요청, 식당 테이블 예약, 전화 통화, 문자 메시지 전송, 사진 공유, 상태 게시, 물리적 위치에 소셜 체크인 수행, 운동 일지 기록, 리워드 카드로 결제, 차량 키 액세스 등 또는 이들의 조합을 포함하며, 이에 한정되지 않는다. 일부 실시예들에서, 아카이버(202)는 데이터 스토리지(243)의 아카이브 데이터(222)에 하나 이상의 애플리케이션들과의 사용자 상호 작용 데이터를 저장한다.
액션 라이브러리 큐레이터(204)는 데이터 스토리지(243)에서 액션 라이브러리(224)를 생성 및 관리하기 위한 기능을 제공하기 위한 소프트웨어 및/또는 로직을 포함할 수 있다. 액션 라이브러리(224)는 모바일 컴퓨팅 디바이스(115) 상의 하나 이상의 애플리케이션들과 관련된 복수의 액션너블 아이템들을 포함한다. 액션 라이브러리 큐레이터(204)는 API(109)가 모바일 컴퓨팅 디바이스(115) 상의 하나 이상의 애플리케이션들에 이용 가능한지 여부를 결정한다. 예를 들어, 액션 라이브러리 큐레이터(204)는 웹 서버(101)에 의해 호스팅되는 온라인 서비스(111)를 핑(ping)하고, API(109)를 사용하여 액세스 가능한 애플리케이션 기능들 및/또는 데이터를 식별한다. API(109)는 웹 서버(101)에 의해 호스팅되는 온라인 서비스(111)의 구성에 따라 내부 또는 외부 API일 수 있다. 액션 라이브러리 큐레이터(204)는 API(109)를 통해 액세스 가능한 애플리케이션의 기능을 결정한다. 액션 라이브러리 큐레이터(204)는 API 키를 사용하여 온라인 서비스(111)의 API(109)에 액세스한다. 예를 들어, API 키는 온라인 서비스(111)에 대한 가입 또는 파트너쉽에 기초하여 이용 가능할 수 있으며, API(109)의 구성에 따라 API(109)에 대한 읽기 액세스, 쓰기 액세스 또는 양쪽 모두의 액세스를 액션 라이브러리 큐레이터(204)에 제공한다. 액션 라이브러리 큐레이터(204)는 API(109)를 사용하여 애플리케이션을 파싱하고, API(109)를 통해 이용 가능한 애플리케이션과 관련된 하나 이상의 구성 기능, 작업 또는 액티비티를 결정한다. 예를 들어, 이메일 온라인 서비스(111)와 관련된 API(109)는 새로운 이메일을 작성하는 기능을 노출시킨다. 다른 예에서, 소셜 네트워킹 서비스(111)와 관련된 API(109)는 사용자의 소셜 미디어 상태를 업데이트하는 기능을 노출시킨다. 액션 라이브러리 큐레이터(204)는 API(109)를 통해 애플리케이션의 기능을 수행 또는 시작하기 위한 API 호출을 결정한다. API 호출은 애플리케이션의 기능을 수행하기 위한 요청을 API(109)에 제출하는데 사용될 수 있다. 이 요청에는 기능 수행과 관련된 파라미터들 또는 데이터가 포함된다. API(109)는 API 호출의 요청을 서비스하고 응답을 반환한다. 액션 라이브러리 큐레이터(204)는 API 호출 및 애플리케이션과 관련된 하나 이상의 파라미터들을 사용하여 액션너블 아이템을 생성한다. 애플리케이션의 액셔너블 아이템은 애플리케이션과 관련된 기능, 작업 또는 액티비티를 수행하기 위해 온라인 서비스(111)의 API(109)에게 요청을 자동으로 전송하도록 API 호출에 직접 링크되는 사용자 인터페이스 요소일 수 있다. 액셔너블 아이템은 모바일 컴퓨팅 디바이스(115) 상에서 관련 애플리케이션의 실행을 요구하지 않고 애플리케이션의 기능을 수행한다. 일부 실시예들에서, 액셔너블 아이템은 애플리케이션에서의 특정 기능에 대한 바로 가기(short cut)일 수 있다. 액션 라이브러리 큐레이터(204)는 애플리케이션 기능의 URI(Uniform Resource Identifier)를 사용하여 액션너블 아이템을 생성한다. 액셔너블 아이템은 URI를 사용하여 애플리케이션 기능과 관련된 특정 위치 또는 페이지로 링크되는 딥 링크(deep link)를 제공하여, 프롬프트, 삽입 페이지 또는 로그인 없이 그 기능을 개시한다. 예를 들어, 액션 라이브러리 큐레이터(204)는 애플리케이션 런처에서 관련 이메일 애플리케이션을 실행하여, 연락처 목록에서 Rob이라는 연락처를 검색하고, 그 연락처를 선택한 다음, 이메일 작성 옵션을 선택하는 것을 포함하는 일련의 단계들을 수행하는 것 없이도 Rob이라는 연락처로의 이메일 메시지 전송을 개시하도록 인보크될 수 있다. 다른 예에서, 액션 라이브러리 큐레이터(204)는 관련된 음악 스트리밍 애플리케이션을 실행하여, 시작 페이지에서 라이브러리를 선택하고, 두 번째 페이지에서 플레이 리스트 옵션을 선택한 다음, 나열된 플레이 리스트를 탐색하여 세 번째 페이지에서 "Rock Playlist"를 선택하고 나서, 음악 스트리밍 애플리케이션의 네 번째 페이지에서 "Play" 옵션을 선택하는 것을 포함하는 일련의 단계들을 수행하는 것 없이도 'Rock' 장르의 노래 플레이 리스트를 열도록 인보크될 수 있는 액셔너블 아이템 "Rock Playlist"를 생성한다. 일부 실시예들에서, 액션 라이브러리 큐레이터(204)는 애플리케이션의 시스템과 관련된 액션너블 아이템들(예를 들어, 시스템 액션들)을 생성한다. 시스템 액션으로는 애플리케이션 정보 보기, 애플리케이션 아이콘 이동 명령, 제거 명령 등을 포함한다. 액션 라이브러리 큐레이터(204)는 액션너블 아이템의 카테고리를 분류한다. 예를 들어, 액션 라이브러리 큐레이터(204)는 하나 이상의 소셜 네트워킹 애플리케이션들에 대한 액셔너블 아이템들을 식별하고, 식별된 액셔너블 아이템들을 '소셜(social)' 카테고리 아래에 그룹화한다. 일부 실시예들에서, 액션 라이브러리 큐레이터(204)는 데이터 스토리지(222)에서 아카이브 데이터(222)를 파싱하고, 상호 작용 데이터와 관련된 하나 이상의 애플리케이션들 및 파라미터들을 식별하며, 위에서 설명한 바와 같이 아카이브 데이터(222) 내의 상호 작용 데이터에 기초하여 액션 라이브러리(224)를 구축한다.
프로세싱 엔진(206)은 센서(들)(249)와 관련된 센서 데이터 중 하나 이상 및 아카이버(202)로부터의 애플리케이션들과 사용자 상호 작용 데이터를 포함하는 정보를 처리하기 위한 기능을 제공하는 소프트웨어 및/또는 로직을 포함할 수 있다. 컴퓨팅 디바이스(200)와 관련된 센서(들)(249)는 센서 데이터를 생성한다. 일부 실시예들에서, 프로세싱 엔진(206)은 센서(들)(249)로부터 센서 데이터를 수신하고 그 센서 데이터를 처리한다. 처리되는 데이터의 예로는 스텝들의 수를 나타내는 데이터, GPS 센서로부터의 지리적 위치(예를 들어, 위치의 위도, 경도 및 고도) 및 속도를 나타내는 데이터, 모바일 컴퓨팅 디바이스(115)에 근접해 있는 다른 디바이스들의 존재를 나타내는 데이터, 가속도계로부터의 이동 및 이동 방향을 나타내는 데이터, 광 검출기로부터의 환경 밝기를 나타내는 데이터, 마이크로폰으로부터 주변 소리 감지를 나타내는 데이터, 무선 송수신기로부터의 무선 액세스 포인트 감지를 나타내는 데이터 등을 포함하며, 이에 한정되지 않는다. 처리되는 데이터에 대한 다른 예들도 가능하다. 일부 실시예들에서, 프로세싱 엔진(206)은 모바일 컴퓨팅 디바이스(115)에 설치된 애플리케이션들, 애플리케이션들과의 사용자 상호 작용 데이터(예를 들어, 음악 재생, 이메일 메시지 작성, 소셜 네트워크에 사진 게시 등), 애플리케이션 사용 이력 데이터, 애플리케이션 통지 데이터, 통신 및 통화 이력 데이터 등을 포함하며 이에 한정되지 않는 사용자 상호 작용 데이터를 아카이버(202)로부터 수신한다. 사용자 상호 작용 데이터에 대한 다른 예가 가능하다. 프로세싱 엔진(206)은 사용자로부터 허가를 받아 센서 데이터 및 사용자 상호 작용 데이터를 수신한다. 일부 실시예들에서, 프로세싱 엔진(206)은 센서 데이터 및 사용자 상호 작용 데이터를, 공동 처리를 위한 하나의 신호 스트림으로 결합한다. 프로세싱 엔진(206)은 센서 데이터 및/또는 사용자 상호 작용 데이터(예를 들어, 신호 스트림)를 필터링하여 이벤트를 결정한다. 이벤트는 모바일 컴퓨팅 디바이스(115)의 사용자 인터페이스 상의 애플리케이션과 관련된 액션 또는 발생일 수 있다. 예를 들어, 프로세싱 엔진(206)은 그래픽 사용자 인터페이스(GUI) 이벤트를 결정할 수 있다. GUI 이벤트들의 소스로는 예를 들어 버튼 누름, 스와이프, 애플리케이션 아이콘에 대한 오래 계속되는 선택(예를 들면, 롱-프레스), 애플리케이션과 관련된 통지의 선택, 제스처 등을 포함한다. 이벤트는 또한 모바일 컴퓨팅 디바이스(115)의 환경 변화일 수 있다. 예를 들어, 프로세싱 유닛(206)은 위치 좌표 및 시간의 변화를 판정하여, 모바일 컴퓨팅 디바이스(115)의 지리적 위치를 포함하는 필터링된 신호 데이터를 출력할 수 있다.
컨텍스트 결정기(208)는 프로세싱 엔진(206)으로부터 처리된 데이터를 수신하고, 처리된 데이터에서의 컨텍스트를 결정하기 위한 기능을 제공하는 소프트웨어 및/또는 로직을 포함할 수 있다. 컨텍스트 결정기(208)는 처리된 데이터를 분석하여, 처리된 데이터와 관련된 컨텍스트를 결정한다. 일부 실시예들에서, 컨텍스트 결정기(208)는 처리된 데이터를 액티비티 인식 알고리즘에 대한 입력으로서 사용하여 컨텍스트 사용자 액티비티(contextual user activity)를 결정한다. 예를 들어, 컨텍스트 결정기(208)는 처리된 데이터의 분석에 기초하여 달리기, 걷기, 통근 등과 같은 사용자 액티비티를 결정한다. 일부 실시예들에서, 컨텍스트 결정기(208)는 컨텍스트가 임계 기간 동안 계속 지속되는지를 결정한다. 컨텍스트가 지속되는 것으로 결정되면, 컨텍스트 결정기(208)는 컨텍스트의 표시를 액션 추천기(210)에 전송한다. 예를 들어, 컨텍스트 결정기(208)가 모바일 컴퓨팅 디바이스(115)의 사용자의 컨텍스트는 사용자가 달리기를 시작하였음으로 결정하고 컨텍스트 결정기(208)가 달리기 액티비티가 30 초의 임계 기간 동안 계속적이었음을 검출한 경우, 컨텍스트 결정기(208)는 그 달리기 컨텍스트의 표시를 액션 추천기(210)에 전송한다. 컨텍스트 결정기(208)는 처리된 데이터에 있는 상이한 타입의 데이터를 조합하여 인간이 이해할 수 있는 액션들의 용어로 컨텍스트를 결정한다. 예를 들어, 컨텍스트 결정기(208)는 (1) GPS 센서로부터의 지리적 위치 데이터의 변경, (2) 자동차의 존재를 나타내는 근접 검출 데이터(예를 들어, 블루투스 인에이블드) 및 (3) 캘린더링 애플리케이션에서의 예정된 비즈니스 이벤트를 통해 사용자가 자동차를 타고서 비즈니스 미팅 장소로 통근하고 있는 것으로 판단을 포함하는 데이터 중 하나 이상을 조합한다. 다른 예에서, 컨텍스트 결정기(208)는 (1) 시간, (2) GPS 센서로부터의 지리적 위치 데이터 및 (3) 개방 Wi-Fi 액세스 포인트의 검출을 통해 사용자가 커피 숍 안에 있는지 것으로 판단을 포함하는 데이터 중 하나 이상을 조합한다. 제 3 예에서, 컨텍스트 결정기(208)는 (1) 가속도계로부터의 모션 데이터, (2) 광 센서로부터의 주변 조명 데이터, (3) 지리적 위치 데이터 및 (4) 모바일 컴퓨팅 디바이스(115) 상의 전력 검출기로부터의 에너지 사용 데이터를 통해 사용자가 달리고 있는 것으로 판단을 포함하는 데이터 중 하나 이상을 조합한다. 컨텍스트 결정기(208)는 결정된 컨텍스트를 포함하는 정보를 액션 추천기(210)에 전송한다.
액션 추천기(210)는 컨텍스트 결정기(208)로부터 컨텍스트를 수신하고, 그 컨텍스트에 기초하여 액션 라이브러리(224)로부터 하나 이상의 액션너블 아이템들을 서피싱(surfacing)하는 기능을 제공하는 소프트웨어 및/또는 로직을 포함할 수 있다. 예를 들어, 액셔너블 아이템들이 모바일 컴퓨팅 디바이스(115)의 사용자 경험에 서피싱된다.
도 2b는 액션 추천기(210)의 예시적인 실시예를 도시한 블록도이다. 도시된 바와 같이, 액션 추천기(210)는 액션 모델 생성기(302), 런처 액션 생성기(304), 통지 액션 생성기(306), 컨텍스트 액션 생성기(308) 및 액션 리졸버(310)를 포함할 수 있다.
액션 모델 생성기(302)는 머신 러닝 모델(machine learning model)을 트레이닝시키기에 적합한 분류, 라벨링된 특징들을 포함하는 트레이닝 데이터 세트(training dataset)를 수신한다. 트레이닝 데이터 세트는 모바일 컴퓨팅 디바이스(115)의 사용자가 속하는 특정 통계 그룹에 대응할 수 있다. 트레이닝 데이터 세트에는 특징들로서 컨텍스트 신호들이 포함되고 라벨로서 액셔너블 아이템이 포함된다. 액션 모델 생성기(302)는 트레이닝 데이터 세트에 기초하여 하나 이상의 액션 모델들을 생성한다. 액션 모델 생성기(302)는 액션 모델(들)(226)을 데이터 스토리지(243)에 저장한다. 액션 모델 생성기(302)는 하나 이상의 액션 모델들을 트레이닝시키기 위한 머신 러닝 로직을 포함할 수 있다. 일부 실시예들에서, 액션 모델 생성기(302)는 하나 이상의 머신 학습 모델들을 사용하여 트레이닝 데이터에 대한 하나 이상의 액션 모델들을 생성하고 트레이닝시킬 수 있다. 본 실시예에 따라, 사용되는 하나 이상의 머신 러닝 모델들은 감독 머신 러닝 모델 단독, 비감독 머신 러닝 모델 단독, 또는 감독 및 비감독 머신 러닝 모델들 모두를 포함할 수 있다. 머신 러닝 모델의 예로는 분류 모델, 회귀 모델, 순위 모델, 준감독 모델, 밀도 추정 모델, 클러스터링 모델, 차원 축소 모델, 다차원 쿼리 모델, 앙상블 모델, 컨볼루션 뉴럴 네트워크 등을 포함하며, 이에 한정되지 않는다. 액션 모델 생성기(302)는 트레이닝된 액션 모델들을 런처 액션 생성기(304), 통지 액션 생성기(306) 및 컨텍스트 액션 생성기(308)에 제공한다. 구성 요소들(304, 306 및 308)에 제공되는 트레이닝된 액션 모델들은 동일하거나 상이한 모델들일 수 있다. 일부 실시예들에서, 구성 요소들(304, 306 및 308)은 하나 이상의 액션 모델들을 사용하여 액션 라이브러리(224)로부터 액션너블 아이템들을 서피싱할 수 있다. 액션 모델은 본 명세서에서 설명된 바와 같이 모바일 컴퓨팅 디바이스(115)의 컨텍스트 상태를 입력으로서 수신하고, 액셔너블 아이템들의 리스트를 생성할 수 있다. 액션 모델 생성기(302)는 아카이브 데이터(222)로부터 사용자 상호 작용 데이터를 검색하고, 트레이닝 데이터 세트를 업데이트한다. 액션 모델 생성기(302)는 업데이트된 트레이닝 데이터 세트를 사용하여 데이터 스토리지(243)에 있는 액션 모델(들)(226)을 재트레이닝한다. 다양한 타입의 감독 러닝 알고리즘 및/또는 비감독 러닝 알고리즘으로 머신 러닝 로직을 구현하기 위한 다른 시스템 아키텍처들도 가능하며 고려될 수 있다.
런처 액션 생성기(304)는 컨텍스트가 모바일 컴퓨팅 디바이스(115)의 애플리케이션 런처와 관련된 것으로 결정하고, 그 컨텍스트에 응답하여 액션 라이브러리(224)로부터 하나 이상의 액션너블 아이템들을 서피싱한다. 예를 들어, 런처 액션 생성기(304)는 컨텍스트가 애플리케이션 런처에서 선택 애플리케이션을 롱-프레스하는 것에 의해 그 선택 애플리케이션과 관련된 액션들에 액세스하는 것 중 하나라고 결정한다. 런처 액션 생성기(304)는 애플리케이션과 관련된 하나 이상의 액션너블 아이템들을 포함하는 액션 메뉴를 생성한다. 하나 이상의 애플리케이션들과 관련된 액셔너블 아이템들이 맞춤형 액셔너블 아이템들로서 정의될 수 있다. 예를 들어, 애플리케이션과 관련된 맞춤형 액셔너블 아이템들은 그 애플리케이션의 가장 일반적으로 액세스되는 데이터 및/또는 기능에 사용자가 액세스할 수 있게 하는 퀵(quick) 액셔너블 아이템들이다. 런처 액션 생성기(304)는 액션 메뉴를 애플리케이션의 액션너블 아이템들로 파퓰레이팅하고 랭킹 방식에 기초하여 액션 메뉴에서 액션너블 아이템들을 순위화한다. 예를 들어, 액션 메뉴에서 애플리케이션과 관련된 액셔너블 아이템들은 애플리케이션의 가장 일반적으로 액세스되는 데이터 및/또는 기능이 액션 메뉴의 상단에 위치하도록 순위화될 수 있다. 일부 실시예들에서, 런처 액션 생성기(304)는 액션 메뉴를 다른 애플리케이션의 액션너블 아이템들들로 크로스 폴리네이팅(cross-pollinating)한다. 예를 들어, 런처 액션 생성기(304)는 액션 메뉴가 생성되고 있는 제 1 애플리케이션의 카테고리를 결정한다. 런처 액션 생성기(304)는 카테고리를 사용하여 액션 라이브러리(224)에서 액션너블 아이템들을 탐색한다. 런처 액션 생성기(304)는 제 1 애플리케이션과 동일한 카테고리에 속하는 제 2 애플리케이션의 액셔너블 아이템들을 식별한다. 런처 액션 생성기(304)는 제 1 및 제 2 애플리케이션의 액션너블 아이템들을 포함하는 액션 메뉴를 생성한다.
통지 액션 생성기(306)는 컨텍스트가 애플리케이션의 통지와 관련된 것으로 결정하고, 그 컨텍스트에 응답하여 액션 라이브러리(224)로부터 하나 이상의 액셔너블 아이템들을 서피싱한다. 예를 들어, 통지 액션 생성기(306)는 컨텍스트가 세부 보기를 위한 통지 바(notification bar)에서 통지를 스와이핑 다운(swiping down)하는 것에 의해 애플리케이션의 통지를 열고 있는 것으로 결정한다. 통지 액션 생성기(306)는 통지의 컨텍스트와 관련된 애플리케이션들의 액셔너블 아이템들을 포함하는 액션 메뉴를 생성한다. 예를 들어, 음악 스트리밍 애플리케이션의 통지는 아티스트의 새 앨범을 지금 구입할 수 있음을 나타낼 수 있다. 통지 액션 생성기(306)는 그 트랙을 음악 스트리밍 애플리케이션 상의 플레이 리스트에 추가하기 위한 제 1 액셔너블 아이템, 온라인 디지털 미디어 스토어 애플리케이션에서 앨범을 구매하기 위한 제 2 액셔너블 아이템, 온라인 티켓 교환 서비스 애플리케이션에서 아티스트의 콘서트 티켓을 탐색하는 제 3 액셔너블 아이템을 갖는 액션 메뉴를 생성한다. 제 1, 제 2 및 제 3 액셔너블 아이템들은 사용자가 새로운 앨범에 대한 통지와 관련하여 액션을 취할 수 있도록 하기 위해 액션 메뉴에 서피싱되는 맞춤형 액셔너블 아이템들이다.
컨텍스트 액션 생성기(308)는 컨텍스트가 모바일 컴퓨팅 디바이스(115)의 주변 환경 상태들과 관련된 것으로 결정하고, 그 컨텍스트에 응답하여 액션 라이브러리(224)로부터 하나 이상의 액셔너블 아이템들을 서피싱한다. 예를 들어, 컨텍스트 액션 생성기(308)는 컨텍스트가 피트니스 액티비티와 관련된 것으로 결정하고, 액션 라이브러리(224)로부터 서피싱된 피트니스와 관련된 하나 이상의 액셔너블 아이템들을 포함하는 액션 메뉴 또는 컨텍스트 경험 메뉴를 생성한다. 예시적인 액셔너블 아이템들은 피트니스 애플리케이션을 사용하여 피트니스 액티비티를 기록하고, 음악 스트리밍 애플리케이션에서 운동 플레이 리스트를 재생하기 시작할 것 등을 사용자에게 프롬프트할 수 있다. 따라서, 이 액셔너블 아이템들은 그들이 피트니스 액티비티의 컨텍스트와 매칭되기 때문에 맞춤화된다. 다른 예에서, 컨텍스트 액션 생성기(308)는, 홈 Wi-Fi 네트워크에 연결되는 모바일 컴퓨팅 디바이스(115)의 컨텍스트가 사용자가 집에 들어가는 것임을 나타내는 것으로 결정한다. 컨텍스트 액션 생성기(308)는 액셔너블 아이템들이 조명을 켜고, 스마트 스피커에서 음악을 재생하고, 써모스탯을 조절하는 등을 수행하도록 사용자에게 프롬프트하는 홈 컨텍스트와 관련된 하나 이상의 액셔너블 아이템들을 포함하는 동작 메뉴를 생성한다. 일부 실시예들에서, 컨텍스트 액션 생성기(308)는, 컨텍스트가 사용자로부터 제스처 입력을 수신하는 것과 연관된 것으로 결정하고, 제스처 입력을 만족시키기 위해 액션 라이브러리로부터 하나 이상의 액셔너블 아이템들을 포함하는 컨텍스트 액션들을 서피싱한다. 예를 들어, 제스처 입력은 모바일 컴퓨팅 디바이스(115)의 제스처 패드 상의 문자에 대한 스트로크(stroke)일 수 있다. 컨텍스트 액션 생성기(308)는 액션 라이브러리로부터 그 문자와 관련된 액션너블 아이템들을 탐색하고, 액션 메뉴를 액션너블 아이템들로 파퓰레이팅한다. 제스처 입력의 예들로는 문자, 숫자, 이모티콘, 두들(doodle) 등을 포함하며, 이에 한정되지 않는다.
모바일 컴퓨팅 디바이스(115) 상의 애플리케이션을 실행하는 것 없이, 액션 리졸버(310)는 액션 메뉴에서 액션너블 아이템에 대한 사용자 선택을 수신하고, 웹 서버(101)에 의해 호스팅되는 온라인 서비스(111)의 API(109)를 사용하여 액션너블 아이템과 관련된 애플리케이션의 액션을 수행한다. 액션 리졸버(310)는 액션너블 아이템이 사용자 인터페이스에서 선택될 경우 액션너블 아이템과 관련된 API 호출을 인보크한다. API 호출은 액셔너블 아이템의 파라미터들을 API(109)에 전달함으로서 애플리케이션의 기능을 실행한다. 일부 실시예들에서, 액션 리졸버(310)는 액션너블 아이템에 대한 사용자 선택을 수신한 것에 응답하여, 보조 액션 스크린을 생성한다. 액셔너블 아이템은 다수 단계 액션을 필요로 할 수 있다. 보조 액션 스크린은 추가적인 사용자 입력을 수신하여 액셔너블 아이템과 관련된 애플리케이션의 액션을 완료하는 HTML5 클라이언트로서 생성된다. 예를 들어, 액셔너블 아이템을 통해 Alice에게 문자 메시지를 전송하는 것은 그 액션을 완료하기 위한 다음과 같은 두 가지 사용자 입력을 필요로 한다: 하나는 액션 메뉴에서 액셔너블 아이템을 선택하는 것이고, 다른 하나는 보조 액션 스크린에 메시지를 입력하는 것이다. 사용자가 문자 메시지 애플리케이션을 실행할 필요없이, 액션 리졸버(310)는 보조 액션 스크린에 입력된 문자 메시지를 API 호출을 사용하여 문자 메시지 애플리케이션의 API(109)로 전송하며, 이 문자 메시지가 Alice에게 전송된다.
도 2a를 다시 참조하면, 사용자 인터페이스 엔진(212)은 사용자 인터페이스를 생성하고 모바일 컴퓨팅 디바이스(115)의 디스플레이에 전송하기 위한 기능을 제공하는 소프트웨어 및/또는 로직을 포함할 수 있다. 일부 실시예들에서, 사용자 인터페이스 엔진(212)은 액션 추천기(210)로부터 명령들을 수신하여, 하나 이상의 액션너블 아이템들을 포함하는 액션 메뉴를 프레젠테이션하는 사용자 인터페이스를 생성한다. 사용자 인터페이스 엔진(212)은 통신 유닛(241)을 통해 그래픽 사용자 인터페이스 데이터를 포함하는 명령들을 모바일 컴퓨팅 디바이스(115)에 전송하여, 모바일 컴퓨팅 디바이스(115)가 그 데이터를 그래픽 사용자 인터페이스로서 디스플레이하게 한다.
이제 도 3을 참조하면, 액션 플랫폼 애플리케이션(103)의 다른 예시적인 구현이 도시되어 있다. 도 3은 모바일 컴퓨팅 디바이스(115)의 사용자 경험에서 하나 이상의 애플리케이션들의 액셔너블 아이템들을 서피싱하기 위한 액션 플랫폼 애플리케이션(103)을 통한 일반적인 데이터 흐름을 도시한 것이다. 도 3은 액션 플랫폼 애플리케이션(103)의 구성 요소들이 서로 간에 및 웹 서버들(101)과 통신하는 방법을 도시한 것이다. 특히, 액션 라이브러리 큐레이터(204) 및 액션 추천기(210)는 각각의 신호 라인들(351 및 353)을 통해 다수의 웹 서버들(101)에 의해 호스팅되는 온라인 서비스들(111)의 API들(109)과 협력한다. API(109)는 액션 라이브러리 큐레이터(204)가 액션 라이브러리(224)를 생성하고 액션 추천기(210)가 인보크된 액션너블 아이템들의 파라미터들을 API(109)에 전송함으로써 관련 애플리케이션의 기능을 수행하도록 하기 위해, 온라인 서비스(111)의 기능 및 데이터를 액션 플랫폼 애플리케이션(103)에게 노출시킨다. 모바일 컴퓨팅 디바이스(115) 상에서 애플리케이션을 실행하는 것 없이, 액션 추천기(210)는 애플리케이션들의 액션들을 개시하기 위해 액션 라이브러리(224)로부터 액션들을 서피싱한다.
아카이버(202)는 모바일 컴퓨팅 디바이스(115)의 사용자가 모바일 컴퓨팅 디바이스(115) 상에서 액세스 가능한 애플리케이션들과 상호 작용하는 방식을 아카이빙하고, 그 상호 작용 데이터에 기초하여 사용자의 프로파일을 생성한다. 아카이버(202)는 모바일 컴퓨팅 디바이스(115)로부터 상호 작용 데이터를 수신하기 위해 신호 라인(369)을 통해 모바일 컴퓨팅 디바이스(115)에 연결될 수 있다. 아카이버(202)는 모바일 컴퓨팅 디바이스(115)와 관련된 애플리케이션들을 식별하여 하나 이상의 카테고리들 아래에 그룹화한다. 예를 들어, 아카이버(202)는 문자 메시지, 이메일 애플리케이션, 채팅 애플리케이션 등과 같은 애플리케이션들을 '통신(Communication)' 카테고리 아래에 그룹화한다. 아카이버(202)는 하나의 애플리케이션의 데이터 또는 결과가 사용자에 의해서 다른 애플리케이션과 상호 작용하기 위해 사용되는 방식을 아카이빙한다. 예를 들어, 캘린더링 애플리케이션의 통지에 향후 30 분 내에 예정된 이벤트에 대한 리마인더가 포함된 경우, 캘린더링 애플리케이션은 종종 사용자로부터 추가 액션을 받지 않는다. 그러나, 이 리마인더가 사용자로 하여금 웹 매핑 애플리케이션을 실행하여 이벤트 위치에 대한 방향 또는 교통 상황을 결정하게 하거나, 라이드 쉐어링 애플리케이션을 통해 차량을 예약하게 하거나, 이벤트 호스트에 대한 전화 통화를 시작하게 한다. 일부 실시예들에서, 일단 그러한 상호 작용 데이터가 결정되면, 아카이버(202)는 아카이브 데이터(222)에 저장하기 위해 데이터를 데이터 스토리지(243)로 전송한다. 아카이버(202)는 신호 라인(357)을 통해 데이터 스토리지(243)에 연결될 수 있다. 아카이버(202)는 또한 상호 작용 데이터를 액션 라이브러리 큐레이터(204)에 전송한다. 아카이버(202)는 신호 라인(371)을 통해 액션 라이브러리 큐레이터(204)에 연결될 수 있다.
이제 액션 라이브러리 큐레이터(204)로 돌아가면, 액션 라이브러리 큐레이터(204)는 아카이버(202)로부터 상호 작용 데이터를 수신한다. 액션 라이브러리 큐레이터(204)는 전술한 바와 같이 상호 작용 데이터를 파싱하여, 액션너블 아이템들의 라이브러리를 생성하고, 신호 라인(373)을 통해 액션 추천기(210)에 이들을 제공한다. 액션 라이브러리 큐레이터(204)는 또한 데이터 스토리지(243)의 액션 라이브러리(224)에 저장하기 위해서 이 라이브러리를 전송한다. 액션 라이브러리 큐레이터(204)는 신호 라인(359)을 통해 데이터 스토리지(243)에 연결될 수 있다. 액션 라이브러리 카테고리의 예들로는 음악 액션 라이브러리(예를 들면, 'Workout Mix' 재생, 'Radio X City' 실행, 'Background Noise' 스트림 등), 자동 액션 라이브러리(예를 들면, 엔진 시작, 트렁크 열기, 자동차 잠금 해제 등), 생산성 액션 라이브러리(예를 들면, 이벤트 생성, 리마인더 설정, 알람 설정 등), 피트니스 액션 라이브러리(예를 들면, 달리기 기록, 운동 루틴 기록 등), 사물 인터넷(IOT) 액션 라이브러리(예를 들면, 조명 변경, 써모스탯 설정, 도어 잠금 등), 소셜 액션 라이브러리(예를 들면, 상태 게시, 사진 공유 등), 통신 액션 라이브러리(예를 들면, 엄마에게 문자, Bob에게 이메일 등) 및 결제 액션 라이브러리(예를 들면, 카드로 결제, 리워드 사용 등)를 포함하며, 이에 한정되지 않는다.
프로세싱 엔진(206)은 신호 라인(365)을 통해 모바일 컴퓨팅 디바이스(115)로부터 센서들과 관련된 센서 데이터를 수신하여, 센서 데이터를 처리하고, 센서 데이터를 필터링하며, 필터링된 데이터를 신호 라인(377)을 통해 컨텍스트 결정기(208)에 전송한다. 컨텍스트 결정기(208)는 프로세싱 엔진(206)으로부터 필터링된 데이터를 수신하여, 필터링된 데이터에서 상이한 타입들의 데이터를 조합하고, 하나 이상의 액티비티 인식 알고리즘들을 사용하여 컨텍스트를 결정하며, 컨텍스트 결정을 신호 라인(375)을 통해 액션 추천기(210)에 전송한다. 컨텍스트 결정기(208)는 신호 라인(363)을 통해 데이터 스토리지(243)에 연결된다.
이제 액션 추천기(210)로 돌아가면, 액션 추천기(210)는 액션 라이브러리 큐레이터(204)로부터의 액션 라이브러리 및 컨텍스트 결정기(208)로부터의 컨텍스트를 포함하는 정보를 수신한다. 일부 실시예들에서, 액션 추천기(210)는 액션 라이브러리(224)로부터 액션너블 아이템들을 서피싱하는데 사용될 수 있는 예측들을 전환하기 위한 액션 모델들을 생성한다. 액션 추천기(210)는 액션 모델들을 데이터 스토리지(243)에 저장한다. 액션 추천기(210)는 신호 라인(361)을 통해 데이터 스토리지(243)에 연결될 수 있다. 액션 추천기(210)는 신호 라인(355)을 통해 모바일 컴퓨팅 디바이스(115)의 사용자 인터페이스에 액션너블 아이템들을 디스플레이하도록 하는 명령들을 사용자 인터페이스 엔진(212)에 전송한다. 사용자 인터페이스 엔진(212)은 신호 라인(367)을 통해 모바일 컴퓨팅 디바이스(115)로부터 액셔너블 아이템의 사용자 선택을 수신하고, 이 선택을 액션 추천기(210)에 전송한다. 액션 추천기(210)는 API(109)와 협력하여 액션너블 아이템과 관련된 기능을 수행한다.
도 4의 예에 도시된 바와 같이, 이 그래픽 표현들은 애플리케이션 런처에서 애플리케이션과 관련된 액셔너블 아이템들을 서피싱하기 위한 사용자 인터페이스들(400a-400c)을 도시한 것이다. 모바일 컴퓨팅 디바이스(401)의 사용자 인터페이스(400a)는 2개의 구성 요소, 즉 시스템 바(403) 및 애플리케이션 런처(405)를 포함한다. 시스템 바(403)는 디스플레이 상에 지속되는 클록, 셀 서비스, 배터리 전력, 안테나 신호 등과 관련된 아이콘들 및/또는 그래픽들을 나타낸다. 애플리케이션 런처(405)는 수직으로 스태킹되는 애플리케이션들의 아이콘 세트를 나타낸다. 사용자는 더 많은 아이콘을 보기 위해 애플리케이션 런처(405)를 위 아래로 스크롤할 수 있다. 사용자 인터페이스(400b)는 애플리케이션 런처(405)에서 음악(music) 애플리케이션 아이콘(407)에 대한 오래 계속되는 사용자 선택을 도시한 것이다. 예를 들어, 오래 계속되는 사용자 선택은 사용자가 아이콘(407)을 터치하고 나서 손가락을 움직이지 않고 몇 초 동안 누르는 롱-프레스 제스처일 수 있다. 검은색으로 채워진 원(413)은 아이콘(407)에 대한 오래 계속되는 사용자 선택의 제스처를 나타낸다. 사용자 인터페이스(400c)는 액션 메뉴(409)를 도시한 것이다. 롱-프레스 제스처를 수신한 것에 응답하여, 액션 추천기(210)는 음악 애플리케이션(407)과 관련된 액션 메뉴(409)를 생성한다. 액션 메뉴(409)는 데이터 스토리지(243)의 액션 라이브러리(224)로부터 검색된 음악 애플리케이션(407)과 관련된 액션너블 아이템들의 리스트(411)를 포함한다. 액셔너블 아이템들의 리스트(411)는 음악 애플리케이션(407)의 액션 메뉴에 가장 통상적으로 액세스되는 컨텐츠 아이템들 및/또는 최근에 액세스되는 컨텐츠 아이템들을 서피싱하도록 맞춤화된다. 음악 애플리케이션(407)과 관련하여, 액션 메뉴(409)는 음악 애플리케이션(407)을 실행하는 것 없이 개시될 수 있는 기능들의 한정된 리스트(411)에 대한 딥 링크들을 제공한다. 일부 실시예들에서, 액션 메뉴(409)는 백그라운드에서 애플리케이션 아이콘들을 블러링하는 애플리케이션 런처(405) 위의 반투명 오버레이로서 생성될 수 있다. 일부 실시예들에서, 액션 추천기(210)는 애플리케이션의 롱-프레스 제스처가 수신되는 컨텍스트 상태를 포함하는 정보를 수신한다. 액션 추천기(210)는 컨텍스트 상태를 이용하여 애플리케이션의 액션 메뉴에 맞춤화된 액션너블 아이템들을 서피싱한다. 예를 들어, 액션 추천기(210)는 사용자의 컨텍스트가 사용자가 집에 있다는 것을 나타내는 것으로 결정한다. 사용자가 음악 애플리케이션(407)에 대한 롱-프레스 제스처 적용을 사용하는 것에 응답하여, 액션 추천기(210)는 피트니스 액티비티에 대한 고 에너지 플레이 리스트 선택들과는 반대되는 마음을 편안하게 하는 플레이 리스트 선택들을 포함하는 액셔너블 아이템들에 대한 맞춤형 리스트를 결정한다.
도 5는 애플리케이션과 관련된 액션 메뉴를 나타내는 사용자 인터페이스들(500a-500c)의 실시예를 나타내는 예시적인 그래픽 표현들을 도시한 것이다. 사용자 인터페이스(500a)는 음악 애플리케이션(407)과 관련된 시스템 액션들의 리스트(513)를 포함하는 액션 메뉴(409)의 제 1 실시예를 도시한 것이다. 애플리케이션에 이용 가능한 액셔너블 아이템이 없는 경우, 일부 실시예들에서, 액션 추천기(210)는 디폴트 상태에서 확장된 음악 애플리케이션(407)의 시스템 액션들의 리스트(513)를 갖는 액션 메뉴(409)를 생성한다. 시스템 액션들의 리스트(513)는 애플리케이션 정보, 아이콘 이동 명령 및 제거 명령을 포함한다. 시스템 액션은 또한 관련 기능을 수행하기 위해 인보크될 수 있는 액셔너블 아이템의 형태이다. 사용자 인터페이스(500b)는 음악 애플리케이션(407)과 관련된 리스트들(411 및 513)의 조합을 포함하는 액션 메뉴(409)의 제 2 실시예를 도시한 것이다. 사용자 인터페이스(500c)는 액셔너블 아이템들의 리스트(411) 이외에 음악 애플리케이션(407)과 관련된 읽지 않은 통지들의 리스트(515)를 포함하는 액션 메뉴(409)의 제 3 실시예를 도시한 것이다. 일부 실시예들에서, 액션 추천기(210)는 읽지 않은 통지들을 중요한 액션들의 세트로서 식별하고, 이 읽지 않은 통지들을 액션 메뉴(409)의 상단에 배치한다. 읽지 않은 통지들의 리스트(515)는 읽지 않은 통지들의 개수를 시각적으로 표시한다. 읽지 않은 통지들은 음악 애플리케이션(407)을 실행할 필요 없이도 전체 보기로 확장될 수 있다. 리스트(515) 내의 통지들이 액션 메뉴(409)에서 제거될 경우, 통지 바에서도 제거되며, 그 반대도 마찬가지이다.
도 6은 액션 메뉴에서 액션들을 편집하기 위한 사용자 인터페이스들(600a-600d)을 나타내는 예시적인 그래픽 표현들을 도시한 것이다. 사용자 인터페이스(600a)는 음악 애플리케이션(407)과 관련된 액셔너블 아이템들을 추가 또는 제거하기 위한 편집 버튼(617)을 포함하는 액션 메뉴(409)를 도시한 것이다. 사용자 인터페이스(600b)는 사용자 인터페이스(600a)에서 편집 버튼(617)에 대한 사용자 선택에 응답하여 업데이트되는 액션 메뉴(611)를 도시한 것이다. 액션 메뉴(611)는 각각의 액셔너블 아이템에 대한 제거 버튼(623) 및 액셔너블 아이템들을 추가하기 위한 추가 버튼(619)을 포함한다. 사용자 인터페이스(600c)는 사용자 인터페이스(600b)에서 추가 버튼(619)에 대한 사용자 선택에 응답하여 업데이트되는 액션 메뉴(613)를 도시한 것이다. 액션 메뉴(613)는 일련의 액셔너블 아이템들을 포함하며, 사용자는 각각의 액셔너블 아이템 옆에 있는 추가 버튼(621)을 선택함으로써 액셔너블 아이템을 추가할 수 있다. 사용자 인터페이스(600d)는 액션 메뉴의 변경 사항들을 확인하기 위한 스크린을 도시한 것이다. 사용자는 저장 버튼(625)을 선택하여 변경 사항들을 저장할 수 있다.
일부 실시예들에서, 액션 추천기(210)는 제 1 애플리케이션의 액션 메뉴에서 제 2 애플리케이션에 관한 액션너블 아이템들을 서피싱한다. 도 7의 예에 도시된 바와 같이, 본 예시적인 그래픽 표현은 제 1 애플리케이션의 액션 메뉴에서 제 2 애플리케이션과 관련된 액셔너블 아이템들을 서피싱하기 위한 사용자 인터페이스들(700a-700d)을 도시한 것이다. 사용자 인터페이스(700a)는 일련의 애플리케이션 아이콘들을 포함하는 애플리케이션 런처(701)를 도시한 것이다. 사용자 인터페이스(700b)는 메시징 애플리케이션 아이콘(703)에 대한 오래 계속되는 사용자 선택을 도시한 것이다. 검은색으로 채워진 원(711)은 아이콘(703)에 대한 오래 계속되는 사용자 선택의 제스처를 나타낸다. 사용자 인터페이스(700c)는 메시징 애플리케이션(703)과 관련된 액션 메뉴(709)를 도시한 것이다. 제스처를 수신한 것에 응답하여, 액션 추천기(210)는 메시징 애플리케이션(703)과 관련된 액션 메뉴(709)를 생성한다. 액션 메뉴(709)는 메시징 애플리케이션(703)으로부터의 액션너블 아이템들 이외에 다른 애플리케이션들로부터의 액션너블 아이템들의 크로스 폴리네이팅된 리스트(705)를 포함한다. 예를 들어, 액셔너블 아이템들(713 및 715)은 통신 카테고리 내의 다른 애플리케이션들에 속한다. 각 액셔너블 아이템의 사용자 인터페이스 요소는 관련 애플리케이션 아이콘을 포함한다. 사용자 인터페이스(700d)는 사용자 인터페이스(700c)에서 선택된 액션을 완료하기 위한 보조 액션 스크린(707)을 도시한 것이다. 사용자가 사용자 인터페이스(700c)에서 액셔너블 아이템(717)을 선택하는 것에 응답하여, 액션 추천기(210)는 메시징 애플리케이션(703)을 실행하는 것 없이, 사용자가 선택된 연락처로 전송할 메시지를 입력할 수 있는 보조 액션 스크린(707)을 생성한다.
일부 실시예들에서, 액션 추천기(210)는 애플리케이션의 통지와 관련하여 액션 라이브러리(224)로부터 액션너블 아이템들을 서피싱한다. 도 8의 예에 도시된 바와 같이, 본 그래픽 표현은 사용자 인터페이스에서 애플리케이션의 통지와 관련된 액셔너블 아이템들을 서피싱하기 위한 사용자 인터페이스들(800a-800c)을 도시한 것이다. 사용자 인터페이스(800a)는 애플리케이션 런처(803)에서 캘린더링 애플리케이션으로부터의 착신 통지(801)를 도시한 것이다. 사용자 인터페이스(800b)는 통지(801)와 관련된 액션 메뉴(805)를 도시한 것이다. 액션 메뉴(805)는 액션너블 아이템들의 리스트(807)를 포함한다. 사용자가 사용자 인터페이스(800a)에서 통지(801)를 선택하는 것에 응답하여, 액션 추천기(210)는 캘린더링 애플리케이션의 통지(801)에 관한 액션 메뉴(805)를 생성하고, 액션 메뉴(805)를 애플리케이션 런처(803)의 상단에 드롭 다운 오버레이로서 제공한다. 사용자 인터페이스(800c)는 사용자 인터페이스(800b)에서 선택된 액션을 완료하기 위한 보조 액션 스크린(811)을 도시한 것이다. 사용자가 사용자 인터페이스(800b)의 액션 메뉴(805)에서 액셔너블 아이템(809)을 선택하는 것에 응답하여, 액션 추천기(210)는 사용자가 라이드 쉐어링 애플리케이션을 실행하는 것 없이 라이드 쉐어 자동차 서비스를 요청할 수 있는 보조 액션 스크린(811)을 생성한다.
일부 실시예들에서, 액션 추천기(210)는 제스처 입력에 응답하여 액션 라이브러리(224)로부터 액션너블 아이템들을 서피싱한다. 도 9의 예에 도시된 바와 같이, 본 그래픽 표현들은 제스처 입력에 응답하여 액셔너블 아이템을 서피싱하기 위한 사용자 인터페이스들(900a-900d)을 도시한 것이다. 사용자 인터페이스(900a)는 일련의 애플리케이션 아이콘들을 포함하는 애플리케이션 런처(901)를 도시한 것이다. 사용자 인터페이스(900b)는 사용자가 사용자 인터페이스(900a)의 하단으로부터 디스플레이를 스와이핑 업하는 것에 응답하여 보여지는 제스처 패드(903)를 도시한 것이다. 일부 실시예들에서, 제스처 패드(903)는 잠금 스크린으로부터 보여질 수 있다. 제스처 패드(903)는 4개의 애플리케이션 아이콘(909, 911, 913 및 915)을 포함한다. 이들 4개의 애플리케이션에 관한 액션 메뉴는, 필요한 경우, 사용자에 의해 제스처 패드(903)로부터 서피싱될 수 있다. 사용자 인터페이스(900c)는 사용자에 의한 제스처 패드(903) 상의 문자 'S'의 스트로크 입력(905)을 도시한 것이다. 액션 추천기(210)는 스트로크 입력(905)과 관련하여 액션너블 아이템들을 서피싱한다. 예를 들어, 사용자 인터페이스(900d)에 도시된 바와 같이, 액션 추천기(210)는 문자 'S'와 관련된 액셔너블 아이템들의 리스트(907)를 생성한다. 액셔너블 아이템들로는 문자 'S'로 시작하는 애플리케이션들로 바로 가기를 포함할 수 있다.
일부 실시예들에서, 액션 추천기(210)는 컨텍스트 결정기(208)에 의해 검출된 액티비티의 컨텍스트 트리거에 응답하여 액션 라이브러리(224)로부터 액셔너블 아이템들을 서피싱한다. 도 10의 예에 도시된 바와 같이, 본 그래픽 표현들은 컨텍스트 액티비티에 응답하여 액셔너블 아이템들을 서피싱하기 위한 사용자 인터페이스들(1000a-1000d)을 도시한 것이다. 사용자 인터페이스(1000a)는 사용자의 차량이 모바일 컴퓨팅 디바이스(115)에 근접해 있는 것으로 검출되는 제 1 실시예를 도시한 것이다. 사용자 인터페이스(1000a)는 근처에서 검출된 차량에 대한 통지(1001)를 도시한 것이다. 통지(1000a)는 애플리케이션 런처 윈도우 상의 오버레이이다. 사용자 인터페이스(1000a)는 근접해 있는 것으로 검출된 차량과 컨텍스트적으로 관련된 액셔너블 아이템들의 리스트(1003)를 포함한다. 예를 들어, 사용자는 리스트(1003)에서 액셔너블 아이템들을 선택하여 차량의 잠금을 해제하고, 엔진을 시동시키거나 및/또는 트렁크를 열 수 있다. 이러한 액셔너블 아이템들은 모바일 컴퓨팅 디바이스(115)가 차량을 원격으로 제어할 수 있게 하는 차량 애플리케이션과 관련될 수 있다. 리스트(1003)에 포함된 원격 제어 기능들은 사용자가 차량 애플리케이션을 실행하는 것 없이 수행된다. 사용자는 취소 버튼(1005)을 선택함으로써 통지를 제거할 수 있다. 사용자 인터페이스(1000b)는 커피 하우스 내부에 있는 사용자 위치가 검출되는 제 2 실시예를 도시한 것이다. 사용자 인터페이스(1000b)는 사용자가 커피 하우스에 있는지 여부를 질의하는 통지(1007)를 도시한 것이며, 사용자가 커피 하우스에 있는 것으로 검출된 것과 컨텍스트적으로 관련된 액셔너블 아이템들의 리스트(1009)를 포함한다. 예를 들어, 사용자는 리스트(1009)에서 액셔너블 아이템들을 선택함으로써 카드로 커피 대금을 결제하고, 소셜 네트워크를 체크하며, 및/또는 로열티 포인트에 의한 리워드를 사용할 수 있다. 사용자 인터페이스(1000c)는 사용자가 피트니스 액티비티에 참여하고 있음이 검출되는 제 3 실시예를 도시한 것이다. 사용자 인터페이스(1000c)는 사용자가 운동을 시작하고 있는지를 질의하는 통지(1013)를 도시한 것이며, 피트니스 액티비티의 컨텍스트와 관련된 액셔너블 아이템들의 리스트(1015)를 포함한다. 예를 들어, 사용자가 사이클링 액티비티 기록을 시작하거나, 달리기 기록을 시작하거나, 걷기 기록을 시작하기 위해 리스트(1015)에서 액셔너블 아이템들을 선택할 수 있다. 사용자 인터페이스(1000d)는 사용자가 통근 중인 것으로 검출되는 제 4 실시예를 도시한 것이다. 사용자 인터페이스(1000d)는 사용자가 통근하고 있는지를 질의하는 통지(1019)를 도시한 것이며, 통근의 컨텍스트와 관련된 액셔너블 아이템들의 리스트(1017)를 포함한다. 예를 들어, 사용자는 목적지(1017)로 가는 길을 찾아내는 액셔너블 아이템들을 리스트(1017)에서 선택하고, 통근 중에 플레이 리스트를 스트리밍하고/하거나 교통 상황을 볼 수 있다.
도 11a 내지 도 11b는 모바일 컴퓨팅 디바이스(115) 상의 설정 사항들을 커스터마이즈하기 위한 사용자 인터페이스의 실시예들에 대한 예시적인 그래픽 표현들이다. 도 11a에서, 본 그래픽 표현은 개선된 형태의 비행기 모드를 토글링하기 위한 사용자 인터페이스(1100)의 실시예를 도시한 것이다. 사용자 인터페이스(1100)는 모바일 컴퓨팅 디바이스(115)가 슬립 또는 대기 모드로 전환될 경우 전화, 블루투스, Wi-Fi, GPS 등을 포함하며 이에 제한되지 않는 무선 주파수 신호 전송을 중단하는 비행기 플러스(Airplane Plus) 모드(1101)를 포함한다. 예를 들어, 모바일 컴퓨팅 디바이스(115)는 모바일 컴퓨팅 디바이스(115)의 디스플레이를 켜고 끄는 슬립/웨이크 물리적 버튼이 눌려지면 슬립 상태가 된다. 무선 주파수 신호 전송은 모바일 컴퓨팅 디바이스(115)가 웨이크업될 경우 활성화된다. 비행기 플러스 모드(1101)는 현재 모바일 컴퓨팅 디바이스(115) 상에서 실행 중인 애플리케이션들에 대한 예외 사항들을 포함한다. 예를 들어, 진행 중인 전화 통화는, 모바일 컴퓨팅 디바이스(115)가 전화 통화한지 몇 분 후에 대기 모드로 전환될 경우 중단되지 않는다. 마찬가지로, 유사한 예에서 웹 매핑 애플리케이션을 통한 탐색이 중단되지 않는다. 비행기 플러스 모드(1101)는 버튼(1103)을 사용하여 토글링된다. 도 11b에서, 본 그래픽 표현은 개선된 형태의 방해 금지 모드를 토글링하기 위한 사용자 인터페이스(1110)의 실시예를 도시한 것이다. 사용자 인터페이스(1110)는 모바일 컴퓨팅 디바이스(115) 상의 백그라운드 애플리케이션들 및 통지들로부터의 중단을 제한하는 라이프 모드(Life Mode)(1107)를 포함한다. 사용자 인터페이스(1110)는 라이프 모드(1107)에 있는 동안 어떤 애플리케이션들(1105)이 사용자에게 통지할 수 있는지를 선택할 수 있는 예외 사항들(exceptions)을 선택하기 위한 섹션을 포함한다.
도 12는 액션 라이브러리를 생성하기 위한 예시적인 방법(1200)의 일 실시예를 도시한 흐름도이다. 1202에서, 아카이버(202)는 애플리케이션 및 애플리케이션과 관련된 파라미터를 식별한다. 아카이버(202)는 모바일 컴퓨팅 디바이스(115) 상의 애플리케이션들과의 사용자 상호 작용을 아카이빙한다. 예를 들어, 아카이버(202)는 사용자가 이메일 애플리케이션을 실행하여, 주소 리스트에서 "Bob"이라는 연락처를 선택한 후, 이메일 메시지를 연락처로 전송했음을 식별한다. 1204에서, 액션 라이브러리 큐레이터(204)는 애플리케이션과 관련된 애플리케이션 프로그래밍 인터페이스(API)를 통해 액세스 가능한 애플리케이션의 기능을 결정한다. 액션 라이브러리 큐레이터(204)는 API 키를 사용하여 도 1에 도시된 바와 같은 애플리케이션과 관련된 온라인 서비스(111)의 API(109)에 액세스한다. API(109)가 API 키를 유효한 것으로 수락하면, 액션 라이브러리 큐레이터(204)는 API를 사용하여 애플리케이션을 파싱하고, 그것의 구성 기능들, 작업들 또는 액티비티들을 결정한다. 예를 들어, 액션 라이브러리 큐레이터(204)는 이메일 애플리케이션의 구성 기능들이 새로운 이메일 메시지 생성, 약속 설정, 캘린더 초대 생성 등을 포함하는 것으로 결정한다. 1206에서, 액션 라이브러리 큐레이터(204)는 기능 수행과 관련된 API(application programming interface) 호출을 결정한다. API 호출은 애플리케이션의 기능을 수행하도록 하는 요청을 API(109)에 제출하는데 사용될 수 있다. API(109)는 API 호출의 요청을 서비스한다. 이 요청에는 기능 수행과 관련된 파라미터들 또는 데이터가 포함된다. 1208에서, 액션 라이브러리 큐레이터(204)는 API 호출 및 파라미터에 기초하여 액션너블 아이템을 생성한다. 애플리케이션의 액셔너블 아이템은 애플리케이션과 관련된 기능, 작업 또는 액티비티를 수행하기 위해 온라인 서비스(111)의 API(109)에 요청을 자동으로 전송하도록 API 호출에 다이렉트 링크되는 사용자 인터페이스 요소일 수 있다. 1210에서, 액션 라이브러리 큐레이터(204)는 액션너블 아이템의 카테고리를 분류한다. 예를 들어, 액션 라이브러리 큐레이터(204)는 하나 이상의 피트니스 애플리케이션들에 대한 액션너블 아이템들을 식별하고, 식별된 액션너블 아이템들을 '피트니스' 카테고리 아래에 그룹화한다. 1212에서, 액션 라이브러리 큐레이터(204)는 액션너블 아이템 및 카테고리를 액션 라이브러리에 저장한다.
도 13은 애플리케이션과 관련된 액션 메뉴를 생성하기 위한 예시적인 방법(1300)의 일 실시예를 도시한 흐름도이다. 1302에서, 프로세싱 엔진(206)은 애플리케이션 런처와 연계하여 애플리케이션의 오래 계속되는 선택을 수신한다. 1304에서, 컨텍스트 결정기(208)는 애플리케이션의 오래 계속되는 선택과 관련된 컨텍스트를 결정한다. 1306에서, 액션 추천기(210)는 애플리케이션과 관련된 복수의 액션너블 아이템들을 포함하는 액션 라이브러리를 결정한다. 1308에서, 액션 추천기(210)는 컨텍스트에 기초하여 액션 라이브러리로부터 애플리케이션과 관련된 액션너블 아이템을 결정한다. 1310에서, 액션 추천기(210)는 액셔너블 아이템을 수행하기 위한 다이렉트 링크를 포함하는 액션 메뉴를 생성한다. 예를 들어, 액셔너블 아이템의 기능은 대응하는 애플리케이션을 실행하는 것 없이 수행될 수 있다. 1312에서, 사용자 인터페이스 엔진(212)은 오래 계속되는 선택에 응답하여 애플리케이션과 관련된 액션 메뉴를 프레젠테이션한다.
도 14는 제 1 애플리케이션의 액션 메뉴에서 제 2 애플리케이션과 관련된 액셔너블 아이템들을 서피싱하기 위한 예시적인 방법(1400)의 일 실시예를 도시한 흐름도이다(액션들의 크로스 폴리네이션). 1402에서, 프로세싱 엔진(206)은 애플리케이션 런처와 연계하여 제 1 애플리케이션에 대한 오래 계속되는 선택을 수신한다. 1404에서, 액션 추천기(210)는 제 1 애플리케이션의 카테고리를 결정한다. 1406에서, 액션 추천기(210)는 카테고리와 관련된 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정한다. 1408에서, 액션 추천기(210)는 액션 라이브러리로부터 제 2 애플리케이션과 관련된 액션너블 아이템을 결정한다. 1410에서, 액션 추천기(210)는 제 2 애플리케이션과 관련된 액셔너블 아이템을 수행하기 위해 다이렉트 링크를 포함하는 액션 메뉴를 생성한다. 1412에서, 사용자 인터페이스 엔진(212)은 오래 계속되는 선택에 응답하여 제 1 애플리케이션과 연계하여 액션 메뉴를 프레젠테이션한다.
도 15는 액션 메뉴에서 애플리케이션의 통지와 관련된 액션너블 아이템들을 서피싱하는 예시적인 방법(1500)의 일 실시예를 도시한 흐름도이다. 1502에서, 프로세싱 엔진(206)은 제 1 애플리케이션과 관련된 통지를 수신한다. 1504에서, 컨텍스트 결정기(208)는 통지와 연관된 컨텍스트를 결정한다. 1506에서, 액션 추천기(210)는 복수의 액션너블 아이템들을 포함하는 액션 라이브러리를 결정한다. 1508에서, 액션 추천기(210)는 컨텍스트에 기초하여 액션 라이브러리로부터 제 2 애플리케이션과 관련된 액션너블 아이템을 결정한다. 1510에서, 액션 추천기(210)는 액셔너블 아이템을 수행하기 위한 다이렉트 링크를 포함하는 액션 메뉴를 생성한다. 1512에서, 사용자 인터페이스 엔진(212)은 통지와 연계하여 액션 메뉴를 프레젠테이션한다.
도 16은 검출된 액티비티 및 관련 컨텍스트와 관련된 액셔너블 아이템들을 서피싱하는 예시적인 방법(1600)의 일 실시예를 도시한 흐름도이다. 1602에서, 프로세싱 엔진(206)은 모바일 컴퓨팅 디바이스로부터 신호 스트림을 수신한다. 1604에서, 프로세싱 엔진(206)은 신호 스트림을 처리한다. 1606에서, 컨텍스트 결정기(208)는 처리된 신호 스트림에 기초하여 액티비티 및 액티비티의 컨텍스트를 검출한다. 1608에서, 액션 추천기(210)는 하나 이상의 애플리케이션들과 관련된 복수의 액션너블 아이템들을 포함하는 액션 라이브러리를 결정한다. 1610에서, 액션 추천기(210)는 액션 라이브러리로부터 액티비티 및 액티비티의 컨텍스트와 관련된 액션너블 아이템을 결정한다. 1612에서, 액션 추천기(210)는 액셔너블 아이템을 수행하기 위한 다이렉트 링크를 포함하는 액션 메뉴를 생성한다. 1614에서, 사용자 인터페이스 엔진(212)은 검출된 액티비티와 연계하여 액션 메뉴를 프레젠테이션한다.
모바일 컴퓨팅 디바이스의 사용자 경험에서 애플리케이션들과 관련된 맞춤형 액셔너블 아이템들을 서피싱하는 시스템 및 방법이 설명되었다. 이상의 설명에서는, 예시의 목적으로, 위에서 소개된 기술들에 대한 완전한 이해를 제공하기 위해 다수의 특정 세부 사항들이 설명되었다. 그러나, 이러한 특정 세부 사항들 없이도 본 기술들이 실시될 수 있다는 것이 당업자에게는 명백할 것이다. 다른 예들에서, 구조들 및 디바이스들은 설명을 모호하게 하는 것을 방지하고 이해를 용이하게 하기 위해 블록도 형태로 도시되었다. 예를 들어, 본 기술들이 주로 소프트웨어 및 특정 하드웨어를 참조하여 상기 일 실시예에서 설명되었다. 그러나, 본 발명은 데이터 및 명령들을 수신하고 서비스를 제공하는 임의의 주변 장치들의 일부로서 정보를 제공할 수 있는 임의의 타입의 컴퓨팅 시스템에 적용된다.
본 명세서에서 "일 실시예" 또는 "실시예"에 대한 언급은 그 실시예와 관련하여 설명된 특정한 특징, 구조 또는 특성이 적어도 하나의 실시예에 포함됨을 의미한다. 명세서의 여러 곳에서 "일 실시예에서"라는 문구의 출현이 반드시 모두 동일한 실시예를 언급하는 것은 아니다.
전술한 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘들 및 상징적 표현들의 관점에서 제공된 것이다. 이러한 알고리즘 적 설명 및 표현은 일부 상황에서 데이터 처리 분야의 당업자가 그들 작업의 내용을 다른 당업자에게 전달하기 위해 사용된다. 여기서 알고리즘은 일반적으로 원하는 결과를 도출하는 일관성 있는 시퀀스의 단계들인 것으로 고려된다. 이러한 단계들은 물리적 수량들을 물리적으로 조작해야 하는 단계들이다. 일반적으로, 반드시 그런 것은 아니지만, 이러한 수량들은 저장, 전송, 결합, 비교 및 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 경우에 따라, 이들 신호를 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이, 주로 일반적인 사용의 이유로 편리한 것이 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 수량들과 관련된 것이며 단지 이들 수량들에 적용되는 편리한 라벨들이라는 것에 유의해야 한다. 이하의 논의로부터 명백하게 달리 명시되지 않는 한, 설명 전반에 걸쳐, "프로세싱", "컴퓨팅", "계산", "결정", "표시" 등과 같은 용어를 사용한 논의들은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자적) 수량으로 표현된 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 그러한 정보 저장, 전송 또는 디스플레이 장치들 내의 물리적 수량으로서 유사하게 표현되는 다른 데이터로 조작 및 변환하는, 컴퓨터 시스템, 또는 이와 유사한 전자적 컴퓨팅 디바이스의 액션 및 프로세스들을 지칭하는 것임을 이해해야 한다.
본 기술들은 또한 본 명세서에서 동작들을 수행하기 위한 장치에 관한 것이다. 이 장치는 필요한 목적을 위해 특별히 구성될 수 있거나, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 플로피 디스크, 광 디스크, CD-ROM 및 자기 디스크를 포함하는 임의의 타입의 디스크, ROM(read-only memory), RAM(random access memory), EPROM, EEPROM, 자기 또는 광학 카드, 비휘발성 메모리를 갖는 USB 키를 포함하는 플래시 메모리 또는 그 각각이 컴퓨터 시스템 버스에 연결되는 전자 명령어들을 저장하기에 적합한 임의의 타입의 매체와 같은, 그러나 이에 한정되지 않는, 비일시적 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
일부 실시예들은 전체 하드웨어 실시예, 전체 소프트웨어 실시예 또는 하드웨어 및 소프트웨어 요소들 모두를 포함하는 실시예의 형태를 취할 수 있다. 일 실시예는 펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함하지만 이에 제한되지 않는 소프트웨어로 구현된다.
또한, 일부 실시예들은 컴퓨터 또는 임의의 명령 실행 시스템에 의해 사용하거나 또는 이와 관련하여 사용하기 위한 프로그램 코드를 제공하는 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 본 설명의 목적을 위해, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 또는 이와 관련하여 사용하기 위한 프로그램을 포함, 저장, 통신, 전파 또는 전송할 수 있는 임의의 장치일 수 있다.
프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 처리 시스템은 시스템 버스를 통해 메모리 요소들에 직접 또는 간접 연결된 적어도 하나의 프로세서를 포함할 수 있다. 메모리 요소들은 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 벌크 스토리지, 및 실행 동안 코드가 벌크 스토리지로부터 검색되어야 하는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 임시 저장을 제공하는 캐시 메모리를 포함할 수 있다.
입/출력 또는 I/O 디바이스들(키보드, 디스플레이, 포인팅 디바이스 등을 포함하며 이에 제한되지 않음)은 직접 또는 중간의 I/O 제어기를 통해 시스템에 연결될 수 있다.
데이터 처리 시스템이 중간의 사설 또는 공용 네트워크를 통해 다른 데이터 처리 시스템 또는 원격 프린터 또는 저장 장치에 연결될 수 있도록 하기 위해 네트워크 어댑터가 또한 시스템에 연결될 수 있다. 모뎀, 케이블 모뎀 및 이더넷 카드는 현재 사용 가능한 몇 가지 타입의 네트워크 어댑터이다.
마지막으로, 본 명세서에서 제공되는 알고리즘 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련된 것이 아니다. 다양한 범용 시스템이 본 명세서의 교시에 따라 프로그램들과 함께 사용될 수 있거나, 또는 필요한 방법 단계들을 수행하기 위해 보다 특화된 장치를 구성하는 것이 편리할 수도 있다. 다양한 이들 시스템에 필요한 구조가 위의 설명에서 나타나 있다. 또한, 본 기술은 임의의 특정 프로그래밍 언어를 참조하여 설명된 것이 아니다. 본 명세서에 기술된 바와 같은 다양한 실시예들의 교시를 구현하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다는 것이 이해될 것이다.
본 실시예들에 대한 전술한 설명이 예시 및 설명의 목적으로 제공되었다. 본 명세서를 개시된 정확한 형태로 한정하거나 제한하려는 것이 의도되지 않는다. 상기한 교시에 비추어 다수의 수정 및 변형이 가능하다. 본 실시예들의 범위는 본 명세서에 의해서가 아니라 본 출원의 청구 범위에 의해 제한되는 것으로 의도된다. 당업자에게 이해되는 바와 같이, 본 예들은 그 사상 또는 본질적인 특성을 벗어나지 않고 다른 특정 형태들로 구현될 수 있다. 마찬가지로, 모듈, 루틴, 특징, 속성, 방법 및 기타 측면의 특정 명명 및 구분은 필수적이거나 중요한 것이 아니며, 본 설명 또는 그 특징을 구현하는 메커니즘은 다른 명칭, 구분 및/또는 형식을 가질 수 있다. 또한, 관련 기술 분야의 통상의 기술자에게 명백한 바와 같이, 본 명세서의 모듈, 루틴, 특징, 속성, 방법 및 기타 측면은 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 또한, 본 명세서의 구성 요소, 예를 들어 모듈인 구성 요소가 소프트웨어로서 구현되는 경우, 그 구성 요소는 독립형 프로그램으로서, 더 큰 프로그램의 일부로서, 복수의 개별 프로그램으로서, 정적 또는 동적 링크된 라이브러리로서, 커널로드 가능 모듈로서, 디바이스 드라이버로서, 및/또는 컴퓨터 프로그래밍 분야의 당업자에게 현재 알려져 있거나 또는 미래에 알려질 모든 다른 방법으로 구현된다. 또한, 본 명세서는 임의의 특정 프로그래밍 언어, 또는 임의의 특정 운영 체제 또는 환경에 대한 실시예로 제한되지 않는다. 따라서, 본 개시는 명세서의 범위를 설명하기 위한 것이지 제한하기 위한 것이 아니며, 그 범위는 다음의 청구항들에 기재되어 있다.

Claims (20)

  1. 컴퓨터 구현 방법으로서,
    하나 이상의 프로세서들을 사용하여, 제 1 애플리케이션과 관련된 이벤트를 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 복수의 액셔너블 아이템(actionable item)들을 포함하는 액션 라이브러리(action library)를 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 이벤트에 기초하여 상기 액션 라이브러리로부터 상기 제 1 애플리케이션과 관련된 제 1 액셔너블 아이템을 식별하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 제 1 액셔너블 아이템에 기초하여 제 1 액션 메뉴를 생성하는 단계 - 상기 제 1 액션 메뉴는 상기 제 1 액셔너블 아이템을 수행하기 위한 제 1 딥 링크(deep link)를 포함함 -; 및
    상기 하나 이상의 프로세서들을 사용하여, 상기 이벤트에 응답하여 상기 제 1 애플리케이션과 연계하여 상기 제 1 액션 메뉴를 프레젠테이션하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 액션 라이브러리를 결정하는 단계는,
    애플리케이션 및 상기 애플리케이션과 관련된 파라미터를 식별하는 단계;
    상기 애플리케이션과 관련된 애플리케이션 프로그래밍 인터페이스와 연결하는 단계;
    상기 애플리케이션 프로그래밍 인터페이스를 통해 액세스 가능한 상기 애플리케이션의 기능을 결정하는 단계;
    상기 기능을 수행하는 것과 관련된 애플리케이션 프로그래밍 인터페이스 호출을 결정하는 단계;
    상기 애플리케이션 프로그래밍 인터페이스 호출 및 상기 파라미터를 사용하여 상기 애플리케이션에 대한 액셔너블 아이템을 생성하는 단계;
    상기 액셔너블 아이템의 카테고리를 분류하는 단계; 및
    상기 액셔너블 아이템 및 상기 액셔너블 아이템의 상기 카테고리를 상기 액션 라이브러리에 저장하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 제 1 애플리케이션과 관련된 이벤트는 애플리케이션 런처에서 상기 제 1 애플리케이션에 대한 오래 계속되는 선택이며, 상기 제 1 액션 메뉴를 생성하는 단계는,
    상기 제 1 애플리케이션의 카테고리를 결정하는 단계;
    제 2 애플리케이션과 관련된 제 2 액셔너블 아이템의 액션 카테고리(action category)와 매칭되는 상기 제 1 애플리케이션의 상기 카테고리에 기초하여 상기 액션 라이브러리로부터 상기 제 2 액셔너블 아이템을 식별하는 단계;
    상기 제 2 액셔너블 아이템을 상기 제 1 액션 메뉴에 추가하는 단계 - 상기 제 1 액션 메뉴는 상기 제 2 액셔너블 아이템을 수행하기 위한 제 2 딥 링크를 포함함 -; 및
    상기 오래 계속되는 선택에 응답하여 상기 제 1 애플리케이션과 연계하여 상기 제 1 액션 메뉴를 프레젠테이션하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    상기 제 1 애플리케이션과 관련된 착신 통지(incoming notification)를 검출하는 단계;
    상기 착신 통지의 컨텍스트(context)를 결정하는 단계;
    상기 컨텍스트에 기초하여 상기 액션 라이브러리로부터 제 2 애플리케이션과 관련된 제 2 액셔너블 아이템을 식별하는 단계;
    상기 제 2 액셔너블 아이템에 기초하여 제 2 액션 메뉴를 생성하는 단계 - 상기 제 2 액션 메뉴는 상기 제 2 액셔너블 아이템을 수행하기 위한 딥 링크를 포함함 -; 및
    상기 착신 통지와 연계하여 상기 제 2 액션 메뉴를 프레젠테이션하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  5. 제 1 항에 있어서,
    모바일 컴퓨팅 디바이스로부터 신호 스트림을 수신하는 단계;
    상기 신호 스트림을 처리하는 단계;
    처리된 상기 신호 스트림에 기초하여 사용자 액티비티 및 상기 사용자 액티비티의 컨텍스트를 검출하는 단계;
    상기 컨텍스트에 기초하여 상기 액션 라이브러리로부터 제 3 애플리케이션과 관련된 제 3 액셔너블 아이템을 식별하는 단계; 및
    상기 제 3 액셔너블 아이템에 기초하여 제 3 액션 메뉴를 생성하는 단계 - 상기 제 3 액션 메뉴는 상기 제 3 액셔너블 아이템을 수행하기 위한 제 3 링크를 포함함 -
    를 더 포함하는, 컴퓨터 구현 방법.
  6. 제 5 항에 있어서,
    검출된 상기 사용자 액티비티의 지속 시간이 미리 결정된 임계값을 만족시키는지의 여부를 결정하는 단계; 및
    검출된 상기 사용자 액티비티의 지속 시간이 상기 미리 결정된 임계값을 만족시킨다는 결정에 응답하여, 상기 제 3 액션 메뉴를 서피싱(surfacing)한다는 통지를 생성하고 검출된 상기 사용자 액티비티와 연계하여 상기 통지를 프레젠테이션하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  7. 제 5 항에 있어서,
    상기 제 3 액션 메뉴를 생성하는 단계는,
    상기 제 3 애플리케이션이 상기 모바일 컴퓨팅 디바이스에 로딩되었는지의 여부를 결정하는 단계; 및
    상기 제 3 애플리케이션이 상기 모바일 컴퓨팅 디바이스에 로딩되지 않았다는 결정에 응답하여, 상기 제 3 애플리케이션을 상기 모바일 컴퓨팅 디바이스에 로딩하기 위한 제 4 링크를 포함하는 상기 제 3 액션 메뉴를 생성하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    상기 제 1 액션 메뉴에서 상기 제 1 액셔너블 아이템의 사용자 선택을 수신하는 단계;
    보조 액션 스크린(secondary action screen)을 생성하는 단계;
    상기 사용자 선택에 응답하여 상기 보조 액션 스크린을 프레젠테이션하는 단계;
    상기 제 1 액셔너블 아이템의 액션을 이행하도록 하는 사용자 입력을 수신하는 단계; 및
    상기 제 1 액셔너블 아이템의 상기 액션을 수행하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  9. 제 8 항에 있어서,
    상기 제 1 액셔너블 아이템의 상기 액션은 상기 제 1 애플리케이션을 실행하지 않고 수행되는, 컴퓨터 구현 방법.
  10. 시스템으로서,
    하나 이상의 프로세서들; 및
    명령어들을 저장하는 메모리를 포함하며,
    상기 명령어들은, 실행될 때에 상기 하나 이상의 프로세서들로 하여금,
    제 1 애플리케이션과 관련된 이벤트를 결정하고;
    복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하고;
    상기 이벤트에 기초하여 상기 액션 라이브러리로부터 상기 제 1 애플리케이션과 관련된 제 1 액셔너블 아이템을 식별하고;
    상기 제 1 액셔너블 아이템에 기초하여 제 1 액션 메뉴를 생성하고 - 상기 제 1 액션 메뉴는 상기 제 1 액셔너블 아이템을 수행하기 위한 제 1 딥 링크를 포함함 -; 또한
    상기 이벤트에 응답하여 상기 제 1 애플리케이션과 연계하여 상기 제 1 액션 메뉴를 프레젠테이션하게 하는, 시스템.
  11. 제 10 항에 있어서,
    상기 액션 라이브러리를 결정하기 위해, 상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    애플리케이션 및 상기 애플리케이션과 관련된 파라미터를 식별하고;
    상기 애플리케이션과 관련된 애플리케이션 프로그래밍 인터페이스와 연결하고;
    상기 애플리케이션 프로그래밍 인터페이스를 통해 액세스 가능한 상기 애플리케이션의 기능을 결정하고;
    상기 기능을 수행하는 것과 관련된 애플리케이션 프로그래밍 인터페이스 호출을 결정하고;
    상기 애플리케이션 프로그래밍 인터페이스 호출 및 상기 파라미터를 사용하여 상기 애플리케이션에 대한 액셔너블 아이템을 생성하고;
    상기 액셔너블 아이템의 카테고리를 분류하고; 또한
    상기 액셔너블 아이템 및 상기 액셔너블 아이템의 상기 카테고리를 상기 액션 라이브러리에 저장하게 하는, 시스템.
  12. 제 10 항에 있어서,
    상기 제 1 액션 메뉴를 생성하기 위해, 상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    상기 제 1 애플리케이션의 카테고리를 결정하고;
    제 2 애플리케이션과 관련된 제 2 액셔너블 아이템의 액션 카테고리와 매칭되는 상기 제 1 애플리케이션의 상기 카테고리에 기초하여 상기 액션 라이브러리로부터 상기 제 2 액셔너블 아이템을 식별하고;
    상기 제 2 액셔너블 아이템을 상기 제 1 액션 메뉴에 추가하고 - 상기 제 1 액션 메뉴는 상기 제 2 액셔너블 아이템을 수행하기 위한 제 2 딥 링크를 포함함 -; 또한
    애플리케이션 런처에서 상기 제 1 애플리케이션에 대한 오래 계속되는 선택인 이벤트에 응답하여 상기 제 1 애플리케이션과 연계하여 상기 제 1 액션 메뉴를 프레젠테이션하게 하는, 시스템.
  13. 제 10 항에 있어서,
    상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    상기 제 1 애플리케이션과 관련된 착신 통지를 검출하고;
    상기 착신 통지의 컨텍스트를 결정하고;
    상기 컨텍스트에 기초하여 상기 액션 라이브러리로부터 제 2 애플리케이션과 관련된 제 2 액셔너블 아이템을 식별하고;
    상기 제 2 액셔너블 아이템에 기초하여 제 2 액션 메뉴를 생성하고 - 상기 제 2 액션 메뉴는 상기 제 2 액셔너블 아이템을 수행하기 위한 딥 링크를 포함함 -; 또한
    상기 착신 통지와 연계하여 상기 제 2 액션 메뉴를 프레젠테이션하게 하는, 시스템.
  14. 제 10 항에 있어서,
    상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    모바일 컴퓨팅 디바이스로부터 신호 스트림을 수신하고;
    상기 신호 스트림을 처리하고;
    처리된 상기 신호 스트림에 기초하여 사용자 액티비티 및 상기 사용자 액티비티의 컨텍스트를 검출하고;
    상기 컨텍스트에 기초하여 상기 액션 라이브러리로부터 제 3 애플리케이션과 관련된 제 3 액셔너블 아이템을 식별하고; 또한
    상기 제 3 액셔너블 아이템에 기초하여 제 3 액션 메뉴를 생성하게 하며, 상기 제 3 액션 메뉴는 상기 제 3 액셔너블 아이템을 수행하기 위한 제 3 링크를 포함하는, 시스템.
  15. 제 14 항에 있어서,
    상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    검출된 상기 사용자 액티비티의 지속 시간이 미리 결정된 임계값을 만족시키는지의 여부를 결정하고; 또한
    검출된 상기 사용자 액티비티의 지속 시간이 상기 미리 결정된 임계값을 만족시킨다는 결정에 응답하여, 상기 제 3 액션 메뉴를 서피싱한다는 통지를 생성하고 검출된 상기 사용자 액티비티와 연계하여 상기 통지를 프레젠테이션하게 하는, 시스템.
  16. 제 14 항에 있어서,
    상기 제 3 액션 메뉴를 생성하기 위해, 상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    상기 제 3 애플리케이션이 상기 모바일 컴퓨팅 디바이스에 로딩되었는지의 여부를 결정하고; 또한
    상기 제 3 애플리케이션이 상기 모바일 컴퓨팅 디바이스에 로딩되지 않았다는 결정에 응답하여, 상기 제 3 애플리케이션을 상기 모바일 컴퓨팅 디바이스에 로딩하기 위한 제 4 링크를 포함하는 제 3 액션 메뉴를 생성하게 하는, 시스템.
  17. 제 10 항에 있어서,
    상기 명령어들은 또한 상기 하나 이상의 프로세서들로 하여금,
    상기 제 1 액션 메뉴에서 제 1 액셔너블 아이템의 사용자 선택을 수신하고;
    보조 액션 스크린을 생성하고;
    상기 사용자 선택에 응답하여 상기 보조 액션 스크린을 프레젠테이션하고;
    상기 제 1 액셔너블 아이템의 액션을 이행하도록 하는 사용자 입력을 수신하고; 또한
    상기 제 1 액셔너블 아이템의 상기 액션을 수행하게 하는, 시스템.
  18. 제 17 항에 있어서,
    상기 제 1 액셔너블 아이템의 상기 액션은 상기 제 1 애플리케이션을 실행하지 않고 수행되는, 시스템.
  19. 컴퓨터 구현 방법으로서,
    하나 이상의 프로세서들을 사용하여, 모바일 컴퓨팅 디바이스로부터 신호 스트림을 수신하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 신호 스트림을 처리하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 처리된 상기 신호 스트림에 기초하여 액티비티 및 상기 액티비티의 컨텍스트를 검출하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 하나 이상의 애플리케이션들과 관련된 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 액션 라이브러리로부터 상기 액티비티 및 상기 액티비티의 컨텍스트와 관련된 액셔너블 아이템을 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 액셔너블 아이템을 수행하기 위한 다이렉트 링크를 포함하는 액션 메뉴를 생성하는 단계; 및
    상기 하나 이상의 프로세서들을 사용하여, 검출된 상기 액티비티와 연계하여 상기 액션 메뉴를 프레젠테이션하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  20. 컴퓨터 구현 방법으로서,
    하나 이상의 프로세서들을 사용하여, 애플리케이션 런처와 연계하여 제 1 애플리케이션에 대한 오래 계속되는 선택을 수신하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 제 1 애플리케이션의 카테고리를 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 카테고리와 관련된 복수의 액셔너블 아이템들을 포함하는 액션 라이브러리를 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 액션 라이브러리로부터 상기 제 1 애플리케이션과 관련된 제 1 액셔너블 아이템을 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 제 1 애플리케이션의 상기 카테고리와 매칭되는 제 2 애플리케이션과 관련된 제 2 액셔너블 아이템의 액션 카테고리에 기초하여 상기 액션 라이브러리로부터 상기 제 2 액셔너블 아이템을 결정하는 단계;
    상기 하나 이상의 프로세서들을 사용하여, 상기 제 1 액셔너블 아이템 및 상기 제 2 액셔너블 아이템에 기초하여 액션 메뉴를 생성하는 단계 - 상기 액션 메뉴는 상기 제 1 액셔너블 아이템을 수행하기 위한 제 1 딥 링크 및 상기 제 2 액셔너블 아이템을 수행하기 위한 제 2 딥 링크를 포함함 -; 및
    상기 하나 이상의 프로세서들을 사용하여, 상기 제 1 애플리케이션에 대한 오래 계속되는 선택에 응답하여 상기 제 1 애플리케이션과 연계하여 상기 액션 메뉴를 프레젠테이션하는 단계
    를 포함하는, 컴퓨터 구현 방법.
KR1020207003052A 2017-07-05 2018-07-05 모바일 컴퓨팅 디바이스에서 컨텍스트 액션들을 서피싱하기 위한 개선된 사용자 인터페이스 KR20200040752A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762528802P 2017-07-05 2017-07-05
US62/528,802 2017-07-05
PCT/US2018/040950 WO2019010328A1 (en) 2017-07-05 2018-07-05 ENHANCED USER INTERFACE FOR SURFACING CONTEXTUAL ACTIONS IN A MOBILE COMPUTING DEVICE

Publications (1)

Publication Number Publication Date
KR20200040752A true KR20200040752A (ko) 2020-04-20

Family

ID=64902973

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207003052A KR20200040752A (ko) 2017-07-05 2018-07-05 모바일 컴퓨팅 디바이스에서 컨텍스트 액션들을 서피싱하기 위한 개선된 사용자 인터페이스

Country Status (6)

Country Link
US (1) US11159671B2 (ko)
EP (1) EP3649542A4 (ko)
JP (1) JP2020526833A (ko)
KR (1) KR20200040752A (ko)
CN (1) CN111052061A (ko)
WO (1) WO2019010328A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102363373B1 (ko) * 2021-08-03 2022-02-16 (주)메가투스 인공신경망을 이용한 액티비티 추천 시스템, 인공신경망을 이용한 액티비티 추천 방법, 이를 위한 컴퓨터 프로그램

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8893033B2 (en) * 2011-05-27 2014-11-18 Microsoft Corporation Application notifications
JP6502789B2 (ja) * 2015-08-25 2019-04-17 株式会社東芝 コミュニケーション支援装置、コミュニケーション支援方法、および、プログラム
US10063688B1 (en) * 2017-10-05 2018-08-28 Sinsep Designs, LLC Administrator-managed smartphone application access
US20190138293A1 (en) * 2017-11-09 2019-05-09 Venuetize LLC Pattern recognition platform
DK180246B1 (en) 2018-03-12 2020-09-11 Apple Inc User interfaces for health monitoring
DK179992B1 (en) 2018-05-07 2020-01-14 Apple Inc. DISPLAY OF USER INTERFACES ASSOCIATED WITH PHYSICAL ACTIVITIES
US11317833B2 (en) 2018-05-07 2022-05-03 Apple Inc. Displaying user interfaces associated with physical activities
US11163617B2 (en) * 2018-09-21 2021-11-02 Microsoft Technology Licensing, Llc Proactive notification of relevant feature suggestions based on contextual analysis
US11093510B2 (en) 2018-09-21 2021-08-17 Microsoft Technology Licensing, Llc Relevance ranking of productivity features for determined context
US11029818B2 (en) * 2018-09-24 2021-06-08 Salesforce.Com, Inc. Graphical user interface management for different applications
US11003317B2 (en) 2018-09-24 2021-05-11 Salesforce.Com, Inc. Desktop and mobile graphical user interface unification
EP3938884A4 (en) * 2019-04-29 2022-11-09 Hewlett-Packard Development Company, L.P. DISPLAY UNIT ATTRIBUTE WIRELESS CONFIGURATION
DK201970532A1 (en) 2019-05-06 2021-05-03 Apple Inc Activity trends and workouts
US11209957B2 (en) 2019-06-01 2021-12-28 Apple Inc. User interfaces for cycle tracking
US11152100B2 (en) 2019-06-01 2021-10-19 Apple Inc. Health application user interfaces
US11228835B2 (en) 2019-06-01 2022-01-18 Apple Inc. User interfaces for managing audio exposure
US11234077B2 (en) 2019-06-01 2022-01-25 Apple Inc. User interfaces for managing audio exposure
US11461697B2 (en) * 2019-06-05 2022-10-04 Business Objects Software Ltd. Contextual modeling using application metadata
WO2021034305A1 (en) * 2019-08-16 2021-02-25 Google Llc Context aware airplane mode
KR20190107621A (ko) * 2019-09-02 2019-09-20 엘지전자 주식회사 상황 인식에 기반한 어플리케이션 추천을 위한 장치 및 제어 방법
WO2021051121A1 (en) 2019-09-09 2021-03-18 Apple Inc. Research study user interfaces
AU2020348209B2 (en) 2019-09-18 2023-04-20 Luminex Corporation Using machine learning algorithms to prepare training datasets
CN114924682A (zh) * 2019-10-24 2022-08-19 华为终端有限公司 一种内容接续方法及电子设备
CN111371837B (zh) * 2020-02-07 2023-03-17 北京小米移动软件有限公司 功能提示方法、功能提示装置及存储介质
DK181037B1 (en) 2020-06-02 2022-10-10 Apple Inc User interfaces for health applications
US11698710B2 (en) 2020-08-31 2023-07-11 Apple Inc. User interfaces for logging user activities
US11625141B2 (en) * 2020-09-22 2023-04-11 Servicenow, Inc. User interface generation with machine learning
US11640823B1 (en) * 2020-09-30 2023-05-02 Amazon Technologies, Inc. Natural language processing routing
US20220413689A1 (en) * 2021-06-28 2022-12-29 Citrix Systems, Inc. Context-based presentation of available microapp actions
US11922900B2 (en) * 2021-12-30 2024-03-05 Dell Products L.P. Managing a display of an information handling system
CN117114642B (zh) * 2023-10-17 2024-03-29 荣耀终端有限公司 活动日历提醒的方法和电子设备

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065508B2 (en) 2007-11-09 2011-11-22 Google Inc. Activating applications based on accelerometer data
US20090164942A1 (en) * 2007-12-20 2009-06-25 Nokia Corporation User interface and communication terminal
US8762285B2 (en) * 2008-01-06 2014-06-24 Yahoo! Inc. System and method for message clustering
US8386506B2 (en) * 2008-08-21 2013-02-26 Yahoo! Inc. System and method for context enhanced messaging
US10241644B2 (en) * 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10706373B2 (en) * 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US9582187B2 (en) * 2011-07-14 2017-02-28 Microsoft Technology Licensing, Llc Dynamic context based menus
JP5661000B2 (ja) * 2011-08-23 2015-01-28 アルパイン株式会社 多機能情報端末およびその操作方法
US20150149469A1 (en) * 2012-06-14 2015-05-28 Nokia Corporation Methods and apparatus for associating interest tags with media items based on social diffusions among users
US9443272B2 (en) * 2012-09-13 2016-09-13 Intel Corporation Methods and apparatus for providing improved access to applications
WO2014055939A1 (en) 2012-10-04 2014-04-10 Huawei Technologies Co., Ltd. User behavior modeling for intelligent mobile companions
US9792014B2 (en) * 2013-03-15 2017-10-17 Microsoft Technology Licensing, Llc In-place contextual menu for handling actions for a listing of items
US9615231B2 (en) * 2013-06-04 2017-04-04 Sony Corporation Configuring user interface (UI) based on context
US9806942B2 (en) * 2013-12-02 2017-10-31 Yahoo Holdings, Inc. Deep linking to mobile applications
US9720567B2 (en) * 2014-02-17 2017-08-01 Microsoft Technology Licensing, Llc Multitasking and full screen menu contexts
CN115545698A (zh) * 2014-05-29 2022-12-30 苹果公司 用于支付的用户接口
WO2016112399A1 (en) * 2015-01-09 2016-07-14 Fresh Digital, Inc. Systems and methods for providing location specific content and notifications utilizing beacons and drones
WO2016118979A2 (en) * 2015-01-23 2016-07-28 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US10671235B2 (en) * 2015-03-03 2020-06-02 Soroco Private Limited Software robots for programmatically controlling computer programs to perform tasks
US9632664B2 (en) 2015-03-08 2017-04-25 Apple Inc. Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback
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
US9465682B1 (en) * 2015-05-27 2016-10-11 Google Inc. Dynamic deep links to targets
US10984338B2 (en) * 2015-05-28 2021-04-20 Raytheon Technologies Corporation Dynamically updated predictive modeling to predict operational outcomes of interest
US10318112B2 (en) * 2016-05-27 2019-06-11 Rovi Guides, Inc. Systems and methods for enabling quick multi-application menu access to media options
US20180218287A1 (en) * 2017-02-01 2018-08-02 Facebook, Inc. Determining performance of a machine-learning model based on aggregation of finer-grain normalized performance metrics

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102363373B1 (ko) * 2021-08-03 2022-02-16 (주)메가투스 인공신경망을 이용한 액티비티 추천 시스템, 인공신경망을 이용한 액티비티 추천 방법, 이를 위한 컴퓨터 프로그램

Also Published As

Publication number Publication date
US20190014205A1 (en) 2019-01-10
JP2020526833A (ja) 2020-08-31
WO2019010328A1 (en) 2019-01-10
EP3649542A4 (en) 2021-03-10
US11159671B2 (en) 2021-10-26
CN111052061A (zh) 2020-04-21
EP3649542A1 (en) 2020-05-13

Similar Documents

Publication Publication Date Title
US11159671B2 (en) User interface for surfacing contextual actions in a mobile computing device
US11644953B2 (en) Techniques for context sensitive illustrated graphical user interface elements
AU2017232108B2 (en) Object based contextual menu controls
US9026941B1 (en) Suggesting activities
JP2021144722A (ja) メッセージングエージェントプラットフォームのための技術
US9058563B1 (en) Suggesting activities
US20160202901A1 (en) Communications devices and methods for single-mode and automatic media capture
CN110785756A (zh) 数据内容过滤器
US20170031575A1 (en) Tailored computing experience based on contextual signals
US20180032997A1 (en) System, method, and computer program product for determining whether to prompt an action by a platform in connection with a mobile device
CN110383772A (zh) 用于消息收发机器人丰富通信的技术
KR20150103179A (ko) 소식 컨텐츠의 재-순위화
US20170155737A1 (en) Context-aware information discovery
KR102276856B1 (ko) 컴퓨팅 디바이스와 상호작용하는 장치 및 방법
KR20160075126A (ko) 전자 장치가 콘텐츠를 제공하는 방법 및 그 전자 장치
KR20210107139A (ko) 필터 활동을 통한 오디언스 도출
WO2014150100A1 (en) Application-centric socialization
US20190090197A1 (en) Saving battery life with inferred location
US20180060092A1 (en) Group Data and Priority in an Individual Desktop
EP3868135A1 (en) Saving battery life using an inferred location

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right