KR102248561B1 - 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체 - Google Patents

애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체 Download PDF

Info

Publication number
KR102248561B1
KR102248561B1 KR1020197029030A KR20197029030A KR102248561B1 KR 102248561 B1 KR102248561 B1 KR 102248561B1 KR 1020197029030 A KR1020197029030 A KR 1020197029030A KR 20197029030 A KR20197029030 A KR 20197029030A KR 102248561 B1 KR102248561 B1 KR 102248561B1
Authority
KR
South Korea
Prior art keywords
program
touch event
pressure touch
application program
module
Prior art date
Application number
KR1020197029030A
Other languages
English (en)
Other versions
KR20190121376A (ko
Inventor
푸롱 샤
헤윈 루
Original Assignee
텐센트 테크놀로지(센젠) 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 filed Critical 텐센트 테크놀로지(센젠) 컴퍼니 리미티드
Publication of KR20190121376A publication Critical patent/KR20190121376A/ko
Application granted granted Critical
Publication of KR102248561B1 publication Critical patent/KR102248561B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0414Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means using force sensing means to determine a position
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

인간-컴퓨터 상호 작용 분야에 속하는 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체가 개시된다. 상기 방법은 가상 엔진이, 압력 터치 제어 이벤트를 인터셉트하는 단계; 가상 엔진이, 압력 터치 제어 이벤트를 애플리케이션 프로그램의 외부 레이어 프로그램으로 전송하는 단계; 애플리케이션 프로그램의 외부 레이어 프로그램이, 압력 터치 제어 이벤트를 애플리케이션 프로그램의 내부 레이어 프로그램으로 전송하는 단계; 및 애플리케이션 프로그램의 내부-레이어 프로그램이, 압력 터치 제어 이벤트에 따라 사전 설정된 작동을 실행하는 단계를 포함한다. 본 출원의 실시 예는 애플리케이션 프로그램의 내부 레이어 프로그램이 운영 체제에서 직접 작동할 수 없고, 단지 외부 레이어 프로그램이 추가된 후에만 정상적으로 작동할 수 있으므로, 외부 레이어 프로그램의 존재로 인해, 애플리케이션 프로그램이 압력 터치 이벤트를 직접 처리할 수 없는 문제를 해결하며, 압력 터치 제어 기술을 사용하여, 가상 엔진에 기반하여 개별된 애플리케이션 프로그램에서 입력 제어를 구현하고, 이동 단말의 제한된 스크린 영역에서 복수의 제어 명령의 트리거를 구현할 수 있으며, 이에 따라 인간-컴퓨터 상호 작용의 효율성을 향상시킨다.

Description

애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체
본 출원은 2017년 7월 14일 중국 특허청에 출원되고 명칭이 "애플리케이션 프로그램 제어 방법, 장치 및 디바이스"인 중국 특허 출원 번호 제201710573725.3호에 대한 우선권을 주장하는 바이며, 상기 문헌의 내용은 그 전체로서 원용에 의해 본 명세서에 포함된다.
본 출원의 실시 예는 인간-기계 상호 작용(man-machine interaction)의 분야에 관한 것으로, 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 및 저장 매체에 관한 것이다.
이동 단말에서 가상 엔진을 이용하여 다양한 애플리케이션 프로그램이 개발되고 있으며, 특히 예를 들어, 가상 현실(virtual reality, VR) 애플리케이션 프로그램, 3차원 지도 프로그램, 일인칭 슈팅(first-person shooting, FPS) 게임 및 멀티 플레이어 온라인 배틀 아레나 게임(multiplayer online battle arena game, MOBA)의 3차원 가상 엔진을 사용하여 개발되고 있다.
유니티(Unity) 엔진은 현재 널리 사용되는 3차원 가상 엔진이다. 애플리케이션 프로그램이 유니티 엔진에 의해 개발된 FPS 게임 애플리케이션 프로그램인 예에서, 사용자가 FPS 게임 애플리케이션 프로그램을 사용하는 경우, 몇 개의 가상 키(virtual key)가 사용자 인터페이스(user interface, UI)에 디스플레이되고, 사용자는 가상 키를 눌러, 전진(move forward), 후진(move back), 돌아서기(turn around) 발사(fire) 등의 행동(action)을 수행하도록 게임 캐릭터를 제어한다.
일부 이동 단말에는 압력 감지(pressure sensing) 터치 스크린이 장착되어 있지만 현재 유니티 엔진은 압력 감지 터치 기능을 직접 지원할 수 없다. 따라서 유니티 엔진에 기반하여 개발된 애플리케이션 프로그램이 압력 감지 터치 기술을 사용하여 제어될 수 없다.
유니티 엔진을 기반으로 개발된 애플리케이션 프로그램을 압력 감지 터치 기술을 사용하여 제어할 수 없다는 문제를 해결하기 위해, 본 출원의 실시 예는 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체를 제공한다. 기술적 솔루션은 다음과 같다.
제1 측면에 따르면, 애플리케이션 프로그램을 제어하는 방법이 제공된다. 상기 방법은, 가상 엔진 및 애플리케이션 프로그램이 설치되는 단말에 적용되며, 상기 애플리케이션 프로그램은 상기 가상 엔진에 기반하여 개발된 프로그램이고, 상기 애플리케이션 프로그램은 외부(outer) 프로그램 및 내부(inner) 프로그램을 포함하며, 상기 방법은,
상기 가상 엔진이, 압력 터치 이벤트를 인터셉트(intercept)하는 단계 - 상기 압력 터치 이벤트는 작동 좌표(operation coordinates) 및 압력 값을 포함함 -;
상기 가상 엔진이, 상기 압력 터치 이벤트를 상기 외부 프로그램으로 전송하는(transmit) 단계;
상기 외부 프로그램이, 상기 압력 터치 이벤트를 상기 내부 프로그램으로 전송하는 단계; 및
상기 내부 프로그램이, 상기 압력 터치 이벤트에 따라 사전 결정된 작동(operation)을 수행하는 단계를 포함한다.
제2 측면에 따르면, 애플리케이션 프로그램을 제어하는 디바이스가 제공된다. 상기 디바이스는 하나 이상의 프로세서 및 프로그램 유닛을 저장하는 하나 이상의 메모리를 포함하며, 상기 프로그램 유닛은 상기 하나 이상의 프로세서에 의해 실행 가능하고, 상기 프로그램 유닛은 가상 엔진 모듈 및 애플리케이션 프로그램 모듈을 포함하며, 상기 애플리케이션 프로그램은 상기 가상 엔진 모듈에 기반하여 개발된 프로그램 모듈이고, 상기 애플리케이션 프로그램 모듈은 외부 프로그램 모듈 및 내부 프로그램 모듈을 포함하며,
상기 가상 엔진 모듈은 압력 터치 이벤트를 인터셉트하도록 - 상기 압력 터치 이벤트는 작동 좌표 및 압력 값을 포함함 - 구성되고;
상기 가상 엔진 모듈은 상기 압력 터치 이벤트를 상기 외부 프로그램 모듈로 전송하도록 구성되며;
상기 외부 프로그램 모듈은 상기 압력 터치 이벤트를 상기 내부 프로그램 모듈로 전송하도록 구성되고; 그리고
상기 내부 프로그램 모듈은 상기 압력 터치 이벤트에 따라 사전 설정된 작동을 수행하도록 구성된다.
본 출원의 실시 예의 다른 측면에 따르면, 단말이 추가로 제공된다. 상기 단말은 프로세서 및 메모리를 포함하며, 상기 메모리는 적어도 하나의 명령을 저장하며, 상기 적어도 하나의 명령은 상기 프로세서에 의해 로딩되고 실행될 때, 상기 프로세서가 본 출원에 따른 상기 애플리케이션 프로그램을 제어하는 방법을 구현하게 한다.
본 출원의 실시 예의 다른 측면에 따르면, 저장 매체가 추가로 제공된다. 상기 저장 매체는 컴퓨터 프로그램을 저장하며, 컴퓨터 프로그램은 실행될 때, 본 출원에 따른 상기 애플리케이션 프로그램을 제어하는 방법을 수행하도록 구성된다.
본 출원의 실시 예들에 따른 기술적 솔루션들은 다음과 같은 유익한 효과를 갖는다.
압력 터치 이벤트는 애플리케이션 프로그램의 외부 프로그램으로 전송된 후 애플리케이션 프로그램의 외부 프로그램에서 애플리케이션 프로그램의 내부 프로그램으로 전달된다(transferred). 내부 프로그램은 압력 터치 이벤트에 따라 사전 설정된 작동을 수행하며, 이에 따라 애플리케이션 프로그램의 내부 프로그램이 운영 체제에서 직접 실행할 수 없기 때문에 애플리케이션의 내부 프로그램이 외부 프로그램과 연계해서만 정상적으로 실행될 수 있지만, 내부 프로그램을 포함한 애플리케이션 프로그램이 외부 프로그램이 존재하는 상태에서 압력 터치 이벤트를 직접 처리할 수 없는 문제를 해결한다. 이러한 방식으로, 압력 터치 기술을 이용한 입력 제어는 3차원 가상 엔진을 기반으로 개발된 애플리케이션 프로그램에서 구현될 수 있으며, 복수의 제어 명령이 제한된 스크린 영역을 갖는 이동 단말에서 트리거(trigger)될 수 있으며, 이에 따라 인간-기계 상호 작용 효율성을 향상시킨다.
본 출원의 실시 예에서의 기술적 솔루션을 더욱 명확하게 설명하기 위해, 이하에서는 실시 예를 설명하는데 필요한 첨부 도면을 간략하게 설명한다. 명백히, 다음의 설명에서 첨부된 도면은 본 출원의 일부 실시 예를 보여줄 뿐이며, 당업자는 창조적 노력 없이도 이러한 첨부 도면으로부터 다른 도면을 도출할 수 있다.
도 1은 본 출원의 예시적인 실시 예에 따른 단말의 개략적인 구조도이다.
도 2는 본 출원의 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 3은 본 출원의 예시적인 실시 예에 따른 구현 동안 애플리케이션 프로그램 제어 방법의 개략적인 인터페이스 도이다.
도 4는 본 출원의 다른 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 5는 본 출원의 다른 예시적인 실시 예에 따른 단말의 개략적인 구조도이다.
도 6은 본 출원의 다른 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 7은 본 출원의 다른 예시적인 실시 예에 따른 단말의 개략적인 구조도이다.
도 8은 본 출원의 다른 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 9는 본 출원의 다른 예시적인 실시 예에 따른 단말의 개략적인 구조도이다.
도 10은 본 출원의 다른 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 11은 본 출원의 다른 예시적인 실시 예에 따른 단말의 개략적인 구조도이다.
도 12는 본 출원의 다른 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 13은 본 출원의 다른 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다.
도 14는 본 출원의 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 디바이스의 블록도이다.
본 출원의 실시 예들의 목적, 기술적 솔루션 및 이점을 더욱 명확하게 하기 위해, 본 출원의 구현은 이하 첨부된 도면을 참조하여 상세하게 설명된다.
일반적인 가상 엔진은 유니티(Unity) 엔진이며, 유니티 엔진을 기반으로 개발된 애플리케이션 프로그램은 일반적으로 C# 프로그래밍 언어를 사용하여 작성된다. 유니티 엔진을 기반으로 개발된 애플리케이션 프로그램이 상이한 운영 체제로 출시될 때, 상이한 운영 체제가 상이한 프로그래밍 언어를 지원하기 때문에 애플리케이션 프로그램이 적응적으로 수정되어야 한다. 예를 들어, 안드로이드(Android) 운영 체제는 자바(Java) 프로그래밍 언어를 사용하여 개발된 애플리케이션 프로그램을 지원하고, C# 프로그래밍 언어를 기반으로 작성된 애플리케이션 프로그램은 일반적으로, 자바 프로그래밍 언어를 사용하여 작성된 외부(outer) 프로그램이 C# 프로그래밍 언어를 기반으로 작성된 애플리케이션 프로그램에 추가된 이후에만 안드로이드 운영 체제에서 실행될 수 있다. 또 다른 예로, iOS 운영 체제는 오브젝트-C(Object-C) 프로그래밍 언어를 사용하여 개발된 애플리케이션 프로그램을 지원하며, C# 프로그래밍 언어를 기반으로 작성된 애플리케이션 프로그램은 일반적으로, 오브젝트-C 프로그래밍 언어를 사용하여 작성된 외부 프로그램이 C# 프로그래밍 언어를 기반으로 작성된 애플리케이션 프로그램에 추가된 이후에만 iOS 운영 체제에서 실행할 수 있다.
외부 프로그램의 존재 때문에, C# 프로그래밍 언어를 사용하여 작성된 애플리케이션 프로그램은 운영 체제의 최하위 레이어(bottom layer)의 압력 터치 이벤트를 획득할 수 없으므로, 압력 감지 터치 기술을 지원할 수 없다. 따라서, 본 출원의 실시 예는 기술적 문제를 해결하기 위해 다음의 실시 예를 제공한다.
도 1은 본 출원의 예시적인 실시 예에 따른 단말의 개략적인 구조도이다. 도 1에 도시된 바와 같이. 단말은 프로세서(11), 터치 스크린(12) 및 메모리(13)를 포함한다.
프로세서(11)는 단일 코어 프로세서, 멀티 코어 프로세서, 임베디드 칩, 및 명령 실행 능력을 갖는 프로세서 중 적어도 하나일 수 있다.
터치 스크린(12)은 압력 감지 터치 스크린이다. 압력 감지 터치 스크린은 터치 스크린(12)에 가해지는 힘(force)의 레벨을 측정할 수 있다.
메모리(13)는 프로세서(11)에 의해 실행 가능한 프로그램을 저장한다. 예시적으로(Exemplarily), 메모리(13)는 애플리케이션 프로그램 A, 애플리케이션 프로그램 B, 애플리케이션 프로그램 C, 가상 엔진(17), 압력 감지(sensing) 모듈(18) 및 운영 체제의 커널 레이어(19)를 저장한다. 예시적으로, 애플리케이션 프로그램 A는 애플리케이션 프로그램 A의 외부 프로그램(141)과 애플리케이션 프로그램 A의 내부 프로그램(142)을 포함한다. 애플리케이션 프로그램 A는 가상 엔진(17)에 기반하여 개발된 애플리케이션 프로그램이고, 애플리케이션 프로그램 A의 외부 프로그램은 제1 프로그래밍 언어를 사용하여 개발되며, 애플리케이션 프로그램 A의 내부 프로그램은 제2 프로그래밍 언어를 사용하여 개발된다. 선택적으로, 제1 프로그래밍 언어는 운영 체제의 애플리케이션 레이어에 의해 직접 지원되는 개발 언어이고, 제2 프로그래밍 언어는 애플리케이션 프로그램의 초기 개발 중에 사용되는 프로그래밍 언어이며, 제1 프로그래밍 언어 및 제2 프로그래밍 언어는 2개의 상이한 프로그래밍 언어이다. 애플리케이션 프로그램 A의 내부 프로그램은 애플리케이션 프로그램 A의 외부 프로그램이 없는 경우에 운영 체제에서 직접 실행될 수 없다. 애플리케이션 프로그램 A의 외부 프로그램은 애플리케이션 프로그램 A의 내부 프로그램을 둘러싼다(enclose). 선택적으로, 애플리케이션 프로그램 A는 가상 엔진(17)에 의해 개발된 게임 프로그램, VR 프로그램, 3차원 지도 프로그램 및 3차원 데모(demonstration) 프로그램 중 적어도 하나를 포함하지만 이에 제한되지는 않는다. 예를 들어, 단말의 운영 체제가 안드로이드 운영 체제를 사용할 때, 애플리케이션 프로그램 A의 외부 프로그램은 자바 프로그래밍 언어를 사용하여 개발되고, 애플리케이션 프로그램 A의 내부 프로그램은 C# 언어를 사용하여 개발된다. 다른 예를 들어, 단말의 운영 체제가 iOS 운영 체제를 사용할 때, 애플리케이션 프로그램 A의 외부 프로그램은 오브젝트-C 프로그래밍 언어를 사용하여 개발되고, 애플리케이션 프로그램 A의 내부 프로그램은 C# 언어를 사용하여 개발된다.
가상 엔진(17)은 복수의 운영 체제를 지원하는 인터렉티브(interactive) 엔진이다. 예시적으로, 가상 엔진은 게임 개발, 가상 현실(Virtual Reality, VR) 및 3차원 지도와 같은 복수의 분야에서의 프로그램 개발에 적용될 수 있다. 가상 엔진은 3차원 가상 엔진 및 2차원 가상 엔진을 포함하지만 이에 제한되지는 않는다. 가상 엔진(17)의 특정 유형은 본 출원의 실시 예에서 제한되지 않는다. 이하의 실시 예에서, 가상 엔진(17)이 3차원 가상 엔진인 경우, 특히 유니티 엔진이 예시 목적으로 예로서 사용된다.
압력 감지 모듈(18)은 터치 스크린 드라이브 프로그램(191)에 의해 보고된 압력 터치 이벤트를 수신하도록 구성된다. 압력 터치 이벤트는 압력 터치 이벤트의 압력 값 및 좌표 값을 포함한다. 좌표 값은 디스플레이 스크린상에서 압력 터치 작동(pressure touch operation)의 터치 위치를 지시하는(indicate) 데 사용된다. 선택적으로, 2차원 좌표계는 디스플레이 스크린의 수평 방향으로 수평 좌표축을 구축하고 디스플레이 스크린의 수직 방향으로 수직 좌표축을 구축하는 것에 의해 획득된다.
예시적으로, 커널 레이어(19)는 터치 스크린 드라이브 프로그램(191) 및 다른 드라이브 프로그램(192)을 포함한다. 터치 스크린 드라이브 프로그램(191)은 압력 터치 이벤트를 검출하도록 구성된다. 압력 터치 이벤트를 검출할 때, 터치 스크린 드라이브 프로그램(191)은 압력 터치 이벤트를 압력 감지 모듈(18)로 전송한다.
다른 드라이브 프로그램(192)은 프로세서(11)와 관련된 드라이브 프로그램, 메모리(13)와 관련된 드라이브 프로그램, 네트워크 구성 요소(component)와 관련된 드라이브 프로그램, 사운드 구성 요소와 관련된 드라이브 프로그램 등을 포함할 수 있다.
당업자는 전술한 내용이 단지 단말 구조의 일반적인 예시라는 것을 이해할 수 있을 것이다. 다른 실시 예들에서, 단말은 더 많거나 적은 구성 요소들을 포함할 수 있다. 예를 들어, 단말은 중력 가속도 센서, 자이로 센서 및 전원 공급 장치(power supply)를 더 포함할 수 있다.
도 2는 본 출원의 일 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다. 본 실시 예에서, 애플리케이션 프로그램 제어 방법은 설명을 위해 도 1에 도시된 단말에 적용된다. 상기 방법은 다음 단계(101) 내지 단계(106)를 포함한다.
단계(101)에서, 가상 엔진은 압력 터치 이벤트를 인터셉트한다(intercept).
압력 터치 이벤트는 압력 감지 터치 기술을 사용하여 터치 스크린에서 트리거되는 터치 이벤트이다. 본 실시 예에서, 가상 엔진은 애플리케이션 프로그램 A에 의해 사용되는 엔진이다.
사용자가 애플리케이션 프로그램 A를 사용할 때, 애플리케이션 프로그램 A의 UI가 단말의 터치 스크린(12)에 디스플레이된다. UI는 사람-기계 상호 작용을 위한 가상 버튼과 같은 제어 엘리먼트를 포함한다. 사용자가 터치 스크린상에서 압력 터치 작동을 수행할 때, 단말의 터치 스크린 드라이브 프로그램(191)은 압력 터치 이벤트를 생성하고, 압력 터치 이벤트를 압력 감지 모듈(18)에 보고한다. 압력 감지 모듈(18)은 압력 터치 이벤트를 메시지 형태로 적어도 하나의 애플리케이션 프로그램으로 전송한다.
가상 엔진은 압력 터치 이벤트를 인터셉트하는 능력(capability)을 가진다.
단계(102)에서, 가상 엔진은 압력 터치 이벤트를 애플리케이션 프로그램의 외부 프로그램으로 전송한다.
애플리케이션 프로그램의 외부 프로그램은 제1 프로그래밍 언어를 사용하여 개발된다. 선택적으로, 제1 프로그래밍 언어는 운영 체제의 애플리케이션 레이어에 의해 직접 지원되는 개발 언어이며, 예를 들어, 안드로이드 운영 체제의 애플리케이션 레이어에 의해 지원되는 개발 언어는 자바(Java)이고, iOS 운영 체제의 애플리케이션 레이어에 의해 지원되는 개발 언어는 오브젝트-C이며, 이는 본 개시의 실시 예를 제한하도록 의도되지 않는다.
본 실시 예에서, 애플리케이션 프로그램 A는 가상 엔진에 기반하여 개발된 애플리케이션 프로그램이다. 압력 터치 이벤트를 인터셉트한 후, 가상 엔진은 압력 터치 이벤트를 애플리케이션 프로그램 A의 외부 프로그램으로 전송한다. 압력 터치 이벤트는 이벤트의 압력 값 및 좌표 값을 포함한다.
단계(103)에서, 애플리케이션 프로그램의 외부 프로그램은 압력 터치 이벤트를 수신한다.
압력 터치 이벤트는 이벤트의 압력 값 및 좌표 값을 포함한다.
단계(104)에서, 애플리케이션 프로그램의 외부 프로그램은 압력 터치 이벤트를 애플리케이션 프로그램의 내부 프로그램으로 전송한다.
애플리케이션 프로그램의 내부 프로그램은 제2 프로그래밍 언어를 사용하여 개발된다. 선택적으로, 제2 프로그래밍 언어는 애플리케이션 프로그램이 원래 개발될 때 사용되는 프로그래밍 언어이며, 프로그래밍 언어는 C 언어, 자바 언어, C# 언어, C++ 언어 또는 파이썬(Python) 언어 중 적어도 하나를 포함하지만 이에 제한되지는 않는다. 본 실시 예에서, 제2 프로그래밍 언어는 C# 언어가 설명을 위해 예로서 사용되며, 본 실시 예를 제한하려는 것은 아니다.
단계(105)에서, 애플리케이션 프로그램의 내부 프로그램은 압력 터치 이벤트를 수신한다.
단계(106)에서, 애플리케이션 프로그램의 내부 프로그램은 압력 터치 이벤트에 따라 사전 설정된 작동을 수행한다.
예시적으로, 압력 터치 이벤트의 압력 값이 사전 설정된 임계 값보다 클 때 제1 사전 설정된 작동이 수행되거나; 또는 압력 터치 이벤트의 압력 값이 사전 설정된 임계 값보다 작을 때 제2 사전 설정된 작동이 수행된다.
전술한 바를 고려하여, 본 출원의 본 실시 예에서 제공되는 애플리케이션 프로그램 제어 방법에 따르면, 압력 터치 이벤트는 애플리케이션 프로그램의 외부 프로그램으로 전송되고, 그 다음에 애플리케이션 프로그램의 외부 프로그램에서 애플리케이션 프로그램의 내부 프로그램으로 전송된다. 애플리케이션 프로그램의 내부 프로그램은 압력 터치 이벤트에 따라 사전 설정 작동을 수행하므로, 내부 프로그램이 운영 체제에서 직접 실행할 수 없기 때문에 애플리케이션 프로그램의 내부 프로그램이 외부 프로그램과 연계해서만 정상적으로 실행될 수 있지만, 내부 프로그램을 포함하는 애플리케이션 프로그램이 외부 프로그램이 존재하는 상태에서 압력 터치 이벤트를 직접 처리할 수 없는 문제를 해결할 수 있다. 이러한 방식으로, 압력 터치 기술을 이용한 입력 제어가 가상 엔진을 기반으로 개발된 애플리케이션 프로그램에서 구현될 수 있고, 제한된 스크린 영역(area)을 갖는 이동 단말에서 복수의 작동 명령이 트리거될 수 있으며, 이에 따라 인간-기계 상호 작용 효율성이 향상된다.
도 3은 본 출원의 예시적인 실시 예에 따른 특정 구현 동안 애플리케이션 프로그램 제어 방법의 개략적인 인터페이스 도이다. 특정 예에서, 도 3에 도시된 바와 같이, 단말의 포그라운드(foreground)에서 실행되는 애플리케이션 프로그램은 FPS 게임이다. 애플리케이션 프로그램은 가상 엔진을 기반으로 개발된 게임 애플리케이션 프로그램이다. 포그라운드에서 실행되는 사용자 인터페이스는 슈팅(shooting)이 게임에서 플레이어의 1인칭 시점(first person perspective)에서 수행되는 인터페이스이며, 이 인터페이스는 캐릭터의 위치를 이동시키도록 구성된 제1 제어 엘리먼트(331) 및 플레이어로부터 시야(field of view)를 이동시키도록 구성된 제2 제어 엘리먼트(332)를 포함한다.
제1 제어 엘리먼트(331)는 캐릭터의 위치를 이동시키도록 구성된 제어 엘리먼트이다. 게임 캐릭터는 3차원 가상 환경에 위치한 가상 캐릭터이기 때문에, 사용자는 제1 제어 엘리먼트(331)를 사용하여 3차원 가상 환경에서 가상 캐릭터가 전진, 후진, 좌측에서 이동 또는 우측으로 이동하도록 제어할 수 있다. 예시적으로, 사용자가 제1 제어 엘리먼트(331)를 수직 방향으로 위로 슬라이드하면(slide), 단말은 3차원 가상 환경에서 앞으로 이동하도록 가상 캐릭터를 구성하고; 사용자가 제1 제어(331)를 수직 방향으로 아래로 슬라이드하면, 단말은 3차원 가상 환경에서 뒤로 이동하도록 가상 캐릭터를 구성하며; 사용자가 제1 제어(331)를 수평 방향으로 좌측으로 슬라이드하면, 단말은 3차원 가상 환경에서 좌측으로 이동시키도록 가상 캐릭터를 구성하고; 또는 사용자가 제1 제어(331)를 수평 방향으로 우측으로 슬라이드하면, 단말은 3차원 가상 환경에서 우측으로 이동하도록 가상 캐릭터를 구성한다.
제2 제어 엘리먼트(332)는 1인칭 시점의 보기 방향(viewing direction)을 제어하도록 구성된 제어 엘리먼트이다. 예시적으로, 사용자가 비교적 낮은 압력으로 제2 제어 엘리먼트(332)를 슬라이드하는 경우에, 애플리케이션 프로그램의 내부 프로그램은 압력 값이 사전 설정된 임계 값을 초과하는 않는 것으로 결정하며, 사용자가 추가로 제2 제어 엘리먼트(332)를 수평 방향으로 좌측으로 슬라이드하면, 애플리케이션 프로그램은 1인칭 시점을 좌측으로 회전시키고; 사용자가 추가로 제1 제어(331)를 수평 방향으로 우측으로 슬라이드하면, 게임에서 사용자의 1인칭 시점이 우측으로 회전되며; 사용자가 추가로 제1 제어를 수직 방향으로 위로 슬라이드하면, 게임에서 사용자의 1인칭 시점이 위로 회전되고; 또는 사용자가 추가로 제2 제어(332)를 수직 방향으로 아래로 슬라이드하면, 게임에서 사용자의 1인칭 시점이 아래쪽으로 회전된다.
또한, 제2 제어(332)는 발사 작동(firing operation)을 트리거하도록 추가로 구성될 수 있다. 사용자가 비교적 높은 압력으로 제2 제어(332)를 누를 때, 애플리케이션 프로그램의 내부 프로그램은 압력 값이 사전 설정된 임계 값을 초과하는 것으로 결정하고, 애플리케이션 프로그램은 발사 작동을 수행하도록 게임 캐릭터를 제어한다. 즉, 사용자는 상이한 압력 값을 갖는 압력 터치 작동을 통해 제2 제어 엘리먼트(332)에 대해 2개의 상이한 제어 작동을 수행할 수 있다.
일부 실시 예들에서, 가상 엔진은 메시지 포워딩 코드(forwarding code)를 포함한다. 메시지 포워딩 코드는 압력 터치 이벤트를 기본적으로 내부 프로그램(232)에 포워딩하기 위한 것이다. 그러나 외부 프로그램(231)의 존재로 인해 메시지 포워딩 코드가 효과적으로 실행될 수 없고, 압력 터치 이벤트를 포워딩하는 것이 실패할 수 있다. 이 경우, 가상 엔진의 메시지 포워딩 코드를 수정해야 한다. 따라서, 본 출원에 따라 실시 예가 추가로 제공된다.
도 4는 본 출원의 다른 실시 예에 따른 단말의 개략적인 구조도이다. 예시적으로, 단말은 제1 운영 체제를 사용한다. 제1 운영 체제는 터치 스크린 드라이브 프로그램이 그래픽 사용자 인터페이스를 사용하지 않고 압력 터치 이벤트를 애플리케이션 레이어에 직접 전송할 수 있는 운영 체제이다. 제1 운영 체제는 안드로이드 운영 체제를 포함하지만 이에 제한되지 않는다.
프로세서(21)는 단일 코어 프로세서, 멀티 코어 프로세서, 임베디드 칩, 및 명령 실행 능력을 갖는 프로세서 중 적어도 하나일 수 있다.
터치 스크린(22)은 압력 감지 터치 스크린이다. 압력 감지 터치 스크린은 터치 스크린(12)에 가해지는 힘의 레벨을 측정할 수 있다.
메모리(23)는 프로세서(21)에 의해 실행 가능한 프로그램을 저장한다. 예시적으로, 메모리(23)는 애플리케이션 프로그램 A, 애플리케이션 프로그램 B, 애플리케이션 프로그램 C, C++ 동적 링크 라이브러리(26), 가상 엔진(261), 압력 감지 모듈(262) 및 운영 체제의 커널 레이어(27)를 저장한다. 예시적으로, 애플리케이션 프로그램 A는 애플리케이션 프로그램 A의 외부 프로그램(231) 및 애플리케이션 프로그램 A의 내부 프로그램(232)을 포함한다. 애플리케이션 프로그램 A는 가상 엔진(261)에 기반하여 개발된 애플리케이션 프로그램이고, 애플리케이션 프로그램 A의 외부 프로그램은 제1 프로그래밍 언어를 사용하여 개발되며, 애플리케이션 프로그램 A의 내부 프로그램은 제2 프로그래밍 언어를 사용하여 개발된다. 선택적으로, 제1 프로그래밍 언어는 운영 체제의 애플리케이션 레이어에 의해 직접 지원되는 개발 언어이고, 제2 프로그래밍 언어는 애플리케이션 프로그램의 초기 개발 중에 사용되는 프로그래밍 언어이며, 제1 프로그래밍 언어 및 제2 프로그래밍 언어는 2개의 상이한 프로그래밍 언어이다. 애플리케이션 프로그램 A의 내부 프로그램은 애플리케이션 프로그램 A의 외부 프로그램이 없는 경우에 운영 체제에서 직접 실행될 수 없다. 애플리케이션 프로그램 A의 외부 프로그램은 애플리케이션 프로그램 A의 내부 프로그램을 둘러싼다. 선택적으로, 애플리케이션 프로그램 A는 가상 엔진(261)에 의해 개발된 게임 프로그램, VR 프로그램, 3차원 지도 프로그램 및 3차원 데모 프로그램 중 적어도 하나를 포함하지만 이에 제한되지는 않는다. 예를 들어, 단말의 운영 체제가 안드로이드 운영 체제를 사용할 때, 애플리케이션 프로그램 A의 외부 프로그램은 자바 프로그래밍 언어를 사용하여 개발되고, 애플리케이션 프로그램 A의 내부 프로그램은 C# 언어를 사용하여 개발된다. 다른 예를 들어, 단말의 운영 체제가 iOS 운영 체제를 사용할 때, 애플리케이션 프로그램 A의 외부 프로그램은 오브젝트-C 프로그래밍 언어를 사용하여 개발되고, 애플리케이션 프로그램 A의 내부 프로그램은 C# 언어를 사용하여 개발된다.
예시적으로, 커널 레이어(27)는 터치 스크린 드라이브 프로그램(271) 및 다른 드라이브 프로그램(272)을 포함한다. 터치 스크린 드라이브 프로그램(271)은 압력 터치 이벤트를 검출하도록 구성된 모듈이다. 압력 터치 이벤트를 검출할 때, 터치 스크린 드라이브 프로그램(271)은 압력 터치 이벤트를 압력 감지 모듈(262)로 전송한다.
다른 드라이브 프로그램들(272)은 프로세서(21)와 관련된 드라이브 프로그램, 메모리(23)와 관련된 드라이브 프로그램, 네트워크 구성 요소와 관련된 드라이브 프로그램, 사운드 구성 요소와 관련된 드라이브 프로그램 등을 포함할 수 있다.
도 4에 도시된 단말이 제1 운영 체제를 사용할 때, 애플리케이션 프로그램 A의 내부 프로그램(232)은 메인 스레드(thread) 모듈(233) 및 내부 프로그램의 입력 매니저(manger)(234)를 더 포함한다. C++ 동적 링크 라이브러리(26)는 가상 엔진(261) 및 압력 감지 모듈(262)을 포함한다.
C++ 동적 링크 라이브러리는 기능 라이브러리 공유(function library sharing)를 구현하는 방식(manner)이다. 동적 링크 라이브러리는 프로세스가 프로세스의 실행가능한 코드에 속하지 않는 기능을 호출(invoke)할 수 있게 하며, 동적 링크 라이브러리는 프로그램의 다른 부분에 영향을 주지 않고 애플리케이션 프로그램의 각각의 모듈에 업데이트 기능을 적용할 수 있다. 다시 말해서, 애플리케이션 프로그램 A는 C++ 동적 링크 라이브러리(26)에서 복수의 모듈 각각을 호출할 수 있지만, C++ 동적 링크 라이브러리(26) 내의 복수의 모듈은 애플리케이션 프로그램 A에 속하지 않는 실행 가능한 코드로 간주될 수 있다.
압력 감지 모듈(262)은 사전 설정된 프로그램을 포함한다. 사전 설정된 프로그램은 가상 엔진의 메시지 포워딩 코드를 수정하도록 구성된 프로그램이다.
도 5는 본 출원의 다른 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다. 본 실시 예에서, 애플리케이션 프로그램 제어 방법이 도 4에 도시된 단말에 적용되는 경우가 설명의 목적으로 예로 사용된다. 상기 방법은 다음 단계(301) 내지 단계(08)를 포함한다.
단계(301)에서, 사전 설정된 프로그램은 메인 메모리에서 가상 엔진의 베이스 어드레스(base address)를 획득한다.
애플리케이션 프로그램 A가 시작된 후, C++ 동적 링크 라이브러리(26)의 사전 설정된 프로그램은 가상 엔진이 메인 메모리에서 실행될 때 사용되는 베이스 어드레스를 획득한다. 사전 설정된 프로그램은 디스어셈블리(disassembly) 방법에 의해 메인 메모리에서 가상 엔진의 베이스 어드레스를 획득할 수 있다.
메모리 어드레싱(addressing)은 데이터의 코드 위치 또는 명령이 메인 메모리에서 발견됨을 의미한다. 메모리 어드레싱의 경우, 명령 또는 코드 위치는 베이스 어드레스와 오프셋 어드레스를 모두 사용하여 포지셔닝(position)되어야 한다.
단계(302)에서, 사전 설정된 프로그램은 베이스 어드레스 및 사전 설정된 오프셋 어드레스에 따라 메시지 포워딩 코드에 대응하는 코드 위치를 포지셔닝한다.
메시지 포워딩 코드는 가상 엔진에 사전 설정된 메시지 포워딩 코드다. 메시지 포워딩 코드는 인터셉트된 압력 터치 이벤트를 내부 프로그램으로 포워딩하기 위한 것이다.
사전 설정된 프로그램은 획득된 베이스 어드레스 및 사전 설정된 오프셋 어드레스에 따라 메인 메모리에서 메시지 포워딩 코드의 코드 위치를 결정한다.
단계(303)에서, 사전 설정된 프로그램은 포지셔닝된 코드 위치에 따라, 내부 프로그램으로부터 외부 프로그램이 되도록 메시지 포워딩 코드의 메시지 수신자(receiver)를 수정한다.
압력 터치 이벤트는 외부 프로그램으로 전송된 다음 외부 프로그램에 의해 내부 프로그램으로 전송될 필요가 있기 때문에, 메시지 포워딩 코드의 코드 위치를 포지셔닝한 후, 사전 설정된 프로그램은 메시지 포워딩 코드의 메시지 수신자를 내부 프로그램으로부터 외부 프로그램이 되도록 수정한다.
단계(304)에서, 가상 엔진은 압력 터치 이벤트를 인터셉트한다.
사용자가 애플리케이션 프로그램을 사용할 때, 애플리케이션 프로그램의 UI가 단말의 터치 스크린에 디스플레이된다. UI는 인간-기계 상호 작용을 위한 제어 엘리먼트, 예를 들어 가상 버튼을 포함한다. 사용자가 터치 스크린상에서 압력 터치 작동을 수행할 때, 단말의 터치 스크린 드라이브 프로그램은 압력 터치 이벤트를 생성하고, 압력 터치 이벤트를 압력 감지 모듈에 보고한다. 가상 엔진은 압력 터치 이벤트를 인터셉트할 수 있다.
단계(305)에서, 가상 엔진은 사전 설정된 프로그램에 의해 수정된 메시지 포워딩 코드에 따라 압력 터치 이벤트를 애플리케이션 프로그램의 외부 프로그램으로 전송한다.
수정된 메시지 포워딩 코드에서, 압력 터치 이벤트의 목적지 어드레스가 내부 프로그램으로부터 외부 프로그램이 되도록 수정되기 때문에, 압력 터치 이벤트를 인터셉트할 때, 가상 엔진은 수정된 메시지 포워딩 코드에 따라 압력 터치 이벤트를 애플리케이션 프로그램의 외부 프로그램으로 전송한다.
단계(306)에서, 외부 프로그램은 압력 터치 이벤트를 내부 프로그램의 메인 스레드로 전송한다.
단계(307)에서, 내부 프로그램은 메인 스레드를 사용하여 압력 터치 이벤트를 내부 프로그램의 입력 매니저로 전송한다.
입력 매니저는 외부 입력 신호를 처리하기 위한 내부 프로그램의 프로그램 모듈이다. 예시적으로, 입력 매니저는 UI 상에 디스플레이된 가상 버튼에 의해 트리거되는 압력 터치 이벤트를 관리하도록 구성된다. 도 3을 참조하면, 입력 매니저는 제1 제어 엘리먼트(31) 및 제2 제어 엘리먼트(32)의 압력 터치 이벤트를 관리할 수 있다.
단계(308)에서, 내부 프로그램은 압력 터치 이벤트에 따라 입력 매니저를 사용하여 사전 설정된 작동을 수행한다.
선택적으로, 입력 매니저는 압력 터치 이벤트를 파싱(parsing)하여 작동 좌표 및 압력 값을 획득하며; 입력 매니저는 작동 좌표에 대응하는 입력 제어 엘리먼트를 결정하고; 입력 매니저는 압력 값이 사전 설정된 임계 값보다 클 때, 입력 제어 엘리먼트에 대응하는 제1 작동을 수행하거나 또는 입력 매니저는 압력 값이 사전 설정된 임계 값보다 작을 때, 입력 제어 엘리먼트에 대응하는 제2 작동을 수행한다.
전술한 바를 고려하여, 본 실시 예에서 제공되는 애플리케이션 프로그램 제어 방법에 따르면, 사전 설정된 프로그램은 가상 엔진에서 원래의 메시지 포워딩 코드를 수정하므로, 압력 터치 이벤트를 인터셉트한 후에, 가상 엔진이 압력 터치 이벤트를 외부 프로그램으로 전송하고 다음에 외부 프로그램이 압력 터치 이벤트를 내부 프로그램으로 전송하며, 이에 따라 내부 프로그램이 운영 체제에서 직접 실행할 수 없기 때문에 애플리케이션 프로그램의 내부 프로그램이 외부 프로그램과 연계해서만 정상적으로 실행될 수 있지만, 내부 프로그램을 포함하는 애플리케이션 프로그램이 외부 프로그램이 존재하는 상태에서 압력 터치 이벤트를 직접 처리할 수 없는 문제를 해결할 수 있다. 이러한 방식으로, 내부 프로그램이 또한 압력 터치 이벤트를 수신할 수 있으며, 내부 프로그램의 입력 매니저가 또한 압력 터치 이벤트를 처리할 수 있으므로, 압력 터치 작동에 의한 애플리케이션 프로그램에 대한 제어를 지원할 수 있다. 복수의 제어 명령은 제한된 스크린 영역을 가지는 이동 단말에서 트리거될 수 있으며, 이에 따라 인간-기계 상호 작용 효율성이 향상된다.
특정 예에서, 도 4에서 단말에 의해 사용되는 제1 운영 체제는 안드로이드 운영 체제다. 도 6은 본 출원의 다른 예시적인 실시 예에 따른 단말의 개략적인 구조도이다. 단말이 안드로이드 운영 체제를 사용할 때, 애플리케이션 프로그램 A의 외부 프로그램은 자바 레이어(57)이고, 애플리케이션 프로그램 A의 내부 프로그램은 C# 레이어(572)이다. 애플리케이션 프로그램 A의 자바 레이어는 UI 스레드 모듈(571)을 더 포함한다. C++ 동적 링크 라이브러리(58)의 가상 엔진은 유니티 엔진(581)이다. 압력 감지 모듈(582)은 압력 터치 이벤트를 인터셉트하도록 구성되고, 압력 감지 모듈(582)은 사전 설정된 프로그램을 포함한다. 사전 설정된 프로그램은 유니티 엔진의 메시지 포워딩 메커니즘을 수정하도록 구성된다. 안드로이드 운영 체제는 자바 가상 머신(59)을 더 포함한다. 자바 가상 머신(59)은 애플리케이션 프로그램 A, 애플리케이션 프로그램 B 및 애플리케이션 프로그램 C에 대한 자바 실행 환경을 제공하도록 구성된다.
선택적으로, 자바 언어는 안드로이드 운영 체제의 애플리케이션 레이어에서 지원되는 프로그래밍 언어이므로 애플리케이션 프로그램 A의 외부 프로그램이 자바 레이어의 프로그램 모듈이다. 선택적으로, C# 언어는 애플리케이션 프로그램 A의 원래의 개발 언어이므로, 애플리케이션 프로그램 A의 내부 프로그램은 C# 레이어의 프로그램 모듈이다.
가상 머신은 가상화되고 추상화된 컴퓨터이다. 자바 가상 머신은 프로세서, 스택 및 레지스터와 같은 완전한 하드웨어 아키텍처를 가지며, 대응하는 명령 시스템을 갖는다. 자바 가상 머신은 자바 프로그램이 자바 가상 머신상에서 실행되는 타깃 코드만을 생성할 수 있게 하므로, 타깃 코드가 수정 없이 복수의 플랫폼상에서 실행될 수 있다. 본 실시 예에서, 자바 가상 머신은 애플리케이션 프로그램 A의 외부 프로그램의 다양한 기능을 실행하도록 구성된다.
사전 설정된 프로그램은 어드레스 매핑(mapping) 능력을 가진다. 어드레스 매핑은 애플리케이션 프로그램의 논리 어드레스를 실행 중 머신에 의해 수행되는 직접 어드레싱의 물리 어드레스로 변환하는 프로세스이다.
도 7은 본 출원의 예시적인 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다. 본 실시 예에서, 애플리케이션 프로그램 제어 방법이 도 6에 도시된 안드로이드 운영 체제에 적용되는 예이다. 상기 방법은 다음의 단계(501) 내지 단계(514)를 포함한다.
단계(501)에서, C# 레이어는 애플리케이션 프로그램이 시작될 때 애플리케이션 프로그램을 초기화한다.
사용자가 애플리케이션 프로그램 A의 아이콘을 탭(tap)한 후, 애플리케이션 프로그램 A가 시작된다. 애플리케이션 프로그램 A의 C# 레이어는 초기화를 수행한다. 초기화는 C# 레이어에서 메인 스레드를 시작하고 이미지 리소스(resource), 오디오 리소스, 논리 코드 등을 로딩하는 것을 포함하지만, 이에 제한되지는 않는다.
단계(502)에서, 유니티 엔진은 자바 레이어의 UI 스레드를 호출한다.
애플리케이션 프로그램이 3차원 가상 환경과 관련된 UI를 디스플레이해야 할때, 유니티 엔진은 UI 픽처(piture)를 생성하고 자바 레이어의 UI 스레드를 호출하여 UI 픽처를 디스플레이한다.
단계(503)에서, 자바 레이어의 UI 스레드는 C++ 동적 링크 라이브러리에서 압력 감지 모듈을 로드한다.
UI 픽처를 디스플레이하는 프로세스에서, 자바 레이어의 UI 스레드는 압력 감지 모듈을 동적으로 로드한다. 압력 감지 모듈은 사전 설정된 프로그램을 포함한다.
단계(504)에서, 사전 설정된 프로그램은 메인 메모리에서 유니티 엔진의 베이스 어드레스를 획득한다.
사전 설정된 프로그램은 안드로이드 운영 체제로부터, 유니티 엔진이 메인 메모리에서 실행될 때 사용되는 베이스 어드레스를 획득한다. 사전 설정된 프로그램은 디스어셈블리 방법에 의해 메인 메모리에서 유니티 엔진의 베이스 어드레스를 획득할 수 있다.
단계(505)에서, 사전 설정된 프로그램은 베이스 어드레스 및 사전 설정된 오프셋 어드레스에 따라, 메시지 포워딩 코드에 대응하는 코드 위치를 포지셔닝한다.
메시지 포워딩 코드는 유니티 엔진에 사전 설정되어 있다. 메시지 포워딩 코드는 인터셉트된 압력 터치 이벤트를 내부 프로그램으로 포워딩하기 위한 것이다.
사전 설정된 프로그램은 획득된 베이스 어드레스 및 사전 설정 오프셋 어드레스에 따라 메시지 포워딩 코드의 코드 위치를 메인 메모리에 포지셔닝한다.
단계(506)에서, 사전 설정된 프로그램은 포지셔닝된 코드 위치에 따라 C# 레이어로부터 자바 레이어의 UI 스레드로 메시지 포워딩 코드의 메시지 수신자를 수정한다.
애플리케이션 프로그램 A의 내부 프로그램은 C# 레이어이기 때문에 즉, 애플리케이션 프로그램 A에 의해 사용되는 개발 언어가 C# 언어이고, 외부 프로그램의 개발 언어가 자바 언어이다. 자바 레이어를 사용하지 않고, C# 레이어는 압력 터치 이벤트를 획득할 수 없다. 따라서 압력 터치 이벤트가 먼저 자바 레이어의 UI 스레드로 전송되고 그 다음에 자바 레이어의 UI 스레드를 통해 C# 레이어로 전송되어야 한다.
메시지 포워딩 코드의 코드 위치를 포지셔닝한 후, 사전 설정된 프로그램은 메시지 포워딩 코드의 메시지 수신자를 C# 레이어에서 자바 레이어의 UI 스레드로 수정한다.
단계(507)에서, 터치 스크린 드라이브 프로그램은 압력 터치 작동을 수신할 때 압력 터치 이벤트를 생성한다.
단계(508)에서, 유니티 엔진은 압력 터치 이벤트를 인터셉트한다.
사용자가 애플리케이션 프로그램 A를 사용할 때, 애플리케이션 프로그램 A의 UI가 단말의 터치 스크린상에 디스플레이된다. UI는 인간-기계 상호 작용을 위한 가상 버튼과 같은 제어 엘리먼트를 포함한다. 사용자가 터치 스크린상에서 압력 터치 작동을 수행할 때, 단말의 터치 스크린 드라이브 프로그램은 압력 터치 이벤트를 생성하고, 압력 터치 이벤트를 압력 감지 모듈에 보고한다. 유니티 엔진은 압력 터치 이벤트를 인터셉트할 수 있다.
단계(509)에서, 유니티 엔진은 수정된 메시지 포워딩 코드에 따라 압력 터치 이벤트를 자바 레이어의 UI 스레드로 전송한다.
본 실시 예에서, 수정된 메시지 포워딩 코드에서, 압력 터치 이벤트의 목적지 어드레스가 C# 레이어로부터 자바 레이어로 수정되기 때문에, 유니티 엔진은 메시지 포워딩 코드를 사용하여 압력 터치 이벤트를 자바 레이어의 UI 스레드로 전송한다.
단계(510)에서, 자바 레이어의 UI 스레드는 압력 터치 이벤트를 수신한다.
단계(511)에서, 자바 레이어의 UI 스레드는 압력 터치 이벤트를 C# 레이어의 메인 스레드로 전송한다.
애플리케이션 프로그램 A가 게임 애플리케이션 프로그램일 때, 메인 스레드는 게임 애플리케이션 프로그램의 메인 실행 로직을 구현하도록 구성된다.
단계(512)에서, C# 레이어의 메인 스레드는 압력 터치 이벤트를 C# 레이어의 입력 매니저로 전송한다.
입력 매니저는 외부 입력 신호를 처리하는 C# 레이어의 프로그램 모듈이다. 예시적으로, 입력 매니저는 UI 상에 디스플레이된 가상 버튼에 의해 트리거되는 압력 터치 이벤트를 관리하도록 구성된다. 도 3을 참조하면, 입력 매니저는 제1 제어 엘리먼트(31) 및 제2 제어 엘리먼트(32)에 대한 압력 터치 이벤트를 관리할 수 있다.
단계(513)에서, 입력 매니저는 압력 터치 이벤트에 따라 제어 명령을 생성한다.
선택적으로, 입력 매니저는 압력 터치 이벤트를 파싱하여 작동 좌표 및 압력 값을 획득하며; 입력 매니저는 작동 좌표에 대응하는 입력 제어 엘리먼트(예를 들어, 제2 제어 엘리먼트)를 결정한다. 입력 매니저는, 압력 값이 사전 설정된 임계 값보다 클 때, 입력 제어 엘리먼트에 대응하는, 예를 들어, 1인칭 시점의 보기 방향을 변경하는 제1 작동 명령을 생성하거나; 또는 입력 매니저는 압력 값이 사전 설정된 임계 값보다 작을 때, 도 8에 도시된 바와 같이 입력 제어 엘리먼트에 대응하는, 예를 들어 발사(firing)인 제2 작동을 생성한다.
단계(514)에서, 캐릭터 컨트롤러는 제어 명령을 실행한다(excute).
선택적으로, 애플리케이션 프로그램이 게임 애플리케이션 프로그램일 때, 내부 프로그램은 게임 캐릭터를 제어하도록 구성된 캐릭터 컨트롤러를 더 포함한다. 입력 매니저가 제1 작동 명령을 생성할 때, 캐릭터 컨트롤러는 제1 작동 명령을 실행한다. 입력 매니저가 제2 작동 명령을 생성할 때, 캐릭터 컨트롤러는 제2 작동 명령을 실행한다.
일부 다른 실시 예에서, 단말은 제2 운영 체제를 사용한다. 제2 운영 체제는 제1 운영 체제와 상이한 네이티브(native) GUI(Graphical User Interface) 구성 요소 세트를 가진 시스템이다. GUI 구성 요소는 완전한 메시지 디스패치(dispatching) 모듈 세트를 포함한다. 메시지 디스패치 용 GUI 구성 요소는 압력 터치 이벤트가 터치 스크린 드라이브 프로그램에 의해 GUI 구성 요소에 보고된 후, 압력 터치 이벤트를 애플리케이션 레이어에 보고하도록 구성된다. 제2 운영 체제는 iOS 운영 체제를 포함되지만 이에 제한되지는 않는다. 이 경우, 가상 엔진은 GUI 구성 요소의 메시지 디스패칭 모듈로부터 압력 터치 이벤트를 인터셉트해야 한다.
도 9는 본 출원의 다른 실시 예에 따른 단말의 개략적인 구조도이다. 예시적으로, 단말은 제2 운영 체제를 사용한다. 단말은 프로세서(31), 터치 스크린(32) 및 메모리(33)를 포함한다. 메모리(33)는 적어도 하나의 프로그램 명령을 저장한다.
프로세서(31)는 단일 코어 프로세서, 멀티 코어 프로세서, 임베디드 칩, 및 명령 실행 능력을 갖는 프로세서 중 적어도 하나일 수 있다.
터치 스크린(32)은 압력 감지 터치 스크린이다. 압력 감지 터치 스크린은 터치 스크린(32)에 가해지는 가압력(pressing force)을 측정할 수 있다.
메모리(33)는 프로세서(31)에 의해 실행 가능한 프로그램을 저장한다. 예시적으로, 메모리(33)에 저장된 프로그램 명령은 커널 레이어(34), UI 프레임워크(35), C++ 동적 링크 라이브러리(36) 및 애플리케이션 레이어(37)를 포함하지만, 이에 제한되지는 않는다.
커널 레이어(34)는 터치 스크린 드라이브 프로그램(341) 및 다른 드라이브 프로그램(342)을 포함한다. 터치 스크린 드라이브 프로그램(341)은 터치 스크린(32)상에서 압력 터치 작동이 검출될 때 압력 터치 이벤트를 생성하도록 구성된다. 압력 터치 이벤트는 작동 좌표 및 압력 값을 포함한다. 터치 스크린 드라이브 프로그램(341)은 추가로, 압력 터치 이벤트를 UI 프레임워크(35)에 보고하도록 구성된다.
UI 프레임워크(35)는 운영 체제에 의해 제공되며, 인간-기계 상호 작용을 구현하도록 구성된 인터페이스 디스플레이 프레임워크이다. 메시지 디스패칭 모듈은 UI 프레임워크(35)에 제공된다. 압력 터치 이벤트를 수신할 때, UI 프레임워크(35)는 압력 터치 이벤트를 대응하는 애플리케이션 프로그램으로 디스패치한다.
C++ 동적 링크 라이브러리(36)는 가상 엔진(361) 및 메시지 인터셉션(interception) 모듈(362)을 포함한다. 가상 엔진(361)은 3차원 가상 환경을 구성하고 디스플레이하도록 구성된다. 메시지 인터셉션 모듈(362)은 UI 프레임워크(35)로부터 압력 터치 이벤트를 인터셉트하도록 구성된다. 선택적으로, 메시지 인터셉션 모듈(362)은 가상 엔진(361)의 일부이다. 가상 엔진(361)은 메시지 인터셉션 모듈(362)을 사용하여 압력 터치 이벤트를 인터셉트한 후 압력 터치 이벤트를 애플리케이션 프로그램 A의 외부 프로그램으로 전송한다.
애플리케이션 프로그램 A는 가상 엔진에 기반하여 개발된 애플리케이션 프로그램이다. 애플리케이션 프로그램 A는 외부 프로그램(371) 및 내부 프로그램(372)을 포함한다. 내부 프로그램(372)은 메인 스레드 모듈(373) 및 입력 매니저(374)를 포함한다. 입력 매니저(374)는 외부 입력 신호(예를 들어, 압력 터치 이벤트)를 처리하도록 구성된 프로그램 모듈이다.
도 10은 본 출원의 일 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다. 본 실시 예에서, 애플리케이션 프로그램 제어 방법은 설명을 위해 도 9에 도시된 단말에 적용된다. 상기 방법은 다음 단계(S601) 내지 단계(S606)를 포함한다.
단계(601)에서, 내부 프로그램은 외부 프로그램에 호출 요청(invoking request)을 전송하며, 여기서 호출 요청은 압력 터치 이벤트를 수신할 때 압력 터치 이벤트를 내부 프로그램으로 포워딩하도록 외부 프로그램에게 명령하는 것이다.
단계(602) : UI 프레임워크가 압력 터치 이벤트를 수신한다.
사용자가 애플리케이션 프로그램 A를 사용할 때, 애플리케이션 프로그램 A의 UI가 단말의 터치 스크린에 디스플레이된다. UI는 인간-기계 상호 작용을 위한 제어 엘리먼트, 예를 들어 가상 버튼을 포함한다. 사용자가 터치 스크린상에서 압력 터치 작동을 수행할 때, 단말의 터치 스크린 드라이브 프로그램은 압력 터치 이벤트를 생성하고, 압력 터치 이벤트를 UI 프레임워크에 보고한다.
이에 따라, UI 프레임워크는 압력 터치 이벤트를 수신한다.
단계(603)에서, 가상 엔진은 UI 프레임워크로부터 압력 터치 이벤트를 인터셉트한다.
단계(604)에서, 가상 엔진은 압력 터치 이벤트를 외부 프로그램으로 전송한다.
단계(605)에서, 외부 프로그램은 압력 터치 이벤트를 내부 프로그램으로 전송한다.
단계(606)에서, 내부 프로그램은 압력 터치 이벤트에 따라 사전 설정된 작동을 수행한다.
예시적으로, 압력 터치 이벤트의 압력 값이 사전 설정된 임계 값보다 클 때 제1 사전 설정된 작동이 수행되거나; 또는 압력 터치 이벤트의 압력 값이 사전 설정된 임계 값보다 작을 때 제2 사전 설정된 작동이 수행된다.
전술한 바를 고려하여, 본 실시 예에서 제공되는 애플리케이션 프로그램 제어 방법에 따르면, 내부 프로그램은 압력 터치 이벤트를 수신할 때 압력 터치 이벤트드를 내부 프로그램으로 포워딩하도록 외부 프로그램을 트리거하기 위해, 호출 요청을 외부 프로그램으로 미리 전송하며; 내부 프로그램이 압력 터치 이벤트에 따라 사전 설정된 작동을 수행하며, 이에 따라 내부 프로그램이 운영 체제에서 직접 실행할 수 없기 때문에 애플리케이션 프로그램의 내부 프로그램이 외부 프로그램과 연계해서만 정상적으로 실행될 수 있으나, 내부 프로그램을 포함하는 애플리케이션 프로그램이 외부 프로그램이 존재하는 상태에서 압력 터치 이벤트를 직접 처리할 수 없는 문제를 해결할 수 있다. 이러한 방식으로, 압력 터치 기술을 이용한 입력 제어는 3차원 가상 엔진을 기반으로 개발된 애플리케이션 프로그램에서 구현될 수 있으며, 복수의 작동 명령이 제한된 스크린 영역을 갖는 이동 단말에서 트리거될 수 있으며, 이에 따라 인간-기계 상호 작용 효율성을 향상시킨다.
도 11은 본 출원의 다른 예시적인 실시 예에 따른 단말의 개략적인 구조도이다. 예시적으로, 단말에 의해 사용되는 제2 운영 체제는 iOS 운영 체제이다. 단말은 프로세서(61), 터치 스크린(62) 및 메모리(63)를 포함한다. 메모리(63)는 적어도 하나의 프로그램 명령을 저장한다.
프로세서(61)는 단일 코어 프로세서, 멀티 코어 프로세서, 임베디드 칩, 및 명령 실행 능력을 갖는 프로세서 중 적어도 하나일 수 있다.
터치 스크린(62)은 압력 감지 터치 스크린이다. 압력 감지 터치 스크린은 터치 스크린(62)에 적용되는 가압력을 측정할 수 있다.
메모리(63)는 프로세서(61)에 의해 실행 가능한 프로그램을 저장한다. 예시적으로, 메모리(63)에 저장된 프로그램 명령은 커널 레이어(64), UI 키트(65), C++ 동적 링크 라이브러리(66) 및 애플리케이션 레이어(67)를 포함하지만, 이에 제한되지는 않는다.
커널 레이어(64)는 터치 스크린 드라이브 프로그램(641) 및 다른 드라이브 프로그램(642)을 포함한다. 터치 스크린 드라이브 프로그램(641)은 터치 스크린(62)상에서 압력 터치 작동이 수신될 때 압력 터치 이벤트를 생성하도록 구성된다. 압력 터치 이벤트는 작동 좌표 및 압력 값을 포함한다. 터치 스크린 드라이브 프로그램(641)은 추가로, 압력 터치 이벤트를 UI 키트(65)에 보고하도록 구성된다.
UI 키트(65)는 iOS 운영 체제에 의해 제공되는 프레임워크이고, 인간-기계 상호 작용을 구현하도록 구성된 인터페이스 디스플레이 프레임워크이다. 메시지 디스패칭 모듈이 UI 키트(65)에 제공된다. 압력 터치 이벤트를 수신할 때, UI 키트(65)는 압력 터치 이벤트를 대응하는 프로그램 모듈로 디스패치한다.
C++ 동적 링크 라이브러리(66)는 유니티 엔진(661) 및 메시지 인터셉션 모듈(662)을 포함한다. 유니티 엔진(661)은 3차원 가상 환경을 구성하고 디스플레이하도록 구성된다. 메시지 인터셉션 모듈(662)은 UI 키트(65)로부터 압력 터치 이벤트를 인터셉트하도록 구성된다. 선택적으로, 메시지 인터셉션 모듈(662)은 유니티 엔진(661)의 일부이다. 유니티 엔진(661)은 메시지 인터셉션 모듈(662)을 사용하여 압력 터치 이벤트를 인터셉트한 후 압력 터치 이벤트를 애플리케이션 프로그램 A의 외부 프로그램으로 전송한다.
애플리케이션 프로그램 A는 유니티 엔진을 기반으로 개발된 애플리케이션 프로그램이다. 애플리케이션 프로그램 A는 오브젝트-C 레이어(671) 및 C# 레이어(672)를 포함한다. 오브젝트-C 레이어(671)은 UI 스레드 모듈(673) 및 유니티 스레드 모듈(674)을 포함한다. C# 레이어(672)는 메인 스레드 모듈(675), 입력 매니저(676), 애플리케이션 프레임워크(677), 네이티브 메시지 허브(NativeMsgHub)(678) 및 캐릭터 컨트롤러(679)를 포함한다. 입력 매니저(676)는 외부 입력 신호(예를 들어, 압력 터치 이벤트)를 처리하도록 구성된 프로그램 모듈이다. 애플리케이션 프레임워크(677)는 애플리케이션 프로그램 A의 메인 실행 로직을 구현하도록 구성된다. 애플리케이션 프로그램 A가 게임 애플리케이션일 때, 애플리케이션 프레임워크(677)는 게임 애플리케이션 프레임워크이다. 네이티브 메시지 허브(678)는 오브젝트-C 레이어(671)와의 호출을 구현하도록 구성된다. 캐릭터 컨트롤러(679)는 게임 캐릭터를 제어하기 위해 입력 매니저(676)에 의해 생성된 제어 명령을 실행하도록 구성된다.
도 12는 본 출원의 일 실시 예에 따른 애플리케이션 프로그램 제어 방법의 흐름도이다. 본 실시 예에서, 애플리케이션 프로그램 제어 방법은 설명을 위해 도 11에 도시된 단말에 적용된다. 상기 방법은 다음의 단계(701) 내지 단계(710)를 포함한다.
단계(701)에서, C# 레이어는 호출 요청을 오브젝트-C 레이어로 전송하고, 여기서 호출 요청은 압력 터치 이벤트의 수신시 압력 터치 이벤트를 C# 레이어로 포워딩하도록 오브젝트-C 레이어에 명령하는 것이다.
애플리케이션 프로그램이 시작된 후, C# 레이어의 메인 스레드 모듈(유니티 모노(Unity Mono) C# 스레드라고도 지칭됨)은 호출 요청을 오브젝트-C 레이어로 전송한다. 호출 요청은 단말이 압력 감지 터치 기능을 지원하는지를 질의(query)하는 것이다. 단말이 압력 감지 터치 기능을 지원하는 경우, 오브젝트-C 레이어는 압력 터치 이벤트의 수신시 압력 터치 이벤트를 C# 레이어로 포워딩해야 한다.
선택적으로, C# 레이어의 입력 매니저는 네이티브 메시지 허브에 의해 호출 요청을 오브젝트-C 레이어의 유니티 스레드로 전송한다. 유니티 스레드는 스레드의 안정적인 비동기 호출(reliable asynchronous invocation)을 통해 호출 요청을 UI 스레드로 포워딩한다. UI 스레드는 도 13에 도시된 바와 같이 압력 터치 이벤트를 수신할 때 압력 터치 이벤트를 C# 레이어의 애플리케이션 프레임워크로 포워딩하도록 구성된다.
단계(702)에서, 터치 스크린 드라이브 프로그램은 압력 터치 작동을 수신할 때 압력 터치 이벤트를 생성한다.
사용자가 애플리케이션 프로그램 A를 사용할 때, 애플리케이션 프로그램 A의 UI가 단말의 터치 스크린상에 디스플레이된다. UI는 인간-기계 상호 작용을 위한 제어 엘리먼트, 예를 들어 가상 버튼을 포함한다. 사용자가 터치 스크린상에서 압력 터치 작동을 수행할 때, 단말의 터치 스크린 드라이브 프로그램은 압력 터치 이벤트를 생성한다.
단계(703)에서, 터치 스크린 드라이브 프로그램은 압력 터치 이벤트를 UI 키트에 보고한다.
단계(704)에서, UI 키트는 압력 터치 이벤트를 수신한다.
단계(705)에서, 유니티 엔진은 UI 키트로부터 압력 터치 이벤트를 인터셉트한다.
유니티 엔진은 메시지 인터셉션 모듈을 사용하여 UI 키트로부터 압력 터치 이벤트를 인터셉트한다.
단계(706)에서, 유니티 엔진은 압력 터치 이벤트를 오브젝트-C 레이어의 UI 스레드로 전송한다.
단계(707)에서, 오브젝트-C 레이어의 UI 스레드는 압력 터치 이벤트를 C# 레이어의 게임 애플리케이션 프레임워크로 전송한다.
단계(708)에서, C# 레이어의 게임 애플리케이션 프레임워크는 압력 터치 이벤트를 C# 레이어의 입력 매니저에게 포워딩한다.
단계(709)에서, C# 레이어의 입력 매니저는 압력 터치 이벤트에 따라 제어 명령을 생성한다.
선택적으로, 입력 매니저는 압력 터치 이벤트를 파싱하여 작동 좌표 및 압력 값을 획득하며; 입력 매니저는 작동 좌표에 대응하는 입력 제어 엘리먼트(예를 들어, 제2 제어 엘리먼트)를 결정한다. 입력 매니저는 압력 값이 사전 설정된 임계 값보다 클 때, 입력 제어 엘리먼트에 대응하는, 예를 들어 1인칭 시점의 보기 방향을 변경하는 제1 작동 명령을 생성한다. 다르게는, 입력 매니저는 압력 값이 사전 설정된 임계 값보다 작을 때, 도 8에 도시된 바와 같이 입력 제어 엘리먼트에 대응하는, 예를 들어 발사인 제2 작동을 생성한다.
단계(710)에서, C# 레이어의 캐릭터 컨트롤러는 제어 명령을 실행한다.
선택적으로, 애플리케이션 프로그램이 게임 애플리케이션 프로그램일 때, 내부 프로그램은 게임 캐릭터를 제어하도록 구성된 캐릭터 컨트롤러를 더 포함한다. 입력 매니저가 제1 작동 명령을 생성할 때, 캐릭터 컨트롤러는 제1 작동 명령을 실행한다. 입력 매니저가 제2 작동 명령을 생성할 때, 캐릭터 컨트롤러는 제2 작동 명령을 실행한다.
도 14는 본 발명의 일 실시 예에 따른 애플리케이션 프로그램 제어 디바이스의 블록도이다. 단말의 전부 또는 일부일 수 있는 애플리케이션 프로그램 제어 디바이스는 소프트웨어, 하드웨어 및/또는 이들의 조합으로 구현될 수 있다. 운영 체제 및 애플리케이션 프로그램이 상기 디바이스에 설치되어 있다. 상기 디바이스는 하나 이상의 프로세서 및 프로그램 유닛을 저장하는 하나 이상의 메모리를 포함한다. 프로그램 유닛은 프로세서에 의해 실행된다. 프로그램 유닛은,
작동 좌표 및 압력 값을 포함하는 압력 터치 이벤트를 인터셉트하도록 구성된 가상 엔진 모듈(801) - 가상 엔진 모듈은 압력 터치 이벤트를 외부 프로그램 모듈로 전송하도록 구성됨 -; 및
외부 프로그램 모듈(803) 및 내부 프로그램 모듈(804)을 포함하도록 구성된 애플리케이션 프로그램 모듈(802) - 외부 애플리케이션 프로그램 모듈(803)은 압력 터치 이벤트를 내부 프로그램 모듈로 전송하도록 구성되고, 내부 애플리케이션 프로그램 모듈(804)은 압력 터치 이벤트에 따라 사전 설정된 작동을 수행하도록 구성됨 - 을 포함한다.
선택적 실시 예에서, 외부 프로그램 모듈은 압력 터치 이벤트를 내부 프로그램 모듈의 메인 스레드로 전송하도록 구성되고; 그리고
내부 프로그램 모듈은 메인 스레드를 사용하여 압력 터치 이벤트를 내부 프로그램 모듈의 입력 컨트롤러로 전송하도록 구성되며, 여기서, 입력 컨트롤러는 외부 입력 신호를 처리하도록 구성된 내부 프로그램 모듈의 프로그램 모듈이다.
선택적 실시 예에서, 프로그램 유닛은 사전 설정된 프로그램 모듈을 더 포함하며;
사전 설정된 프로그램 모듈은 애플리케이션 프로그램이 시작될 때, 내부 프로그램 모듈로부터 외부 프로그램 모듈이 되도록, 가상 엔진의 메시지 포워딩 메커니즘의 메시지 수신자를 수정하도록 구성되고; 그리고
가상 엔진 모듈은 사전 설정된 프로그램 모듈에 의해 수정된 메시지 포워딩 메커니즘에 따라 압력 터치 이벤트를 외부 프로그램 모듈로 전송하도록 구성된다.
선택적 실시 예에서, 사전 설정된 프로그램 모듈은, 애플리케이션 프로그램이 시작될 때 메인 메모리에서 가상 엔진 모듈의 베이스 어드레스를 획득하고; 베이스 어드레스 및 사전 설정된 오프셋 어드레스에 따라 메시지 포워딩 메커니즘에 대응하는 코드 위치를 포지셔닝하고; 그리고 포지셔닝된 코드 위치에 따라 메시지 포워딩 메커니즘의 메시지 수신자의 어드레스를 내부 프로그램 모듈로부터 외부 프로그램 모듈이 되도록 수정하도록 구성된다.
선택적 실시 예에서, 내부 프로그램 모듈은 추가로, 호출 요청을 외부 프로그램 모듈로 전송하도록 구성되며, 호출 요청은 압력 터치 이벤트의 수신시 압력 터치 이벤트를 내부 프로그램 모듈에 포워딩하도록 외부 프로그램 모듈에게 명령하는 것이다.
선택적 실시 예에서, 프로그램 유닛은 시스템-레벨 UI 프레임워크를 더 포함하고, 그리고
가상 엔진 모듈은 시스템-레벨 UI 프레임워크에서 압력 터치 이벤트를 인터셉트하도록 구성된다.
선택적 실시 예에서, 내부 프로그램 모듈은, 압력 터치 이벤트를 파싱하여 작동 좌표 및 압력 값을 획득하고; 작동 좌표에 대응하는 입력 제어 엘리먼트를 결정하며; 압력 값이 사전 설정된 임계 값보다 클 때 입력 제어 엘리먼트에 대응하는 제1 작동을 수행하거나 또는 압력 값이 사전 설정된 임계 값보다 작을 때 입력 제어 엘리먼트에 대응하는 제2 작동을 수행하도록 구성된다.
전술한 실시 예에서, 전술한 기능 모듈의 분할은 단지, 애플리케이션 프로그램 제어 디바이스가 지능형 네트워크 서비스를 트리거할 때 설명을 위한 예로서 사용됨에 유의해야 한다. 실제 적용 동안, 전술한 기능은 상이한 기능 모듈에 할당될 수 있고 실제 요구에 따라 구현될 수 있으며, 즉, 디바이스의 내부 구조는 전술한 기능의 전부 또는 일부를 구현하기 위해 상이한 기능 모듈로 분할될 수 있다. 또한, 전술한 실시 예에서 제공되는 애플리케이션 프로그램 제어 디바이스 및 애플리케이션 프로그램 제어 방법은 동일한 개념에 속한다. 애플리케이션 프로그램 제어 디바이스의 특정 구현 프로세스에 대해, 세부 사항은 방법 실시 예를 참조할 수 있으므로, 여기서 다시 설명하지 않는다.
본 출원의 실시 예는 또한 단말을 제공한다. 단말은 프로세서 및 메모리를 포함하고, 메모리는 적어도 하나의 명령을 저장하며, 명령은 프로세서에 의해 로드되고 실행될 때, 프로세서가 전술한 실시 예들 중 어느 하나에 따른 애플리케이션 프로그램 제어 방법을 구현하게 한다.
본 출원의 실시 예는 컴퓨터 판독 가능한 저장 매체를 추가로 제공한다. 저장 매체는 적어도 하나의 명령을 저장하며, 명령은, 프로세서에 의해 로드되고 실행될 때, 프로세서가 전술한 실시 예들 중 어느 하나에 따른 애플리케이션 프로그램 제어 방법을 구현하게 한다.
본 출원의 실시 예들의 시퀀스는 단지 설명을 위한 것이며 실시 예들의 선호도를 나타내지 않는다.
당업자는 전술한 실시 예의 모든 단계 또는 일부 단계가 하드웨어를 사용하여 구현될 수 있거나 관련 하드웨어를 명령하는 프로그램에 의해 구현될 수 있음을 이해할 수 있다. 프로그램은 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 저장 매체는 판독 전용 메모리, 자기 디스크, 광 디스크 등일 수 있다.
전술한 설명은 본 출원의 바람직한 실시 예일 뿐, 본 출원을 제한하려는 것은 아니다. 본 출원의 정신과 원칙 내에서 수행된 모든 수정, 동등한 대체 또는 개선은 본 출원의 보호 범위에 속한다.

Claims (15)

  1. 가상 엔진 및 애플리케이션 프로그램이 설치되는 단말에 적용되는 애플리케이션 프로그램을 제어하는 방법으로서, 상기 애플리케이션 프로그램은 상기 가상 엔진에 기반하여 개발된 프로그램이고, 상기 애플리케이션 프로그램은 외부(outer) 프로그램 및 내부(inner) 프로그램을 포함하며,
    상기 방법은,
    상기 가상 엔진이, 압력 터치 이벤트를 인터셉트(intercept)하는 단계 - 상기 압력 터치 이벤트는 작동 좌표(operation coordinates) 및 압력 값을 포함함 -;
    상기 가상 엔진이, 상기 압력 터치 이벤트를 상기 외부 프로그램으로 전송하는 단계;
    상기 외부 프로그램이, 상기 압력 터치 이벤트를 상기 내부 프로그램으로 전송하는 단계; 및
    상기 내부 프로그램이, 상기 압력 터치 이벤트에 따라 사전 결정된 작동(operation)을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 외부 프로그램은 제1 프로그래밍 언어에 의해 개발된 프로그램이고, 상기 내부 프로그램은 제2 프로그래밍 언어에 의해 개발된 프로그램이며; 그리고
    상기 외부 프로그램이, 상기 압력 터치 이벤트를 상기 내부 프로그램으로 전송하는 단계는,
    상기 외부 프로그램이, 상기 압력 터치 이벤트를 상기 내부 프로그램의 메인 스레드(main thread)로 전송하는 단계; 및
    상기 내부 프로그램의 메인 스레드가, 상기 압력 터치 이벤트를 상기 내부 프로그램의 입력 컨트롤러로 전송하는 단계
    를 포함하고,
    상기 입력 컨트롤러는 외부 입력 신호를 처리하도록 구성된 프로그램 모듈인, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 단말은 제1 운영 체제를 사용하고, 사전 설정된 프로그램이 상기 단말에 추가로 설치되며,
    상기 가상 엔진이, 상기 압력 터치 이벤트를 상기 외부 프로그램으로 전송하는 단계 이전에, 상기 방법은,
    상기 애플리케이션 프로그램이 시작될 때 상기 사전 설정된 프로그램이, 상기 내부 프로그램으로부터 상기 외부 프로그램이 되도록, 상기 가상 엔진에서의 메시지 포워딩(forwarding) 코드의 메시지 수신자(message receiver)를 수정하는 단계
    를 더 포함하고,
    상기 가상 엔진이, 상기 압력 터치 이벤트를 상기 외부 프로그램으로 전송하는 단계는,
    상기 가상 엔진이, 상기 사전 설정된 프로그램에 의해 수정된 상기 메시지 포워딩 코드에 따라 상기 압력 터치 이벤트를 상기 외부 프로그램으로 전송하는 단계
    를 포함하는, 방법.
  4. 제3항에 있어서,
    상기 애플리케이션 프로그램이 시작될 때 상기 사전 설정된 프로그램이, 상기 내부 프로그램으로부터 상기 외부 프로그램이 되도록, 상기 가상 엔진에서의 메시지 포워딩 코드의 메시지 수신자를 수정하는 단계는,
    상기 애플리케이션 프로그램이 시작될 때 상기 사전 설정된 프로그램이, 메인 모리에서 가상 엔진의 베이스(base) 어드레스를 획득하는 단계;
    상기 사전 설정된 프로그램이, 상기 베이스 어드레스 및 사전 설정된 오프셋 어드레스에 따라 상기 메시지 포워딩 코드에 대응하는 코드 위치를 포지셔닝하는(positioning) 단계; 및
    상기 사전 설정된 프로그램이, 상기 포지셔닝된 코드 위치에 따라, 상기 내부 프로그램으로부터 상기 외부 프로그램이 되도록 상기 메시지 포워딩 코드의 메시지 수신자의 어드레스를 수정하는 단계
    를 포함하는, 방법.
  5. 제2항에 있어서,
    상기 단말은 제2 운영 체제를 사용하고; 그리고
    상기 외부 프로그램이, 상기 압력 터치 이벤트를 상기 내부 프로그램의 메인 스레드로 전송하는 단계 이전에, 상기 방법은
    상기 내부 프로그램이, 호출 요청(invoking request)을 상기 외부 프로그램으로 전송하는 단계
    를 더 포함하고, 상기 호출 요청은 상기 압력 터치 이벤트의 수신시 상기 압력 터치 이벤트를 상기 내부 프로그램으로 포워딩하도록 상기 외부 프로그램에게 명령하기 위한 것인, 방법.
  6. 제5항에 있어서,
    상기 제2 운영 체제는 시스템-레벨 사용자 인터페이스(user interface, UI) 프레임워크를 포함하고; 그리고,
    상기 가상 엔진이, 압력 터치 이벤트를 인터셉트하는 단계는,
    상기 가상 엔진이, 상기 시스템-레벨 UI 프레임워크에서 상기 압력 터치 이벤트를 인터셉트하는 단계를 포함하는, 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 내부 프로그램이, 상기 압력 터치 이벤트에 따라 사전 결정된 작동을 수행하는 단계는,
    상기 내부 프로그램이, 상기 압력 터치 이벤트를 파싱하여(parsing) 상기 작동 좌표 및 상기 압력 값을 획득하는 단계;
    상기 내부 프로그램이, 상기 작동 좌표에 대응하는 입력 제어 엘리먼트를 결정하는 단계; 및
    상기 압력 값이 사전 결정된 임계 값보다 큰 경우에 상기 내부 프로그램이, 상기 입력 제어 엘리먼트에 대응하는 제1 작동을 수행하거나, 또는 상기 압력 값이 상기 사전 결정된 임계 값보다 작은 경우에 상기 내부 프로그램이, 상기 입력 제어 엘리먼트에 대응하는 제2 작동을 수행하는 단계
    를 포함하는, 방법.
  8. 하나 이상의 프로세서 및 프로그램 유닛을 저장하는 하나 이상의 메모리를 포함하는, 애플리케이션 프로그램을 제어하는 디바이스로서, 상기 프로그램 유닛은 상기 하나 이상의 프로세서에 의해 실행 가능하고, 상기 프로그램 유닛은 가상 엔진 모듈 및 애플리케이션 프로그램 모듈을 포함하며, 상기 애플리케이션 프로그램은 상기 가상 엔진 모듈에 기반하여 개발된 프로그램 모듈이고, 상기 애플리케이션 프로그램 모듈은 외부 프로그램 모듈 및 내부 프로그램 모듈을 포함하며,
    상기 가상 엔진 모듈은 압력 터치 이벤트를 인터셉트하도록 - 상기 압력 터치 이벤트는 작동 좌표 및 압력 값을 포함함 - 구성되고;
    상기 가상 엔진 모듈은 상기 압력 터치 이벤트를 상기 외부 프로그램 모듈로 전송하도록 구성되며;
    상기 외부 프로그램 모듈은 상기 압력 터치 이벤트를 상기 내부 프로그램 모듈로 전송하도록 구성되고; 그리고
    상기 내부 프로그램 모듈은 상기 압력 터치 이벤트에 따라 사전 설정된 작동을 수행하도록 구성되는, 디바이스.
  9. 제8항에 있어서,
    상기 외부 프로그램 모듈이 상기 압력 터치 이벤트를 상기 내부 프로그램 모듈의 메인 스레드로 전송하도록 구성되고; 그리고,
    상기 내부 프로그램 모듈은 상기 메인 스레드에 의해 상기 압력 터치 이벤트를 상기 내부 프로그램 모듈의 입력 컨트롤러로 전송하도록 구성되며,
    상기 입력 컨트롤러는 외부 입력 신호를 처리하도록 구성된 상기 내부 프로그램 모듈에서의 프로그램 모듈인, 디바이스.
  10. 제8항 또는 제9항에 있어서,
    상기 디바이스는 제1 운영 체제를 사용하고, 상기 프로그램 유닛은 사전 설정된 프로그램 모듈을 더 포함하고;
    상기 사전 설정된 프로그램 모듈은, 상기 애플리케이션 프로그램이 시작될 때, 상기 내부 프로그램 모듈로부터 상기 외부 프로그램 모듈이 되도록, 상기 가상 엔진에서의 메시지 포워딩 코드의 메시지 수신자를 수정하도록 구성되며; 그리고
    상기 가상 엔진 모듈은 상기 사전 설정된 프로그램 모듈에 의해 수정된 상기 메시지 포워딩 코드에 따라 상기 압력 터치 이벤트를 상기 외부 프로그램 모듈로 전송하도록 구성되는, 디바이스.
  11. 제10항에 있어서,
    상기 사전 설정된 프로그램 모듈은,
    상기 애플리케이션 프로그램이 시작될 때, 메인 메모리에서 상기 가상 엔진 모듈의 베이스 어드레스를 획득하고;
    상기 베이스 어드레스 및 사전 설정된 오프셋 어드레스에 따라, 상기 메시지 포워딩 코드에 대응하는 코드 위치를 포지셔닝하며; 그리고
    상기 포지셔닝된 코드 위치에 따라, 상기 내부 프로그램 모듈로부터 상기 외부 프로그램 모듈이 되도록, 상기 메시지 포워딩 코드의 메시지 수신자의 어드레스를 수정하도록 구성되는, 디바이스.
  12. 제9항에 있어서,
    상기 내부 프로그램 모듈은 추가로, 호출 요청을 상기 외부 프로그램 모듈로 전송하도록 구성되며, 상기 호출 요청은 상기 압력 터치 이벤트를 수신할 때 상기 압력 터치 이벤트를 상기 내부 프로그램 모듈로 포워딩하도록 상기 외부 프로그램 모듈에게 명령하기 위한 것인, 디바이스.
  13. 제8항 또는 제9항에 있어서,
    상기 내부 프로그램 모듈은,
    상기 압력 터치 이벤트를 파싱하여 상기 작동 좌표 및 압력 값을 획득하고;
    상기 작동 좌표에 대응하는 입력 제어 엘리먼트를 결정하며; 그리고
    상기 압력 값이 사전 결정된 임계 값보다 큰 경우, 상기 입력 제어 엘리먼트에 대응하는 제1 작동을 수행하거나, 상기 압력 값이 상기 사전 설정된 임계 값보다 작은 경우, 상기 입력 제어 엘리먼트에 대응하는 제2 작동을 수행하도록 구성되는, 디바이스.
  14. 프로세서 및 메모리를 포함하는 단말로서,
    상기 메모리는 적어도 하나의 명령을 저장하며, 상기 적어도 하나의 명령은 상기 프로세서에 의해 로딩되고 실행될 때, 상기 프로세서가 청구항 제1항 또는 제2항에 따른 상기 애플리케이션 프로그램을 제어하는 방법을 구현하게 하는, 단말.
  15. 컴퓨터 판독 가능 저장 매체로서,
    상기 저장 매체는 적어도 하나의 명령을 저장하며, 상기 명령은 프로세서에 의해 로딩되고 실행될 때, 상기 프로세서가 청구항 제1항 또는 제2항에 따른 상기 애플리케이션 프로그램을 제어하는 방법을 구현하게 하는, 저장 매체.
KR1020197029030A 2017-07-14 2018-07-12 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체 KR102248561B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710573725.3 2017-07-14
CN201710573725.3A CN107357586B (zh) 2017-07-14 2017-07-14 应用程序的控制方法、装置及设备
PCT/CN2018/095342 WO2019011280A1 (zh) 2017-07-14 2018-07-12 应用程序的控制方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
KR20190121376A KR20190121376A (ko) 2019-10-25
KR102248561B1 true KR102248561B1 (ko) 2021-05-04

Family

ID=60292596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197029030A KR102248561B1 (ko) 2017-07-14 2018-07-12 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체

Country Status (5)

Country Link
US (1) US10754715B2 (ko)
JP (1) JP6768243B2 (ko)
KR (1) KR102248561B1 (ko)
CN (1) CN107357586B (ko)
WO (1) WO2019011280A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107357586B (zh) * 2017-07-14 2018-06-05 腾讯科技(深圳)有限公司 应用程序的控制方法、装置及设备
CN110597509B (zh) * 2018-10-10 2023-10-03 苏州沁游网络科技有限公司 Unity环境下的跨平台GUI触摸事件解析方法
CN110275722B (zh) * 2019-06-21 2023-08-08 北京百度网讯科技有限公司 用于升级应用的方法、装置、设备和存储介质
CN110404256A (zh) * 2019-07-26 2019-11-05 上海商汤智能科技有限公司 数据处理方法及装置、设备、服务器、系统及存储介质
CN112083996A (zh) * 2020-09-16 2020-12-15 努比亚技术有限公司 屏幕控制方法、移动终端及计算机可读存储介质
CN113032273B (zh) * 2021-04-01 2024-04-19 广州虎牙科技有限公司 一种应用程序的调试方法、装置、计算机设备和存储介质
CN113111012B (zh) * 2021-04-14 2023-07-25 景德镇市明泰精工瓷业有限公司 一种应用数据定位器生成方法及应用数据定位方法
CN114244758A (zh) * 2021-12-13 2022-03-25 武汉斗鱼鱼乐网络科技有限公司 安卓平台的网络诊断方法、存储介质、电子设备及系统
CN114816401B (zh) * 2022-04-13 2022-12-23 上海弘玑信息技术有限公司 界面元素的定位方法、电子设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012019114A1 (en) * 2010-08-06 2012-02-09 Citrix Systems, Inc. Systems and methods for a para-virtualized driver in a multi-core virtual packet engine device
US8572508B2 (en) * 2010-11-22 2013-10-29 Acer Incorporated Application displaying method for touch-controlled device and touch-controlled device thereof
JP5480347B2 (ja) * 2012-08-31 2014-04-23 株式会社スクウェア・エニックス ビデオゲーム処理装置、およびビデオゲーム処理プログラム
CN103810089B (zh) * 2012-11-12 2021-12-03 Sap欧洲公司 自动测试基于姿态的应用
KR20140068410A (ko) * 2012-11-28 2014-06-09 삼성전자주식회사 물리 엔진 기반의 사용자 인터페이스를 제공하는 방법 및 그 전자 장치
CN104035760A (zh) * 2014-03-04 2014-09-10 苏州天魂网络科技有限公司 跨移动平台实现沉浸式虚拟现实的系统
JP6008897B2 (ja) * 2014-06-13 2016-10-19 キヤノン株式会社 装置、方法、及びプログラム
CN105521603B (zh) * 2015-12-11 2019-05-31 北京奇虎科技有限公司 针对跑酷类游戏进行虚拟输入控制的方法、装置及系统
CN106095666B (zh) * 2016-06-02 2018-01-09 腾讯科技(深圳)有限公司 游戏自动化测试方法及相关装置
CN106293753A (zh) * 2016-08-16 2017-01-04 网易(杭州)网络有限公司 编辑器的开发方法和装置,编辑方法及编辑器
CN107357586B (zh) * 2017-07-14 2018-06-05 腾讯科技(深圳)有限公司 应用程序的控制方法、装置及设备

Also Published As

Publication number Publication date
WO2019011280A1 (zh) 2019-01-17
US10754715B2 (en) 2020-08-25
JP2020509463A (ja) 2020-03-26
CN107357586A (zh) 2017-11-17
JP6768243B2 (ja) 2020-10-14
US20190361756A1 (en) 2019-11-28
KR20190121376A (ko) 2019-10-25
CN107357586B (zh) 2018-06-05

Similar Documents

Publication Publication Date Title
KR102248561B1 (ko) 애플리케이션 프로그램 제어 방법 및 디바이스, 단말 그리고 저장 매체
US11829787B2 (en) Multi-process model for cross-platform applications
KR101566093B1 (ko) 웹톱 애플리케이션 트레이에 안드로이드 애플리케이션 런처를 디스플레이하는 시스템 및 방법
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
KR101399161B1 (ko) 멀티-환경 운영 체제를 개시하기 위한 시스템 및 방법
KR20240011871A (ko) 가상 객체를 제어하기 위한 방법, 및 관련 장치
JP6083244B2 (ja) リモートデスクトップセッションにおいて複数のマウス入力を提供する方法
WO2016095383A1 (zh) 一种实现应用调用的方法及虚拟机
US20160285958A1 (en) Application container for live migration of mobile applications
US20160077850A1 (en) Methods, systems, and media for binary compatibility
EP4120065A1 (en) Image processing method and apparatus, and server and medium
KR20130068588A (ko) 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법
WO2012163221A1 (zh) 显示处理方法、装置及计算机系统
CN106991057B (zh) 一种共享显卡虚拟化中内存的调用方法及虚拟化平台
CN110545415A (zh) 数据传输方法、装置及服务器
JP2004094738A (ja) 分散型シミュレーションシステム
US20150381766A1 (en) Application transfer system, application transfer method, terminal, and program
WO2012090072A1 (en) System and method for cross virtual machine execution of applications
CN114028801A (zh) 基于云端的用户输入方法、装置、设备及存储介质
TW201737061A (zh) 運作於單一作業系統之多裝置系統
CN115756156A (zh) 手势事件识别的方法、存储介质、电子设备以及智能座舱
KR20140089922A (ko) 애플리케이션 수행 장치
KR20220050453A (ko) 디스플레이가 없는 안드로이드 디바이스에서 안드로이드 플랫폼을 동작시키기 위한 무선 통신 시스템 및 그 무선 통신 방법
JP5383885B1 (ja) 情報処理装置

Legal Events

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