IP Library Granted Patent US 9,820,231
Granted Patent B2
US 9,820,231 · App. 13/918,818 · Granted Nov 14, 2017

Coalescing geo-fence events

Inventors: Frank Gorgenyi (Bremerton, WA); Daniel Estrada Alva (Kirkland, WA); Fernando Gonzalez (Bellevue, WA); Sanjib Saha (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
H04W52/0251H04W4/021H04W4/022
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,820,231
App. No.
13/918,818
Granted
Nov 14, 2017
Kind
B2
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.

Claims (35)

1. A method comprising:

detecting 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;

maintaining a record of geo-fence events for each of multiple geo-fences;

collecting geo-fence events for each of the multiple geo-fences together for each of the certain programs;

waiting until a program associated with at least one of the multiple geo-fences is scheduled to run during an execution period of the operating system;

providing to the program, after the waiting, the collected geo-fence events for the program; and

deleting from the record of geo-fence events a particular geo-fence event based on a time period expiring.

2. A method as recited in claim 1 , the certain programs comprising applications other than operating system programs.

3. A method as recited in claim 1 , the providing comprising for each of the multiple geo-fences, providing only a most recent geo-fence exit event and/or a most recent geo-fence enter event.

4. A method as recited in claim 3 , the maintaining comprising maintaining a record of multiple geo-fence exit events and multiple geo-fence enter events for each of the multiple geo-fences.

5. A method as recited in claim 1 , the maintaining comprising recording the geo-fence events for a geo-fence regardless of whether the program associated with the geo-fence is running.

6. A method as recited in claim 1 , further comprising deleting one of the multiple geo-fences associated with the program without notifying the program to delete the one of the multiple geo-fences.

7. A method as recited in claim 1 , the record of geo-fence events including, for each geo-fence event, an identification of the geo-fence event and a timestamp of when the geo-fence event was detected.

8. A method as recited in claim 1 , the providing comprising providing collected geo-fence events to the program by coalescing one or more geo-fence events for multiple geo-fences associated with the program.

9. A method as recited in claim 1 , the providing comprising providing collected geo-fence events to the program only if one or more additional criteria associated with the geo-fence or the program are satisfied.

10. A method as recited in claim 9 , the additional criteria comprising network connectivity being available.

11. A computing device comprising:

one or more processors;

a data store to store geo-fence data for multiple geo-fences, the geo-fence data for a geo-fence including an indication of a program associated with the geo-fence; and

one or more computer-readable storage devices comprising computer-readable instructions which, when executed by the one or more processors, implement:

a geo-fence event detection module to detect when one or more geo-fence events occur for the 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 scheduled to run;

a geo-fence event storage module to maintain a record of the detected one or more geo-fence events; and

a geo-fence event reporting module that waits to provide, to a program subsequently scheduled to run during an execution period of the operating system, an indication of one or more geo-fence events included in the record of the detected one or more geo-fence events until the operating system enters the execution period.

12. A computing device as recited in claim 11 , the certain programs comprising applications other than operating system programs.

13. A computing device as recited in claim 11 , the program being subsequently scheduled to run in a next execution period of the operating system.

14. A computing device as recited in claim 11 , wherein to provide the indication is to provide for each of the multiple geo-fences, only a most recent geo-fence exit event and/or geo-fence enter event.

15. A computing device as recited in claim 11 , wherein the record is a record of detected geo-fence events for a geo-fence regardless of whether the program associated with the geo-fence is running.

16. A computing device as recited in claim 11 , the record of geo-fence events including, for each geo-fence, an identification of the geo-fence event and a timestamp of when the geo-fence event was detected.

17. A computing device as recited in claim 11 , wherein the indication is an indication of one or more geo-fence events provided to the program by coalescing one or more geo-fence events for multiple geo-fences.

18. A computing device as recited in claim 11 , wherein the indication is an indication of a geo-fence event provided to the program only if one or more additional criteria associated with the geo-fence are satisfied.

19. A computing device as recited in claim 11 , further comprising deleting from the record of geo-fence events a particular geo-fence event based on the program associated with the geo-fence being uninstalled from the computing device.

20. A method comprising:

detecting 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;

maintaining a record of geo-fence events for each of multiple geo-fences, including maintaining a record of multiple geo-fence exit events and multiple geo-fence enter events for each of the multiple geo-fences, the record of geo-fence events including for each geo-fence event an identification of the geo-fence event and a timestamp of when the geo-fence event was detected; and

providing, to a program associated with two or more of the multiple geo-fences when the program is scheduled to run during an execution period of the operating system, an indication of a most recent geo-fence exit event and geo-fence enter event for each of the two or more of the multiple geo-fences from the record of geo-fence events responsive to the program running during the execution period of the operating system.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2013
From: GORGENYI, FRANK; ESTRADA ALVA, DANIEL; GONZALEZ, FERNANDO; SAHA, SANJIB
To: MICROSOFT CORPORATION
Reel/Frame 030660/0433 →
Continuity (1)
Related Publication 20140370911A1 · Dec 18, 2014