TECHNICAL FIELDThis disclosure relates generally to location-based processing on a mobile device.
BACKGROUNDA modern mobile device can incorporate functions of a computer, of a cellular transceiver, or a wireless (e.g., WiFi™, Bluetooth™) transceiver. For example, the mobile device can perform traditional computer functions, such as executing application programs, storing various data, and displaying digital images. These functions can be performed in an application subsystem of the mobile device. The application subsystem can include an application processor, an application operating system, and various input/output devices.
When the mobile device functions as a cellular transceiver, the mobile device can initiate and receive phone calls, send and receive data over a cellular network, identify cellular tower connections, and determine when and whether to switch cellular towers. Similarly, the mobile device can function as a wireless radio transceiver and send and received data over a wireless network, e.g. a WiFi™ network or Bluetooth™ wireless technology. These radio-related functions can be performed in a baseband subsystem of the mobile device. The baseband subsystem can include a baseband processor and a baseband operating system. The baseband processor can be an integrated circuit (IC) device (e.g., a Large Scale Integrated Circuit (LSI)) that performs communication functions. The baseband processor can include, for example, a Global System for Mobile Communications (GSM) modem. The baseband processor can be can be integrated with the application processor in a System-on-Chip (SoC). In general, the application subsystem can consume more power than the baseband subsystem when activated.
SUMMARYMethods, program products, and systems for multi-tier geofence detection are disclosed. In general, in one aspect, a mobile device can be configured to perform a task when the mobile device enters a geographic region. A boundary of the geographic region can be defined conceptually by a virtual “geofence.” The mobile device enters the geographic region when it crosses the geofence. The crossing of a geofence can be determined by comparing the current location of the mobile device with data defining the location of the geofence.
The mobile device can monitor a current location using a multi-tier approach that is designed to conserve power on the mobile device. In some implementations, a baseband subsystem can monitor a coarse location of the mobile device using a mobile country code (MCC), a location area code (LAC), or a cell identifier (cell ID), as the mobile device moves closer to the geographic region. The baseband subsystem can notify an application subsystem when the mobile device moves sufficiently close to the geographic region such that monitoring the location in finer location accuracy is warranted. Upon determining that the mobile device is in a cell that intersects the geographic region, the baseband subsystem can transfer the monitoring to the application subsystem. The mobile device can determine that the mobile device enters the geographic region by triangulating locations of access points of a wireless local area network (WLAN) or by using position coordinates from a global positioning system (e.g., GPS). The task can be performed based on the determination that the cell intersects the geographic region.
In another aspect, the mobile device can be configured to detect whether the mobile device has crossed a geofence to enter a geographic region using multi-tier detection. The mobile device can receive a request to perform a task. The request can specify that the task is to be performed when the mobile device is located in a predefined first geographic region. The first geographic region can be defined using a first location accuracy. The mobile device can monitor a current location of the mobile device using a second location accuracy. The second location accuracy initially can be less precise than the first location accuracy. The mobile device can determine that the mobile device is located in a second geographic region. The second geographic region can be specified using the second location accuracy and can include at least a portion of the first geographic region. The mobile device can refine the second location accuracy upon the determining that the mobile device is in the second geographic region. The mobile device can continue a cycle of monitoring, determining, and refining until an exit condition is satisfied. Upon determining that the mobile device is located in the first geographic region, the mobile device can perform the requested task.
In some implementations, the mobile device can determine that the mobile device is located in a third geographic region. The third geographic region can be specified using a third location accuracy and can include at least a portion of the first geographic region. The third geographic region can be defined by the known location of a beacon. As defined herein, a beacon is a short range communication device having a known or fixed location that provides a signal that can be detected by mobile devices within proximity of the beacon. An example of a beacon is a radio frequency (RF) beacon (e.g., Bluetooth™ low energy (BLE) beacon), infrared beacon or a radio frequency identifier (RFID) tag.
For example, a BLE can broadcast an RF signal that includes its position coordinates (e.g., latitude, longitude), which can be detected by a mobile device. The position coordinates can provide a third location accuracy for the current location of the mobile device by virtue of the mobile device adopting the position coordinates of the BLE as its own position coordinates. The known locations of a number of beacons in a geographic region (hereafter a “beacon network”) can define a geofence that encompasses the geographic region. In some implementations, the beacon can also advertise location based services provided by the beacon network. Upon determining that the mobile device crossed the geofence defined by the beacon network, the application subsystem can transfer the monitoring back to the baseband subsystem to conserve power. The baseband system can monitor for beacon signals from the beacon network and continuously update its location to be the location of the beacon currently communicating with the mobile device. When the mobile device loses contact with the beacon network for a defined period of time (e.g., 5 minutes) or when the mobile device exits the geofence defined by the beacon network, the baseband subsystem can transfer the monitoring back to the application subsystem, so that the location of the mobile device can be determined using WiFi.
In some implementations, the baseband subsystem can distinguish between beacons in the beacon network and mobile beacons that may be detected in a scan, such as other Bluetooth™ enabled mobile phones operating within the beacon network. For example, each beacon in the beacon network can provide data in its broadcast signal that indicates that the beacon is part of a beacon network. Alternatively, or in addition, when a mobile device makes first contact with a beacon in the beacon network, that beacon can transmit to the mobile device a list of unique identifiers (e.g., MAC addresses) of other beacons in the beacon network and other information about the beacon network, such as a name, geofence data, one or more URLs to websites associated with the beacon network. Beacon networks can be located in any geographic region, including businesses (e.g., shopping malls, retail stores, restaurants), landmarks (e.g., museums, airports, parks, entertainment venues) and any other environments where location based services are desired.
The multi-tier geofence detection techniques can be implemented to achieve the following exemplary advantages. On a mobile device, a baseband subsystem can consume less power than an application subsystem. Multi-tier geofence detection can be achieved in the baseband subsystem until participation of the application subsystem is needed. The “as needed” approach allows the application subsystem to be set to a power-saving mode until the mobile device is sufficiently close to the geofence, thus saving battery power. Likewise, the application programs that can determine a more precise location of the mobile device than country, location area, and cell can be invoked only when necessary. For example, location triangulation functions or GPS processing, which can be resource intensive in terms of signal detection and CPU processing cycles, can be invoked when the mobile device is sufficiently close to the geofence, thus saving computing resources of the mobile device.
The details of one or more implementations of multi-tier geofence detection are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of multi-tier geofence detection will become apparent from the description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is an overview of techniques of multi-tier geofence detection.
FIG. 2 illustrates an exemplary tier of geofence detection where mobile country code (MCC) is used to determine a coarse location of a mobile device.
FIG. 3 illustrates an exemplary tier of geofence detection where a mobile device is configured to monitor multiple cells of a cellular communications network.
FIG. 4A illustrates an exemplary tier of geofence detection where access points of a wireless local area network (WLAN) are used to determine a current location of a mobile device.
FIG. 4B illustrates an exemplary tier of geofence detection where beacons are used to determine a current location of a mobile device.
FIG. 5 is a block diagram illustrating various modules of a mobile device configured to utilize techniques of multi-tier geofence detection.
FIG. 6 is a flowchart illustrating an exemplary process implementing multi-tier geofence detection techniques.
FIG. 7A is a flowchart illustrating another exemplary process implementing multi-tier geofence detection techniques.
FIG. 7B is a flowchart illustrating another exemplary process implementing multi-tier geofence detection techniques using a beacon network.
FIG. 8 is a flowchart illustrating an exemplary process of multi-tier geofence detection using various granularities.
FIG. 9 is a block diagram illustrating an exemplary device architecture of a mobile device implementing the features and operations described in reference toFIGS. 1-8.
FIG. 10 is a block diagram of an exemplary network operating environment for the mobile devices ofFIGS. 1-9.
Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTIONOverview of Multi-tier Geofence DetectionFIG. 1 is an overview of techniques of multi-tier geofence detection.Mobile device100 can be an exemplary mobile device that implements the techniques of multi-tier geofence detection. InFIG. 1,mobile device100 is configured to perform one or more tasks whenmobile device100 is located ingeographic region104.Geographic region104 can be defined using a geofence. The geofence can be a boundary configured on a server computer or on a mobile device (e.g., mobile device100). The geofence can be a circle, a polygon, or any geographic shape that enclosesgeographic region104.Geographic region104 can correspond to, for example, an office, a floor of a building, a building, a block of buildings, a city, a state, etc. The task to be performed can include, for example, launching an application program, setting certain files to non-accessible mode, initiating a phone call, sounding an alarm, among others. For illustration of multi-tier geofence detection,geographic region104 is located in the United States.
Asmobile device100 moves towards or away from geographic region104 (distance102a-d),mobile device100 can use various ways to determine whethermobile device100 is located insidegeographic region104. The determination can use multi-tier detection. The closermobile device100 moves towardgeographic region104, the more precise location determination mechanism can be used to determine the current location ofmobile device100. For example, whenmobile device100 is close to geographic region104 (distances102d), a more precise location monitoring determination mechanism (e.g., using triangulation of wireless access points, GPS or beacons) can be used. The precise location monitoring determination mechanism can be executed in an application subsystem, which generally can consume more power than a baseband subsystem. Therefore, it can be more power efficient to use the baseband subsystem to monitor the location untilmobile device100 is close togeographic region104 to warrant the use of more precise location monitoring mechanisms.
Whenmobile device100 is far away from geographic region104 (distances102a),mobile device100 can monitor a MCC of a cellular network. Based on the MCC,mobile device100 can determine in which countrymobile device100 is located. Monitoring the MCC can be accomplished in the baseband subsystem ofmobile device100. The application subsystem can register one or more MCCs (e.g., MCCs of the United States, represented as polygon122) associated withgeographic area104 to the baseband subsystem. The baseband subsystem can constantly or intermittently monitor a current MCC ofmobile device100. For example, when a current MCC indicates thatmobile device100 is located in Canada (e.g., in polygon120), or thatmobile device100 is located in Mexico (e.g., in polygon124), the baseband subsystem need not request further information from the application processor ofmobile device100.
Whenmobile device100 moves intopolygon122 containing the United States (e.g., whenmobile device100 is atdistance102bfrom geographic region104), the baseband subsystem ofmobile device100 can invoke or notify the application subsystem ofmobile device100 to request location information that has more precise location accuracy. The application subsystem can provide to the baseband subsystem one or more LACs130.LAC130 can represent a location area that includes one or more radio cells in a cellular communications network. Each location area can correspond to aunique LAC130. InFIG. 1,geographic region104 is located in an exemplary location area represented byLAC132. A single task can be configured to be performed when mobile device is located in multiplegeographic regions104. Likewise, multiple tasks can be configured to be performed whenmobile device100 is located in a singlegeographic region104. Eachgeographic region104 can be located in multiple countries or location areas.
The baseband subsystem ofmobile device100 need not seek further information from the application subsystem ofmobile device100 untilmobile device100 is located in the location area or location areas in whichgeographic region104 is located.Mobile device100 can determine thatmobile device100 is located in a location area whenmobile device100 determines that a current LAC matches LAC132 (“LAC3”).
Whenmobile device100 is located closer to geographic region104 (e.g., atdistance102c), location ofmobile device100 can be measured using finer location accuracy. For example, upon determining thatmobile device100 is in the location area wheregeographic region104 is located, the baseband subsystem ofmobile device100 can notify the application subsystem of the LAC (e.g., LAC132). The application subsystem ofmobile device100 can request, from a server or from a data store onmobile device100, one or more cell IDs. The cell IDs can include unique identifiers of cell towers (also known as cell sites, which can include antennae and electronic communications equipments for creating a cell in a cellular network). The cells can correspond to (e.g., intersect)geographic region104.Geographic region104 can intersect multiple cells (e.g.,cell142a,142b, and142c). The server can send cell IDs of all cells intersectinggeographic region104 tomobile device100.Mobile device100 can register these cell IDs with the baseband subsystem. The baseband subsystem can monitor in which cellmobile device100 is currently located. When the baseband subsystem detects thatmobile device100 is located in one of the cells that intersect withgeographic region104, the baseband subsystem can invoke the application subsystem and notify the application subsystem of the current cell ID.
An advantage of multi-tier geofence detection is conservation of resources in the baseband subsystem ofmobile device100.Mobile device100 can be configured to perform multiple tasks, each task being associated with multiple geographic regions, and each region being associated with multiple cells. The baseband subsystem ofmobile device100 can have a limited amount of memory for registering cell IDs, therefore a limit on how many cell IDs can be registered. Using filters (e.g., MCC and LAC) can reduce the number of cell IDs that are registered concurrently, thus allowingmobile device100 to be configured to perform more location based tasks. In addition to using tiers based on MCC and LAC, other tiers (e.g., a tier based mobile network code (MNC)) can be used to detect geofences.
The application subsystem can continue monitoring the current location ofmobile device100 with finer location accuracy then cells of a cellular network, which can have a location accuracy measured in kilometers. For example, the application subsystem can continue monitoring the current location ofmobile device100 using GPS, beacons or by triangulation using WLAN access points. To triangulate the current location ofmobile device100,mobile device100 can request from a server (or query a database on mobile device100) one or more identifiers (e.g., Media Access Control (MAC) addresses) of WLAN access points. The identifiers can be associated with geographic locations of the WLAN access points.Mobile device100 can detect the MAC addresses of the WLAN access points located within a communication range ofmobile device100.Mobile device100 can calculatecurrent location150 based on locations156a-dof the WLAN access points. The application subsystem can perform the task associated withgeographic region104 whencurrent location150 intersects (e.g., completely or partially includes or is completely or partially included in)geographic region104.
The application subsystem can continue monitoring the current location ofmobile device100 with finer location accuracy then using WLAN access points. For example, the application subsystem can continue monitoring the current location ofmobile device100 using beacons, such as Bluetooth low energy beacons (BLEs). BLEs are described in Bluetooth Core Specification version 4.0, which is publicly available from the Bluetooth Special Interest Group (SIG).
To determine the current location ofmobile device100,mobile device100 can receive a broadcast signal from the beacon that includes the location of the beacon. Since the mobile device is in close proximity to the beacon, the mobile device can set its own location to be the location of the beacon. The receipt and processing of the broadcast signal can be performed by the baseband processor to conserve power. Since the location of the beacon is included in the broadcast signal, there is no need to waste power communicating with a server to receive location information, as may be done using WiFi.
Exemplary Tiers of Multi-tier Geofence DetectionFIG. 2 illustrates an exemplary tier of geofence detection where MCC is used to determine a coarse location ofmobile device100. For convenience, only North America and Hawaiian Islands are shown inFIG. 2. Furthermore, only Canada, United States, and Mexico are given as examples for coarse location determination using MCC. The techniques of location filtering using MCC is applicable to other countries and continents.
Mobile device100 can detect, using a baseband subsystem, a current MCC ofmobile device100. The current MCC ofmobile device100 can be obtained from a specialized processor that is responsible for wireless communications and control. In various implementations, the specialized processors can be known as baseband processors, GSM wireless modems, and universal mobile telecommunications system (UMTS) wireless modems. An MCC is a code that the International Telecommunication Union (ITU) assigned to a country. The MCC is unique for each country and can be used to identify the country. Each country can have one or more MCCs assigned to it. Table 1 illustrates some example MCCs and corresponding countries ofFIG. 2.
| MCC | Country |
|
| 302 | Canada |
| 310-316 | United States of America |
| 334 | Mexico |
|
To determine whethergeographic region104 is associated with a particular MCC, a system can generate polygons that are bounding boxes of the country of each MCC and determine whethergeographic region104 intersects the polygon or polygons of the MCC. For example, boundingbox120 can correspond to MCC “302” (Canada). Boundingboxes122 can correspond to MCCs “310,” “311,” “312,” “313,” “314,” “315,” and “316” (United States). Boundingbox124 can correspond to MCC “334” (Mexico). For simplicity, bounding boxes for other North American countries are not shown inFIG. 1. A system (eithermobile device100, or a server device connected tomobile device100 through a communications network, or both) can determine which MCC is to be associated withgeographic region104. For example,geographic region104 can have a center with latitude and longitude coordinates 37°47′27.56″N and 122°24′08.69″W, indicating thatgeographic region104 is located at 300 Bush Street, San Francisco, Calif., U.S.A. This location is inside boundingbox122 for the United States. Therefore,geographic region104 can be associated with MCCs “310,” “311,” “312,” “313,” “314,” “315,” and “316.”
The system can use various algorithms to determine a bounding box (e.g., bounding box122) of a country associated with an MCC. A country (e.g., Canada) can be represented as one or more simple polygons whose vertices can be stored in latitude and longitude coordinates. The bounding box of a country can be a convex hull of the simple polygon of the country determined by, for example, Akl-Toussaint heuristics or Melkman's Algorithm. In some implementations, a bounding box of a country can be determined by extreme points within the boundaries of the country (e.g., easternmost, westernmost, northernmost, and southernmost points). The bounding box can be a substantially rectangular area (e.g.,rectangles120,122 and124) on a map drawn using Mercator projection. The bounding box can be stored using latitude/longitude coordinates of two points (e.g., its north-west vertex and its southeast vertex).
For example, boundingbox120 enclosing Canada can have a northern boundary that is delineated by latitude 83°08′N, corresponding to the latitude of Cape Columbia, Ellesmere Island, Nunavut, an extreme north point within the Canadian boundary. Boundingbox120 can have a southern boundary delineated by latitude 41°41′N, corresponding to the latitude of Middle Island, Ontario, an extreme southern point of Canada. Boundingbox120 can have an eastern boundary delineated by longitude 52°37′W (Cape Spear, Newfoundland), and a western boundary delineated by longitude 141°00′W (Yukon-Alaska border). Boundingbox120 can be stored in two sets of coordinates (e.g., 83°08′N/141°00′W and 41°41′N/52°37′W).
Some countries (e.g., the United States) can be represented as multiple simple polygons (e.g., Alaska, 48 continental states, and Hawaii). Countries that can be represented using multiple simple polygons can have multiple bounding boxes (e.g., boundingboxes122afor Alaska, boundingbox122bfor continental48 states, andbounding box122cfor Hawaii). Bounding boxes of various countries can overlap, as shown in the overlapping areas between boundingboxes120 and122a, for example.
Bounding boxes can be stored onmobile device100 in association with MCCs, or on a server. For example,mobile device100 can store, or be connected to, a geographic database, in which MCCs and corresponding bounding boxes are stored. MCC “302” (Canada) can be associated with the north-west vertex and southeast vertex ofbounding box120, for instance.
FIG. 3 illustrates an exemplary tier of geofence detection wheremobile device100 is configured to monitor multiple cells of a cellular communications network.Mobile device100 can be configured to perform certain tasks when mobile device is located ingeographic region300.Geographic region300 can be sufficiently large such thatgeographic region300 is associated with multiple cells (e.g.,cells302a,302b, and304). Due to memory limitations of the baseband subsystem ofmobile device100, not allcells302a,302b, and304 can be registered with the baseband subsystem ofmobile device100.
Mobile device100 can select a subset of cells to register when the memory limitation preventsmobile device100 from registering all cells. In some implementations, a cell can be selected based on distances between the cell and a center ofgeographic region300. The cells can be sorted based on a distance between each of the cells and the center (marked as an “X” inFIG. 3) ofgeographic region300. The distance between a cell (e.g., cell304) and the center can be measured using a distance between an estimated position of the cell and the center. The estimated position of the cell can be determined by, for example, an average of locations of location-aware mobile devices when the location-aware mobile devices are connected to the cell. The estimated position can coincide with the actual geographic location of the cell tower of the cell. The cell can also have an estimated size, which can be determined mathematically by a distribution of the locations of the location-aware mobile devices.
Mobile device100 can register cell IDs of cells that are closest to the center ofgeographic region300. Cells that are far away from the center (e.g.,cells302aand302b) can be excluded. Thus, whenmobile device100 moves towardgeographic region300, the baseband subsystem ofmobile device100 can ignorecells302aand302b. The baseband subsystem ofmobile device100 can notify the application subsystem ofmobile device100 whenmobile device100 enters one of the cells (e.g., cell304) that is close to the center ofgeographic region300.
FIG. 4A illustrates an exemplary tier of geofence detection where access points of a wireless local area network (WLAN) are used to determine a current location ofmobile device100. The exemplary tier of geofence detection ofFIG. 4A can be performed by an application subsystem ofmobile device100.
Mobile device100 can be located within communication range of access points404a-d.Mobile device100 can be connected to one of the access points404a-d(e.g.,404a). Fromaccess point404a,mobile device100 can receive data that includes information on the locations (including locations156a-d) of access points404a-d.Mobile device100 can store the received data on a storage device (e.g., a flash memory device) coupled tomobile device100. The stored data can be updated periodically.
Mobile devices100 can identifyaccess points404a,404b,404c, and404dunder wireless communication protocols used in the WLAN (e.g., IEEE 802.11x). Access points404a,404b,404c, and404dcan be identified by MAC addresses of the access points or other identifiers (e.g., Bluetooth™ identifiers).
Mobile device400 can identify locations156a-dthat are associated with access points404a-d, respectively. Identifyingpresence areas406a-dcan include retrieving information on the locations156a-dfrom the memory device coupled tomobile device100. In some implementations,mobile device100 can request from a server the locations156a-dby querying the server using identifiers of access points404a-d. Locations156a-dneed not be the actual, physical locations of access points404a-d. Locations156a-dcan be areas that are determined by the server to be areas where mobile devices that are connected to access points404a-dare most likely to be present.
Based on locations156a-d,mobile device100 can execute an iterative process (e.g., a multi-pass analysis). The iterative process can calculate an average locations156a-d, select a subset of locations156a-dthat are closest to the average, and calculate the average again, and so on, until a desired precision is reached or until only a certain number of locations156a-dare left. The iterative process can producegeographic area150, which can be an estimate of the current geographic location ofmobile device100.Geographic area150 can be a geographic space (e.g., a particular floor in a building) when three-dimensional location information is utilized.Mobile device100 can perform a task associated withgeographic region104 whengeographic area150 intersectsgeographic region104.
FIG. 4B illustrates an exemplary tier of geofence detection where beacons are used to determine a current location of a mobile device. The exemplary tier of geofence detection ofFIG. 4B can be performed by a baseband subsystem ofmobile device100.
Mobile device100 can be located within communication range of beacons408a-g.Mobile device100 can be connected to one of the beacons408a-g(e.g.,408a). Frombeacon408a,mobile device100 can receive data that includes information on the location ofbeacon408a.Mobile device100 can store the received data on a storage device (e.g., a flash memory device) coupled tomobile device100. The stored data can be updated periodically. In some implementations, beacons408a-gcan be BLEs andmobile device100 can identify BLEs408a-gusing communication protocols described in Bluetooth Core Specification 4.0. BLEs408a-gcan be identified by unique identifiers, as described in the Bluetooth Core Specification 4.0.
In some implementations,mobile device100 can cross ageofence406 defined by beacon network408a-gwithin geographic area150 (SeeFIG. 4A).Geofence406 can define a geographic area for which specific location based services are available tomobile device100. For example, when mobile device is in the communication range ofbeacon408a,mobile device100 can receive a broadcast signal having a payload portion that contains the location ofbeacon408aand other information. Other information can include, for example, a URL that can be used by a browser application running onmobile device100 to access web-based services associated with the beacon network408a-g. Other information can also provide context information, such a description of the location or advertise location based services that are available tomobile device100. For example, if you are in a museum or large parking garage,beacon408acan informmobile device100 of such context and advertise various services available in the museum. In some implementations,beacon408acan provide mobile device with locations for other beacons (e.g.,beacons408b-g) in the beacon network. These beacon locations can be shown on a map displayed onmobile device100.
In some implementations, upon crossing the beacon-basedgeofence406,mobile device100 can stop monitoring its location with the application subsystem and start monitoring with the baseband subsystem to conserve power onmobile device100.
Exemplary Components of Multi-tier Geofence DetectionFIG. 5 is a block diagram illustrating various modules ofmobile device100 configured to utilize techniques of multi-tier geofence detection.Mobile device100 can be, for example, a handheld computer, a personal digital assistant, a cellular telephone, an electronic tablet, a network appliance, a camera, a smart phone, an enhanced general packet radio service (EGPRS) mobile phone, a network base station, a media player, a navigation device, an email device, a game console, or a combination of any two or more of these data processing devices or other data processing devices.
Mobile device100 can include, among other components,application subsystem502 andbaseband subsystem504.Application subsystem502 can includeapplication operating system514, and application processor506. One ormore application programs508 can execute inapplication subsystem502.Application programs508 can be location-based (e.g., configured to be invoked or notified whenmobile device100 is at or near a geographic region).Application operating system514 can include various location functions510. Location functions510 can include, for example, functions that can retrieve current geographic location from a GPS receiver, and functions for communicating withbaseband subsystem504. Location functions510 can be exposed toapplication programs508 throughlocation API512.Location API512 can have a public interface that allows development of “crowdware.” Crowdware can include user generated software (e.g., miniature application programs or widgets) that can be invoked whenmobile device100 is located in a particular geographic region (e.g., geographic region104).
Location functions510 can communicate withlocation monitoring program520 ofbaseband subsystem504. In some implementations,location monitoring program520 can be exposed tolocation functions510 throughAPI522.Baseband subsystem504 can includebaseband operating system518 andbaseband processor520.
Location functions510 can register various location identifiers withlocation monitoring program520. The location identifiers can include multi-tiered information, including MCC, MNC, LAC, cell ID, or other identifiers of wireless access gateways. The location identifiers can be stored in registered locationidentifier data store526.Location monitoring program520 can monitor a current wireless access gateway. Monitoring the current wireless access gateway can include monitoring a current MCC, MNC, LAC, cell ID, or other identifiers of wireless access gateways using thebaseband operating system518 andbaseband processor520 ofmobile device100. Upon receiving information on the wireless access gateway,location monitoring program520 can compare the received information with the location identifiers indata store526. If a match is found,location monitoring program520 can pass the matched identifier toapplication operating system514 of theapplication subsystem502.
Application operating system514 can determine a next action based the received identifier, usingtier manager530.Tier manager530 can determine whether the received identifier requires more granular monitoring, or is sufficient to trigger an invocation or notification of location basedapplication program508. For example, if location basedapplication program508 is associated with a geographic region that has location accuracy at cell level, and the identifier received from baseband subsystem corresponds to the geographic region,tier manager530 can informlocation functions510 that location basedapplication program508 can be invoked or notified.
If the received identifier is a higher-level identifier (e.g., an MCC or a LAC) that identifies a geographic region that has a lower location accuracy than defined for the geographic region associated with location basedapplication program508,tier manager530 can determine that finer granulated monitoring is necessary.Tier manager530 can re-register withbaseband subsystem504 using the identifier of a next tier. For example, whenlocation monitoring program520 identifies a matching LAC,tier manager530 can provide cell IDs of one or more cells in the LAC for monitoring. The one or more cells can be cells that intersect with the geographic region that is associated with location basedapplication508.
Exemplary Multi-tier Geofence Detection ProcessesFIG. 6 is flowcharts illustratingexemplary process600 implementing multi-tier geofence detection techniques. For convenience,exemplary process600 will be described with respect tomobile device100 that implementsexemplary process600.
A task can be associated (602) with a geographic region. The task can be an application program (e.g., application program508) that executes in a first subsystem (e.g., application subsystem502) ofmobile device100, or a function (e.g., making a phone call) that executes in a second subsystem (e.g., baseband subsystem504), or a combination of both. The geographic region can be a circular area having a center and a radius, or an arbitrary geometric shape. The geographic region can be defined by one or more sets of latitude-longitude coordinates. In some implementations, the geographic region can be a space (e.g., a particular floor of a building, a flight path of an aircraft, or a particular section of a ski area), further defined by one or more altitude parameters.
Mobile device100 can determine (604) one or more of MCCs, LACs, and cell IDs associated with the geographic region. Determining the MCCs, LACs, and cell IDs can include acquiring the MCCs, LACs, and cell ID from a server, the server connected tomobile device100 through a wired or wireless communications network. In some implementations, acquiring the MCCs, LACs, and cell ID from the server can include requesting the MCCs, LACs, and cell ID from the server by sending the geographic coordinates of the geographic region to the server. Determining the MCCs, LACs, and cell IDs can include registering the MCCs withbaseband subsystem504 ofmobile device100.
Mobile device100 can determine (606) thatmobile device100 is in the country of the geographic region. Determining thatmobile device100 is in the country of the geographic region can include monitoring a current MCC ofmobile device100 usingbaseband subsystem504 ofmobile device100, comparing the current MCC with the registered MCCs, and notifyingapplication subsystem502 ofmobile device100 if a match is found.
Upon being notified of the matching MCC,mobile device100 can register one or more LACs withbaseband subsystem504. The LACs can be LACs that are located within the country represented by the MCC and associated with the geographic region.Mobile device100 can determine (608) thatmobile device100 is in the location area of the geographic region. Determining thatmobile device100 is in the location area of the geographic region can include monitoring a current LAC ofmobile device100 usingbaseband subsystem504 ofmobile device100, comparing the current LAC with the registered LACs, and notifyingapplication subsystem502 ofmobile device100 if a match is found.
Upon being notified of the matching LAC,mobile device100 can register one or more cell IDs withbaseband subsystem504. The cell IDs can be cell IDs that are located within the location area represented by the LAC and associated with the geographic region.Mobile device100 can determine (610) thatmobile device100 is in the cell of the geographic region. Determining thatmobile device100 is in a cell of the geographic region can include monitoring a current cell ID ofmobile device100 usingbaseband subsystem504 ofmobile device100, comparing the current cell ID with the registered cell IDs, and notifyingapplication subsystem502 ofmobile device100 if a match is found.
Mobile device100 can perform (612) the task configured to be performed whenmobile device100 is located in the geographic region upon determining thatmobile device100 is in a cell of the geographic region. Performing the task can include invoking or notifying the application program (e.g., application program508).
In some implementations,baseband subsystem504 ofmobile device100 can be configured to notifyapplication subsystem502 whenmobile device100 leaves the location area of the geographic region or the country of the geographic region. Whenmobile device100 leaves the location area of the geographic region or the country of the geographic region, the cells or location areas currently registered withbaseband subsystem504 can be de-registered (e.g., released), freeing memory space ofbaseband subsystem504. The freed memory space can be used for registering cell IDs or location areas for other tasks.
FIG. 7A is flowcharts illustrating exemplary process700 implementing multi-tier geofence detection techniques. For convenience, exemplary process700 will be described with respect tomobile device100 that implements exemplary process700.
Mobile device100 can receive (702) a request to perform a task whenmobile device100 is located in a geographic region. The request can be associated with an application program (e.g., location based application program508) that is downloaded from a server, copied from a storage device connected tomobile device100, or created onmobile device100. The geographic region can be configured onmobile device100, or on the server from which the application program is downloaded.
Mobile device100 can monitor (704) a current cell of a cellular communications network, including determining a current cell ID ofmobile device100. In some implementations, monitoring the current cell ofmobile device100 can include monitoring a current location area ofmobile device100, including determining a current location area code ofmobile device100. Monitoring the current cell ofmobile device100 can further include determining that the current location area intersects the geographic region, and, upon determining that the current location area intersects the geographic region, monitoring the current cell ofmobile device100. A geographic area (e.g., a country, a location area, or a cell) intersects the geographic region if at least a portion of the geographic area is contained in the geographic region.
In some implementations, monitoring the current cell ofmobile device100 can include monitoring a current country ofmobile device100, including determining a current mobile country code ofmobile device100. Monitoring the current cell ofmobile device100 can further include determining that the current country intersects the geographic region, and, upon determining that the current country intersects the geographic region, monitoring a current location area or the current cell ofmobile device100. Determining that the current country intersects the geographic region can include determining that the geographic region intersects one or more polygons corresponding to the current country. Determining the current cell, current location area, and current country can be accomplished usingbaseband subsystem504 ofmobile device100.
Mobile device100 can determine (706) that the current cell intersects the geographic region. Determining that the current cell intersects the geographic region can include comparing the current cell ID with one or more registered cell IDs, the registered cell IDs being associated with the geographic region. Location and area of the current cell can be determined based on historical usage data. For example, the location and area of the current cell can be determined using locations of location-aware mobile devices that are connected to a cell tower of the cell. The location and area of the current cell can by dynamic, determined based on time of day.
Upon determining that the current cell intersects the geographic region,mobile device100 can monitor (708) a current location of the mobile device on a level that is more detailed than current cell. Monitoring the current location can include determining the current location using one or more wireless access gateways located within a communication range ofmobile device100. In some implementations, determining the current location can include invoking an application program that triangulates the current location based on locations of the one or more wireless access gateways. The application program that performs the triangulation can execute inapplication subsystem502 ofmobile device100. The wireless access gateways can include wireless access points of a wireless local area network. Additionally or alternatively, monitoring the current location can include determining the current location using a global positioning system (GPS). Determining the current location using GPS can be performed inapplication subsystem502 ofmobile device100.
Mobile device100 can perform (710) the task upon determining that the current location of the mobile device is within the geographic region. Performing the task can include invoking or notifying an application program (e.g., location-based application508) inapplication subsystem502 frombaseband subsystem504. Likewise, in some implementations,mobile device100 can perform a task when mobile device leaves a geographic region, a cell, a location area, or a country.
FIG. 7B is a flowchart illustrating anotherexemplary process712 implementing multi-tier geofence detection techniques using a beacon network. For convenience,exemplary process712 will be described with respect tomobile device100 that implementsexemplary process712.Process712 can begin whenprocess712 causes an application subsystem of the mobile device to receive a first location estimate of the mobile device in a geographic area (714). The first location estimate has a first accuracy.Process712 detects a broadcast signal transmitted by a beacon located in the geographic region (716). Process712 processes the broadcast signal to determine a second location estimate of the mobile device in the geographic area (718). The second location estimate is more accurate than the first location estimate. The processing can be performed by a baseband system of the mobile device, which consumes less power than the application subsystem. Process712 processes the broadcast signal to determine services available to the mobile device in the geographic area (720).
In some implementations, the beacon and be a short range radio frequency beacon, such as a Bluetooth low energy beacon. The beacon can be part of a beacon network that is associated with a geofence. For example, whenmobile device100 enters the communication range of one beacon in the beacon network, the beacon can advertise location based services available to mobile device by the beacon network. Beacon networks can be placed in small environments such as businesses, museums, entertainment venues, parking garages, etc. In some implementations where GPS is not available (e.g., indoors),mobile device100 can use the location of one or more beacons in a beacon network to determine a more accurate estimate of its own location than can be provided by, for example, WiFi positioning technology.
FIG. 8 is a flowchart illustratingexemplary process800 of multi-tier geofence detection using various location accuracies. For convenience,exemplary process800 will be described with respect tomobile device100 that implementsexemplary process800.
Mobile device100 can receive (802) a request to perform a task, the request specifying that the task is to be performed when the mobile device is located in a pre-specified first geographic region. The first geographic region can be specified using a first location accuracy. The first location accuracy can be measured in terms of meters. Measuring a position ofmobile device100 at the first location accuracy can include, for example, triangulating the position ofmobile device100 using WiFi™ or WiMax access points, or using GPS technology.
Mobile device can monitor (804) a current location ofmobile device100 using a second location accuracy. Monitoring the current location ofmobile device100 using the second location accuracy can include monitoring a cell of a cellular network in whichmobile device100 is located, a location area of the cellular network, and a country. The second location accuracy initially can be less precise than the first location accuracy. For example, the second location accuracy can be measured in kilometers, miles, degrees of longitude, etc.
Mobile device100 can determine (806) thatmobile device100 is located in a second geographic region. The second geographic region can be specified using the second location accuracy. The second geographic region can include at least a portion of the first geographic region. For example, the second geographic can be a location area that encompasses the geographic region.
Mobile device100 can refine (808) the second location accuracy upon the determining. For example, whenmobile device100 has determined thatmobile device100 is in a country that intersects the geographic region,mobile device100 can refine the second location accuracy from country to location area. Whenmobile device100 has determined thatmobile device100 is in a location area that intersects the geographic region,mobile device100 can refine the second location accuracy from location areas to cells. Whenmobile device100 has determined thatmobile device100 is in a cell that intersects the geographic region,mobile device100 can refine the second location accuracy from cells to GPS or triangulation.
Mobile device100 can repeat the monitoring (e.g., stage804), the determining (e.g., stage806), and the refining (e.g., stage808) until an exit condition is satisfied.Mobile device100 can determine (810) that the exit condition is satisfied when the second location accuracy is equivalent to the first location accuracy, or whenmobile device100 has determined thatmobile device100 is currently located in the geographic region, or both.Mobile device100 can invoke (812) the application program upon determining thatmobile device100 is located in the first geographic region.
Ifmobile device100 moves away from the geographic region, the second location accuracy can be relaxed. For example, ifmobile device100 moves out of a location area in which the first geographic region is located,mobile device100 can automatically start monitoring location areas instead of cells of the location areas. Likewise, whenmobile device100 moves out of a country in which the first geographic region is located,mobile device100 can automatically start monitoring countries instead of cells or location areas.
Exemplary Mobile Device ArchitectureFIG. 9 is a block diagram ofexemplary architecture900 for the mobile devices ofFIGS. 1-8. A mobile device can includememory interface902, one or more data processors, image processors and/orprocessors904, and peripherals interface906.Memory interface902, one ormore processors904 and/or peripherals interface906 can be separate components or can be integrated in one or more integrated circuits.Processors904 can include one or more application processors (APs) and one or more baseband processors (BPs). The application processors and baseband processors can be integrated in one single process chip. The various components inmobile device100, for example, can be coupled by one or more communication buses or signal lines.
Sensors, devices, and subsystems can be coupled to peripherals interface906 to facilitate multiple functionalities. For example,motion sensor910,light sensor912, andproximity sensor914 can be coupled to peripherals interface906 to facilitate orientation, lighting, and proximity functions of the mobile device. Location processor915 (e.g., GPS receiver) can be connected to peripherals interface906 to provide geopositioning. Electronic magnetometer916 (e.g., an integrated circuit chip) can also be connected to peripherals interface906 to provide data that can be used to determine the direction of magnetic North. Thus,electronic magnetometer916 can be used as an electronic compass.Accelerometer917 can also be connected to peripherals interface906 to provide data that can be used to determine change of speed and direction of movement of the mobile device.
Camera subsystem920 and anoptical sensor922, e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, such as recording photographs and video clips.
Communication functions can be facilitated through one or morewireless communication subsystems924, which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of thecommunication subsystem924 can depend on the communication network(s) over which a mobile device is intended to operate. For example, a mobile device can includecommunication subsystems924 designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMax network, and a Bluetooth network. In particular, thewireless communication subsystems924 can include hosting protocols such that the mobile device can be configured as a base station for other wireless devices.
Audio subsystem926 can be coupled to aspeaker928 and amicrophone930 to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and telephony functions.
I/O subsystem940 can include touch screen controller942 and/or other input controller(s)944. Touch-screen controller942 can be coupled to atouch screen946 or pad.Touch screen946 and touch screen controller942 can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact withtouch screen946.
Other input controller(s)944 can be coupled to other input/control devices948, such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control ofspeaker928 and/ormicrophone930.
In one implementation, a pressing of the button for a first duration may disengage a lock of thetouch screen946; and a pressing of the button for a second duration that is longer than the first duration may turn power tomobile device100 on or off. The user may be able to customize a functionality of one or more of the buttons. Thetouch screen946 can, for example, also be used to implement virtual or soft buttons and/or a keyboard.
In some implementations,mobile device100 can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations,mobile device100 can include the functionality of an MP3 player, such as an iPod™.Mobile device100 may, therefore, include a pin connector that is compatible with the iPod. Other input/output and control devices can also be used.
Memory interface902 can be coupled tomemory950.Memory950 can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR).Memory950 can store operating system952, such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. Operating system952 may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system952 can include a kernel (e.g., UNIX kernel).
Memory950 may also storecommunication instructions954 to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers.Memory950 may include graphicaluser interface instructions956 to facilitate graphic user interface processing;sensor processing instructions958 to facilitate sensor-related processing and functions;phone instructions960 to facilitate phone-related processes and functions;electronic messaging instructions962 to facilitate electronic-messaging related processes and functions;web browsing instructions964 to facilitate web browsing-related processes and functions;media processing instructions966 to facilitate media processing-related processes and functions; GPS/Navigation instructions968 to facilitate GPS and navigation-related processes and instructions; camera instructions970 to facilitate camera-related processes and functions; magnetometer data972 andcalibration instructions974 to facilitate magnetometer calibration. Thememory950 may also store other software instructions (not shown), such as security instructions, web video instructions to facilitate web video-related processes and functions, and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, themedia processing instructions966 are divided into audio processing instructions and video processing instructions to facilitate audio processing-related processes and functions and video processing-related processes and functions, respectively. An activation record and International Mobile Equipment Identity (IMEI) or similar hardware identifier can also be stored inmemory950.Memory950 can includelocation instructions976 that can include location functions510,location monitoring program520, andtier manager530.
Each of the above identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules.Memory950 can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device may be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits.
Exemplary Operating EnvironmentFIG. 10 is a block diagram of exemplarynetwork operating environment1000 for the mobile devices ofFIGS. 1-9.Mobile devices1002aand1002bcan, for example, communicate over one or more wired and/orwireless networks1010 in data communication. For example, awireless network1012, e.g., a cellular network, can communicate with a wide area network (WAN)1014, such as the Internet, by use of agateway1016. Likewise, anaccess device1018, such as an802.11g wireless access device, can provide communication access to thewide area network1014.
In some implementations, both voice and data communications can be established overwireless network1012 and theaccess device1018. For example,mobile device1002acan place and receive phone calls (e.g., using voice over Internet Protocol (VoIP) protocols), send and receive e-mail messages (e.g., using Post Office Protocol 3 (POP3)), and retrieve electronic documents and/or streams, such as web pages, photographs, and videos, overwireless network1012,gateway1016, and wide area network1014 (e.g., using Transmission Control Protocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)). Likewise, in some implementations, themobile device1002bcan place and receive phone calls, send and receive e-mail messages, and retrieve electronic documents over theaccess device1018 and thewide area network1014. In some implementations,mobile device1002aor1002bcan be physically connected to theaccess device1018 using one or more cables and theaccess device1018 can be a personal computer. In this configuration,mobile device1002aor1002bcan be referred to as a “tethered” device. In some implementations,mobile device1002bcan communicate with one or more beacons1042 (e.g., BLE's) over a short range communication link, as described in reference toFIG. 4B.
Mobile devices1002aand1002bcan also establish communications by other means. For example,wireless device1002acan communicate with other wireless devices, e.g., othermobile devices1002aor1002b, cell phones, etc., over thewireless network1012. Likewise,mobile devices1002aand1002bcan establish peer-to-peer communications1020, e.g., a personal area network, by use of one or more communication subsystems, such as the Bluetooth™ communication devices. Other communication protocols and topologies can also be implemented.
Themobile device1002aor1002bcan, for example, communicate with one ormore services1030 and1040 over the one or more wired and/or wireless networks. For example, one or morelocation registration services1030 can be used to associate application programs with geographic regions. The application programs that have been associated with one or more geographic regions can be provided for download tomobile devices1002aand1002b.
Location-gateway mapping service1040 can determine one or more identifiers of wireless access gateways associated with a particular geographic region, and provide the one or more identifiers tomobile devices1002aand1002bfor registration in association with a baseband subsystem.
Beacon network services1041 can provide location based services associated with a beacon network, as described in reference toFIG. 4B.
Mobile device1002aor1002bcan also access other data and content over the one or more wired and/or wireless networks. For example, content publishers, such as news sites, Rally Simple Syndication (RSS) feeds, web sites, blogs, social networking sites, developer networks, etc., can be accessed bymobile device1002aor1002b. Such access can be provided by invocation of a web browsing function or application (e.g., a browser) in response to a user touching, for example, a Web object.
A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications can be made without departing from the spirit and scope of the invention. For example, cells are represented as hexagons in the figures. The actual shape of a cell can vary.