KR20160016491A - 디바이스 및 디바이스의 기능 수행 방법 - Google Patents

디바이스 및 디바이스의 기능 수행 방법 Download PDF

Info

Publication number
KR20160016491A
KR20160016491A KR1020140159183A KR20140159183A KR20160016491A KR 20160016491 A KR20160016491 A KR 20160016491A KR 1020140159183 A KR1020140159183 A KR 1020140159183A KR 20140159183 A KR20140159183 A KR 20140159183A KR 20160016491 A KR20160016491 A KR 20160016491A
Authority
KR
South Korea
Prior art keywords
page
information
application
screen
user
Prior art date
Application number
KR1020140159183A
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 삼성전자주식회사
Priority to KR1020150025234A priority Critical patent/KR102367132B1/ko
Priority to PCT/KR2015/007524 priority patent/WO2016017978A1/en
Priority to TW104123797A priority patent/TWI695312B/zh
Priority to US14/813,959 priority patent/US10127011B2/en
Priority to EP15179188.6A priority patent/EP2980694B1/en
Priority to EP19173177.7A priority patent/EP3557406B1/en
Priority to CN201910370909.9A priority patent/CN110262708B/zh
Priority to CN201510463464.0A priority patent/CN105320404B/zh
Publication of KR20160016491A publication Critical patent/KR20160016491A/ko
Priority to US16/127,943 priority patent/US10768892B2/en
Priority to US16/984,951 priority patent/US11099812B2/en

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/16Sound input; Sound output
    • G06F3/167Audio in a user interface, e.g. using voice commands for navigating, audio feedback
    • 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]

Abstract

실행 중인 애플리케이션의 적어도 하나의 애플리케이션 화면을 표시할 수 있는 디스플레이; 사용자로부터 발화된 음성 명령을 수신하는 음성 입력부; 애플리케이션의 복수 개의 애플리케이션 화면에 포함된 UI 엘리먼트에 관한 정보로부터 얻어지는, 음성 명령에 대응하는 애플리케이션 화면들을 전환하기 위한 화면 전환 정보를 이용하여, 음성 명령에 대응되는 동작을 수행하는 제어부를 포함하고, 상기 UI 엘리먼트는 사용자에 의해 선택되면 특정 기능이 수행되는 것을 특징으로 하는 디바이스를 개시한다.

Description

디바이스 및 디바이스의 기능 수행 방법{DEVICE AND METHOD FOR PERFORMING FUNCTIONS}
본 발명은 디바이스가 설치된 애플리케이션을 이용하여 사용자에 의해 요청되는 기능을 수행하는 방법에 관한 것이다.
모바일 단말은 다양한 기능을 수행할 수 있도록 구성될 수 있다. 그러한 다양한 기능들의 예로 데이터 및 음성 통신 기능, 카메라를 통해 사진이나 동영상을 촬영하는 기능, 음성 저장 기능, 스피커 시스템을 통한 음악 파일의 재생 기능, 이미지나 비디오의 디스플레이 기능 등이 있다.
일부 모바일 단말은 게임을 실행할 수 있는 추가적 기능을 포함하고, 다른 일부 모바일 단말은 멀티미디어 기기로서 구현되기도 한다. 더욱이 스마트 폰의 개발이 가속화되면서 다양한 애플리케이션들의 개발 및 사용이 증가하고 있다. 따라서, 사용자가 애플리케이션을 쉽고 간편하게 조작할 수 있도록 하는 시스템이 필요하다.
본 발명은 디바이스가 설치된 애플리케이션의 화면 구성에 관한 정보를 이용하여 사용자에 의해 요청되는 기능들을 수행하는 방법에 관한 것이다.
본 발명의 일 실시예에 따른 디바이스는, 애플리케이션을 설치하고, 설치된 애플리케이션에 대한 사용자의 이용 형태에 기초하여 애플리케이션의 화면 구성에 관한 정보를 생성하는 제어부; 및 애플리케이션의 화면 구성에 관한 정보를 저장하는 저장부를 포함할 수 있다.
본 발명의 일 실시예에 따른 애플리케이션의 화면 구성에 관한 정보는, 애플리케이션의 식별 정보, 애플리케이션의 버전 정보, 애플리케이션의 화면 페이지들에 포함된 컨트롤들의 정보, 화면 페이지들 간의 전환 방법 정보, 및 컨트롤들과 애플리케이션에서 제공하는 기능들을 매칭한 기능 정보 중 적어도 하나를 포함할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 애플리케이션의 화면 구성에 관한 정보를 생성하기 위해, 애플리케이션의 화면 페이지들에 포함된 컨트롤들의 정보를 획득하고, 화면 페이지들에 포함된 컨트롤들과 애플리케이션에서 제공하는 기능들을 매칭한 기능 정보를 생성하고, 화면 페이지들을 호출하는 입력 이벤트를 분석하여 화면 페이지들 간의 전환 방법 정보를 획득할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 애플리케이션의 화면 페이지들에 식별자를 부여하고, 화면 페이지들에 포함된 텍스트 특징을 갖는 제 1 컨트롤 및 이미지 특징을 갖는 제 2 컨트롤을 분석하여 화면 페이지들에 포함된 컨트롤들의 정보를 획득할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 애플리케이션의 화면 페이지들에 포함된 컨트롤들의 정보가 변경되는 경우, 저장된 애플리케이션의 화면 구성에 관한 정보를 갱신할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 정보 획득 방법은, 애플리케이션을 설치하는 단계; 설치된 애플리케이션에 대한 사용자의 이용 형태를 분석하는 단계; 사용자의 이용 형태에 기초하여, 애플리케이션의 화면 구성에 관한 정보를 생성하는 단계; 및 애플리케이션의 화면 구성에 관한 정보를 저장하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 디바이스는, 적어도 하나의 기능의 수행을 요청하는 사용자 입력을 수신하는 사용자 입력부; 및 애플리케이션에서 제공되는 UI 객체에 관한 정보를 정의한 UI 디스크립션을 이용하여, 화면에 표시되는 현재 페이지로부터 적어도 하나의 기능을 제공하는 목적 페이지까지 이동하기 위한 경로를 결정하고, 결정된 경로에 따라 목적 페이지를 호출하고, 목적 페이지를 통해 적어도 하나의 기능을 수행하는 제어부를 포함할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 적어도 하나의 기능을 제공하는 목적 페이지를 결정하고, 화면에 표시되는 현재 페이지를 식별할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 현재 페이지로부터 목적 페이지까지 이동할 수 있는 복수의 경로를 결정하고, 복수의 경로 중 최단 경로를 선택할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 결정된 경로에 따라 적어도 하나의 경유 페이지 및 목적 페이지를 순차적으로 호출할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 결정된 경로에 따라, 제 1 경유 페이지를 호출하고, 제 1 경유 페이지에서 목적 페이지를 호출하기 위한 입력 이벤트를 발생시킬 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, UI 디스크립션을 이용하여, 호출된 제 1 경유 페이지를 검증할 수 있다.
본 발명의 일 실시예에 따른 디바이스는, 적어도 하나의 기능의 수행을 요청하는 사용자 입력이 음성 신호로 수신되는 경우, 음성 신호에 대응하는 음성 데이터를 주기적으로 서버에 전송하고, 서버로부터 음성 데이터를 분석한 결과를 수신하는 통신부를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 사용자 입력부는, 적어도 하나의 기능이 수행되기 위한 조건을 포함하는 사용자 입력을 수신하고, 본 발명의 일 실시예에 따른 디바이스의 제어부는, 조건이 만족되는 경우, 현재 페이지로부터 목적 페이지까지 이동하기 위한 경로를 결정할 수 있다.
본 발명의 일 실시예에 따른 디바이스는, 사용자 입력을 가이드하는 가이드 정보를 표시하는 디스플레이부를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 디바이스는, 애플리케이션에 대응하는 UI 디스크립션을 서버로부터 수신하는 통신부; 및 수신된 UI 디스크립션을 저장하는 메모리를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 제어부는, 애플리케이션에서 제공되는 각 페이지에 식별자를 부여하고, 각 페이지에 포함된 텍스트 객체 및 이미지 객체를 분석한 정보를 이용하여, UI 디스크립션을 생성할 수 있다.
본 발명의 일 실시예에 따른 디바이스의 기능 수행 방법은, 적어도 하나의 기능의 수행을 요청하는 사용자 입력을 수신하는 단계; 애플리케이션에서 제공되는 UI 객체에 관한 정보를 정의한 UI 디스크립션을 이용하여, 화면에 표시되는 현재 페이지로부터 적어도 하나의 기능을 제공하는 목적 페이지까지 이동하기 위한 경로를 결정하는 단계; 결정된 경로에 따라, 목적 페이지를 호출하여 표시하는 단계; 및 목적 페이지를 통해 적어도 하나의 기능을 수행하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 경로를 결정하는 단계는, 적어도 하나의 기능을 제공하는 목적 페이지를 결정하는 단계; 및 화면에 표시되는 현재 페이지를 식별하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 현재 페이지를 식별하는 단계는, 현재 페이지에 포함된 UI 객체에 관한 정보를 UI 디스크립션에 정의된 UI 객체에 관한 정보와 비교한 결과에 기초하여, 현재 페이지를 식별하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 경로를 결정하는 단계는, 현재 페이지로부터 목적 페이지까지 이동할 수 있는 복수의 경로를 결정하는 단계; 및 복수의 경로 중 최단 경로를 선택하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 목적 페이지를 호출하여 표시하는 단계는, 결정된 경로에 따라, 적어도 하나의 경유 페이지 및 목적 페이지를 순차적으로 호출하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 사용자 입력을 수신하는 단계는, 적어도 하나의 기능이 수행되기 위한 조건을 포함하는 사용자 입력을 수신하는 단계를 포함하고, 경로를 결정하는 단계는, 센서를 통해 획득되는 센싱 정보에 기초하여, 조건의 만족 여부를 결정하는 단계; 및 조건의 만족 여부에 따라, 현재 페이지로부터 목적 페이지까지 이동하기 위한 경로를 결정하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 사용자 입력을 수신하는 단계는, 사용자 입력을 가이드하는 가이드 정보를 표시하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 경로를 결정하는 단계는, UI 디스크립션을 획득하는 단계를 포함할 수 있다.
도 1a 및 1b는 본 발명의 일 실시예에 따르는, 애플리케이션을 이용하여 소정 기능을 수행하는 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 이용하여 특정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 획득하는 방법을 설명하기 위한 순서도이다.
도 4는 디바이스가 서버로부터 애플리케이션의 화면 구성 정보를 수신하는 일례를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 생성하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시예에 따르는, 디바이스가 화면 페이지들에 포함된 UI 엘리먼트들의 정보 및 기능 정보를 획득하는 방법을 설명하기 위한 순서도이다.
도 7a 내지 도 7c는 디바이스가 애플리케이션의 각 화면 페이지에 포함된 UI 엘리먼트들을 분석하는 일례를 나타내는 도면이다.
도 8a 및 8b는 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보의 일례를 나타내는 도면이다.
도 9a 및 도 9b는 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들과 애플리케이션에서 제공하는 기능을 매칭한 기능 정보의 일례를 나타내는 도면이다.
도 10a 및 10b는, 본 발명의 일 실시예에 따르는, 웹 브라우저 애플리케이션에 포함된 UI 엘리먼트들의 기능 정보를 설명하기 위한 도면이다.
도 11은, 본 발명의 다른 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 생성하는 방법을 설명하기 위한 순서도이다.
도 12는 화면 구성 정보에 정의되는 액션 정보의 일례를 설명하기 위한 도면이다.
도 13은 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 페이지들 간의 전환 방법 정보를 생성하는 방법을 설명하기 위한 순서도이다.
도 14a 및 도 14b는 화면 페이지들 간의 전환 방법 정보의 일례를 나타내는 도면이다.
도 15는 XML 형태의 화면 구성 정보의 일례를 나타내는 도면이다.
도 16a 내지 16c는, 애플리케이션의 화면 구성 정보의 일례를 나타내는 도면이다.
도 17는 화면 구성 정보에 포함되는 리소스 필터(resource filter)를 설명하기 위한 도면이다.
도 18는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 갱신하는 방법을 설명하기 위한 순서도이다.
도 19a 및 도 19b는 디바이스에 저장된 복수의 애플리케이션의 화면 구성 정보를 설명하기 위한 도면이다.
도 20은 본 발명의 일 실시예에 따르는, 디바이스의 기능 수행 방법을 설명하기 위한 순서도이다.
도 21은 디바이스가 현재 페이지에서 목적 페이지까지 이동하기 위한 경로를 결정하는 일례를 설명하기 위한 도면이다.
도 22a 내지 22e는, 디바이스가 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여 사용자의 음성 입력에 대응하는 기능을 수행하는 일례를 설명하기 위한 도면이다.
도 23은 본 발명의 일 실시예에 따르는, 디바이스가 경유 페이지에 대한 검증을 수행하는 방법을 설명하기 위한 순서도이다.
도 24a는 일반적인 ASR(Automatic Speech Recognition) 방식을 설명하기 위한 도면이고, 도 24b는 Streaming ASR(Automatic Speech Recognition) 방식을 설명하기 위한 도면이다.
도 25는 사용자의 음성 입력이 수신되는 중에 디바이스가 가이드 정보를 제공하는 일례를 나타내는 도면이다.
도 26a 내지 26d는, 디바이스가 복수의 애플리케이션을 통해 사용자의 음성 입력에 대응하는 기능을 수행하는 일례를 설명하기 위한 도면이다.
도 27a, 27b, 및 27c는, 디바이스가 가상의 디스플레이에 경유 페이지를 표시하는 일례를 설명하기 위한 도면이다.
도 28는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 이용하여 사용자에 의해 요청된 특정 기능을 수행한 결과 값을 설명하기 위한 도면이다.
도 29는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 실행 여부에 기초하여 소정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
도 30a 및 30b는, 디바이스가 실행 중인 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 사용자의 음성 입력에 대응하는 기능을 수행하는 일례를 설명하기 위한 도면이다.
도 31은 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 이용하여, 제스처 입력에 대응하는 소정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
도 32은 디바이스가 애플리케이션의 화면 구성 정보를 이용하여, 제스처 입력에 대응하는 소정 기능을 수행하는 일례를 나타내는 도면이다.
도 33는 본 발명의 일 실시예에 따르는, 디바이스가 기 설정된 조건에 기반하여 소정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
도 34는 본 발명의 일 실시예에 따르는, 조건을 설정하는 인터페이스를 설명하기 위한 도면이다.
도 35a, 및 35b는 디바이스가 기 설정된 조건에 기반하여 TV를 제어하는 일례를 나타내는 도면이다.
도 36a 및 36b는 디바이스가 기 설정된 조건에 기반하여 알람 설정을 취소하는 일례를 나타내는 도면이다.
도 37은 디바이스가 기 설정된 조건에 기반하여 알림 메시지를 출력하는 일례를 나타내는 도면이다.
도 38는 본 발명의 일 실시예에 따르는, 디바이스가 가이드 정보를 제공하는 방법을 설명하기 위한 순서도이다.
도 39는 디바이스가 가이드 정보를 제공하는 일례를 나타내는 도면이다.
도 40 및 도 41은 디바이스가 사용자의 취소 입력에 기초하여 기능 수행을 중지하는 일례를 나타내는 도면이다.
도 42및 도 43는 본 발명의 일 실시예에 따르는, 디바이스를 설명하기 위한 블록 구성도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서 “애플리케이션”은 특정한 업무를 수행하기 위해 고안된 일련의 컴퓨터 프로그램 집합을 말한다. 본 명세서에 기술되는 애플리케이션은 다양할 수 있다. 예를 들어, 애플리케이션에는 웹 브라우저, 카메라 애플리케이션, 사전 애플리케이션, 번역 애플리케이션, 데이터 전송 애플리케이션, 음악 재생 애플리케이션, 동영상 재생 애플리케이션, 메시지 애플리케이션, 소셜 커뮤니케이터 애플리케이션, 소셜 미디어 애플리케이션, 지도 애플리케이션, 사진 폴더 애플리케이션, 방송 애플리케이션, 게임 애플리케이션, 운동 지원 애플리케이션, 결제 애플리케이션, 메모 애플리케이션, 캘린더 애플리케이션, 폰 북 애플리케이션 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1a는 본 발명의 일 실시예에 따르는, 애플리케이션을 이용하여 소정 기능을 수행하는 시스템을 설명하기 위한 도면이다.
도 1a에 도시된 바와 같이, 본 발명의 일 실시예에 따른 애플리케이션을 이용하여 소정 기능을 수행하는 시스템은 디바이스(100)를 포함할 수 있다. 그러나 도시된 구성 요소보다 많은 구성 요소에 의해 시스템이 구현될 수도 있다. 예를 들어, 시스템은 디바이스(100) 외에 서버(미도시)를 더 포함할 수도 있다.
본 발명의 일 실시예에 따른 디바이스(100)는, 애플리케이션을 실행하고, 애플리케이션을 통해 특정 기능을 수행하는 장치일 수 있다. 본 발명의 일 실시예에 따른 디바이스(100)는 다양한 형태로 구현될 수 있다. 예를 들어, 본 명세서에서 기술되는 디바이스(100)는, 데스크톱 컴퓨터, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 태블릿 PC, 전자북 단말기, 디지털방송용 단말기, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 네비게이션, MP3 플레이어, 디지털 카메라, IPTV(Internet Protocol Television), DTV(Digital Television), CE 기기(예컨대, 디스플레이 장치를 갖는 냉장고, 에이컨 등) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
본 명세서에서 기술되는 디바이스(100)는 사용자에 의해 착용될 수 있는 장치(wearable device)일 수도 있다. 예를 들어, 본 발명의 일 실시예에 따른 디바이스(100)는 손목 시계, 안경, 반지, 팔찌, 목걸이 등일 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 특정 기능의 수행을 요청하는 사용자의 음성을 수신하기 위한 마이크로폰(미도시)을 포함할 수 있다. 이때, 디바이스(100)는 마이크로폰을 통해 수신되는 음성에 대응하는 특정 기능을 수행할 수 있다. 예를 들어, 디바이스(100)는 소정 애플리케이션을 실행하고, 소정 애플리케이션의 화면 구성 정보를 이용하여, 특정 기능을 수행할 수 있다.
본 명세서에서 애플리케이션의 화면 구성 정보는 디바이스(100)를 통해 애플리케이션에서 제공하는 적어도 하나의 화면 구성(component)에 관한 정보를 의미할 수 있다. 본 발명의 일 실시예에 의하면, 애플리케이션의 화면 구성 정보는 XML(extensible markup language) 형태로 저장될 수도 있고, 테이블 형태로 저장될 수도 있으나, 이에 한정되는 것은 아니다. 본 발명의 일 실시예에 의하면, 애플리케이션의 화면 구성 정보는, 디바이스(100)가 사용자에 의해 요청된 특정 기능을 애플리케이션을 통해 자동으로 수행하는데 이용될 수 있다. 이하에서는 설명의 편의상 애플리케이션의 화면 구성 정보가 UI 디스크립션(user interface description)으로 표현될 수도 있다.
본 발명의 일 실시예에 의하면, 애플리케이션의 화면 구성 정보는 애플리케이션에서 제공하는 각 화면 페이지에 포함되는 UI 엘리먼트들에 관한 정보, UI 엘리먼트들의 기능 정보, 화면 페이지들 간의 전환 방법 정보, 복수의 UI 엘리먼트의 조합 또는 복수의 화면 페이지의 조합에 대응되는 액션(예컨대, 메시지 전송, 모바일 인터넷 전화 연결, 이미지 캡쳐 등)을 정의한 액션 정보 등을 포함할 수 있다. 여기서, UI 엘리먼트는, 사용자에게 보여지는 객체들(텍스트, 이미지, 버튼, 아이콘, 메뉴)일 수 있으며, 예를 들어, UI 엘리먼트는, 사용자가 조작할 수 있는 객체, 사용자에게 정보를 제공하는 객체 등을 포함할 수 있다. 또한, UI 엘리먼트는, 그래픽 유저 인터페이스(graphic user interface, GUI) 객체, 및 캐릭터 유저 인터페이스(Character User Interface, CUI)’객체 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 이하에서는 설명의 편의상 UI 엘리먼트가 컨트롤(control) 또는 UI 객체로 표현될 수도 있다.
본 명세서에서 화면 페이지는 화면을 통해 사용자가 볼 수 있게 구성된 UI 엘리먼트들의 집합일 수 있다. 본 발명의 일 실시예에 의하면, 화면 페이지는 사용자로부터 입력을 받거나 사용자에게 정보를 전달하는 역할을 수행할 수 있다. 본 발명의 일 실시예에 의하면, 하나의 화면 페이지는 한 개 이상의 레이아웃, 뷰, 이벤트로 구성될 수 있으나, 이에 한정되는 것은 아니다.
한편, 애플리케이션은 하나 또는 복수의 화면 페이지들로 구성될 수 있으며, 화면 페이지는, 애플리케이션에 입력 이벤트(예컨대, 실행, 전환, 호출 등)가 발생됨에 따라 나타날 수 있다. 애플리케이션의 화면 구성 정보에 대하여는 후에 좀 더 자세히 살펴보기로 하고, 이하에서는 디바이스(100)에서 화면 구성 정보를 이용하는 일례에 대해서 살펴보기로 한다.
본 발명의 일 실시예에 의하면, 도 1a에 도시된 바와 같이, 사용자는 친구 헨리가 어디 있는지 헨리한테 메시지로 물어봐야겠다고 생각할 수 있다. 이때, 사용자는 디바이스(100)에서 메신저 애플리케이션을 실행하고, 메신저 애플리케이션의 친구 리스트에서 ‘헨리’를 검색하고, 헨리와 대화하기 위한 채팅창을 열어서 텍스트를 입력하고, 전송 버튼을 누를 수 있다.
그러나, 사용자는 직접 디바이스(100)를 조작하는 대신에 디바이스(100)에 메시지 전송을 요청하는 음성을 입력할 수도 있다. 예를 들어, 사용자는 음성 인식 위젯(widget)(10)을 실행하고, 음성 인식 위젯(10)을 통해서 음성 명령(예컨대, ‘톡으로 헨리한테 어디냐고 메시지 보내…’)(20)을 입력할 수 있다. 음성 인식 위젯(10)은, 기 설정된 이벤트가 발생되는 경우에 나타날 수 있다. 예를 들어, 디바이스(100)에 부착된 특정 하드웨어 키가 소정 시간이상 눌리는 이벤트가 발생하는 경우, 디바이스(100)는 음성 인식 위젯(10)을 제공할 수 있다.
여기서, 위젯(widget)은 사용자와 응용프로그램 운영체계와의 상호작용을 원활하게 지원해주는 그래픽 유저 인터페이스(GUI; 그래픽을 통해 작업할 수 있는 환경을 뜻하는 말)의 하나인 미니 애플리케이션(응용프로그램, 소프트웨어)을 의미할 수 있다.
본 발명의 일 실시예에 의하면, 음성 명령(20)이 수신되는 경우, 디바이스(100)는, 사용자가 메신저 애플리케이션을 조작하는 것과 같이, 기 저장된 메신저 애플리케이션의 화면 구성 정보를 이용하여, 자동으로 메신저 애플리케이션을 실행하고, 메신저 애플리케이션의 친구 리스트에서 ‘헨리’를 검색하고, 헨리와 대화하기 위한 채팅창을 열어서 텍스트를 입력하고, 전송 버튼을 누르는 이벤트를 발생시킬 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 기 저장된 애플리케이션의 화면 구성 정보를 이용하여, 현재 페이지부터 목적 페이지까지 각 페이지마다 사용자가 입력하는 것과 같은 입력 이벤트를 자동으로 발생시키므로, 디바이스(100)는, 손으로 디바이스(100)를 직접 조작하는 것과 같은 경험을 사용자에게 제공할 수 있다.
디바이스(100)가 애플리케이션의 화면 구성 정보를 이용하여 특정 기능을 수행하는 방법에 대해서는 도 20을 참조하여 후에 자세히 살펴보기로 한다.
한편, 본 발명의 일 실시예에 의하면, 디바이스(100)는 기 결정된 기능에 대한 음성 명령을 지원하는 오픈 API(open application program interface)를 통해, 특정 기능을 수행할 수도 있다. 이 경우, 디바이스(100)는 오픈 API에 의해 지원되는 일부 기능만을 수행할 수 있다는 한계가 존재한다. 예를 들어, 디바이스(100)는, 오픈 API(open application program interface)에서 제공하지 않는 애플리케이션의 기능을 수행할 수 없다. 도 1b를 참조하기로 한다.
도 1b를 참조하면, 본 발명의 일 실시예에 따르는 디바이스(100)는, 애플리케이션들(11)의 화면 페이지들을 렌더링하는 과정에서 획득되는 정보(예컨대, 화면 페이지에 포함된 UI 엘리먼트들의 식별 정보, UI 엘리먼트들의 속성 정보, UI 엘리먼트들이 제어가능한지에 관한 정보 등, 설명의 편의상 이하 ‘렌더링 정보’라 함) 및 화면 페이지들에 포함된 UI 엘리먼트들의 입력 이벤트 정보(입력 이벤트의 종류, 입력 이벤트에 의해 호출되는 페이지의 식별 정보 등)를 이용하여, 화면 구성 정보를 생성할 수 있다. 그리고 디바이스(100)의 서비스 모듈(12)은, 사용자로부터 음성 명령이 수신되는 경우, 음성 명령을 수행하기 위해, 화면 구성 정보를 이용하여 UI 엘리먼트들에 대한 입력 이벤트를 자동으로 발생시킬 수 있다. 따라서, 본 발명의 일 실시예에 따르는 디바이스(100)의 서비스 모듈(12)은, 사용자의 음성 명령에 응답하여 UI 엘리먼트들에 대응하는 모든 기능들을 API를 통하지 않고 수행할 수 있다. 이때, 디바이스(100)의 서비스 모듈(12)은 소프트웨어 형태 및 하드웨어 형태 중 적어도 하나의 형태로 존재할 수 있다.
예를 들어, 서비스 모듈(12)은 플랫폼(13)의 API를 사용하는 애플리케이션들(11)(예컨대, 3rd Party Application)에서 구현될 수 있다. 또한, 서비스 모듈(12)은, 애플리케이션들(11)과 플랫폼(13) 사이의 미들웨어(Middleware)로 구현될 수 있고, 또는 플랫폼(13) 내부에서 동작하는 모듈로서 구현될 수 있다.
도 1b에서 플랫폼에 포함된 음성 인식 엔진 및 자연어 처리 엔진은, 디바이스(100)의 메모리에 저장되어 있을 수도 있고, 서버에 저장되어 있을 수도 있다. 또한, 도 1b에서 플랫폼에 포함된 UI 렌더러(renderer) 및 사용자 제어 입력기는 디바이스(100)의 메모리에 저장되어 있을 수 있다.
도 2는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 이용하여 특정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
단계 S210에서, 디바이스(100)는, 애플리케이션 별로 애플리케이션의 화면 구성 정보를 획득하고, 저장할 수 있다. 예를 들어, 디바이스(100)는, 애플리케이션의 설치 시 애플리케이션의 화면 구성 정보를 서버로부터 획득할 수도 있고, 사용자의 애플리케이션 이용 형태를 분석하여 직접 애플리케이션의 화면 구성 정보를 생성할 수도 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션의 화면 구성 정보를 애플리케이션 식별 정보와 맵핑하여 스토리지(storage)에 저장할 수 있다. 이때, 디바이스(100)는 애플리케이션의 화면 구성 정보를 비휘발성 메모리(예컨대, 플래쉬 디스크(flash disks))에 저장할 수 있다. 본 발명의 일 실시예에 의하면, 애플리케이션의 화면 구성 정보는 업데이트될 수 있으므로, 디바이스(100)는 애플리케이션의 화면 구성 정보에 대한 버전 정보를 애플리케이션의 화면 구성 정보와 함께 스토리지에 저장할 수도 있다.
단계 S220에서, 디바이스(100)는, 특정 기능 수행을 요청하는 사용자 입력을 수신할 수 있다. 예를 들어, 디바이스(100)는 특정 기능 수행을 요청하는 음성 입력을 수신할 수 있다. 여기서, 특정 기능은, 디바이스(100)에 설치된 애플리케이션에서 제공하는 복수의 기능들 중 적어도 하나의 기능일 수 있다. 예를 들어, 특정 기능은, 메시지 전송 기능, 정보 검색 기능, 통화 연결 기능, 외부 디바이스 제어 기능, 동작 모드 전환 기능, 번역 기능, 사진 전송 기능, 데이터 백업 기능, 이미지 캡쳐 기능, 녹음 기능, 컨텐츠 재생 기능, 텍스트 입력 기능 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
단계 S230에서, 디바이스(100)는, 애플리케이션의 화면 구성 정보를 이용하여 특정 기능을 수행할 수 있다. 예를 들어, 디바이스(100)는, 특정 기능 수행을 요청하는 사용자 입력에 기초하여, 특정 기능을 제공하는 애플리케이션을 선택할 수 있다. 그리고 디바이스(100)는 선택된 애플리케이션의 화면 구성 정보를 스토리지에서 독출할 수 있다. 디바이스(100)는 독출된 애플리케이션의 화면 구성 정보를 이용하여, 특정 기능을 제공하는 적어도 하나의 화면 페이지를 결정할 수 있다. 예를 들어, 디바이스(100)는 화면 구성 정보에 정의된 UI 엘리먼트들의 기능 정보를 이용하여, 특정 기능에 대응하는 UI 엘리먼트가 포함된 화면 페이지들을 선택할 수 있다. 그리고 디바이스(100)는 화면 구성 정보에 정의된 화면 페이지들 간의 전환 방법 정보를 이용하여, 선택된 화면 페이지들을 순차적으로 호출함으로써, 특정 기능을 수행할 수 있다.
본 발명의 다른 실시예에 의하면, 디바이스(100)는, 특정 기능에 매칭되는 액션을 선택할 수 있다. 이때, 액션은 복수의 명령어들의 조합일 수 있다. 예를 들어, 친구를 검색하고, 채팅 페이지를 호출하고, 문자 메시지를 입력하고, 문자 메시지를 전송하는 일련의 명령들의 집합이 하나의 액션으로 정의될 수 있다. 디바이스(100)는, 화면 구성 정보에 정의된 액션 정보를 이용하여, 선택된 액션에 매칭된 복수의 화면 페이지를 선택할 수 있다. 디바이스(100)는, 선택된 복수의 화면 페이지를 순차적으로 호출함으로써, 특정 기능을 수행할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)가 애플리케이션의 화면 구성 정보를 이용하는 경우, 디바이스(100)는, 음성 명령에 따라 애플리케이션에서 제공하는 모든 기능들을 수행할 수 있다. 따라서, 디바이스(100)는, API에서 지원하지 않는 다양한 기능들도 수행이 가능하다.
또한, 디바이스(100)를 사용하기 어려운 시각장애인 또는 운전중인 사용자는, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하는 디바이스(100)를 통해서 여러 단계의 조작이 필요한 특정 기능의 수행 명령을 간단한 입력(예컨대, 음성 입력)으로 대신할 수 있다. 이하에서는, 디바이스(100)가 애플리케이션의 화면 구성 정보를 획득하는 동작에 대해서 도 3을 참조하여 먼저 살펴보고, 디바이스(100)가 애플리케이션의 화면 구성 정보를 이용하여 특정 기능을 수행하는 방법에 대해서 후에 자세히 살펴보기로 한다.
한편, 도 1 및 도 2에서는, 특정 기능의 수행을 요청하는 사용자 입력이 음성 입력인 경우를 예로 들어 설명하였으나, 이에 한정되는 것은 아니다. 본 명세서에서, 특정 기능의 수행을 요청하는 사용자 입력은 음성 입력 이외에도 다양할 수 있다. 예를 들어, 본 명세서에서 사용자 입력은, 제스처 입력(예컨대, 터치 입력, 에어 제스처 입력), 모션 입력, 벤딩 입력, 키 입력, 다중 입력 중 하나일 수도 있다.
명세서 전체에서 "터치 입력"이란 사용자가 디바이스(100)를 제어하기 위해 터치 스크린에 행하는 제스처 등을 의미한다. 예를 들어, 본 명세서에서 기술되는 터치 입력에는 탭, 터치&홀드, 더블 탭, 드래그, 패닝, 플릭, 드래그 앤드 드롭 등이 있을 수 있다.
명세서 전체에서 "터치 입력"이란 사용자가 디바이스를 제어하기 위해 터치 스크린에 행하는 제스처 등을 의미한다. 예를 들어, 본 명세서에서 기술되는 터치 입력에는 탭, 터치&홀드, 더블 탭, 드래그, 패닝, 플릭, 드래그 앤드 드롭 등이 있을 수 있다.
"탭(tap)"은 사용자가 손가락 또는 터치 도구(예컨대, 전자 펜)를 이용하여 화면을 터치한 후 움직이지 않은 채 화면에서 즉시 들어올리는 동작을 나타낸다.
"터치&홀드(touch & hold)"는 사용자가 손가락이나 터치 도구(예컨대, 전자 펜)를 이용하여 화면을 터치한 후 임계 시간(예컨대, 2초) 이상 터치 입력을 유지하는 동작을 나타낸다. 예를 들어, 터치-인 시점과 터치-아웃 시점 간의 시간 차이가 임계 시간(예컨대, 2초) 이상인 경우를 의미한다. 터치 입력이 탭인지 터치&홀드인지를 사용자에게 인식시키도록 하기 위하여 터치 입력이 임계 시간 이상 유지되면 시각적 또는 청각적 또는 촉각적으로 피드백 신호를 제공할 수도 있다. 상기 임계 시간은 구현 예에 따라서 변경될 수 있다.
"더블 탭(double tap)"은 사용자가 손가락이나 터치 도구(예컨대, 전자펜)를 이용하여 화면을 두 번 터치하는 동작을 나타낸다.
"드래그(drag)"는 사용자가 손가락이나 터치 도구를 화면에 터치한 후 터치를 유지한 상태에서 손가락이나 터치 도구를 화면 내의 다른 위치로 이동시키는 동작을 의미한다. 드래그 동작으로 인하여 오브젝트가 이동되거나 후술할 패닝 동작이 수행된다.
"패닝(panning)"은 사용자가 오브젝트를 선택하지 않고 드래그 동작을 수행하는 경우를 나타낸다. 패닝은 특정 오브젝트를 선택하지 않기 때문에 오브젝트가 페이지 내에서 이동되는 것이 아니라 페이지 자체가 화면 내에서 이동하거나, 오브젝트의 그룹이 페이지 내에서 이동한다.
"플릭(flick)"은 사용자가 손가락이나 터치 도구를 이용하여 임계 속도(예컨대, 100 pixel/s) 이상으로 드래그하는 동작을 나타낸다. 손가락이나 터치 도구의 이동 속도가 임계 속도(예컨대, 100 pixel/s) 이상인지에 기초하여 드래그(또는 패닝)와 플릭을 구별할 수 있다.
"드래그 앤드 드롭(drag & drop)"은 사용자가 손가락이나 터치 도구를 이용해 오브젝트를 화면 내 소정 위치에 드래그한 후 놓는 동작을 의미한다.
“핀치(pinch)”는 사용자가 두 손가락을 화면 위에 터치한 상태에서 서로 다른 방향으로 움직이는 동작을 나타낸다. 오브젝트 또는 페이지의 확대(Pinch Open) 또는 축소(Pinch Close)를 위한 제스처이며, 두 손가락의 거리에 따라 확대 값이나 축소 값이 결정된다.
“스와이프(swipe)”는 손가락이나 터치 도구로 화면 위의 오브젝트를 터치한 상태에서 수평 또는 수직 방향으로 일정 거리를 움직이는 동작이다. 사선 방향의 움직임은 스와이프 이벤트로 인식되지 않을 수 있다.
명세서 전체에서 "에어 제스처 입력”이란 디바이스(100)를 제어하기 위해 디바이스(100)로부터 일정 거리 위의 공중에서 디바이스(100)에 행하는 제스처를 의미할 수 있다. 본 발명의 일 실시예에 의하면, 디바이스(100)는 카메라와 센서를 이용하여 사용자의 비접촉 제스처를 감지할 수 있다.
명세서 전체에서 "모션 입력"은, 사용자가 디바이스(100)를 제어하기 위해 디바이스(100)에 가하는 모션을 의미한다. 예를 들어, 모션 입력은, 사용자가 디바이스(100)를 회전시키거나, 디바이스(100)를 기울이거나, 디바이스(100)를 상하좌우로 이동시키는 입력을 포함할 수 있다. 디바이스(100)는, 가속도 센서(Acceleration sensor), 기울기 센서(tilt sensor), 자이로 센서(Gyro sensor), 자기장 센서(3-axis Magnetic sensor) 등을 이용하여, 사용자에 의해 기 설정된 모션 입력을 감지할 수 있다.
명세서 전체에서 "벤딩 입력"은, 디바이스(100)가 플렉서블 디스플레이 장치인 경우, 사용자가 디바이스(100)를 제어하기 위해 디바이스(100)의 전체 또는 일부 영역을 구부리는 입력을 의미한다. 본 발명의 일 실시예에 의하면, 디바이스(100)는 벤딩 센서를 이용하여, 벤딩 위치(좌표 값), 벤딩 방향, 벤딩 각도, 벤딩 속도, 벤딩 횟수, 벤딩 동작 발생 시점, 벤딩 동작 유지 시간 등을 감지할 수 있다.
명세서 전체에서 “키 입력”은 사용자가 디바이스(100)에 부착된 물리적인 키를 이용하여, 디바이스(100)를 제어하는 입력을 의미한다.
명세서 전체에서 “다중 입력”은, 적어도 둘 이상의 입력 방식이 결합된 것을 의미한다. 예를 들어, 디바이스(100)는, 사용자의 터치 입력 및 모션 입력을 수신할 수도 있고, 사용자의 터치 입력 및 음성 입력을 수신할 수도 있다. 또한, 디바이스(100)는 사용자의 터치 입력 및 안구 입력을 수신할 수도 있다. 안구 입력은 디바이스(100)를 제어하기 위해 사용자가 눈의 깜빡임, 응시 위치, 안구의 이동 속도 등을 조절하는 입력을 의미한다.
이하에서는 설명의 편의상 특정 기능의 수행을 요청하는 사용자 입력이 음성 입력인 경우를 주로 예로 들어 설명하기로 한다.
도 3은 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 획득하는 방법을 설명하기 위한 순서도이다.
단계 S310에서, 디바이스(100)는, 애플리케이션을 설치할 수 있다. 예를 들어, 디바이스(100)는 서버로부터 애플리케이션을 설치하기 위한 정보를 수신하고, 수신된 정보에 기반하여 애플리케이션을 설치할 수 있다.
단계 S320에서, 디바이스(100)는, 애플리케이션 설치 시 애플리케이션의 화면 구성 정보의 획득 여부를 판단할 수 있다. 예를 들어, 애플리케이션 개발자(또는 제공자)가 애플리케이션 생성 시에 함께 생성한 애플리케이션의 화면 구성 정보를 수신하는 경우, 디바이스(100)는, 애플리케이션의 화면 구성 정보를 획득했다고 판단할 수 있다.
본 발명의 일 실시예에 의하면, 애플리케이션 개발자(또는 제공자)가 애플리케이션 생성 시에 함께 생성한 애플리케이션의 화면 구성 정보는, 애플리케이션 파일 또는 애플리케이션에 관한 설치 파일에 포함되어 있을 수 있다.
또한, 애플리케이션 개발자(또는 제공자)가 서버에 애플리케이션 파일과 함께 애플리케이션의 화면 구성 정보도 등록한 경우, 디바이스(100)는, 서버로부터 애플리케이션 파일 다운로드 시에 애플리케이션의 화면 구성 정보도 함께 다운로드할 수 있다.
단계 S330에서, 디바이스(100)는, 애플리케이션 설치 시 애플리케이션의 화면 구성 정보가 획득되지 않은 경우, 설치된 애플리케이션의 화면 구성 정보(UI 디스크립션)를 서버에 요청할 수 있다. 서버는, 요청에 응답하여 애플리케이션의 화면 구성 정보(UI 디스크립션)를 확인(identify)할 수 있다.
본 발명의 일 실시예에 의하면, 서버에 애플리케이션의 화면 구성 정보(UI 디스크립션)가 존재하는 경우, 서버는 애플리케이션의 화면 구성 정보(UI 디스크립션)를 디바이스(100)에 전송할 수 있다.
한편, 서버는, 디바이스(100)에 설치된 애플리케이션의 버전 정보를 확인하고, 애플리케이션의 버전에 맞는 화면 구성 정보를 전송할 수 있다. 애플리케이션의 버전에 일치하는 화면 구성 정보가 복수 개인 경우, 서버는 애플리케이션의 버전에 일치하는 복수 개의 화면 구성 정보 중에 최신 버전의 화면 구성 정보를 디바이스(100)로 전송할 수 있다.
한편, 서버에 애플리케이션의 화면 구성 정보(UI 디스크립션)가 존재하지 않는 경우, 서버는 시뮬레이터를 이용하여 애플리케이션의 화면 구성 정보(UI 디스크립션)를 생성할 수 있다. 예를 들어, 서버는, 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들 중에서 사용자에 의해 제어 가능한 (예컨대, clickable) UI 엘리먼트들을 추출할 수 있다. 서버는, 추출된 UI 엘리먼트들 각각에 대해 사용자 입력이 발생되었음을 가정하고, 사용자 입력에 따른 애플리케이션의 화면 페이지 변화 등을 분석하여 화면 구성 정보를 생성할 수 있다.
본 발명의 일 실시예에 의하면, 서버에 애플리케이션의 화면 구성 정보(UI 디스크립션)가 존재하지 않는 경우, 서버는 화면 구성 정보(UI 디스크립션)가 존재하지 않는다는 정보를 디바이스(100)에 전송할 수도 있다.
단계 S340에서, 디바이스(100)는 서버로부터 애플리케이션의 화면 구성 정보(UI 디스크립션)의 수신 여부를 결정할 수 있다. 디바이스(100)는, 소정 시간 동안 애플리케이션의 화면 구성 정보(UI 디스크립션)가 서버로부터 수신되지 않는 경우, 서버에 애플리케이션의 화면 구성 정보(UI 디스크립션)가 존재하지 않는다고 판단할 수 있다. 또한, 디바이스(100)는, 서버로부터 화면 구성 정보(UI 디스크립션)가 존재하지 않는다는 정보를 수신할 수도 있다.
단계 S350에서, 디바이스(100)는, 서버로부터 애플리케이션의 화면 구성 정보(UI 디스크립션)를 수신하지 못한 경우, 애플리케이션의 화면 페이지에 대한 사용자 입력을 분석하여 애플리케이션의 화면 구성 정보(UI 디스크립션)를 직접 생성할 수 있다. 예를 들어, 디바이스(100)는, 애플리케이션의 제 1 화면 페이지에서 사용자에 의해 선택된 적어도 하나의 UI 엘리먼트의 식별 정보 및 상기 선택에 의해 전환된 적어도 하나의 제 2 화면 페이지에 관한 정보에 기초하여, 애플리케이션의 화면 구성 정보를 생성할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 화면 페이지들에 포함된 UI 엘리먼트들의 정보, UI 엘리먼트들의 기능 정보, 화면 페이지들 간의 전환 방법 정보를 포함하는 화면 구성 정보를 생성할 수 있다.
디바이스(100)는 사용자에 의해 선택된 제 1 UI 엘리먼트에 대한 텍스트(예컨대, 1:1 채팅)를 분석하여 제 1 UI 엘리먼트의 기능(예컨대, 채팅)을 추론할 수 있다. 또한, 디바이스(100)는 제 1 UI 엘리먼트에 대한 문자 인식 결과 및 제 2 화면 페이지에 관한 정보(예컨대, 제 2 화면 페이지에 포함된 제 2 UI 엘리먼트들의 식별 정보, 제 2 UI 엘리먼트들의 종류, 제 2 UI 엘리먼트들의 속성 등)를 이용하여 제 1 UI 엘리먼트의 기능 또는 제 2 화면 페이지의 기능을 추론할 수 있다.
디바이스(100)는, 제 1 화면 페이지에서 제 2 화면 페이지로 전환되기 위한 방법 정보를 생성할 수 있다. 예를 들어, 디바이스(100)는, 제 1 UI 엘리먼트의 식별 정보 및 제 1 UI 엘리먼트를 제어하기 위한 입력의 종류(예컨대, 클릭)를 이용하여, 제 1 화면 페이지와 제 2 화면 페이지 간의 전환 방법 정보(예컨대, 제 1 UI 엘리먼트를 클릭하는 경우 제 1 화면 페이지에서 제 2 화면 페이지로 전환된다는 정보)를 생성할 수 있다.
본 발명의 다른 실시예에 의하면, 디바이스(100)는, 적어도 하나의 액션 정보를 포함하는 화면 구성 정보를 생성할 수도 있다. 예를 들어, 디바이스(100)는, 복수의 사용자 입력에 따라 연속적으로 전환되는 적어도 하나의 화면 페이지들의 식별 정보를 특정 액션으로 정의할 수 있다.
예컨대, 사용자가 친구에게 문자 메시지를 전송하기 위해 제 1 페이지에서 제 1 버튼을 클릭하고, 제 1 버튼의 클릭에 의해 표시된 제 2 페이지에서 제 2 버튼을 클릭하고, 제 2 버튼의 클릭에 의해 표시된 제 3 페이지에서 메시지를 입력하고, 제 3 페이지에 포함된 제 3 버튼을 클릭하는 경우, 디바이스(100)는, 제 1 페이지에서 제 1 버튼을 클릭하고 제 2 페이지에서 제 2 버튼을 클릭하고, 제 3 페이지에 포함된 제 3 버튼을 클릭하는 일련의 입력들을 하나의 액션으로 정의할 수 있다.
이때, 디바이스(100)는, 제 1 버튼(친구 이름)의 기능, 제 2 버튼(1:1 채팅)의 기능, 제 3 버튼(전송)의 기능을 분석하여, 사용자가 수행하고자 하는 액션이 ‘친구에게 문자 전송’이라는 것을 도출할 수 있다. 그리고 디바이스(100)는, 제 1 페이지의 식별 정보, 제 1 버튼의 식별 정보, 제 2 페이지의 식별 정보, 제 2 버튼의 식별 정보, 제 3 페이지의 식별 정보, 및 제 3 버튼의 식별 정보를 ‘친구에게 문자 전송’이라는 액션과 매칭하고, 매칭 정보를 화면 구성 정보에 추가할 수 있다.
디바이스(100)에서 애플리케이션의 화면 구성 정보(UI 디스크립션)를 직접 생성하는 동작에 대해서는 도 5를 참조하여, 후에 자세히 살펴보기로 한다.
단계 S360에서, 디바이스(100)는, 서버로부터 수신된 화면 구성 정보(UI 디스크립션) 또는 디바이스(100)에서 생성된 화면 구성 정보(UI 디스크립션)을 메모리(예컨대, 비휘발성 메모리)에 저장할 수 있다. 애플리케이션의 화면 구성 정보(UI 디스크립션)는 파일 형태로 저장될 수 있다. 또한, 애플리케이션의 화면 구성 정보(UI 디스크립션)는 애플리케이션의 식별 정보와 매핑되어 저장될 수 있다. 이 경우, 디바이스(100)는 애플리케이션의 식별 정보에 기초하여 복수의 애플리케이션 각각에 대응하는 화면 구성 정보를 관리할 수 있다.
도 4는 디바이스가 서버로부터 애플리케이션의 화면 구성 정보를 수신하는 일례를 설명하기 위한 도면이다.
도 4를 참조하면, 디바이스(100)는 서버(200)로부터 설치 정보를 수신하여, 채팅 애플리케이션(400)을 설치할 수 있다(S401). 디바이스(100)는, 채팅 애플리케이션(400)을 설치한 후 또는 채팅 애플리케이션(400)의 설치 중에, 채팅 애플리케이션(400)의 화면 구성 정보(UI 디스크립션)가 디바이스(100)에 저장되어 있는지 판단할 수 있다.
판단 결과, 디바이스(100)에 채팅 애플리케이션(400)의 화면 구성 정보(UI 디스크립션)가 저장되어 있지 않은 경우, 디바이스(100)는 채팅 애플리케이션(400)의 화면 구성 정보(UI 디스크립션)를 서버(200)에 요청할 수 있다(S402). 예를 들어, 디바이스(100)는 채팅 애플리케이션(400)의 식별 정보를 서버(200)에 전송하면서, 채팅 애플리케이션(400)의 화면 구성 정보(UI 디스크립션)를 요청할 수 있다.
서버(200)는 채팅 애플리케이션(400)의 식별 정보에 기초하여, 채팅 애플리케이션(400)의 화면 구성 정보(UI 디스크립션)를 데이터베이스에서 독출(read)할 수 있다.
또한, 디바이스(100)는 채팅 애플리케이션(400)에 가상의 입력 이벤트를 적용한 시뮬레이션 결과에 기초하여 채팅 애플리케이션의 화면 구성 정보를 생성할 수도 있다.
서버(200)는 채팅 애플리케션(400)의 화면 구성 정보(UI 디스크립션)를 디바이스(100)로 전송할 수 있다(S403). 디바이스(100)는, 서버(200)로부터 수신된 채팅 애플리케이션(400)의 화면 구성 정보(UI 디스크립션)를 채팅 애플리케이션(400)의 식별 정보와 매핑하여 메모리에 저장할 수 있다.
도 5는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 생성하는 방법을 설명하기 위한 순서도이다. 도 5에서는, 도 3의 단계 S350(디바이스(100)가 화면 구성 정보를 생성하는 동작)에 대해서 좀 더 자세히 살펴보기로 한다.
단계 S510에서, 디바이스(100)는, 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보를 획득할 수 있다. 위에서 살펴본 바와 같이, UI 엘리먼트들은 사용자에게 보여지거나 사용자에 의해 제어 가능한 객체들(텍스트, 이미지, 버튼, 아이콘, 메뉴)일 수 있다. 또한, UI 엘리먼트들의 정보는, UI 엘리먼트의 식별 정보 및 UI 엘리먼트의 속성 정보를 포함할 수 있다. 예를 들어, UI 엘리먼트들의 정보는, UI 엘리먼트의 종류, UI 엘리먼트의 특성(예컨대, 텍스트 특성 또는 이미지 특성), UI 엘리먼트의 식별 값(예컨대, 리소스 ID), UI 엘리먼트의 위치(좌표 값), UI 엘리먼트의 크기, UI 엘리먼트가 사용자에 의해 제어 가능한지 여부, UI 엘리먼트를 제어하기 위한 입력 이벤트의 종류, UI 엘리먼트를 나타내는 텍스트 등을 포함할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 화면 페이지(실행 화면)를 디스플레이부에 표시하기 위한 렌더링 과정에서 획득하게 되는 정보(이하, ‘렌더링 정보’라 함)를 이용하여, 화면 페이지에 포함된 UI 엘리먼트들의 정보를 획득할 수 있다. 여기서, 렌더링이란 2차원 그래픽스에서는 완료된 화상을 생성하는 최종 화상 처리 공정을, 3차원 그래픽스에서는 컴퓨터 안에 기록되어 있는 모델 데이터를 디스플레이부에 묘화(描畵)할 수 있도록 영상화하는 것을 의미할 수 있다.
렌더링 과정에서 획득하게 되는 정보(렌더링 정보)에는 UI 엘리먼트들의 종류, UI 엘리먼트들의 특성(예컨대, 텍스트 특성 또는 이미지 특성), UI 엘리먼트들의 식별 값(예컨대, 리소스 ID), UI 엘리먼트들의 위치(좌표 값), UI 엘리먼트들의 크기, UI 엘리먼트들이 사용자에 의해 제어 가능한지 여부, UI 엘리먼트들을 제어하기 위한 입력 이벤트의 종류, UI 엘리먼트들을 나타내는 텍스트 등이 있을 수 있다.
따라서, 본 발명의 일 실시예에 의하면, 디바이스(100)는, 제 1 화면 페이지에 포함된 제 1 UI 엘리먼트를 렌더링하기 위해 획득되는 정보를 제 1 UI 엘리먼트에 관한 정보로 정의할 수 있다.
예를 들어, 디바이스(100)는, 제 1 버튼을 포함하는 제 1 화면 페이지가 표시되는 경우, 제 1 화면 페이지를 렌더링하는 과정에서 획득된 렌더링 정보를 이용하여, 제 1 버튼의 위치, 제 1 버튼의 리소스 ID, 제 1 버튼을 선택하는 입력 이벤트 정보(예컨대, 클릭), 제 1 버튼을 나타내는 텍스트(예컨대, 통화) 등을 수집할 수 있다. 그리고 디바이스(100)는 수집된 제 1 버튼의 정보를 애플리케이션의 화면 구성 정보(UI 디스크립션) 안에 정의할 수 있다.
단계 S520에서, 디바이스(100)는, 화면 페이지들에 포함된 UI 엘리먼트들과 기능을 매칭한 기능 정보를 생성할 수 있다. 본 발명의 일 실시예에 의하면, 기능(function)은 애플리케이션의 화면 구성 정보에서 ‘feature’로 정의될 수도 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, UI 엘리먼트를 나타내는 텍스트 정보, UI 엘리먼트에 대한 문자 인식 결과 정보, 및 UI 엘리먼트를 선택하는 입력에 따라 새롭게 표시되는 화면 페이지에 관한 정보 중 적어도 하나를 분석하여, UI 엘리먼트들의 기능 정보를 생성할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 단계 S510에서 획득된 UI 엘리먼트들의 정보를 이용하여, 기능 정보를 생성할 수 있다.
예를 들어, 디바이스(100)는, UI 엘리먼트들의 정보에서 제 1 UI 엘리먼트를 나타내는 텍스트 정보를 추출할 수 있다. 디바이스(100)는 추출된 텍스트 정보를 분석하여, 제 1 UI 엘리먼트의 기능을 정의할 수 있다.
한편, 디바이스(100)는, UI 엘리먼트들의 정보에서 제 1 UI 엘리먼트를 나타내는 텍스트 정보를 추출할 수 없는 경우, 디바이스(100)는, 제 1 UI 엘리먼트에 대한 문자 인식을 수행하거나, 서버(200)의 기계 학습 알고리즘을 이용하여, 제 1 UI 엘리먼트의 기능을 정의할 수도 있다. 디바이스(100)가 기능 정보를 생성하는 동작에 대해서는 도 6을 참조하여 잠시 후에 좀 더 자세히 살펴보기로 한다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 기능 정보 생성시, UI 엘리먼트의 기능을 소정 명령어와 맵핑할 수도 있다. 따라서, 본 발명의 일 실시예에 의하면, 애플리케이션의 기능 정보는, 화면 페이지의 식별 정보, UI 엘리먼트의 식별 정보, 기능 명, 명령어 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
단계 S530에서, 디바이스(100)는, 애플리케이션의 화면 페이지들 간의 전환 방법 정보를 획득할 수 있다. 예를 들어, 사용자 입력에 따라 제 1 화면 페이지가 제 2 화면 페이지로 전환되는 경우, 디바이스(100)는 사용자 입력 (예컨대, 클릭, 버튼 선택 등)을 분석하여, 제 1 화면 페이지에서 제 2 화면 페이지로 전환하기 위한 입력 이벤트 정보(예컨대, 제 1 화면 페이지에 포함된 제 1 버튼 클릭)를 포함하는 화면 페이지들 간의 전환 방법 정보를 획득할 수 있다. 단계 S530에 대하여는 도 13을 참조하여 후에 좀 더 구체적으로 살펴보기로 한다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 화면 페이지들에 포함된 UI 엘리먼트들의 정보, 화면 페이지들에 포함된 UI 엘리먼트들과 애플리케이션에서 제공하는 기능을 매칭한 기능 정보, 및 화면 페이지들 간의 전환 방법 정보를 이용하여, 애플리케이션의 화면 구성 정보를 생성할 수 있다.
또한, 본 발명의 일 실시예에 의하면, 디바이스(100)는, 애플리케이션의 화면 구성 정보에 애플리케이션 정보(예컨대, 애플리케이션의 명칭, 애플리케이션의 버전, 애플리케이션의 식별코드 등), 화면 구성 정보의 버전 등을 더 포함시킬 수도 있다.
도 6은 본 발명의 일 실시예에 따르는, 디바이스가 화면 페이지들에 포함된 UI 엘리먼트들의 정보 및 기능 정보를 획득하는 방법을 설명하기 위한 순서도이다.
단계 S610에서, 디바이스(100)는 애플리케이션의 제 n 페이지를 표시할 수 있다. 예를 들어, 디바이스(100)는 애플리케이션을 실행하는 요청을 수신하고, 애플리케이션을 실행할 수 있다. 이 경우, 애플리케이션을 구성하는 복수의 화면 페이지들 중에서 제 n 페이지가 표시될 수 있다.
단계 S620에서, 디바이스(100)는, 제 n 페이지에 식별자(ID)를 부여할 수 있다. 예를 들어, 디바이스(100)는 현재 화면에 표시되는 제 n 페이지에 특정 식별자(ID)를 부여할 수 있다. 본 발명의 일 실시예에 의하면, 제 n 페이지에 부여되는 식별자(ID: Identifier)는, 텍스트, 숫자 또는 기호이거나, 텍스트, 숫자, 기호의 조합일 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션에서 제공되는 화면 페이지마다 식별자를 부여할 수 있다. 이때, 디바이스(100)는, 화면 페이지마다 자동으로 식별자를 부여할 수도 있고, 사용자 입력에 기초하여 화면 페이지에 식별자를 부여할 수도 있다. 예를 들어, 디바이스(100)는 기 설정된 규칙에 따라 화면 페이지마다 자동으로 식별자를 부여할 수 있다. 또한, 디바이스(100)는, 사용자가 지정하는 식별자를 해당 화면 페이지에 부여할 수도 있다.
단계 S630에서, 디바이스(100)는, 제 n 페이지 내에서 사용자에 의해 선택된 UI 엘리먼트가 텍스트 특성을 갖는지 판단할 수 있다. 예를 들어, 사용자에 의해 선택된 UI 엘리먼트가, 뉴스 텍스트, 사용자 프로필 등인 경우, UI 엘리먼트는 텍스트 특성을 가질 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 애플리케이션을 구동하기 위한 플랫폼(또는 OS)과 애플리케이션 간에 상호 주고받는 정보에 기초하여, UI 엘리먼트가 텍스트 특성을 갖는지 판단할 수 있다. 예를 들어, 애플리케이션에서, 제 n 페이지에 포함된 UI 엘리먼트들에 관한 정보를 렌더링부에 전달하면서, 현재 페이지(제 n 페이지)를 표시해 달라고 요청할 수 있다. 이 경우, 디바이스(100)는 렌더링부가 가지고 있는 UI 엘리먼트들에 관한 정보를 제 n 페이지의 ID와 매칭하여 제 n 페이지의 정보로 정의할 수 있다. 그리고 디바이스(100)는 UI 엘리먼트들에 관한 정보 중에서 사용자에 의해 선택된 UI 엘리먼트를 나타내는 텍스트 정보를 추출할 수 있다.
단계 S640에서, 디바이스(100)는, 사용자에 의해 선택된 UI 엘리먼트를 나타내는 텍스트를 분석할 수 있다. 예를 들어, 디바이스(100)는, UI 엘리먼트들에 관한 정보로부터 사용자에 의해 선택된 UI 엘리먼트를 나타내는 텍스트 정보가 추출되는 경우, 추출된 텍스트 정보를 분석할 수 있다. 이때, 디바이스(100)는 UI 엘리먼트를 나타내는 텍스트 자체를 UI 엘리먼트의 기능으로 정의할 수 있다. 예를 들어, 제 1 버튼을 나타내는 텍스트가 ‘전송(send’)인 경우, 디바이스(100)는 제 1 버튼의 기능을 ‘전송(send)’으로 정의할 수 있다. 한편, 애플리케이션의 화면 구성 정보(UI 디스크립션)에서 텍스트 특성을 갖는 UI 엘리먼트의 종류(Type)는 ‘textview’로 정의될 수 있다.
단계 S650에서, 디바이스(100)는, 사용자에 의해 선택된 UI 엘리먼트가 텍스트 특성 대신에 이미지 특성을 갖는 경우, UI 엘리먼트에 대한 문자 인식(OCR, Optical Character Recognition)을 수행할 수 있다. 예를 들어, 디바이스(100)는, UI 엘리먼트들에 관한 정보로부터 사용자에 의해 선택된 UI 엘리먼트를 나타내는 텍스트 정보가 추출되지 않는 경우, UI 엘리먼트에 대한 문자 인식을 수행할 수 있다.
문자 인식 (OCR, Optical Character Recognition)은 이미지 문서에 포함된 한글, 영문, 숫자 폰트 등을 디바이스(100)에서 편집 가능한 문자 코드로 변환하는 기술을 의미한다.
디바이스(100)는, UI 엘리먼트에 대한 문자 인식에 성공한 경우, 문자 인식 결과를 이용하여, UI 엘리먼트의 기능을 정의할 수 있다. 예를 들어, 제 2 버튼에 대한 문자 인식 결과가 ‘보이스톡(voicetalk)’인 경우, 디바이스(100)는 제 2 버튼의 기능을 ‘보이스톡(voicetalk)’으로 정의할 수 있다.
한편, 제 1 UI 엘리먼트가 이미지 특성을 가지는 경우, 애플리케이션의 화면 구성 정보(UI 디스크립션)에서 제 1 UI 엘리먼트 의 종류(Type)는 ‘imageview’로 정의될 수 있다.
단계 S660에서, 디바이스(100)는, 사용자에 의해 선택된 UI 엘리먼트에 대한 문자 인식에 실패한 경우, 사용자에 의해 선택된 UI 엘리먼트에 대한 분석을 서버(200)에 요청할 수도 있다. 예를 들어, 디바이스(100)는 사용자에 의해 선택된 UI 엘리먼트를 캡쳐하여 캡쳐 이미지를 생성하고, 생성된 캡쳐 이미지를 서버(200)에 전송할 수 있다.
이때, 서버(200)는 기계 학습(machine learning) 알고리즘을 이용하여 이미지 특성을 갖는 UI 엘리먼트에 대한 분석을 수행할 수 있다. 예를 들어, 서버(200)는, 기 저장된 이미지 템플릿과 캡쳐 이미지에 포함된 UI 엘리먼트를 비교할 수 있다. 이때, 서버(200)는, 이미지 템플릿에 포함된 이미지들 중에서 사용자에 의해 선택된 UI 엘리먼트와 가장 유사한 이미지를 사용자에 의해 선택된 UI 엘리먼트로 식별할 수 있다.
예를 들어, 서버(200)는, 캡쳐 이미지에 포함된 제 1 UI 엘리먼트가 사람 모양의 아이콘이고, 이미지 템플릿 목록에 사람 모양의 아이콘이 연락처 탭으로 정의되어 있는 경우, 제 1 UI 엘리먼트를 연락처 탭으로 인식할 수 있다. 또한, 캡쳐 이미지에 포함된 제 1 UI 엘리먼트가 말 줄임표(…)이고, 이미지 템플릿 목록에 말 줄임표가 more 탭으로 정의되어 있는 경우, 서버(200)는, 제 1 UI 엘리먼트를 ‘more 탭’으로 인식할 수 있다.
서버(200)는, 이미지 특성을 갖는 UI 엘리먼트에 대한 분석 정보를 디바이스(100)로 송신할 수 있다. 이때, 디바이스(100)는, 서버(200)로부터 수신된 정보에 기초하여, UI 엘리먼트의 기능을 정의할 수 있다. 예를 들어, 디바이스(100)는, 사람 모양의 제 3 버튼의 기능을 ‘연락처 검색’으로 정의할 수 있다.
단계 S670에서, 디바이스(100)는, UI 엘리먼트의 선택에 의해 제 n 페이지가 제 n+1 페이지로 전환되는 경우, 제 n+1 페이지를 분석할 수도 있다. 예를 들어, 디바이스(100)는 제 n+1 페이지를 렌더링하기 위해 획득되는 정보를 이용하여, 제 n+1 에 포함된 UI 엘리먼트들의 수, 종류, 속성, 위치 등을 분석할 수 있다.
디바이스(100)는, 제 n 페이지에서 사용자에 의해 선택된 UI 엘리먼트에 관한 정보 및 제 n+1 페이지에 관한 정보를 이용하여, UI 엘리먼트의 기능을 정의할 수 있다. 예를 들어, ‘1:1 채팅 버튼’을 선택하는 입력에 기초하여 메시지 입력 창을 포함하는 채팅룸 페이지가 표시되는 경우, 디바이스(100)는 ‘1:1 채팅 버튼’에 관한 정보 및 채팅룸 페이지에 관한 정보를 이용하여, ‘1:1 채팅 버튼’의 기능을 ‘문자 채팅(text chat)’으로 정의할 수 있다.
단계 S680에서, 디바이스(100)는, UI 엘리먼트를 나타내는 텍스트 정보, UI 엘리먼트에 대한 문자 인식 결과 정보, UI 엘리먼트에 대한 서버(200)의 분석 결과 정보, 및 UI 엘리먼트의 선택에 의해 새롭게 표시되는 페이지에 관한 정보 중 적어도 하나를 이용하여, UI 엘리먼트의 기능 정보를 생성할 수 있다.
디바이스(100)는, 단계 S610 내지 S680을 반복하여, 애플리케이션에서 제공하는 각 화면 페이지에 포함된 UI 엘리먼트들에 관한 정보를 애플리케이션의 화면 구성 정보에 모두 정의할 수 있다.
도 7a 내지 도 7c는 디바이스가 애플리케이션의 각 화면 페이지에 포함된 UI 엘리먼트들을 분석하는 일례를 나타내는 도면이다.
도 7a를 참조하면, 디바이스(100)는 제 1 페이지(710)에 대한 고유 ID를 만들고 제 1 페이지(710)에 관한 정보를 저장할 수 있다. 예를 들어, 디바이스(100)는, 제 1 페이지(710)의 고유 ID를 ‘friendListTap’로 정의할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 제 1 페이지(710)에 포함된 UI 엘리먼트들(UI 객체들)을 분석할 수 있다. 예를 들어, 디바이스(100)는 제 1 영역(701)에 포함된 UI 엘리먼트들 및 제 2 영역(702)에 포함된 UI 엘리먼트들을 분석할 수 있다.
제 1 영역(701)에 포함된 UI 엘리먼트들은 이미지 특성을 가지므로, 디바이스(100)는 제 1 영역(701)에 포함된 UI 엘리먼트들에 대한 문자 인식(OCR)을 수행할 수 있다. 이때, 제 1 영역(701)에 포함된 UI 엘리먼트들 은 텍스트를 포함하지 않으므로, 제 1 영역(701)에 포함된 UI 엘리먼트들 에 대한 문자 인식(OCR)은 실패할 수 있다.
디바이스(100)는 문자 인식(OCR)에 실패한 경우, 제 1 영역(701)에 포함된 UI 엘리먼트들들을 캡쳐할 수 있다. 그리고 디바이스(100)는, 캡쳐된 UI 엘리먼트들을 서버(200)로 전송하면서, 캡쳐된 UI 엘리먼트들에 대한 분석을 서버(200)에 요청할 수 있다.
서버(200)는 기계 학습 알고리즘에 기반하여 제 1 영역(701)에 포함된 UI 엘리먼트들을 분석할 수 있다. 예를 들어, 서버(200)는, 제 1 영역(701)에 포함된 UI 엘리먼트들 각각이 ‘people’, ‘chat’, ‘search’, ‘more’를 의미하는 것임을 확인할 수 있다. 서버(200)는, 제 1 영역(701)에 포함된 UI 엘리먼트들에 대한 분석 정보(‘people’, ‘chat’, ‘search’, ‘more’)를 디바이스(100)로 전송할 수 있다.
이 경우, 디바이스(100)는 제 1 영역(701)에 포함된 UI 엘리먼트들에 대한 분석 정보(‘people’, ‘chat’, ‘search’, ‘more’)를 획득할 수 있다. 한편, 디바이스(100)는 렌더링 정보를 이용하여 제 1 영역(701)에 포함된 UI 엘리먼트들이 click 이벤트에 의해 제어됨을 확인할 수 있다.
디바이스(100)는, 제 2 영역(702)에 포함된 UI 엘리먼트들의 리스트를 인식할 수 있다. 제 2 영역(702)에 포함된 UI 엘리먼트들은 텍스트 특성을 가지므로, 디바이스(100)는 제 2 영역(702)에 포함된 UI 엘리먼트들 각각에 대응하는 텍스트의 의미를 분석할 수 있다. 또한, 디바이스(100)는, 사용자의 이용 형태에 기초하여, 제 2 영역(702)에 포함된 UI 엘리먼트들 각각에 대응하는 입력 이벤트로 클릭 또는 롱클릭(Long-click)이 존재함을 확인할 수 있다.
본 발명의 일 실시예에 의하면, 제 1 페이지(710)에 포함된 UI 엘리먼트에 관한 정보는, 후에 살펴볼 도 16a의 제 1 페이지(friendListTap)의 controls에 관한 정보와 같이 정의될 수 있다.
도 7b를 참조하면, 디바이스(100)는 제 2 페이지(720)에 대한 고유 ID를 만들고, 제 2 페이지(720)에 관한 정보를 저장할 수 있다. 예를 들어, 디바이스(100)는, 제 2 페이지(720)의 고유 ID를 ‘friendSummary’로 정의할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 제 2 페이지(720)에 포함된 UI 엘리먼트들을 분석할 수 있다. 예를 들어, 디바이스(100)는 제 2 페이지(720)에 포함되는 UI 엘리먼트들 중 버튼을 인식할 수 있다.
디바이스(100)는, 닉네임이 표시된 제 1 버튼(703) 및 전화 번호가 표시된 제 2 버튼(704)을 인식할 수 있다. 제 1 버튼(703)과 제 2 버튼(704)은 텍스트 특성을 가지므로, 디바이스(100)는 제 1 버튼(703) 과 제 2 버튼(704)에 표시된 텍스트의 의미를 분석할 수 있다. 이 경우, 디바이스(100)는 제 1 버튼(703)과 ‘friendName(김명준)’을 매칭하여 저장할 수 있다. 또한, 디바이스(100)는, 제 2 버튼(704)의 기능을 ‘call(전화번호)’로 정의할 수 있다. 사용자가 제 2 버튼(704)을 선택하는 경우, 제 2 페이지(720)에서 전화 애플리케이션이 연결된다면, 디바이스(100)는 제 2 페이지(720)에 대한 기능 정보에 ‘전화 걸기’를 추가할 수도 있다.
디바이스(100)는, 1:1 채팅 버튼(705) 및 보이스톡 버튼(706)을 인식할 수도 있다. 1:1 채팅 버튼(705) 및 보이스톡 버튼(706)은 텍스트를 포함하므로, 디바이스(100)는, 1:1 채팅 버튼(705) 및 보이스톡 버튼(706)에 표시된 텍스트에 대한 문자 인식을 수행할 수 있다. 이 경우, 디바이스(100)는, 1:1 채팅 버튼(705)의 기능은 ‘chat’으로 정의되고, 보이스톡 버튼(706)의 기능은 ‘voicetalk’으로 정의될 수 있다. 한편, 디바이스(100)는 제 2 페이지(720)에 대한 기능 정보에 ‘1:1 채팅’ 및 ‘보이스톡’을 추가할 수도 있다.
본 발명의 일 실시예에 의하면, 제 2 페이지(720)에 포함된 UI 엘리먼트들에 관한 정보는, 도 16c의 제 5 페이지(friendSummary)의 controls에 관한 정보와 같이 정의될 수 있다.
도 7c를 참조하면, 디바이스(100)는, 제 3 페이지(730)에 대한 고유 ID를 만들고 제 3 페이지(730)에 관한 정보를 저장할 수 있다. 예를 들어, 디바이스(100)는, 제 3 페이지(730)의 고유 ID를 ‘chatRoom’으로 정의할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 제 3 페이지(730)에 포함된 UI 엘리먼트들을 분석할 수 있다. 예를 들어, 디바이스(100)는 친구이름이 표시된 텍스트 객체(707)를 인식할 수 있다. 텍스트 객체(707)는, 텍스트 특성을 가지므로, 디바이스(100)는 텍스트 객체(707)에 표시된 텍스트의 의미를 분석할 수 있다. 디바이스(100)는 텍스트 객체(707)와 ‘friendName(김명준)’을 매칭하여 저장할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 아이콘 객체(708)를 인식할 수도 있다. 아이콘 객체(708)는 이미지 특성을 가지므로, 디바이스(100)는 아이콘 객체(708)에 대한 문자 인식(OCR)을 시도할 수 있다. 이때, 아이콘 객체(708)는 문자를 포함하지 않으므로, 아이콘 객체(708)에 대한 문자 인식(OCR)은 실패할 수 있다.
디바이스(100)는 문자 인식(OCR)에 실패한 경우, 아이콘 객체(708)를 캡쳐할 수 있다. 그리고 디바이스(100)는, 캡쳐된 아이콘 객체(708)를 서버(200)로 전송하면서, 아이콘 객체(708)에 대한 분석을 서버(200)에 요청할 수 있다.
서버(200)는 기계 학습 알고리즘에 기반하여 아이콘 객체(708)를 분석할 수 있다. 예를 들어, 서버(200)는, 아이콘 객체(708)가 ‘more’를 의미하는 것임을 확인할 수 있다. 서버(200)는, 아이콘 객체(708)에 대한 분석 정보(‘more’)를 디바이스(100)로 전송할 수 있다.
이 경우, 디바이스(100)는 아이콘 객체(708)에 대한 분석 정보(‘more’)를 획득할 수 있다. 디바이스(100)는 아이콘 객체(708)의 기능을 ‘more’로 정의하고, 제 3 페이지(730)에 대한 기능 정보에 ‘more’를 추가할 수도 있다.
디바이스(100)는 편집 창(709)을 인식할 수도 있다. 예를 들어, 디바이스(100)는, 사용자가 편집 창(709)에 문자를 입력하는 것을 감지하고, 편집 창(709)을 문자가 입력되는 창으로 인식할 수 있다. 이때, 디바이스(100)는 편집 창(709)의 기능을 ‘문자 입력’으로 정의하고, 제 3 페이지(730)에 대한 기능 정보에 ‘메시지 입력 기능’을 추가할 수도 있다.
디바이스(100)는 전송 버튼(700)을 인식할 수도 있다. 전송 버튼(700)은 텍스트를 포함하므로, 디바이스(100)는 전송 버튼(700)에 포함된 텍스트의 의미를 분석할 수 있다. 이 경우, 디바이스(100)는 전송 버튼(700)의 기능을 ‘전송(send)’으로 정의할 수 있다. 한편, 디바이스(100)는 제 3 페이지(730)에 대한 기능 정보에 ‘전송 기능’을 추가할 수도 있다.
본 발명의 일 실시예에 의하면, 제 3 페이지(730)에 포함된 UI 엘리먼트에 관한 정보는, 도 16b의 제 3 페이지(chatRoom)의 controls에 관한 정보와 같이 정의될 수 있다.
도 8a 및 8b는 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보의 일례를 나타내는 도면이다.
도 8a를 참조하면, 디바이스(100)는, 채팅 애플리케이션의 제 1 페이지(801)가 표시되는 경우, 제 1 페이지(801)에 포함된 제 1 UI 엘리먼트(810) 내지 제 10 UI 엘리먼트(800) 각각을 식별하고, 제 1 UI 엘리먼트(810) 내지 제 10 UI 엘리먼트(800) 각각에 대한 정보를 화면 구성 정보에 정의할 수 있다.
예를 들어, 제 1 UI 엘리먼트(810)는 프레임 레이아웃이므로, 제 1 UI 엘리먼트(810)의 정보는, ‘Type=FrameLayout, ResourceID=cover, isClickable=true’와 같이 정의될 수 있다. 제 2 UI 엘리먼트(820)는 섬네일 이미지이므로, 제 2 UI 엘리먼트(820)의 정보는 ‘Type=ImageView, ResourceID=thumbnail, isClickable=true’와 같이 정의될 수 있다. 제 3 UI 엘리먼트(830)은 선물을 제공하는 버튼이므로, 제 3 UI 엘리먼트(830)의 정보는 ‘Type=ImageView, ResourceID=present, isClickable=true’와 같이 정의될 수 있다.
제 4 UI 엘리먼트(840)은 추가 메뉴를 제공하는 이미지 객체이므로, 제 4 UI 엘리먼트(840)의 정보는 ‘Type=ImageView, ResourceID=more, isClickable=true’와 같이 정의될 수 있다. 제 5 UI 엘리먼트(850)은 친구의 프로필 이미지이므로, 제 5 UI 엘리먼트(850)의 정보는 ‘Type=View, ResourceID=profile, isClickable=true’와 같이 정의될 수 있다.
제 6 UI 엘리먼트(860)은 친구의 닉네임을 나타내는 텍스트이므로, 제 6 UI 엘리먼트(860)의 정보는 ‘Type=TextView, ResourceID=nickname, isClickable=false, isLongClickable=false, isScrollable=false, isFocusable=false’와 같이 정의될 수 있다. 제 7 UI 엘리먼트(870)은 제 1 페이지(801)를 닫는 버튼이므로, 제 7 UI 엘리먼트(870)의 정보는 ‘Type=Button, ResourceID=close, isClickable=true’와 같이 정의될 수 있다.
제 8 UI 엘리먼트(880)은 친구에게 전화하기 위한 버튼이므로, 제 8 UI 엘리먼트(880)의 정보는 ‘Type=Button, ResourceID=dial, isClickable=true’와 같이 정의될 수 있다. 제 9 UI 엘리먼트(890)은 친구와 채팅하기 위한 버튼이므로, 제 9 UI 엘리먼트(890)의 정보는 ‘Type=Button, ResourceID=chat, isClickable=true’와 같이 정의될 수 있다. 제 10 UI 엘리먼트(800)은 채팅 외에 모바일 인터넷전화(mVoIP) 연결 기능을 제공하는 버튼이므로, 제 10 UI 엘리먼트(800)의 정보는 ‘Type=Button, ResourceID=extra, isClickable=true’와 같이 정의될 수 있다.
도 8b를 참조하면, 디바이스(100)는, 제 1 페이지(801)(예컨대, page pageID="friendSummay”)에 포함된 UI 엘리먼트들(810, 820, 830, 840, 850, 860, 870, 880, 890, 800)의 정보를 XML 형태(802)로 생성할 수 있다.
도 9a 및 도 9b는 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들과 애플리케이션에서 제공하는 기능을 매칭한 기능 정보의 일례를 나타내는 도면이다.
도 9a를 참조하면, 디바이스(100)는, 채팅 애플리케이션의 제 1 페이지(900)가 표시되는 경우, 제 1 페이지(900)에 포함된 제 1 UI 엘리먼트(910) 내지 제 4 UI 엘리먼트(940) 각각을 추출하고, 제 1 UI 엘리먼트(910) 내지 제 4 UI 엘리먼트(940) 각각을 애플리케이션에서 제공하는 특정 기능과 매칭할 수 있다.
예를 들어, 제 1 UI 엘리먼트(910)는 제 1 페이지(910)를 닫는 기능을 제공하는 버튼으로, 디바이스(100)는, 제 1 UI 엘리먼트(910)에 대한 기능 정보(901)를 ‘[Feature] close’와 같이 정의할 수 있다. 예를 들어, 디바이스(100)는 제 1 UI 엘리먼트(910)를 렌더링하기 위한 렌더링 정보에서 추출된 텍스트 정보에 기반하여, 제 1 UI 엘리먼트(910)의 기능 정보(901)를 ‘close’로 정의할 수 있다.
제 2 UI 엘리먼트(920)는 친구에게 전화하기 위한 버튼으로, 디바이스(100)는, 제 2 UI 엘리먼트(920)에 대한 기능 정보(902)를 ‘[Feature] dial or 010-XXXX-XXXX’ 와 같이 정의할 수 있다. 예를 들어, 디바이스(100)는 제 2 UI 엘리먼트(920)에 대한 문자 인식 결과를 이용하여 ‘010-XXXX-XXXX’와 같이 기능 정보(902)를 정의할 수 있다. 또한, 디바이스(100)는 제 2 UI 엘리먼트(920)의 선택에 따라 새롭게 표시되는 통화 연결 페이지의 정보에 기초하여, 제 2 UI 엘리먼트(920)의 기능 정보(902)를 ‘dial’로 정의할 수도 있다.
제 3 UI 엘리먼트(930)는 친구와 채팅하기 위한 버튼으로, 디바이스(100)는, 제 3 UI 엘리먼트(930)에 대한 기능 정보(903)를 ‘[Feature] chat or 1:1 채팅’와 같이 정의할 수 있다. 예를 들어, 디바이스(100)는 제 3 UI 엘리먼트(930)에 대한 문자 인식 결과에 기초하여, 제 3 UI 엘리먼트(930)의 기능 정보(903)를 ‘1:1 채팅’으로 정의할 수 있다. 또한, 디바이스(100)는 제 3 UI 엘리먼트(930)의 선택에 의해 새롭게 표시되는 채팅룸 페이지의 정보에 기반하여 제 3 UI 엘리먼트(930)의 기능 정보를 ‘chat’으로 정의할 수도 있다.
제 4 UI 엘리먼트(940)는 채팅 외에 모바일 인터넷전화(mVoIP) 연결 기능을 제공하는 버튼으로, 디바이스(100)는, 제 4 UI 엘리먼트(940)에 대한 기능 정보(904)를 ‘[Feature] extra or 보이스톡’과 같이 정의할 수 있다. 예를 들어, 디바이스(100)는 제 4 UI 엘리먼트(940)를 렌더링하기 위한 렌더링 정보에서 추출된 텍스트 정보에 기반하여, 제 4 UI 엘리먼트(940)의 기능 정보(904)를 ‘extra’로 정의할 수 있다. 또한, 디바이스(100)는 제 4 UI 엘리먼트(940)에 대한 문자 인식 결과에 기반하여, 제 4 UI 엘리먼트(940)의 기능 정보(904)를 ‘보이스톡’으로 정의할 수도 있다.
도 9b를 참조하면, 디바이스(100)는, 사용자 입력에 기초하여 기 정의된 기능 정보를 변경할 수도 있다. 예를 들어, 제 3 UI 엘리먼트(930)에 대한 기능 정보(903)가 ‘[Feature] chat or 1:1 채팅’와 같이 정의되어 있었으나, 사용자가 기능 명칭을 ‘chat 또는 1:1 채팅’에서 ‘대화창열기’로 변경하는 경우, 디바이스(100)는 제 3 UI 엘리먼트(930)에 대한 기능 정보(903)를 ‘[Feature] 대화창열기’(905)로 재 정의할 수 있다.
도 10a 및 10b는, 본 발명의 일 실시예에 따르는, 웹 브라우저 애플리케이션에 포함된 UI 엘리먼트들의 기능 정보를 설명하기 위한 도면이다.
도 10a를 참조하면, 웹 브라우저 애플리케이션은, 화면 페이지에 고정적으로 포함되는 UI 엘리먼트들(1001, 1002, 1003, 1004, 1005, 1006) 및 화면 페이지에서 주기적 또는 비주기적으로 변경되는 UI 엘리먼트들(1007, 100)를 포함할 수 있다. 디바이스(100)는, 화면 페이지에 고정적으로 포함되는 UI 엘리먼트들(1001, 1002, 1003, 1004, 1005, 1006)의 기능 정보를 웹 브라우저의 화면 구성 정보에 정의할 수 있다. 예를 들어, 제 1 UI 엘리먼트(1001)의 기능 정보를 ‘이전 페이지 이동’으로 정의하고, 제 2 UI 엘리먼트(1002)의 기능 정보를 ‘다음 페이지 이동’으로 정의하고, 제 3 UI 엘리먼트(1003)의 기능 정보를 ‘URL 입력’으로 정의하고, 제 4 UI 엘리먼트(1004)의 기능 정보를 ‘정지’로 정의하고, 제 5 UI 엘리먼트(1005)의 기능 정보를 ‘복수의 웹페이지 표시’로 정의하고, 제 6 UI 엘리먼트(1006)의 기능을 ‘북마크’로 정의할 수 있다.
도 10b를 참조하면, 디바이스(100)는, 웹페이지에 포함된 컨텐츠들을 제어할 수 있는 명령어를 화면 구성 정보에 정의할 수도 있다. 예를 들어, ‘클릭’은 컨텐츠 타이틀을 클릭하여, 컨텐츠 전체를 볼 수 있도록 하는 명령어로 정의하고, ‘선택’은 선택된 컨텐츠 타이틀 위에 포커스가 위치하도록 하는 명령어로 정의하고, ‘이전’은 포커스를 이전 컨텐츠 타이틀로 이동 시키는 명령어로 정의하고, ‘다음’은 포커스를 다음 컨텐츠 타이틀로 이동시키는 명령어로 정의할 수 있다.
따라서, 사용자가 제 1 기사 타이틀(1010)에 대해 ‘클릭’이라는 음성 명령을 발화하는 경우(예컨대, 첫 번째 기사 클릭 또는 여야, 국민안전특위 클릭 등), 디바이스(100)는 제 1 기사(1010)를 클릭하여, 제 1 기사(101)의 전체 내용을 표시할 수 있다.
또한, 사용자가 제 3 기사 타이틀(1030)에 대해 ‘선택’이라는 음성 명령을 발화하는 경우(예컨대, 판교 붕괴사고 선택), 디바이스(100)는, 제 3 기사 타이틀(1030) 위에 포커스가 위치하도록 할 수 있다. 이때, 사용자가 ‘이전’이라는 음성 명령을 발화하면, 포커스가 제 3 기사 타이틀(1030)에서 제 2 기사 타이틀(1020)로 이동하고, 사용자가 ‘다음’이라는 음성 명령을 발화하면 포커스가 제 3 기사 타이틀(1030)에서 제 4 기사 타이틀(1040)으로 이동할 수 있다.
도 11은, 본 발명의 다른 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 생성하는 방법을 설명하기 위한 순서도이다. 도 11에서는, 도 3의 단계 S350(디바이스(100)가 화면 구성 정보를 생성하는 동작)에 대해서 좀 더 자세히 살펴보기로 한다.
단계 S1110에서, 디바이스(100)는, 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보를 획득할 수 있다. 위에서 살펴본 바와 같이, UI 엘리먼트들은 사용자에게 보여지거나 사용자에 의해 제어 가능한 객체들(텍스트, 이미지, 버튼, 아이콘, 메뉴)일 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 화면 페이지(실행 화면)를 디스플레이부에 표시하기 위한 렌더링 과정에서 획득하게 되는 정보(이하, ‘렌더링 정보’라 함)를 이용하여, 화면 페이지에 포함된 UI 엘리먼트들의 정보를 획득할 수 있다. 예를 들어, 디바이스(100)는, 제 1 버튼을 포함하는 제 1 화면 페이지가 표시되는 경우, 제 1 화면 페이지를 렌더링하는 과정에서 획득된 렌더링 정보를 이용하여, 제 1 버튼의 위치, 제 1 버튼의 리소스 ID, 제 1 버튼을 선택하는 입력 이벤트 정보(예컨대, 클릭), 제 1 버튼을 나타내는 텍스트(예컨대, 통화) 등을 수집할 수 있다. 그리고 디바이스(100)는 수집된 제 1 버튼의 정보를 애플리케이션의 화면 구성 정보(UI 디스크립션) 안에 정의할 수 있다.
단계 S1120에서, 디바이스(100)는, 화면 페이지들 간의 전환 방법 정보를 획득할 수 있다. 예를 들어, 사용자 입력에 따라 제 1 화면 페이지가 제 2 화면 페이지로 전환되는 경우, 디바이스(100)는 사용자 입력 (예컨대, 클릭, 버튼 선택 등)을 분석하여, 제 1 화면 페이지에서 제 2 화면 페이지로 전환하기 위한 방법 정보를 생성할 수 있다. 이때, 제 1 화면 페이지에서 제 2 화면 페이지로 전환하기 위한 방법 정보에는 입력 이벤트 정보(예컨대, 제 1 화면 페이지에 포함된 제 1 버튼 클릭)가 포함될 수 있다. 단계 S1120에 대하여는 도 13을 참조하여 후에 좀 더 구체적으로 살펴보기로 한다.
단계 S1130에서, 디바이스(100)는, 사용자 입력에 따라 연속적으로 전환된 화면 페이지들의 조합에 대응되는 액션을 정의한 액션 정보를 생성할 수 있다. 예를 들어, 디바이스(100)는, 제 1 화면 페이지에 포함된 제 1 UI 엘리먼트를 선택하는 사용자 입력에 따라 제 1 화면 페이지가 제 2 화면 페이지로 전환되고, 제 2 화면 페이지에 포함된 제 2 UI 엘리먼트를 선택하는 사용자 입력에 따라 제 2 화면 페이지가 제 3 화면 페이지로 전환되는 경우, 제 1 UI 엘리먼트의 기능 정보 및 제 2 UI 엘리먼트의 기능 정보를 이용하여, 사용자에 의해 요청된 액션을 결정할 수 있다.
또한, 디바이스(100)는, 제 1 UI 엘리먼트의 기능 정보 및 제 2 UI 엘리먼트의 기능 정보 외에 제 2 화면 페이지의 정보 및 제 3 화면 페이지의 정보를 더 고려하여, 사용자에 의해 요청된 액션을 결정할 수도 있다. 디바이스(100)는, 제 1 화면 페이지의 식별 정보, 제 2 화면 페이지의 식별 정보, 제 3 화면 페이지의 식별 정보를 상기 결정된 액션과 매칭할 수 있다.
예를 들어, 사용자가 친구에게 문자 메시지를 전송하기 위해, 제 1 페이지에서 제 1 버튼을 클릭하고, 제 1 버튼의 클릭에 의해 표시된 제 2 페이지에서 제 2 버튼을 클릭하고, 제 2 버튼의 클릭에 의해 표시된 제 3 페이지에서 메시지를 입력하고, 제 3 페이지에 포함된 제 3 버튼을 클릭하는 경우, 디바이스(100)는, 제 1 버튼의 기능, 제 2 버튼의 기능, 제 3 버튼의 기능 등을 이용하여, 사용자가 요청하는 액션이 ‘친구에게 메시지 전송’이라는 것을 추론할 수 있다. 이 경우, 디바이스(100)는, 제 1 페이지의 식별 정보, 제 1 버튼의 식별 정보, 제 2 페이지의 식별 정보, 제 2 버튼의 식별 정보, 제 3 페이지의 식별 정보, 제 3 버튼의 식별 정보를 ‘친구에게 메시지 전송’이라는 액션과 매칭하여 저장할 수 있다. 도 12를 참조하여, 액션 정보에 대해 좀 더 알아보기로 한다.
도 12는 화면 구성 정보에 정의되는 액션 정보의 일례를 설명하기 위한 도면이다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 복수의 사용자 입력에 따라 연속적으로 전환되는 적어도 하나의 화면 페이지들의 식별 정보를 특정 액션으로 정의할 수 있다.
예를 들어, 사용자가 제 1 페이지의 제 1 버튼, 제 2 페이지의 제 2 버튼, 제 3 페이지의 제 3 버튼을 순차적으로 클릭하는 경우, 디바이스(100)는 제 1 페이지, 제 2 페이지, 제 3 페이지, 및 제 4 페이지를 순차적으로 표시할 수 있다. 그리고 디바이스(100)는, 제 1 페이지의 식별 정보, 제 1 버튼의 식별 정보, 제 2 페이지의 식별 정보, 제 2 버튼의 식별 정보, 제 3 페이지의 식별 정보, 및 제 3 버튼의 식별 정보, 제 4 페이지의 식별 정보를 제 1 액션(1210)과 매칭하여, 제 1 액션 정보를 생성할 수 있다.
또한, 사용자가 제 1 페이지의 제 1 버튼, 제 2 페이지의 제 4 버튼, 제 5 페이지의 제 5 버튼, 제 6 페이지의 제 6 버튼을 순차적으로 클릭하는 경우, 디바이스(100)는, 제 1 페이지, 제 2 페이지, 제 5 페이지, 제 6 페이지, 제 7 페이지를 순차적으로 표시할 수 있다. 그리고 디바이스(100)는, 제 1 페이지의 식별 정보, 제 1 버튼의 식별 정보, 제 2 페이지의 식별 정보, 제 4 버튼의 식별 정보, 제 5 페이지의 식별 정보, 제 5 버튼의 식별 정보, 제 6 페이지의 식별 정보, 및 제 6 버튼의 식별 정보를 제 2 액션(1220)과 매칭하여, 제 2 액션 정보를 생성할 수 있다.
한편, 사용자가 제 1 페이지의 제 7 버튼, 제 6 페이지의 제 8 버튼, 제 9 페이지의 제 9 버튼, 제 10 페이지의 제 10 버튼을 순차적으로 클릭하는 경우, 디바이스(100)는, 제 1 페이지, 제 6 페이지, 제 9 페이지, 제 10 페이지, 제 11 페이지를 순차적으로 표시할 수 있다. 그리고 디바이스(100)는, 제 1 페이지의 식별 정보, 제 7 버튼의 식별 정보, 제 6 페이지의 식별 정보, 제 8 버튼의 식별 정보, 제 9 페이지의 식별 정보, 제 9 버튼의 식별 정보, 제 10 페이지의 식별 정보, 제 10 버튼의 식별 정보, 및 제 11 페이지의 식별 정보를 제 3 액션(1230)과 매칭하여, 제 3 액션 정보를 생성할 수 있다.
본 발명의 일 실시예에 의하면, 페이지 전환 경로에 따라, 애플리케이션의 화면 구성 정보에 다양한 액션들이 정의될 수 있다.
한편, 제 1 액션(1210)을 의미하는 음성 명령이 수신되는 경우, 디바이스(100)는 제 1 액션 정보를 추출할 수 있다. 그리고 디바이스(100)는, 제 1 액션(1210)에 매칭되어 있는, 제 1 페이지의 식별 정보, 제 1 버튼의 식별 정보, 제 2 페이지의 식별 정보, 제 2 버튼의 식별 정보, 제 3 페이지의 식별 정보, 및 제 3 버튼의 식별 정보, 제 4 페이지의 식별 정보를 확인할 수 있다. 디바이스(100)는, 제 1 액션 정보에 기초하여, 제 1 페이지를 표시하고, 제 1 페이지에서 제 1 버튼을 클릭하는 이벤트를 발생시켜 제 2 페이지를 표시하고, 제 2 페이지에서 제 2 버튼을 클릭하는 이벤트를 발생시켜 제 3 페이지를 표시하고, 제 3 페이지에서 제 3 버튼을 클릭하는 이벤트를 발생시켜 제 4 페이지를 표시하고, 제 4 페이지를 통해 음성 명령에 포함된 특정 기능을 수행할 수 있다.
도 13은 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 페이지들 간의 전환 방법 정보를 생성하는 방법을 설명하기 위한 순서도이다.
단계 S1013에서, 디바이스(100)는, 애플리케이션의 제 n 페이지를 표시할 수 있다. 이때, 제 n 페이지는 애플리케이션을 구성하는 복수의 화면 페이지 중 하나일 수 있다.
단계 S1320에서, 디바이스(100)는, 제 n 페이지에서 제 a 페이지로 전환하는 제 1 입력 이벤트의 발생을 감지할 수 있다. 이때, 제 a 페이지는 애플리케이션을 구성하는 복수의 화면 페이지 중 하나일 수 있으며, 제 n 페이지와 다른 페이지일 수 있다.
단계 S1330에서, 디바이스(100)는, 제 1 입력 이벤트에 기초하여, 제 a 페이지를 호출할 수 있다. 그리고 디바이스(100)는 제 a 페이지를 디스플레이부를 통해 표시할 수 있다.
단계 S1340에서, 디바이스(100)는, 제 1 입력 이벤트에 관한 정보를 제 n 페이지에서 제 a 페이지로의 전환 방법 정보로 저장할 수 있다. 예를 들어, 제 n 페이지에 포함된 제 1 버튼을 터치하는 이벤트에 기초하여, 제 a 페이지가 호출된 경우, 디바이스(100)는, 제 1 버튼에 대한 터치를 제 n 페이지에서 제 a 페이지로의 전환 방법 정보로 저장할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 단계 S1310 내지 단계 S1340을 반복하여 수행함으로써, 애플리케이션을 구성하는 모든 화면 페이지들 간의 전환 방법 정보를 획득할 수 있다. 도 14a 및 도 14b를 참조하여, 디바이스(100)가 화면 페이지들 간의 전환 방법 정보를 획득하는 실시예에 대해서 좀 더 살펴보기로 한다.
도 14a 및 도 14b는 화면 페이지들 간의 전환 방법 정보의 일례를 나타내는 도면이다.
도 14a를 참조하면, 사용자는, 친구와 채팅하기 위해, 디바이스(100)에서 채팅 애플리케이션을 실행시키고, 친구에 대한 요약 정보를 포함하는 제 1 페이지(예컨대, friendSummary) (1410)를 호출하여 표시할 수 있다. 그리고 사용자는 제 1 페이지(1410)에 포함된 1:1 채팅 버튼(1400)을 클릭할 수 있다. 디바이스(100)는, 사용자가 1:1 채팅 버튼(1400)을 클릭하는 입력에 응답하여, 제 2 페이지(예컨대, chatroom)(140)를 표시할 수 있다.
이 경우, 디바이스(100)는, 제 1 페이지(예컨대, friendSummary)(1410)에서 제 2 페이지(예컨대, chatroom)(1420)로의 전환 방법 정보로서, 제 1 페이지(1410)의 1:1 채팅 버튼(1400)을 클릭하는 입력 이벤트 정보를 저장할 수 있다. 예를 들어, 디바이스(100)는 제 1 페이지(예컨대, friendSummary)(1410)에서 제 2 페이지(예컨대, chatroom)(1420)로의 전환 방법 정보를 ‘[Transition] sourceUIPageID=friendSummary, targetUIPage=chatroom, action=Click / [Resource] Type=Button, ResourceID=chat, isClickable=true’(1430)와 같이 생성할 수 있다.
도 14b를 참조하면, 디바이스(100)는, 제 1 페이지(예컨대, friendSummary)(1410)에서 제 2 페이지(예컨대, chatroom)(1420)로의 전환 방법 정보를 XML 형태(1440)로 생성할 수도 있으나, 이에 한정되는 것은 아니다.
도 15는 XML 형태의 화면 구성 정보의 일례를 나타내는 도면이다.
도 7a 내지 도 7c에서 분석된 각 페이지 별 UI 엘리먼트들(UI 객체)에 관한 정보에 기초하여, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)(1500)를 생성할 수 있다. 이때, 도 15를 참조하면, 디바이스(100)는 XML 형태로 애플리케이션의 화면 구성 정보(UI 디스크립션)(1200)를 생성할 수 있다.
XML 형태의 화면 구성 정보(UI 디스크립션)(1500)에는, 화면 구성 정보의 버전(xml version="1.0”), 애플리케이션의 명칭(예컨대, OOO 톡), 애플리케이션의 고유 ID(예컨대, PackageName=com.XXXXX.talk)가 정의 될 수 있으면, 애플리케이션에서 제공하는 각 페이지의 고유 ID (예컨대, <UIPage ID=“uniqueID1”>, <UIPage ID=“uniqueID2”> )도 정의될 수 있다.
한편, XML 형태의 화면 구성 정보(UI 디스크립션)(1500)에는, 각 페이지에 포함되는 UI 엘리먼트들(UI 객체들)에 관한 정보(예컨대, 리소스 아이디, 종류, 트리거 정보)들도 정의될 수 있다. 예를 들어, XML 형태의 화면 구성 정보(1200)에는 제 1 페이지(uniqueID1)에 포함된 UI 엘리먼트들의 정보(<Control resourceID=“friendName” type=“Textview” isClickable=false … />, <Control resourceID=“chat” type=“Button” isClickable=true … /> ), 제 2 페이지(uniqueID2)에 포함된 UI 엘리먼트들의 정보(<Control resourceID=“voicetalk” type=“button” isClickable=true … />, <Control resourceID=“call” type=“Button” isClickable=true … />)가 정의될 수 있다.
본 발명의 일 실시예에 의하면, XML 형태의 화면 구성 정보(1500)는, 페이지들 간의 전환 정보(예컨대, state Machine)도 정의할 수 있다. 예를 들어, XML 형태의 화면 구성 정보(1500)에는, 제 1 페이지(uniqueID1)에서 제 2 페이지(uniqueID2)를 호출하기 위해서는 chat 버튼에 대한 클릭 이벤트가 발생해야 한다는 정보(transition action=“Click” source=“uniqueID1” target=“uniqueID2” resourceID=“chat”)가 정의될 수 있다.
본 발명의 일 실시예에 의하면, XML 형태의 화면 구성 정보(1500)는, 기능 정보(예컨대, Feature Manager)도 정의할 수 있다. 예를 들어, XML 형태의 화면 구성 정보(1500)에는 제 2 페이지(uniqueID2)가 보이스톡 기능을 제공한다는 정보(예컨대, <app Feature name=“보이스톡” UIPage=“uniqueID2” resourceID=“voicetalk” action=“Click” />) 및 제 3 페이지(uniqueID3)에서 메시지 전송 기능을 제공한다는 정보(<app Feature name=“메시지전송” UIPage=“uniqueID3” resourceID=“send” action=“Click” />)가 정의될 수 있다.
한편, 도 15에서는 애플리케이션의 화면 구성 정보가 XML 형태인 경우를 예로 들어 설명하였으나, 애플리케이션의 화면 구성 정보는 XML 이외에 다른 형태로도 생성할 수도 있다. 예를 들어, 애플리케이션의 화면 구성 정보는 JSON(JavaScript Object Notation) 형태로 생성될 수도 있고, 데이터베이스 형태로 생성될 수도 있다. 또한, 도 16a 내지 도 16c에 도시된 바와 같이, 애플리케이션의 화면 구성 정보는 테이블 형태로 생성될 수도 있다.
도 16a 내지 16c는, 애플리케이션의 화면 구성 정보의 일례를 나타내는 도면이다.
도 16a 내지 16c에 도시된 바와 같이, 본 발명의 일 실시예에 의하면, 애플리케이션의 화면 구성 정보(1600)는, 애플리케이션에서 제공되는 각 페이지 별로 각 페이지에 포함된 UI 엘리먼트(UI 객체)의 정보가 정의될 수 있다. 예를 들어, 애플리케이션의 화면 구성 정보(1600)는, 페이지의 식별 정보(1610), UI 엘리먼트(UI 객체)의 정보(1620), 페이지들 간의 전환 방법 정보(1630), 기능 정보(1640) 등을 포함할 수 있다. 이때, UI 엘리먼트(UI 객체)의 정보(1620)는, UI 엘리먼트(UI 객체)의 타입 정보, 리소스 ID 정보 등을 포함할 수 있다. UI 엘리먼트(UI 객체)의 타입에는, 텍스트뷰(TextView), 이미지뷰(ImageView), 탭호스트(TabHost), 탭위젯(TabWidget), 뷰페이저(ViewPager), 프레임레이아웃(FrameLayout), 편집텍스트(EditText) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
채팅 애플리케이션은 제 1 페이지 (FriendListTap), 제 2 페이지 (chatListTap), 제 3 페이지(searchFrendTap), 제 4 페이지(moreTap), 제 5 페이지 (friendSummary), 제 6 페이지 (chatRoom) 등을 제공할 수 있다. 화면 구성 정보(1600)에서 기능 정보(1640)를 참조하면, 디바이스(100)는, 제 1 페이지 (FriendListTap)에서는 친구 정보 확인이 가능하고, 제 5 페이지 (friendSummary)에서는 대화창 열기, 전화 걸기, 보이스톡 기능이 가능하고, 제 6 페이지 (chatRoom)에서는 메시지 전송 기능, 사진 전송 기능 등이 가능하다는 것을 알 수 있다.
UI 엘리먼트(UI 객체)에 관한 정보(1620)를 살펴보면, 제 1 페이지(FriendListTap)는, 제 1 UI 객체 (type="TextView" resourceID= "global_ header_ title_text"), 제 2 UI 객체 (type="TabHost" resourceID="tabhost"), 제 3 UI 객체(type="TabWidget" resourceID="tabs"), 제 4 UI 객체(type="TextView" resourceID="badge"), 제 5 UI 객체(type="ViewPager" resourceID="viewpager") 등을 포함할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)에 포함된 UI 엘리먼트(UI 객체)의 타입 정보 및 리소스 ID 정보에 기반하여, 현재 페이지를 식별할 수 있다. 또한, 디바이스(100)는 애플리케이션의 화면 구성 정보 (UI 디스크립션)에 포함된 UI 엘리먼트(UI 객체)의 타입 정보 및 리소스 ID 정보에 기반하여, 경유 페이지를 검증하거나, 경유 페이지에 대한 업데이트를 수행할 수 있다. 이때, 경유 페이지는 최종 목적 페이지로 가기 위해 중간에 경유하는 목적 페이지로 정의될 수도 있다. 디바이스(100)가 경유 페이지를 검증하는 동작에 대해서는 도 23을 참조하여 후에 자세히 살펴보기로 한다.
한편, 페이지들 간의 전환 방법 정보(1630)를 참조하면, 디바이스(100)는, 제 1 페이지 (FriendListTap)에서 제 2 페이지 (chatListTap)로 이동하거나, 제 1 페이지 (FriendListTap)에서 제 3 페이지(searchFrendTap)로 이동하거나, 제 1 페이지 (FriendListTap)에서 제 4 페이지(moreTap)로 이동하거나, 제 1 페이지 (FriendListTap)에서 제 5 페이지 (friendSummary) 이동하기 위해서는 ‘클릭’ 이벤트가 필요하다는 것을 알 수 있다. 또한, 디바이스(100)는, 제 1 페이지 (FriendListTap)에서 홈 화면으로 이동하기 위해서는 ‘Backkey’를 선택하는 키 이벤트가 필요하다는 것을 알 수 있다.
본 발명의 일 실시예에 의하면, 페이지들 간의 전환 방법 정보(1630)에 포함된 리소스 필터(resource Filter)는, 리소스(예컨대, UI 엘리먼트) 검색에 이용될 수 있다. 리소스 필터에 대해서 도 14를 참조하여, 자세히 살펴보기로 한다.
도 17는 화면 구성 정보에 포함되는 리소스 필터(resource filter)를 설명하기 위한 도면이다. 도 17에서는, 애플리케이션이 채팅 애플리케이션인 경우를 예로 들어 설명하기로 한다.
본 발명의 일 실시예에 의하면, 채팅 애플리케이션의 화면 구성 정보(UI 디스크립션)는, 친구 리스트를 포함하는 제 1 페이지(friendListTap)(1720)에서 친구를 검색하기 위한 리소스 필터(1710)를 포함할 수 있다. 채팅 애플리케이션의 화면 구성 정보에 친구 리스트에 포함된 친구 이름 각각에 대한 고유의 리소스 ID가 정의되어 있지 않으므로, 친구 이름을 검색하기 위한 리소스 필터(1710)가 필요하다.
본 발명의 일 실시예에 의하면, 리소스 필터(1710)는 XML 형태일 수 있으며, 리소스 필터(1710)에는 필터의 종류(예컨대, filterClassType=”TextView”), 필터의 리소스 ID, 사용자에 입력되는 변수(argument)에 따라 필터링 된다는 정보(예컨대, FilterByUserArgument) 등이 포함될 수 있다.
디바이스(100)는, 리소스 필터(1710)를 이용하여, 제 1 페이지(friendListTap)(1720)에 포함된 친구 리스트를 스크롤함으로써, 사용자가 원하는 특징 친구 (예컨대, ‘김명준’) 를 검색할 수 있다.
도 18는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 갱신하는 방법을 설명하기 위한 순서도이다.
단계 S1810에서, 디바이스(100)는, 기 설치된 애플리케이션을 업데이트할 수 있다. 예를 들어, 디바이스(100)는 서버(200)로부터 애플리케이션의 업데이트 정보를 수신하고, 업데이트 정보에 기반하여 애플리케이션을 업데이트할 수 있다. 이때, 애플리케이션의 화면 구성 정보도 갱신될 수 있다.
단계 S1820에서, 디바이스(100)는, 서버(200)에 화면 구성 정보의 최신 버전을 요청할 수 있다.
예를 들어, 디바이스(100)는, 현재 업데이트된 애플리케이션의 버전 정보 및 기 저장된 화면 구성 정보(UI 디스크립션)의 버전 정보를 서버(200)에 전송하면서, 기 저장된 화면 구성 정보(UI 디스크립션)를 최신 버전의 화면 구성 정보(UI 디스크립션)로 갱신해 줄 것을 요청할 수 있다.
본 발명의 일 실시예에 의하면, 서버(200)는, 기 저장된 애플리케이션의 화면 구성 정보(UI 디스크립션)에 대한 버전 정보를 확인하고, 최신 버전의 화면 구성 정보(UI 디스크립션)가 존재하는 경우, 최신 버전의 화면 구성 정보(UI 디스크립션)를 디바이스(100)에 전송할 수 있다.
본 발명의 다른 실시예에 의하면, 서버(200)는 최신 버전의 화면 구성 정보(UI 디스크립션)를 전송하는 대신에 기 저장된 화면 구성 정보(UI 디스크립션)와 최신 버전의 화면 구성 정보(UI 디스크립션)의 차이 정보(예컨대, 기 저장된 화면 구성 정보에 비해 최신버전의 화면 구성 정보에서 업데이트된 부분의 정보)를 디바이스(100)에 전송할 수도 있다.
단계 S1830 및 단계 S1840에서, 서버(200)에 화면 구성 정보(UI 디스크립션)의 최신 버전이 존재하는 경우, 디바이스(100)는, 기 저장된 화면 구성 정보(UI 디스크립션)를 서버(200)로부터 수신된 최신 버전의 화면 구성 정보(UI 디스크립션)로 갱신할 수 있다.
단계 S1850에서, 디바이스(100)는, 서버(200)에 화면 구성 정보(UI 디스크립션)의 최신 버전이 존재하지 않는 경우, 애플리케이션에 대한 사용자 입력을 분석하여, 화면 구성 정보(UI 디스크립션)를 업데이트할 수 있다.
예를 들어, 디바이스(100)는, 화면에 표시된 제 1 페이지가 기존의 제 1 페이지에 비해 제 5 UI 객체를 더 포함하는 경우, 제 5 UI 객체에 대한 분석(예컨대, 입력 이벤트 분석, 기능 분석, 제 5 UI 객체에 연결된 페이지 분석 등)을 수행할 수 있다. 그리고 디바이스(100)는, 제 5 UI 객체에 대한 분석 정보를 애플리케이션의 화면 구성 정보(UI 디스크립션)에 추가함으로써, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 갱신할 수 있다.
도 19a 및 도 19b는 디바이스에 저장된 복수의 애플리케이션의 화면 구성 정보를 설명하기 위한 도면이다.
도 19a를 참조하면, 디바이스(100)는 디바이스(100)에 설치된 복수의 애플리케이션 각각에 대응하는 화면 구성 정보의 목록(1900)을 관리할 수 있다.
화면 구성 정보의 목록(1900)은, 애플리케이션의 고유 ID(패키지 네임)(1910), 애플리케이션의 명칭(1920), 애플리케이션의 버전(1930), 화면 구성 정보의 버전(1940), 사용 횟수 정보(1950), 화면 구성 정보를 제공한 제공자 정보(1960) 등을 포함할 수 있다. 이때, 사용 횟수는, 애플리케이션의 사용 횟수, 화면 페이지의 사용 횟수, 및 기능 사용 횟수 중 적어도 하나일 수 있으나, 이에 한정되는 것은 아니다.
도 19b를 참조하면, 디바이스(100)는, 복수의 애플리케이션 각각에 대응하는 화면 구성 정보의 목록(1900)을 XML 형태로 관리할 수 있다.
도 20은 본 발명의 일 실시예에 따르는, 디바이스의 기능 수행 방법을 설명하기 위한 순서도이다.
단계 S2010에서, 디바이스(100)는, 적어도 하나의 기능의 수행을 요청하는 사용자 입력을 수신할 수 있다. 본 발명의 일 실시예에 의하면, 적어도 하나의 기능은, 특정 애플리케이션에서 제공하는 기능일 수 있다. 예를 들어, 적어도 하나의 기능은, 메시지 송수신 기능, 알람 기능, 전화 통화 기능, 컨텐츠 업로드 기능, 이미지 캡쳐 기능, 녹음 기능, 및 정보 검색 기능 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다.
본 발명의 일 실시예에 의하면, 적어도 하나의 기능의 수행을 요청하는 사용자 입력은 다양할 수 있다. 예를 들어, 적어도 하나의 기능의 수행을 요청하는 사용자 입력은, 음성 입력, 제스처 입력(예컨대, 터치 입력, 에어 제스처 입력), 모션 입력, 벤딩 입력, 키 입력, 안구 입력, 다중 입력 중 하나일 수 있으나, 이에 한정 되는 것은 아니다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 하나의 기능의 수행을 요청하는 사용자 입력을 수신할 수도 있고, 복수의 기능의 수행을 요청하는 사용자 입력을 수신할 수도 있다.
단계 S2020에서, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지로부터 사용자 입력에 의해 요청된 기능을 제공하는 페이지(이하, 설명의 편의상 목적 페이지라 함)까지 이동하기 위한 경로를 결정할 수 있다.
본 명세서에서 현재 페이지는, 적어도 하나의 기능의 수행을 요청하는 사용자 입력이 수신되는 시점에 화면에 표시되고 있는 페이지를 의미할 수 있다. 예를 들어, 현재 페이지는 애플리케이션에서 제공하는 특정 페이지 또는 홈 화면을 포함할 수 있으며, 홈 화면은 안드로이드 운영체제에서의 런처(launcher) 애플리케이션의 화면(이하, 런처 화면)을 포함할 수 있다.
본 명세서에서 목적 페이지는, 사용자 입력에 의해 요청되는 적어도 하나의 기능을 제공하는 애플리케이션의 페이지를 의미할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 사용자 입력에 의해 요청되는 적어도 하나의 기능을 제공하는 페이지를 목적 페이지로 결정할 수 있다. 예를 들어, 디바이스(100)는 상기 적어도 하나의 기능을 제공하는 애플리케이션을 선택할 수 있다. 그리고 디바이스(100)는, 선택된 애플리케이션에서 제공되는 페이지들 중 상기 적어도 하나의 기능을 수행할 수 있는 제 1 페이지를 목적 페이지로 결정할 수 있다. 본 발명의 일 실시예에 의하면, 적어도 하나의 기능의 수행을 요청하는 사용자 입력이 음성 입력인 경우, 디바이스(100)는 마이크로폰을 통해 수신되는 음성 데이터를 분석하여, 상기 적어도 하나의 기능을 제공하는 목적 페이지를 결정할 수 있다. 예를 들어, 디바이스(100)는, 수신되는 음성 데이터를 텍스트 데이터로 변환하고, 텍스트 데이터에서 특정 애플리케이션의 식별 정보 및 특정 기능 정보를 추출할 수 있다. 이 경우, 디바이스(100)는, 애플리케이션의 식별 정보 및 특정 기능 정보를 이용하여, 목적 페이지를 검출할 수 있다.
본 발명의 일 실시예에 의하면, 적어도 하나의 기능의 수행을 요청하는 사용자 입력이 키보드를 이용한 텍스트 입력인 경우, 디바이스(100)는 수신되는 텍스트 데이터를 분석하여, 특정 애플리케이션의 식별 정보 및 특정 기능을 추출할 수 있다. 이 경우, 디바이스(100)는, 애플리케이션의 식별 정보 및 특정 기능 정보를 이용하여, 목적 페이지를 검출할 수 있다.
본 발명의 일 실시예에 의하면, 사용자 입력이 제스처 입력(예컨대, 터치 입력, 에어 제스처 입력), 안구 입력, 모션 입력 중 적어도 하나인 경우, 디바이스(100)는, 사용자 입력과 매핑된 페이지를 목적 페이지로 결정할 수도 있다. 예를 들어, 디바이스(100)는, 특정 패턴의 터치 입력과 소정 기능을 제공하는 페이지를 매칭하고, 매칭 정보를 메모리에 저장할 수 있다. 이 후, 디바이스(100)는, 특정 패턴의 터치 입력이 수신되면, 특정 패턴의 터치 입력과 매칭된 페이지 정보를 매칭 정보에서 추출하고, 특정 패턴의 터치 입력과 매칭된 페이지를 목적 페이지로 결정할 수 있다.
한편, 본 발명의 일 실시예에 의하면, 디바이스(100)는 적어도 하나의 애플리케이션에 대응하는 UI 디스크립션을 이용하여, 목적 페이지를 검출할 수도 있다. 예를 들어. 디바이스(100)는 UI 디스크립션에 포함된 기능 정보와 사용자 입력에 의해 요청되는 기능 정보를 비교할 수 있다. 이때, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)에 정의된 페이지들 중 사용자 입력에 의해 요청되는 기능 정보를 포함하는 페이지를 목적 페이지로 결정할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 적어도 하나의 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 화면에 표시되는 현재 페이지를 식별할 수도 있다. 예를 들어, 디바이스(100)는, 현재 페이지에 포함된 UI 엘리먼트(UI 객체)에 관한 정보를 적어도 하나의 애플리케이션의 화면 구성 정보(UI 디스크립션)에 정의된 UI 엘리먼트(UI 객체)에 관한 정보와 비교할 수 있다. 이때, 디바이스(100)는, 화면 구성 정보(UI 디스크립션)에 정의된 페이지들 중 현재 페이지에 포함된 UI 엘리먼트들(UI 객체들)과 가장 유사한 UI 엘리먼트들(UI 객체들)을 포함하는 페이지를 추출할 수 있다.
예를 들어, 현재 페이지가 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하고, 메신저 애플리케이션에서 제공되는 페이지들 중 제 1 페이지도 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하는 경우, 디바이스(100)는 현재 페이지가 메신저 애플리케이션에서 제공되는 제 1 페이지임을 식별할 수 있다.
본 발명의 일 실시예에 의하면, 현재 페이지에 포함되는 UI 엘리먼트(UI 객체)에 관한 정보는, 애플리케이션을 구동하기 위한 플랫폼과 애플리케이션이 상호 송수신하는 정보로부터 획득될 수 있다.
한편, 본 발명의 일 실시예에 의하면, 현재 페이지가 홈 화면(또는 런처 화면)인 경우, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하지 않고도, 현재 페이지가 홈 화면임을 알 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 현재 페이지로부터 목적 페이지까지 이동할 수 있는 복수의 경로를 결정할 수 있다. 그리고 디바이스(100)는, 복수의 경로 중 최단 경로를 선택할 수 있다. 예를 들어, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)에 정의된 ‘페이지들 간의 전환 방법 정보(transition information)’에 기초하여, 현재 페이지로부터 목적 페이지까지 이동할 수 있는 복수의 경로를 결정할 수 있다.
본 명세서에서, ‘페이지들 간의 전환 방법 정보(transition information)’는, 애플리케이션에서 제공하는 복수의 페이지들 간에 전환(또는 이동)되기 위한 인터페이스에 관한 정보를 의미할 수 있다. 예를 들어, ‘페이지들 간의 전환 방법 정보’에는, 해당 페이지에서 전환 가능한 다른 페이지들의 식별 정보, 해당 페이지에서 다른 페이지로 전환하기 위한 트리거 정보 등이 포함되어 있을 수 있다. 여기서, 트리거 정보는, 페이지들 간의 전환을 발생시키는 입력 이벤트(예컨대, 클릭, 탭, 키 선택)에 관한 정보를 의미할 수 있다. 예를 들어, ‘페이지A’의 전환 정보에는 ‘페이지 A-> 페이지 B: 페이지 A의 OO 버튼 클릭 이벤트를 통해 페이지 B로 이동’ 등이 정의되어 있을 수 있다.
한편, 디바이스(100)는, 현재 페이지에서 제 1 페이지, 제 2 페이지, 제 3 페이지를 거쳐 목적 페이지인 제 4 페이지에 도달하는 경로를 결정할 수도 있다. 이때, 제 1 페이지, 제 2 페이지, 제 3 페이지 각각은 경유하게 되는 중간 단계의 목적 페이지들일 수 있으며, 제 4 페이지는 최종 목적 페이지일 수 있다. 이하에서는, 설명의 편의상 경유하게 되는 중간 단계의 목적 페이지들은 ‘경유 페이지’로 정의하고, 최종 목적 페이지를 ‘목적 페이지’로 정의하기로 한다.
단계 S2030에서, 디바이스(100)는, 결정된 경로에 따라, 목적 페이지를 호출할 수 있다. 본 명세서에서, 페이지를 호출한다는 것은, 페이지에 대한 링크 정보를 이용하여 페이지를 불러오는 것을 의미할 수 있다. 본 발명의 일 실시예에 의하면, 디바이스(100)는 목적 페이지를 표시하기 위한 입력 이벤트를 발생시킴으로써, 목적 페이지를 호출할 수 있다. 이때, 디바이스(100)는 목적 페이지를 표시할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 결정된 경로에 따라, 적어도 하나의 경유 페이지 및 목적 페이지를 순차적으로 호출할 수 있다. 본 명세서에서 경유 페이지는, 현재 페이지에서 목적 페이지에 도달하기 위해 경유하게 되는 적어도 하나의 페이지를 의미할 수 있다.
예를 들어, 결정된 경로가 현재 페이지에서, 제 1 경유 페이지 및 제 2 경유 페이지를 거쳐 목적 페이지에 도달하는 경로인 경우, 디바이스(100)는, 제 1 경유 페이지, 제 2 경유 페이지, 및 목적 페이지를 순차적으로 호출할 수 있다. 디바이스(100)는, 현재 페이지에서 제 1 경유 페이지를 호출하기 위한 입력 이벤트를 발생시키고, 제 1 경유 페이지에서 제 2 경유 페이지를 호출하기 위한 제 2 입력 이벤트를 발생시키고, 제 2 경유 페이지에서 목적 페이지를 호출하기 위한 입력 이벤트를 발생시킴으로써, 제 1 경유 페이지, 제 2 경유 페이지, 및 목적 페이지를 순차적으로 호출할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 제 1 경유 페이지, 제 2 경유 페이지, 및 목적 페이지 모두를 순차적으로 화면에 표시할 수 있다. 또한, 본 발명의 다른 실시예에 의하면, 디바이스(100)는, 제 1 경유 페이지 및 제 2 경유 페이지는 가상의 디스플레이에 표시하고, 목적 페이지만을 실제 화면에 표시할 수도 있다. 디바이스(100)가 가상의 디스플레이에 경유 페이지를 표시하는 동작에 대해서는 도 24c 내지 24k를 참조하여 후에 자세히 살펴보기로 한다.
단계 S2040에서, 디바이스(100)는, 목적 페이지를 통해 상기 적어도 하나의 기능을 수행할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 사용자에 의해 요청된 기능을 수행하기 위한 입력 이벤트를 발생시킬 수 있다. 예를 들어, 사용자에 의해 요청된 기능이 메시지 전송 기능인 경우, 디바이스(100)는 목적 페이지에 포함된 전송 버튼을 터치하는 입력 이벤트를 발생시킴으로써, 메시지 전송 기능을 수행할 수 있다.
도 21은 디바이스가 현재 페이지에서 목적 페이지까지 이동하기 위한 경로를 결정하는 일례를 설명하기 위한 도면이다. 도 21에서는, 애플리케이션이 채팅 애플리케이션인 경우를 예로 들어 설명하기로 한다.
애플리케이션의 화면 구성 정보(UI 디스크립션)에 포함된 페이지들 간의 전환 방법 정보(1630)를 참조하면, 페이지들을 각각 연결하는 다양한 경로(2110)가 존재할 수 있다.
만일, 현재 페이지가 제 5 페이지(friendSummary)이고, 목적 페이지가 제 4 페이지(moreTap)인 경우, 디바이스(100)는 화면 구성 정보(UI 디스크립션)에 정의된 페이지들 간의 전환 방법 정보(1630)를 이용하여, 현재 페이지에서 목적 페이지까지 이동하기 위한 복수의 경로를 결정할 수 있다. 예를 들어, 디바이스(100)는 제 5 페이지(friendSummary)에서 제 1 페이지(friendListTap)을 거쳐 제 4 페이지(moreTap)로 이동하는 제 1 경로(①)와 제 5 페이지(friendSummary)에서 제 6 페이지(chatRoom) 및 제 2 페이지 (chatListTap)을 거쳐 제 4 페이지(moreTap)로 이동하는 제 2 경로(②)를 결정할 수 있으나, 이외에도 다양한 경로를 결정할 수 있다.
디바이스(100)는 제 1 경로(①)와 제 2 경로(②)를 비교한 결과에 기초하여, 최단 경로를 결정할 수 있다. 예를 들어, 제 1 경로(①)는 두 개의 페이지(예컨대, 제 1 페이지 및 제 4 페이지)를 호출하는 경로이고, 제 2 경로(②)는 세 개의 페이지(예컨대, 제 6 페이지, 제 2 페이지, 제 4 페이지)를 호출하는 경로이므로, 디바이스(100)는, 제 1 경로(①)를 최단 경로로 결정할 수 있다.
디바이스(100)는, 제 1 경로(①)따라, 화면에 표시되고 있는 제 5 페이지(friendSummary)에서 제 1 페이지(friendListTap)를 호출하기 위한 입력 이벤트로 실행 취소 키를 선택하는 이벤트 (예컨대, action = “KeyEvent”, Key=“Back Key”)를 발생시킬 수 있다(도 16c 참조). 그리고 디바이스(100)는 제 1 경로(①)따라 호출된 제 1 페이지(friendListTap)에서 제 4 페이지(moreTap)를 호출하기 위한 입력 이벤트로 moreTap 아이콘을 클릭하는 이벤트(예컨대, action = “Click” resource ID = “name”) 를 발생시킬 수 있다(도 16a 참조).
도 22a 내지 22e는, 디바이스가 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여 사용자의 음성 입력에 대응하는 기능을 수행하는 일례를 설명하기 위한 도면이다. 도 22a 내지 22e에서는, 애플리케이션이 채팅 애플리케이션인 경우를 예로 들어 설명하기로 한다.
도 22a에 도시된 바와 같이, 디바이스(100)는, 적어도 하나의 기능의 수행을 요청하는 음성 입력을 수신할 수 있다. 예를 들어, 디바이스(100)는, ‘김명준한테 어디냐고 메시지 전송해’ 라는 음성 데이터(2200)를 수신할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 음성 데이터(2200)가 수신되는 경우, 자연 처리에 기반하여 음성 데이터(2200)를 분석한 결과 데이터(2200’)를 생성할 수 있다. 예를 들어, 디바이스(100)는, 수신된 음성 데이터(2200)를 텍스트 데이터로 변환하고, 자연어 처리(Natural Language Processing)에 기반하여 텍스트 데이터를 분석할 수 있다. 예컨대, 디바이스(100)는, 수신된 음성 데이터(예컨대, 김명준한테 어디냐고 메시지 전송해)(2200)를 분석하여, ‘채팅 애플리케이션 실행 -> 친구 리스트 중에 김명준 검색 -> 1:1채팅 실행 -> 어디야 라고 메시지 입력하고 전송’과 같은 명령어 데이터를 포함하는 결과 데이터(2200’)를 생성할 수 있다. 디바이스(100)는 명령어 데이터에서 기능(예컨대, 채팅 애플리케이션 실행, 친구 검색, 메시지 입력, 전송)과 변수(‘argument’로 표현되기도 함)(예컨대, 누구: ‘김명준’, 메시지 내용: ‘어디야’)를 구분할 수 있다. 그리고 디바이스(100)는 기능에 대응하는 UI 엘리먼트 또는 화면 페이지를 추출할 수 있다. 디바이스(100)는, 추출된 UI 엘리먼트에 대한 입력 이벤트를 발생시키는 과정에서 변수가 필요한 경우, 해당 변수를 삽입할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 음성 데이터를 서버(200)로 전송하면서, 음성 데이터(2200)에 대한 분석을 요청할 수도 있다. 예를 들어, 디바이스(100)는, ‘김명준한테 어디냐고 메시지 전송해’라는 음성 데이터(2200)를 수신한 경우, 수신된 음성 데이터(2200)를 서버(200)에 전송하고, 서버(200)로부터 음성 데이터(2200)를 분석한 결과 데이터(2200’)(예컨대, ‘채팅 애플리케이션을 실행해서 친구 리스트 중에 김명준을 찾고, 1:1 채팅 실행하고, 어디야 라고 메시지 입력하고, 전송해’)를 수신할 수 있다. 디바이스(100)가 서버(200)에 음성 데이터의 분석을 요청하는 동작에 대해서는 도 24a 및 24b를 참조하여 후에 자세히 살펴보기로 한다.
본 발명의 일 실시예에 의하면, 음성 데이터에 대한 분석은, 자연어 처리(Natural Language Processing)에 기반하여 수행될 수 있다. 자연어 처리(Natural Language Processing)는, 컴퓨팅 시스템을 이용하여 사람의 언어를 이해하거나 생성하거나 분석하는 인공 지능 기술을 의미한다. 자연어 이해는 일상 생활 언어를 형태 분석, 의미 분석, 대화 분석 등을 통하여 컴퓨팅 시스템이 처리할 수 있도록 변환시키는 작업이며, 자연어 생성은 컴퓨팅 시스템이 처리한 결과물을 사람의 편의성에 입각하여 텍스트, 음성, 그래픽 등으로 생성하는 작업을 의미할 수 있다.
디바이스(100)는, 음성 데이터(2200)에 대한 분석이 완료되는 경우, 메시지를 전송하는 기능을 수행하기 위해, 채팅 애플리케이션의 채팅룸 페이지를 목적 페이지로 결정할 수 있다. 또한, 디바이스(100)는, 현재 페이지가 홈 화면임을 식별할 수 있다.
디바이스(100)는, 채팅 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 홈 화면에서 채팅룸 페이지에 도달하기 위한 경로를 결정할 수 있다. 예를 들어, 디바이스(100)는, 홈 화면에서 채팅 애플리케이션을 실행하고, 채팅 애플리케이션의 제 1 페이지(예컨대, 친구 리스트 페이지(friendListTap)) 및 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary))를 경유해서, 채팅룸 페이지(예컨대, chatRoom)에 도달하는 경로를 최단 경로로 결정할 수 있다.
디바이스(100)는, 채팅 애플리케이션의 화면 구성 정보를 이용하여, 결정된 경로에 따라 제 1 페이지, 제 2 페이지 및 목적 페이지를 순차적으로 표시할 수 있다.
예를 들어, 도 22b를 참조하면, 디바이스(100)는, 모든 애플리케이션에 적용 가능한 글로벌 명령어(예컨대, 실행)를 정의한 제 1 디스크립션(2201)을 이용하여, 홈 화면(런처 화면)(2210)에서 채팅 애플리케이션의 아이콘(2202)을 클릭하는 이벤트를 발생시킴으로써, 채팅 애플리케이션을 실행할 수 있다. 이 경우, 디바이스(100)에는, 로딩 페이지(2220)를 거쳐 제 1 페이지(2230)(예컨대, 친구 리스트 페이지(friendListTap)가 표시될 수 있다. 또한, 디바이스(100)는, 제 1 디스크립션(2201)에 정의된 리소스 필터(<filter>)를 이용하여, 제 1 페이지(2230)(예컨대, 친구 리스트 페이지(friendListTap))에서 김명준(2203)을 검색할 수 있다.
도 22c를 참조하면, 디바이스(100)는, 제 1 페이지(2230)에서 제 2 페이지(2240)(예컨대, 친구 정보 요약 페이지(friendSummary))로의 전환 방법 정보를 포함하는 제 2 디스크립션(2204)을 이용하여, 제 2 페이지(2240)를 호출할 수 있다. 예를 들어, 제 2 디스크립션(2204)의 전환 방법 정보(<stateMachine>)에는 제 1 페이지(2230)(friendListTap)에서 제 2 페이지(2240)(friendSummary)로 전환하기 위해 친구의 이름을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID="friendListTab" targetUIPageID="friendSummay" action="Click" > )되어 있을 수 있다. 이 경우, 디바이스(100)는, 김명준(2203)을 클릭하는 이벤트를 발생시켜, 제 2 페이지(2240)를 호출할 수 있다.
한편, 제 2 디스크립션(2204)에는, 제 2 페이지(2240)에 포함된 1:1 채팅 버튼(2205)의 기능 정보(예컨대, <appFeature name="대화창열기">)가 포함되어 있을 수 있다.
도 22d를 참조하면, 디바이스(100)는, 제 2 페이지(2240)에서 목적 페이지인 제 3 페이지(2250)(예컨대, chatRoom)로의 전환 방법 정보를 포함하는 제 3 디스크립션(2206)을 이용하여, 제 3 페이지(2250)를 호출할 수 있다. 예를 들어, 제 3 디스크립션(2206)의 전환 방법 정보(<stateMachine>)에는 제 2 페이지(2240)에서 제 3 페이지(2250)로 전환하기 위해 ‘1:1 채팅’ 버튼(2206)을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID="friendSummay" targetUIPageID="chatroom" action="Click" >)되어 있을 수 있다. 이 경우, 디바이스(100)는, 제 2 페이지(2240)(friendSummary)에서 ‘1:1 채팅’ 버튼(2205)을 클릭하는 이벤트를 발생시켜, 목적 페이지인 제 3 페이지(2250)(예컨대, chatRoom)를 호출할 수 있다.
도 22e를 참조하면, 디바이스(100)는 제 3 페이지(2250)를 구성하는 UI 엘리먼트의 기능 정보를 포함하는 제 4 디스크립션(2207)을 이용하여, 메시지 전송 기능을 수행할 수 있다. 예를 들어, 제 4 디스크립션(2207)에는, 편집 창(2208)에 텍스트를 입력하고(예컨대, <featureEntry pageID="chatroom" resourceID="message_edit_text" action="InputText" isNeedUserArgument="true" />), 전송 버튼(2209)을 클릭하는 이벤트(예컨대, <featureEntry pageID="chatroom" resourceID="send" action="Click" />)를 통해 메시지를 전송할 수 있다고 정의되어 있으므로, 디바이스(100)는 채팅룸 페이지(예컨대, chatRoom)에 포함된 편집 창(2208)에 메시지(예컨대, 어디야)를 입력하고(2260), 전송 버튼(2209)을 클릭하는 이벤트를 발생시킬 수 있다(2270).
본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여 현재 페이지부터 목적 페이지까지 각 페이지마다 사용자가 입력하는 것과 같은 입력 이벤트를 자동으로 발생시키므로, 디바이스(100)는, 손으로 디바이스(100)를 직접 조작하는 것과 같은 경험을 사용자에게 제공할 수 있다.
도 23은 본 발명의 일 실시예에 따르는, 디바이스가 경유 페이지에 대한 검증을 수행하는 방법을 설명하기 위한 순서도이다.
단계 S2310에서, 디바이스(100)는, 음성 입력에 기초하여, 기능을 수행하기 위한 목적 페이지를 결정할 수 있다. 예를 들어, 디바이스(100)가 특정 기능의 수행을 요청하는 음성 데이터를 수신하는 경우, 디바이스(100)는 음성 데이터를 분석할 수 있다. 또한, 디바이스(100)는 수신된 음성 데이터를 서버(200)에 전송하면서, 음성 데이터에 대한 분석을 서버(200)에 요청할 수도 있다. 디바이스(100)가 서버(200)에 음성 데이터의 분석을 요청하는 동작에 대해서는 도 21a 및 21b를 참조하여 후에 자세히 살펴보기로 한다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 음성 데이터에 대한 분석이 완료되는 경우, 분석 결과에 기반하여 특정 기능을 제공하는 애플리케이션의 특정 페이지를 목적 페이지로 결정할 수 있다.
단계 S2320에서, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)을 이용하여, 화면에 디스플레이 되고 있는 현재 페이지를 식별할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 현재 페이지에 포함된 UI 엘리먼트(UI 객체)에 관한 정보를 적어도 하나의 애플리케이션의 화면 구성 정보(UI 디스크립션)에 정의된 UI 엘리먼트(UI 객체)에 관한 정보와 비교할 수 있다. 그리고 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)에 정의된 페이지들 중 현재 페이지에 포함된 UI 엘리먼트들(UI 객체들)과 가장 유사한 UI 엘리먼트들(UI 객체들)을 포함하는 페이지를 추출할 수 있다. 이때, 애플리케이션의 화면 구성 정보(UI 디스크립션)에서 추출된 페이지가 현재 페이지일 수 있다.
예를 들어, 현재 페이지가 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하고, 메신저 애플리케이션에서 제공되는 페이지들 중 제 1 페이지도 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하는 경우, 디바이스(100)는 현재 페이지가 메신저 애플리케이션에서 제공되는 제 1 페이지임을 식별할 수 있다.
본 발명의 일 실시예에 의하면, 현재 페이지에 포함되는 UI 엘리먼트(UI 객체)에 관한 정보는, 애플리케이션을 구동하기 위한 플랫폼과 애플리케이션이 상호 송수신하는 정보로부터 획득될 수 있다.
한편, 본 발명의 일 실시예에 의하면, 현재 페이지가 홈 화면(또는 런처 화면)인 경우, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하지 않고도, 현재 페이지가 홈 화면임을 알 수 있다.
단계 S2330에서, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지에서 목적 페이지까지 UI 경로를 결정할 수 있다. UI(user interface) 경로는, 사용자가 조작하는 것과 같은 입력 이벤트를 디바이스(100)에서 자동으로 발생시킴으로써 진행하는 경로를 의미할 수 있다.
예를 들어, 디바이스(100)는, 현재 페이지에서 목적 페이지까지 이동하기 위한 적어도 하나의 경유 페이지를 결정하고, 경유 페이지를 호출하기 위한 트리거 정보를 확인할 수 있다. 트리거 정보에는 경유 페이지를 호출하는 입력 이벤트 정보가 포함되어 있을 수 있다. 예를 들어, 경유 페이지를 호출하는 입력 이벤트에는, 탭하는 이벤트, 클릭하는 이벤트, 실행 취소 키(back key)를 누르는 이벤트 등이 있을 수 있다.
단계 S2330은 도 20의 단계 S2020에 대응하므로, 구체적인 설명은 생략하기로 한다.
단계 S2340에서, 디바이스(100)는, UI 경로에 따라, 경유 페이지 호출할 수 있다. 예를 들어, 디바이스(100)는, 경유 페이지를 호출하기 위한 트리거 정보를 확인할 수 있다. 디바이스(100)는 트리거 정보에 기초하여, 현재 페이지에서 입력 이벤트를 발생시킴으로써, 경유 페이지를 호출할 수 있다.
단계 S2350에서, 디바이스(100)는, 경유 페이지에 대한 검증을 수행할 수 있다.
예를 들어, 디바이스(100)는, 호출된 경유 페이지가 UI 경로 상의 경유 페이지(예컨대, 화면 구성 정보(UI 디스크립션)에 정의된 경유 페이지)가 맞는지 확인할 수 있다. 본 발명의 일 실시예에 의하면, 디바이스(100)는 호출된 경유 페이지에 포함된 UI 엘리먼트(UI 객체)에 관한 제 1 정보(예컨대, UI 객체의 종류, 수, UI 객체의 식별 정보 등) 및 화면 구성 정보(UI 디스크립션)에 포함된 경유 페이지의 UI 엘리먼트(UI 객체)에 관한 제 2 정보(예컨대, UI 객체의 종류, 수, UI 객체의 식별 정보 등)를 비교함으로써, 호출된 경유 페이지에 대한 검증을 수행할 수 있다.
제 1 정보와 제 2 정보가 일치하는 경우, 디바이스(100)는 호출된 경유 페이지가 UI 경로 상의 경유 페이지라고 판단할 수 있다. 이 경우, 호출된 경유 페이지에 대한 검증이 성공할 수 있다.
반면에, 제 1 정보와 제 2 정보가 일치하지 않는 경우, 디바이스(100)는 호출된 경유 페이지가 UI 경로 상의 경유 페이지가 아니라고 판단할 수 있다. 이 경우, 호출된 경유 페이지에 대한 검증이 실패할 수 있다.
디바이스(100)는, 호출되어 현재 화면에 표시되는 경유 페이지를 현재 페이지로 설정하고, 현재 페이지를 식별하는 절차를 다시 수행할 수 있다. 디바이스(100)는, 현재 화면에 표시되고 있는 경유 페이지를 식별하게 되는 경우, 현재 화면에 표시되고 있는 경유 페이지에서 목적 페이지까지 이동하기 위한 UI 경로를 새롭게 결정할 수 있다. 디바이스(100)는, 새로운 UI 경로에 따라 경유 페이지 및 목적 페이지를 순차적으로 호출할 수 있다.
한편, 호출된 경유 페이지가 UI 경로 상의 경유 페이지가 맞지만, 호출된 경유 페이지의 일부 구성요소가 업데이트된 경우, 디바이스(100)는, 기 저장된 화면 구성 정보(UI 디스크립션)에서의 경유 페이지에 관한 UI 엘리먼트(UI 객체)의 정보를 갱신할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)에 대한 갱신 요청을 서버(200)에 전송할 수도 있다. 디바이스(100)가 서버(200)에 애플리케이션의 화면 구성 정보(UI 디스크립션)에 대한 갱신을 요청하는 동작에 대해서는 도 15에서 살펴봤으므로, 구체적인 설명은 생략하기로 한다.
단계 S2370에서, 디바이스(100)는, 호출된 경유 페이지의 검증에 성공한 경우, 목적 페이지를 호출할 수 있다. 예를 들어, 디바이스(100)는, 호출된 경유 페이지에서 기 설정된 입력 이벤트를 발생시킴으로써, 목적 페이지를 호출할 수 있다. 디바이스(100)는, 음성 입력에 기반하여 요청된 특정 기능을 목적 페이지에서 수행할 수 있다.
이하에서는 디바이스(100)가 서버(200)에 음성 데이터의 분석을 요청하는 동작에 대해서 도 24a 및 24b를 참조하여 자세히 살펴보기로 한다.
도 24a는 일반적인 ASR(Automatic Speech Recognition) 방식을 설명하기 위한 도면이고, 도 24b는 Streaming ASR(Automatic Speech Recognition) 방식을 설명하기 위한 도면이다.
도 24a에 도시된 바와 같이, 디바이스(100)는, 발화의 시작 및 완료를 감지하고, 발화의 시작 시점부터 완료 시점까지의 음성 데이터를 획득할 수 있다(S2411). 예를 들어, 디바이스(100)는 사용자의 발화가 끝날 때까지 음성을 녹음할 수 있다.
디바이스(100)는, 사용자의 발화가 완료된 경우, 서버(200)에 음성 데이터를 전송하면서, 음성 데이터에 대한 분석을 요청할 수 있다(S2412).
서버(200)는 음성 데이터를 텍스트 데이터로 변환하기 위한 자동 음성 인식(Automatic Speech Recognition unit, 이하 ‘ASR’) 모듈(210)을 가지고 있을 수 있다. 서버(200)는, ASR 모듈(210)을 통해 디바이스(100)로부터 수신되는 음성 데이터를 텍스트 데이터로 변환할 수 있다.
또한, 서버(200)는 자연어 이해 (Natural Language Understanding, 이하 ‘NLU’)모듈(220)을 더 포함할 수 있다. 서버(200)는, NLU 모듈(220)을 통해 텍스트 데이터에 포함된 문장이나 단어의 의미를 추론 또는 분석하여, 텍스트 데이터를 디바이스(100)에서 사용되는 명령어 데이터로 변환할 수도 있다.
서버(200)는, 음성 데이터가 변환된 텍스트 데이터 또는 명령어 데이터를 디바이스(100)로 전송할 수 있다(S2413). 이 경우, 디바이스(100)는, 서버(200)로부터 음성 데이터가 변환된 텍스트 데이터 또는 명령어 데이터를 수신할 수 있다. 디바이스(100)는, 텍스트 데이터 또는 명령어 데이터를 분석하여, 목적 페이지를 결정할 수 있다. 예를 들어, 디바이스(100)는, 텍스트 데이터(또는 명령어 데이터)에서 애플리케이션의 식별 정보 및 기능 정보를 추출할 수 있다. 디바이스(100)는, 애플리케이션의 식별 정보 및 기능 정보를 이용하여, 음성을 통해 요청된 특정 기능을 제공하는 목적 페이지를 검출할 수 있다.
도 24b에 도시된 바와 같이, 디바이스(100)는, 발화의 시작을 감지하고, 음성 데이터를 획득할 수 있다(S2421). 디바이스(100)는, 사용자가 발화 중인 상태에서 주기적으로 서버(200)에 일부 음성 데이터를 전송하면서, 일부 음성 데이터에 대한 분석을 요청할 수 있다(S2422).
서버(200)는, ARS 모듈(210)을 통해 디바이스(100)로부터 수신되는 일부 음성 데이터를 텍스트 데이터로 변환할 수 있다. 또한, 서버(200)는, NLU 모듈(220)을 통해 텍스트 데이터에 포함된 문장이나 단어의 의미를 추론 또는 분석하여, 텍스트 데이터를 디바이스(100)에서 사용되는 명령어 데이터로 변환할 수도 있다. 본 발명의 일 실시예에 의하면, 서버(200)는 NLU 모듈(220)을 통해 텍스트 데이터에 포함된 문장이나 단어의 의미를 추론 또는 분석하는 동작을 생략할 수도 있다.
서버(200)는 음성 데이터가 변환된 텍스트 데이터 또는 명령어 데이터를 디바이스(100)로 전송할 수 있다(S2423). 이 경우, 디바이스(100)는, 서버(200)로부터 일부 음성 데이터에 대응하는 텍스트 데이터 또는 명령어 데이터를 수신할 수 있다. 디바이스(100)는, 텍스트 데이터 또는 명령어 데이터를 이용하여, 경유 페이지 또는 목적 페이지를 결정할 수 있다. 디바이스(100)는 발화가 완료될 때까지 단계 S2422와 단계 S2423을 반복함으로써, 발화하는 내용을 서버(200)에 지속적으로 업데이트할 수 있다(S2424).
본 발명의 일 실시예에 의하면, 디바이스(100)는, 서버(200)를 통해서 사용자의 발화 중에 지속적으로 음성 데이터를 분석함으로써, 발화가 완료되기 전이라도 음성 데이터에 포함된 일부 명령을 먼저 수행할 수 있다.
디바이스(100)가 ‘1)채팅 애플리케이션을 실행해서 2)친구 리스트 중에 김명준을 찾고, 3) 1:1 채팅 실행하고, 4)’어디야’라고 메시지 입력하고, 5)전송해’라는 음성 데이터를 수신하는 경우를 예로 들어 설명하기로 한다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, ‘1) 채팅 애플리케이션을 실행해서’라는 제 1 음성 데이터가 수신되는 경우, 제 1 음성 데이터를 서버(200)에 전송해서 먼저 분석할 수 있다. 그리고 디바이스(100)는, ‘2)친구 리스트 중에 김명준을 찾고’라는 제 2 음성 데이터가 수신되는 중에, 제 1 음성 데이터를 분석한 결과에 기초하여 채팅 애플리케이션을 실행할 수 있다. 또한, 디바이스(100)는, 제 1 음성 데이터를 분석한 다음에 ‘2)친구 리스트 중에 김명준을 찾고’라는 제 2 음성 데이터를 서버(200)에 전송해서 분석할 수 있다. 디바이스(100)는 제 2 음성 데이터에 따라 친구 리스트 페이지를 호출하여 표시할 수 있다. 친구 리스트 페이지가 호출되는 시점은 ‘3) 1:1 채팅 실행하고’라는 제 3 음성 데이터가 수신되는 중일 수 있다.
한편, 본 발명의 일 실시예에 의하면, 디바이스(100)는, 사용자의 발화 중에 일부 음성 데이터를 먼저 분석함으로써, 사용자가 음성으로 입력 가능한 명령어에 대한 정보를 미리 제공해 줄 수 있다. 도 25를 참조하기로 한다.
도 25는 사용자의 음성 입력이 수신되는 중에 디바이스가 가이드 정보를 제공하는 일례를 나타내는 도면이다.
도 25의 2501을 참조하면, 디바이스(100)는, 사용자로부터 특정 단어를 포함하는 음성이 입력되는 경우, 특정 단어 다음에 사용되는 빈도가 높거나 우선 순위가 높은 명령어를 가이드 정보로 제공할 수 있다.
예를 들어, 애플리케이션 명칭 다음에 ‘실행’이라는 명령어가 입력되는 확률이 높을 수 있다. 이 경우, 디바이스(100)는, 사용자로부터 애플리케이션 명칭(예컨대, ***톡)을 포함하는 음성(2510)이 입력되면, ‘실행’이라는 명령어가 포함된 가이드 정보(2511)를 제공할 수 있다. 이때, 사용자는 가이드 정보(2511)를 확인하고 ‘실행’이라는 음성 명령어를 디바이스(100)에 입력할 수 있다.
도 25의 2502를 참조하면, 디바이스(100)는, 사용자로부터 친구 이름(예컨대, Monica)을 포함하는 음성(2520)이 입력되면, 명령어 사용 빈도 정보 및 우선 순위 정보 중 적어도 하나에 기초하여 가이드 정보(2521)를 제공할 수 있다. 가이드 정보(2521)에는, 친구 이름 다음에 자주 사용되는 ‘메시지 전송’, ‘친구 정보’, ‘사진 전송’ 등의 명령어가 포함될 수 있다. 사용자는 가이드 정보(2521)를 확인하고 ‘메시지 전송’이라는 음성 명령어를 디바이스(100)에 입력할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 가이드 정보(2511, 2521)를 제공함으로써, 사용자가 명령어를 잊어버리거나, 명령어를 기억하기 어려운 상황에 도움을 줄 수 있다.
한편, 본 발명의 일 실시예에 의하면, 특정 기능에 매칭되는 명령어들은 사용자에 의해 정의되거나 변경될 수 있다. 또한, 도 19a의 1950에서 살펴본 것과 같이, 디바이스(100)는, 애플리케이션의 사용 횟수나 명령어의 사용 횟수에 관한 정보를 관리함으로써, 애플리케이션이나 명령어의 우선 순위를 결정할 수 있다.
도 26a 내지 26d는, 디바이스가 복수의 애플리케이션을 통해 사용자의 음성 입력에 대응하는 기능을 수행하는 일례를 설명하기 위한 도면이다. 도 26a 내지 26d에서는, 복수의 애플리케이션이 카메라 애플리케이션 및 채팅 애플리케이션인 경우를 예로 들어 설명하기로 한다.
도 26a에 도시된 바와 같이, 디바이스(100)는, 적어도 하나의 기능의 수행을 요청하는 음성 입력을 수신할 수 있다. 예를 들어, 디바이스(100)는, ‘사진 찍고, 톡으로 김명준한테 사진 보내줘’라는 음성 데이터(2600)를 수신할 수 있다.
디바이스(100)는 음성 데이터(1000)가 수신되는 경우, 음성 데이터(2600)를 분석할 수 있다. 예를 들어, 디바이스(100)는, 수신된 음성 데이터(2600)를 텍스트 데이터로 변환하고, 자연어 처리 기술에 기반하여, 텍스트 데이터를 분석할 수 있다. 예컨대, 디바이스(100)는, 수신된 음성 데이터(예컨대, 사진 찍고, 톡으로 김명준한테 사진 보내줘)(2600)를 분석하여, ‘카메라 애플리케이션 실행-> 사진 촬영-> 채팅 애플리케이션 실행 -> 김명준한테 사진 전송’과 같은 명령어 데이터(2600’)를 생성할 수 있다. 디바이스(100)는, 명령어 데이터(2600’)에서 기능(예컨대, 카메라 애플리케이션 실행, 사진 촬영, 채팅 애플리케이션 실행, 검색, 사진 전송)과 변수(‘argument’로 표현되기도 함)(예컨대, 누구: ‘김명준’, 메시지 내용: 사진)를 구분할 수도 있다. 그리고 디바이스(100)는 기능에 대응하는 UI 엘리먼트 또는 화면 페이지를 추출할 수 있다. 디바이스(100)는, 추출된 UI 엘리먼트에 대한 입력 이벤트를 발생시키는 과정에서 변수가 필요한 경우, 해당 변수를 삽입할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 음성 데이터(2600)를 서버(200)로 전송하면서, 음성 데이터(2600)에 대한 분석을 요청할 수도 있다. 이 경우, 서버(200)는 자연어 처리 기술에 기반하여 음성 데이터(2600)를 분석할 수 있다. 서버(200)는, 음성 데이터(2600)를 분석한 결과(2600’)를 디바이스(100)에 전송할 수 있다.
디바이스(100)는, 음성 데이터에 대한 분석이 완료되는 경우, 명령어 데이터(2600’)에 포함된 명령어들을 순차적으로 수행하기 위해 사진 애플리케이션의 화면 구성 정보(UI 디스크립션) 및 채팅 애플리케이션의 화면 구성 정보(UI 디스크립션)를 메모리에서 독출할 수 있다. 디바이스(100)는, 사진 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 사진 촬영 기능을 포함하는 사진 촬영 페이지(mainScreen)를 제 1 목적 페이지로 결정할 수 있다. 또한, 디바이스(100)는, 채팅 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 사진을 전송하는 기능을 제공하는 채팅 애플리케이션의 미디어 전송 페이지(mediaSendPage)를 최종 목적 페이지로 결정할 수 있다. 또한, 디바이스(100)는, 현재 페이지가 홈 화면(런처 화면)임을 식별할 수 있다.
디바이스(100)는, 사진 애플리케이션의 화면 구성 정보(UI 디스크립션) 및 채팅 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 홈 화면에서부터 사진을 촬영한 후 미디어 전송 페이지(mediaSendPage)에 도달하기까지의 경로를 결정할 수 있다. 예를 들어, 디바이스(100)는, 홈 화면(런처 화면)에서 카메라 애플리케이션을 실행하고, 카메라 애플리케이션의 사진 촬영 페이지에서 사진을 촬영한 뒤, 채팅 애플리케이션을 실행하고, 채팅 애플리케이션의 제 1 페이지(예컨대, 친구 리스트 페이지(friendListTap)), 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary)), 제 3 페이지(예컨대, 채팅룸 페이지(chatRoom)), 제 4 페이지(예컨대, 미디어 전송 페이지(mediaSendPage)), 제 5 페이지(예컨대, 포토 앨범 페이지(photoAlbum)), 제 6 페이지(예컨대, 포토 그리드 뷰 페이지(photoGridView), 및 제 7 페이지(예컨대, 포토 리뷰 페이지(photoReviewPage))를 경유해서 제 4 페이지(예컨대, 미디어 전송 페이지 mediaSendPage)에 도달하는 경로를 최단 경로로 결정할 수 있다.
디바이스(100)는, 결정된 경로에 따라, 카메라 애플리케이션의 사진 촬영 페이지, 제 1 페이지, 제 2 페이지, 제 3 페이지, 제 4 페이지, 제 5 페이지, 제 5 페이지, 제 7 페이지 및 목적 페이지(제 4 페이지)를 순차적으로 호출할 수 있다.
도 26b의 2600-1을 참조하면, 디바이스(100)는, 글로벌 명령어(예컨대, 실행)를 정의한 제 1 디스크립션을 이용하여, 홈 화면(런처 화면)에서 카메라 애플리케이션의 아이콘(2601)을 클릭하는 이벤트를 발생시킴으로써, 카메라 애플리케이션을 실행할 수 있다. 도 26b의 2600-2를 참조하면, 카메라 애플리케이션이 실행된 경우, 디바이스(100)에는 사진 촬영 페이지(mainScreen)가 표시될 수 있다. 이때, 디바이스(100)는 사진 촬영 기능 정보를 포함하는 카메라 애플리케이션의 제 2 디스크립션을 이용하여, 사진 촬영을 수행할 수 있다. 예를 들어, 제 2 디스크립션의 기능 정보(예컨대, <appFeature name="사진촬영">)에 사진 촬영을 수행하기 위해서 촬영 버튼(2602)을 클릭하는 이벤트가 필요하다고 정의되어 있는 경우, 디바이스(100)는, 사진 촬영 페이지(mainScreen)에 포함된 촬영 버튼(2602)을 클릭하는 이벤트를 발생시킴으로써, 사진 컨텐츠(2603)를 획득할 수 있다. 이때, 디바이스(100)는 사진 컨텐츠(2603)를 카메라 애플리케이션의 실행 결과 값으로 저장할 수 있다. 그리고 디바이스(100)는 실행 취소 키(예컨대, back key)(2604)를 터치하는 키 이벤트를 발생시켜, 홈 화면으로 돌아갈 수 있다.
도 26c의 2600-3를 참조하면, 디바이스(100)는, 글로벌 명령어(예컨대, 실행)를 정의한 제 3 디스크립션을 이용하여, 홈 화면(런처 화면)에서 채팅 애플리케이션의 아이콘(2605)을 클릭하는 이벤트를 발생시킴으로써, 채팅 애플리케이션을 실행할 수 있다. 도 26c의 2600-4 및 2600-5를 참조하면, 디바이스(100)에는, 로딩 페이지를 거쳐 제 1 페이지(예컨대, 친구 리스트 페이지(friendListTap))가 표시될 수 있다. 이때, 디바이스(100)는, 제 1 페이지(friendListTap)에서 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary))로의 전환 방법 정보를 포함하는 제 4 디스크립션을 이용하여, 제 2 페이지(friendSummary)를 호출할 수 있다.
예를 들어, 제 4 디스크립션의 전환 방법 정보(<stateMachine>)에 제 1 페이지 (friendListTap)에서 제 2 페이지(friendSummary)로 전환하기 위해 친구의 이름을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID="friendListTab" targetUIPageID="friendSummay" action="Click" > )되어 있는 경우, 디바이스(100)는, 제 1 페이지(friendListTap)에서 김명준(2606)을 검색하고, 김명준(2606)을 클릭하는 이벤트를 발생시켜, 제 2 페이지 (friendSummary)를 호출할 수 있다.
한편, 제 4 디스크립션에는, 제 2 페이지(friendSummary)에 포함된 1:1 채팅 버튼(2607)의 기능 정보(예컨대, <appFeature name="대화창열기">)가 정의되어 있을 수 있다.
도 26c의2600-6을 참조하면, 디바이스(100)는, 제 2 페이지(friendSummary)에서 제 3 페이지(chatRoom)로의 전환 방법 정보를 포함하는 제 5 디스크립션을 이용하여, 제 3 페이지(chatRoom)를 호출할 수 있다.
예를 들어, 제 5 디스크립션의 전환 방법 정보(<stateMachine>)에 제 2 페이지(friendSummary)에서 제 3 페이지(chatRoom)로 전환하기 위해 ‘1:1 채팅’ 버튼(2607)을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID="friendSummay" targetUIPageID="chatroom" action="Click" >)되어 있는 경우, 디바이스(100)는, 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary))에서 ‘1:1 채팅’ 버튼(2607)을 클릭하는 이벤트를 발생시켜, 제 3 페이지(chatRoom)를 호출할 수 있다.
도 26c의 2600-7을 참조하면, 디바이스(100)는, 제 3 페이지(chatRoom)에서 제 4 페이지(mediaSendPage)로의 전환 방법 정보를 포함하는 제 6 디스크립션을 이용하여, 제 4 페이지(mediaSendPage)를 호출할 수 있다.
예를 들어, 제 6 디스크립션의 전환 방법 정보(<stateMachine>)에 제 3 페이지(chatRoom)에서 제 4 페이지(mediaSendPage)로 전환하기 위해 ‘미디어 전송 버튼(예컨대, + 버튼)’(2608)을 클릭하는 이벤트가 필요하다고 정의되어 있는 경우, 디바이스(100)는, 제 3 페이지(chatRoom)에서 ‘미디어 전송 버튼(예컨대, + 버튼)’(2608)을 클릭하는 이벤트를 발생시켜, 제 4 페이지(mediaSendPage)를 호출할 수 있다.
도 26c의 2600-8을 참조하면, 디바이스(100)는, 제 4 페이지(mediaSendPage)에서 제 5 페이지(PhotoAlbum)로의 전환 방법 정보를 포함하는 제 7 디스크립션을 이용하여, 제 5 페이지(PhotoAlbum)를 호출할 수 있다.
예를 들어, 제 7 디스크립션의 전환 방법 정보(<stateMachine>)에 제 4 페이지(mediaSendPage)에서 제 5 페이지(PhotoAlbum)로 전환하기 위해 ‘사진 버튼’(2609)을 클릭하는 이벤트가 필요하다고 정의되어 있는 경우, 디바이스(100)는, 제 4 페이지(mediaSendPage)에서 ‘사진 버튼’(2609)을 클릭하는 이벤트를 발생시켜, 제 5 페이지(PhotoAlbum)를 호출할 수 있다.
도 26D의 2600-9를 참조하면, 디바이스(100)는, 제 5 페이지(PhotoAlbum)에서 제 6 페이지(PhotoGridView)로의 전환 방법 정보를 포함하는 제 8 디스크립션을 이용하여, 제 6 페이지(PhotoGridView)를 호출할 수 있다.
예를 들어, 제 8 디스크립션의 전환 방법 정보(<stateMachine>)에는 제 5 페이지(PhotoAlbum)에 제 6 페이지(PhotoGridView)로 전환하기 위해 이미지 폴더 명칭을 클릭하는 이벤트가 필요하다고 정의되어 있는 경우, 디바이스(100)는, 제 5 페이지(PhotoAlbum)에서 전체보기 폴더(2611)를 클릭하는 이벤트를 발생시켜, 제 6 페이지(PhotoGridView)를 호출할 수 있다. 제 6 페이지(PhotoGridView)에는 전체보기 폴더(2611)에 포함된 이미지들의 섬네일이 표시될 수 있다.
도 26D의 2600-11을 참조하면, 디바이스(100)는, 사진 전송 기능을 정의한 제 9 디스크립션(2690)을 이용하여, 사진 전송 기능을 수행할 수 있다. 예를 들어, 제 9 디스크립션(2690)에 최근 획득된 사진의 섬네일을 클릭하는 제 1 명령어가 포함되어 있는 경우, 디바이스(100)는, 제 1 명령어에 따라, 제 6 페이지(PhotoGridView)에서 사진 컨텐츠(2603)의 섬네일(2612)을 클릭하는 이벤트를 발생시켜, 사진 컨텐츠(2603)를 선택할 수 있다.
도 26D의 2600-12를 참조하면, 제 9 디스크립션에 제 5 페이지(PhotoGridView)에서 확인 버튼(2613)을 클릭하는 제 2 명령어가 포함되어 있는 경우, 디바이스(100)는, 제 2 명령어에 따라 제 6 페이지(PhotoGridView)에서 확인 버튼(2613)을 클릭하는 이벤트를 발생시킬 수 있다. 이때, 디바이스(100)는, 확인 버튼(2613)을 클릭하는 이벤트에 따라, 사진 컨텐츠(2603)를 리뷰할 수 있는 제 7 페이지(photoReviewPage)를 표시할 수 있다.
도 26D의 2600-13을 참조하면, 제 9 디스크립션에 제 7 페이지(photoReviewPage)에서 전송 버튼(2613)을 클릭하는 제 3 명령어가 포함되어 있는 경우, 디바이스(100)는, 제 3 명령어에 따라, 제 7 페이지(photoReviewPage)에서 전송 버튼(2613)을 클릭하는 이벤트를 발생시킬 수 있다. 이때, 디바이스(100)는, 전송 버튼(2613)을 클릭하는 이벤트에 따라, 사진 컨텐츠(2603)를 친구 디바이스로 전송할 수 있다.
본 발명의 일 실시예에 의하면, 도 26에서 제 1 디스크립션은 런처 애프리케이션의 화면 구성 정보의 일부이고, 제 2 디스크립션 내지 제 9 디스크립션은 채팅 애플리케이션의 화면 구성 정보의 일부일 수 있다.
도 27a, 27b, 및 27c는, 디바이스가 가상의 디스플레이에 경유 페이지를 표시하는 일례를 설명하기 위한 도면이다.
본 발명의 일 실시예에 의하면, 디바이스(100)가 현재 페이지에서 목적 페이지까지 이동하기 위한 경로를 결정한 경우, 디바이스(100)는, 현재 페이지와 목적 페이지 사이에 표시되는 경유 페이지를 가상의 디스플레이에 표시할 수 있다. 그리고 디바이스(100)는, 사용자에 의해 요청된 적어도 하나의 기능을 수행하는 목적 페이지만을 실제 화면에 표시할 수 있다. 본 명세서에서, 가상의 디스플레이는, 사용자에게 물리적으로 보이지 않는 공간으로서, 디바이스(100)가 명령어 수행을 위해 필요로 하는 가상의 공간일 수 있다.
도 27a에 도시된 바와 같이, 디바이스(100)는, 적어도 하나의 기능의 수행을 요청하는 음성 입력을 수신할 수 있다. 예를 들어, 디바이스(100)는, ‘‘강남역에서 잠실역까지 얼마나 걸리는지 검색 해줘’라는 음성 데이터(2700)를 수신할 수 있다.
디바이스(100)는 음성 데이터(2700)가 수신되는 경우, 자연어 처리 기술에 기반하여, 음성 데이터(2700)를 분석할 수 있다. 예를 들어, 디바이스(100)는, 수신된 음성 데이터(2700)를 텍스트 데이터로 변환하고, 텍스트 데이터를 분석할 수 있다.
예컨대, 디바이스(100)는, 수신된 음성 데이터(예컨대, 강남역에서 잠실역까지 얼마나 걸리는지 검색 해줘)(2700)를 분석하여, ‘지하철 애플리케이션 실행-> 강남 출발역 설정 -> 잠실 도착역 설정 -> 운행 정보 검색’과 같은 명령어 데이터(2700’)를 생성할 수 있다. 디바이스(100)는, 명령어 데이터에서 기능(예컨대, 지하철 애플리케이션 실행, 출발역 설정, 도착역 설정, 운행 정보 검색)과 변수(‘argument’로 표현되기도 함)(예컨대, 강남, 잠실 등)를 구분할 수도 있다. 그리고 디바이스(100)는 기능에 대응하는 UI 엘리먼트 또는 화면 페이지를 추출할 수 있다. 디바이스(100)는, 추출된 UI 엘리먼트에 대한 입력 이벤트를 발생시키는 과정에서 변수가 필요한 경우, 해당 변수를 삽입할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 음성 데이터(2700)를 서버(200)로 전송하면서, 음성 데이터(2700)에 대한 분석을 요청할 수도 있다. 이 경우, 서버(200)는 자연어 처리 기술에 기반하여 음성 데이터(2700)를 분석할 수 있다. 서버(200)는, 음성 데이터(2700)를 분석한 결과를 디바이스(100)에 전송할 수 있다.
디바이스(100)는, 음성 데이터(2700)에 대한 분석이 완료되는 경우, 지하철 애플리케이션의 화면 구성 정보(UI 디스크립션)를 메모리에서 독출할 수 있다. 디바이스(100)는, 지하철 애플리케이션의 화면 구성 정보를 이용하여, 지하철 애플리케이션에서 제공되는 검색 결과 제공 페이지를 목적 페이지로 결정할 수 있다. 또한, 디바이스(100)는, 현재 페이지가 홈 화면(런처 화면)임을 식별할 수 있다.
디바이스(100)는, 지하철 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 홈 화면(런처 화면)에서 지하철 애플리케이션의 검색 결과 제공 페이지에 도달하기 위한 경로를 결정할 수 있다. 예를 들어, 디바이스(100)는, 홈 화면(런처 화면)에서 지하철 애플리케이션을 실행하고, 지하철 애플리케이션의 제 1 페이지(예컨대, 메인 지도 페이지(mainMap)), 제 2 페이지(예컨대, 역 검색 페이지(searchStation)), 제 3 페이지(예컨대, 메뉴 선택 페이지(selectOption)), 제 1 페이지(예컨대, 메인 지도 페이지(mainMap)), 제 2 페이지(예컨대, 역 검색 페이지(searchStation)), 제 3 페이지(예컨대, 메뉴 선택 페이지(selectOption)), 및 제 4 페이지(예컨대, 시간 선택 페이지(timeSelect))를 경유해서, 검색 결과 제공 페이지에 도달하는 경로를 최단 경로로 결정할 수 있다. 디바이스(100)는, 결정된 경로에 따라 제 1 페이지, 제 2 페이지, 제 3 페이지, 제 1 페이지, 제 2 페이지, 제 3 페이지, 제 4 페이지 및 목적 페이지를 순차적으로 호출할 수 있다.
예를 들어, 도 27b의 2700-1을 참조하면, 디바이스(100)는, 글로벌 명령어(예컨대, 실행)를 정의한 제 1 디스크립션을 이용하여, 홈 화면(런처 화면)에서 지하철 애플리케이션의 아이콘(2701)을 클릭하는 이벤트를 발생시킴으로써, 지하철 애플리케이션을 실행할 수 있다.
도 27b의 2700-2를 참조하면,, 디바이스(100)는 지하철 애플리케이션의 로딩 페이지를 거쳐 제 1 페이지(mainMap)를 표시할 수 있다. 이때, 디바이스(100)는, 제 1 페이지(mainMap)에서 제 2 페이지(searchStation)로의 전환 방법 정보를 포함하는 제 2 디스크립션을 이용하여, 제 2 페이지(searchStation)를 호출할 수 있다.
예를 들어, 제 2 디스크립션의 전환 방법 정보(<stateMachine>)에 제 1 페이지(mainMap)에서 제 2 페이지(searchStation)로 전환하기 위해 역 검색 버튼을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID= “mainMap" targetUIPageID = “searchStation” resourceID = “main_tab_btn0” action="Click"/>)되어 있는 경우, 디바이스(100)는, 제 1 페이지(mainMap)에서 역 검색 버튼(2702)을 클릭하는 이벤트를 발생시킴으로써, 제 2 페이지(searchStation)를 호출할 수 있다.
도 27b의 2700-3을 참조하면, 디바이스(100)는 출발역 설정 기능(예컨대, <appFeature name=“출발역설정">)을 정의한 제 3 디스크립션을 이용하여, 제 2 페이지(searchStation)에서 출발역 설정 기능을 수행할 수 있다. 예를 들어, 제 3 디스크립션에 텍스트 편집 창에 텍스트를 입력하는 제 1 명령어가 포함되어 있는 경우, 디바이스(100)는 제 1 명령어에 따라, 제 2 페이지(searchStation)의 텍스트 편집 창(2703)에 출발역인 ‘강남’을 입력할 수 있다. 이때, 제 2 페이지(searchStation)에는 ‘강남’과 관련된 역 이름 리스트들이 표시될 수 있다.
도 27b의 2700-4를 참조하면, 제 3 디스크립션에 텍스트뷰를 클릭하는 제 2 명령어가 포함되어 있는 경우, 디바이스(100)는, 제 2 명령어에 따라, ‘강남’과 관련된 역 이름 리스트들 중에서 ‘강남’(2704)을 클릭하는 이벤트를 발생시킬 수 있다. 이때, 디바이스(100)는, ‘강남’(2704)을 클릭하는 이벤트에 따라, 제 4 페이지(selectOption)를 표시할 수 있다.
도 27b의 2700-5를 참조하면, 제 3 디스크립션에 제 4 페이지(selectOption)의 원형 메뉴에서 출발역 버튼을 클릭하는 제 3 명령어가 포함되어 있는 경우, 디바이스(100)는 제 3 명령어에 따라 제 4 페이지(selectOption)의 원형 메뉴에서 출발역 버튼을 클릭하는 이벤트를 발생시킬 수 있다. 이 경우, ‘강남역’이 출발역으로 설정될 수 있으며, 디바이스(100)는, 도착역을 설정하기 위해 제 1 페이지(mainMap)를 다시 호출할 수 있다.
도 27c의 2700-6을 참조하면, 디바이스(100)는, 제 1 페이지(mainMap)에서 제 2 페이지(searchStation)로의 전환 방법 정보를 포함하는 제 4 디스크립션을 이용하여, 제 2 페이지(searchStation)를 호출할 수 있다.
예를 들어, 제 4 디스크립션의 전환 방법 정보(<stateMachine>)에 제 1 페이지(mainMap)에서 제 2 페이지(searchStation)로 전환하기 위해 역 검색 버튼을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID= “mainMap" targetUIPageID = “searchStation” resourceID = “main_tab_btn0” action="Click"/>)되어 있는 경우, 디바이스(100)는, 제 1 페이지(mainMap)에서 역 검색 버튼(2702)을 클릭하는 이벤트를 발생시킴으로써, 제 2 페이지(searchStation)를 호출할 수 있다.
도 27c의 2700-7을 참조하면, 디바이스(100)는 도착역 설정 기능(예컨대, <appFeature name=“도착역설정">)을 정의한 제 5 디스크립션을 이용하여, 제 2 페이지(searchStation)에서 도착역 설정 기능을 수행할 수 있다.
예를 들어, 제 5 디스크립션에 텍스트 편집 창에 텍스트를 입력하는 제 4 명령어가 포함되어 있는 경우, 디바이스(100)는 제 4 명령어에 따라, 제 2 페이지(searchStation)의 텍스트 편집 창(2703)에 도착역인 ‘잠실’을 입력할 수 있다. 이때, 제 2 페이지(searchStation)에는 ‘잠실’과 관련된 역 이름 리스트들이 표시될 수 있다.
도 27c의 2700-8을 참조하면, 제 5 디스크립션에 텍스트뷰를 클릭하는 제 5 명령어가 포함되어 있는 경우, 디바이스(100)는, 제 5 명령어에 따라, ‘잠실’과 관련된 역 이름 리스트들 중에서 ‘잠실’(2706)을 클릭하는 이벤트를 발생시킬 수 있다. 이때, 디바이스(100)는, ‘잠실’(2706)을 클릭하는 이벤트에 따라, 제 4 페이지(selectOption)를 표시할 수 있다.
도 27c의 2700-9를 참조하면, 제 5 디스크립션에 제 4 페이지(selectOption)의 원형 메뉴에서 도착역 버튼을 클릭하는 제 6 명령어가 포함되어 있는 경우, 디바이스(100)는 제 6 명령어에 따라 제 4 페이지(selectOption)의 원형 메뉴에서 도착역 버튼(2707)을 클릭하는 이벤트를 발생시킬 수 있다. 이 경우, ‘잠실역’이 도착역으로 설정될 수 있으며, 디바이스(100)는 제 4 페이지(예컨대, 시간 선택 페이지(timeSelect))를 호출할 수 있다.
도 27c의 2700-10 및 2700-11을 참조하면, 디바이스(100)는, 운행 정보를 제공하는 기능(예컨대, <appFeature name=“운행정보">)을 정의한 제 6 디스크립션을 이용하여, 검색 결과 제공 페이지에서 운행 정보를 제공할 수 있다.
예를 들어, 제 6 디스크립션에 운행 정보를 제공하기 위해서 제 4 페이지(예컨대, 시간 선택 페이지(timeSelect)의 확인 버튼(button1)을 클릭하는 이벤트가 필요하다고 정의되어 있는 경우, 디바이스(100)는, 제 4 페이지(예컨대, 시간 선택 페이지(timeSelect))의 확인 버튼(2709)을 클릭하는 이벤트를 발생시킬 수 있다. 디바이스(100)는, 확인 버튼(2709)을 클릭하는 이벤트에 따라 검색 결과 제공 페이지를 호출하고, 검색 결과 제공 페이지를 통해서 강남역과 잠실역 간의 지하철 운행 정보를 제공할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 현재 페이지에서 목적 페이지까지 도달하기 위해 경유하는 일부 페이지(예컨대, 2700-2 내지 2700-10에 표시된 페이지)를 가상의 디스플레이에 표시하고, 목적 페이지인 검색 결과 제공 페이지는 사용자에게 실제로 표시해 줄 수 있다.
본 발명의 일 실시예에 의하면, 도 27에서 제 1 디스크립션은 런처 애프리케이션의 화면 구성 정보의 일부이고, 제 2 디스크립션 내지 제 6 디스크립션은 지하철 애플리케이션의 화면 구성 정보의 일부일 수 있다.
도 28는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 이용하여 사용자에 의해 요청된 특정 기능을 수행한 결과 값을 설명하기 위한 도면이다.
도 28을 참조하면, 디바이스(100)는, 도 27a의 음성 명령에 따라, 지하철 애플리케이션에서 강남역과 잠실역 간의 지하철 운행 정보를 제공할 수 있다. 이때, 디바이스(100)는, 지하철 애플리케이션에서 생성된 강남역과 잠실역 간의 지하철 운행 정보를 결과값으로 저장하고, 다른 음성 명령에 대응하는 액션을 수행하는 과정에서 저장된 결과 값을 변수로 이용할 수 있다.
예를 들어, 디바이스(100)는, ‘강남역에서 잠실역까지 얼마나 걸리는지 검색해서 피터(peter)한테 보내줘’라는 음성 명령이 수신되는 경우, 지하철 애플리케이션에서 강남역과 잠실역 간의 지하철 운행 정보(예컨대, 강남-잠실 22:22 출발 22:34 도착)를 검색하고, 검색된 지하철 운행 정보를 지하철 애플리케이션의 실행 결과 값으로 저장할 수 있다. 그리고 디바이스(100)는 채팅 애플리케이션을 실행하고, 피터의 채팅 룸 페이지를 호출하는 입력 이벤트들을 발생시킬 수 있다. 디바이스(100)는, 지하철 애플리케이션의 실행 결과 값으로 저장된 강남역과 잠실역 간의 지하철 운행 정보를 독출하고, 피터의 채팅 룸 페이지의 메시지 입력 창에 강남역과 잠실역 간의 지하철 운행 정보를 추가할 수 있다. 디바이스(100)는, 전송 버튼을 클릭하는 입력 이벤트를 발생시킴으로써, 강남역과 잠실역 간의 지하철 운행 정보(예컨대, 강남-잠실 22:22 출발 22:34 도착)를 피터에게 전송할 수 있다.
한편, 본 발명의 다른 실시예에 의하면, 사용자가 ‘어제 7시경에 피터한테 보낸 메시지 모니카에게 보내줘’라는 음성을 발화하는 경우, 디바이스(100)는, 음성을 분석하여, ‘채팅 애플리케이션 실행, 피터에게 2014,5.17일 6시30부터 7시30분 사이에 전송한 메시지 검색, 검색된 메시지 모니카에게 전송’이라는 분석 데이터를 획득할 수 있다.
디바이스(100)는, 채팅 애플리케이션을 실행하고, 친구 리스트 페이지에서 피터를 선택하는 입력 이벤트를 발생시켜 피터의 채팅 룸 페이지를 호출할 수 있다. 디바이스(100)는 채팅 룸 페이지에서 어제 7시경(예컨대, 2014.5.17 7시03분)에 피터에게 전송한 ‘세미나 장소 및 시간 텍스트’를 추출하고, ‘세미나 장소 및 시간 텍스트’가 표시된 영역을 롱 클릭(예컨대, 2초이상 클릭)하는 입력 이벤트를 발생시킬 수 있다. 이 경우, ‘세미나 장소 및 시간 텍스트’에 대한 메뉴 창이 표시될 수 있다. 메뉴 창에는 복사, 삭제, 전달, 공유, 공지 등이 표시될 수 있다. 디바이스(100)는 메뉴 창에서 ‘전달’을 클릭하는 입력 이벤트를 발생시킴으로써 친구 리스트 페이지를 호출할 수 있다. 디바이스(100)는 친구 리스트 페이지에서 ‘모니카’를 선택하는 입력 이벤트 및 ‘확인 버튼’을 선택하는 입력 이벤트를 발생시켜, 모니카에게 ‘세미나 장소 및 시간 텍스트’를 전달할 수 있다.
도 29는 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 실행 여부에 기초하여 소정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
단계 S2910에서, 디바이스(100)는, 제 1 애플리케이션을 실행할 수 있다. 제 1 애플리케이션은 다양할 수 있다. 예를 들어, 제 1 애플리케이션은, 카메라 애플리케이션, 사전 애플리케이션, 번역 애플리케이션, 데이터 전송 애플리케이션, 음악 재생 애플리케이션, 동영상 재생 애플리케이션, 메시지 애플리케이션, 소셜 미디어 애플리케이션, 지도 애플리케이션, 지하철 애플리케이션, 버스 애플리케이션, 방송 애플리케이션, 게임 애플리케이션, 운동 지원 애플리케이션, 결제 애플리케이션 중 적어도 하나일 수 있으나, 이에 한정되는 것은 아니다.
단계 S2920에서, 디바이스(100)는, 제 1 애플리케이션을 실행하는 중에 사용자 입력을 수신할 수 있다. 예를 들어, 디바이스(100)는 특정 기능의 수행을 요청하는 사용자 입력을 수신할 수 있다. 이때, 사용자 입력은, 음성 입력, 제스처 입력(예컨대, 터치 입력, 에어 제스처 입력), 모션 입력, 벤딩 입력, 키 입력, 다중 입력 중 하나일 수 있다.
단계 S2930에서, 디바이스(100)는, 요청된 기능이 실행 중인 제 1 애플리케이션을 통해서 수행 가능한지 판단할 수 있다. 예를 들어, 디바이스(100)는 제 1 애플리케이션에 관한 정보를 이용하여, 사용자에 의해 요청된 기능이 제 1 애플리케이션에서 제공되는 기능인지 판단할 수 있다.
단계 S2940에서, 디바이스(100)는, 제 1 애플리케이션에서 목적 페이지를 결정할 수 있다. 예를 들어, 사용자의 음성 입력에 의해 요청된 기능이 제 1 애플리케이션에서 제공하는 기능인 경우, 디바이스(100)는 제 1 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여 목적 페이지를 결정할 수 있다.
단계 S2950에서, 디바이스(100)는, 사용자에 의해 요청된 기능이 제 1 애플리케이션에서 제공하는 기능이 아닌 경우, 다른 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 다른 애플리케이션에서 목적 페이지를 결정할 수도 있다.
단계 S2960에서, 디바이스(100)는, 현재 페이지에서 목적 페이지까지 경로를 결정할 수 있다.
예를 들어, 디바이스(100)에서 제 1 애플리케이션이 실행 중이므로, 디바이스(100)는, 제 1 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 화면에 표시되고 있는 현재 페이지를 식별할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 현재 페이지에 포함된 UI 엘리먼트(UI 객체)에 관한 정보를 적어도 하나의 애플리케이션에 대응하는 UI 디스크립션에 정의된 UI 엘리먼트(UI 객체)에 관한 정보와 비교할 수 있다. 그리고 디바이스(100)는, 화면 구성 정보(UI 디스크립션)에 정의된 페이지들 중 현재 페이지에 포함된 UI 엘리먼트들(UI 객체들)과 가장 유사한 UI 엘리먼트들(UI 객체들)을 포함하는 페이지를 추출할 수 있다. 이때, 화면 구성 정보(UI 디스크립션)에서 추출된 페이지가 현재 페이지일 수 있다.
예를 들어, 현재 페이지가 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하고, 제 1 애플리케이션에서 제공되는 페이지들 중 제 1 페이지도 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하는 경우, 디바이스(100)는 현재 페이지가 제 1 애플리케이션에서 제공되는 제 1 페이지임을 식별할 수 있다.
디바이스(100)는, 현재 페이지에 대한 식별이 완료된 경우, 현재 페이지에서 목적 페이지까지 이동하기 위한 경로를 결정할 수 있다. 현재 페이지에서 목적 페이지까지 이동하기 위한 경로가 복수 개 존재하는 경우, 디바이스(100)는 복수의 경로 중에서 최단 경로를 결정할 수 있다.
도 30a 및 30b는, 디바이스가 실행 중인 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 사용자의 음성 입력에 대응하는 기능을 수행하는 일례를 설명하기 위한 도면이다. 도 30a 및 30d에서는, 애플리케이션이 버스 정보를 제공하는 버스 애플리케이션인 경우를 예로 들어 설명하기로 한다.
도 30a에 도시된 바와 같이, 디바이스(100)는 버스 애플리케이션을 실행할 수 있다. 이 경우 디바이스(100)에는 버스 애플리케이션의 즐겨 찾기 페이지가 표시될 수 있다(3000-1).
디바이스(100)는 버스 애플리케이션의 즐겨 찾기 페이지를 표시하는 중에 사용자의 음성 입력을 수신할 수 있다. 예를 들어, 디바이스(100)는, ‘3002번 버스 언제 오는지 보여줘..’라는 음성 데이터(3000)를 수신할 수 있다.
디바이스(100)는 음성 데이터(3000)가 수신되는 경우, 자연어 처리 기술에 기반하여, 음성 데이터(3000)를 분석한 결과 데이터(3000’)을 생성할 수 있다. 예를 들어, 디바이스(100)는, 수신된 음성 데이터(3000)를 텍스트 데이터로 변환하고, 자연어 처리(Natural Language Processing)에 기반하여 텍스트 데이터를 분석할 수 있다. 예컨대, 디바이스(100)는, 수신된 음성 데이터(예컨대, 3002번 버스 언제 오는지 보여줘)(3000)를 분석하여, ‘버스 애플리케이션 실행 -> 3002 노선 확인 또는 3002 도착 시간 정보 제공’과 같은 명령어 데이터를 포함하는 결과 데이터(3000’)를 생성할 수 있다. 디바이스(100)는 명령어 데이터에서 기능(예컨대, 버스 노선 확인 또는 도착 시간 정보 제공)과 변수(‘argument’로 표현되기도 함)(예컨대, 버스번호: ‘3002’ 등)를 구분할 수도 있다. 그리고 디바이스(100)는 기능에 대응하는 UI 엘리먼트 또는 화면 페이지를 추출할 수 있다. 디바이스(100)는, 추출된 UI 엘리먼트에 대한 입력 이벤트를 발생시키는 과정에서 변수가 필요한 경우, 해당 변수를 삽입할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 음성 데이터(3000)를 서버(200)로 전송하면서, 음성 데이터(3000)에 대한 분석을 요청할 수도 있다. 이 경우, 서버(200)는 자연어 처리 기술에 기반하여 음성 데이터(3000)를 분석할 수 있다. 서버(200)는, 음성 데이터(3000)를 분석한 결과 데이터(3000’)를 디바이스(100)에 전송할 수 있다.
디바이스(100)는, 음성 데이터(3000)에 대한 분석이 완료된 경우, 버스 도착 시간 검색 기능이 현재 실행 중인 버스 애플리케이션에서 제공되는지 판단할 수 있다. 예를 들어, 디바이스(100)는, 버스 애플리케이션의 화면 구성 정보 중 버스 애플리케이션의 기능 정보가 정의된 제 1 디스크립션를 추출할 수 있다. 그리고 디바이스(100)는 제 1 디스크립션에 기초하여, 버스 애플리케이션에서 버스 도착 시간 검색 기능이 제공됨을 확인할 수 있다. 이 경우, 디바이스(100)는, 버스 도착 시간 검색 결과를 제공하는 노선 정보 페이지를 목적 페이지로 결정할 수 있다.
또한, 본 발명의 일 실시예에 의하면, 디바이스(100)는, 버스 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지가 버스 애플리케이션의 즐겨 찾기 페이지(favorite)임을 식별할 수도 있다.
한편, 디바이스(100)는, 버스 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 즐겨 찾기 페이지(현재 페이지)에서 노선 정보 페이지(목적 페이지)로 이동하기 위한 경로를 결정할 수 있다. 예를 들어, 디바이스(100)는, 즐겨 찾기 페이지(favorite)에서 노선 번호 검색 페이지(route)를 거쳐 노선 정보 페이지(routeInfo)로 이동하는 제 1 경로를 최단 경로로 결정할 수 있다.
도 30b의 3000-2를 참조하면, 디바이스(100)는, 즐겨 찾기 페이지(favorite)에서 노선 번호 검색 페이지(route)로의 전환 방법 정보를 포함하는 제 2 디스크립션을 이용하여, 노선 번호 검색 페이지(route)를 호출할 수 있다. 예를 들어, 제 2 디스크립션의 전환 방법 정보(<stateMachine>)에는 즐겨 찾기 페이지(favorite)에서 노선 번호 검색 페이지(route)로 전환하기 위해 텍스트뷰를 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID = “favorite" targetUIPageID = “route“ action="Click">)되어 있으므로, 디바이스(100)는, ‘노선 번호 탭’(3001)을 클릭하는 이벤트를 발생시켜, 노선 번호 검색 페이지(route)를 호출할 수 있다.
도 30b의 3000-3을 참조하면, 디바이스(100)는, 버스 노선 확인 기능(예컨대, <appFeature name=“노선확인">)이 정의된 제 3 디스크립션을 이용하여, 버스 노선을 검색할 수 있다. 예를 들어, 제 3 디스크립션에 텍스트 편집 창에 버스 번호를 입력하는 제 1 명령어가 포함되어 있는 경우, 디바이스(100)는 제 1 명령어에 따라, 노선 번호 검색 페이지(route)의 텍스트 입력 창(3002)에 버스 번호인 ‘3002’를 입력할 수 있다. 이때, 노선 번호 검색 페이지(route)에는 ‘3002’와 관련된 버스 이름 리스트들이 표시될 수 있다.
도 30b의 3000-4 및 3000-5를 참조하면, 제 3 디스크립션에는 텍스트뷰를 클릭하는 제 2 명령어가 포함되어 있는 경우, 디바이스(100)는, 제 2 명령어에 따라, ‘3002’와 관련된 버스 이름 리스트 중에서 ‘3002(직행)’(3003)을 클릭하는 이벤트를 발생시킬 수 있다. 이때, 디바이스(100)는, 노선 정보 페이지(routeInfo)를 통해 ‘3002(직행)’(3003)의 노선 정보 및 도착 시간 정보를 표시할 수 있다.
사용자는 노선 정보 페이지(목적 페이지)를 통해 3002번 버스의 도착 시간 또는 위치를 확인할 수 있다.
본 발명의 일 실시예에 의하면, 도 30에서 제 1 디스크립션은 런처 애프리케이션의 화면 구성 정보의 일부이고, 제 2 디스크립션 내지 제 3 디스크립션은 버스 애플리케이션의 화면 구성 정보의 일부일 수 있다.
도 31은 본 발명의 일 실시예에 따르는, 디바이스가 애플리케이션의 화면 구성 정보를 이용하여, 제스처 입력에 대응하는 소정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
단계 S3110에서, 디바이스(100)는, 소정 기능의 수행을 요청하는 제스처 입력 수신할 수 있다. 제스처 입력은 터치 입력 또는 에어 제스처 입력을 포함할 수 있다.
예를 들어, 사용자는 소정 패턴의 제스처(예컨대, 별을 그리는 제스처)를 소정 기능(예컨대, 클라우드 서버에 사진을 업로드하는 기능)의 수행을 요청하는 제스처로 설정할 수 있다.
단계 S3120에서, 디바이스(100)는, 제스처 입력에 대응되는 목적 페이지를 결정할 수 있다. 예를 들어, 별을 그리는 제스처가 클라우드 서버에 사진을 업로드하는 기능의 수행을 요청하는 제스처로 설정될 수 있다. 이 경우, 디바이스(100)는 별을 그리는 제스처가 감지되면, 파일 전송 애플리케이션의 사진 업로드 페이지를 목적 페이지로 결정할 수 있다.
단계 S3130에서, 디바이스(100)는, 애플리케이션의 UI 디스크립션을 이용하여, 현재 페이지에서 목적 페이지까지 이동하기 위한 경로를 결정할 수 있다.
예를 들어, 디바이스(100)는 현재 페이지를 식별하고, 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지에서 목적 페이지까지 이동하기 위한 최단 경로를 결정할 수 있다.
단계 S3140에서, 디바이스(100)는, 결정된 경로에 따라, 경유 페이지 및 목적 페이지를 호출할 수 있다. 예를 들어, 결정된 경로가 현재 페이지에서, 제 1 경유 페이지 및 제 2 경유 페이지를 거쳐 목적 페이지에 도달하는 경로인 경우, 디바이스(100)는, 제 1 경유 페이지, 제 2 경유 페이지, 목적 페이지를 순차적으로 호출할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 제 1 경유 페이지, 제 2 경유 페이지, 목적 페이지 모두를 순차적으로 실제 화면에 표시할 수 있다. 본 발명의 다른 실시예에 의하면, 디바이스(100)는, 제 1 경유 페이지 및 제 2 경유 페이지는 가상의 디스플레이에 표시하고, 목적 페이지만을 실제 화면에 표시할 수도 있다.
단계 S3130 및 단계 S3140은 도 17의 단계 S1720 및 단계 S1730에 대응하므로, 구체적은 설명은 생략하기로 한다.
단계 S3150에서, 디바이스(100)는, 목적 페이지를 통해, 제스처 입력에 의해 요청된 소정 기능을 수행할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 사용자에 의해 요청된 기능을 수행하기 위한 입력 이벤트를 발생시킬 수 있다. 예를 들어, 사용자에 의해 요청된 기능이 사진 업로드 기능인 경우, 디바이스(100)는 목적 페이지에 포함된 업로드 버튼을 터치하는 입력 이벤트를 발생시킴으로써, 사진 업로드 기능을 수행할 수 있다.
도 32은 디바이스가 애플리케이션의 화면 구성 정보를 이용하여, 제스처 입력에 대응하는 소정 기능을 수행하는 일례를 나타내는 도면이다. 도 32에서는, 좌측 상단에서 우측 하단으로 드래그하는 드래그 입력이, 채팅 애플리케이션 실행 및 친구(예컨대, 고송구)와 보이스톡 수행과 매핑된 경우를 예로 들어 설명하기로 한다.
도 32의 3210을 참조하면, 디바이스(100)는, 홈 화면의 좌측 상단에서 우측 하단으로 드래그하는 드래그 입력(3200)을 수신할 수 있다. 디바이스(100)는, 드래그 입력(3200)이 채팅 애플리케이션에서 보이스톡의 수행을 요청하는 제스처 임을 확인할 수 있다.
디바이스(100)는, 친구(예컨대, 고송구)와의 통화 연결 기능을 제공하는 보이스톡 페이지를 목적 페이지로 결정할 수 있다. 또한, 디바이스(100)는, 현재 페이지가 홈 화면임을 식별할 수 있다.
디바이스(100)는, 채팅 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 홈 화면에서 보이스톡 페이지에 도달하기 위한 경로를 결정할 수 있다. 예를 들어, 디바이스(100)는, 홈 화면에서 채팅 애플리케이션을 실행하고, 채팅 애플리케이션의 제 1 페이지(예컨대, 친구 리스트 페이지(friendListTap)) 및 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary))를 경유해서, 보이스톡 페이지(예컨대, VoiceTalk)에 도달하는 경로를 최단 경로로 결정할 수 있다.
디바이스(100)는, 결정된 경로에 따라 제 1 페이지, 제 2 페이지 및 목적 페이지를 순차적으로 표시할 수 있다.
도 32의 3220을 참조하면, 디바이스(100)는, 채팅 애플리케이션의 아이콘을 클릭하는 이벤트를 발생시킴으로써, 채팅 애플리케이션을 실행할 수 있다. 그리고 채팅 애플리케이션의 로딩 페이지를 표시할 수 잇다.
도 32의 3230을 참조하면, 디바이스(100)에는, 제 1 페이지(예컨대, 친구 리스트 페이지(friendListTap))가 표시될 수 있다. 디바이스(100)는, 제 1 페이지 (예컨대, 친구 리스트 페이지(friendListTap))에서 고송구(3201)를 검색할 수 있다.
도 32의 3240을 참조하면, 디바이스(100)는 제 1 페이지(예컨대, 친구 리스트 페이지(friendListTap))에 포함된 고송구(3201) 객체를 클릭하는 이벤트를 발생시켜, 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary))를 호출할 수 있다.
도 32의 3250을 참조하면, 디바이스(100)는, 제 2 페이지(예컨대, 친구 정보 요약 페이지(friendSummary))에서 ‘보이스톡’ 버튼(3202)을 클릭하는 이벤트를 발생시켜, 목적 페이지인 보이스톡 페이지를 호출할 수 있다. 디바이스(100)는 보이스톡 페이지에 포함된 통화 하기 버튼(3203)을 클릭하는 이벤트를 발생시킬 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여 현재 페이지부터 목적 페이지까지 각 페이지마다 사용자가 입력하는 것과 같은 입력 이벤트를 자동으로 발생시키므로, 디바이스(100)는, 손으로 디바이스(100)를 직접 조작하는 것과 같은 경험을 사용자에게 제공할 수 있다.
도 33는 본 발명의 일 실시예에 따르는, 디바이스가 기 설정된 조건에 기반하여 소정 기능을 수행하는 방법을 설명하기 위한 순서도이다.
단계 S3310에서, 디바이스(100)는, 기능이 수행되기 위한 조건을 포함하는 사용자 입력을 수신할 수 있다. 예를 들어, 사용자 입력에는, 조건 정보, 조건이 만족되는 경우에 수행해야 하는 기능 정보 등이 포함될 수 있다.
본 발명의 일 실시예에 의하면, 기능이 수행되기 위한 조건은, 일정 기반 조건, 센서 입력 기반 조건, 애플리케이션 상태 기반 조건, 사용자 정의 기반 조건 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다.
일정 기반 조건을 포함하는 사용자 입력은, 사용자에 의해 설정된 특정 시간 또는 일정 시간 간격으로 소정 기능의 수행을 요청하는 사용자 입력을 의미할 수 있다.
센서 입력 기반 조건을 포함하는 사용자 입력은, 센서에서 센싱되는 값이 임계 값에 도달하는 경우에 소정 기능을 수행할 것을 요청하는 사용자 입력을 의미할 수 있다. 예를 들어, 디바이스(100)는, 심장 박동수가 10% 이상 증가 또는 급격하게 느려지는 경우, 경고 메시지를 출력하거나 응급 센터에 전화하라는 명령이 포함된 사용자 입력이 수신된 것으로 판단할 수 있다.
애플리케이션 상태 기반 조건을 포함하는 사용자 입력은, 특정 애플리케이션이 변화되는 상태에 따라 소정 기능의 수행을 요청하는 사용자 입력을 의미할 수 있다. 예를 들어, 디바이스(100)는, 디바이스(100)에 사용자의 상태가 ‘회의 중’으로 설정된 상황에서 메시지 애플리케이션을 통해 메시지가 수신되는 경우, 자동으로 상대 디바이스에 응답 메시지를 전송할 것을 요청하는 사용자 입력이 수신된 것으로 판단할 수 있다.
단계 S3320에서, 디바이스(100)는, 센싱 정보를 획득할 수 있다.
본 발명의 일 실시예에 의하면, 센싱 정보는, 센서에서 측정되는 정보일 수도 있고, 애플리케이션을 통해 센싱되는 정보일 수도 있다. 예를 들어, 센싱 정보는, 가속도 정보, 위치 정보, 온도 정보, 습도 정보, 심박수 정보, 네트워크 상태 정보(예컨대, LTE에서 Wifi로 변경 등), 및 사용자의 상태 정보(예컨대, 수면 상태 or 운동 상태 등) 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다.
본 발명에 일 실시예에 의하면, 디바이스(100)는 직접 센싱 정보를 생성할 수도 있고, 외부의 웨어러블 디바이스에서 생성된 센싱 정보를 수신할 수도 있다.
본 발명의 일 실시예에 의하면, 웨어러블 디바이스는, 손목 시계, 밴드, 안경, 목걸이, 반지, 헤어핀, 모자, 장갑, 골무, 신발, 언더웨어(underwear) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
단계 S3330에서, 디바이스(100)는, 센싱 정보에 기초하여, 조건의 만족 여부를 판단할 수 있다. 예를 들어, 디바이스(100)는, 센싱 정보와 조건을 비교할 수 있다. 센싱 정보에 포함된 값이 조건에 포함된 값과 일치하는 경우, 디바이스(100)는 조건이 만족된다고 판단할 수 있다.
단계 S3340에서, 디바이스(100)는, 조건이 만족되는 경우, 목적 페이지를 통해, 사용자에 의해 요청된 기능을 수행할 수 있다. 본 발명의 일 실시예에 의하면, 디바이스(100)는, 현재 페이지를 식별하고, 현재 페이지로부터 목적 페이지까지 이동하기 위한 경로를 결정할 수 있다.
예를 들어, ‘통신 네트워크가 LTE에서 Wifi로 변경’이라는 조건과 ‘오늘 찍은 사진들을 클라우드 서버에 업로드’라는 명령이 매핑되어 있는 경우, 디바이스(100)는, 디바이스(100)에 이용되는 통신 네트워크가 LTE에서 Wifi로 변경되면, 자동으로 오늘 찍은 사진들을 클라우드 서버에 동기화할 수 있다.
좀 더 구체적으로 살펴보면, 디바이스(100)에 이용되는 통신 네트워크가 LTE에서 Wifi로 변경되는 경우, 디바이스(100)는 클라우드 서버에 접속하기 위한 클라우드 애플리케이션의 업로드 페이지를 목적 페이지로 결정할 수 있다. 그리고 디바이스(100)는, 현재 페이지를 식별하고, 클라우드 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지부터 클라우드 애플리케이션의 업로드 페이지까지 도달하기 위한 UI 경로를 결정할 수 있다.
디바이스(100)는, 결정된 UI 경로에 따라, 클라우드 애플리케이션을 실행하고, 클라우드 애플리케이션의 홈 페이지를 표시할 수 있다. 디바이스(100)는, 클라우드 애플리케이션의 홈 페이지에서 ‘업로드 버튼’을 터치하는 이벤트를 발생시켜, 사진 선택 페이지를 호출할 수 있다. 디바이스(100)는 사진 선택 페이지에서 ‘오늘 촬영된 사진들’을 모두 선택하는 이벤트를 발생시킬 수 있다. 그리고 디바이스(100)는, 업로드 페이지를 호출하여 표시하고, 업로드 페이지에서 ‘동기화’ 버튼을 누르는 이벤트를 발생시킴으로써, 클라우드 서버에 자동으로 사진들을 업로드할 수 있다.
도 34는 본 발명의 일 실시예에 따르는, 조건을 설정하는 인터페이스를 설명하기 위한 도면이다.
도 34를 참조하면, 디바이스(100)는, 애플리케이션의 특정 기능을 활성화하기 위한 조건을 설정할 수 있는 인터페이스(예컨대, GUI: Graphical user interface)를 제공할 수 있다. 사용자는 인터페이스를 통해 조건(3410) 및 기능(명령어)(3420)를 정의할 수 있다.
도 35a, 및 35b는 디바이스가 기 설정된 조건에 기반하여 TV를 제어하는 일례를 나타내는 도면이다.
도 35a에 도시된 바와 같이, 사용자는 인터페이스를 통해 조건(예컨대, 현재 시간이 주말 오후 3시 56분이면)(3510) 및 기능(예컨대, TV가 켜져 있는 경우 Channel을 11번으로 변경)(3520)을 정의할 수 있다.
디바이스(100)는 사용자에 의해 입력된 기능(3520)을 명령어(3530)로 변환할 수 있다. 예를 들어, 디바이스(100)는, ‘TV Channel을 11번으로 변경’을 ‘컨트롤 애플리케이션 실행하고 키패드에서 1입력 1입력’으로 변환할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 후에 사용자에 의해 정의된 조건이 만족되는 경우, 컨트롤 애플리케이션의 화면 구성 정보를 이용하여, 명령어들을 자동으로 수행할 수 있다. 디바이스(100)는 시간 정보에 기초하여, 조건이 만족되는지 판단할 수 있다. 예를 들어, 디바이스(100)는, 현재 시간이 토요일 오후 3시 56인 경우, 사용자에 의해 기 정의된 조건(현재 시간이 주말 오후 3시 56분)이 만족되었다고 판단할 수 있다.
도 35b의 3510을 참조하면, 디바이스(100)는, 기 정의된 조건(현재 시간이 주말 오후 3시 56분)이 만족된 경우, 글로벌 명령어(예컨대, 실행)를 정의한 제 1 디스크립션을 이용하여, 홈 화면(런처 화면)에서 UI 엘리먼트 애플리케이션의 아이콘(3501)을 클릭하는 이벤트를 발생시킬 수 있다.
도 35의 3520을 참조하면, 디바이스(100)는, 아이콘(3501)을 클릭하는 이벤트에 따라, 컨트롤 애플리케이션을 실행하고, 컨트롤 페이지(sourceUIPageID =“control")를 표시할 수 있다. 이때, 디바이스(100)는 컨트롤 페이지에서 키패드 페이지(UIPageID=“keypad")로의 전환 방법 정보를 포함하는 제 2 디스크립션을 이용하여 키패드 페이지를 호출할 수 있다. 이때, 제 2 디스크립션은, 컨트롤 애플리케이션의 화면 구성 정보에 정의되어 있을 수 있다.
예를 들어, 제 2 디스크립션의 전환 방법 정보((<stateMachine>)에는 컨트롤 페이지에서 키패드 페이지로 전환하기 위해 특정 버튼(예컨대, resourceID가 remote_control_more인 버튼)을 클릭하는 이벤트가 필요하다고 정의(예컨대, <transition sourceUIPageID=“control" targetUIPageID=“keypad" action="Click" resourceID="remote_control_more" />)되어 있을 수 있으므로, 디바이스(100)는, 컨트롤 페이지에서 위쪽 방향키가 포함된 버튼(3502)을 클릭하는 이벤트를 발생시켜, 원격 제어 패널이 포함된 키패드 페이지를 표시할 수 있다.
도 35b의 3530을 참조하면, 디바이스(100)는, ‘1’을 입력하는 기능 정보(예컨대, <appFeature name=“1입력">)를 포함하는 제 3 디스크립션을 이용하여, 11을 입력할 수 있다. 예를 들어, 제 3 디스크립션에는 원격 제어 패널에서 1을 클릭하는 이벤트(예컨대, <featureEntry pageID=“keypad" action="Click“ resourceID=“remote_control_panel_1” />)가 포함되어 있으므로, 디바이스(100)는, 원격 제어 패널에서 ‘1’을 클릭하는 이벤트를 두 번 발생시켜, 11을 입력할 수 있다. 이때, 디바이스(100)는 TV의 채널을 11로 변경하라는 제어 명령을 TV로 전송할 수 있다.
도 36a 및 36b는 디바이스가 기 설정된 조건에 기반하여 알람 설정을 취소하는 일례를 나타내는 도면이다.
도 36a 및 도 36b에서는, 사용자가 일어나는 경우(조건), 사용자가 일어난 시점부터 1시간 내의 알람 설정을 자동으로 취소(명령)하도록 디바이스(100)에 설정되어 있는 경우를 예로 들어 설명하기로 한다.
도 36a를 참조하면, 스마트 워치(3600)는 사용자의 상태 정보를 수집할 수 있다. 예를 들어, 스마트 워치(3600)는, 사용자의 위치(위치 센서 이용), 사용자의 이동(가속도 센서 이용), 사용자의 온도, 사용자로부터 발생되는 소리(마이크로폰 이용), 애플리케이션 사용 여부(터치 센서 이용) 등을 감지함으로써, 사용자가 현재 수면(sleep) 상태인지 또는 기상(wake-up) 상태 인지 여부를 판단할 수 있다.
스마트 워치(3600)는 사용자에 대한 센싱 정보를 디바이스(100)로 전송할 수 있다. 예를 들어, 스마트 워치(3600)는, 사용자가 오전 5시53분에 기상하는 경우, 사용자가 기상했다는 정보를 디바이스(100)에 전송할 수 있다.
디바이스(100)는, 오전 5시53분에 사용자가 기상했다는 정보를 스마트 워치(3600)로부터 수신할 수 있다. 이 경우, 디바이스(100)는, 오전 5시53분부터 1시간 내에 존재하는 알람 설정을 취소하기 위해, 알람 설정 페이지를 목적 페이지로 결정할 수 있다.
한편, 본 발명의 일 실시예에 의하면, 디바이스(100)가 사용자의 상태를 판단할 수도 있다. 예를 들어, 디바이스(100)는, 스마트 워치(3600)로부터 사용자의 위치 정보, 사용자의 이동 정보, 사용자의 온도 정보, 사용자로부터 발생되는 소리 정보, 스마트 워치(3600)에 설치된 애플리케이션의 사용 여부에 관한 정보 등을 수신하고, 수신된 정보를 이용하여 사용자가 기상했는지 여부를 결정할 수 있다.
디바이스(100)는, 알람 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지에서 알람 설정 페이지(목적 페이지)까지 이동하기 위한 경로를 결정할 수 있다. 디바이스(100)는, 결정된 경로에 따라, 알람 애플리케이션의 아이콘(3601)을 탭하는 입력 이벤트를 발생시킴으로써, 알람 애플리케이션을 실행할 수 있다.
도 36b를 참조하면, 디바이스(100)는, 알람 애플리케이션의 알람 설정 페이지를 호출하여 표시할 수 있다. 이때, 디바이스(100)에는, 오전 5시 55분, 오전 6시, 오전 6시 15, 오전 6시 25에 알람 출력 기능이 활성화(3602)되어 있을 수 있다(3610)).
디바이스(100)는, 사용자가 기상한 시간인 오전 5시53분부터 1시간 내에 존재하는 알람 설정을 취소하기 위해, 오전 5시 55분, 오전 6시, 오전 6시 15분, 오전 6시 25분 각각에 대응하는 시계 아이콘을 터치하는 입력을 발생시킬 수 있다. 이때, 사용자가 기상한 시점부터 1 시간 내에 존재하는 알람 출력 기능이 비활성화(3603)될 수 있다(3620).
도 37은 디바이스가 기 설정된 조건에 기반하여 알림 메시지를 출력하는 일례를 나타내는 도면이다.
도 37을 참조하면, 사용자는 인터페이스를 통해 조건(예컨대, 세탁기의 세탁 동작이 완료)(3710) 및 기능(예컨대, 스마트폰 Notfication에 “세탁완료” 메시지 등록)(3720)을 정의할 수 있다.
디바이스(100)는 사용자에 의해 입력된 기능(3720)을 명령어(3730)로 변환할 수 있다. 예를 들어, 디바이스(100)는, ‘스마트폰 Notification에 “세탁완료” 메시지 등록’을 ‘알림 애플리케이션 실행하고 ‘세탁 완료’ 메시지 입력하고 메시지 표시’로 변환할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 후에 사용자에 의해 정의된 조건이 만족되는 경우(예컨대, 세탁기로부터 세탁 완료 메시지가 수신되는 경우), 알림 애플리케이션의 화면 구성 정보를 이용하여, ‘세탁 완료’ 메시지를 화면에 표시할 수 있다.
도 38는 본 발명의 일 실시예에 따르는, 디바이스가 가이드 정보를 제공하는 방법을 설명하기 위한 순서도이다.
단계 S3810에서, 디바이스(100)는, 제스처 입력을 수신할 수 있다. 이때, 제스처 입력은 가이드 정보를 요청하는 입력일 수 있다.
한편, 가이드 정보를 요청하는 입력은 제스처 입력에 제한되는 것은 아니다. 예를 들어, 가이드 정보를 요청하는 입력은 제스처 입력 이외에 음성 입력, 모션 입력, 벤딩 입력, 키 입력, 다중 입력 등일 수도 있다.
단계 S3820에서, 디바이스(100)는, 현재 페이지를 식별할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 현재 페이지에 포함된 UI 엘리먼트(UI 객체)에 관한 정보를 애플리케이션의 화면 구성 정보(UI 디스크립션)에 정의된 UI 엘리먼트(UI 객체)에 관한 정보와 비교할 수 있다. 그리고 디바이스(100)는, 화면 구성 정보(UI 디스크립션)에 정의된 페이지들 중 현재 페이지에 포함된 UI 엘리먼트들(UI 객체들)과 가장 유사한 UI 엘리먼트들(UI 객체들)을 포함하는 페이지를 추출할 수 있다. 이때, 화면 구성 정보(UI 디스크립션)에서 추출된 페이지가 현재 페이지일 수 있다.
예를 들어, 현재 페이지가 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하고, 메신저 애플리케이션에서 제공되는 페이지들 중 제 1 페이지도 제 1 객체, 제 2 객체, 제 3 객체, 제 4 객체를 포함하는 경우, 디바이스(100)는 현재 페이지가 메신저 애플리케이션에서 제공되는 제 1 페이지임을 식별할 수 있다.
단계 S3830에서, 디바이스(100)는 현재 페이지에서 제공 가능한 기능들을 검출할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 애플리케이션을 구동하기 위한 플랫폼과 애플리케이션이 상호 송수신하는 정보로부터 현재 페이지에서 제공 가능한 기능들에 관한 정보를 추출할 수 있다.
또한, 본 발명의 일 실시예에 의하면, 디바이스(100)는 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지에서 제공 가능한 기능들을 검출할 수도 있다. 예를 들어, 애플리케이션의 화면 구성 정보(UI 디스크립션)에는, 현재 페이지에 대응하는 기능 정보가 ‘메시지 전송’, ‘사진 전송’ 등으로 정의되어 있을 수 있다.
단계 S3840에서, 디바이스(100)는 검출된 기능들을 포함하는 가이드 정보를 제공할 수 있다.
본 발명의 일 실시예에 의하면, 디바이스(100)는, 사용되는 빈도가 높거나 우선 순위가 높은 순서로 검출된 기능들을 표시할 수 있다. 본 발명의 일 실시예에 의하면, 가이드 정보는 팝업 창 형태로 제공될 수 있다.
도 39는 디바이스가 가이드 정보를 제공하는 일례를 나타내는 도면이다. 도 39에서는 애플리케이션이 채팅 애플리케이션인 경우를 예로 들어 설명하기로 한다.
디바이스(100)는, 사용자의 음성 입력 패턴을 분석할 수 있다. 예를 들어, 사용자로부터 ‘OOO톡 실행 Tom 에게 “안녕하세요” 메시지 전송, OOO톡 실행 Peter 에게 “반갑습니다” 메시지 전송, OOO톡 실행 Andrew 에게 “어디세요” 메시지 전송’과 같은 사용자 음성 입력들(3910)을 수신할 수 있다. 이때, 디바이스(100)는, 사용자 음성 입력들(3910)을 분석하여, ‘OOO 톡 실행 {argument1} 에게 {argument2} 메시지 전송’과 같은 사용자 입력 패턴 정보(3920)를 생성할 수 있다. 이때, 사용자 입력 패턴 정보(3920)에는, 사용자의 명령어 사용 횟수 정보 등도 포함된 수 있다.
디바이스(100)는, 사용자 입력 패턴(3920)에 기초하여, 사용자가 음성 명령어를 편하게 입력할 수 있도록 가이드하는 정보를 제공할 수 있다. 예를 들어, 디바이스(100)는, 사용자의 발화가 완료되기 전이라도 스트리밍 ARS 방식(도 21b 참조)을 이용하여, 입력되는 순서대로 음성 데이터를 해석하여, 가이드 정보를 제공할 수 있다.
도 39의 3900-1을 참조하면, 디바이스(100)는, ‘OOO톡 실행’이라는 음성 명령이 수신되는 경우, 런처 화면에서 OOO 톡 아이콘을 클릭하는 이벤트를 발생시켜, 채팅 애플리케이이션(OOO톡)을 실행할 수 있다.
도 39의 3900-2를 참조하면, 디바이스(100)는, 사용자가 채팅 애플리케이션(OOO톡)을 실행한 다음에 자주 사용하는 기능의 리스트(3901)를 가이드 정보로 제공할 수 있다. 예를 들어, 사용자가 채팅 애플리케이션에서, 메시지 전송, 영상 통화, 친구 정보 검색 순으로 자주 이용하는 경우, 디바이스(100)는, 기능의 리스트(3901) 중에서 ‘메시지 전송’을 가장 상단에 표시하고, 그 다음에 ‘영상 통화’를 표시하고, 그 다음에 ‘친구 정보’ 순으로 표시할 수 있다.도 39의 3900-3을 참조하면, 사용자가 기능의 리스트(3901)에서 ‘메시지 전송’을 선택하는 경우, 디바이스(100)는 메시지 전송의 대상이 되는 친구 이름을 입력할 수 있는 입력 창(3902)을 가이드 정보로 표시할 수 있다.
본 발명의 일 실시예에 의하면, 가이드 정보는 팝업 창 형태로 제공될 수 있다. 이때, 사용자는 가이드 정보를 제공하는 팝업 창을 이용하여, 텍스트 기반의 명령어를 입력할 수도 있다.
도 40 및 도 41은 디바이스가 사용자의 취소 입력에 기초하여 기능 수행을 중지하는 일례를 나타내는 도면이다.
도 40의 4010을 참조하면, 디바이스(100)는, 음성 인식 위젯(widget)(4001)을 제공할 수 있다. 사용자는 음성 인식 위젯(4001)을 통해서 음성 명령(예컨대, 헨리한테 어디냐고 메시지 전송해…’)(4002)을 입력할 수 있다. 음성 인식 위젯(4001)은, 기 설정된 이벤트가 발생되는 경우에 나타날 수 있다. 예를 들어, 디바이스(100)에 부착된 특정 하드웨어 키가 소정 시간이상 눌리는 이벤트가 발생하는 경우, 디바이스(100)는 음성 인식 위젯(4001)을 제공할 수 있다.
본 발명의 일 실시예에 의하면, 음성 명령(4002)이 수신되는 경우, 디바이스(100)는, 메시지 전송 기능을 제공하는 목적 페이지를 결정할 수 있다. 그리고 디바이스(100)는, AAA 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지에서 목적 페이지까지 도달하기 위한 경로를 결정할 수 있다.
디바이스(100)는, 결정된 경로에 따라, 자동으로 AAA 애플리케이션을 실행(4003)하고, 친구 리스트 페이지를 호출할 수 있다. 디바이스(100)는, 친구 리스트 페이지에서 ‘헨리’를 검색하고, 헨리와 대화하기 위한 채팅창을 호출할 수 있다. 디바이스(100)는 채팅창에 텍스트를 입력하고, 전송 버튼을 누르는 이벤트를 발생시킬 수 있다.
도 40의 4020을 참조하면, 디바이스(100)는, 사용자에 의해 요청된 기능을 수행하는 중에 사용자로부터 수행 취소 요청을 수신할 수 있다. 예를 들어, 디바이스(100)는, ‘STOP’이 표시된 음성 인식 위젯(widget)(4001)을 터치하는 입력을 수신할 있다. 이 경우, 디바이스(100)는, 사용자에 의해 요청된 기능의 수행을 중지할 수 있다.
도 41의 4110을 참조하면, 디바이스(100)는, 음성 인식 위젯(widget)(4101)을 제공할 수 있다. 사용자는 음성 인식 위젯(4101)을 통해서 음성 명령(예컨대, ‘헨리한테 어디냐고 메시지 전송해…’)(4102)을 입력할 수 있다. 본 발명의 일 실시예에 의하면, 음성 명령(4102)이 수신되는 경우, 디바이스(100)는, 메시지 전송 기능을 제공하는 목적 페이지를 결정할 수 있다. 그리고 디바이스(100)는, AAA 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 현재 페이지에서 목적 페이지까지 도달하기 위한 경로를 결정할 수 있다.
디바이스(100)는, 결정된 경로에 따라, 자동으로 AAA 애플리케이션을 실행하고, 친구 리스트 페이지를 호출할 수 있다. 디바이스(100)는, 친구 리스트 페이지에서 ‘헨리’를 검색하고, 헨리와 대화하기 위한 채팅창을 호출할 수 있다. 디바이스(100)는 채팅창에 텍스트를 입력하고, 전송 버튼을 누르는 이벤트를 발생시킬 수 있다.
도 41의 4120을 참조하면, 디바이스(100)는, 사용자에 의해 요청된 기능을 수행하는 중에 사용자로부터 수행 취소 요청을 수신할 수 있다. 예를 들어, 디바이스(100)는, 좌우로 스와이프하는 터치 입력(4103)을 수신할 수 있다. 좌우로 스와이프하는 터치 입력(4103)이 수행 취소 요청과 매핑되어 있는 경우, 디바이스(100)는, 사용자에 의해 요청된 기능의 수행을 중지할 수 있다. 디바이스(100)는, 기능 수행이 중지되었음을 나타내는 알림 메시지(4104)(예컨대, 메시지 전송 취소 중..)를 제공할 수도 있다.
도 42및 도 43는 본 발명의 일 실시예에 따르는, 디바이스를 설명하기 위한 블록 구성도이다.
도 42에 도시된 바와 같이, 본 발명의 일 실시예에 따른 디바이스(100)는, 사용자 입력부(110) 및 제어부(120)를 포함할 수 있다. 그러나 도시된 구성요소 모두가 필수구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 디바이스(100)가 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 디바이스(100)는 구현될 수 있다.
예를 들어, 도 43에 도시된 바와 같이, 본 발명의 일 실시예에 따른 디바이스(100)는, 사용자 입력부(110), 제어부(120) 이외에 출력부(130), 통신부(140), 센싱부(150), A/V 입력부(160), 저장부(메모리)(170)를 더 포함할 수도 있다.
이하 상기 구성요소들에 대해 차례로 살펴본다.
사용자 입력부(110)는, 사용자가 디바이스(100)를 제어하기 위한 데이터를 입력하는 수단을 의미한다. 예를 들어, 사용자 입력부(110)에는 키 패드(key pad), 돔 스위치 (dome switch), 터치 패드(접촉식 정전 용량 방식, 압력식 저항막 방식, 적외선 감지 방식, 표면 초음파 전도 방식, 적분식 장력 측정 방식, 피에조 효과 방식 등), 조그 휠, 조그 스위치 등이 있을 수 있으나 이에 한정되는 것은 아니다.
사용자 입력부(110)는, 적어도 하나의 기능의 수행을 요청하는 사용자 입력을 수신할 수 있다.
본 발명의 일 실시예에 의하면, 적어도 하나의 기능의 수행을 요청하는 사용자 입력은 다양할 수 있다. 예를 들어, 사용자 입력은, 키 입력, 제스처 입력(예컨대, 터치 입력, 에어 제스처 입력), 모션 입력, 벤딩 입력, 음성 입력, 다중 입력 등을 포함할 수 있다.
본 발명의 일 실시예에 의하면, 사용자 입력부(110)는, 적어도 하나의 기능이 수행되기 위한 조건을 포함하는 사용자 입력을 수신할 수도 있다. 예를 들어, 사용자 입력에는, 조건 정보, 조건이 만족되는 경우에 수행해야 하는 기능 정보 등이 포함될 수 있다.
본 발명의 일 실시예에 의하면, 기능이 수행되기 위한 조건은, 일정 기반 조건, 센서 입력 기반 조건, 애플리케이션 상태 기반 조건, 사용자 정의 기반 조건 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다.
사용자 입력부(110)는, 사용자에 의해 요청된 기능을 수행하는 중에 사용자로부터 수행 취소 요청을 수신할 수 있다. 예를 들어, 사용자 입력부(110)는 기 설정된 버튼을 선택하는 입력 또는 기 설정된 패턴의 제스처를 감지할 수 있다. 이때, 기 설정된 버튼은 물리적 버튼일 수도 있고, GUI(Graphical User Interface)일 수도 있다.
제어부(120)는, 통상적으로 디바이스(100)의 전반적인 동작을 제어한다. 예를 들어, 제어부(120)는, 저장부(메모리)(170)에 저장된 프로그램들을 실행함으로써, 사용자 입력부(110), 출력부(130), 통신부(140), 센싱부(150), A/V 입력부(160) 등을 전반적으로 제어할 수 있다.
제어부(120)는, 애플리케이션을 설치하고, 설치된 애플리케이션에 대한 사용자의 이용 형태에 기초하여 애플리케이션의 화면 구성 정보를 생성할 수 있다.
애플리케이션의 화면 구성에 관한 정보는, 애플리케이션의 식별 정보, 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보, 화면 페이지들 간의 전환 방법 정보, 및 UI 엘리먼트들과 상기 애플리케이션에서 제공하는 기능들을 매칭한 기능 정보 중 적어도 하나를 포함할 수 있다.
제어부(120)는, 애플리케이션의 화면 구성 정보를 생성하기 위해 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보를 획득할 수 있다. 예를 들어, 제어부(120)는, 애플리케이션의 화면 페이지들에 식별자를 부여하고, 화면 페이지들에 포함된 텍스트 특징을 갖는 제 1 UI 엘리먼트 및 이미지 특징을 갖는 제 2 UI 엘리먼트를 분석하여 화면 페이지들에 포함된 UI 엘리먼트들의 정보를 획득할 수 있다.
또한, 제어부(120)는, 화면 페이지들에 포함된 UI 엘리먼트들과 애플리케이션에서 제공하는 기능들을 매칭한 기능 정보를 생성하고, 화면 페이지들을 호출하는 입력 이벤트를 분석하여 화면 페이지들 간의 전환 방법 정보를 획득할 수도 있다.
제어부(120)는, 애플리케이션의 화면 페이지들에 포함된 UI 엘리먼트들의 정보가 변경되는 경우, 저장된 애플리케이션의 화면 구성에 관한 정보를 갱신할 수 있다.
제어부(120)는, 애플리케이션에서 제공되는 UI 엘리먼트(UI 객체)에 관한 정보를 정의한 화면 구성 정보(UI 디스크립션)를 이용하여, 화면에 표시되는 현재 페이지로부터 적어도 하나의 기능을 제공하는 목적 페이지까지 이동하기 위한 경로를 결정할 수 있다.
예를 들어, 제어부(120)는, 적어도 하나의 기능을 제공하는 목적 페이지를 결정하고, 화면에 표시되는 현재 페이지를 식별할 수 있다. 제어부(120)는, 현재 페이지로부터 목적 페이지까지 이동할 수 있는 복수의 경로를 결정하고, 복수의 경로 중 최단 경로를 선택할 수 있다.
제어부(120)는, 사용자에 의해 설정된 조건이 만족되는 경우, 현재 페이지로부터 목적 페이지까지 이동하기 위한 경로를 결정할 수도 있다.
제어부(120)는, 결정된 경로에 따라, 목적 페이지를 호출하고, 목적 페이지를 통해 적어도 하나의 기능을 수행할 수 있다. 예를 들어, 제어부(120)는, 결정된 경로에 따라, 적어도 하나의 경유 페이지 및 목적 페이지를 순차적으로 호출할 수 있다. 제어부(120)는, 결정된 경로에 따라 제 1 경유 페이지를 호출하고, 제 1 경유 페이지에서 목적 페이지를 호출하기 위한 입력 이벤트를 발생시킬 수 있다. 제어부(120)는, 애플리케이션의 화면 구성 정보(UI 디스크립션)를 이용하여, 호출된 제 1 경유 페이지를 검증할 수도 있다.
본 발명의 일 실시예에 의하면, 제어부(120)는 저장부(170)에 저장된 특정 애플리케이션을 통해서 디바이스(100)에 새롭게 설치되는 애플리케이션의 화면 구성 정보를 생성하거나, 화면 구성 정보를 이용하여 특정 기능을 수행할 수 있다. 이때, 특정 애플리케이션은, 플랫폼(platform) 상에서 구현될 수도 있고 OS(operating system) 상에서 구현될 수도 있다.
출력부(130)는, 오디오 신호 또는 비디오 신호 또는 진동 신호의 출력을 위한 것으로, 이에는 디스플레이부(131)와 음향 출력부(132), 진동 모터(133) 등이 포함될 수 있다.
디스플레이부(131)는 디바이스(100)에서 처리되는 정보를 표시할 수 있다. 예를 들어, 디스플레이부(131)는, 애플리케이션에서 제공되는 적어도 하나의 페이지를 표시할 수 있다. 디스플레이부(131)는 사용자 입력을 가이드하는 가이드 정보를 표시할 수도 있다.
한편, 디스플레이부(131)와 터치패드가 레이어 구조를 이루어 터치 스크린으로 구성되는 경우, 디스플레이부(131)는 출력 장치 이외에 입력 장치로도 사용될 수 있다. 디스플레이부(31)는 액정 디스플레이(liquid crystal display), 박막 트랜지스터 액정 디스플레이(thin film transistor-liquid crystal display), 유기 발광 다이오드(organic light-emitting diode), 플렉시블 디스플레이(flexible display), 3차원 디스플레이(3D display), 전기영동 디스플레이(electrophoretic display) 중에서 적어도 하나를 포함할 수 있다. 그리고 디바이스(100)의 구현 형태에 따라 디바이스(100)는 디스플레이부(131)를 2개 이상 포함할 수도 있다.
음향 출력부(132)는 통신부(140)로부터 수신되거나 저장부(메모리)(170)에 저장된 오디오 데이터를 출력한다. 또한, 음향 출력부(132)는 디바이스(100)에서 수행되는 기능(예를 들어, 호신호 수신음, 메시지 수신음, 알림음)과 관련된 음향 신호를 출력한다. 이러한 음향 출력부(132)에는 스피커(speaker), 버저(Buzzer) 등이 포함될 수 있다.
진동 모터(133)는 진동 신호를 출력할 수 있다. 예를 들어, 진동 모터(133)는 오디오 데이터 또는 비디오 데이터(예컨대, 호신호 수신음, 메시지 수신음 등)의 출력에 대응하는 진동 신호를 출력할 수 있다. 또한, 진동 모터(133)는 터치스크린에 터치가 입력되는 경우 진동 신호를 출력할 수도 있다.
통신부(140)는, 디바이스(100)와 서버(200), 또는 디바이스(100)와 웨어러블 디바이스 간의 통신을 하게 하는 하나 이상의 구성요소를 포함할 수 있다. 예를 들어, 통신부(140)는, 근거리 통신부(141), 이동 통신부(142), 방송 수신부(143)를 포함할 수 있다.
근거리 통신부(short-range wireless communication unit)(141)는, 블루투스 통신부, BLE(Bluetooth Low Energy) 통신부, 근거리 무선 통신부(Near Field Communication unit), WLAN(와이파이) 통신부, 지그비(Zigbee) 통신부, 적외선(IrDA, infrared Data Association) 통신부, WFD(Wi-Fi Direct) 통신부, UWB(ultra wideband) 통신부, Ant+ 통신부 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
이동 통신부(142)는, 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신한다. 여기에서, 무선 신호는, 음성 호 신호, 화상 통화 호 신호 또는 문자/멀티미디어 메시지 송수신에 따른 다양한 형태의 데이터를 포함할 수 있다.
방송 수신부(143)는, 방송 채널을 통하여 외부로부터 방송 신호 및/또는 방송 관련된 정보를 수신한다. 방송 채널은 위성 채널, 지상파 채널을 포함할 수 있다. 구현 예에 따라서 디바이스(100)가 방송 수신부(143)를 포함하지 않을 수도 있다.
통신부(140)는, 적어도 하나의 기능의 수행을 요청하는 사용자 입력이 음성 신호로 수신되는 경우, 음성 신호에 대응하는 음성 데이터를 서버(200)에 전송할 수 있다. 통신부(140)는 사용자의 발화가 완료된 후에 음성 데이터를 서버(200)에 전송할 수도 있고, 사용자의 발화 중에 일부 음성 데이터를 주기적으로 서버(200)에 전송할 수도 있다. 통신부(140)는, 서버(200)로부터 음성 데이터를 분석한 결과(예컨대, 텍스트 데이터)를 수신할 수 있다.
통신부(140)는, 애플리케이션에 대응하는 UI 디스크립션을 서버(200)로부터 수신할 수도 있다. 또한, 통신부(140)는, 서버에 애플리케이션의 UI 디스크립션에 대한 업데이트를 요청할 수도 있다.
센싱부(150)는, 디바이스(100)의 상태, 디바이스(100) 주변의 상태, 디바이스(100)를 착용한 사용자의 상태 등을 감지하고, 감지된 정보를 제어부(120)로 전달할 수 있다.
센싱부(150)는, 지자기 센서(Magnetic sensor)(151), 가속도 센서(Acceleration sensor)(152), 기울기 센서(153), 적외선 센서(154), 자이로스코프 센서(155), 위치 센서(예컨대, GPS)(156), 기압 센서(157), 근접 센서(158), 및 광 센서(159) 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다. 센싱부(150)는, 온도 센서, 조도 센서, 압력 센서, 홍채 인식 센서 등을 포함할 수도 있다. 각 센서들의 기능은 그 명칭으로부터 당업자가 직관적으로 추론할 수 있으므로, 구체적인 설명은 생략하기로 한다.
A/V(Audio/Video) 입력부(160)는 비디오 신호 또는 오디오 신호 입력을 위한 것으로, 이에는 카메라(161)와 마이크로폰(162) 등이 포함될 수 있다. 카메라(161)는 화상 통화모드 또는 촬영 모드에서 정지영상 또는 동영상 등의 화상 프레임을 얻을 수 있다. 카메라(161)를 통해 캡쳐된 이미지는 제어부(120) 또는 별도의 이미지 처리부(미도시)를 통해 처리될 수 있다.
카메라(161)에서 처리된 화상 프레임은 저장부(메모리)(170)에 저장되거나 통신부(140)를 통하여 외부로 전송될 수 있다. 카메라(161)는 디바이스(100)의 구성 태양에 따라 2개 이상이 구비될 수도 있다.
마이크로폰(162)은, 외부의 음향 신호를 입력 받아 전기적인 음성 데이터로 처리한다. 예를 들어, 마이크로폰(162)은 외부 디바이스 또는 화자로부터 음향 신호를 수신할 수 있다. 마이크로폰(162)은 외부의 음향 신호를 입력 받는 과정에서 발생 되는 잡음(noise)를 제거하기 위한 다양한 잡음 제거 알고리즘을 이용할 수 있다.
저장부(메모리)(170)는, 제어부(120)의 처리 및 제어를 위한 프로그램을 저장할 수도 있고, 입/출력되는 데이터들(예컨대, 애플리케이션, 애플리케이션의 화면 구성 정보(UI 디스크립션), 컨텐츠 등)을 저장할 수도 있다.
저장부(메모리)(170)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 또한, 디바이스(100)는 인터넷(internet)상에서 저장부(메모리)(170)의 저장 기능을 수행하는 웹 스토리지(web storage)를 운영할 수도 있다.
저장부(메모리)(170)에 저장된 프로그램들은 그 기능에 따라 복수 개의 모듈들로 분류할 수 있는데, 예를 들어, UI 모듈(171), 알림 모듈(172), 문자 인식 모듈(173) 등으로 분류될 수 있다.
UI 모듈(171)은, 애플리케이션 별로 디바이스(100)와 연동되는 특화된 UI, GUI 등을 제공할 수 있다. 알림 모듈(172)은 디바이스(100)의 이벤트 발생을 알리기 위한 신호를 발생할 수 있다. 알림 모듈(172)은 디스플레이부(131)를 통해 비디오 신호 형태로 알림 신호를 출력할 수도 있고, 음향 출력부(132)를 통해 오디오 신호 형태로 알림 신호를 출력할 수도 있고, 진동 모터(133)를 통해 진동 신호 형태로 알림 신호를 출력할 수도 있다.
문자 인식 모듈(173)은, UI 객체에 포함된 활자 영상에 대한 문자 인식을 수행할 수도 있다. 문자 인식 (OCR, Optical Character Recognition)은 이미지 객체에 포함된 한글, 영문, 숫자 폰트 등을 디바이스(100)에서 편집 가능한 문자 코드로 변환하는 기술을 의미한다.
한편, 저장부(메모리)(170)는, 애플리케이션의 화면 구성 정보를 비휘발성 메모리(예컨대, 플래쉬 메모리)에 저장할 수 있다. 애플리케이션이 실행되는 경우, 애플리케이션의 화면 구성 정보(UI 디스크립션)는 독출되어 Ram에 저장될 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
본 발명의 일 실시예에 의하면, 디바이스(100)는 화면 구성 정보(UI 디스크립션)를 이용하여 현재 페이지부터 목적 페이지까지 각 페이지마다 사용자가 입력하는 것과 같은 입력 이벤트를 자동으로 발생시키므로, 디바이스(100)는, 손으로 디바이스(100)를 직접 조작하는 것과 같은 경험을 사용자에게 제공할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (11)

  1. 실행 중인 애플리케이션의 적어도 하나의 애플리케이션 화면을 표시할 수 있는 디스플레이;
    사용자로부터 발화된 음성 명령을 수신하는 음성 입력부;
    상기 애플리케이션의 복수 개의 애플리케이션 화면에 포함된 UI 엘리먼트에 관한 정보로부터 얻어지는, 상기 음성 명령에 대응하는 애플리케이션 화면들을 전환하기 위한 화면 전환 정보를 이용하여, 상기 음성 명령에 대응되는 동작을 수행하는 제어부를 포함하고
    상기 UI 엘리먼트는 사용자에 의해 선택되면 특정 기능이 수행되는 것을 특징으로 하는 디바이스.
  2. 제 1 항에 있어서, 상기 제어부는,
    상기 복수 개의 애플리케이션 화면 중에서 상기 음성 명령에 대응하는 상기 애플리케이션 화면들을 선택하고, 상기 화면 전환 정보를 이용하여 상기 선택된 애플리케이션 화면들의 전환 경로를 결정하는 것을 특징으로 하는 디바이스.
  3. 제 2 항에 있어서, 상기 제어부는,
    상기 애플리케이션 화면들의 전환 경로에 기초하여, 상기 애플리케이션 화면들을 상기 디스플레이에 순차적으로 표시하는 것을 특징으로 하는 디바이스.
  4. 제 3 항에 있어서, 상기 제어부는,
    상기 애플리케이션 화면들을 순차적으로 표시하기 위해 상기 애플리케이션 화면들을 연결하는 적어도 하나의 UI 엘리먼트를 제어하는 입력 이벤트를 발생시키는 것을 특징으로 하는 디바이스.
  5. 제 1 항에 있어서, 상기 UI 엘리먼트에 관한 정보는,
    UI 엘리먼트의 식별 정보, UI 엘리먼트를 제어하는 입력 이벤트의 종류 정보, UI 엘리먼트와 연결된 애플리케이션 화면 정보, 및 UI 엘리먼트와 연결된 기능 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 디바이스.
  6. 제 5 항에 있어서, 상기 제어부는,
    상기 복수 개의 애플리케이션 화면을 렌더링하기 위해 획득되는 정보를 이용하여 상기 UI 엘리먼트에 관한 정보를 생성하는 것을 특징으로 하는 디바이스.
  7. 제 1 항에 있어서, 상기 화면 전환 정보는,
    상기 애플리케이션 화면들을 연결하는 UI 엘리먼트의 식별 정보 및 상기 애플리케이션 화면들을 연결하는 UI 엘리먼트를 제어하는 입력 이벤트 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 디바이스.
  8. 제 1 항에 있어서, 상기 음성 입력부는,
    상기 사용자로부터 발화되는 음성 신호를 서버에 전송하고, 상기 서버로부터 음성 신호를 분석한 결과를 수신하는 것을 특징으로 하는 디바이스.
  9. 실행 중인 애플리케이션의 적어도 하나의 애플리케이션 화면을 표시하는 단계;
    사용자로부터 발화된 음성 명령을 수신하는 단계; 및
    상기 애플리케이션의 복수 개의 애플리케이션 화면에 포함된 UI 엘리먼트에 관한 정보로부터 얻어지는, 상기 음성 명령에 대응하는 애플리케이션 화면들을 전환하기 위한 화면 전환 정보를 이용하여, 상기 음성 명령에 대응되는 동작을 수행하는 단계를 포함하고,
    상기 UI 엘리먼트는 사용자에 의해 선택되면 특정 기능이 수행되는 것을 특징으로 하는 디바이스의 동작 수행 방법.
  10. 제 9 항에 있어서, 상기 음성 명령에 대응되는 동작을 수행하는 단계는,
    상기 복수 개의 애플리케이션 화면 중에서 상기 음성 명령에 대응하는 상기 애플리케이션 화면들을 선택하는 단계; 및
    상기 화면 전환 정보를 이용하여 상기 선택된 애플리케이션 화면들의 전환 경로를 결정하는 단계를 포함하는 것을 특징으로 하는 디바이스의 동작 수행 방법.
  11. 제 9 항에 있어서, 상기 음성 명령을 수신하는 단계는,
    상기 사용자로부터 발화되는 음성 신호를 서버에 전송하고, 상기 서버로부터 음성 신호를 분석한 결과를 수신하는 단계를 포함하는 것을 특징으로 하는 디바이스의 동작 수행 방법.
KR1020140159183A 2014-07-31 2014-11-14 디바이스 및 디바이스의 기능 수행 방법 KR20160016491A (ko)

Priority Applications (10)

Application Number Priority Date Filing Date Title
KR1020150025234A KR102367132B1 (ko) 2014-07-31 2015-02-23 디바이스 및 디바이스의 기능 수행 방법
PCT/KR2015/007524 WO2016017978A1 (en) 2014-07-31 2015-07-21 Device and method for performing functions
TW104123797A TWI695312B (zh) 2014-07-31 2015-07-23 用於執行功能的方法及裝置
US14/813,959 US10127011B2 (en) 2014-07-31 2015-07-30 Device and method for performing functions
EP15179188.6A EP2980694B1 (en) 2014-07-31 2015-07-30 Device and method for performing functions
EP19173177.7A EP3557406B1 (en) 2014-07-31 2015-07-30 Device and method for performing functions
CN201910370909.9A CN110262708B (zh) 2014-07-31 2015-07-31 用于执行功能的设备和方法
CN201510463464.0A CN105320404B (zh) 2014-07-31 2015-07-31 用于执行功能的设备和方法
US16/127,943 US10768892B2 (en) 2014-07-31 2018-09-11 Device and method for performing functions
US16/984,951 US11099812B2 (en) 2014-07-31 2020-08-04 Device and method for performing functions

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20140098627 2014-07-31
KR1020140098627 2014-07-31

Publications (1)

Publication Number Publication Date
KR20160016491A true KR20160016491A (ko) 2016-02-15

Family

ID=55357207

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140159183A KR20160016491A (ko) 2014-07-31 2014-11-14 디바이스 및 디바이스의 기능 수행 방법

Country Status (2)

Country Link
KR (1) KR20160016491A (ko)
TW (1) TWI695312B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213411A (zh) * 2017-06-30 2019-01-15 上海传英信息技术有限公司 操作方法、装置及终端

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114641823A (zh) * 2020-10-13 2022-06-17 谷歌有限责任公司 使用可穿戴设备的分布式声音识别
TWI782436B (zh) * 2021-03-04 2022-11-01 圓展科技股份有限公司 顯示系統以及與顯示系統互動之方法
TWI825468B (zh) * 2021-08-25 2023-12-11 財團法人資訊工業策進會 導航裝置及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594170B2 (en) * 2003-10-24 2009-09-22 Microsoft Corporation Mechanism for providing data driven command line output
US7409344B2 (en) * 2005-03-08 2008-08-05 Sap Aktiengesellschaft XML based architecture for controlling user interfaces with contextual voice commands
KR20090107365A (ko) * 2008-04-08 2009-10-13 엘지전자 주식회사 이동 단말기 및 그 메뉴 제어방법
CN102105929B (zh) * 2008-07-30 2015-08-19 三菱电机株式会社 声音识别装置
US8452602B1 (en) * 2011-09-30 2013-05-28 Google Inc. Structuring verbal commands to allow concatenation in a voice interface in a mobile device
TW201403457A (zh) * 2012-07-04 2014-01-16 Tpv Display Technology Xiamen 具有語音操控功能的智慧型電視與其語音操控方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213411A (zh) * 2017-06-30 2019-01-15 上海传英信息技术有限公司 操作方法、装置及终端

Also Published As

Publication number Publication date
TWI695312B (zh) 2020-06-01
TW201610833A (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
US11099812B2 (en) Device and method for performing functions
KR102378513B1 (ko) 메시지 서비스를 제공하는 전자기기 및 그 전자기기가 컨텐트 제공하는 방법
US20230368791A1 (en) Application integration with a digital assistant
US10841265B2 (en) Apparatus and method for providing information
US11423209B2 (en) Device, method, and graphical user interface for classifying and populating fields of electronic forms
US11204787B2 (en) Application integration with a digital assistant
KR102447503B1 (ko) 메시지 서비스를 제공하는 전자기기 및 그 전자기기가 컨텐트 제공하는 방법
US9411512B2 (en) Method, apparatus, and medium for executing a function related to information displayed on an external device
US11093715B2 (en) Method and system for learning and enabling commands via user demonstration
KR102367132B1 (ko) 디바이스 및 디바이스의 기능 수행 방법
KR101882293B1 (ko) 문자 입력 및 컨텐츠 추천을 위한 통합 키보드
US10788981B2 (en) Method and apparatus for processing new message associated with application
KR20210134359A (ko) 시맨틱 지능형 태스크 학습 및 적응형 실행 방법 및 시스템
US11693553B2 (en) Devices, methods, and graphical user interfaces for automatically providing shared content to applications
KR20160016491A (ko) 디바이스 및 디바이스의 기능 수행 방법
KR20180087608A (ko) 검색 서비스를 제공하는 시스템 및 방법
KR101982771B1 (ko) 문자 입력 및 컨텐츠 추천을 위한 통합 키보드
US20230393710A1 (en) Devices, Methods, and Graphical User Interfaces for Collaborating in a Shared Web Browsing Environment
AU2017100586B4 (en) Application integration with a digital assistant