Coalescing geo-fence events.
Abstract
A device location is determined, and the location of an area of interest that is a geographic area referred to as a geo-fence is identified. Multiple geo-fences can be identified by the device, and different geo-fences can be associated with different programs on the device. An operating system of the device implements multiple different periods of operation for the device, including a conservation period during which certain programs are not typically scheduled to run, and an execution period during which such programs are typically scheduled to run. A system identifies geo-fence events, which occur when the device enters or exits the geo-fence. The system maintains a record of the geo-fence events for each of multiple geo-fences, and provides to a program selected ones of those geo-fence events at a time when the program is scheduled to run on the device during an execution period of the operating system.

Term
7 yearsleft in the term
Expires 19 September 2033.
- Priority
- Filed
- Granted
- Today
- Expires
20 claims: 3 independent, 17 dependent
- 1CLAIMS REIVINDICACIONES 1.- A method that includes:1.- Un método que comprende: detect when one or more geo-fence events occur for a computing device during a conservation period of an operating system during which certain programs are not scheduled to run;detectar cuando uno o más eventos de geo-cerca ocurren para un dispositivo de cómputo durante un período de conservación de un sistema operativo durante el cual ciertos programas no se programan para correr;keep track of geo-fence events for each of multiple geo-fences;mantener un registro de eventos de geo-cerca para cada una de múltiples geo-cercas;collect geo-fence events for each of the multiple geo-fences together for each of the certain programs;recolectar eventos de geo-cercas para cada una de las múltiples geo-cercas juntos para cada uno de los ciertos programas;esperar hasta que un programa asociado con al menos una de las múltiples geo-cercas esté programado para correr durante un período de ejecución del sistema operativo;wait until a program associated with at least one of the multiple geo-fences is scheduled to run during an operating system execution period;proporcionar al programa, después de la espera, los eventos de geo-cerca recolectados para el programa;y eliminar del registro de eventos de geo-cerca un evento de geo-cerca particular con base en un periodo de tiempo que expira. provide the program, after waiting, the geo-fence events collected for the program;and remove from the geo-fence event log a particular geo-fence event based on a period of time that expires.
- 1111, - A computing device comprising:11, - Un dispositivo de cómputo que comprende: one or more processors;uno o más procesadores;a data storage for storing geo-fence data for multiple geo-fences, the geo-fence data for a geo-fence includes an indication of a program associated with the geo-fence;and one or more computer readable storage devices that cause the one or more processors to implement: un almacenamiento de datos para almacenar datos de geocerca para múltiples geo-cercas, los datos de geo-cerca para una geo-cerca incluyen una indicación de un programa asociado con la geo-cerca;y uno o más dispositivos de almacenamiento legibles por computadora que provocan que el uno o más procesadores puedan implementar: a geo-fence event detection module to detect when one or more geo-fence events occur for multiple geo-fences, including when one or more geo-fence events occur during a conservation period of an operating system during which certain programs are not programmed to run;un módulo de detección de evento de geo-cerca para detectar cuando uno o más eventos de geo-cerca ocurren para las múltiples geo-cercas, incluyendo cuando uno o más eventos de geo-cerca ocurren durante un período de conservación de un sistema operativo durante el cual ciertos programas no se programan para correr;a geo-fence event storage module to keep a record of the one or more geo-fence events detected;un módulo de almacenamiento de evento de geo-cerca para mantener un registro de los uno o más eventos de geo-cerca detectados;and a geo-fence event report module that is expected to provide, to a program subsequently scheduled to run during an operating system execution period, an indication of one or more geo-fence events included in the one or more more geo-fence events detected until the operating system enters the execution period. y un módulo de reporte de evento de geo-cerca que espera para proporcionar, a un programa programado subsecuentemente para correr durante un periodo de ejecución del sistema operativo, una indicación de uno o más eventos de geo-cerca incluidos en el registro del uno o más eventos de geo-cerca detectados hasta que el sistema operativo entra el periodo de ejecución.
- 20- Un método que comprende:twenty. - A method comprising: detect when one or more geo-fence events occur for a computing device during a conservation period of an operating system during which certain programs are not programmed to run;detectar cuando uno o más eventos de geo-cerca ocurren para un dispositivo de cómputo durante un periodo de conservación de un sistema operativo durante el cual ciertos programas no son programados para correr;keep track of geo-fence events for each of the multiple geo-fences, including keeping a record of multiple geo-fence exit events and multiple geo-fence entry events for each of the multiple geo-fences , the geo-fence event log includes for each geo-fence event an identification of the geo-fence event and a record date of when the geo-fence event was detected;mantener un registro de eventos de geo-cerca para cada una de las múltiples geo-cercas, incluyendo mantener un registro de múltiples eventos de salida de geo-cerca y múltiples eventos de entrada de geo-cerca para cada una de las múltiples geo-cercas, el registro de eventos de geo-cerca incluye para cada evento de geo-cerca una identificación del evento de geo-cerca y un fecha de registro de cuando el evento de geo-cerca fue detectado;and provide, to a program associated with two or more of the multiple geo-fences when it is a program it is programmed to run during an operating system execution period, an indication of a geo-fence exit event and an entry event Most recent geo-fence for each of the two or more of the multiple geo-fences in the geo-fence event log that respond to the program running during the operating system's execution period. y proporcionar, a un programa asociado con dos o más de las múltiples geo-cercas cuando es programa está programado para correr durante un periodo de ejecución del sistema operativo, una indicación de un evento de salida de geo-cerca y un evento de entrada de geo-cerca más reciente para cada una de las dos o más de las múltiples geo-cercas del registro de eventos de geo-cerca que responden al programa corriendo durante el periodo de ejecución del sistema operativo.
Independent claims3
80 paragraphs in 3 sections, as filed
As computing technology has advanced, increasingly powerful mobile devices become available. For example, smartphones have become common. The mobility of such devices has resulted in different types of functionality that is developed, such as location-based functionality where certain actions are taken by the device based on the location of the device. Although this functionality has many benefits, it does not come without problems. One such problem is that a program may attempt to be notified of the location of the device more frequently than programs that are expected to be notified. This can result in device controls regarding the frequency with which the programs to be run are expected to be avoided, leading to increased energy use and reduced battery life in the device and thus an experience. of poor user when using the device.
BRIEF DESCRIPTION OF THE INVENTION
This Brief Description is provided to introduce a selection of concepts in a simplified form which is also described below in the detailed description. This Brief Description is not intended to identify key characteristics or essential characteristics of the claimed issue, nor is it intended to limit the scope of the claimed issue.
According to one or more aspects, the occurrence of one or more geo-fence events is detected for a computing device during a conversation period of an operating system during which certain running programs are not programmed. A geo-fence event log is maintained for each of multiple geofences. When a program associated with at least one of the multiple geo-fences is scheduled to run during a period of execution of the operating system, an indication of one or more geo-fence events for at least one of the multiple geofences of the log of Geo-fence events are provided to the program.
BRIEF DESCRIPTION OF THE DRAWINGS
The same numbers are used throughout the drawings to refer to similar characteristics.
Figure 1 shows an illustrative system in which the geo-fence fusion events discussed here can be used.
Figure 2 is a block diagram showing an illustrative system that implements fusion geo-fence events according to one or more modalities.
Figure 3 shows an illustrative user interface that can be presented to a user by allowing the user to select whether locations are to be determined according to one or more modalities.
Figure 4 illustrates an example of different periods of operation according to one or more modalities.
Figure 5 is a flow chart illustrating an illustrative process for merging geo-fence events according to one or more modalities.
Figure 6 shows an illustrative system that includes an illustrative computing device that is representative of one or more systems and / or devices that can implement the techniques described herein.
DETAILED DESCRIPTION
The fusion of geo-fence events is described here. The location of the computing device is determined, and the location of an area of interest is identified. The area of interest is a geographical area that will be indicated as a geo-fence. Multiple geo-fences can be identified by the computing device, and different geo-fences can be associated with different programs in the computing device. An operating system of the computing device implements multiple different periods of operation for the computing device, including a retention period during which certain programs are not typically scheduled to run, and an execution period during which such programs are typically programmed to run. A computing device system identifies geo-fence events, which occur when the computing device enters or leaves the geo-fence. The system keeps a record of geo-fence events for each of each of multiple geo-fences, and a program of those selected geo-fence events is provided (for example, geo-fence events for entry and most recent departure from each geo-fence associated with the program) at a time when the program is programmed to run the computing device during an operating system execution period.
Figure 1 shows an illustrative system 100 in which fusion geo-fence events discussed herein can be used here. System 100 includes a computing device 102, which can be any of a variety of device types, although typically it is a mobile device. For example, the computing device 102 may be a smartphone or other wireless telephone, a laptop or netbook computer, a tablet or notepad computer, a laptop, a mobile station, an entertainment device, a playback device of audio and / or video, a game console, an automotive computer, and so on. The computing device 102 is typically referred to as being a mobile device because the device 102 is designed or intended to move to multiple different locations (for example, taken by a user with it as it goes to different locations).
The location of the computing device 102 can be determined using any of a variety of different techniques, such as wireless network triangulation (eg, Wi-Fi), cellular positioning, global navigation satellite system (GNSS) positioning, positioning of network address (for example, Internet Protocol (IP) address), and so on as discussed in more detail below. Different location determination techniques may have different precision errors or associated uncertainties. For example, a location determination technique can be as accurate as 10 meters (m) or 10 kilometers (km). The exact position of the computing device 102 in that way is not identified, but is illustrated as an area 104 of the computing device 102. Area 104 represents the uncertainty in the location or determined position of the computing device 102, although the computing device is determined to be in a particular location or position (for example, approximately the center of the area 104), the computing device 102 It can really be anywhere within area 104.
The 100 system also illustrates multiple geo-fences 112, 114, 116, and 118. Each geo-fence 112-118 can be any of a variety of different places of interest to the computing device.
102, to the user of the computing device 102, to a program running in the computing device 102, and so on. For example, a 112-118 geo-fence may be the user's home, the user's workplace, restaurants or businesses that can be visited by the user, educational facilities, public services (e.g., hospitals or libraries), geographical locations (for example, cities or state), and so on.
The location of geo-fences 112-118 is maintained in or otherwise accessible to the computing device 102. It should be noted that different users of the computing device 102 may optionally have different geo-fences maintained or accessed. The computing device 102 is mobile and can enter and exit geo-fences 112-118. At any given time, the computing device 102 may be within one of the geo-fences 112118, or within any geo-fence. If it is determined that the computing device 102 is within the area that encompasses a particular geo-fence, then the computing device 102 is referred to as being in or within that particular geo-fence. However, if the computing device 102 is determined not to be within the area that encompasses a particular geo-fence, then the computing device 102 is referred to as being outside or not within that particular geo-fence. Situations may also arise in which two or more geo-fences overlap, in which case the computing device 102 may be inside two or more geo-fences 112-118 at the same time. It should be noted that the illustration in Figure 1 is not to scale, and that 112118 geo-fences can be, and are typically, significantly larger in size than the computing device 102.
In the illustrated example, area 104 does not intercept any of the geo-fences 112-118, and thus the computing device 102 is outside each of the geo-fences 112-118. However, if the area 104 were to at least partially overlap one of the geo-fences 112-118, then the computing device 102 is possibly within the geo-fence that overlaps. If the computing device 102 is determined to be within the geo-fence or outside the geo-fence in such situations it can be determined in various ways, such as based on the presence of any overlap, how much the geo-fences overlap, and so on. successively.
Figure 2 is a block diagram illustrating an illustrative system 200 that implements fusion geo-fence events according to one or more modalities. The system 200 may be implemented by an individual device such as the computing device 102 of Figure 1, or alternatively multiple devices such as the computing device 102 and one or more server computers accessed through a network (for example, a cell phone or other wireless phone network, Internet, etc.). System 200 includes one or more location determination modules 202, a geo-fence determination module 204, a geo-about event detection module 206, a geo-fence activation module
208, and a data storage 210.
The data storage 210 maintains several data used here by the techniques discussed herein. Data storage 210 may be implemented using any of a variety of different storage devices, such as system memory (e.g., random access memory (RAM)), flash memory or other solid state memory, magnetic disks, optical disks. , and so on. The data maintained in the data storage 210 identifies multiple geo-fences, including geo-fence data 220 for each of the multiple geo-fences. Geo-fence data 220 can be obtained from various resources, such as a distributor or reseller of data storage 210 that stores data in data storage 210 of a program running in a computing device that implements system 200 , of another device or service, and so on. Geo-fence data for a geo-fence describes the limit of the geo-fence, as well as the criteria that will be met in order for the geo-fence to be activated.
The criteria to be met may refer to a device that enters the geo-fence, which leaves the geo-fence, that remains within the geo-fence for a particular amount of time (for example, at least an amount of threshold time, not greater than an amount of threshold time, etc.), a period of time for the geo-fence (for example, a start time and end time, a start time and a duration), combination of them, and so on. Several additional criteria may also be optionally included, such as system status to be satisfied. For example, the criteria may include if the display of the computing device is turned on or off, if the computing device has network connectivity (for example, Internet connectivity), a power status of the computing device (for example, if the computing device has at least a threshold life amount of, battery remaining), and so on.
One or more actions taken in response to the geo-fence that is activated (the criteria are met) can also be included as part of the geo-fence data. Any of a variety of actions can be taken when a geo-fence is activated, such as a particular program that is notified, the particular content that is presented or otherwise reproduced by the computing device, the geo-fence data that 210 data combinations, combinations thereof, and so on are removed. Multiple different actions can be taken based on the way in which the geo-fence is activated, such as an action taken in response to the device entering the geo-fence, and another action, taken in response to the device leaving the geo-fence. close.
The geo-fence boundary can be specified in any of a variety of different ways. For example, the geo-fence can be specified as a position (for example, latitude and longitude coordinates) and a radius, a group of positions (for example, latitude and longitude coordinates of geo-fence corners), as a vector series, and so on. In the discussions here, reference is made to geo-fences that are approximately circular in shape. However, it should be noted that geo-fences can be any of a variety of regular geometric shapes (e.g., triangles, rectangles, octagons, and so on), other geometric shapes (e.g., free or object shapes), and so on.
The data storage 210 is illustrated in Figure 2 as being part of the system 200. It should be noted that the data maintained in the data storage 210 can be obtained from programs 230 (for example, from programs 230 as it is loaded into a computing device that triple the system 200). Alternatively, one or more of the programmed 230 may include data storage that is used in addition to, or instead of, the data storage 210.
Geo-fences can be used in a variety of different ways. For example, a geo-fence and action to be taken can alert a user of a computing device that implements or is not part of system 200 when they are approaching a bus stop, to give the user a coupon when They enter a mall or store, to notify a parent that their child has left school or entered their home, to present weather information for a current location when the user travels to a different city, and so on.
The data maintained in the data storage 210 may also include additional data used with the techniques discussed herein. For example, data storage 210 may include a geo-fence event log 222, which is geo-fence events detected by the geo-fence event detection module 206 as discussed in more detail below.
The location determination modules 202 include one or more modules that determine the location of the computing device 102. In the illustrated example, the location determination modules 202 include a Wi-F module 212, GNSS module 214, a location module. network address 216, and a cellular module 218. However, it should be noted that these modules 212-218 are examples where the location determination modules 202 do not need to include each of the modules 212-218 and / or that the location determination modules 202 may include one or more Additional modules that determine the location of the computing device 102 in different ways. For example, location determination modules may include MMS (microelectromechanical systems), cameras, microphones, and so on.
Wi-Fi module 212 uses Wi-Fi signals, such as triangulation of Wi-Fi signals, to determine the location of computing device 102. Wi-Fi module 212 can receive signals from various wireless access points, including an identifier of a particular wireless access point and / or a particular wireless network from which a signal is received. For example, a wireless access point may send a media data control (MAC) address of the wireless access point, a basic service set identifier (BSSID) of a wireless network supported by the wireless access point, and so on. Wi-Fi module 212 can also measure a force (for example, values of received signal strength indicator (RSSI)) of these received signals. It should be noted that the Wi-Fi module 212 can, at any given time for any given position of the computing device, receive signals from multiple wireless access points. The Wi-Fi module 212 can maintain or otherwise access a register of wireless access points, signal strengths, and corresponding locations to determine the location of the computing device at any particular time given the wireless access points of which signals and the strength of those signals are received in the given particular time. Alternatively, Wi-Fi module 212 may provide an indication of the wireless access points from which signals are received and the strength of those signals at a particular given time in a remote service (for example, accessed through any of a variety of different types of networks) that determines and returns to the Wi-Fi module 212 an indication of the location of the computing device at that particular given time.
The GNSS module 214 uses GNSS positioning to determine the location of the computing device 102, determining a location of the computing device based on a particular number of satellites (for example, four or more satellites) of which the GNSS module 214 can Receive signals and otherwise communicate. The GNSS module 214 can implement the functionality of GNSS using a variety of different technologies, including but not limited to global positioning system (GPS), the global navigation satellite system (GLONASS), the BeiDou navigation system (or Compass ), Galileo's positioning system, combinations thereof, and so on. The GNSS 214 module operates in any of a variety of public and / or proprietary ways to determine, given one or more satellites from which the GNSS 214 module can receive signals or otherwise communicate at any particular given time, the location of the device of computation in the particular given time.
The network address module 216 uses network address positioning to determine the location of the computing device 102. The network address used can be any of a variety of network addresses, such as an IP address of the computing device. The network address module 216 may maintain or otherwise access a register of IP addresses or corresponding address ranges and locations to determine the location of the computing device at any given particular time the IP address assigned to the computing device in the particular given time. Alternatively, the network address module 216 can provide an indication of the IP address in the computing device at a particular given time to a remote service (for example, accessed through any of a variety of different types of networks) which determines and returns to the network address module 216 an indication of the location of the computing device at that particular given time.
The cellular module 218 uses cellular positioning to determine the location of the computing device 102. The cellular module 218 can receive signals from several cellular transceivers, including an identifier of a particular cellular transceiver (for example, a cellular tower or transceiver identifier) ) from which a signal is received. The cellular module 218 can also measure a force of these received signals. It should be noted that the cellular module 218 can, at any given time for any given reason of the computing device, receive signals from multiple cell transceivers. The cellular module 218 can maintain or otherwise access a register of cellular transceiver, signal forces, and corresponding locations to determine the location of the computing device at any particular time given the cellular transceivers from which signals are received and the strength of those signals in the particular given time. Alternatively, the cellular module 218 can provide an indication of the transceivers from which signals are received and the strength of those signals at a particular given time to a remote service (for example, accessed through any of a variety of different types of networks) which determines and returns to the cellular module 218 an indication of the location of the computing device at that particular given time. Additionally or alternatively, the cellular module 218 can verify changes of state at low energy and provide notifications (for example, to the geo-fence event detection module 206), allowing detections of movement at low energy without requiring continuous probing.
The locations determined by the location determination modules 202 are typically latitude and longitude coordinates, although the location may alternatively be specified in other ways. Each of the location determination modules 202 has an associated uncertainty in the location it determines, also referred to as a precision error or estimated accuracy error of the location. The amount of this uncertainty can be determined in several ways, such as being represented by the same location determination module, which is pre-configured in or otherwise accessible to other modules of the system 200 (for example, the event detection module of geo-fence 206), and so on. The uncertainty results in an area of position uncertainty for the location determined by a location determination module, the area of position uncertainty that is an area within which the computing device 102 may actually be for the given location . In one or more embodiments, the uncertainty area position is an approximately circular area where the location determined by the location determining module that is approximately the center of the circular area, and the radius of the approximately circular area is an error radius. determined as the uncertainty for the location determination module. Alternatively, the area of position uncertainty can be described using several other regular or other geometric shapes. Thus, an area of position uncertainty for a location determination module can be a spatial error distribution function. An approximation of the spatial error extrusion function may be a flat distribution over an area, although several other approximations or descriptions of the spatial error distribution function may alternatively be used.
In one or more modes, a location is determined by the location determination modules 202 only after receiving content to do so. This user consent may be an inclusion consent, while the user takes an affirmative action to request that the location be determined by the location determination modules 202 before any such location is determined. Alternatively, this user consent may be an inclusion consent, where the user takes an affirmative action to request that the location not be determined by the location determination modules 202. If the user does not choose to exclude himself from determining the location, then It is a consent implied by the user to determine its location. In addition, it should be noted that the location determined by the location determination modules 202 can be maintained in a computing device that receives the determined location (for example, the computing device 102 of Figure 1) and does not need to communicate to other devices or services
Alternatively, a user consent can be granted for specific programs and revoked for other programs. In this case, the location information will be determined or only when the user has consented to at least one program for which geo-fence tracking is used. The location information is used to determine the entry and / or exit only of those geo-fences that belong to the consented programs. The remaining geo-fences of unapproved programs are not tracked.
Figure 3 illustrates an illustrative user interface that can be presented to a user to allow a user to select whether locations are to be determined according to one or more modalities. A location control window 300 is presented including a description 302 that explains to the user why the location information is being determined. A link 304 to a privacy statement is also presented. If the user selects link 304, a privacy statement of system 200 is presented, which explains to the user why the user information is kept confidential.
Additionally, the user is able to select a radio button 306 for inclusion in the determination of location information, or radio button 308 for exclusion of the determination of location information. Once a radio button 306 or 308 is selected, the user can select an "accept" 310 button to have the selection saved. It will be appreciated that radio buttons and an "accept" button are only examples of user interfaces that will be presented to a user for inclusion or exclusion of the location information determination, and that a variety of others may alternatively be used. Conventional user interface techniques. The system 200 of Figure 2 then proceeds to determine the location of the computing device, and not to determine the location of the computing device, according to the user selection.
Returning to Figure 2, the geo-fence determination module 204 determines one or more of the geo-fences identified in the data storage 210 for which a determination is made as to how much if the geo-fence is activated. Data for numerous different geo-fences can be maintained in the data storage 210, and one or more of those geo-fences are selected by the geo-fence determination module 204. The geo-fence determination module 204 can take this determination in a variety of different ways, such as based on a current distance between the geo-fences and the computing device, based on sizes of (areas covered by) the geo- fences, based on which the geo-fence is more (or almost more) strict than discussed in more detail below, and so on. The one or more geo-fences that are determined by module 204 are those considered most likely to enter or exit based on several criteria, such as the current location of the computing device, and those one or more geo-fences may be in focus. of module 204 until the criteria change. However, it should be noted that the geo-fence determination module 204 can determine whether a geo-fence is activated for any of the geo-fences in the data storage 210.
The geo-fence event detection module 206 obtains a current location of the computing device at regular or irregular intervals, and detects if a geo-fence event occurs. These intervals can be dynamically selected based on current conditions (for example, approximate distance to a nearest geo-fence, energy budget for the computing device, an estimated movement speed of the computing device, and so on). A geo-fence event refers to the device that enters the geo-fence, leaves the geo-fence, or stays in the geo-fence for a particular amount of time (for example, being in the geo-fence and without leaving the geofence). The geo-fence event detection module 206 can assess the uncertainty associated with the location determined in relation to the size of the geo-fence in order to determine whether the computing device is within the geo-fence or outside the geo-fence. geocerca. Alternatively, the geofence event detection module 206 may use the location determined by a location determination module to determine whether the computing device is within the geo-fence or outside the geo-fence without considering uncertainty associated with the determined location The geo-fence event detection module 206 can also track if the computing device is in or out of the geo-fence over time, and in that way it knows if the computing device has moved from within the geo-fence out of the geo-fence, if the computing device has moved out of the geo-fence into the geo-fence, an amount of time that the computing device has been inside the geo-fence, and so on successively.
The geo-fence detection module 206 includes a geo-fence event storage module 224, and in response to a geo-fence event that is detected by module 206, the geo-fence storage module 224 stores the geo-fence event detected in the geo-fence event log 222. The geo-fence event record 222 can be implemented in a variety of different ways, such as a database, a list of geo-fence events by geo-fence, and so on. The storage of the detected geo-fence event refers to storing data that identifies the geo-fence event and optionally various aspects of the geo-fence event. The data stored for the detected geo-fence event may include an indication of whether the geo-fence event is entering a geo-fence or leaving a geo-fence, an indication of (for example, identifier of) the geo-fence entered or output, a duration that the computing device was in (or has been in) a geo-fence, a program associated with the geo-fence (for example, a program to be notified to the geo-fence event), a registration date (for example, date and / or time) and when the geo-fence event was detected, and so on. Stored data can also identify the geo-fence for which the geo-fence event was detected, geo-fence events can be stored in a way in which the geo-fence identification for which the event is detected Geo-fence is inherent (for example, geo-fence events can be added to a geo-fence list, each geo-fence that has a different list). The duration during which the computing device was or has been in a geo-fence can be determined in different ways, such as by detection module of the geo-fence event 206 that verifies how much has happened since a geo-fence was entered , when determining the time that has elapsed since the last geo-fence event entering the geo-fence was detected (or the time that has elapsed between the detection of the most recent geo-fence event that leaves the geo-fence or the geo-fence event that enters the geo-fence was detected), and so on.
In one or more modes, each geo-fence event detected by the geo-fence event detection module 206 is stored in the data storage 210, for example in an ordered list classified by the time of occurrence of the geo event. -close. The geo-fence event record 222 may include geo-fence events for different durations, such as the past 24 hours, in the last week, and so on. Alternatively, the geo-fence event record 222 may include, for each geo-fence event, the most recent geo-fence event that leaves the geo-fence and the most recent geo-fence event that enters the geo-fence Each time a new geo-fence event is detected for a geo-fence, the previously registered geo-fence event of the same type (leaving or entering the geo-fence) can be replaced by the newly detected geo-fence event . Thus, in some modalities only the most recent geo-fence event that leaves the geo-fence and the most recent geo-fence event that enters the geo-fence for a geo-fence are recorded, while in other modalities, multiple Income entering and leaving geo-fence is recorded for a geo-fence (for example, all events that enter or leave the geo-fence are recorded). Geo-fence events recorded for a geo-fence can also be removed from data storage 210 in response to various events, such as the application that provided the geo-fence data for the geo-fence that is installed or otherwise is removed from system 200).
The geo-fence activation module 208 analyzes the criteria associated with a geo-fence and determines whether the criteria are met. This determination is made based at least in part on the occurrence of one or more geo-fence events as determined by the geo-fence event detection module 206. In response to the criteria that are met, module 208 determines that the geo-fence is activated and takes appropriate action. The action taken can be associated with geo-fence data for the activated geo-fence stored in the data storage 210, or it can be determined in other ways such as being preconfigured in the geo-fence activation module 208, which is obtained from another module or device, and so on.
In one or more modes, the action taken by the geo-fence activation module 208 in response to the geo-fence that is activated is to modify one or more programs 230 that the geo-fence was activated. One or more programs 230 may include several different types of programs, such as applications, modules or operating system components, and so on. The one or more programs 230 to be notified (also referred to as the programs 230 associated with the activated geo-fence) can be identified in different ways, such as being configured to the geo-fence activation module 208, which is identified as part of the geo-fence data for the geo-fence in the data storage 210, which is obtained from another module or service, and so on. A program 230 can be notified of the geo-near event of what happened, as well as optionally additional information (for example, that the computing device was within a geo-fence for the last amount of threshold time). Program 230 can then take the action it wishes based on the geo-fence that is activated.
The geo-fence activation module 208 includes a geo-fence event report module 226 that handles notification programs that a geo-fence was activated. The geo-fence event report module 226 selects one or more geo-fence events from the geo-fence event record 222, such as for each geo-fence associated with a program 230 that the most recent geo-fence exit event ( the most recent geo-fence event that leaves the geo-fence) and the most recent geo-fence entry event (the most recent geo-fence event that is entering the geo-fence). The geo-fence event report module 226 merges geo-fence events for each geo-fence associated with a program 230, and provides program 230 with a collection of geo-fence events for geo-fences associated with program 230 .
In one or more modes, a geo-fence is activated in response to a geo-fence event (entering or exiting the geo-fence), and the geo-fence event report module 226 notifies the program of That geo-fence event. Alternatively, the geo-fence event report module 226 may take into account other criteria associated with the geo-fence when determining whether the geo-fence event program is notified, and notify the program only if such additional criteria are met. . For example, if the criterion indicates that Internet connectivity is desired but no Internet access is currently available, then the geo-fence report module 226 would notify the geo-fence event program. This other criterion can be stored as part of the geo-fence event record 222 and / or geo-fence data 220.
In addition, the geo-fence event report module 226 can take into account any criteria associated with the same program. For example, if the criterion indicates that the program will be notified as not running during certain times of the day, then the geo-fence report module 226 would not notify the geo-fence event program if this happens during certain times of the day.
Additionally, situations may arise where the geo-fence event report module 226 does not notify the program 230 about certain geo-fence events, such as the utomatic expiration of a geo-fence. For example, if a geo-fence is valid only for a specific period of time (for example, a daily offer for a store that closes at 9:00 pm), then the geo-fence can be automatically removed from system 200 once that expires, and program 230 associated with the geo-fence can be notified of this removal event.
In one or more embodiments, program 230 that is associated with a geo-fence that is a program of the computing device that implements system 200. An operating system of the computing system that implements system 200 implements multiple different operating periods for The computing device. These multiple different periods of operation include a conservation period in which the computing device is operating in an energy saving mode. During the conservation period, certain programs (such as applications other than operating system programs) are not typically programmed to run and several other energy saving techniques can be employed by the operating system to reduce the energy use of the computing device. The multiple different operating periods also include a period in which the computation system is operating an execution mode. During the execution period, programs are not typically scheduled during the conservation period that is scheduled to run through an operating system programming mechanism. The programming mechanism can take into account several different factors to determine which program will run and how long the program will run, how recently the program was last run, for how long the program was last run which was programmed to run the program (or over some past time), other programs to be programmed, available power (for example, remaining battery life) of the computing device, If a user request to run the program is received, and so on. It should be noted that the programming mechanism operates independently of the system
200, the programming mechanism can take into account whether geo-fence events have been detected for the program when determining whether the program is programmed, but the programming mechanism does not need (and typically does not) program a running program simply in response to a geo-fence event associated with the program that is detected.
Figure 4 illustrates an example of different periods of operation according to one or more modalities. A timeline 4 02 is included which includes dispersed execution periods 404 and conservation periods 406. During execution periods 404, the operating system is operating in the execution mode, and during conservation periods 406, the system Operating is operating in power saving mode. Although it is illustrated as obtaining the same length of time, it should be noted that different execution periods 404 may have different durations and that different conservation periods 406 may have different durations. These durations of the execution periods 404 and / or storage period 406 may vary with the type during the operation of the computing device.
Returning to Figure 2, the geo-fence event report module 226 merges geo-fence events for each geo-fence associated with a program 230, and provides program 230 with a collection of geo-fence events for geo- Fences associated with program 230 with program 230 are subsequently programmed to run. The collection of geo-fence events (for example, stored chronologically starting with the most recent event) can be provided to program 230 the next time program 230 is scheduled to run, or alternatively a subsequent time. The times when the running program 230 is programmed can be controlled by the operating system programming mechanism, and may be the next execution period for some subsequent execution period. It should be noted that during both execution and conservation periods, the geo-fence event detection module 206 operates to detect geo-fence events and the geo-fence event storage module 2 24 stores the events geo-fence detected in the geo-fence event log 222. Thus, even if a program 230 to be notified of the detected geo-fence event is not running, or is not programmed to run (or the operating system is in the conservation period), geo-fence events for geo-fences associated with the program are still being detected and recorded, and can be provided to program 230 when program 230 is subsequently executed. Once the geo-fence events for program 230 are received, they can subsequently be removed from data storage 210.
Although it is illustrated as separate modules from the location determination modules 202, it should be noted that one or more of the modules 204-208 may alternatively be implemented at least in part in one of the location determination modules 202. For example, at least part of one or more of the modules 204
208 they can be implemented in hardware components of the GNSS 214 module or the Wi-Fi 212 module.
Figure 5 is a flow chart showing an illustrative process 500 for merging geo-fence events according to one or more modalities. The process 500 is carried out by a system, such as the system 200 of Figure 2, and can be implemented in software, firmware, hardware, or combinations of the same. The process 500 is shown as a set of acts and is not limited to the order shown to perform the operations of the various acts. Process 500 is an illustrative process to merge geo-fence events; Additional discussions of geo-fence fusion events are included here with reference to different figures.
In process 500, occurrences of geofence events are detected for a computing device (act 502). The occurrence of a geo-fence event is based on the location of the computing device as determined by one or more of the location determination modules 202 of in Figure 2, and the locations of the various geo-fences are identified. in geo-fence data in data storage 210.
A record of the detected geo-fence events is maintained (act 504). The record of detected geo-fence events that are maintained may include various information that identifies the geo-fence event and optionally various aspects of the geo-fence event as discussed above.
An indication of one or more geo-fence events detected for at least one geo-fence associated with a program is provided to the program when the program is executed (act 506), and the program can then perform several operations based on the geo- near indicated as you want the program. An indication of one or more geo-fence events can take several forms, such as the information that identifies the geo-fence event and various aspects of the geo-fence event are maintained in the data storage 210 of Figure 2, an identifier of a location in the data storage 210 where the information identifying the geo-fence event is stored, and so on. The indication can be provided to the program using various mechanisms, such as the program requesting geo-events near system 200 of Figure 2, the system 200 that automatically notifies the program of geo-fence events (for example, when invoking an interface program application programming or other callback function), and so on.
The moment when the program is executed in act 506 is determined by an operating system programming mechanism as discussed above. It should be noted that the program can wait for it to be scheduled or not to run at all when geo-fence events are detected. Geo-fence events detected are provided to the program in act 506 (for example, immediately) if the program is already running, they are provided to the program in act 506 the next time the program runs. The next time the program runs it can be determined in different ways. For example, the program can run when activated by a user, or when determined by an operating system programming mechanism. If multiple cases of the same program run at the same time, only one case of the program can be provided with geo-fence events to avoid duplication of event supply and the duplicate action resulting from the program in reception of a particular geo-fence event . In one or more modalities, the one or more geo-fence events in the most recent geo-fence entry event and the most recent geo-fence exit event for each geo-fence associated with the program (or at least each geo-fence associated with the program for which geo-fence elements are detected).
In that way, geo-fence events for multiple geocercas associated with a program are merged and provide the program as an ordered collection of geo-fence events in act 506. In addition, by providing geo-fence events to the program When the program is run based on the operating system programming mechanism, the proportion of geo-fence events to the program is harmonized with the operating system programming mechanism. No mechanisms are used to provide geo-fence events to the program separate from the programming mechanism, preventing the programming mechanism from being avoided and preventing conservation periods from being interrupted due to detected geo-fence events.
The techniques discussed in this way support the use of geo-fences in a way that conserves energy and prevents abuse by various programs. By merging geo-fence events and storing geo-fence events with the operating system's programming mechanism, the operating system's programming mechanism cannot be edited by a program that has numerous geo-fences that are activated. The techniques also provide a more recent geo-fence entry and geo-fence exit event to a program, providing current geographically relevant information to the program.
Although the particular functionality is discussed here with reference to particular modules, it should be noted that the functionality of individual modules discussed herein can be separated into multiple modules, and / or at least some functionality of multiple modules can be combined into an individual module. In addition, it should be noted that a particular module discussed here as performing an action includes that same particular module that performs the action, or alternatively that particular module that invokes or otherwise accesses another component or module that performs the action (or performs the action in conjunction with that particular module). Thus, a particular module that performs a particular action includes that particular module that performs the action and / or another module invoked or otherwise accessed by that particular module that performs the action.
Figure 6 shows an illustrative system generally in 600 that includes an illustrative computing device 602 that is representative of one or more systems and / or devices that can implement the various techniques described herein. The computing device 602 may be, for example, a service provider server, a device associated with a client (for example, a client device), a chip system, and / or other suitable computing device or system of calculation.
Illustrative computing device 602 as illustrated includes a processing system 604, one or more computer-readable media 606, and one or more I / O interfaces 608 that are communicatively coupled to each other. Although not shown, the computing device 602 can also include a common system driver or other data and order transfer system that couples the various components together. A common system conductor may include any or combination of different common conductor structures, such as a common memory conductor or memory controller, a peripheral common conductor, a common universal serial conductor, and / or a common processor or conductor that use any of a variety of common driver architectures. A variety of other examples are also contemplated, such as control lines and data.
The processing system 604 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 604 is illustrated as including hardware elements 610 that can be configured as processors, functional blocks, and so on. This may include hardware implementations such as an application-specific integrated circuit or other logic device formed using one or more semiconductors. Hardware elements 610 are not limited by the materials from which they are formed or the processing mechanisms used here. For example, the processors can be composed of semiconductor (s) and / or transistors (for example, electronic integrated circuits (IC)). In such context, instructions executable by processor can be electronically executable instructions.
Computer readable media 606 are illustrated as including memory / storage 612. Memory / storage 612 represents memory / storage capacity associated with one or more computer readable media. Memory / storage 612 may include volatile media (such as random access memory (RAM)) and / or non-volatile media (such as read-only memory (ROM), flash memory, optical discs, magnetic discs, and so on) . The memory / storage 612 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., flash memory, a removable hard drive, an optical disk, and so on) . Computer readable media 606 can be configured in a variety of other ways as further described below.
The input / output interface (s) 608 are representative of functionality to allow a user to enter commands and information to the computing device 602, and also to allow information to be presented to the user and / or other components or devices using various input devices /exit. Examples of input devices include a keyboard, a cursor control device (for example, a mouse), a microphone (for example, for voice inputs), a scanner, contact functionality (for example, capacitive or other sensors that are configured to detect physical contact), a camera (for example, which can use visible or non-visible wavelengths such as infrared frequencies to detect motion that does not involve contact as a gesture), and so on. Examples of output devices include a presentation device (for example, a monitor or projector), speakers, printer, a network card, touch response device, and so on. In that way, the computing device 602 can be configured in a variety of ways as further described below to support user interaction.
The computing device 602 also includes a geo-fence system 614. The geo-fence system 614 provides several geo-fence functionalities, including geo-fence fusion, as discussed above. The geo-fence system 614 can implement, for example, the system 200 of Figure 2,
Several techniques can be described here in the general context of hardware, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so on that perform particular tasks or implement particular aspects data types. The terms "module", "functionality", and "component" as used herein represent software, firmware, hardware, or a combination thereof. The characteristics of the techniques described here are platform independent, which means that the techniques can be implemented on a variety of computing platforms that have a variety of processors.
An implementation of the modules and techniques described can be stored in or transmitted through some form of computer-readable media. Computer readable media may include a variety of media that can be accessed by computing device 602. By way of example, and not limitation, computer readable media may include "computer readable storage media" and "media computer readable signal ”.
"Computer readable storage media" refers to media and / or devices that allow persistent storage of information and / or storage that is tangible, in contrast to a simple signal transmission, carrier waves, or signals per se. In this way, computer readable storage media refers to media that does not carry a signal. Computer readable storage media include hardware such as volatile and nonvolatile, removable and non-removable media and / or storage devices implemented in a method or technology suitable for storing information such as computer readable instructions, data structures, modules of program, logic elements / circuits, or other data. Examples of computer readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile discs (DVD) or other optical storage, hard drives, cassettes. magnetic, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or suitable manufacturing article to store the desired information and that can be accessed by a computer.
"Computer readable signal media" refers to a signal carrier medium that is configured to transmit instructions to the hardware of the computing device 602, such as through a network. Typical signal means may represent computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. The signal means can also include any means of delivering information. The term "modulated data signal" means a signal that has one or more of its characteristics established or changed in such a way to encode information in the signal. By way of example, and not limitation, the communication means include cable media such as a cable network or direct cable connection, and wireless media such as acoustic, RF, infrared, or other wireless media.
As previously described, hardware elements 610 and computer readable media 606 are representative of instructions, modules, programmable device logic and / or fixed device logic implemented in a form of hardware that can be used in some modalities to implement the minus some aspects of the techniques described here. The hardware elements may include components of an integrated circuit or chip system, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware devices. In this context, a hardware element may operate with a processing device that performs program tasks defined by instructions, modules, and / or logic represented by the hardware element as well as a hardware device used to store instructions for execution, by For example, the computer readable storage media previously described.
Combinations of the above can also be used to implement various techniques and modules described herein. Accordingly, software, hardware, or program modules or other program modules may be implemented as one or more instructions and / or logic represented in some form of computer-readable media and / or by one or more hardware elements 610. The computing device 602 can be configured to implement particular instructions and / or functions corresponding to the software modules and / or hardware. Accordingly, the implementation of modules as a module that is executable by the computing device 602 as software can be achieved at least partially in hardware, for example, through the use of computer-readable storage media and / or hardware elements 610 of the processing system. The instructions and / or functions may be executable / operable by one or more articles of manufacture (for example, one or more computing devices 602 and / or processing systems 604) to implement techniques, modules, and examples described herein.
As illustrated in Figure 6, the illustrative system 600 allows for ubiquitous environments for a uniform user experience when running applications on a personal computer (PC), a mobile device, and / or other devices. Application services run substantially similar to these environments for a common user experience when switching from one device to the next using an application, playing a video game, watching a video, and so on.
In the illustrative system 600, multiple devices are interconnected through a central computing device. The central computing device can be local to multiple devices or remotely located from multiple devices. In one or more modes, the central computing device may be a cloud of one or more server computers that connect to multiple devices through a network, the Internet, or other data communication link.
In one or more modalities, this interconnection architecture allows functionality to be provided across multiple devices to provide a common and uniform experience to a user of the multiple devices. Each of the multiple devices may have different physical requirements and capabilities, and the central computing device uses a platform to allow the provision of an experience to the device that is both adopted to the device and even common to all devices. In one or more modalities, a class of target devices is created and experiences are adapted to the generic class of devices. A class of devices can be defined as physical characteristics, types of use, or other common characteristics of the devices.
In various implementations, the computing device 602 can assume a variety of different configurations, such as for computer 616 or mobile 618 applications. Each of these configurations includes devices that can have generally different constructions and capacities, and thus the device 602 can be configured according to one or more of the different device classes. For example, the computing device 602 can be implemented as the computer class 616 of a device that includes a personal computer, desktop computer, a multi-screen computer, laptop computer, netbook, and so on. The computing device 602 can also be implemented as the class of the mobile device 618 that includes mobile devices, such as mobile phone, portable music players, portable gaming device, a tablet computer, a portable device, a multi-screen computer, and so on.
The techniques described herein can be supported by these various configurations of the computing device 602 and are not limited to the specific examples of the techniques described herein. This functionality can also be implemented in whole or in part through the use of a distributed system, such as through a "cloud" 622 via a 624 platform as described below.
Cloud 622 includes and / or is representative of a 624 platform for 626 resources. Platform 626 abstracts underlying hardware functionality (for example, servers) and software resources from cloud 622. Resources 626 can include applications and / or data which can be used while running computer processing on servers that are far from the 602 computing device. The 626 resources also include services provided through the Internet and / or through a subscriber network, such as a cellular or Wi-Fi network.
Platform 624 can access resources and functions to connect computing device 602 with other computing devices. Platform 624 can also serve to abstract resource scaling to provide a level of scale corresponding to the demand found for resources 626 that are implemented through platform 624. Therefore, in an interconnected device mode, the implementation of functionality described herein can be distributed through the system 600. For example, the functionality can be implemented in part in the computing device 602 as well as through the platform 624 that abstracts the 622 cloud functionality.
Although the subject has been described in a specific language with structural characteristics and / or methodological acts, it will be understood that the subject defined in the appended claims is not necessarily limited to the specific characteristics or acts described above. Rather, the specific features and acts described above are described as illustrative ways to implement the claims.
Contents3
6 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6
22 members in 11 offices
Priority claims7
| Document | Office | Kind | Date |
|---|---|---|---|
| 13918818 | United States of America | – | |
| 201313918818 | United States of America | A | |
| 201313918818 | United States of America | A | |
| 2013060500 | United States of America | W | |
| 2013060500 | United States of America | W | |
| US201313918818 | – | – | – |
| WO2013US60500 | – | – | – |
Members22
| Document | Office | Kind | |
|---|---|---|---|
| CA2913507A1 | Canada | A1 | |
| US2014370911A1 | United States of America | A1 | |
| WO2014200523A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2013392103A1 | Australia | A1 | |
| KR20160019898A | Republic of Korea | A | |
| MX2015017178A | Mexico | A | |
| CN105432100A | China | A | |
| EP3008928A1 | European Patent Office (EPO) | A1 | |
| JP2016521946A | Japan | A | |
| RU2015153190A | Russian Federation | A | |
| BR112015030301A2 | Brazil | A2 | |
| US9820231B2 | United States of America | B2 | |
| RU2642348C2 | Russian Federation | C2 | |
| AU2013392103B2 | Australia | B2 | |
| US2018049132A1 | United States of America | A1 | |
| JP6352407B2 | Japan | B2 | |
| EP3008928B1 | European Patent Office (EPO) | B1 | |
| CN105432100B | China | B | |
| MX366290BThis record | Mexico | B | |
| KR102004022B1 | Republic of Korea | B1 | |
| CA2913507C | Canada | C | |
| BR112015030301B1 | Brazil | B1 |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Grant or registrationFG | FG | |
| Grant or registrationFG | FG |
Numbers
- Publication
- 366290
- Publication, DOCDB
- 366290
- Publication, EPODOC
- MX366290
- Application
- 20150017178
- Application, DOCDB
- 2015017178
- Application, EPODOC
- MX20150017178
Titles2
- Spanish
- FUSION DE EVENTOS DE GEO-CERCA.
- English
- EVENT FUSION OF GEO-NEAR.
Classification
- CPC, 4
- H04W52/0251
- H04W4/021
- Y02D30/70
- H04W4/022
- IPC, 3
- H04W4 02
- H04W52 02
- H04W4 021