# Patent

## Title
Energy efficient location detection

## Abstract

In a device, one or more low energy sensors are used to determine a mobility state of the device. Based on both the mobility state of the device and one or more places of interest for the device, a determination is made as to when to use a high energy sensor to determine a location of the device. One of the one or more places of interest for the device within which the device is located at any particular time can be determined based on the mobility state of the device and/or the location of the device as determined by the high energy sensor.

## Background
BACKGROUND
As technology has advanced, so too have the capabilities provided by smartphones and other portable computing devices. One such advancement is the increase in location awareness based programs of the devices, which can result in various functionality being provided based on where the devices are located. Although providing such functionality can be beneficial to users, it is not without its problems. One such problem is that determining the location of the device can consume a significant amount of energy, resulting in reduced battery life for the device.
SUMMARY
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
In accordance with one or more aspects, in a device one or more low energy sensors are used to determine a mobility state of the device. A determination is made, based on both the mobility state of the device and one or more places of interest for the device, of when to use a high energy sensor to determine a location of the device.



BRIEF DESCRIPTION OF THE DRAWINGS
The same numbers are used throughout the drawings to reference like features.
FIG. 1 illustrates an example system in which the energy efficient location detection discussed herein can be used.
FIG. 2 is a block diagram illustrating an example device implementing the energy efficient location detection in accordance with one or more embodiments.
FIG. 3 illustrates an example user interface that can be displayed to a user to allow the user to select whether data from sensors is obtained in accordance with one or more embodiments.
FIG. 4 illustrates an example state machine tracking the mobility state for a device in accordance with one or more embodiments.
FIG. 5 is a flowchart illustrating an example process for implementing the energy efficient location detection in accordance with one or more embodiments.
FIG. 6 illustrates an example computing device that can be configured to implement the energy efficient location detection in accordance with one or more embodiments.



DETAILED DESCRIPTION
Energy efficient location detection is discussed herein. Various places of interest for a user of a device are defined, such as the user's home, workplace, frequently visited restaurants or businesses, and so forth. One or more low energy sensors are used to determine a mobility state for the device. The mobility state can indicate, for example, whether the device is stationary, moving with a person walking, or in a moving vehicle. Based on the mobility state for the device and the various places of interest to the user, a determination can be made as to when to use a high energy sensor to obtain a more accurate indication of the location of the user. For example, the high energy sensor may not be used until the device is close to a perimeter or edge of a place of interest for the device.
FIG. 1 illustrates an example system 100 in which the energy efficient location detection discussed herein can be used. System 100 includes a computing device 102, which can be any of a variety of types of mobile devices. For example, computing device 102 can be a smartphone or other wireless phone, a laptop or netbook computer, a tablet or notepad computer, a mobile station, an entertainment appliance, an audio and/or video playback device, a game console, an automotive computer, and so forth. Computing device 102 is typically referred to as being a mobile device because device 102 is designed or intended to be moved to multiple different locations (e.g., taken by a user with him or her as the user goes to different locations).
System 100 illustrates multiple places of interest 112, 114, 116, and 118. These places of interest are also referred to as simply places. Each place 112-118 is a place or context of interest for device 102 (e.g., a place or context of interest to a user of device 102). For example, places 112-118 can be the user's home, the user's workplace, restaurants or businesses visited by the user, educational facilities, public services (e.g., libraries), geographic places (e.g., cities or states), and so forth,
Different users of device 102 can optionally have different places of interest. Device 102 is mobile and can be moved into and out of places 112-118. At any given time, device 102 can be within one of places 112-118, or within no place. Situations can also arise in which two or more places 112-118 overlap, in which case a device 102 can be within two or more places 112-118 at one time. It should be noted that the illustration of FIG. 1 is not to scale, and that places 112-118 can be, and typically are, significantly larger in size than device 102. Although a single device 102 is illustrated in FIG. 1, it should be noted that different devices can be used in system 100, and that different devices can have the same and/or different places of interest.
Each place 112-118 has one or more attributes that define the place, and different places 112-118 can be defined by different attributes. One or more of various different attributes can be used to define a place of interest. An attribute defines a specific characteristic of a place, such as a geographic location, signals or devices that are detected when at that location, and so forth. For example, an attribute can be a specific geographic location, such as a street address, latitude and longitude coordinates (e.g., obtained from a global positioning system (GPS)), and so forth. By way of another example, an attribute can be an indication of signals and/or other devices that can be detected by device 102, such as signals received from one or more particular wireless access points (e.g., identified by particular media access control (MAC) addresses), signals received from one or more particular wireless networks (e.g., identified by particular service set identifiers (SSIDs) or other names), signals received from one or more particular cellular towers or transmitters (e.g., having particular tower or transmitter identifiers), signals received from one or more particular radio frequency identification (RFID) transmitters (including proximity transmitters, vicinity transmitters, etc.), and so forth.
Places of interest can be defined in different manners based on individual ones, or combinations, of these attributes. For example, a particular place can be defined as any location where a signal from a particular wireless access point (or from any one or more of multiple particular wireless access points) is detected and/or a signal received from a particular cellular transmitter is detected. By way of another example, a particular place can be defined as any location where a signal from a particular wireless network (e.g., having a particular SSID) is detected. By way of yet another example, a particular place can be defined as any location within a threshold distance (e.g., a particular number of feet, miles, etc.) of a particular latitude and longitude coordinate.
It should be noted that a particular place of interest can be, but need not be, made up of physically adjacent geographic locations. For example, place 116 can be a user's home that is defined as any location where a signal from a particular wireless access point and/or a signal from a particular cellular transmitter is detected. The locations where these signals are detected would typically be physically adjacent geographic locations. By way of another example, place 118 can be a particular business that is defined as any location where a signal from a particular wireless network (e.g., having a particular SSID) is detected. The business can have multiple locations (e.g., a chain of coffee shops) that are not physically adjacent geographic locations (e.g., can be in different parts of a city, can be in different cities or states, etc.). However, each of these multiple locations has a wireless network having an SSIDs that can be indicative of the business name, so all of these multiple locations are considered as part of the same place. For example, each of these multiple locations can have a wireless network having the same SSID, have a wireless network having an SSID beginning with the same characters (e.g., a business ABCD Company may have wireless networks at different locations with SSIDs of AB01, AB02, etc.), and so forth.
It should also be noted that the specific geographic location (e.g., street address, latitude and longitude) or locations where a place of interest is located can be known or alternatively unknown. For example, a place can be defined as any location where a signal from a particular wireless access point is detected even though the specific geographic location where that wireless access point is located is unknown (and optionally can change). Device 102 uses one or more places of interest 112-118 in performing the energy efficient location detection discussed herein as discussed below, and need not know the specific geographic locations of those places of interest.
The places of interest for device 102, and the attributes defining those places of interest, can be determined in one or more of a variety of different manners. Device 102 can be pre-configured with places of interest and the attributes that define those places of interest, can obtain places of interest and the attributes that define those places of interest from other services (e.g., Yellow pages or other directory services) or devices (e.g., by way of broadcasting, publishing, peer sharing, etc.), can receive inputs from a user of device 102 indicating places of interest and attributes that define those places of interests, combinations thereof, and so forth.
A user can define places of interest in a variety of different manners. For example, a user can input text or audible descriptions of places of interest and attributes that define those places of interests. By way of another example, a user can input, at any given time, an indication that device 102 is at a particular place of interest (e.g., the user selecting the place of interest from a menu or set of icons). In response to such an input, device 102 can identify one or more attributes and include those attributes as attributes defining the place of interest. For example, while device 102 is at the user's workplace, the user can input an indication to device 102 that device 102 is at the user's workplace. Device 102 can detect which wireless networks (e.g., having particular SSIDs) device 102 is receiving signals from, and add those wireless networks as an attribute defining the user's workplace place of interest.
Additionally, device 102 can determine an approximate area and/or perimeter (the edges) of places of interest in a variety of different manners. The perimeter of a place refers to the edge or boundary of the place, and the area of the place refers to the locations within that boundary (i.e., within the place of interest). Device 102 is within a particular place 112-118 if device 102 is physically located within the edge or boundary of that particular place 112-118. The perimeters of places 112-118 can be identified in different manners, such as a mapping of a geographic area that the place of interest encompasses. The perimeters of places 112-118 are illustrated with dashed lines in FIG. 1. The area and/or perimeter of a place of interest can be pre-configured in device 102, or obtained elsewhere such as from another device or service. Alternatively, the area and/or perimeter of a place of interest can be automatically determined by device 102. For example, if an attribute for a place is a signal being received from a particular cellular tower or transmitter, device 102 can track (using various low energy and/or high energy sensors as discussed below) where device 102 is moved and still receive the signal from that particular cellular tower or transmitter. Device 102 can use this tracking to effectively map a geographic area that the place of interest encompasses.
Device 102 includes one or more low energy sensors that are used to determine a mobility state for device 102, such as whether device 102 is stationary, is moving with a person walking, or is moving in a vehicle. Device 102 also has an estimate of its location relative to one or more places 112-118, which can be determined based on an indication from a high energy sensor and/or the one or more low energy sensors. Based on the mobility state for device 102, and the estimated location of device 102 relative to the edges of one or more places 112-118, device 102 determines when the high energy sensor is to be used to obtain a more accurate indication of the location of device 102.
FIG. 2 is a block diagram illustrating an example device 200 implementing the energy efficient location detection in accordance with one or more embodiments. Device 200 can be, for example, a device 102 of FIG. 1. Device 200 includes a location estimation system 202 that uses data received from one or more (n) low energy sensors 204(1), . . . , 204(n) and a high energy sensor 206. Although a single high energy sensor is illustrated in device 200, it should be noted that location estimation system 202 can alternatively use multiple high energy sensors.
Location estimation system 200 also includes a mobility state estimation module 212, a location estimation module 214, a place determination module 216, and identification data 218. Identification data 218 includes data identifying various places of interest for device 200, including the attributes that define those places of interest as well as the area and/or perimeter of those places of interest. Mobility state estimation module 212 determines, based on data received from low energy sensors 204, a mobility state for device 200. Location estimation module 214 determines, based at least in part on the mobility state determined by module 212, when to activate high energy sensor 206. Place determination module 216 receives inputs from mobility state estimation module 212 and/or location estimation module 214, and determines based on those received inputs and optionally identification data 218, a place of interest (if any) that device 200 is within. Place determination module 216 provides an indication of this determined place of interest as place estimate 220.
In one more embodiments, data is obtained from low energy sensors 204 and/or high energy sensor 206 only after receiving user consent to do so. This user consent can be an opt-in consent, where the user takes an affirmative action to request that the data from low energy sensors 204 and/or high energy sensor 206 be obtained before any such data is obtained. Alternatively, this user consent can be an opt-out consent, where the user takes an affirmative action to request that the data from low energy sensors 204 and/or high energy sensor 206 not be obtained. If the user does not choose to opt out of obtaining this data, then it is an implied consent by the user to obtain this data. Furthermore, it should be noted that the data obtained from low energy sensors 204 and/or high energy sensor 206 can be maintained in device 200 and need not be communicated to other devices or services.
FIG. 3 illustrates an example user interface that can be displayed to a user to allow the user to select whether data from low energy sensors 204 and/or high energy sensor 206 is obtained in accordance with one or more embodiments. A sensor control window 300 is displayed including a description 302 explaining to the user why the data is being obtained. A link 304 to a privacy statement is also displayed. If the user selects link 304, a privacy statement of location estimation service 202 of FIG. 2 is displayed, explaining to the user how the user's information is kept confidential.
Additionally, the user is able to select a radio button 306 to opt-in to the obtaining of data from low energy sensors 204 and/or high energy sensor 206, or a radio button 308 to opt-out of the obtaining of data from low energy sensors 204 and/or high energy sensor 206. Once a radio button 306 or 308 is selected, the user can select an “OK” button 310 to have the selection saved. It is to be appreciated that radio buttons and an “OK” button are only examples of user interfaces that can be presented to a user to opt-in or opt-out of the obtaining of the data from low energy sensors 204 and/or high energy sensor 206, and that a variety of other conventional user interface techniques can alternatively be used. Location estimation system 202 then proceeds to obtain data from the sensors and provide place estimation 220, or not obtain data from the sensors and not provide place estimation 220, in accordance with the user's selection.
Returning to FIG. 2, a low energy sensor 204 refers to a sensor that uses less than (or optionally equal to) a threshold amount of energy to provide data for use by location estimation system 202. This threshold amount can be a fixed value (e.g., a particular number of watts per hour), or a relative value (e.g., a largest amount of energy used by a particular number or particular percentage of the sensors 204 of device 200, such as the largest amount of energy used by the 40% of the sensors 204 that use the smallest amount of energy on device 200).
A high energy sensor 206 refers to a location sensor that uses greater than (or optionally equal to) a threshold amount of energy to provide data for use by location estimation system 202. This threshold amount can be a fixed value (e.g., a particular number of watts per hour), or a relative value (e.g., the amount of energy used by a particular type of sensor of device 200). This threshold amount can be the same threshold amount as used to refer to low energy sensors 204, or a different threshold amount. Alternatively, a high energy sensor 206 can refer to a particular type of sensor (e.g., a GPS component).
It should be noted that sensors being low energy or high energy refers to the energy used by the sensors to provide data for use by location estimation system 202 (e.g., modules 212, 214, and/or 216 within system 202). These sensors can also perform other operations in device 200 that use energy, but this other energy usage is not taken into account in determining whether the sensor is a low energy sensor or high energy sensor for location estimation system 202. Rather, the determination of whether the sensor is a low energy sensor or high energy sensor for location estimation system 202 is based on the amount of energy that the sensor uses to provide data for use by local estimation system 202. Thus, even if the overall energy usage by a particular sensor is greater than the threshold amount of energy, the sensor can still be a low energy sensor if the additional energy used by the sensor to provide data for use by location estimation system 202 is less than the threshold amount.
Each low energy sensor 204 can be one of a variety of different types of sensors. For example, a low energy sensor 204 can be an accelerometer, a compass, a proximity sensor (sensing how close device 200 is to the user of device 200), a gyroscope, a camera, a microphone, and so forth. A low energy sensor 204 can also be a wireless networking (e.g., WiFi) component that detects signals from wireless networks (e.g., identifiers of particular wireless access points, identifiers of particular wireless networks, etc.). A low energy sensor 204 can also be a cellular component that detects signals from cellular towers or transmitters.
Some types of sensors can be low energy sensors or high energy sensors at different times, depending on how the sensors are used. If a sensor is used in a manner resulting in the sensor using less than the threshold amount of energy to provide data for use by location estimation system 202 then the sensor is a low energy sensor, otherwise the sensor is a high energy sensor. For example, in some situations a WiFi component of device 200 may detect a wireless network, which uses less than the threshold amount of energy. In such situations, the WiFi component is a low energy sensor 204. However, in other situations the WiFi component may detect one or more wireless networks and communicate an indication of those one or more wireless networks to a remote service (e.g., via the Internet, via a cellular or other wireless network, etc.). The remote service maintains a record of where particular wireless networks are located, and based on the detected networks the remote service can determine the location of device 200. An indication of this location is returned to device 200. In such situations, where the WiFi component is transmitting and receiving data from a remote service, the WiFi component is a high energy sensor 206.
It should be noted that some types of sensors can be low energy sensors in some devices, and high energy sensors in other devices. For example, the hardware used to implement a WiFi component in some devices may result in the power used to turn on the WiFi component and detect a wireless network being greater than the threshold amount of energy, but the hardware used to implement a WiFi component in other devices may result in the power used to turn on the WiFi component and detect a wireless network being less than the threshold amount of energy.
It should also be noted that although low energy sensors 204 and high energy sensor 206 are illustrated as being part of device 200, one or more low energy sensors 204 and/or high energy sensor 206 can be implemented as a separate component or device that is coupled to device 200. For example, sensors can be implemented as part of a watch worn by a user, as part of a device attached to a user's shoe, as part of a heart rate monitor component, and so forth.
Mobility state estimation module 212 receives data from one or more low energy sensors 204 and determines, based on the received data, a mobility state for device 200. The mobility state for device 200 indicates at least whether device 200 is stationary or moving, and optionally also if device 200 is moving then a rate at which device 200 is moving. In one or more embodiments, the mobility state for device 200 indicates whether device 200 is stationary, is moving at a walking rate (e.g., a rate at which users would typically walk), or is moving at a vehicle rate (e.g., a rate at which users would typically be moving in a vehicle).
FIG. 4 illustrates an example state machine 400 tracking the mobility state for a device in accordance with one or more embodiments. State machine 400 can be implemented by the mobility state estimation module, such as mobility state estimation module 212 of FIG. 2, to keep track of whether the device is stationary, moving at a walking rate, or moving at a vehicle rate.
State machine 400 includes a stationary state 402, a pedestrian state 404, and a vehicle state 406. Stationary state 402 indicates that the device is stationary, pedestrian state 404 indicates that the device is moving at a walking rate, and vehicle state 406 indicates that the device is moving at a vehicle rate. From any state 402-406, state machine 400 can stay at that same state or transition to any other state 402-406. Whether state machine 400 stays at the same state or transitions to another state is dependent on data received from one or more low energy sensors.
Although three states are illustrated in FIG. 4, it should be noted that state machine 400 can include any number of states and/or different states than are illustrated in FIG. 4. For example, rather than a pedestrian state 404, state machine 400 can include a walking state and a running state. By way of another example, rather than a vehicle state 406, state machine 400 can include an on-road vehicle state and an airplane state. By way of yet another example, rather than both pedestrian state 404 and vehicle state 406, state machine 400 can include just a moving state.
In one or more embodiments, the mobility state estimation module includes a profile for at least one low energy sensor (or combination thereof), the profile for a low energy sensor (or combination thereof) indicating what data provided by that low energy sensor indicates what state of state machine 400. The mobility state estimation module can be pre-configured with these profiles for one or more low energy sensors (or combination thereof), or can otherwise obtain the profiles (e.g., from one or more other devices or services). The profiles can be generated in a variety of different manners, such as based on observations of test users, automatically determined based on user feedback as to the mobility state at particular times, and so forth.
For example, a low energy sensor that is an accelerometer provides accelerometer data to the mobility state estimation module indicating the measured acceleration of the accelerometer. Larger values for the accelerometer data indicate greater acceleration of the accelerometer, and smaller values for the accelerometer data indicate lesser acceleration of the accelerometer. The variation in accelerometer data changes over time, and the profile indicates both a lower threshold value and an upper threshold value for the accelerometer data, the upper threshold value corresponding to a greater acceleration than the lower threshold value. The mobility state estimation module determines that if the accelerometer data is at or below the lower threshold value, then the device is in stationary state 402. However, if the accelerometer data is at or above the upper threshold value, then the device is in pedestrian state 404, and if the accelerometer data is between the upper and lower threshold values then the device is in vehicle state 406.
By way of another example, a cellular component that is a low energy sensor provides cellular tower data to the mobility state estimation module identifying a particular cellular tower that the device including the cellular component is in communication with. The mobility state estimation module determines a rate at which the cellular tower data changes, with larger rates of change indicating faster movement of the device and smaller rates of change indicating slower movement of the device. The rate at which the cellular tower data changes varies over time, and the profile indicates a threshold value for the rate of cellular tower data change. The mobility state estimation module determines that if the rate of cellular tower data is zero (indicating no cellular tower data change), then the device is in stationary state 402. However, if the rate of cellular tower data change is at or above the threshold value, then the device is in vehicle state 406, and if the rate of cellular tower data change is greater than zero but below the threshold value then the device is in pedestrian state 404.
By way of yet another example, a camera that is a low energy sensor detects light spectrum data and provides the light spectrum data to the mobility state estimation module. The light spectrum data is different based on whether the user is indoors or outdoors, and the mobility state estimation module determines that the device is not in vehicle state 406 if the light spectrum data indicates that the user is indoors. The mobility state estimation module can use the light spectrum data in combination with data from other low energy sensors (e.g., whether the particular wireless networks that are detected by a WiFi component) to determine the mobility state of device 200.
In one or more embodiments, the mobility state estimation module collects data from the low energy sensors at a particular rate to determine the mobility state. The frequency at which the mobility state estimation module collects data from the low energy sensors can vary based on the mobility state. For example, accelerometer data can be collected for k seconds every n seconds, and the values of k and n can vary based on the current mobility state of the device. As examples of values for k and n, when in stationary state 402 accelerometer data can be collected for 2 seconds every 100 seconds, when in pedestrian state 404 accelerometer data can be collected for 2 seconds every 50 seconds, and when in vehicle state 406 accelerometer data can be collected for 5 seconds every 30 seconds. The mobility state estimation module can collect data at different rates in different manners, such as by indicating to the low energy sensors to provide data to the mobility state estimation module at a particular rate, by analyzing data received from the low energy sensors at the desired rate and ignoring other data received from the low energy sensors, and so forth.
Returning to FIG. 2, location estimation module 214 determines, based at least in part on the mobility state determined by module 212, when to activate high energy sensor 206. When activated, high energy sensor 206 provides to location estimation module 214 an indication of the location of device 200. This indication provided by high energy sensor 206 is a more accurate indication than can typically be determined based on low energy sensors 204. For example, based on a signal from a particular wireless network (detected by a low energy sensor 204), location estimation module 214 may be able to determine the location of device 200 within a 200-foot radius around a wireless access point, but within a 10-foot radius around a latitude/longitude coordinate provided by a high energy sensor 206 that is a GPS component. Additionally, the indication provided by high energy sensor 206 is typically a specific geographic location, whereas the specific geographic location of device 200 may not be determinable based on data from low energy sensors 204 alone.
In one or more embodiments, device 200 includes multiple high energy sensors. Location estimation module 214 can determine which one or more of the multiple high energy sensors to activate in different manners. For example, location estimation module 214 can be configured with an indication of the priority or ranking of high energy sensors and activate a first sensor available on device 200 in accordance with this priority or ranking, can activate the one of the multiple high energy sensors that is expected to use the smallest amount of energy to provide data for use by location estimation system 202, can select one of the multiple high energy sensors randomly, and so forth.
Location estimation module 214 determines when to activate high energy sensor 206 based at least in part on the mobility state determined by module 212. Location estimation module 214 can activate high energy sensor 206 at one of multiple different intervals based on the mobility state of device 200, with the number of different intervals being based on the number of possible mobility states. Generally, the faster that device 200 is expected to be moving the shorter the interval. For example, if device 200 is in a vehicle state then the interval can be one value (e.g., 3 minutes), if device 200 is in a pedestrian state then the interval can be another value (e.g., 10 minutes), and if device 200 is in a stationary state then the interval can be yet another value (e.g., 60 minutes). Location estimation module 214 can also indicate to high energy sensor 206 (or otherwise activate high energy sensor 206 for) a desired amount of accuracy based at least in part on the mobility state determined by module 212. Generally, the slower that device 200 is expected to be moving the greater the desired accuracy. For example, if device 200 is in a vehicle state then the accuracy can be one value (e.g., a location indication accurate to within 500 feet), if device 200 is in a pedestrian state then the accuracy can be another value (e.g., a location indication accurate to within 50 feet), and if device 200 is in a stationary state then the accuracy can be another value (e.g., a location indication within 10 feet).
Location estimation module 214 can also determine when to activate high energy sensor 206 based at least in part on identification data 218. Location estimation module 214 keeps track of one or more of the most recently received location indications from high energy sensor 206. Given this most recently received location indication from high energy sensor 206 and identification data 218, location estimation module 214 can readily determine how close device 200 is to the perimeter of one or more places of interest. Further, given the mobility state of device 200 and how close device 200 is to the perimeter of one or more places of interest, and optionally a direction of travel of device 200, location estimation module 214 can readily determine an amount of time that is expected to elapse before device 200 reaches the perimeter of a place of interest. Location estimation module 214 can then determine to not activate high energy sensor 206 until device 200 is expected to be close to the perimeter of a place of interest.
For example, referring again to FIG. 1, assume that based on a most recently received location indication from a high energy sensor, device 102 is located at approximately the center of place 112. Furthermore, assume that place 112 is approximately a circle having a diameter of two miles. If device 102 is in a stationary state, then the high energy sensor need not be activated (or can be activated at large intervals, such as 24 hours) because device 102 is not expected to move outside of place 112. If device 102 is in a pedestrian state, then the high energy sensor need not be activated until the device is expected to be moved to the perimeter of place 112 at a pedestrian rate. The actual pedestrian rate of device 102 (the rate at which device 102 is actually moving) can be determined by device 102, or a typical pedestrian rate (e.g., 2.5 miles per hour (mph)) can be used. If the pedestrian rate is 2.5 mph, then the high energy sensor need not be activated for approximately 24 minutes, which is approximately the amount of time it would take for device 102 to move one mile at the pedestrian rate of 2.5 mph. If device 102 is in a vehicle state, then the high energy sensor need not be activated until the device is expected to be moved to the perimeter of place 112 at a vehicle rate. The actual vehicle rate of device 102 (the rate at which device 102 is actually moving) can be determined by device 102, or a typical vehicle rate (e.g., 30 mph or 70 mph) can be used. If the vehicle rate is 30 mph, then high energy sensor need not be activated for approximately 2 minutes, which is approximately the amount of time it would take for device 102 to move one mile at the vehicle rate of 30 mph.
By way of another example, assume that based on a most recently received location indication from a high energy sensor, device 102 is located approximately half-way between a perimeter of place 114 and a perimeter of place 116, and that these two perimeters are the two closest perimeters of places of interest for device 102. Furthermore, assume that device 102 is approximately 60 miles away from the perimeters of places 114 and 116. If device 102 is in a stationary state, then the high energy sensor need not be activated (or can be activated at large intervals, such as 24 hours). If device 102 is in a pedestrian state of 2.5 mph, then high energy sensor need not be activated for approximately 24 hours, which is approximately the amount of time it would take for device 102 to move 60 miles at the pedestrian rate of 2.5 mph. If device 102 is in a vehicle state of 70 mph, then high energy sensor need not be activated for approximately 51.4 minutes, which is approximately the amount of time it would take for device 102 to move 60 miles at the vehicle rate of 70 mph.
Location estimation module 214 of FIG. 2 can also determine when to activate high energy sensor 206 based at least in part on the place that device 200 is at as well as other nearby places of interest. For example, assume that device 102 is located at approximately the center of place 112, that place 112 is approximately a circle having a diameter of two miles, that the distance between the two parts of the perimeters of places 112 and 114 that are closest to one another is 500 yards, and that the distance from the next closest place of interest for device 102 in the opposite direction as place 114 is 75 miles. If device 102 is moving towards place 114, then the high energy sensor can be activated sooner (e.g., after 20 minutes if at the pedestrian state) and/or more frequently than if device is moving opposite place 114. Activating the high energy sensor sooner and/or more frequently allows the place determination module to more accurately identify when device 102 has moved from place 112 to place 114. However, if device is moving in the direction opposite place 114, the high energy sensor need not be activated sooner and/or more frequently because it will be a longer amount of time (due to the 75 mile distance) until the device would be close to another place of interest.
Returning to FIG. 2, place determination module 216 receives inputs from mobility state estimation module 212 and/or location estimation module 214, and determines based on both those received inputs and identification data 218, a place of interest that device 200 is within. Place determination module 216 provides an indication of this determined place of interest as place estimate 220. This indication is referred to as an estimate of the location of device 200 because the place that device 200 is within is indicated rather than the specific geographic location of device 200. If device 200 is not within any place of interest, then place estimate 220 can indicate that device 200 is not within any place of interest.
The place of interest that device 200 is within can be readily determined, for example, based on identification data 218 (which identifies the areas and/or perimeters of the places of interest) along with the specific geographic location of device 200 received from high energy sensor 206 and/or along with data obtained from one or more low energy sensors 204 (e.g., data indicating from which particular wireless networks signals are detected). The place of interest that device 200 is within can also be determined based on the mobility state of device 200. Place determination module 216 can obtain from location estimation module 214 (or alternatively generate in a manner analogous to location estimation module 214) an indication of how close device 200 is to the perimeter of one or more places of interest and an amount of time that is expected to elapse before device 200 reaches the perimeter of a place of interest. Place determination module 216 can thus determine that device 200 remains within the same place of interest until the amount of time that is expected to elapse before device 200 reaches the perimeter of a place of interest has elapsed.
Additionally, as noted above, situations can arise where device 200 is within two or more places of interest at the same time (due to overlapping places of interest). In such situations, place determination module 216 can provide an indication of the two or more places as place estimate 220, or alternatively select one of the two or more places to indicate as place estimate 220. One of the two or more places can be selected in a variety of different manners, such as applying one or more rules or criteria to select one of the two or more places (e.g., based on which place of interest device 200 was most recently in, based on how close to the perimeter of each place of interest device 200 is, etc.), can select one of the two or more places randomly, and so forth.
Place estimate 220 can be used by other components or modules of device 200 in a variety of different manners. For example, programs can present different user interfaces to a user depending on place estimate 220. By way of another example, programs can be configured to run in different manners (e.g., with different security settings) depending on place estimate 220. By way of yet another example, different data or services can be accessible to programs based on place estimate 220. By way of still another example, place estimate 220 can be provided to a remote service that takes one or more actions depending on place estimate 220.
Local estimation system 202 can also optionally output other information for use by components or modules of device 200. For example, mobility state estimation module 212 can output an indication of the current mobility state of device 200, which can be used by other components or modules of device 200 in various different manners. For example, different components or modules of device 200 may operate only when device 200 has a particular mobility state (e.g., is stationary), and whether such components or modules of device 200 are to be activated can be determined based on the indication of the current mobility state of device 200 output by mobility state estimation module 212. By way of another example, location estimation module 214 can output an indication of the location of device 200 obtained from high energy sensor 206.
Thus, it can be seen that the energy efficient location detection techniques discussed herein allow the place of interest (if any) that a device is located within to be identified based on low energy sensors in many situations. High energy sensors can be activated at appropriate times, but need not be continually activated when the determination of the place of interest can be made based on data from the low energy sensors. Thus, devices employing the techniques discussed herein use energy efficiently by reducing the use of high energy sensors.
FIG. 5 is a flowchart illustrating an example process 500 for implementing the energy efficient location detection in accordance with one or more embodiments. Process 500 is carried out by a device, such as device 102 of FIG. 1 or device 200 of FIG. 2, and can be implemented in software, firmware, hardware, or combinations thereof. Process 500 is shown as a set of acts and is not limited to the order shown for performing the operations of the various acts. Process 500 is an example process for implementing the energy efficient location detection; additional discussions of implementing the energy efficient location detection are included herein with reference to different figures.
In process 500, data is received from one or more low energy sensors (act 502). Data can be received from various different low energy sensors, which can be part of the device implementing process 500 or separate devices from the device implementing process 500, as discussed above.
The mobility state of the device is determined using the data received from the one or more low energy sensors (act 502). Various different mobility states can be determined as discussed above.
Based on the mobility state and one or more places of interest for the device implementing process 500, a determination is made as to when to use a high energy sensor to determine a location of the device (act 506). This determination can be made, for example, based on a rate at which the device is moving and how close the device is to the perimeter of at least one of the one or more places of interest, as discussed above.
Various actions such as communicating, receiving, sending, storing, generating, obtaining, and so forth performed by various modules are discussed herein. It should be noted that the various modules can cause such actions to be performed. A particular module causing an action to be performed includes that particular module itself performing the action, or alternatively that particular module invoking or otherwise accessing another component or module that performs the action (or performs the action in conjunction with that particular module).
FIG. 6 illustrates an example computing device 600 that can be configured to implement the energy efficient location detection in accordance with one or more embodiments. Computing device 600 can be, for example, device 102 of FIG. 1 or device 200 of FIG. 2.
Computing device 600 includes one or more processors or processing units 602, one or more computer readable media 604 which can include one or more memory and/or storage components 606, one or more input/output (I/O) devices 608, and a bus 610 that allows the various components and devices to communicate with one another. Computer readable media 604 and/or one or more I/O devices 608 can be included as part of, or alternatively may be coupled to, computing device 600. Bus 610 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, a processor or local bus, and so forth using a variety of different bus architectures. Bus 610 can include wired and/or wireless buses.
Memory/storage component 606 represents one or more computer storage media. Component 606 can include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). Component 606 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth).
The techniques discussed herein can be implemented in software, with instructions being executed by one or more processing units 602. It is to be appreciated that different instructions can be stored in different components of computing device 600, such as in a processing unit 602, in various cache memories of a processing unit 602, in other cache memories of device 600 (not shown), on other computer readable media, and so forth. Additionally, it is to be appreciated that the location where instructions are stored in computing device 600 can change over time.
One or more input/output devices 608 allow a user to enter commands and information to computing device 600, and also allows information to be presented to the user and/or other components or devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, low energy sensors, high energy sensors, and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth.
Various techniques may be described herein in the general context of software or program modules. Generally, software includes routines, programs, applications, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. An implementation of these modules and techniques may be stored on or transmitted across some form of computer readable media. Computer readable media can be any available medium or media that can be accessed by a computing device. By way of example, and not limitation, computer readable media may comprise “computer storage media” and “communications media.”
“Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
“Communication media” typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
Generally, any of the functions or techniques described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms “module” and “component” as used herein generally represent software, firmware, hardware, or combinations thereof. In the case of a software implementation, the module or component represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable memory devices, further description of which may be found with reference to FIG. 6. The features of the energy efficient location detection techniques described herein are platform-independent, meaning that the techniques can be implemented on a variety of commercial computing platforms having a variety of processors.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

## Claims

1. A method in a device, the method comprising:
using, at the device, one or more low energy sensors to determine a mobility state of the device;
determining, based on both the mobility state of the device and one or more places of interest for the device, an amount of time that is to elapse before the device reaches one of the one or more places of interest, the one place of interest having been defined prior to determining the amount of time, the device having one of multiple mobility states and each of the multiple mobility states corresponding to a different amount of time that is to elapse, each of the one or more places of interest including one or more attributes that define a respective place of interest using data received from the one or more low energy sensors, the one or more attributes including signals that are detected when the device is within a particular place of interest;
determining to not activate a high energy sensor to determine a location of the device until the amount of time has elapsed; and
determining that the location of the device is within the one place of interest based on the one or more attributes that define the one place of interest, the one place of interest having multiple locations that are not physically adjacent geographic locations, each of the multiple locations including a signal indicating the one place of interest as a same place of interest.

2. A method as recited in claim 1, the determining the amount of time further comprising determining the amount of time based on how close the device is to a perimeter of the one place of interest.

3. A method as recited in claim 1, the one place of interest comprising a place of interest that the device is within, and the determining the amount of time further comprising determining the amount of time based on how close the device is to a perimeter of the one place of interest.

4. A method as recited in claim 1, further comprising determining, based on the location of the device determined by the high energy sensor, which of the one or more places of interest the device is within.

5. A method as recited in claim 1, further comprising determining, based on the mobility state of the device, which of the one or more places of interest the device is within.

6. A method as recited in claim 5, a specific geographic location of the place of interest that the device is within being unknown.

7. A method as recited in claim 1, further comprising outputting an indication of the mobility state of the device to activate a component of the device based on the mobility state of the device.

8. A method as recited in claim 1, the one or more low energy sensors being part of the device.

9. A method as recited in claim 1, the one or more low energy sensors comprising sensors that each use less than a threshold amount of energy to provide data for use by a location estimation system that performs the using, the determining the amount of time, and the determining to not activate the high energy sensor.

10. A method as recited in claim 1, the high energy sensor comprising a sensor that uses greater than a threshold amount of energy to provide data for use by a location estimation system that performs the using, the determining the amount of time, and the determining to not activate the high energy sensor.

11. A device comprising:
one or more processors; and
one or more computer readable media having stored thereon multiple instructions that, when executed by the one or more processors, cause the one or more processors to:
receive data from one or more low energy sensors;
determine, based on the data, a mobility state of the device;
vary a frequency at which the data is collected from the one or more low energy sensors based on the mobility state of the device;
wait to use a high energy sensor to determine a location of the device until, based on both the indication of the mobility state of the device and one or more places of interest for the device, the device is determined to be within a threshold distance of at least one of the one or more places of interest, the at least one of the one or more places of interest having been defined prior to determining to wait to use the high energy sensor, each of the one or more places of interest including one or more attributes that define a respective place of interest using the data received from the one or more low energy sensors, the one or more attributes including signals that are detected when the device is within a particular place of interest; and
determine that the location of the device is within the one place of interest based on the one or more attributes that define the one place of interest, the one place of interest having multiple locations that are not physically adjacent geographic locations, each of the multiple locations including a signal indicating the one place of interest as a same place of interest.

12. A device as recited in claim 11, the instructions that cause the one or more processors to wait to use the high energy sensor comprising instructions that cause the one or more processors to determine when the device is within the threshold distance of the at least one place of interest based on how close the device is to a perimeter of the at least one place of interest.

13. A device as recited in claim 11, an additional one of the one or more places of interest comprising a place of interest that the device is within, and the instructions that cause the one or more processors to wait to use the high energy sensor comprising instructions that cause the one or more processors to determine when the device is within a threshold distance of the at least one place of interest based on how close the device is to a perimeter of the at least one place of interest.

14. A device as recited in claim 11, the multiple instructions further causing the one or more processors to determine, based on the location of the device determined by the high energy sensor, one of the one or more places of interest that the device is within.

15. A device as recited in claim 11, the multiple instructions further causing the one or more processors to determine, based on the mobility state of the device, one of the one or more places of interest that the device is within.

16. A device as recited in claim 15, the mobility state of the device comprising one of a stationary state, a pedestrian state, and a vehicle state.

17. A device as recited in claim 11, the one or more low energy sensors comprising sensors that each use less than a threshold amount of energy to provide data for use by a location estimation system of the device, and the high energy sensor comprising a sensor that uses at least the threshold amount of energy to provide data for use by the location estimation system of the device.

18. One or more computer storage media devices having stored thereon multiple instructions that, when executed by one or more processors of a device, cause the one or more processors to perform acts comprising:
receiving data from one or more low energy sensors, each of the one or more low energy sensors using less than a threshold amount of energy to provide data for use by a location estimation system of the device;
determining, at the device, a mobility state of the device based on the data, the mobility state of the device being one of multiple different states, the multiple different states including a stationary state, a pedestrian state, and a vehicle state;
determining, based on both the mobility state of the device and how close the device is to a perimeter of at least one of one or more places of interest for the device, an amount of time that is to elapse before the device reaches the at least one place of interest, the at least one place of interest being a user defined place of interest defined prior to determining the amount of time, the amount of time that is to elapse varying based on the mobility state of the device, each of the one or more places of interest including one or more attributes that define a respective place of interest using the data received from the one or more low energy sensors, the one or more attributes including a signal that is detected when the device is within a particular place of interest and a geographical location;
determining to not activate a high energy sensor to determine a location of the device until the amount of time has elapsed, the high energy sensor indicating the geographical location of the device; and
determining that the location of the device is within the one place of interest based on the one or more attributes that define the one place of interest, the one place of interest having multiple locations that are not physically adjacent geographic locations, each of the multiple locations including a signal indicating the one place of interest as a same place of interest.

19. A device as recited in claim 11, the signals including at least a wireless network having a particular service set identifier (SSID) and the at least one place of interest for the device having been defined as any location where the SSID is detected.

20. A method as recited in claim 9, the threshold amount of energy comprising a relative value determined based on a largest amount of energy used by a particular number of the one or more low energy sensors.