Architecture and system for location awareness
First Claim
1. A method of operating a computer-implemented service on a computing device, the method comprising:
- receiving a request for a physical location of the computing device through a first application programming interface to the service;
acquiring data based on a plurality of location reports from one or more location detection devices associated with the computing device, the location reports being received through a second application programming interface to the service;
selectively providing the data through a third application programming interface to one or more resolver components, each resolver component being associated with a location detection device of the one or more location detection devices;
receiving through the third application programming interface resolved acquired data;
reconciling the resolved acquired data for any inconsistencies concerning the physical location of the device by applying at least one process to the acquired data; and
generating a location object accessible to one or more applications, the location object including a reconciled physical location for the computing device,wherein the second and third APIs include at least one location API configured to specify functions to be implemented by a plug-in to register with the service.
2 Assignments
0 Petitions
Accused Products
Abstract
A location service and method provides a location aware computing device that is extensible by allowing different types of location awareness providers operate with the service. The method includes receiving a request for a location context, acquiring data associated with a current location from one or more location detection devices, reconciling the acquired data for any inconsistencies concerning the current location by applying either or both of a hierarchical and a metric process, and generating a location object accessible to applications. The service includes a location management component configured to route location data, a fuser engine configured to receive one or more location reports generated from the location data, reconcile conflicts between the location reports and generate a location object, and one or more location application programming interfaces (APIs) coupled to the location management component to transmit the location object from the fuser engine to an application.
184 Citations
40 Claims
-
1. A method of operating a computer-implemented service on a computing device, the method comprising:
-
receiving a request for a physical location of the computing device through a first application programming interface to the service; acquiring data based on a plurality of location reports from one or more location detection devices associated with the computing device, the location reports being received through a second application programming interface to the service; selectively providing the data through a third application programming interface to one or more resolver components, each resolver component being associated with a location detection device of the one or more location detection devices; receiving through the third application programming interface resolved acquired data; reconciling the resolved acquired data for any inconsistencies concerning the physical location of the device by applying at least one process to the acquired data; and generating a location object accessible to one or more applications, the location object including a reconciled physical location for the computing device, wherein the second and third APIs include at least one location API configured to specify functions to be implemented by a plug-in to register with the service. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer storage medium having computer-executable instructions implementing a service adapted to be run on a movable computer, the computer-executable instructions comprising:
-
a location management component configured to route location data, the location management component adapted to; provide a location provider application programming interface; provide a location resolver application programming interface; provide a cache component adapted to store location reports; receive location data through the location provider application programming interface; selectively provide the location data through the location resolver application programming interface; receive resolved location data through the location resolver application programming interface; access cached location data correlated with the received location data in the cache component; and selectively output the cached data or the resolved location data, and wherein the location management component comprises; a plug-in manager configured to route the location data through the location resolver application programming interface; and a master resolver coupled to the plug-in manager, the master resolver configured to assign the location data to one or more resolvers appropriate for the location information; a fuser engine coupled to the location management component, the fuser engine configured to receive the outputs of the location management component as one or more location reports generated from the location data, reconcile conflicts between the location reports and generate a location object; and one or more location application programming interfaces (APIs) coupled to the location management component, at least one of the location application programming interfaces configured to transmit the location object from the fuser engine to an application, the location object configured to dynamically provide to the application a location for the computer running the service indicating movement of the computer, wherein the location APIs include at least one location API configured to specify functions to be implemented by a plug-in to register with the service. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A method of operating a service on a computing device to provide dynamic location information about the device to an application program, the method comprising:
-
receiving through a first interface to the service a request for location context data concerning the device, the request being received from the application program; dynamically collecting through a second interface to the service location reports from one or more providers, each location report containing a type of location context data; determining through a programming interface types of resolvers available to operate on the location reports; selectively processing the location reports in resolvers based on the determined availability of resolvers, at least a portion of the location reports each being processed in a resolver a plurality of times, the processing in the resolvers generating resolved location reports, the resolved location reports indicating a physical location of the device, the selectively processing further comprising acts of; routing, using a plug-in manager, location information through the programming interface; and assigning, using a master resolver coupled to the plug-in manager, the location information to one or more resolvers appropriate for the location information; reconciling conflicting indications of the physical location of the device in the resolved location reports and the collected location reports; and returning to the application program reconciled location context data. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. A computer storage medium having computer-executable instructions for enabling awareness of a location of a computing device, the computer-executable instructions performing acts comprising:
-
receiving a request for a location of the computing device; acquiring data based on a plurality of location reports from one or more location detection devices associated with the computing device, at least a portion of the location reports being acquired through a programming interface to a provider plug-in component; routing, using a plug-in manager, location information through the programming interface; assigning, using a master resolver coupled to the plug-in manager, the location information to one or more resolvers appropriate for the location information; for each of the plurality of location reports; determining whether a resolved location report has been cached and when a cached resolved report is available, obtaining the cached resolved location report from a cache; when no resolved location report has been cached, determining whether a resolver plug-in component is available to resolve the location report and, when a resolver plug-in component is available, resolving the location report in the available plug-in component; and incrementing a counter and determining if the counter has reached a predetermined limit; reconciling the acquired data, including the resolved location context reports from a resolver plug-in and/or the cache, for any inconsistencies concerning the physical location of the computing device; and generating a location object accessible to one or more applications, the location object including a reconciled physical location for the computing device.
-
-
33. A method for generating rich location context reports from data received from at least one of a plurality of location providers, the plurality of location providers following a plurality of incompatible protocols, the method comprising:
-
upon receiving a notification of availability of a set of location reports from one or more of the location providers, retrieving the set of location reports; for each location report in the set of location reports, determining whether a resolver is capable and available to interpret the location report and has not exceeded a predetermined number of iterations; if a resolver is capable, available and has not exceeded the predetermined number of iterations, transmitting the location report to the resolver; receiving through an application programming interface one or more rich location reports associated with the incompatible protocols from one or more resolvers combining the rich location reports into a set of rich location reports, each rich location report in the set of rich location reports according to a standardized data structure; and transmitting the set of rich location reports to a fuser engine. - View Dependent Claims (34, 35, 36)
-
-
37. A computer storage medium having computer-executable instructions for enabling generation of rich location context reports from data received from at least one of a plurality of location providers, the plurality of location providers following a plurality of incompatible protocols awareness of a location context of a computer system, the computer-executable instructions performing acts comprising:
-
upon receiving a notification of availability of a set of location reports from one or more of the location providers, retrieving the set of location reports; for each location report in the set of location reports, determining whether a resolver is capable and available to interpret the location report and has not exceeded a predetermined number of iterations; if a resolver is capable, available and has not exceeded the predetermined number of iterations, transmitting the location report to the resolver; receiving from one or more resolvers one or more rich location reports associated with the incompatible protocols; combining the rich location reports into a set of rich location reports, each rich location report in the set of rich location reports according to a standardized data structure; and transmitting the set of rich location reports to a fuser engine. - View Dependent Claims (38, 39, 40)
-
Specification