KR102374438B1 - 지오펜스 관리 방법 및 그 전자 장치 - Google Patents

지오펜스 관리 방법 및 그 전자 장치 Download PDF

Info

Publication number
KR102374438B1
KR102374438B1 KR1020150112658A KR20150112658A KR102374438B1 KR 102374438 B1 KR102374438 B1 KR 102374438B1 KR 1020150112658 A KR1020150112658 A KR 1020150112658A KR 20150112658 A KR20150112658 A KR 20150112658A KR 102374438 B1 KR102374438 B1 KR 102374438B1
Authority
KR
South Korea
Prior art keywords
geo
fence
electronic device
group
fences
Prior art date
Application number
KR1020150112658A
Other languages
English (en)
Other versions
KR20170018704A (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 삼성전자주식회사
Priority to KR1020150112658A priority Critical patent/KR102374438B1/ko
Priority to US15/180,489 priority patent/US9801017B2/en
Priority to EP16183242.3A priority patent/EP3131316B1/en
Priority to CN201610653814.4A priority patent/CN106454720B/zh
Publication of KR20170018704A publication Critical patent/KR20170018704A/ko
Application granted granted Critical
Publication of KR102374438B1 publication Critical patent/KR102374438B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/021Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
    • H04W4/022Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences with dynamic range variability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/021Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/023Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Abstract

본 개시의 일 실시예는, 전자 장치에서 지오펜스를 관리할 수 있는 방법 및 그 전자 장치를 제공하는 것이다.
본 개시의 다양한 실시예에 따르면, 전자 장치의 동작 방법에 있어서, 상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하고, 상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하고, 상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용가능한 지오펜스들의 개수보다 큰 경우에 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑할 수 있다.

Description

지오펜스 관리 방법 및 그 전자 장치{METHOD FOR MANAGING GEO-FENCE AND ELECTRONIC DEVICE THEREOF}
본 개시의 다양한 실시 예들은 전자 장치에서 지오펜스를 관리할 수 있는 방법 및 장치에 관한 것이다.
최근 전자 장치, 특히 휴대 단말기는 GPS, WiFi, 블루투스(Bluetooth), BLE, 센서(sensor), NFC(near field communication) 등을 구비하여 사용자의 현재 위치 및 현재 위치에 기반한 서비스(location based service, LBS)를 제공하고 있다.
특히 지오펜스(geo-fence)에 관한 서비스가 관심을 끌고 있는데, 지오 펜스라 함은 가상의 경계로 구획된 영역에 대해 디바이스의 진입/진출을 감지하는 측위 기반 기술이다.
전자 장치는 지오펜스(geo-fence)를 설정하고, 전자 장치가 지오펜스로 설정된 영역 내에 진입할 때 광고 등과 같은 서비스를 제공하는 위치 기반 서비스를 제공할 수 있다.
지오펜스 서비스를 제공하는 지오펜스의 개수가 적을 때에는 전자 장치에 크게 문제 되지 않으나, 서비스를 제공하는 지오펜스의 개수가 충분히 많을 때에는 전자 장치에 등록 시켜야 하는 지오펜스의 개수가 많아지게 되므로 메모리 및 하드웨어(H/W) 자원에 대한 한계에 부딪힐 수 있다.
본 개시의 다양한 실시예들은 다수의 지오펜스들을 관리하는 방법 및 장치를 제공할 수 있다.
본 개시의 다양한 실시 예에 따르면, 전자 장치의 동작 방법에 있어서, 상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하고, 상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하고, 상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용 가능한 지오펜스들의 개수보다 큰 경우, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑 할 수 있다.
본 개시의 다양한 실시 예에 따르면, 전자 장치는 지오펜스 그룹을 모니터링하도록 설정된 제 1 프로세서와 상기 제 1 프로세서와 기능적으로 연결된 제 2 프로세서를 포함하고, 상기 제 2 프로세서는 복수의 지오펜스들 중 적어도 일부가 포함된 상기 지오펜스 그룹을 상기 제 1 프로세서에 전송하고, 상기 전자 장치가 상기 지오펜스 그룹 중 하나의 지오펜스의 외부에서 내부로 이동하거나, 상기 하나의 지오펜스의 내부에서 외부로 이동했다는 알림을 상기 제 1 프로세서로부터 수신하도록 설정될 수 있다.
본 개시의 다양한 실시 예에 따른 전자 장치 및 그 동작 방법은 다수의 지오펜스들을 그룹화하여 관리함으로써, 불필요한 지역에 대한 감시를 피하고 필수적으로 감시해야 하는 지오펜스들만을 선택적으로 선별하여 감시함으로써, 메모리 및 하드웨어 자원의 사용을 최소화하고 프로세서를 적게 깨움으로써 소모 전류를 감소시킬 수 있다.
도 1은 본 개시의 다양한 실시예에 따른 전자 장치를 포함하는 네트워크 환경을 도시하는 도면이다.
도 2는 본 개시의 다양한 실시예에 따른 전자 장치의 블록도를 도시하는 도면이다.
도 3은 본 개시의 다양한 실시예에 따른 프로그램 모듈의 블록도를 도시하는 도면이다.
도 4는 본 개시의 다양한 실시예에 따른 지오펜스를 관리하는 전자 장치와 서버의 구성을 예시하는 도면이다.
도 5a 내지 도 5d는 본 개시의 다양한 실시예에 따른 지오펜스들을 클러스터링하는 다양한 방법을 예시하는 도면이다.
도 6a 내지 도 6b는 본 개시의 다양한 실시예에 따른 지오펜스 리스트 레벨 1과 레벨 2를 형성하는 모습을 예시하는 도면이다.
도 7은 본 개시의 다양한 실시예에 따른 지오펜스 리스트 레벨 2 그룹의 반경을 구하는 방법을 예시하는 도면이다.
도 8a 내지 8c는 본 개시의 다양한 실시예에 따른 레벨 2에 해당하는 그룹 1과 그룹 2 및 하위 레벨의 지오펜스 리스트들에 대한 등록을 예시하는 도면이다.
도 9a 내지 도 9c는 본 개시의 다양한 실시예에 따른 전자 장치의 현재 위치로부터 각 지오펜스로의 도달 거리에 기반하여 거리순으로 그룹을 형성하는 과정을 나타내는 도면이다.
도 10은 본 개시의 다양한 실시예에 따른 지오펜스의 위도/경도를 기반으로 상위 그룹을 형성하는 방법에 대한 흐름도이다.
도 11은 본 개시의 다양한 실시예에 따른 지오펜스의 상위 그룹 내에서 하위 그룹을 형성하는 방법에 대한 흐름도이다.
도 12는 본 개시의 다양한 실시예에 따른 전자 장치가 하나의 그룹을 모니터링 하다가 해당 그룹을 벗어난 경우에 지오펜스를 모니터링 하는 방법에 대한 흐름도이다.
도 13은 본 개시의 다양한 실시예에 따른 전자 장치의 현재 위치로부터 각 지오펜스까지의 도달 거리에 기반하여 거리순으로 그룹을 형성하는 방법에 대한 흐름도이다.
도 14a 내지 도 14c 는 본 개시의 다양한 실시예에 따른 다수의 지오펜스들을 다양한 방식으로 클러스터링하고, 기존의 지오펜스가 삭제되거나 새로운 지오펜스가 추가되는 경우 클러스터링 하는 모습을 예시하는 도면이다.
도 15는 본 개시의 다양한 실시예에 따른 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스 추가에 따른 남아 있는(remaining) 지오펜스들의 개수를 확인하고, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑하는 방법에 대한 흐름도이다.
이하, 본 문서의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 문서의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다" 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B", "A 또는/및 B 중 적어도 하나" 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 "제 1", "제 2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)" 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어(hardware)적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU(central processing unit) 또는 AP(application processor))를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시 예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시 예들에 따른 전자 장치는, 예를 들면, 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예들에 따르면, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD) 등), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예들에서, 전자 장치는 가전 제품(home appliance)일 수 있다. 가전 제품은, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시 예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션(navigation) 장치, 위성 항법 시스템(GNSS, global navigation satellite system), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시 예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시 예들에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시 예에 따른 전자 장치는 플렉서블(flexible) 전자 장치일 수 있다. 또한, 본 문서의 실시 예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시 예들에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 다양한 실시 예에 따른 전자 장치를 포함하는 네트워크 환경을 도시하는 도면이다.
도 1을 참조하여, 다양한 실시 예에서의, 네트워크 환경 100 내의 전자 장치 101이 기재된다. 전자 장치 101은 버스(bus) 110, 프로세서(processor) 120, 메모리(memory) 130, 입출력 인터페이스(input/output interface) 150, 디스플레이(display) 160, 및 통신 인터페이스(communication interface) 170을 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 101은, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다.
버스 110은, 예를 들면, 구성요소들(110-170)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
프로세서 120은, 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서 120은, 예를 들면, 전자 장치 101의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리 130은, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리 130은, 예를 들면, 전자 장치 101의 적어도 하나의 다른 구성요소에 관계된 명령(command) 또는 데이터(data)를 저장할 수 있다. 한 실시 예에 따르면, 메모리 130은 소프트웨어(software) 및/또는 프로그램(program) 140을 저장할 수 있다. 프로그램 140은, 예를 들면, 커널(kernel) 141, 미들웨어(middleware) 143, 어플리케이션 프로그래밍 인터페이스(application programming interface(API)) 145, 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 147 등을 포함할 수 있다. 커널 141, 미들웨어 143, 또는 API 145의 적어도 일부는, 운영 시스템(operating system(OS))으로 지칭될 수 있다.
커널 141은, 예를 들면, 다른 프로그램들(예: 미들웨어 143, API 145, 또는 어플리케이션 프로그램 147)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스 110, 프로세서 120, 또는 메모리 130 등)을 제어 또는 관리할 수 있다. 또한, 커널 141은 미들웨어 143, API 145, 또는 어플리케이션 프로그램 147에서 전자 장치 101의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어 143은, 예를 들면, API 145 또는 어플리케이션 프로그램 147이 커널 141과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다.
또한 미들웨어 143은 어플리케이션 프로그램 147으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어 143은 어플리케이션 프로그램 147 중 적어도 하나에 전자 장치 101의 시스템 리소스(예: 버스 110, 프로세서 120, 또는 메모리 130 등)를 사용할 수 있는 우선 순위를 부여할 수 있다. 예컨대, 미들웨어 143은 상기 적어도 하나에 부여된 우선 순위에 따라 상기 하나 이상의 작업 요청들을 처리함으로써, 상기 하나 이상의 작업 요청들에 대한 스케쥴링(scheduling) 또는 로드 밸런싱(load balancing) 등을 수행할 수 있다.
API 145는, 예를 들면, 어플리케이션 147이 커널 141 또는 미들웨어 143에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어(file control), 창 제어(window control), 영상 처리(image processing), 또는 문자 제어(character control) 등을 위한 적어도 하나의 인터페이스 또는 함수(function)(예: 명령어)를 포함할 수 있다.
입출력 인터페이스 150은, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치 101의 다른 구성요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한, 입출력 인터페이스 150은 전자 장치 101의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이 160은, 예를 들면, 액정 디스플레이(liquid crystal display(LCD)), 발광 다이오드(light-emitting diode(LED)) 디스플레이, 유기 발광 다이오드(organic light-emitting diode(OLED)) 디스플레이, 또는 마이크로 전자기계 시스템(microelectromechanical systems(MEMS)) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이 160은, 예를 들면, 사용자에게 각종 콘텐츠(예: 텍스트(text), 이미지(image), 비디오(video), 아이콘(icon), 또는 심볼(symbol) 등)을 표시할 수 있다. 디스플레이 160은, 터치 스크린(touch screen)을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치(touch), 제스처(gesture), 근접(proximity), 또는 호버링(hovering) 입력을 수신할 수 있다.
통신 인터페이스 170은, 예를 들면, 전자 장치 101과 외부 장치(예: 제1 외부 전자 장치 102, 제2 외부 전자 장치 104, 또는 서버 106) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스 170은 무선 통신 또는 유선 통신을 통해서 네트워크 162에 연결되어 외부 장치(예: 제2 외부 전자 장치 104 또는 서버 106)와 통신할 수 있다.
무선 통신은, 예를 들면, 셀룰러 통신 프로토콜로서, 예를 들면, LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(global system for mobile communications) 등 중 적어도 하나를 사용할 수 있다. 또한, 무선 통신은, 예를 들면, 근거리 통신 164를 포함할 수 있다. 근거리 통신 164는, 예를 들면, WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication), 또는 GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. GNSS는 사용 지역 또는 대역폭 등에 따라, 예를 들면, GPS(global positioning system), Glonass(global navigation satellite system), Beidou Navigation satellite system(이하, "Beidou") 또는 Galileo, the European global satellite-based navigation system 중 적어도 하나를 포함할 수 있다. 이하, 본 문서에서는, "GPS"는 "GNSS"와 혼용되어 사용(interchangeably used)될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232), 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크 162는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷, 또는 전화 네트워크(telephone network) 중 적어도 하나를 포함할 수 있다.
제1 및 제2 외부 전자 장치(102, 104) 각각은 전자 장치 101과 동일한 또는 다른 종류의 장치일 수 있다. 한 실시 예에 따르면, 서버 106은 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시 예들에 따르면, 전자 장치 101에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치(102,104), 또는 서버 106에서 실행될 수 있다. 한 실시 예에 따르면, 전자 장치 101이 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치 101은 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치(102, 104), 또는 서버 106)에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치(102, 104), 또는 서버 106)는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치 101로 전달할 수 있다. 전자 장치 101은 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅(cloud computing), 분산 컴퓨팅(distributed computing), 또는 클라이언트-서버 컴퓨팅(client-server computing) 기술이 이용될 수 있다.
도 2는 본 개시의 다양한 실시 예에 따른 전자 장치의 블록도를 도시하는 도면이다.
전자 장치 201은, 예를 들면, 도 1에 도시된 전자 장치 101의 전체 또는 일부를 포함할 수 있다. 전자 장치 201은 하나 이상의 프로세서(예: AP(application processor)) 210, 통신 모듈 220, 가입자 식별 모듈 224, 메모리 230, 센서 모듈 240, 입력 장치 250, 디스플레이 260, 인터페이스 270, 오디오 모듈 280, 카메라 모듈 291, 전력 관리 모듈 295, 배터리 296, 인디케이터 297, 및 모터 298를 포함할 수 있다.
프로세서 210은, 예를 들면, 운영 체제 또는 어플리케이션 프로그램을 구동하여 프로세서 210에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서 210은, 예를 들면, SoC(system on chip)로 구현될 수 있다. 한 실시 예에 따르면, 프로세서 210은 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서(image signal processor)를 더 포함할 수 있다. 프로세서 210은 도 2에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈 221)를 포함할 수도 있다. 프로세서 210은 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드(load)하여 처리하고, 다양한 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
통신 모듈 220은, 도 1의 통신 인터페이스 170와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈 220은, 예를 들면, 셀룰러 모듈 221, WiFi 모듈 223, 블루투스 모듈 225, GNSS 모듈 227(예: GPS 모듈, Glonass 모듈, Beidou 모듈, 또는 Galileo 모듈), NFC 모듈 228 및 RF(radio frequency) 모듈 229를 포함할 수 있다.
셀룰러 모듈 221은, 예를 들면, 통신 네트워크를 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 221은 가입자 식별 모듈(예: SIM(subscriber identification module) 카드) 224를 이용하여 통신 네트워크 내에서 전자 장치 201의 구별 및 인증을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 221은 프로세서 210이 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시 예에 따르면, 셀룰러 모듈 221은 커뮤니케이션 프로세서(CP: communication processor)를 포함할 수 있다.
WiFi 모듈 223, 블루투스 모듈 225, GNSS 모듈 227 또는 NFC 모듈 228 각각은, 예를 들면, 해당하는 모듈을 통해서 송수신되는 데이터를 처리하기 위한 프로세서를 포함할 수 있다. 어떤 실시 예에 따르면, 셀룰러 모듈 221, WiFi 모듈 223, 블루투스 모듈 225, GNSS 모듈 227 또는 NFC 모듈 228 중 적어도 일부(예: 두 개 이상)는 하나의 integrated chip(IC) 또는 IC 패키지 내에 포함될 수 있다.
RF 모듈 229는, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈 229는, 예를 들면, 트랜시버(transceiver), PAM(power amp module), 주파수 필터(frequency filter), LNA(low noise amplifier), 또는 안테나(antenna) 등을 포함할 수 있다. 다른 실시 예에 따르면, 셀룰러 모듈 221, WiFi 모듈 223, 블루투스 모듈225, GNSS 모듈 227 또는 NFC 모듈 228 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다.
가입자 식별 모듈 224는, 예를 들면, 가입자 식별 모듈을 포함하는 카드 및/또는 내장 SIM(embedded SIM)을 포함할 수 있으며, 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다.
메모리 230(예: 메모리 130)은, 예를 들면, 내장 메모리 232 또는 외장 메모리 234를 포함할 수 있다. 내장 메모리 232는, 예를 들면, 휘발성 메모리(volatile memory)(예: DRAM(dynamic RAM(random access memory)), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등), 비휘발성 메모리(non-volatile memory)(예: OTPROM(one time programmable ROM(read only memory)), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM, 플래시 메모리(예: NAND flash 또는 NOR flash 등), 하드 드라이브, 또는 솔리드 스테이트 드라이브(solid state drive(SSD)) 중 적어도 하나를 포함할 수 있다.
외장 메모리 234는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital), MMC(MultiMediaCard) 또는 메모리 스틱(memory stick) 등을 더 포함할 수 있다. 외장 메모리 234는 다양한 인터페이스를 통하여 전자 장치 201과 기능적으로 및/또는 물리적으로 연결될 수 있다.
센서 모듈 240은, 예를 들면, 물리량을 계측하거나 전자 장치 201의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈 240은, 예를 들면, 제스처 센서(gesture sensor) 240A, 자이로 센서(gyro sensor) 240B, 기압 센서(barometer) 240C, 마그네틱 센서(magnetic sensor) 240D, 가속도 센서(acceleration sensor) 240E, 그립 센서(grip sensor) 240F, 근접 센서(proximity sensor) 240G, 컬러 센서(color sensor) 240H(예: RGB(red, green, blue) 센서), 생체 센서(medical sensor) 240I, 온/습도 센서(temperature-humidity sensor) 240J, 조도 센서(illuminance sensor) 240K, 또는 UV(ultra violet) 센서 240M 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로(additionally or alternatively), 센서 모듈 240은, 예를 들면, 후각 센서(E-nose sensor), EMG 센서(electromyography sensor), EEG 센서(electroencephalogram sensor), ECG 센서(electrocardiogram sensor), IR(infrared) 센서, 홍채 센서(iris scan sensor) 및/또는 지문 센서(finger scan sensor)를 포함할 수 있다. 센서 모듈 240은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시 예에서는, 전자 장치 201은 프로세서 210의 일부로서 또는 별도로, 센서 모듈 240을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서 210가 슬립(sleep) 상태에 있는 동안, 센서 모듈 240을 제어할 수 있다.
입력 장치 250은, 예를 들면, 터치 패널(touch panel) 252, (디지털) 펜 센서(pen sensor) 254, 키(key) 256, 또는 초음파(ultrasonic) 입력 장치 258를 포함할 수 있다. 터치 패널 252는, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널 252는 제어 회로를 더 포함할 수도 있다. 터치 패널 252는 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다.
(디지털) 펜 센서 254는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 쉬트(sheet)를 포함할 수 있다. 키 256은, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드(keypad)를 포함할 수 있다. 초음파 입력 장치 258은 마이크(예: 마이크 288)를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이 260(예: 디스플레이 160)는 패널 262, 홀로그램 장치 264, 또는 프로젝터 266을 포함할 수 있다. 패널 262는, 도 1의 디스플레이 160과 동일 또는 유사한 구성을 포함할 수 있다. 패널 262는, 예를 들면, 유연하게(flexible), 투명하게(transparent), 또는 착용할 수 있게(wearable) 구현될 수 있다. 패널 262는 터치 패널 252와 하나의 모듈로 구성될 수도 있다. 홀로그램 장치 264는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터 266은 스크린(screen)에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치 201의 내부 또는 외부에 위치할 수 있다. 한 실시 예에 따르면, 디스플레이 260은 패널 262, 홀로그램 장치 264, 또는 프로젝터 266을 제어하기 위한 제어 회로를 더 포함할 수 있다.
인터페이스 270은, 예를 들면, HDMI(high-definition multimedia interface) 272, USB(universal serial bus) 274, 광 인터페이스(optical interface) 276, 또는 D-sub(D-subminiature) 278을 포함할 수 있다. 인터페이스 270은, 예를 들면, 도 1에 도시된 통신 인터페이스 170에 포함될 수 있다. 추가적으로 또는 대체적으로(additionally and alternatively), 인터페이스 270은, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD(secure digital) 카드/MMC(multi-media card) 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈 280은, 예를 들면, 소리(sound)와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈 280의 적어도 일부 구성요소는, 예를 들면, 도 1 에 도시된 입출력 인터페이스 150에 포함될 수 있다. 오디오 모듈 280은, 예를 들면, 스피커 282, 리시버 284, 이어폰 286, 또는 마이크 288 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈 291은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시 예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, ISP(image signal processor), 또는 플래시(flash)(예: LED 또는 xenon lamp 등)를 포함할 수 있다.
전력 관리 모듈 295는, 예를 들면, 전자 장치 201의 전력을 관리할 수 있다. 한 실시 예에 따르면, 전력 관리 모듈 295는 PMIC(power management integrated circuit), 충전 IC(charger integrated circuit), 또는 배터리 296 또는 연료 게이지(battery or fuel gauge)를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리 296의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리 296은, 예를 들면, 충전식 전지(rechargeable battery) 및/또는 태양 전지(solar battery)를 포함할 수 있다.
인디케이터 297은 전자 장치 201 또는 그 일부(예: 프로세서 210)의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터 298은 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동(vibration), 또는 햅틱(haptic) 효과 등을 발생시킬 수 있다. 도시되지는 않았으나, 전자 장치 201은 모바일 TV 지원을 위한 처리 장치(예: GPU)를 포함할 수 있다. 모바일 TV 지원을 위한 처리 장치는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting), 또는 미디어플로(MediaFloTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있다.
본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시 예에서, 전자 장치는 본 문서에서 기술된 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시 예에 따른 전자 장치의 구성요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성요소들의 기능을 동일하게 수행할 수 있다.
도 3은 본 개시의 다양한 실시 예에 따른 프로그램 모듈의 블록도이다.
한 실시 예에 따르면, 프로그램 모듈 310(예: 프로그램 140)은 전자 장치(예: 전자 장치 101)에 관련된 자원을 제어하는 운영 체제(operating system(OS)) 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램 147)을 포함할 수 있다. 운영 체제는, 예를 들면, 안드로이드(android), iOS, 윈도우즈(windows), 심비안(symbian), 타이젠(tizen), 또는 바다(bada) 등이 될 수 있다.
프로그램 모듈 310은 커널 320, 미들웨어 330, 어플리케이션 프로그래밍 인터페이스(application programming interface (API)) 360, 및/또는 어플리케이션 370을 포함할 수 있다. 프로그램 모듈 310의 적어도 일부는 전자 장치 상에 프리로드(preload) 되거나, 외부 전자 장치(예: 전자 장치(102, 104), 서버 106 등)로부터 다운로드(download) 가능하다.
커널 320(예: 커널 141)은, 예를 들면, 시스템 리소스 매니저 321 및/또는 디바이스 드라이버 323을 포함할 수 있다. 시스템 리소스 매니저 321은 시스템 리소스의 제어, 할당, 또는 회수 등을 수행할 수 있다. 한 실시 예에 따르면, 시스템 리소스 매니저 321은 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부 등을 포함할 수 있다. 디바이스 드라이버 323은, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, WiFi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다.
미들웨어 330은, 예를 들면, 어플리케이션 370이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션 370이 전자 장치 내부의 제한된 시스템 자원을 효율적으로 사용할 수 있도록 API 360을 통해 다양한 기능들을 어플리케이션 370으로 제공할 수 있다. 한 실시 예에 따르면, 미들웨어 330(예: 미들웨어 143)은 런타임 라이브러리 335, 어플리케이션 매니저(application manager) 341, 윈도우 매니저(window manager) 342, 멀티미디어 매니저(multimedia manager) 343, 리소스 매니저(resource manager) 344, 파워 매니저(power manager) 345, 데이터베이스 매니저(database manager) 346, 패키지 매니저(package manager) 347, 연결 매니저(connectivity manager) 348, 통지 매니저(notification manager) 349, 위치 매니저(location manager) 350, 그래픽 매니저(graphic manager) 351, 또는 보안 매니저(security manager) 352 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리 335는, 예를 들면, 어플리케이션 370이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리 335는 입출력 관리, 메모리 관리, 또는 산술 함수에 대한 기능 등을 수행할 수 있다.
어플리케이션 매니저 341은, 예를 들면, 어플리케이션 370 중 적어도 하나의 어플리케이션의 생명 주기(life cycle)를 관리할 수 있다. 윈도우 매니저 342는 화면에서 사용하는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저 343은 다양한 미디어 파일들의 재생에 필요한 포맷(format)을 파악하고, 해당 포맷에 맞는 코덱(codec)을 이용하여 미디어 파일의 인코딩(encoding) 또는 디코딩(decoding)을 수행할 수 있다. 리소스 매니저 344는 어플리케이션 370 중 적어도 어느 하나의 어플리케이션의 소스 코드, 메모리 또는 저장 공간 등의 자원을 관리할 수 있다.
파워 매니저 345는, 예를 들면, 바이오스(BIOS: basic input/output system) 등과 함께 동작하여 배터리(battery) 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보 등을 제공할 수 있다. 데이터베이스 매니저 346은 어플리케이션 370 중 적어도 하나의 어플리케이션에서 사용할 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저 347은 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 업데이트를 관리할 수 있다.
연결 매니저 348은, 예를 들면, WiFi 또는 블루투스 등의 무선 연결을 관리할 수 있다. 통지 매니저 349는 도착 메시지, 약속, 근접성 알림 등의 사건(event)을 사용자에게 방해되지 않는 방식으로 표시 또는 통지할 수 있다. 위치 매니저 350은 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저 351은 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저 352는 시스템 보안 또는 사용자 인증 등에 필요한 제반 보안 기능을 제공할 수 있다. 한 실시 예에 따르면, 전자 장치(예: 전자 장치 101)가 전화 기능을 포함한 경우, 미들웨어 330은 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화 매니저(telephony manager)를 더 포함할 수 있다.
미들웨어 330은 전술한 구성요소들의 다양한 기능의 조합을 형성하는 미들웨어 모듈을 포함할 수 있다. 미들웨어 330은 차별화된 기능을 제공하기 위해 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 또한, 미들웨어 330은 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다.
API 360(예: API 145)는, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼(platform) 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션 370(예: 어플리케이션 프로그램 147)은, 예를 들면, 홈 371, 다이얼러 372, SMS/MMS 373, IM(instant message) 374, 브라우저 375, 카메라 376, 알람 377, 컨택트 378, 음성 다이얼 379, 이메일 380, 달력 381, 미디어 플레이어 382, 앨범 383, 시계 384, 건강 관리(health care)(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보 제공(예: 기압, 습도, 또는 온도 정보 등을 제공) 등의 기능을 수행할 수 있는 하나 이상의 어플리케이션을 포함할 수 있다.
한 실시 예에 따르면, 어플리케이션 370은 전자 장치(예: 전자 장치 101)와 외부 전자 장치(예: 전자 장치(102, 104)) 사이의 정보 교환을 지원하는 어플리케이션(이하, 설명의 편의 상, "정보 교환 어플리케이션")을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 알림 전달(notification relay) 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리(device management) 어플리케이션을 포함할 수 있다.
예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션(예: SMS/MMS 어플리케이션, 이메일 어플리케이션, 건강 관리 어플리케이션, 또는 환경 정보 어플리케이션 등)에서 발생된 알림 정보를 외부 전자 장치(예: 전자 장치(102, 104))로 전달하는 기능을 포함할 수 있다. 또한, 알림 전달 어플리케이션은, 예를 들면, 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치(예: 전자 장치(102, 104))의 적어도 하나의 기능(예: 외부 전자 장치 자체(또는, 일부 구성 부품)의 턴-온(turn-on)/턴-오프(turn-off) 또는 디스플레이의 밝기(또는, 해상도) 조절), 외부 전자 장치에서 동작하는 어플리케이션 또는 외부 전자 장치에서 제공되는 서비스(예: 통화 서비스 또는 메시지 서비스 등)를 관리(예: 설치, 삭제, 또는 업데이트)할 수 있다.
한 실시 예에 따르면, 어플리케이션 370은 외부 전자 장치(예: 전자 장치(102, 104))의 속성)에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션 등)을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 370은 외부 전자 장치(예: 서버 106 또는 전자 장치(102, 104))로부터 수신된 어플리케이션을 포함할 수 있다. 한 실시 예에 따르면, 어플리케이션 370은 프리로드 어플리케이션(preloaded application) 또는 서버로부터 다운로드 가능한 제3자 어플리케이션(third party application)을 포함할 수 있다. 도시된 실시 예에 따른 프로그램 모듈 310의 구성요소들의 명칭은 운영 체제의 종류에 따라서 달라질 수 있다.
다양한 실시 예들에 따르면, 프로그램 모듈 310의 적어도 일부는 소프트웨어, 펌웨어(firmware), 하드웨어, 또는 이들 중 적어도 둘 이상의 조합으로 구현될 수 있다. 프로그램 모듈 310의 적어도 일부는, 예를 들면, 프로세서(예: 프로세서 210)에 의해 구현(implement)(예: 실행)될 수 있다. 프로그램 모듈 310의 적어도 일부는 하나 이상의 기능을 수행하기 위한, 예를 들면, 모듈, 프로그램, 루틴, 명령어 세트(sets of instructions) 또는 프로세스 등을 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면, "모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시 예들에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 기록 매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서 120)에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들면, 메모리 130이 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시 예들에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시 예들에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다. 그리고 본 문서에 개시된 실시 예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 문서에서 기재된 기술의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 문서의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시 예를 포함하는 것으로 해석되어야 한다.
예를 들어, 본 개시의 다양한 실시 예들에서 전자 장치는 본 개시의 다양한 실시 예들에 따른 기능을 지원하는 모든 정보통신기기, 멀티미디어기기, 웨어러블 디바이스 및 그에 대한 응용기기와 같이 AP(application processor)), CP(communication processor), GPU(Graphic Processing Unit), 및 CPU(central processing unit) 등의 다양한 프로세서(예: 프로세서(120, 210)) 중 하나 또는 그 이상을 사용하는 모든 장치를 포함할 수 있다.
이하에서 설명되는 본 개시의 다양한 실시 예들에서는 하드웨어적인 접근 방법을 예시로서 설명한다. 하지만, 본 개시의 다양한 실시 예들에서는 하드웨어와 소프트웨어를 모두 사용하는 기술을 포함하고 있으므로, 본 개시의 다양한 실시 예들이 소프트웨어 기반의 접근 방법을 제외하는 것은 아니다.
전자 장치(예: 휴대 단말기, 전자 장치 101)는 GPS, WiFi, 블루투스(Bluetooth), BLE, 센서(sensor), NFC(near field communication) 등을 구비하여 사용자의 현재 위치 및 현재 위치에 기반한 서비스(LBS)를 제공하고 있다.
위치 기반 서비스 그리고 이에 기반을 둔 다양한 기능들이 떠오르고 있는 현시대에 유독 각광받고 있는 위치기반 API(application programming interface)가 있는데 지오펜싱(geofencing)도 그 중 하나가 될 수 있다.
지오펜싱(geofencing)이라 함은 지오그래픽(geographic)과 펜싱(fencing)의 합성어로 가상의 지리적 울타리(geo-fence)를 설정하여 특정 구역에 대한 사용자 출입 이벤트(in/out event)를 통지(notification)하는 API 를 의미할 수 있다.
지오펜스는 가상의 지리적 울타리로서, 현재 사용자의 위치를 통지하는 것을 넘어 가상의 경계로 구획된 영역에 대해 전자 장치의 진입/진출을 감지하는 측위 기반 기술을 의미할 수 있다.
예를 들면, 지오펜싱은 위치 추적 기술 중 하나인 GPS(global positioning system)를 이용한 인터페이스라 할 수 있다. 즉 GPS를 통해 지오펜스(geo-fence)라는 가상의 울타리를 지정해 놓으면 지오펜스 구역에 사용자가 진입하거나 벗어나는 경우(in/out event) 이를 알려주는 것이 지오펜싱의 역할이 될 수 있다.
예컨대, 지오펜스는 사용자가 지정한 특정 구역, 즉 가상의 울타리를 의미하며 설정된 지오펜스(GPS 울타리)안에 사용자가 드나드는 것을 감지하는 기능을 지오펜싱이라 할 수 있다.
지오펜싱 기술은 다수의 지오펜스가 등록될 경우 등록된 모든 지오펜스들에 대하여 거리를 산출하여야 한다. 이러한 방법의 경우 지오펜스의 개수가 충분히 많을 때, (예: 관심지역(point of interest, POI)을 기반으로 한 지오펜스의 경우 전국의 프랜차이즈 매장에 대한 지오펜스가 등록될 수 있다.) 메모리 및 하드웨어(H/W) 자원에 대한 한계에 부딪힐 수 있다.
예를 들면, 전자 장치가 처리할 지오펜스 리스트가 방대하여, 전자 장치의 메모리 및 하드웨어(H/W) 자원 등이 부족한 경우에는 지오펜스 리스트(geo-fence list)를 각 지오펜스까지의 거리 순으로 정렬하더라도, 제한된 개수의 지오펜스들만 등록할 수 있다. 이럴 경우 전자 장치는 현재 위치에 대한 감시를 프로세스에서 계속 해야 함은 물론, 빠른 시간 내에 근처에 등록된 지오펜스가 아닌 먼 곳에 있는 등록되지 않은 다른 지오펜스에 대한 접근에 대해서는 감지하지 못할 수 있다.
따라서, 다수의 지오펜스가 존재하는 경우, 프로세서의 소모 전류를 줄이기 위해서나 하드웨어 자원을 효율적으로 사용하기 위해, 지오펜스들을 그룹화하여 관리할 필요가 있을 수 있다.
본 개시의 다양한 실시예에 따르면, 전자 장치가 다수의 지오펜스를 감시하는 경우, 지오펜스 리스트 중의 불필요한 지역에 대한 감시를 피하고 필수적으로 감시해야 하는 지오펜스들만을 선택적으로 감시할 수 있다.
도 4는 본 개시의 다양한 실시 예에 따른 지오펜스를 관리하는 전자 장치 400과 서버470의 구성을 예시하는 도면이다.
도 4를 참조하면 전자 장치 400(예: 도 1의 전자 장치 101 또는 도 2의 전자 장치 201)은, 예를 들면, 프로세서 410, 위치 확인 모듈430, 제 2 메모리 450 및 통신부 460을 포함할 수 있다.
프로세서 410(예: 도 1의 프로세서 120)은 중앙처리 전자 장치(CPU), 어플리케이션 프로세서(AP), 또는 커뮤니케이션 프로세서(CP) 중 하나 또는 그 이상을 포함할 수 있다.
프로세서 410은, 예를 들면, 어플리케이션(application) 412, 적어도 하나의 위치 감지 모듈(place detection module) 414 및 데이터베이스 관리 모듈(database management module) 416을 포함할 수 있다.
어플리케이션 412는 제 2 메모리 450또는 서버 470에 저장되어 있다가 로드(load)되어 프로세서 410에 의해 처리될 수 있다. 어플리케이션 412는 예를 들면, 지오펜스와 관련된 어플리케이션이 될 수 있다.
상기 지오펜스와 관련된 어플리케이션 412는 해당 장소(예: 관심 지역(POI)의 지오펜스)에 대한 위치 정보(예: 위도 경도)를 알고 있으며, 상기 어플리케이션 412가 감지하고자 하는 장소(위치)는 해당 어플리케이션의 목적에 따라 한 개에서 수 만개 이상까지 다양할 수 있다.
한 실시 예에 따르면, 어플리케이션 412는 지오펜스 리스트(geofence list)를 위치 감지 모듈 414에 전달할 수 있다. 지오펜스 리스트는 어플리케이션 412의 요청에 의해 통신부 460을 통하여 외부 서버 470으로부터 다운 받거나, 제 2 메모리 450에 저장된 지오펜스 리스트일 수 있다.
한 실시 예에 따르면, 어플리케이션 412는 특정 장소(위치)에서 특정한 위도/경도에 따른 그 특정 장소의 출입 이벤트(in/out event)를 위치 감지 모듈 414로부터 전달받아 사용자에게 통지할 수 있다. 예를 들면, 어플리케이션 412는 각각의 장소에 대한 위도/경도를 포함하는 지오펜스 리스트를 위치 감지 모듈 414에 전달할 수 있다. 상기 위치 감지 모듈 414는 위치 확인 모듈 430을 사용하여, 전달 받은 지오펜스 리스트에 포함된 특정 장소에서의 출입 이벤트를 감지할 수 있고, 상기 어플리케이션 412에 상기 발생한 출입 이벤트를 통지할 수 있다.
한 실시 예에 따르면, 위치 감지 모듈(place detection module) 414는 어플리케이션 412에서 전달받은 지오펜스 리스트 즉 지오펜스와 관련된 장소의 위치 및 위도/경도의 세트를 서버 470 또는 제 2 메모리 450에 저장할 수 있다. 또한, 위치 감지 모듈 414는 가속도센서 및 위치 확인 모듈 430 (GPS, WiFi, modem, BLE, NFC)등을 사용하여 전자 장치의 현재 위치를 감시하여, 전자 장치의 특정 장소에 대한 출입 이벤트의 발생을 감지할 수 있다. 또한, 위치 감지 모듈 414는 상기 출입 이벤트의 발생을 지오펜스와 관련된 어플리케이션 412에 전달할 수 있다.
한 실시 예에 따르면, 위치 감지 모듈 414는 전달받은 지오펜스 리스트의 정보를 제 2 메모리 450 또는 서버 470에 저장하고 현재 위치에 따라 클러스터링(clustering or grouping) 할 수 있다.
또한 위치 감지 모듈 414는 어플리케이션 412로부터 전달 받은 지오펜스 리스트를 이용하여, 데이터베이스 관리 모듈 416에 클러스터링(clustering or grouping) 할 것을 요청할 수 있다. 또한 위치 감지 모듈 414는 데이터베이스 관리 모듈 416이 클러스터링한 지오펜스를 제 2 메모리450 또는 서버 470에 저장할 수 있다. 또한 위치 감지 모듈 414는 지오펜스 감지 모듈 432가 지오펜스에 대한 출입 이벤트를 감지하도록, 상기 클러스터링(그룹핑)한 지오펜스를 위치 확인 모듈 430 의 제 1 메모리 434에 등록 시킬 수 있다.
데이터베이스 관리 모듈 416에서는 각 지오펜스의 위도/경도에 따른 거리에 기반하여 그룹(group)을 만들 수 있다. 예를 들면 위치 감지 모듈 414는 어플리케이션 412로부터 지오펜스 리스트를 전달 받을 수 있고, 상기 지오펜스 리스트를 그룹화하기 위해, 데이터베이스 관리 모듈 416에 요청할 수 있다. 상기 데이터베이스 관리 모듈 416은 위치 감지 모듈 414의 요청에 따라 지오펜스 리스트를 특정한 기준(예: 위도/경도, 거리, 또는 상황 기반)에 따라 그룹화하고, 그룹화한 지오펜스 리스트를 제 2 메모리 450또는 서버 470에 저장할 수 있다.
서버 470은 자체적으로 지오펜스와 관련된 어플리케이션 412를 저장하고 있거나, 지오펜스 리스트를 저장하는 역할을 할 수 있다. 또는 위치 감지 모듈 414가 어플리케이션 412로부터 지오펜스 리스트의 위치 정보(예: 지오펜스의 위도/경도)를 전달 받고, 상기 지오펜스 리스트의 위치 정보를 저장하는 역할을 할 수 있다. 또는 위치 감지 모듈 414에서 전자 장치400의 현재 위치를 감시하기 시작하거나 감시하는 도중, 전자 장치 400의 위치가 바뀜에 따라서 더 많은 위치 정보를 가져올 필요가 있을 때에는 서버 470에 해당 정보를 요청할 수 있다.
위치 확인 모듈 430은, 예를 들면, 지오펜스 감지 모듈(geofence detection module) 432 와 제 1 메모리 434를 포함할 수 있다. 상기 위치 확인 모듈 430은 하드웨어로 구현할 수도 있다. 예컨대, 상기 위치 확인 모듈 430은 GPS, WiFi, Cell 중 적어도 하나를 이용하여 하드웨어단에서 위치를 감지할 수 있다.
위치 확인 모듈 430 은 전자 장치 400 이 지오펜스를 구축하고 지오펜스를 감지하도록 하는 모듈이 될 수 있다. 예를 들면, 프로세서 410은 위치 확인 모듈 430의 제 1 메모리 434에 지오펜스를 등록시킬 수 있으며, 지오펜스 감지 모듈 432은 상기 등록된 지오펜스에 대한 출입 이벤트를 감지할 수 있다. 즉, 상기 지오펜스 감지 모듈 432는 전자 장치가 지오펜스에 대응되는 영역의 외부에서 내부로 이동되는 상태 또는 지오펜스에 대응하는 영역 내부에서 외부로 이동하는 상태 등을 감지할 수 있다.
본 개시의 한 실시예에 따르면, 프로세서 410은 위치 확인 모듈 430의 제 1 메모리 434에 특정 기준으로 그룹화된 지오펜스를 등록시킬 수 있으며, 지오펜스 감지 모듈 432은 상기 그룹화되어 등록된 지오펜스에 대한 출입 이벤트를 감지할 수 있다.
예를 들면, 지오펜스와 관련된 어플리케이션 412는 지오펜스 리스트를 제 2 메모리 450또는 서버 470에서 불러오고, 위치 감지 모듈 414는 상기 지오펜스 리스트의 위치 정보(예: 위도/경도 또는 거리) 등을 상기 어플리케이션 412로부터 전달 받아 처리하거나 또는 데이터베이스 관리모듈 416에 요청하여 위치 확인 모듈 430의 하드웨어 자원(예: 제 1 메모리 434)에 적합하게 그룹화할 수 있다. 위치 감지 모듈 414는 상기 그룹화된 지오펜스 리스트를 위치 확인 모듈 430의 제 1 메모리 434에 등록하고, 지오펜스 감지 모듈 432는 등록된 지오펜스와 전자 장치 400의 현재 위치를 비교하여 지오펜스의 출입 이벤트를 감지할 수 있다. 상기 지오펜스 감지 모듈 432는 등록된 지오펜스에 대한 출입 이벤트를 감지한 경우 위치 감지 모듈 414 를 깨워 어플리케이션 412에 출입 이벤트가 발생했음을 통지 할 수 있다.
상기 도 4에서 상기 위치 확인 모듈 430은 지오펜스 그룹을 모니터링하도록 설정된 제 1 프로세서가 될 수 있으며, 상기 프로세서 410은 상기 위치 확인 모듈 430과 기능적으로 연결된 제 2 프로세서가 될 수 있다. 그러면 상기 프로세서 410인 제 2 프로세서는 복수의 지오펜스들 중 적어도 일부가 포함된 상기 지오펜스 그룹을 상기 위치 확인 모듈 430인 제 1 프로세서에 전송할 수 있으며, 상기 전자 장치가 상기 지오펜스 그룹 중 하나의 지오펜스의 외부에서 내부로 이동하거나, 상기 하나의 지오펜스의 내부에서 외부로 이동했다는 알림을 상기 위치 확인 모듈 430인 제 1 프로세서로부터 수신할 수 있다.
이때 상기 프로세서 410인 제 2 프로세서는 상기 전자 장치의 이동(외부에서 내부로 이동, 또는 내부에서 외부로 이동)에 반응하여 지오펜스 그룹을 업데이트할 수 있다. 그리고 상기 지오펜스 그룹을 생성할 때 상기 프로세서 410은 제한된 개수에 기반하여 상기 지오펜스 그룹을 생성할 수 있으며, 또는 사용자의 행동 패턴을 기반하여 상기 지오펜스 그룹을 생성할 수 있고, 또는 상기 복수의 지오펜스들에 대응하는 위치 정보에 기반하여 상기 지오펜스 그룹을 생성할 수 있다. 또한 상기 위치 확인 모듈 430인 상기 제 1 프로세서는 상기 프로세서 410인 제 2 프로세서에 비해 낮은 전력을 소모할 수 있다.
또한 상기 서버 470은 복수의 지오펜스(geo-fence)들에 대응하는 위치 정보를 저장할 수 있다. 상기 메모리와 기능적으로 연결되는 프로세서 410은 지오펜스의 위치 정보(distance or latitude and longitude coordinates)에 기반하여 상기 복수의 지오펜스들을 복수의 메인 그룹들로 분류할 수 있다. 그리고 상기 위치 확인 모듈 430은 상기 전자 장치가 상기 복수의 메인 그룹들에 대응하는 영역에 접근하는지를 모니터링할 수 있다. 상기 전자 장치가 상기 복수의 메인 그룹 중 하나의 그룹에 대응하는 영역 안에 접근하면, 상기 위치 확인 모듈 430은 이를 상기 프로세서 410에 전달할 수 있다. 그러면 상기 프로세서 410이 상기 하나의 메인 그룹을 복수의 서브 그룹으로 분류할 수 있다. 그리고 상기 위치 확인 모듈 430은 상기 서브 그룹을 모니터링할 수 있다.
또한 상기 프로세서 410은 위치 정보에 기반하여 상기 복수의 지오펜스들 중 모니터링할 제 1 후보들을 결정하고, 상기 전자 장치 400에 대응하는 위치 및 상기 제 1 후보들을 포함하는 가상의 지오펜스를 생성할 수 있다. 그리고 상기 위치 확인 모듈 430은 상기 가상의 지오펜스를 모니터링할 수 있다. 이때 상기 전자 장치가 상기 가상의 지오펜스를 벗어나면, 상기 위치 확인 모듈 430은 이를 감지하여 상기 프로세서 410에 전달할 수 있다. 그러면 상기 프로세서 410은 상기 전자 장치의 가상 영역 이탈에 기반하여 상기 복수의 지오펜스들 중 모니터링할 제 2 후보들을 결정할 수 있다.
본 개시의 다양한 실시예에 따르면, 전자 장치는 지오펜스 그룹을 모니터링하도록 설정된 제 1 프로세서와 상기 제 1 프로세서와 기능적으로 연결된 제 2 프로세서를 포함하고, 상기 제 2 프로세서는 복수의 지오펜스들 중 적어도 일부가 포함된 상기 지오펜스 그룹을 상기 제 1 프로세서에 전송하고, 상기 전자 장치가 상기 지오펜스 그룹 중 하나의 지오펜스의 외부에서 내부로 이동하거나, 상기 하나의 지오펜스의 내부에서 외부로 이동했다는 알림을 상기 제 1 프로세서로부터 수신하도록 설정될 수 있다. 상기 제 2 프로세서는 상기 전자 장치가 적어도 하나의 지오펜스 그룹 중 하나(제 1 지오펜스 그룹)에 위치하면, 상기 제 1 지오펜스 그룹 및/또는 상기 제 1 지오펜스 그룹 내에 포함된 적어도 하나의 지오펜스를 모니터링하고, 상기 전자 장치가 상기 제 1 지오펜스 그룹을 벗어날 경우, 복수의 지오펜스들을 적어도 하나의 지오펜스 그룹으로 재그룹핑 할 수 있다.
한 실시예에 따르면, 상기 제 2 프로세서는 상기 전자 장치의 현재 위치를 획득하고, 상기 현재 위치에서 각각의 지오펜스들까지의 거리를 계산하고, 상기 계산된 거리 및/또는 모니터링 가능한 지오펜스 개수에 기반하여, 상기 현재 위치로부터 가까운 순서대로 상기 모니터링 가능한 지오펜스 개수를 만족하는 적어도 하나의 지오펜스를 하나의 지오펜스 그룹으로 재그룹핑 할 수 있다. 상기 제 2 프로세서는 상기 전자 장치가 지오펜스 범위 내에 위치할 때에는 상기 전자 장치가 지오펜스 범위를 벗어나는 거리를 계산하고, 상기 전자 장치가 지오펜스 범위 밖에 위치할 때에는 상기 전자 장치가 상기 지오펜스 범위 내에 위치될 거리까지의 남은 거리를 계산한 후, 상기 계산된 지오펜스들을 전자 장치의 현재 위치에서 거리순으로 배열하여 지정된 개수의 지오펜스들을 지오펜스 그룹으로 설정할 수 있다.
한 실시 예에 따르면, 상기 제 2 프로세서는 위도 및 경도의 위치 정보에 기반하여 상기 복수의 지오펜스들이 상기 복수의 상위 지오펜스 그룹들로 분류되고, 상기 제 1 프로세서의 모니터링 결과에 의해 상기 복수의 상위 지오펜스 그룹 중 하나의 그룹에 대응하는 영역 안에 접근이 확인되면, 상기 하나의 상위 지오펜스 그룹을 복수의 하위 지오펜스 그룹으로 분류할 수 있다. 상기 제 1 프로세서는 상기 복수의 하위 지오펜스 그룹을 모니터링 할 수 있다. 상기 제 1 프로세서는 상기 제 2 프로세서에 비해 낮은 전력을 소모할 수 있다
한 실시예에 따르면, 상기 제 2 프로세서는 제한된 지정 개수에 기반하여 상기 지오펜스 그룹을 생성할 수 있다. 상기 제 2 프로세서는 사용자의 행동 패턴을 기반하여 제 1 지오펜스 그룹을 형성하고, 상기 지정 개수의 남은 개수는 위치 정보에 기반하여 제 2 지오펜스 그룹을 형성할 수 있다. 상기 위치정보는 전자 장치의 위도 및 경도 또는 전자 장치와 지오펜스들 간의 거리일 수 있다.
본 개시의 다양한 실시예에 따르면, 전자 장치가 다수의 지오펜스를 감시하는 경우, 지오펜스 리스트를 특정 기준에 기반하여 클러스터링 또는 그룹핑하여 감시할 수 있다.
예를 들면, 전자 장치가 다수의 지오펜스를 감시하는 경우, 소모 전류 및 하드웨어 자원의 한계로 인하여 감시해야 하는 지오펜스 전부를 등록시킬 수 없는 경우가 있을 수 있다. 이런 경우, 전자 장치가 지오펜스 리스트를 특정 기준에 기반하여 클러스터링 또는 그룹핑해서 감시해야 할 필요가 생길 수 있다
도 5a 내지 도 5d는 본 개시의 다양한 실시예에 따른 지오펜스들을 클러스터링하는 다양한 방법을 예시하는 도면이다.
도 5a 는 지오펜스들을 클러스터링 또는 그룹핑 하기 전의 모습을 예시하는 도면이다. 도 5a를 참조하면, 점 510은 전자 장치 400의 현재 위치를 나타내고, 원형의 지리적인 가상 울타리인 G1부터 G7은 지오펜스들을 나타낼 수 있다.
위치 확인 모듈 430은 제 1 메모리 434 또는 하드웨어 가용 자원 등의 문제로 허용 가능한 지오펜스의 개수가 미리 정하여 질 수 있다. 예를 들면, 도 5a의 모든 지오펜스 7개 중 위치 확인 모듈 430의 허용 가능한 지오펜스의 개수를 5개로 가정하면, 지오펜스 감지 모듈 432은 지오펜스를 5개만 등록 가능하고, 상기 등록한 5개의 지오펜스만 감시할 수 있다. 등록되지 않은 나머지 두 개의 지오펜스는 위치 확인 모듈 430의 감시에서 벗어날 수 있다.
이 때 전자 장치 400은 모든 지오펜스를 감시하고, 소모 전류를 줄일 수 있는 방법을 필요로 할 수 있는데, 그 방법은 모든 지오펜스를 클러스터링 또는 그룹핑하여 감시하는 방법이 될 수 있다. 예컨대, 도 5a 에서 전자 장치 400이 7개의 지오펜스를 모두 등록하여 감시하는 것보다 한 그룹은 4개의 지오펜스를 포함하고, 나머지 한 그룹은 3개의 지오펜스를 포함하도록 하여 2개의 그룹으로 나누어 등록하는 방법을 생각해 볼 수 있다. 전자 장치 400의 현재 위치가 상기 2개의 그룹 영역 밖에 있으면 그룹 2개만을 지오펜스 리스트로 전자 장치 400으로 등록시키고, 두 그룹 중 어느 한 그룹 영역 안으로 이동한 경우 지오펜스 리스트로 그 그룹과 상기 그룹 안의 지오펜스를 등록시켜 감시할 수 있다.
본 개시의 한 실시예에 따르면, 전자 장치는 다수의 지오펜스들을 위도/경도 기준으로 클러스터링 또는 그룹핑을 할 수 있다.
도 5b는 지오펜스들을 위도/경도 정보에 기반하여 영역별로 클러스터링하는 모습을 예시한 도면이다. 즉 상기 방법은 지오펜스의 위도/경도 정보를 기반으로 영역별로 지오펜스들을 그룹핑하여 등록하고 감시하는 방법이다.
전자 장치 400은 현재 위치를 기준으로 기 설정된 거리 내에 포함된 적어도 하나의 지오펜스를 포함하는 지오펜스 리스트를 제 2 메모리 450 또는 서버 470으로부터 획득할 수 있다. 도 5b를 참조하면, 상기 지오펜스 리스트에 포함된 적어도 하나의 지오펜스 각각의 위도/경도의 평균값으로 중심점 520을 구하고, 상기 중심점 520으로부터 일정 위도/경도 (예: 1도) 간격으로 포함되는 지오펜스들을 확인할 수 있다. 여기에서 일정 위도/경도 간격 안에 있는 지오펜스 및 지오펜스 그룹의 개수와 하드웨어 자원의 허용 개수를 비교하여, 일정 위도/경도 간격 안에 있는 지오펜스 및 지오펜스 그룹의 개수가 더 큰 경우, 다시 처음 보다 작은 위도/경도 간격(예: 0.5도)을 기반으로 지오펜스들을 클러스터링 할 수 있다. 즉 등록시킬 지오펜스(지오펜스 및 클러스터링 된 지오펜스 그룹)의 개수가 하드웨어 허용 개수에 적합할 때까지 반복적으로 위도/경도를 기반으로 영역별로 지오펜스들을 클러스터링 할 수 있다
예를 들면, 위도/경도 정보를 기반으로 처음 간격보다 더 작은 단위(예: 0.5도)를 기준으로 영역별로 하위 그룹을 재형성할 수 있고, 위도/경도의 소수 첫번째를 반올림하여 영역별로 하위 그룹을 재형성할 수 있다.
본 개시의 한 실시예에 따르면, 전자 장치는 다수의 지오펜스들을 전자 장치의 거리 정보를 기준으로 클러스터링 또는 그룹핑을 할 수 있다.
도 5c는 지오펜스들을 거리 정보에 기반하여 클러스터링하는 모습을 예시한 도면이다. 즉 상기 방법은 전자 장치의 위치로부터 지오펜스까지의 거리 정보를 기반으로 거리순으로 지오펜스들을 그룹핑하여 등록하고 감시하는 방법이다.
도 5c를 참조하여, 위치 확인 모듈 430의 하드웨어 자원상 허용 가능한 지오펜스의 개수 또는 사용자가 허용 가능하도록 입력한 지오펜스의 개수가 5개라고 가정하면, 전자 장치 400의 현재 위치를 기준으로 거리순으로 4번째까지의 지오펜스를 확인할 수 있다.
예를 들면, 거리순으로 가까운 지오펜스 G1, G2, G3, G4 와 상기 지오펜스들(G1, G2, G3, G4)을 포함하는 그룹 1 531을 위치 확인 모듈 430에 등록하여 총 5개를 모니터링할 수 있다. 상기 형성된 가상의 그룹 1 531을 버추얼 펜스(virtual fence)라고 할 수 있다.
한 실시예에 의하면, 상기 전자 장치에서 각 지오펜스까지의 거리는 전자 장치가 지오펜스 범위 내에 위치할 때에는 상기 전자 장치가 지오펜스 범위를 벗어나는 거리를 계산하고, 상기 전자 장치가 지오펜스 범위 밖에 위치할 때에는 상기 전자 장치가 상기 지오펜스 범위 내에 위치될 거리까지의 남은 거리를 계산하여 결정할 수 있다.
전자 장치 400이 그룹 1 531 안에서 이동하는 경우에는 새롭게 거리순으로 클러스터링을 실시하지 아니하나, 전자 장치 400이 상기 그룹 1 531를 벗어나 이동하게 되는 경우에는, 다시 전자 장치 400의 바뀐 현재 위치(그룹 1 531의 영역 밖)와 각 지오펜스의 거리에 기반하여 거리순으로 새로운 그룹을 클러스터링 할 수 있다.
본 개시의 한 실시예에 따르면, 전자 장치는 다수의 지오펜스를 상황 인식 기법을 기준으로 클러스터링 또는 그룹핑을 할 수 있다.
도 5d는 지오펜스들을 상황 인식 기법(context-aware)에 기반하여 클러스터링하는 모습을 예시한 도면이다. 즉 상기 방법은 지오펜스들을 상황 인식 기법에 기반하여, 자주 방문하는 지오펜스들을 그룹핑 없이 각각 독립하여 등록시키거나, 자주 방문하는 지오펜스들만 그룹핑하여 등록하고 감시하는 방법이다.
도 5d를 참조하여, 지오펜스 G6과 G7은 사용자가 자주 방문하는 장소(예: 집 또는 회사)라고 가정할 수 있다. 사용자가 자주 방문하는 장소는 사용자가 자주 이동하는 장소라는 의미이므로, 출입 이벤트(in/out event)가 빈번히 발생할 수 있다. 따라서 자주 방문하는 장소인 지오펜스 G6 과 G7을 다른 지오펜스와 그룹을 형성하게 하면 프로세서 410가 알림 요청을 빈번하게 받게 되어, 전류 소모가 증가할 수 있다.
한 실시 예에 따르면, 상황 인식 기법에 기반하여 자주 방문하는 지오펜스 G6 과 G7을 다른 지오펜스들과 그룹핑하지 않고, 지오펜스G6, G7을 각각 독립하여 위치 확인 모듈 430에 등록시키고, 나머지 지오펜스들인 G1부터 G5는 위도/경도 기반 또는 거리 기반으로 그룹 1 541 및 그룹2 542로 나누어 등록시켜 감시할 수 있다.
또한 자주 방문하는 지오펜스 G6과 G7은 다른 지오펜스와 그룹핑하지 않고, 지오펜스 G6과 G7만을 하나의 그룹으로 묶어 감시할 수 있다.
본 개시의 다양한 실시예에 따르면, 지오펜스 리스트안에 포함된 지오펜스들의 위도/경도의 유사도에 따라서 다수의 지오펜스들을 그룹핑 할 수 있다.
도 4 및 도 5b를 참조하여, 적어도 하나의 지오펜스를 그룹핑하는 과정을 살펴보면, 어플리케이션 412는 지오펜스 리스트에 포함된 적어도 하나의 지오펜스에 대한 출입 이벤트(in/out event) 감시를 위치 감지 모듈 414로 요청할 수 있다. 이 때 어플리케이션 412는 지오펜스에 대하여 들어오는(in) 경우 혹은 나가는(out) 경우 중 하나의 이벤트만을 받기를 원할 수 있고, 사용자의 요청에 의해 감시를 일시적으로 중지하거나 재개할 수 있다.
위치 감지 모듈 414는 전달받은 지오펜스 리스트의 정보(예: 거리 또는 위도/경도)를 제 2 메모리 450 또는 서버 470에 저장하고 현재 위치에 따라 데이터베이스 관리 모듈 416에 클러스터링 또는 그룹핑 할 것을 요청할 수 있다. 데이터베이스 관리 모듈 416에서는 각 지오펜스를 특정한 기준(예: 위도/경도, 거리순, 또는 상황 인식)에 기반하여 그룹을 형성할 수 있다.
한 실시예에 의하면, 전자 장치 400은 지오펜스 리스트에 포함된 적어도 하나의 지오펜스의 위도/경도 유사도에 따라 그룹을 형성할 수 있다. 전자 장치 400은 지오펜스 리스트에서 각 지오펜스의 위도/경도를 확인하고, 전자 장치 400의 현재 위치와 비교하여 위도/경도 일정 간격 안의 지오펜스들을 확인하고, 상기 확인한 지오펜스들을 위도/경도 유사도에 따라 그룹을 형성할 수 있다.
예를 들면 전자 장치 400이 전자 장치 400의 현재 위치를 파악하고, 전자 장치 400의 현재 위치에서 위도/경도1도 간격으로 포함된 지오펜스의 개수를 확인할 수 있다. 또는 전자 장치 400은 전자 장치 400의 현재 위치에서 일정 간격(예: 1도)에 해당하는 일정 거리(예: 약 100km) 내의 지오펜스의 개수를 확인할 수 있다. 상기 확인한 지오펜스의 개수와 하드웨어 자원 또는 사용자가 허용한 지오펜스의 개수를 비교하여 그룹핑이 필요한 경우, 위도/경도 유사도에 따라 그룹을 형성할 수 있다.
현재 위치에서 일정 거리 (예: 100km)를 넘지 않는 큰 그룹(상위 그룹)을 만들고, 해당 그룹 내에 있는 지오펜스의 개수가 위치 확인 모듈 430의 하드웨어 자원이 충분히 감당할 수 있는 크기인지 확인할 수 있다. 해당 그룹내의 지오펜스의 개수가 위치 확인 모듈 430이 충분히 감당할 수 있는 크기이면, 해당 그룹에 대한 감시를 시작하지만, 그렇지 않은 경우에는 상술한 바와 같이 더 작은 단위로 나누어 하위 그룹을 형성할 수 있다.
예를 들면, 위치 확인 모듈 430의 제 1 메모리 434 등의 이유로 제한된 지오펜스 등록 개수가 N 개 일 때, 해당 그룹의 지오펜스 개수가 N개를 초과하는 경우 더 작은 단위로 나누어 하위 그룹을 형성할 수 있다.
도 6a 내지 도 6b는 본 개시의 다양한 실시 예에 따른 지오펜스 리스트 레벨 1과 레벨 2를 형성하는 모습을 예시하는 도면이다. 도 6a 는 위도/경도 1도 차이로 상위 그룹인 지오펜스 리스트 레벨 1을 형성하는 모습을 예시하는 도면이고, 도 6b는 상기 상위 그룹인 지오펜스 리스트 레벨 1에서 하위 그룹인 지오펜스 리스트 레벨 2를 형성하는 모습을 예시하는 도면이다.
도 4및 도 6a를 참조하면, 위치 감지 모듈 414는 지오펜스에 대한 감시를 시작하기 전, 현재 위치에서 일정 거리(예: 약 100km)를 넘지 않는 모든 지오펜스에 대한 정보를 서버 470또는 제 2 메모리 450에서 가져올 수 있다. 이는 약 100km)를 커버하는 대그룹으로 상위 그룹을 만들기 위한 초석이 될 수 있다.
도 6a를 참조하면, 각 지오펜스 위도/경도에 대해서 현재 전자 장치 400의 위도/경도의 값을 각각 뺀 값이 -1.0 이상이고1.0 미만일 때, 각 지오펜스가 중심점에서 일정 거리(예: 100km) 미만에 근접한 것으로 볼 수 있다. 중심점은 각 지오펜스들의 위도/경도의 평균값이 될 수 있다. 예를 들어, 100km 정도 거리 차이는 위도/경도 1도 차이에 대해 약 100km 정도 거리 차이가 있다는 것에 기반을 둘 수 있다. 위도/경도에 따라 1도 차이의 실질적인 거리가 다양한데, 이에 대해서는 하위 레벨(상위 그룹)을 아우르는 상위 레벨(하위 그룹)의 반경을 정하는 다음의 방법으로 해결할 수 있다.
예를 들면, 중심점에서 위도/경도 약1도 차이, 즉100km 미만에 존재하는 모든 지오펜스 리스트를 지오펜스 리스트 레벨 1 (geofence list level 1)로 정의할 수 있다.
도 6b를 참조하면, 상기 지오펜스 리스트 레벨 1을 가지고 있는 상황에서, 위치 감지 모듈 414는 가용할 수 있는 하드웨어 자원 중 가장 열악한 자원의 가용범위 N을 파악할 수 있다. 또는 사용자가 허용 가능한 지오펜스의 개수로 가용범위 N을 결정할 수도 있다. 상기 지오펜스 리스트 레벨 1이 하드웨어 자원의 가용범위 N을 초과하는 경우, 새로운 하위 그룹인 지오펜스 리스트 레벨 2를 형성할 수 있다.
예를 들면, 위도/경도를 1도 이하 소수점 첫째 자리에서 반올림한 값을 참조로 하여 같은 참조를 가지는 지오펜스끼리 다시 하위 그룹을 형성할 수 있다. 이 때의 하위 그룹 리스트를 지오펜스 리스트 레벨 2(level 2)라고 정의 할 수 있다. 도 6b를 참조하면, 레벨 2의 지오펜스 그룹은 9개임을 알 수 있다.
기본적으로 레벨 1의 기준이 되는 약 100km 반경의 지오펜스를 포함하여, 레벨 2로 생성될 수 있는 최대 9개의 그룹까지 총 10개의 지오펜스 리스트가 형성될 수 있다.
도 7은 본 개시의 다양한 실시 예에 따른 지오펜스 리스트 레벨 2 그룹의 반경을 구하는 방법을 예시하는 도면이다.
지오펜스 리스트 레벨2의 범위의 반경은 해당 중심의 위도/경도에서 지오펜스 리스트 레벨 2안의 지오펜스들 중 가장 탐지 영역이 먼 곳을 기준으로 할 수 있다.
도 7을 참조하면, 레벨 2 그룹의 중심점O' 710에서 지오펜스 X 가 가장 탐지 영역이 먼 곳이 되므로, 지오펜스 리스트 레벨 2 반경을 구하는 기준이 될 수 있다. 예를 들면, 해당 그룹안에 있는 한 구성원 지오펜스 X 720의 위도/경도를 (x,y)라 하고 레벨 2 그룹의 기준이 되는 위/경도를 O'(a,b) 710이라 할 때, (a,b)에서 (x,y)까지의 거리 M과 (x,y)를 중심으로 하는 지오펜스 X의 반경 Rx 를 구할 수 있다. 즉, M+Rx 가 레벨 2 그룹의 최대값이 되므로 지오펜스 리스트 레벨 2의 반경이 될 수 있다.
만약 지오펜스 리스트에 지오펜스가 한 개만 존재한다면 해당 그룹의 중심 및 반경은 하위 지오펜스와 같아질 수 있다. 이 때는 그룹핑(grouping)으로 인한 불필요한 중복 지오펜스 그룹이 만들어질 수 있기 때문에 해당 지오펜스는 가장 가까운 그룹에 포함시키거나, 해당 그룹 이외의 그룹이 한 개 밖에 형성되지 않았다면 해당 지오펜스 자체를 그룹(지오펜스 리스트)으로 간주하여 중복 감시가 없도록 할 수 있다.
마찬가지 방법으로, 레벨 1의 반경도 레벨 1의 지오펜스들 중 제일 먼 범위까지를 기준으로 하여, 고정된100km의 반경이 아닌 유동성 있는 반경을 가질 수 있다. 이러한 방식으로 level 3 이상의 그룹도 생성될 수 있다.
본 개시의 다양한 실시예에 따르면, 전자 장치 400의 현재 위치를 포함하는 낮은 레벨(상위 그룹)의 지오펜스 그룹과, 해당 그룹에 포함된 그룹원들(높은 레벨)인 지오펜스만을 지오펜싱(geofencing) 함으로써 하드웨어 자원에 대한 부담을 줄여줄 수 있다.
하드웨어 자원 중 가장 열악한 자원의 가용범위 N을 그대로 하드웨어 자원의 한계로써 그리고 레벨을 올리는 기준으로 사용할 수 있으나, 레벨을 나누는 기준은 실제로는 가용 범위인N보다 적은 수를 기준으로 잡는 것이 바람직할 수 있다. 각 지오펜스가 상위 레벨로 그룹핑되면서 중복 감시가 될 수 있기 때문이다. 즉 최대 3개의 인접한 같은 레벨의 지오펜스와 중복될 가능성이 있으므로 N-3개를 기준으로 레벨을 나누는 것이 바람직 할 수 있다.
위치를 감시하기 위한 그룹핑의 과정이 끝나면, 그룹을 가장 크게 설정한 레벨 1과 레벨 2의 리스트를 이용하여, 위치 확인 모듈 430은 하드웨어 지오펜싱을 시작할 수 있다. 예를 들면, 전자 장치 400이 해당 지역 안으로 들어온(enter) 것으로 인식하면, 해당 지역의 하위 리스트(원래의 지오펜스)와 먼저 비교한 뒤, 상기 하위 리스트에 감지된(enter) 하위 지오펜스가 없으면 레벨을 낮춰 재등록할 수 있다. 즉, 전자 장치 400이 해당 지역 안으로 들어온(enter) 레벨 2 지오펜스와 해당 레벨 2 지오펜스의 하위 리스트를 등록하되, 다시 한 번 그룹핑하여 레벨 3의 지오펜스 리스트를 등록할 수 있다. 이 때 마찬가지로 N-3개를 기준으로 레벨을 나눌 수 있다.
본 개시의 다양한 실시예에 따르면, 위치 감지 모듈 414는 위치를 감지하는 중에, 겹치거나 포함되는 지오펜스에 대해 학습할 수 있다. 만약 지오펜스 A에 들어온(enter) 것으로 감지된 상태에서, 지오펜스 B에 들어온(enter) 것으로 감지되었다면, 두 지오펜스는 서로 겹치는 것으로 인식할 수 있다.
본 개시의 다양한 실시예에 따르면, 위치 감지 모듈 414는 위치를 감지하는 과정에서, 각 그룹과 지오펜스 영역에 대한 방문 빈도를 기억할 수 있다. 이를 바탕으로, 자주 방문하는 지오펜스에 대해서는 상황 인식(context-aware)을 기반으로 그룹을 새로이 정의할 수 있다.
도 8a 내지 8c는 본 개시의 다양한 실시예에 따른, 레벨 2에 해당하는 그룹 1과 그룹 2 및 하위 레벨의 지오펜스 리스트들에 대한 등록을 예시하는 도면이다. 도 8a내지 도 8c를 참조하면, 사용자가 모든 그룹의 영역 밖에서 그룹 1의 영역 안으로 이동한다고 가정할 수 있다.
도 8a 를 참조하면, G1부터 G10까지는 지오펜스를 의미할 수 있다. 예를 들면, 해당 지역에는 지오펜스가 모두 10개 있으며, 그룹1의 하위 지오펜스는 지오펜스G1부터 G8까지이고, 그룹2의 하위 지오펜스는 지오펜스 G9와 G10이 존재할 수 있다. 또한, 여기서 하드웨어 자원은 최대 6개의 지오펜스를 등록할 수 있다고 가정할 수 있다.
도 8a의 표 810을 참조하면, 전자 장치 400이 위치 확인 모듈 430에 그룹1과 그룹2를 포함하는 지오펜스 리스트를 등록해 놓은 상태이며, 도 8a를 참조하면, 전자 장치 400은 어느 그룹에도 진입하지 않은 상태에서 그룹1쪽으로 움직이고 있음을 알 수 있다.
이 경우, 위치 확인 모듈 430은 지오펜스 G1부터 G8까지는 감시하지 않으며, 그룹1의 중심인 센터1(center1)의 위도/경도와 반경, 그룹2의 중심인 센터2(center2)의 위도/경도와 반경만 등록하여 감시할 수 있다.
그룹 1의 중심인 센터1은 G1부터 G8까지의 지오펜스 각각의 위도/경도들의 평균값을 취하여 구할 수 있다. 위도/경도 값을 이용하여, 상기 센터 1에서 감시영역이 제일 먼 지오펜스 G2의 중심까지의 거리 d2를 구할 수 있다. 즉 그룹 1의 반경 R1 은 센터 1에서 지오펜스 G2중심까지의 거리 d2와 지오펜스 G2의 반경 r2을 더한 값 (R1=d2+r2)이 될 수 있다.
마찬가지로 그룹 2의 중심인 센터 2는 지오펜스 G9, G10의 위도/경도의 평균값을 취하여 구할 수 있다. 그룹 2의 반경 R2은 둘 중 감시영역이 더 먼 거리에 있는 지오펜스 중심까지의 거리에 상기 지오펜스의 반경을 더하여 설정할 수 있다. 이 상태에서 위치 확인 모듈 430의 하드웨어 자원은 그룹 1 과 그룹 2, 단 두 개의 지오펜스만을 감시하면 되므로, 상기 하드웨어 자원은 여유로울 수 있다.
도 8b를 참조하면, 사용자가 이동하여 그룹 1의 반경 R1안에 들어간 것을 나타낼 수 있다. 전자 장치 400이 그룹 1에 들어가게 되면, 위치 감지 모듈 414는 위치 확인 모듈 430에 등록되어 있던 그룹2를 삭제할 수 있고, 그룹 1의 하위 지오펜스들을 추가 등록할 수 있다.
예를 들면, 그룹1의 하위 지오펜스는 8개로, 그룹1과 함께 그룹 1의 하위 지오펜스 8개를 등록하려면, 도 8b 의 표 830과 같이 지오펜스 리스트에 모두 9개의 지오펜스를 등록하여야 한다. 또한 위치 확인 모듈 430의 하드웨어 자원이 9개 이상의 지오펜스를 허용하여야 한다.
상술한 바와 같이, 하드웨어 자원(예: 위치 확인 모듈 430에 포함된 제 1 메모리 434의 용량)이 감시 가능한 지오펜스의 수를 6개로 가정하였으므로, 하위 지오펜스를 또 다시 그룹핑하여 도 8c와 같이 그룹3,4,5를 생성할 수 있다. 즉 그룹 3, 4, 5는 그룹1의 하위 그룹이 될 수 있다.
만약 사용자의 위치가 그룹 1에는 속해 있지만 그룹3,4,5중 어느 영역에도 없는 경우에는 그룹1,3,4,5를 위치 확인 모듈 430에 등록할 수 있다. 그러나, 도 8c의 경우와 같이, 현재 위치가 이미 그룹3와 지오펜스 G2안에 있는 것을 알고 있는 경우에는 위치 감지 모듈 414가 사용자 또는 어플리케이션에 지오펜스 G2로 들어옴(enter) 이벤트를 알리고, 이후의 감시를 위해 그룹3과 그룹3의 하위 지오펜스인 지오펜스 G1, G2를 최종적으로 위치 확인 모듈 430에 등록한 후 동작을 마칠 수 있다. 위치 확인 모듈 430의 그룹3에 대한 감시는 전자 장치 400의 위치가 그룹3을 벗어날 때까지 계속되다가, 다른 하위 그룹(그룹4, 5)으로 이동하면 해당 그룹과 하위 지오펜스로 변경되거나 상위 그룹의 영역(그룹1)으로 전자 장치의 위치가 이동하면 그룹1과 하위 그룹3,4,5로 감시 대상이 변경될 수 있다. 이렇게 그룹 1과 하위 지오펜스들에 대한 감시는 그룹1의 영역에서 벗어날 때까지 지속될 수 있다.
도 9a 내지 도 9c는 본 개시의 다양한 실시 예에 따른 전자 장치의 현재 위치로부터 각 지오펜스로의 도달 거리에 기반하여 거리순으로 그룹을 형성하는 과정을 나타내는 도면이다.
도 9a 는 그룹을 형성하기 전의 전자 장치 400과 각 지오펜스를 나타내는 도면이다. 전자 장치 400의 현재 위치를 측정할 때 마다 각 지오펜스까지의 거리를 측정할 수 있다. 각각의 지오펜스를 거리순으로 가장 가까운 것부터 하드웨어 자원의 한계인 N개까지를 나열할 수 있다. 예를 들어, 여기서 하드웨어 자원의 한계로, 감시 가능한 지오펜스의 개수 N은 6개일 수 있다.
도 9a를 참조하면, 원형의 G1내지 G7은 지오펜스를 나타내고, 별 모양 910은 전자 장치 400의 현재 위치를 나타낼 수 있다. 총 7개의 지오펜스가 있고 현재 위치 910으로부터 각 지오펜스까지의 거리를 측정하여, 거리순으로 가장 가까운 순서로 나열할 수 있다. 도 9a의 각 지오펜스에 표시된 숫자는 전자 장치 400의 현재 위치 910으로부터 가까운 순서대로 숫자를 나타낸 것이다.
도 9b는 전자 장치 400이 현재 위치와 각 지오펜스까지 거리순으로 N-1까지의 지오펜스를 등록하는 과정을 나타내는 도면이다. 전자 장치 400은 전자 장치 400의 현재 위치 910으로부터 가까운 순서대로 각 지오펜스를 나열한 후, 거리순으로 N-1개까지 원래의 지오펜스를 등록할 수 있다. 즉 N이 6일 경우, 도 9b와 같이 현재 위치 910으로부터 가까운 5개의 지오펜스(G1 부터 G5)는 모니터링을 위해 등록할 수 있다.
도 9c는 전자 장치 400이 현재 위치와 각 지오펜스까지 거리순으로 그룹을 형성하는 모습을 나타내는 도면이다. 도 9c를 참조하면, 전자 장치 400의 현재 위치로부터 6번째 지오펜스(G6)까지의 거리를 반경으로 하여 가상의 지오펜스 930을 형성할 수 있다. 예를 들면, 형성된 지오펜스 그룹은 전자 장치 400의 현재 위치를 중심으로 위/경도가 결정되고, 반경은 N번째 지오펜스까지의 거리가 될 수 있다.
상기 형성된 가상의 지오펜스를 버추얼 펜스(virtual fence) 930이라고 할 수 있으며, 전자 장치 400이 버추얼 펜스 930 밖으로 나가는 순간, 위치 확인 모듈 430은 프로세서 410에 알림을 주게 되므로 모든 지오펜스에 대해 실시간 감시가 가능할 수 있다. 전자 장치 400이 이동하여 버추얼 펜스 930 영역 밖으로 나가게 되면, 전자 장치 400의 버추얼 펜스930 밖의 새로운 위치를 기반으로 다시 거리 순으로 새로운 그룹을 형성할 수 있다.
거리 순으로 버추얼 펜스930을 형성하는 방법을 통해서, 전자 장치 400이 이동하더라도, 각 지오펜스의 거리를 새롭게 측정하게 되므로, 어플리케이션이 추가되거나 삭제됨으로써 지오펜스를 추가하거나 삭제해야 되는 경우에 대해서 대응할 수 있다.
도 10은 본 개시의 다양한 실시 예에 따른 지오펜스의 위도/경도를 기반으로 상위 그룹을 형성하는 방법에 대한 흐름도이다.
도 10을 참조하면, 동작 1010에서, 전자 장치 400은 적어도 둘 이상의 지오펜스의 정보를 확인할 수 있다. 여기서 상기 지오펜스의 정보는 특정 지오펜스 위치의 위도/경도를 나타낼 수 있다. 예를 들면, 전자 장치 400의 데이터베이스 관리 모듈 416은 어플리케이션 412를 통해 전달 받은 지오펜스 리스트 내에 포함된 적어도 하나의 지오펜스에 대한 위도/경도 정보를 확인할 수 있다.
동작 1020에서, 전자 장치 400은 모니터링(등록) 가능한 지오펜스 개수를 확인할 수 있다. 전자 장치 400은 위치 확인 모듈 430의 하드웨어 자원인 제 1 메모리 434 의 상태(예: 메모리 용량)에 기반하여, 모니터링 가능한 지오펜스 개수를 확인할 수 있다. 형성될 수 있는 그룹의 개수는 상기 모니터링 가능한 지오펜스 개수 보다 작거나 같을 수 있다. 예를 들면, 모니터링 가능한 지오펜스의 개수가 6개일 경우, 형성되는 그룹의 개수는 6개보다 작거나 같을 수 있다.
동작 1030에서 모니터링 가능한 지오펜스 개수, 각 지오펜스의 정보 중 적어도 하나에 기반하여 적어도 하나의 지오펜스를 포함하는 적어도 하나의 그룹을 생성할 수 있다.
상기한 바와 같이 등록 가능한 지오펜스의 개수(예를 들면 모니터링 가능한 지오펜스의 개수)는 형성된 그룹의 개수 보다 크거나 같을 수 있다. 여기에서 하나의 그룹은 다수 개의 지오펜스들이 그룹핑된 상태 또는 하나의 지오펜스 일 수 있다.
예를 들면, 동작 1010에서, 지오펜스 리스트에서 각 지오펜스의 정보인 위도/경도를 확인하고, 동작 1020에서 위치 확인 모듈 430에 등록하여 모니터링 가능한 지오펜스의 개수를 확인할 수 있다. 동작 1030에서 미리 정해놓은 위도/경도 간격(예: 1도)안에서 지오펜스 개수를 확인하고, 같은 위도/경도 간격 안의 지오펜스 개수와 모니터링 가능한 지오펜스 개수를 비교하여 적어도 하나의 지오펜스를 포함하는 하나의 그룹을 형성할 수 있다.
한 실시예에 따르면, 모니터링 가능한 지오펜스 개수가 같은 위도/경도 간격 안의 지오펜스 개수보다 작은 경우에는 위치 확인 모듈 430의 자원의 한계로 인하여 여러 개의 그룹을 형성할 수 있다. 예를 들면, 모니터링 가능한 지오펜스 개수가 10개이고, 위도/경도 1도 간격 안에 지오펜스가 100개 포함되어 있는 경우에는 지오펜스 100개를 모두 모니터링 할 수 없으므로, 적어도 하나의 지오펜스를 포함하는 여러 개의 그룹을 형성하여 모니터링 할 수 있다.
한 실시예에 따르면, 모니터링 가능한 지오펜스 개수가 같은 위도/경도 간격 안의 지오펜스 개수보다 크거나 같은 경우에도, 위치 확인 모듈 430의 자원의 적절한 분배를 위하여 여러 개의 그룹을 형성할 수 있다. 예를 들면, 모니터링 가능한 지오펜스 개수가 10개이고, 위도/경도 1도 간격 안에 지오펜스가 10개인 경우에는, 지오펜스 10개를 모두 등록시켜 모니터링 할 수도 있으나, 소모 전류, 위치 확인 모듈 430의 자원의 적절한 분배 차원에서 지오펜스 10개를 2~3개의 그룹으로 만들어 모니터링 할 수도 있다.
도 11은 본 개시의 다양한 실시 예에 따른 지오펜스의 상위 그룹 내에서 하위 그룹을 형성하는 방법에 대한 흐름도이다. 도 11은 도 10의 동작 1030에서 적어도 하나의 상위 그룹을 형성하고 난 후, 상기 적어도 하나의 상위 그룹에서 더 영역을 작게 나누어 하위 그룹을 형성하는 방법을 나타내는 흐름도이다.
동작 1110에서, 전자 장치 400은 상기 동작 1030에서 형성된 적어도 하나의 상위 그룹을 모니터링 할 수 있다. 동작 1030에서 여러 개의 지오펜스를 포함한 상위 그룹을 형성하면, 전자 장치 400의 현재 위치 또는 상위 그룹과 상위 그룹 내 지오펜스 개수에 따라서, 상위 그룹을 하위 그룹으로 다시 형성할 필요가 있기 때문에, 먼저 상위 그룹을 모니터링 할 수 있다.
동작 1120에서, 전자 장치 400은 전자 장치 400의 현재의 위치를 확인 할 수 있다. 상술한 바와 같이 현재 전자 장치의 위치가 바뀜에 따라 지오펜스의 상위 그룹을 하위 그룹으로 형성해야 할 필요가 생기기 때문이다.
동작 1130에서, 전자 장치 400은 전자 장치 400의 현재 위치가 모니터링하는 적어도 하나의 상위 그룹 중 하나의 그룹에 포함되는지 확인할 수 있다. 전자 장치 400의 현재 위치가 모니터링하는 적어도 하나의 상위 그룹 중 하나의 그룹에 포함되지 않은 경우에는, 전자 장치 400이 계속 적어도 하나의 상위 그룹을 모니터링 할 수 있다. 예를 들면, 아직 전자 장치 400이 지오펜스의 어느 상위 그룹에도 들어(in) 가지 않았기 때문에, 1110동작으로 돌아가, 계속 상위 그룹 레벨에서 모니터링 할 수 있다.
한 실시 예에 따르면, 현재 전자 장치 400의 위치가 모니터링하는 적어도 하나의 상위 그룹 중 하나에 포함된 경우, 전자 장치 400이 위치하는 상위 그룹 안의 지오펜스를 감지하기 위해서, 해당 그룹 안에 포함된 지오펜스의 개수를 확인할 필요가 있다.
동작 1140에서 해당 그룹 내에 포함된 지오펜스의 개수를 확인할 수 있다. 전자 장치 400이 위치하는 그룹 내의 지오펜스 개수가 위치 확인 모듈 430의 자원의 한계를 초과하는지 확인할 필요가 있기 때문이다.
동작 1150에서, 하위 그룹 형성 여부를 알기 위해, 상기 동작 1140에서 확인한 해당 그룹 내에 포함된 지오펜스 개수와 모니터링 가능한 지오펜스 개수를 비교할 수 있다. 즉 해당 상위 그룹 내에 포함된 지오펜스의 개수가 모니터링 가능한 지오펜스 개수보다 큰 경우, 위치 확인 모듈 430의 한계로 인하여 모두 감시할 수 없게 되므로, 하위 그룹의 생성이 필요할 수 있다. 하위 그룹의 생성은 데이터베이스 관리 모듈 416에서 수행될 수 있다.
한 실시 예에 따르면, 전자 장치 400이 위치하는 그룹 내에 포함된 지오펜스의 개수가 모니터링 가능한 지오펜스 개수보다 큰 경우에는 하위 그룹을 형성하게 되고, 모니터링 가능한 지오펜스 개수보다 같거나 작은 경우에는 계속 상위 그룹을 감시할 수 있다.
다만, 해당 상위 그룹 내 지오펜스 개수가 모니터링 가능한 지오펜스 개수보다 같거나 작은 경우에도, 소모 전류, 자원 분배의 차원에서 하위 그룹을 형성할 필요가 있는 경우에는, 동작 1160으로 진행하여 하위 그룹을 형성할 수 있다.
한 실시 예에 따르면, 전자 장치 400이 위치하는 상위 그룹 내에 포함된 지오펜스의 개수가 모니터링 가능한 지오펜스 개수보다 큰 경우 또는 하위 그룹을 형성할 필요가 있는 경우에, 동작 1160에서 해당 상위 그룹에 포함된 지오펜스들을 적어도 하나의 하위 그룹으로 형성할 수 있다. 여기서 적어도 하나의 하위 그룹을 형성하는 방법은 상위 그룹을 형성하는 방법과 동일한 방법(예: 위도/경도 기반, 거리순, 상황 인식 기법)을 사용할 수 있다.
도 11은 상기 전자 장치에서 상위 그룹 내에 속하는 하위 그룹을 형성하는 방법을 설명하고 있다. 전자 장치는 복수의 상위 그룹을 모니터링하는 중에, 상기 전자 장치의 위치가 상위 그룹 중 하나에 속하면, 지오펜스의 개수 및 등록 가능한 지오펜스의 개수를 분석할 수 있다. 이때 해당 상위 그룹 내에 포함된 지오펜스의 개수가 모니터링(등록) 가능한 지오펜스 개수보다 많으면, 상기 전자장치는 상위 그룹에 속하는 지오펜스들을 하위 그룹으로 형성할 수 있다. 그리고 상위 그룹에 포함된 지오펜스 개수가 모니터링(등록) 가능한 지오펜스 개수보다 작으면, 상기 전자장치는 해당 상위 그룹과 그룹 내에 포함된 지오펜스를 모니터링할 수 있다.
도 12는 본 개시의 다양한 실시 예에 따른 전자 장치가 하나의 그룹을 모니터링 하다가 해당 그룹을 벗어난 경우에 지오펜스를 모니터링 하는 방법에 대한 흐름도이다. 도 12는 전자 장치400이 어느 그룹 안(in)에 있다가 그룹 밖(out)으로 나가거나 다른 그룹으로 이동하는 경우를 나타내는 흐름도이다.
한 실시예에 따르면, 전자 장치 400이 다른 그룹으로 이동하게 되면, 상위 그룹에서 이동을 감지하고, 이동한 전자 장치 400이 포함된 그룹에서 다시 하위 그룹까지 재형성하여 해당 그룹 및 그룹에 포함된 지오펜스를 모니터링 할 수 있다.
동작 1210 에서 전자 장치 400은 적어도 하나의 그룹을 모니터링 할 수 있다. 상술한 바와 같이 전자 장치 400은 지오펜스 감지를 위해, 처음에는 상위 그룹을 형성하고 필요에 따라 하위 그룹을 형성할 수 있다. 동작 1210에서 전자 장치 400은 필요에 따라 하위 그룹을 형성할 수 있으며, 적어도 하나의 그룹을 모니터링 할 수 있다.
동작 1220에서, 전자 장치 400은 현재 전자 장치 400의 위치를 확인 할 수 있다. 전자 장치 400이 현재 모니터링하고 있는 적어도 하나의 그룹 중 하나에 포함되어 있는지 확인하기 위해서, 먼저 전자 장치 400의 현재 위치를 확인할 수 있다.
동작 1230에서 전자 장치 400의 현재 위치가 현재 모니터링하고 있는 적어도 하나의 그룹 중 하나에 포함되어 있는지 확인할 수 있다.
현재 모니터링하고 있는 적어도 하나의 그룹 중 하나에 전자 장치 400이 포함되어 있다면, 동작 1240으로 진행하게 된다. 동작 1240에서, 전자 장치 400이 위치하는 해당 그룹 및 그룹에 포함된 지오펜스를 모니터링 할 수 있다. 여기에서, 만약, 해당 그룹 및 그룹에 포함된 지오펜스의 개수가 하드웨어 자원을 초과한다면, 지오펜스들을 하위 그룹으로 재형성할 수 있다.
동작 1250에서, 전자 장치 400이 현재 위치를 이동하여 현재 그룹을 벗어나는 경우에는 다시 동작 1210으로 되돌아가, 다시 적어도 하나의 그룹을 모니터링 할 수 있다. 전자 장치 400이 현재 위치를 유지하거나 해당 그룹을 벗어나지 않는 경우에는 동작 1240으로 되돌아가 계속 해당 그룹 및 그룹에 포함된 지오펜스를 모니터링 할 수 있다.
상기한 바와 같이, 전자 장치400은 복수의 그룹을 모니터링할 때, 전자 장치 400의 현재 위치가 복수의 그룹 중 하나에 속하면, 해당 그룹 및 그룹에 포함된 지오펜스를 모니터링할 수 있다. 그러나 전자 장치 400의 위치가 해당 그룹을 벗어날 경우, 전자 장치400은 다시 복수의 그룹을 모니터링할 수 있다.
도 13은 본 개시의 다양한 실시 예에 따른 전자 장치의 현재 위치로부터 각 지오펜스까지의 도달 거리에 기반하여 거리 순으로 그룹을 형성하는 방법에 대한 흐름도이다.
동작 1310에서, 전자 장치 400은 지오펜스 리스트에 포함된 적어도 하나의 지오펜스 정보(예: 위도/경도)에 기반하여, 전자 장치 400의 현재 위치에서부터 각 지오펜스까지의 거리를 산출할 수 있다.
동작 1320에서, 거리 순으로 N-1번째까지의 지오펜스는 그대로 등록할 수 있다. 모니터링(등록) 가능한 지오펜스의 개수가 N개인 경우, 거리 순으로 정렬하여 N-1 번째까지의 지오펜스는 그대로 등록할 수 있다.
동작 1330에서, 거리 순으로 N번째인 지오펜스까지의 거리를 반경으로 하여 가상의 지오펜스 그룹으로 등록시킬 수 있다. 예를 들면, 상기 가상의 지오펜스 그룹 내에는 N-1개의 지오펜스들을 포함하고 있으며, 그 반경은 거리 순으로 N번째의 지오펜스와의 거리에 의해 결정될 수 있다.
가상의 지오펜스 그룹을 등록시키고 난 후, 동작 1340에서, 위치 확인 모듈 430은 감시(모니터링)를 시작할 수 있다. 전자 장치 400이 가상의 지오펜스 그룹에 있는 동안에는 다시 지오펜스 그룹을 재형성 하지 않고, 위치 확인 모듈 430은 가상의 지오펜스 그룹 및 상기 가상의 지오펜스 그룹 안의 지오펜스를 감시할 수 있다.
동작 1350에서, 전자 장치 400이 이동하여, 전자 장치 400의 현재 위치가 가상의 지오펜스 그룹을 벗어나면, 다시 동작 1310으로 되돌아가 전자 장치 400에서 각 지오펜스까지의 거리를 산출하여 다시 지오펜스 그룹을 형성하는 과정을 반복할 수 있다. 예를 들면 전자 장치 400이 이동하여 가상의 지오펜스 그룹을 벗어나는 것이 지오펜스 감지 모듈 432에 의해 감지되면, 상기 지오펜스 감지 모듈 432는 슬립(sleep) 상태에 있던 위치 감지 모듈 414에 출입 이벤트를 통지할 수 있다. 상기 출입 이벤트를 통지 받은 위치 감지 모듈 414는 슬립(sleep) 상태에서 깨어나, 전자 장치 400의 현재 위치에서 각 지오펜스까지의 거리를 다시 산출하여 다시 가상의 지오펜스 그룹을 형성하는 동작을 수행할 수 있다.
한 실시예에 따르면, 전자 장치 400은 현재 위치로부터 각 지오펜스로의 도달 거리에 기반하여 그룹을 형성할 수 있다. 상기 전자 장치는 현재 위치를 측위할 때 마다 각 지오펜스까지의 거리를 계산할 수 있다. 상기 거리를 계산할 때, 상기 전자 장치는 영역 내(enter상태)에 있는 지오펜스는 영역 밖으로 이동(exit)을 하기 위한 거리를 재고, 영역 밖(exit상태)에 있는 지오펜스는 영역 내에 이동(enter)하기까지 남은 거리를 계산할 수 있다. 상기 전자 장치는 각각의 지오펜스의 거리 중 가장 가까운 것부터 H/W자원의 한계인 N개까지를 나열할 수 있다. 예를 들어, N이 6개이고 총 7개의 지오펜스가 있는 경우, 전자 장치는 현재 위치로부터 각 지오펜스까지의 거리를 측정하여 가장 가까운 순서로 나열할 수 있다.
도 14a 내지 도 14c 는 본 개시의 다양한 실시예에 따른 다수의 지오펜스들을 다양한 방식으로 클러스터링하고, 기존의 지오펜스가 삭제되거나 새로운 지오펜스가 추가되는 경우 클러스터링 하는 모습을 예시하는 도면이다.
본 개시의 다양한 실시예에 따르면, 전자 장치 400은 상황 인식(context-aware) 기법을 사용하여 지오펜스들을 그룹화하여 감시할 수 있다.
예컨대, 지오펜스들을 상황 인식 기법에 기반하여, 자주 방문하는 지오펜스들을 그룹핑 없이 각각 독립하여 등록시키거나, 자주 방문하는 지오펜스들만 그룹핑하여 등록하고 감시하는 방법이다.
만약 도 14a 내지 도 14c에 상황 인식 기법을 적용한다고 하면, 위치 감지 모듈 414는 사용자가 지오펜스 G2와 지오펜스 G3를 자주 방문함을 인지할 수 있다. 하지만 지오펜스 G2에서 지오펜스 G3으로 넘어갈 때는 그룹3을 벗어나면서 그룹 3, 4, 5를 등록한 후 다시 그룹 5에 대하여 들어가는(enter) 이벤트가 발생하여 그룹5 및 지오펜스 G3, G8, G6을 다시 등록시키고 난 후 비로소 지오펜스 G3에 대한 감시를 시작하게 된다. 이 때 사용자가 지오펜스 2에서 바로 그룹 5 방향으로 진행한다면 크게 차이가 없지만, 지오펜스 G2에서 우회하여 이동하면 그룹 5에 진입했을 시 한 번 더 위치 감지 모듈 414 를 호출해야 하는 번거로움이 생길 수 있다.
이러한 경우에 위치 감지 모듈 414이 지오펜스 2와 지오펜스 3의 방문 빈도를 파악하고 상기 지오펜스들(지오펜스G2, G3)을 다른 지오펜스와 그룹을 형성하지 않도록 할 수 있다.
즉, 지오펜스 G2와 지오펜스 G3을 각각 독립하여 등록하거나, 상기 지오펜스들(지오펜스 G2, G3)만을 한 그룹으로 재형성하여 관리하도록 하면 빈번하게 감시하는 그룹이 바뀌는 경우를 피할 수 있다. 이때 지오펜스 G2에서 그룹 5까지의 거리와 지오펜스 G3에서 그룹 3까지의 거리 중 후자가 가까우므로 지오펜스 G3을 그룹3으로 정의하여 관리할 수 있다.
본 개시의 다양한 실시예에 따르면, 전자 장치 400은 위도/경도 기반과 거리 기반을 함께 사용하여 지오펜스들을 그룹화하여 감시할 수 있다.
예를 들면, 도 14c와 같이, 그룹3, 4, 5로 나누면 위치 확인 모듈 430의 자원은 한 번에 최대 4개의 영역만 감시하면 되므로 자원에 대한 부담이 적어질 수 있다. 하지만 하드웨어 자원을 최대로 활용해도 성능에 문제가 없다고 할 때, 위도/경도 기반 클러스터링(clustering or grouping) 기법과 거리 기반 감시 기법을 혼합하여 사용할 수도 있다.
예를 들어, 도 14b와 같이 사용자(별 모양)가 처음 그룹1에 진입한 순간, 위치 감지 모듈 414는 그룹1의 하위 지오펜스 개수가 하드웨어 자원의 허용 범위 6개를 초과했음을 인지할 수 있다. 여기서 위도/경도 기반으로 하위 그룹을 생성하는 방법도 있지만, 6개를 초과하지 않는 범위 내에서, 거리 기반 감시 기법을 사용하여 그룹화하여 감시할 수 있다.
도 14b를 참조하면, 위치 감지 모듈 414는 위치 확인 모듈430에 사용자와 가까운 거리에 있는 지오펜스 G1, G2, G3, G4를 등록하고, 나머지 한 자리에 그 다음 거리에 있는 지오펜스 G8까지의 거리를 반경으로 한 버추얼 펜스(virtual fence)를 생성하여 등록할 수 있다. 위치 확인 모듈 430은 그룹1과 지오펜스 G1, G2, G3, G4, 버추얼 펜스를 감시하는 방법으로 실시간 감시를 행할 수 있다.
사용자가 이동하여, 위치 확인 모듈 430이 전자 장치 400의 현재 위치가 버추얼 펜스를 벗어났음을 감지하면 위치 감지 모듈 414는 그룹1의 하위 지오펜스들 중에 현재 위치에서의 거리로 정렬하여 마찬가지로 4개(N-2)의 지오펜스를 선정하고 다시 5번째 지오펜스의 거리를 반경으로 하는 새로운 버추얼 펜스를 형성하는 방식으로 동작할 수 있다.
본 개시의 다양한 실시예에 따르면, 전자 장치 400은 지오펜스 리스트에서 적어도 하나의 지오펜스의 추가, 삭제가 발생한 경우, 새로운 지오펜스 리스트에서 새로운 그룹을 형성하고 감시할 수 있다.
도 14a내지 도 14c를 참조하면, 위치 감지 모듈 414을 사용하는 클라이언트(어플리케이션)가 새로운 지오펜스의 추가를 요청하거나 기존의 지오펜스의 삭제를 요청할 수 있다. 지오펜스가 추가 된 경우에는 새로운 그룹을 형성할 필요가 생기며, 삭제된 경우에는 더 이상 감시할 필요가 없을 수 있다.
예를 들면, 지오펜스가 3개 이상인 그룹4, 5에서 지오펜스 G7이나 지오펜스 G8 등 이 하나씩 지워진다면 그룹의 범위는 줄어들지만 그룹의 중심인 센터의 위도/경도 및 그룹의 반경이 변할 수 있다. 하지만 그룹의 하위 지오펜스가 2개(G1, G2)인 그룹3에서 지오펜스 G1이 삭제되면 지오펜스 G2가 그룹3과 동일시되므로 그룹3을 제거하고 지오펜스 G2를 그룹4, 그룹5와 같은 레벨로 취급하여 감시할 수 있다. 또한 그룹1의 하위 지오펜스가 3개 이상 삭제되면 하드웨어 자원 제한인 6개에 부합하므로 그룹3,4,5를 모두 제거하고 그룹1로 관리할 수 있다. 이 때 그룹의 중심과 반경은 새로 정의될 수 있다.
마찬가지로, 클라이언트(어플리케이션)가 추가되거나 요청에 의해 감시하고자 하는 지오펜스가 추가될 수 있다. 예를 들어, 도 14a 의 그룹2에 4개의 지오펜스가 추가되면 그룹2의 영역에 들어갔을 때 그룹2를 포함하여 총 7개의 영역을 감시해야 하므로 하위 그룹(상위 레벨 리스트)으로 다시 그룹을 재형성할 수 있다.
또한 전자 장치 400은 지오펜스 리스트에서 적어도 하나의 지오펜스의 추가, 삭제가 발생한 경우, 지오펜스 리스트의 임계(threshold) 값을 설정하여, 적어도 하나의 지오펜스의 추가, 삭제가 발생하더라도 임계값을 초과하는 경우에만 그룹핑하도록 할 수 있다.
예를 들면 지오펜스 리스트에서 적어도 하나의 지오펜스가 추가되거나 삭제되어 새로운 그룹을 형성할 필요가 생길 수 있으나, 전자 장치 400이 그룹핑을 자주 하면 소모 전류가 증가할 수 있다. 따라서, 전자 장치 400은 어느 일정 임계값을 초과하는 경우에만 새로운 지오펜스 리스트에서 그룹핑할 필요가 있을 수 있다. 상기 임계값은 사용자의 입력이나 전자 장치의 설정 또는 상태에 따라 결정될 수 있다.
도 15는 본 개시의 다양한 실시예에 따른 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스 추가에 따른 남아 있는(remaining) 지오펜스들의 개수를 확인하고, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑하는 방법에 대한 흐름도이다.
전자 장치 400은 어플리케이션 412가 요청한 지오펜스 리스트를 제 2 메모리 450 또는 서버 470에 저장할 수 있다. 지오펜스에 관한 서비스 제공 중에 지오펜스의 위치가 바뀌거나 없어지는 경우가 있을 수 있으며, 이런 경우, 상기 어플리케이션 412가 기존의 지오펜스 리스트에서 일부 지오펜스를 삭제하거나 다른 지오펜스의 추가를 요청할 수 있다.
동작 1510에서, 전자 장치 400은 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인할 수 있다. 예를 들면, 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하기 위해, 어플리케이션 412가 새로 업데이트 된 지오펜스 리스트를 서버 470에 요청하고, 프로세서 410은 기존의 저장된 지오펜스 리스트와 업데이트 된 지오펜스 리스트를 비교하여 지오펜스의 삭제나 추가를 확인할 수 있다.
동작 1520에서, 전자 장치 400은 기존의 저장된 지오펜스 리스트에서 지오펜스의 추가나 삭제에 따른 복수의 지오펜스들 중 남아 있는(remaining) 지오펜스의 개수를 확인할 수 있다.
예를 들면, 프로세서 410은 어플리케이션이 요청한 업데이트된 지오펜스 리스트와 기존 지오펜스 리스트를 비교하여 복수의 지오펜스들 중 남아 있는 지오펜스의 개수를 확인할 수 있다.
동작 1530에서, 전자 장치 400은 상기 남아 있는 지오펜스의 개수와 위치 확인 모듈 430의 하드웨어 자원(예: 제 1 메모리 434)에서 허용(등록) 가능한 지오펜스의 개수를 비교할 수 있다.
상기 남아 있는 지오펜스의 개수가 하드웨어 자원의 허용 가능한 지오펜스의 개수보다 작거나 같은 경우에는 상기 남아 있는 지오펜스의 개수를 모두 등록시켜도 하드웨어 자원의 여유가 있으므로, 자원 분배상 또는 사용자의 요구에 의한 새로운 그룹핑이 필요할 경우 아니면 기존 방식대로 모니터링을 계속 진행할 수 있다. 예를 들면, 지오펜스의 추가 또는 삭제 후 남아 있는 지오펜스의 개수가 9개이고, 하드웨어 자원의 등록(모니터링) 가능한 지오펜스의 개수가 10개라고 하면, 하드웨어 자원의 여유가 있을 수 있다.
따라서, 동작 1530에서 상기 남아 있는 지오펜스의 개수가 하드웨어 자원의 허용 가능한 개수보다 작거나 같은 경우에는 동작 1510으로 돌아가 다시 일부 지오펜스의 삭제나 다른 지오펜스의 추가를 확인할 수 있다.
상기 남아 있는 지오펜스의 개수가 하드웨어 자원의 허용 가능한 개수보다 큰 경우에는 상기 남아 있는 지오펜스를 모두 하드웨어에 등록 시킬 수 없으므로, 새로운 그룹핑이 필요할 수 있다. 예를 들면, 지오펜스의 추가 또는 삭제 후 남아 있는 지오펜스의 개수가 11개이고, 하드웨어 자원의 등록(모니터링) 가능한 지오펜스의 개수가 10개라고 하면, 하드웨어 자원의 여유가 있을 수 없으므로, 상기 남아 있는 지오펜스들을 새로운 그룹으로 클러스터링할 필요가 있을 수 있다.
따라서, 동작 1530에서 상기 남아 있는 지오펜스의 개수가 하드웨어 자원의 허용 가능한 개수보다 큰 경우에는 상기 남아 있는 지오펜스들을 그룹핑하는 동작 1540으로 진행할 수 있다.
동작 1540에서 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑할 수 있다. 예를 들면, 지오펜스의 추가 또는 삭제 후 남아 있는 지오펜스의 개수가 11개이고, 하드웨어 자원의 등록(모니터링) 가능한 지오펜스의 개수가 10개라고 하면, 상기 남아 있는 지오펜스 11개가 모두 등록될 수 없으므로, 남아 있는 지오펜스 11개를 지오펜스 그룹 1개로 그룹핑하여 상기 그룹 1개만 등록시켜 모니터링할 수도 있고, 남아 있는 지오펜스 11개를 그룹 2개 이상으로 나누어 등록시켜 모니터링 할 수도 있다.
상기 하드웨어 자원에서 허용 가능한 지오펜스의 개수는 사용자의 입력이나 전자 장치의 설정 또는 상태에 따라 조절될 수 있다. 예를 들면, 사용자가 그룹핑하길 원하는 지오펜스의 개수를 임의로 정하기를 원할 수도 있고, 전자 장치의 사용 상태나 어플리케이션의 메모리 점유 상태에 따라 하드웨어 자원에서 허용 가능한 지오펜스의 개수가 조절되어야 할 필요가 있을 수 있기 때문이다.
본 개시의 다양한 실시예에 따르면, 전자 장치의 동작 방법에 있어서, 상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하고, 상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하고, 상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용 가능한 지오펜스들의 개수보다 큰 경우에, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑할 수 있다.
한 실시예에 따르면, 상기 하드웨어 자원에서 허용 가능한 지오펜스의 개수는 사용자의 입력에 의해 설정되거나 전자 장치의 설정 또는 상태에 따라 변경될 수 있다.
상기 전자 장치의 동작 방법에 있어서, 상기 그룹핑된 적어도 하나의 지오펜스 그룹의 지오펜스들을 모니터링 할 수 있다. 상기 모니터링은 복수의 상위 지오펜스 그룹들에 대응되는 영역에 접근하면, 상기 복수의 상위 지오펜스 그룹 중 하나의 그룹에 대응하는 영역 안에 접근에 기반하여, 상기 하나의 상위 지오펜스 그룹을 복수의 하위 지오펜스 그룹으로 분류하고, 상기 복수의 하위 지오펜스 그룹을 모니터링하며, 상기 상위 지오펜스 그룹은 위도 및 경도의 위치 정보에 기반하여 상기 복수의 지오펜스들을 상기 복수의 상위 지오펜스 그룹들로 분류할 수 있다.
상기 전자 장치의 동작 방법에 있어서, 상기 모니터링은 가상의 지오펜스를 모니터링하며, 상기 가상의 지오펜스를 벗어나면 복수의 지오펜스를 모니터링할 또 다른 가상의 지오펜스를 결정하며, 상기 또 다른 가상의 지오펜스는 상기 전자 장치가 현재의 위치 정보에 기반하여 상기 복수의 지오펜스들 중 모니터링할 제 1 후보들을 결정하고, 상기 전자 장치에 대응하는 위치 및 상기 결정된 제 1 후보들을 포함하여 생성될 수 있다.
한 실시예에 따르면, 상기 전자 장치가 적어도 하나의 지오펜스 그룹 중 하나(제 1 지오펜스 그룹)에 위치하면, 상기 제 1 지오펜스 그룹 및/또는 상기 제 1 지오펜스 그룹 내에 포함된 적어도 하나의 지오펜스를 모니터링하고, 상기 전자 장치가 상기 제 1 지오펜스 그룹을 벗어날 경우, 복수의 지오펜스들을 적어도 하나의 지오펜스 그룹으로 재그룹핑할 수 있다. 상기 지오펜스 그룹의 재그룹핑은 상기 전자 장치의 현재 위치를 획득하고, 상기 현재 위치에서 각각의 지오펜스들까지의 거리를 계산하고; 상기 계산된 거리 및/또는 모니터링 가능한 지오펜스 개수에 기반하여, 상기 현재 위치로부터 가까운 순서대로 상기 모니터링 가능한 지오펜스 개수를 만족하는 적어도 하나의 지오펜스를 하나의 지오펜스 그룹으로 재그룹핑하며, 모니터링할 수 있다. 상기 거리는 상기 전자 장치가 지오펜스 범위 내에 위치할 때에는 상기 전자 장치가 상기 지오펜스의 범위을 벗어나는 거리를 계산하고, 상기 전자 장치가 지오펜스 범위 밖에 위치할 때에는 상기 전자 장치가 상기 지오펜스 범위 내에 위치될 거리까지의 남은 거리를 계산하여 결정할 수 있다.
본 개시의 다양한 실시예에 따르면, 상기 전자 장치는 제 1 및 제 2 프로세서를 포함하며, 상기 제 1 프로세서에서 그룹핑된 지오펜스 그룹의 지오펜스들을 모니터링하고, 상기 제 2 프로세서에서 모니터링 결과에 의해 지오펜스 그룹을 재형성할 수 있다.
본 개시의 한 실시예에 따르면, 컴퓨터 판독 가능한 기록 매체에 기록된 프로그램은 상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하고, 상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하고, 상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용가능한 지오펜스들의 개수보다 큰 경우, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑을 실행시킬 수 있다.
본 문서에서 사용된 용어 "모듈"은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. "모듈"은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. "모듈"은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면,"모듈"은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 명령어가 프로세서(예: 프로세서(120))에 의해 실행될 경우, 하나 이상의 프로세서가 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리(130)가 될 수 있다.
컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다. 그리고 본 문서에 개시된 실시예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 문서에서 기재된 기술의 범위를 한정하는 것은 아니다. 따라서, 본 문서의 범위는, 본 문서의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시예를 포함하는 것으로 해석되어야 한다.
그리고 본 문서에 개시된 실시예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 발명의 다양한 실시예의 범위를 한정하는 것은 아니다. 따라서, 본 발명의 다양한 실시예의 범위는, 본 발명의 다양한 실시예의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시예를 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 전자 장치의 동작 방법에 있어서,
    상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하는 동작;
    상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하는 동작;
    상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용 가능한 지오펜스의 개수보다 큰 경우, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑하는 동작; 및
    상기 그룹핑된 적어도 하나의 지오펜스 그룹의 지오펜스를 모니터링하는 동작을 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 지오펜스 그룹의 개수는 상기 하드웨어 자원에서 허용 가능한 지오펜스의 개수 보다 작거나 같은 방법.
  3. 제 1 항에 있어서,
    상기 전자 장치가 상기 적어도 하나의 지오펜스 그룹 중 하나인 제 1 지오펜스 그룹에 위치하면, 상기 제 1 지오펜스 그룹 또는 상기 제 1 지오펜스 그룹 내에 포함된 적어도 하나의 지오펜스를 모니터링하는 동작; 및
    상기 전자 장치가 상기 제 1 지오펜스 그룹을 벗어날 경우, 복수의 지오펜스들을 재그룹핑하는 동작을 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 지오펜스 그룹을 재그룹핑하는 동작은
    상기 전자 장치의 현재 위치를 획득하는 동작;
    상기 현재 위치에서 각각의 지오펜스들까지의 거리를 계산하는 동작; 및
    상기 계산된 거리에 기반하여, 상기 현재 위치로부터 가까운 순서대로 모니터링 가능한 지오펜스 개수를 만족하는 적어도 하나의 지오펜스를 하나의 지오펜스 그룹으로 재형성하며, 모니터링하는 동작을 포함하는 방법.
  5. 제 4 항에 있어서, 상기 거리를 계산하는 동작은
    상기 전자 장치가 지오펜스 범위 내에 위치할 때에는 상기 전자 장치가 상기 지오펜스의 범위를 벗어나는 거리를 계산하는 동작과,
    상기 전자 장치가 지오펜스 범위 밖에 위치할 때에는 상기 전자 장치가 상기 지오펜스 범위 내에 위치될 거리까지의 남은 거리를 계산하는 동작을 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 모니터링 동작은, 상기 전자 장치가 복수의 상위 지오펜스 그룹들에 대응되는 영역에 접근하면, 상기 복수의 상위 지오펜스 그룹들 중 하나의 상위 지오펜스 그룹에 대응하는 영역 안에 접근에 기반하여, 상기 하나의 상위 지오펜스 그룹을 복수의 하위 지오펜스 그룹으로 분류하고, 상기 복수의 하위 지오펜스 그룹을 모니터링하는 동작을 더 포함하며,
    상기 상위 지오펜스 그룹은 위도 및 경도의 위치 정보에 기반하여 상기 복수의 지오펜스들을 상기 복수의 상위 지오펜스 그룹들로 분류하는 방법.
  7. 제 1 항에 있어서,
    상기 모니터링 동작은, 가상의 지오펜스를 모니터링하며, 상기 전자 장치가 상기 가상의 지오펜스를 벗어나면 복수의 지오펜스를 모니터링할 또 다른 가상의 지오펜스를 결정하는 동작을 더 포함하며,
    상기 또 다른 가상의 지오펜스는 상기 전자 장치가 현재의 위치 정보에 기반하여 상기 복수의 지오펜스들 중 모니터링할 제 1 후보들을 결정하고, 상기 전자 장치에 대응하는 현재 위치 및 상기 결정된 제 1 후보들을 포함하여 생성되는 방법.
  8. 제 1 항에 있어서,
    상기 전자 장치는 제 1 프로세서 및 제 2 프로세서를 포함하며,
    상기 제 1 프로세서에서 그룹핑된 지오펜스 그룹의 지오펜스들을 모니터링하는 동작과,
    상기 제 2 프로세서에서 모니터링 결과에 의해 지오펜스 그룹을 재형성하는 동작을 더 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 하드웨어 자원에서 허용 가능한 지오펜스의 개수는 사용자의 입력에 의해 설정되는 방법.
  10. 제 1 항에 있어서,
    상기 하드웨어 자원에서 허용 가능한 지오펜스의 개수는 전자 장치의 설정 또는 상태에 따라 변경될 수 있는 방법.
  11. 전자 장치에 있어서,
    지오펜스 그룹을 모니터링하도록 설정된 제 1 프로세서; 및
    상기 제 1 프로세서와 기능적으로 연결된 제 2 프로세서를 포함하고,
    상기 제 2 프로세서는,
    상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하고,
    상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하고,
    상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용 가능한 지오펜스의 개수보다 큰 경우, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑하도록 설정되고,
    상기 제 1 프로세서는,
    상기 그룹핑된 적어도 하나의 지오펜스 그룹의 지오펜스를 모니터링하도록 설정된 전자 장치.
  12. 제 11 항에 있어서,
    상기 제 2 프로세서는,
    상기 복수의 지오펜스들 중 적어도 일부가 포함된 지오펜스 그룹을 상기 제 1 프로세서로 전송하고, 상기 전자 장치가 상기 지오펜스 그룹 중 하나의 지오펜스의 외부에서 내부로 이동하거나, 상기 하나의 지오펜스의 내부에서 외부로 이동했다는 알림을 상기 제 1 프로세서로부터 수신하도록 설정된 전자 장치.
  13. 제 12 항에 있어서,
    상기 제 2 프로세서는 상기 전자 장치의 현재 위치를 획득하고, 상기 현재 위치에서 각각의 지오펜스들까지의 거리를 계산하고, 상기 계산된 거리에 기반하여, 상기 현재 위치로부터 가까운 순서대로 모니터링 가능한 지오펜스 개수를 만족하는 적어도 하나의 지오펜스를 하나의 지오펜스 그룹으로 재그룹핑하도록 설정된 전자 장치.
  14. 제 13 항에 있어서,
    상기 제 2 프로세서는 상기 전자 장치가 지오펜스 범위 내에 위치할 때에는 상기 전자 장치가 지오펜스 범위를 벗어나는 거리를 계산하고,
    상기 전자 장치가 지오펜스 범위 밖에 위치할 때에는 상기 전자 장치가 상기 지오펜스 범위 내에 위치될 거리까지의 남은 거리를 계산한 후,
    상기 계산된 지오펜스들을 전자 장치의 현재 위치에서 거리순으로 배열하여 지정된 개수의 지오펜스들을 지오펜스 그룹으로 설정하도록 설정된 전자 장치.
  15. 제 12 항에 있어서,
    상기 제 2 프로세서는 위도 및 경도의 위치 정보에 기반하여 상기 복수의 지오펜스들을 복수의 상위 지오펜스 그룹들로 분류하고, 상기 제 1 프로세서의 모니터링 결과에 의해 상기 전자 장치의 상기 복수의 상위 지오펜스 그룹들 중 하나의 상위 지오펜스 그룹에 대응하는 영역 안에 접근이 확인되면, 상기 하나의 상위 지오펜스 그룹을 복수의 하위 지오펜스 그룹으로 분류하도록 설정된 전자 장치.
  16. 제 15 항에 있어서,
    상기 제 1 프로세서는 상기 복수의 하위 지오펜스 그룹을 모니터링하도록 설정된 전자 장치.
  17. 제 11 항에 있어서,
    상기 제 2 프로세서는 제한된 지정 개수에 기반하여 상기 지오펜스 그룹을 생성하도록 설정된 전자 장치.
  18. 제 17 항에 있어서,
    상기 제 2 프로세서는 사용자의 행동 패턴을 기반하여 제 1 지오펜스 그룹을 형성하고, 위치 정보에 기반하여 제 2 지오펜스 그룹을 형성하도록 설정된 전자 장치.
  19. 제 11 항에 있어서,
    상기 제 1 프로세서는 상기 제 2 프로세서에 비해 낮은 전력을 소모하도록 설정된 전자 장치.
  20. 전자 장치에서, 상기 전자 장치에 저장된 복수의 지오펜스들 중의 적어도 일부 지오펜스의 삭제 또는 다른 지오펜스의 추가를 확인하는 동작;
    상기 삭제 또는 추가에 따른 상기 복수의 지오펜스들 중의 남아 있는(remaining) 지오펜스들의 개수를 확인하는 동작;
    상기 남아 있는 지오펜스들의 개수가 하드웨어 자원에서 허용 가능한 지오펜스의 개수보다 큰 경우, 상기 남아 있는 지오펜스들을 적어도 하나의 지오펜스 그룹으로 그룹핑하는 동작; 및
    상기 그룹핑된 적어도 하나의 지오펜스 그룹의 지오펜스를 모니터링하는 동작을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020150112658A 2015-08-10 2015-08-10 지오펜스 관리 방법 및 그 전자 장치 KR102374438B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020150112658A KR102374438B1 (ko) 2015-08-10 2015-08-10 지오펜스 관리 방법 및 그 전자 장치
US15/180,489 US9801017B2 (en) 2015-08-10 2016-06-13 Method of managing geo-fence and electronic device thereof
EP16183242.3A EP3131316B1 (en) 2015-08-10 2016-08-08 Method of managing geo-fence and electronic device thereof
CN201610653814.4A CN106454720B (zh) 2015-08-10 2016-08-10 管理地理围栏的方法及其电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150112658A KR102374438B1 (ko) 2015-08-10 2015-08-10 지오펜스 관리 방법 및 그 전자 장치

Publications (2)

Publication Number Publication Date
KR20170018704A KR20170018704A (ko) 2017-02-20
KR102374438B1 true KR102374438B1 (ko) 2022-03-15

Family

ID=56852067

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150112658A KR102374438B1 (ko) 2015-08-10 2015-08-10 지오펜스 관리 방법 및 그 전자 장치

Country Status (4)

Country Link
US (1) US9801017B2 (ko)
EP (1) EP3131316B1 (ko)
KR (1) KR102374438B1 (ko)
CN (1) CN106454720B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9398409B2 (en) 2013-09-17 2016-07-19 Exacttarget, Inc. System and method for dynamically retrieving and monitoring geo-fence activity
WO2018148565A1 (en) * 2017-02-09 2018-08-16 Wove, Inc. Method for managing data, imaging, and information computing in smart devices
US10972474B2 (en) * 2017-04-18 2021-04-06 International Business Machines Corporation Logical zones for IoT devices
US10757531B1 (en) 2017-05-22 2020-08-25 Amazon Technologies, Inc. Time-restricted location-based service zone management
US10129694B1 (en) 2017-08-07 2018-11-13 Amazon Technologies, Inc. High density location-based service zone management for a geographic region
US10531372B1 (en) * 2017-08-07 2020-01-07 Amazon Technologies, Inc. Location-based service zone cluster management and monitoring
US11115929B2 (en) 2017-09-29 2021-09-07 Samsung Electronics Co., Ltd Method and device for operating operation mode of electronic device
CN107911790A (zh) * 2017-10-17 2018-04-13 深圳市云宝网络科技有限公司 位置提醒的方法及装置
KR102034168B1 (ko) * 2018-10-11 2019-11-08 한화시스템 주식회사 무기 체계 및 워리어 플랫폼 관리 장치 및 방법
CN109561387A (zh) * 2018-11-23 2019-04-02 北京摩拜科技有限公司 调整电子围栏的方法、装置及服务器
CN109785351B (zh) * 2018-11-23 2020-07-31 口口相传(北京)网络技术有限公司 道路围栏的合并方法及装置、存储介质、电子装置
US11297568B2 (en) 2019-01-18 2022-04-05 T-Mobile Usa, Inc. Location-based apparatus management
US10999697B2 (en) * 2019-01-24 2021-05-04 Intuit Inc. Intelligent geofence provisioning
CN109992633B (zh) * 2019-02-20 2020-08-07 北京三快在线科技有限公司 基于用户位置的地理围栏确定方法、装置、电子设备
AU2020254549B2 (en) * 2019-03-29 2022-12-08 Daikin Industries, Ltd. Device network system
EP3737118B1 (en) 2019-05-10 2022-03-16 HERE Global B.V. Storage size based offloading of geofence processing
US11252031B2 (en) 2019-11-20 2022-02-15 T-Mobile Usa, Inc. Coordinated management of IoT device power consumption and network congestion
US11074799B1 (en) 2020-01-24 2021-07-27 T-Mobile Usa, Inc. Modular tracking device
KR20220105450A (ko) * 2021-01-20 2022-07-27 삼성전자주식회사 컨텐츠의 메타데이터에 위치 정보를 태깅하는 장치 및 방법
CN115022943B (zh) * 2021-12-24 2023-04-14 荣耀终端有限公司 定位地理位置的方法及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120307645A1 (en) 2011-06-03 2012-12-06 Apple Inc. Selecting wireless access points for geofence monitoring
US20150141037A1 (en) 2013-11-21 2015-05-21 Microsoft Corporation Improving scalability and reliability of hardware geo-fencing with failover support
US20150163629A1 (en) 2013-12-05 2015-06-11 Ebay Inc. Methods, systems, and apparatus for a geo-fence system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504061B2 (en) 2010-04-07 2013-08-06 Apple Inc. Multi-tier geofence detection
US8606260B2 (en) * 2010-08-18 2013-12-10 Apple Inc. Location-based profile
US8463295B1 (en) * 2011-12-07 2013-06-11 Ebay Inc. Systems and methods for generating location-based group recommendations
US9451403B2 (en) * 2012-08-30 2016-09-20 Ebay Inc. Systems and method for configuring mobile device applications based on location
US9712962B2 (en) * 2013-02-22 2017-07-18 Intel Corporation Public and private geo-fences
US9191832B2 (en) 2013-06-06 2015-11-17 Apple Inc. Category-based fence
WO2015013099A2 (en) 2013-07-25 2015-01-29 Square, Inc. Generating geofences
CN103533501B (zh) * 2013-10-15 2018-12-18 厦门雅迅网络股份有限公司 一种地理围栏生成方法
US9408031B1 (en) * 2014-01-09 2016-08-02 Skyhook Wireless, Inc. Geo-fence splitting
US9288620B2 (en) * 2014-04-01 2016-03-15 Qualcomm Incorporated Reducing overlapping geofences
US9712968B2 (en) * 2014-09-30 2017-07-18 Ebay Inc. Super geo-fences and virtual fences to improve efficiency of geo-fences
US9609477B2 (en) * 2014-12-18 2017-03-28 Intel Corporation Devices and methods for geo fencing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120307645A1 (en) 2011-06-03 2012-12-06 Apple Inc. Selecting wireless access points for geofence monitoring
US20150141037A1 (en) 2013-11-21 2015-05-21 Microsoft Corporation Improving scalability and reliability of hardware geo-fencing with failover support
US20150163629A1 (en) 2013-12-05 2015-06-11 Ebay Inc. Methods, systems, and apparatus for a geo-fence system

Also Published As

Publication number Publication date
US20170048666A1 (en) 2017-02-16
KR20170018704A (ko) 2017-02-20
EP3131316A1 (en) 2017-02-15
EP3131316B1 (en) 2017-12-20
US9801017B2 (en) 2017-10-24
CN106454720A (zh) 2017-02-22
CN106454720B (zh) 2020-09-18

Similar Documents

Publication Publication Date Title
KR102374438B1 (ko) 지오펜스 관리 방법 및 그 전자 장치
US10397153B2 (en) Electronic device and method for controlling reception of data in electronic device
KR20160128872A (ko) 지문 정보 처리 방법 및 이를 지원하는 전자 장치
US11411961B2 (en) Electronic device and method for providing location data
CN107637028B (zh) 电子设备和网关及用于其的控制方法
KR20170092966A (ko) 외부 전자 장치와 연결을 수립하는 방법 및 전자 장치
KR20170061473A (ko) 알림을 제공하기 위한 방법 및 그 전자 장치
KR102416549B1 (ko) 어플리케이션을 관리하는 방법 및 그를 위한 전자 장치
KR20160123892A (ko) 전자 장치 및 전자 장치에서 적어도 하나의 페어링 대상을 식별하는 방법
KR20160101600A (ko) 스크린 미러링 서비스 제공방법 및 장치
KR20170019806A (ko) 위치 정보 제공 방법 및 장치
KR20160100153A (ko) 장치 검색 방법 및 이를 지원하는 전자 장치
KR102304260B1 (ko) 위치 결정 방법, 전자 장치 및 저장 매체
KR102483836B1 (ko) 전자 장치 및 그의 동작 방법
US10852904B2 (en) Apparatus and method for providing adaptive user interface
KR102586552B1 (ko) 타일 기반 poi 관리 방법 및 장치
EP3425935B1 (en) Electronic apparatus and method for providing identification information
KR20170087799A (ko) 전자 장치 및 그 제어 방법
KR102529808B1 (ko) 원단의 색상 정보를 결정하는 원단 측정 장치
KR20170119948A (ko) 전자 장치 및 그 제어 방법
KR20170065375A (ko) 전자 장치 및 전자 장치의 통신 연결 방법
KR102590347B1 (ko) 서버, 전자 장치 및 데이터 관리 방법
KR102475937B1 (ko) 네트워크 연결을 위한 전자 장치 및 방법
KR102349269B1 (ko) 컨텐츠의 이동 방법 및 전자장치
KR20170056932A (ko) 전자 장치 및 그 제어 방법

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