Condition-based position monitoring

By monitoring device status changes through the coprocessor, the application processor is woken up only when necessary to obtain location information, solving the problem of high resource consumption caused by periodic wake-up and achieving energy saving and efficient location information acquisition.

CN113873438BActive Publication Date: 2025-09-30APPLE INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202111280860.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-12-14
Filing Date
2018-05-31
Publication Date
2025-09-30
Estimated Expiration
2038-05-31

AI Technical Summary

Technical Problem

Periodically waking up the mobile device's application processor to obtain location information results in high resource consumption and reduced battery life, and unnecessary wake-ups increase costs.

Method used

The coprocessor monitors device state changes and wakes up the application processor to obtain location information only when the expected state change is detected. The coprocessor such as motion coprocessor, network chip and power supply is used to determine the device state and wake up the application processor when necessary.

Benefits of technology

The number of wake-up times of the application processor is reduced, power resources are saved, resource consumption and costs are reduced, and the efficiency of obtaining location information is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113873438B_ABST
    Figure CN113873438B_ABST
Patent Text Reader

Abstract

The present disclosure relates to state-based location monitoring. Disclosed are techniques for state-based location monitoring and determining the location of a mobile device. An application processor identifies a desired mobility state. The application processor notifies a coprocessor of the desired state and enters a low-power mode. The coprocessor monitors mobility data to determine whether the desired state has occurred. If the desired state has occurred, the coprocessor notifies the application processor. The application processor can then determine whether it should switch to a high-power mode.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the invention patent application with application date of May 31, 2018, application number 201810543209.0, and titled “State-based location monitoring”.

[0002] Cross-references to Related Patent Applications

[0003] This patent application claims priority to U.S. Provisional Patent Application No. 62 / 514,671, filed on June 2, 2017, the disclosure of which is incorporated herein by reference in its entirety. Background Art

[0004] The central processing unit (CPU) of a mobile device may go into "sleep" when not in use. When the location of the mobile device is needed, the CPU may be "woken up" to obtain the location information.

[0005] An application executing on a mobile device may require location information of the mobile device. The location information is provided to the application by the CPU of the mobile device. The CPU may periodically obtain the location information of the mobile device. For example, the CPU may obtain the location information every fifteen (15) minutes. Positioning circuitry, such as a global positioning system (GPS), may be used to obtain the location information.

[0006] However, periodically obtaining location information consumes CPU and mobile device resources. Specifically, periodically waking up the CPU to obtain location information consumes application processor resources and can be costly. Furthermore, while the CPU is awakened to obtain location information, other components of the mobile device may also be using CPU resources. For example, a daemon program in the mobile device may be waiting for the CPU to wake up so that it can execute operations corresponding to the daemon program.

[0007] Therefore, periodically waking up the application processor is inefficient, costly, and can demand significant resources (eg, battery life) of the mobile device. Summary of the Invention

[0008] Example embodiments provide techniques (including methods, systems, devices, codes or computer programs stored on computer-readable non-transitory memory and including instructions executable by one or more processors) for obtaining the location of a mobile device.

[0009] An application processor (AP) is a main processor of a mobile device, such as a mobile phone or a smart watch, and may identify the current location (eg, GPS coordinates) of the mobile device.

[0010] According to some exemplary embodiments, an application processor can be awakened based on a change in device state determined by a coprocessor of a mobile device, which can remain in an on state. Since the coprocessor determines when the application processor should be awakened to obtain location information, the number of times the application processor is awakened can be reduced. For example, the coprocessor can be a motion coprocessor (e.g., a gyroscope and accelerometer) or a network chip (e.g., a WiFi chip). The coprocessor can consume fewer resources and have a lower operating cost than the application processor, thereby saving power.

[0011] According to some exemplary embodiments, the application processor may notify the motion coprocessor that it is about to "sleep" and request to be awakened when a state change occurs, such as a specific state change detected by the coprocessor. For example, if the mobile device has transitioned to a state where it may be desirable to obtain mobile device location information, such as transitioning from a moving state to a stationary state, the application processor may request to be awakened.

[0012] As an example, the states identified by the application processor may include a stable state, an unsettled state, and an unknown state. Example changes or transitions in device state may include unknown to stable, unknown to unsettled, stable to unsettled, or unsettled to stable. A stable state may be a state in which a device sensor indicates that the device is stationary (e.g., not moving) or a state in which a WiFi access point is always available. An unsettled state may be a state in which a motion sensor of the device indicates that the device is in a moving state (e.g., driving, walking, running, etc.), or a state in which a WiFi footprint is not always available. An unknown state may be a state in which the device state is currently unknown. The device may initially be in an unknown state until another state is determined.

[0013] After the coprocessor detects a motion classification corresponding to the desired state change, the coprocessor can wake up the application processor, and the application processor can request location information (eg, GPS location information) of the mobile device.

[0014] Some embodiments relate to systems, portable consumer devices, and computer-readable media associated with the methods described herein.

[0015] A better understanding of the nature and advantages of exemplary embodiments may be obtained by reference to the following detailed description and accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0016] The present disclosure will be readily understood by the following detailed description taken in conjunction with the accompanying drawings, wherein like reference numerals refer to like elements, and wherein:

[0017] Figure 1 A flow chart illustrating a method of determining a location of a mobile device, according to some exemplary embodiments.

[0018] Figure 2 is a block diagram illustrating an example system of electronic devices according to some example embodiments.

[0019] Figure 3 A flow chart illustrating a method of determining a location of a mobile device, according to some exemplary embodiments.

[0020] Figure 4 A flow chart illustrating a method for an application processor to register for a desired transition state, according to some exemplary embodiments.

[0021] Figure 5 A flowchart of a method for determining a motion classification of movement information of a mobile device is shown, according to some exemplary embodiments.

[0022] Figure 6A and Figure 6B Illustrated is the classification of movement information by the motion coprocessor according to some embodiments.

[0023] Figure 7 is a block diagram illustrating an example device according to some example embodiments.

[0024] Figure 8 An example of detecting a settled state according to some exemplary embodiments is shown. DETAILED DESCRIPTION

[0025] The present disclosure generally relates to determining the location of a mobile device (eg, phone, smartwatch) based on the state of the mobile device and reducing the amount of resources consumed by an application processor of the mobile device in identifying the location of the mobile device.

[0026] Different types of applications may be installed on a mobile device or may communicate with the mobile device. The mobile device may include, for example, a mobile phone, a smartwatch, or any portable electronic device. Some applications may request location information (e.g., current location coordinates) of the mobile device. Specifically, the application may register location information, for example, via a system service. Multiple applications may be running on the mobile device, and therefore, the mobile device may need to obtain location information for multiple applications running on the mobile device.

[0027] According to an exemplary embodiment, the application processor is typically not woken up frequently (e.g., every few minutes) to obtain location information. Instead, when the processor determines that a desired state has occurred, the application processor may be woken up or a determination may be triggered as to whether the application processor should be woken up. The application processor may be placed in a sleep state (or other low-power mode) and woken up when the desired state occurs. The desired state may be specified by the application processor and communicated to the coprocessor. Whether the desired state has occurred may be determined within at least a specified amount of time before waking the application processor, thereby improving the accuracy of the state determination and reducing unnecessary wake-ups of the application processor.

[0028] These are merely examples, and the exemplary embodiments may be applied to other situations where it is desirable to preserve application processor resources and reduce the cost of determining location and location changes.

[0029] I. Overview of Mobile Device Location Determination

[0030] According to an exemplary embodiment, the application processor obtains the location of the mobile device in response to the occurrence of a desired state (which may be determined by a co-processor of the mobile device).

[0031] Figure 1 A method 100 for determining the location of a mobile device is shown according to some exemplary embodiments. The method 100 can achieve energy conservation by enabling an application processor of the mobile device to control when to wake up from a sleep mode. For example, the application processor can specify what mobile state the mobile device should be in in order for the application processor to wake up.

[0032] like Figure 1 As shown, in step 110, the application processor is in awake mode or not in a low-power state. When the application processor is in awake mode, the application processor may be in high-power mode. In the example described, the application processor switches between low-power mode and high-power mode. However, the application processor may switch between low-power mode and a mode different from low-power mode. The application processor obtains location information of the mobile device. The application processor notifies one or more coprocessors that it is going to sleep and wakes up the application processor when a desired state occurs. The desired state may correspond to, for example, a settled state or an unsettled state, which will be further described below. After registering the desired mobile state with one or more coprocessors, the application processor changes from high-power mode to low-power mode, for example, goes to sleep. High-power mode is high only in the sense that it uses more power than low-power mode.

[0033] At step 120, while the application processor is in low power mode, one or more coprocessors can monitor movement information of the mobile device to determine whether a desired state has occurred. For example, the coprocessor can determine whether the movement information corresponds to a stationary, moving, pedestrian, or vehicle movement classification.

[0034] At step 130, in response to the one or more coprocessors determining that the desired state has occurred, the one or more coprocessors notify the application processor of the occurrence of the desired state. The one or more coprocessors may determine that the desired state has occurred by monitoring movement information of the mobile device and classifying the movement information. The one or more coprocessors may determine whether the movement classification of the movement information corresponds to the desired state. The movement information may be measured by a sensor such as an accelerometer or a gyroscope.

[0035] In response to receiving the notification from the one or more coprocessors, the application processor may determine whether location information is required at step 140. If location information is required, the application processor may wake up and change from a low power mode to a high power mode and obtain the location information of the mobile device. The application processor may utilize positioning circuitry, such as a global positioning system (GPS), WiFi, beacons, etc., to obtain the location information.

[0036] The above method is a general exemplary embodiment of obtaining location information of a mobile device, and the steps will be described in more detail below.

[0037] II. System

[0038] An application processor of the mobile device may communicate with one or more co-processors of the mobile device to determine whether location information should be obtained.

[0039] Figure 2 An example system of a mobile device 200 according to some example embodiments is shown. The mobile device 200 may include an application processor 210, one or more coprocessors 250, a timer 260, and a sensor 270. The application processor 210 may include a state engine 211 and a location stack 212. The location stack 212 may include a location awareness engine 213. The coprocessor 250 may include a motion coprocessor 220, a network chip 230, and a power supply 240. The motion coprocessor 220 may include a motion classifier 221. The motion classifier 221 may also be referred to as a state classifier.

[0040] Motion coprocessor 220, network chip 230, and power supply 240 are identified as coprocessors because they are used to determine whether a specific motion state has occurred. Although motion coprocessor 220, network chip 230, and power supply 240 are identified as coprocessors, other sensors can be used to identify and determine the movement of mobile device 200. In addition, coprocessors can be used individually or in combination. For example, only one of coprocessors 250 (motion coprocessor 220, network chip 230, or power supply 240) can be used to identify the motion state of the mobile device, or multiple coprocessors 250 can be used to identify the motion state of the mobile device.

[0041] A. Application Processor

[0042] Application processor 210 may be a main processor or central processing unit (CPU) of mobile device 200. Application processor 210 is operable to control operations of components of mobile device 200. Therefore, continuously operating application processor 210 may consume significant resources.

[0043] like Figure 2 As shown, the application processor may include a state engine 211 and a location stack 212 .

[0044] 1. State Engine

[0045] State engine 211 determines the current movement state of the mobile device based on the motion classification received from one or more coprocessors 250. If the motion classification is received from one or more coprocessors 250, the state of the mobile device may correspond to an unknown state, a settled state, or an unsettled state.

[0046] a) Unknown status

[0047] The Unknown state indicates that the device's current state is unknown. A mobile device may initially be in the Unknown state until its state is determined. Furthermore, if state data is unclear, the mobile device may remain in the Unknown state until further information becomes available. For example, motion data covering a larger period of time may be available.

[0048] b) Stable state

[0049] In a settled state, it is determined that the mobile device 200 is not moving. This may mean that the geographic coordinates of the mobile device 200 have not changed, or have not changed within a threshold. For example, if the user is sitting in a movie theater, the mobile device will not move. A settled state may also include some movement of the mobile device even when the geographic coordinates of the mobile device have not changed. Therefore, although there is movement, there is no change in the geographic coordinates, and such movement can be interpreted as noise. A user unloading groceries at home or running on a treadmill at the gym are examples of movement in which the geographic coordinates of the mobile device have not changed. The determination that the mobile device is in a settled state may be based on the confidence score of the motion classification. Motion classifications that occur more frequently over a period of time may have higher confidence scores than motion classifications that occur less frequently over a period of time.

[0050] Figure 8 An example of detecting a settled state according to some exemplary embodiments is shown.

[0051] Mobile device 802 may be a device configured to perform an action upon entering geo-fenced environment 804. The action may be executing a system function of mobile device 802 or executing an application of mobile device 802. In the example shown, mobile device 802 is configured to display a prompt "Please review" upon entering geo-fenced environment 804.

[0052] A geofenced environment 804 can be a geographic area enclosed by a "virtual" fence (e.g., an office building 805). The mobile device 802 can use various sensors and positioning technologies, such as signals from a global navigation satellite system (GNSS), a wireless access point (e.g., a Wi-Fi™ access point), or both, to determine that the mobile device 802 has crossed the geofenced environment 104.

[0053] In the example shown, mobile device 802 is brought into geo-fenced environment 804 by user 812. Mobile device 802 can determine that mobile device 802 has entered geo-fenced environment 804 by detecting signals from wireless access points 806, 808, and 810. Upon entering geo-fenced environment 804, without immediately displaying a notification (e.g., a prompt), mobile device 802 can determine whether user 812 is in a stable state.

[0054] User 812 is settled when the activity of user 812, as determined by measurements of environmental variables, indicates that user 812 is statistically ready to interact with mobile device 802 to perform an action. In the illustrated example, user 812 carries mobile device 802 while walking along path 813 through the lobby of office building 805 and into user 812's office. Walking along path 813 (as indicated by the motion sensor and the floor plan) is detected as an unsettled state. User 812 then sits down in a chair in her office. Sitting down in the chair in her office (as indicated by the motion sensor and the floor plan) is detected as a settled state. Mobile device 802 can determine that user 812 is settled while user 812 is sitting in their chair, even if mobile device 802 itself is in motion. For example, even if user 812 takes mobile device 802 out of their pocket and shakes it or otherwise moves it after sitting down in the chair, mobile device 802 can still determine that user 812 is settled.

[0055] After determining that the user 812 has settled, the mobile device 802 can perform the action, for example, by displaying a prompt on the screen 816 of the mobile device 802. Thus, the mobile device 802 delays the performance of the action from the time the geofence is crossed to the time when the user 812 has settled down and is in the installed state.

[0056] User 812 may also move outside of geo-fenced environment 804 (e.g., movement 817). A constant occupancy area may exist if mobile device 802 is stationary outside geo-fenced environment 804. If the occupancy area is constant, the mobile device may be in a stationary state.

[0057] c) Unstable state

[0058] In an unsettled state, it is determined that the mobile device is moving. Such movement may result in a change in the geographic location coordinates of the mobile device 200. The unsettled state may include any pedestrian state (e.g., walking, running, etc.) or vehicle state (e.g., driving, riding, etc.). Therefore, the application processor may not care about slight movements of the mobile device 200, which does not require any update of the location information. Slight movements of the mobile device 200 do not result in location information that needs to be updated. Therefore, in an unsettled state, the geographic location coordinates of the mobile device may change. The determination that the mobile device is in an unsettled state may be based on the confidence score of the motion classification. Motion classifications that occur more frequently over a period of time may have higher confidence scores than motion classifications that occur less frequently over a period of time.

[0059] 2. Position Stack

[0060] Location stack 212 can be used to store location information of mobile device 200. The location stack can include a location awareness engine 213. Location awareness engine 213 can be aware of the location status of the mobile device. Location stack 212 can create a log of where the mobile device has been. The log maintains a history of the mobile device's location. The log can be stored in the mobile device's memory. If the desired status has been achieved, location stack 212 is activated to obtain location information.

[0061] The application processor 210 may communicate with one or more coprocessors 250 and may send a request 214 to the motion coprocessor 220 to be notified of a desired motion classification, eg, that the mobile device has changed to a particular motion state.

[0062] B. Mobile device coprocessor

[0063] The mobile device coprocessor obtains and classifies movement information. The mobile device coprocessor may include a motion coprocessor, a network chip, and a power supply.

[0064] 1. Motion coprocessor

[0065] The motion coprocessor 220 may include a motion classifier 221. The motion coprocessor 220 may obtain motion information of the mobile device 200. For example, the motion coprocessor 220 may receive motion information including measurement values ​​from one or more motion sensors 270, such as an accelerometer or a gyroscope. After receiving the motion information 271 from the one or more motion sensors, the motion coprocessor may classify the motion information using the motion classifier 221.

[0066] Sensor 270 may include an always-on processor that can be used to determine movement information. For example, motion coprocessor 220 may communicate with an accelerometer or gyroscope that can continuously monitor movement information at a lower energy cost than an application processor.

[0067] The motion classifier 221 or state classifier may be used to classify the movement information. For example, the motion classifier may classify the received movement information as corresponding to a pedestrian state (e.g., walking, running, etc.) or a vehicle state (e.g., driving, riding, etc.). The motion coprocessor 220 may transmit the movement classification to the application processor 210.

[0068] The motion classifier 221 of the motion coprocessor 220 may receive movement information from any one or more of the sensors 270. The motion classifier 221 may use the movement information to determine the probability of one or more classifications. Classifications may include stationary, moving, pedestrian, or vehicle. The pedestrian classification may include subclassifications of walking, running, or other pedestrian movements. The vehicle subclassification may include driving a car, bicycle, or other vehicle. The motion classifier 221 may assign a probability or confidence score to each predetermined classification based on the movement information provided to the motion classifier 221. The motion classifier 221 may send all classifications and subclassifications, along with the associated probabilities and / or confidence scores, to the state engine 211 of the application processor 210.

[0069] In the example shown, motion classifier 221 receives movement information from one or more sensors 270, which may be accelerometers or gyroscopes. Motion classifier 221 can then determine a motion classification for the mobile device. An accelerometer can measure acceleration. A gyroscope can be used to determine angular motion, which can indicate rotation or a type of mechanical movement.

[0070] 2. Network (e.g., WiFi) chips

[0071] The network chip 230 can be used to identify the wireless area network used by the mobile device 200 (e.g., the WiFi footprint). For example, if the mobile device 200 switches from a first WiFi network to a second WiFi network, it can be determined that the mobile device has been moving since it switched WiFi networks. If the WiFi environment is static, the mobile device is unlikely to be moving.

[0072] When a user selects a new WiFi network, or if the WiFi chip detects that a previous WiFi network is no longer available and a new WiFi network available at the current location should be selected, the WiFi chip may identify the network.

[0073] A wireless access point can be used to determine whether mobile device 200 is stationary. Mobile device 200 may include a radio frequency (RF) signal receiver capable of detecting signals from the wireless access point. Mobile device 200 may record readings from the RF receiver. The readings may include measurements of the RF signal. Based on the readings, a motion classification and its corresponding movement state may be identified.

[0074] 3. Power supply

[0075] Power supply 240 can be used to determine whether mobile classification is required. The amount of power used by mobile device 200 can indicate whether the mobile device is moving. For example, if mobile device 200 is powered off, this may indicate that mobile device 200 is not in use and, therefore, location information does not need to be obtained. However, if mobile device 200 is determined to be powered on, this may indicate that mobile device 200 is turned on and, therefore, updated location information should be obtained. The mobile device can be powered on when, for example, the display is active or the application processor is active. For example, the mobile device may be turned off during a layover on an airplane and then turned back on upon arrival in a different city or country. Therefore, updated location information should be obtained.

[0076] While motion coprocessor 220, network chip 230, and power supply 240 are described as examples of coprocessor 250, other types of sensors may be used as coprocessors. Specifically, any type of sensor that can be used to determine the movement of mobile device 200 may be used as a coprocessor. Furthermore, coprocessors 250 may be used individually or in combination. That is, two or more coprocessors 250 may be used to determine the movement of mobile device 200. For example, motion classifications from two or more coprocessors may be used to increase the confidence score of the current motion classification of the mobile device.

[0077] In addition to motion classification, the mobile device's system can also use time information to determine whether the application processor should be woken up.

[0078] C.Timer

[0079] Although the application processor 210 can be awakened (e.g., moved from a low power mode to a higher power mode) based on a signal from one or more coprocessors 250, this may not occur for an extended period of time. It may be desirable not to have excessively long intervals between determinations of the location of the mobile device. The timer 260 can be a countdown timer or a default timer to provide a maximum amount of time between location determinations.

[0080] Therefore, timer 260 can be used to further verify whether the application processor should be woken up. The timer can store a timer value for each mobile state. For example, a state timer value stored for a stable state can be 60 minutes, and a state timer value stored for an unsettled state can be five minutes. The state timer value for each state can be predetermined or user-adjustable. When this maximum delay time is triggered, timer 260 can wake up application processor 210.

[0081] Timer 260 may also store a time log indicating when the application processor was last awakened or when the application processor last fell asleep. For example, based on the last time the application processor was awakened or last fell asleep, it may be determined whether the application processor should be awakened. Thus, a minimum delay time may be required between the application processor going to sleep and being awakened. For example, if the mobile device has transitioned to a motion classification corresponding to an unsettled state, but two minutes have passed since the last time the mobile device was determined to have transitioned to an unsettled state, the application processor will not be awakened. Since two minutes is less than the five-minute state timer value for the unsettled state, the application processor is not awakened. Therefore, it is unlikely that the user has entered a new location or should obtain location information.

[0082] If one or more coprocessors 250 determine that the application processor should be awakened, the timer value (e.g., as stored in the timer) may be referenced to further confirm whether the application processor should be awakened. If location information has not been recently acquired based on the information in timer 260, location information may be acquired now. Furthermore, if the timer value has not expired, the timer value may be moved forward to the time when the location was last acquired. Timer 260 may be used in conjunction with coprocessor 250. However, coprocessor 250 may determine that application processor 210 should be awakened without referencing timer 260.

[0083] Thus, according to an exemplary embodiment, a mobility classification of a mobile device can be obtained, and if the mobility classification satisfies the desired state of an application processor, the application processor can be awakened. In addition to a predetermined time value or a default timer when determining whether to wake up the application processor, the application processor can use a combination of mobility classifications. The total operating time of the application processor is reduced, thereby reducing the amount of resources used. Furthermore, the application processor, whose operation may be costly, can be used more frequently and more efficiently.

[0084] III. Methods for determining the location of a mobile device

[0085] Figure 3 A method 300 for determining a location of a mobile device is shown according to some exemplary embodiments. The method 300 may correspond to Figure 1 However, method 300 describes Figure 1 In addition, Figure 3 The mobile device described in the Figure 2 For example, the application processor 210, the state engine 211, the location stack 212, the motion coprocessor 220, the motion classifier 221, the network chip 230 and the power supply 240 may be used to implement Figure 1 、 3 , 4 and 5 methods.

[0086] Although the steps in the following methods are described in a particular order, the order of the steps may be changed, or one or more of the steps may be eliminated.

[0087] At step 310, the application processor identifies a current mobility state of the mobile device based on a motion classification received from one or more coprocessors. For example, the application processor may identify a first mobility state of the mobile device (e.g., unknown, settled, unsettled) as the current mobility state. The application processor may identify the mobility state based on a motion classification stream received from the coprocessor. The coprocessor may include a motion coprocessor, a network chip, and / or a power supply. For example, the application processor may receive a motion classification from the motion coprocessor, and the application processor may identify that it is in an unknown state. For example, the motion classification may be inconclusive and not clearly indicate a corresponding state.

[0088] At step 320, the application processor sends a request to one or more coprocessors to identify a change in the mobile device from a first mobility state to a second mobility state. Furthermore, the application processor may request notification of specific changes (transitions) in the mobility state of the mobile device. For example, the application processor may send a request to the motion coprocessor to be notified when the state transitions from an unknown state to an unsettled state.

[0089] After the application processor sends the request to the coprocessor, the application processor will reduce its power level at step 330. For example, the application processor may enter sleep or enter a low power mode.

[0090] At step 340, the processor monitors movement information received from one or more sensors to determine a motion classification of the mobile device. The sensors may include accelerometers or gyroscopes capable of providing movement information to the coprocessor. The coprocessor may receive movement information over a period of time and classify the movement information into a motion classification to determine the current motion classification of the mobile device. For example, a WiFi chip may monitor a network ID to determine the movement information of the mobile device.

[0091] At step 350, the coprocessor may determine that the current motion classification determined in step 340 corresponds to a second motion state. That is, the current motion state is different from the previous motion state. Furthermore, the second motion state is a state desired by the application processor, and therefore, the application processor should be notified that the mobile device has entered the desired state.

[0092] At step 360, before sending a notification to the application processor, a determination may also be made as to whether the desired change in mobility state requested by the application processor occurs within a default time period. The default time period may also be referred to as a lag time. If the desired change in state specified in the application processor's request does not occur within the default time period, a notification may be sent to the application processor. The default time period is the amount of time during which a location should be determined. The default time period may be based on the last time a location was determined. For example, the default time period may correspond to 60 minutes, thereby obtaining a location at least once every 60 minutes.

[0093] Therefore, if the location is within the default time period, it can be determined that the application processor does not need to be woken up, and the coprocessor will not wake up the application processor. In addition, the default time period that has not expired can be updated. For example, after determining that the application processor does not need to be woken up, the default time period can be restarted (e.g., restarting the 60-minute hysteresis period).

[0094] If it is determined that a notification should not be sent to the application processor, method 300 may stop at step 360. However, if the default time period has been met (e.g., the default time period has been met or has passed), it may be determined that the application processor should be notified that its desired movement state has occurred. Alternatively, step 360 may be skipped, and the application processor may be notified that its desired movement state has occurred based on the movement classification received from the motion coprocessor without using the default time period.

[0095] At step 370, the coprocessor sends a notification to the application processor regarding the motion classification of the mobile device corresponding to the desired second motion state. The notification may include the motion classification determined by the coprocessor. The notification may also include a confidence score for the motion classification and other information to facilitate the application processor's determination of whether to wake up.

[0096] At step 380, the application processor receives the notification from the coprocessor and may determine whether location information is required. If location information is required, the application processor obtains the location information of the mobile device. The application processor obtains the geographic coordinates of the mobile device. The application processor may use GPS or other location circuitry to determine the current location of the mobile device.

[0097] At step 390, if location information should be obtained, the application processor switches from low power mode or sleep mode to high power mode or awake mode and obtains location information of the mobile device. The location information may be the geographic coordinates of the mobile device. The application processor may use GPS or other location circuitry to determine the current location of the mobile device.

[0098] IV. Methods for registering transition states

[0099] Figure 4A flow chart is shown of a method 400 of an application processor registering with a motion coprocessor for a desired transition state, according to some exemplary embodiments. Figure 4 The method 400 may correspond to Figure 1 Method 100 and Figure 3 The steps in method 400 are as follows.

[0100] At step 410, the application processor determines the initial state of the mobile device. Figure 4 In an example of FIG, the application processor can determine that the mobile device is initially in an unknown state. The mobile device can remain in the unknown state until additional motion classification is obtained from the motion coprocessor.

[0101] At step 420, the current state of the mobile device is determined. The application processor may receive a motion information stream including motion classification from the motion coprocessor to determine the current state. For example, based on the received motion information, the application processor may determine that it is currently in a settled state. However, this is merely an example. Based on the motion classification stream, the application processor may determine that it is in an unsettled state, or the state may remain unknown.

[0102] At step 430, the application processor registers a specific motion state that the application processor desires to occur. For example, the application processor may register to be notified when a settled state occurs by sending a request to the coprocessor. The application processor may specifically transition from a first state to a second state, for example, where the mobile device transitions from an unsettled state to a settled state, or vice versa. The coprocessor may convert the motion state received from the application into a corresponding motion classification. Alternatively, the application processor may convert the desired motion state into a corresponding motion classification.

[0103] If the application processor is in an unknown state at step 420, the application processor may register to be notified if a settled or unsettled state occurs. Figure 4 In the example shown, because the application processor is determined to be in a settled state, at step 430 , the application processor may register to be notified when the motion state changes to an unsettled state.

[0104] At step 440, the application processor may notify the motion coprocessor that it no longer needs to receive motion classifications classified by the motion coprocessor. For example, when the application processor determines that it has sufficient information to determine the current state of the mobile device, the application processor may stop receiving the motion classification stream. Such notification may occur in conjunction with the request from step 430. Alternatively, the notification may occur before or after the request. The determination that motion classification is no longer needed may be made when the application processor determines that it will enter low-power mode.

[0105] At step 450 , after the application processor has registered, the application processor goes to sleep or enters a low power mode.

[0106] At step 460, when the state registered by the application processor has occurred, the application processor may receive a notification from the motion coprocessor and determine whether it should wake up. The notification may be received by a portion of the application processor, and therefore analysis of the notification does not require waking up the entire application processor. The analysis may confirm that the notification was generated correctly, for example, when the notification includes the current motion classification. For example, if the motion classification corresponds to the expected movement state, the application processor may wake up. Figure 4 In the example shown, the application processor wakes up when the mobile device has transitioned to an unsettled state.

[0107] The application processor will obtain the current location information at step 470. For example, the application processor may request the current location of the mobile device from GPS.

[0108] V. Methods for Determining Movement Classification

[0109] Figure 5 A method for determining a motion classification of movement information of a mobile device according to some exemplary embodiments is shown. A coprocessor interprets the movement information to classify the movement information. The coprocessor can determine whether the classification corresponds to a movement state expected by an application processor.

[0110] At step 510, the motion coprocessor stores a buffer of motion information. The motion information may be obtained from one or more sensors, such as an accelerometer or a gyroscope. The motion processor collects movement information over time.

[0111] At step 520 , the motion coprocessor converts the current classification of the mobile device into a settled state or an unsettled state. For example, the motion coprocessor may use a conversion table to convert the movement state from the application processor into a corresponding motion classification.

[0112] At step 520, the motion coprocessor receives a registration request generated by the application processor. The request includes the desired motion state of the application processor. The request may include the motion state (e.g., settled or unsettled) without specifying a specific transition. Alternatively, the request may specify a transition to trigger a wakeup of the application processor (e.g., settled to unsettled, unsettled to settled, etc.). In the example described above, Figure 4 In the embodiment, the application processor requests to be notified that the state of the mobile device has transitioned from a settled state to an unsettled state.

[0113] In embodiments where there is no one-to-one correspondence between movement states (determined by the application processor) and motion classifications (determined by the coprocessor), for example, the application processor or the coprocessor may perform the conversion. For example, the application processor may convert the movement state in a registration request to one or more corresponding motion classifications before sending the registration request to the motion coprocessor. Alternatively, the request sent by the application processor may include the desired movement state, and the motion coprocessor may convert the movement state to a motion classification.

[0114] At step 530 , the motion coprocessor classifies the movement information of the mobile device. Figure 6A and Figure 6B Illustrated is the classification of movement information by the motion coprocessor according to some embodiments.

[0115] As shown in graph 600, time appears on the x-axis, and the categories "stationary," "moving," and "pedestrian / vehicle" appear on the y-axis. Movement information received from a motion sensor can be classified as, for example, stationary, moving, or pedestrian / vehicle. However, these are merely examples, and other categories may be used.

[0116] Stationary may correspond to a stable state in the application processor. Pedestrian / Vehicle classification may correspond to an unsettled state in the application processor. Movement may correspond to a stable or unsettled state based on whether the movement value is higher or lower on the x-axis. Furthermore, Stationary may be a state in which the mobile device is not moving. Movement may be a state in which the mobile device is not stationary, but is not in a pedestrian or vehicle state. In the Movement state, the mobile device is between Stationary and Pedestrian / Vehicle states. Pedestrian / Vehicle classification corresponds to either a pedestrian state or a vehicle state and may include Walking, Running, and Driving.

[0117] As shown in graph 600 , movement information for different classifications is continuously analyzed over time window t. As shown in graph 600 , during time window t, the movement information of the mobile device is classified as stationary, moving, pedestrian / vehicle, then returns to moving, and then returns to pedestrian / vehicle. Therefore, over time window t, the movement information of the mobile device is classified as either stationary, moving, or pedestrian / vehicle. In other words, a motion classification can be assigned to each time point in time window t.

[0118] The bar graph 610 summarizes the movement information classified in the graph 600. As shown in the bar graph 610, the pedestrian / vehicle classification occurs most frequently during a given time window. Therefore, the mobile device movement information is classified as pedestrian / vehicle, which corresponds to an unsettled state of the application processor. The classification that occurs most frequently within a predetermined time period can be identified as the current classification. For example, if the stationary classification occurs most frequently during the time window, it can be determined that the mobile device is in a stable state. If the walking classification occurs most frequently, it can be determined that the mobile device is in an unsettled state. The more times a classification occurs, the higher the confidence level in determining that the classification is the final motion classification for the time window. Although the pedestrian / vehicle classification occurs most frequently in the example, the classification may not be clear-cut, and the classifications can be averaged to identify the appropriate classification.

[0119] Based on the motion classification flow shown in grid 600 and histogram 610, the motion coprocessor can determine that the mobile device should be classified as a pedestrian / vehicle, which corresponds to an unsettled state of the application processor. The motion coprocessor can provide the application processor with the motion classification with the highest confidence score based on histogram 610. Therefore, the motion coprocessor can provide the application processor with a hierarchy of motion classifications so that the application processor can determine the current motion classification. Using histogram 610 can prevent the coprocessor from waking up the application processor when a particular classification only occurs briefly.

[0120] Alternatively, the motion coprocessor can provide the application processor with multiple motion classifications and their corresponding confidence scores, and the application processor can use the motion classifications to identify the current motion state. Such techniques can be used by the application processor to determine the current motion state, after which the application processor sends a request to be woken up for a specific motion state or one or more motion classifications and enter a low-power state.

[0121] Thus, the motion coprocessor generates the histogram 610. However, in another exemplary embodiment, the application processor may generate the histogram 610 based on the motion classification, as shown in grid 600, which may be received from the motion coprocessor.

[0122] Additionally, the application processor may determine a first movement state of the mobile device (eg, Figure 3 In other words, when determining the first movement state, the motion coprocessor may provide the motion classification with the highest confidence score, or multiple motion classifications and their corresponding confidence scores, to the application processor; and the application processor may determine the first movement state. Alternatively, the application processor may receive a motion classification stream from the motion coprocessor and identify the most likely current motion classification from the motion classification stream to determine the first movement state of the mobile device.

[0123] At step 540, the motion coprocessor determines whether the classification matches the status in the registration request. Figure 4 In the example, Figure 4 In the registration request, the application processor requests to be notified that the state of the mobile device has transitioned from a settled state to an unsettled state. Accordingly, the motion coprocessor determines that the mobile device matches the state in the registration request based on the motion classification histogram indicating pedestrian / vehicle classification.

[0124] At step 550, if the motion coprocessor determines that the classification matches the registration request in step 540, the motion coprocessor notifies or wakes up the application processor. The motion coprocessor notifies the application processor that the desired state has occurred. The motion coprocessor may notify the application processor via an alert message. Such an alert message has a specific bit or flag set to enable waking up the application processor.

[0125] Further details of determining motion classification based on sensor measurements can be found in U.S. Patent 9,603,123 to Jackson et al., entitled "SENDING SMART ALERTS ON A DEVICE ATOPPORTUNE MOMENTS USING SENSORS."

[0126] While the exemplary embodiment has been described with respect to a motion coprocessor, other coprocessors may be used. For example, a WiFi chip may determine a network classification that may correspond to a motion classification. Also, a power supply may determine a power classification.

[0127] Thus, according to an exemplary embodiment, determining the location of a mobile device may be based on a change in state or event associated with the mobile device.

[0128] VI. Mobile devices

[0129] Figure 7 7 is a block diagram of an example device 700 according to some example embodiments. The example device can be a mobile device. Device 700 generally includes a computer-readable medium 702, a processing system 704, an input / output (I / O) subsystem 706, a wireless circuit 708, and an audio circuit 710 including a speaker 750 and a microphone 752. These components can be coupled via one or more communication buses or signal lines 703. Device 700 can be any portable electronic device, including a handheld computer, a tablet computer, a mobile phone, a laptop computer, a tablet device, a media player, a personal digital assistant (PDA), a key fob, a car key, an access card, a multi-function device, a mobile phone, a portable gaming device, and the like, including combinations of two or more of these items.

[0130] Obviously, Figure 7The architecture shown is only one example of an architecture for the device 700 , and the device 700 may have more or fewer components, or components in a different configuration, than shown. Figure 7 The various components shown in the drawings may be implemented in hardware, software, or a combination of hardware and software, including one or more signal processing circuits and / or application specific integrated circuits.

[0131] The wireless circuitry 708 is used to send and receive information over a wireless link or network to conventional circuitry of one or more other devices, such as an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a CODEC chipset, memory, etc. The wireless circuitry 708 may use various protocols, such as those described herein.

[0132] The wireless circuitry 708 is coupled to the processing system 704 via a peripheral device interface 716. The interface 716 may include conventional components for establishing and maintaining communications between peripheral devices and the processing system 704. Voice and data information received by the wireless circuitry 708 (e.g., in voice identification or voice command applications) is sent to the one or more processors 718 via the peripheral device interface 716. The one or more processors 718 may be configured to process various data formats of the one or more application programs 734 stored on the medium 702.

[0133] Peripherals interface 716 couples the device's input and output peripherals to processor 718 and computer-readable medium 702. Processor(s) 718 communicate with computer-readable medium 702 via controller 720. Computer-readable medium 702 may be any device or medium that can store code and / or data for use by processor(s) 718. Medium 702 may include a memory hierarchy including cache, main memory, and secondary memory.

[0134] Device 700 may also include a power system 742 for powering the various hardware components. Power system 742 may include a power management system, one or more power sources (e.g., batteries, alternating current (AC)), a recharging system, power fault detection circuitry, a power converter or inverter, a power status indicator (e.g., a light emitting diode (LED)), and any other components typically associated with the generation, management, and distribution of power in a mobile device.

[0135] In some embodiments, device 700 includes a camera 744. In some embodiments, device 700 includes a sensor 746. The sensor can include an accelerometer, a compass, a gyroscope, a pressure sensor, an audio sensor, a light sensor, a barometer, etc. Sensor 746 can be used to sense aspects of a location, such as an auditory or optical signature of a location.

[0136] In some embodiments, the device 700 may include a GPS receiver, sometimes referred to as a GPS unit 748. The mobile device may use a satellite navigation system such as the Global Positioning System (GPS) to obtain positioning information, timing information, altitude, or other navigation information. During operation, the GPS unit may receive signals from GPS satellites orbiting the earth. The GPS unit analyzes the signals to estimate transmission time and transmission distance. The GPS unit may determine the current location (current position) of the mobile device. Based on these estimates, the mobile device may determine the position, altitude, and / or current speed. The position may be a geographic coordinate, such as latitude and longitude information.

[0137] The one or more processors 718 execute various software components stored in the media 702 to perform various functions of the device 700. In some embodiments, the software components include an operating system 722, a communication module (or instruction set) 724, a location module (or instruction set) 726, a reminder module 728, and other applications (or instruction sets) 734, such as a car locator application and a navigation application.

[0138] The operating system 722 may be any suitable operating system, including iOS, Mac OS, Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks. The operating system may include various programs, instruction sets, software components, and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.), and facilitate communication between various hardware and software components.

[0139] Communications module 724 facilitates communication with other devices through one or more external ports 736 or via wireless circuitry 708 and includes various software components for processing data received from RF circuitry 708 and / or external ports 736. External ports 736 (e.g., USB, FireWire, Lightning connector, 60-pin connector, etc.) are suitable for coupling to other devices directly or indirectly through a network (e.g., the Internet, a wireless local area network, etc.).

[0140] The location / motion module 726 can help determine the current location (e.g., coordinates or other geographic location identifiers) and movement of the mobile device 700. Modern positioning systems include satellite-based positioning systems such as the Global Positioning System (GPS), cellular network positioning based on "cell IDs," and Wi-Fi positioning technology based on Wi-Fi networks. GPS also relies on the visibility of multiple satellites to determine a location estimate, which may not be visible (or have weak signals) indoors or in "urban canyons." In some embodiments, the location / motion module 726 receives data from the GPS unit 748 and analyzes the signals to determine the current location of the mobile device. In some embodiments, the location / motion module 726 can utilize Wi-Fi or cellular location technology to determine the current location. For example, knowledge of nearby cell locations and / or Wi-Fi access points and their locations can be used to estimate the location of the mobile device. Information identifying Wi-Fi or cellular transmitters is received at the wireless circuit 708 and transmitted to the location / motion module 726. In some embodiments, the location module receives one or more transmitter IDs. In some embodiments, the sequence of transmitter IDs can be compared to a reference database (e.g., a cell ID database, a Wi-Fi reference database) that maps or associates transmitter IDs to location coordinates of corresponding transmitters, and based on the location coordinates of the corresponding transmitters, an estimated location coordinate of the device 700 is calculated. Regardless of the particular positioning technology used, the position / motion module 726 receives information from which a position fix can be derived, interprets the information, and returns location information such as geographic coordinates, latitude / longitude, or other location fix fix data.

[0141] The prompt module 728 (or prompt system) may include various sub-modules or systems.

[0142] The one or more applications 734 located on the mobile device may include any application installed on the device 700, including but not limited to a browser, an address book, a contact list, email, instant messaging, word processing, keyboard emulation, desktop applets, JAVA-enabled applications, encryption software, digital rights management, voice recognition, voice replication, a music player (to play back recorded music stored in one or more files such as MP3 or AAC files), and the like.

[0143] These may be other modules or instruction sets (not shown), such as a graphics module, a timing module, and the like. For example, the graphics module may include various conventional software components for rendering, animating, and displaying graphical objects (including, but not limited to, text, web pages, icons, digital images, animations, and the like) on a display surface. In another example, the timer module may be a software timer. The timer module may also be implemented in hardware. The timing module may maintain various timers for any number of events.

[0144] The I / O subsystem 706 may be coupled to a display system (not shown), which may be a touch-sensitive display. The display displays visual output to the user in the GUI. The visual output may include text, graphics, video, and any combination thereof. Some or all of the visual output may correspond to user interface objects. The display may use light-emitting diode (LED) technology, liquid crystal display (LCD) technology, or light-emitting polymer display (LPD) technology, although other display technologies may be used in other examples.

[0145] In some embodiments, the I / O subsystem 706 may include a display and user input devices such as a keyboard, mouse, and / or touchpad. In some embodiments, the I / O subsystem 706 may include a touch-sensitive display. The touch-sensitive display may also accept input from the user based on tactile and / or tactile contact. In some embodiments, the touch-sensitive display forms a touch-sensitive surface that accepts user input. The touch-sensitive display / surface (together with any associated modules and / or instruction sets in the medium 702) detects contact (and any movement or release of the contact) on the touch-sensitive display and converts the detected contact into interaction with a user interface object, such as one or more soft keys displayed on the touch screen when the contact occurs. In some embodiments, the contact point between the touch-sensitive display and the user corresponds to one or more fingers of the user. The user can use any suitable object or accessory such as a stylus, pen, finger, etc. to contact the touch-sensitive display. The touch-sensitive display surface can use any suitable touch-sensitive technology to detect contact and any movement or release thereof, including capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more contact points with the touch display.

[0146] In addition, the I / O subsystem may also be coupled to one or more other physical control devices (not shown), such as buttons, keys, switches, rocker buttons, dials, slide switches, joysticks, LEDs, etc., for controlling or performing various functions such as power control, speaker volume control, phone ring volume, keyboard input, scrolling, holding, menus, lock screen, clearing and ending communications, etc. In some embodiments, in addition to the touch screen, the device 700 also includes a touchpad (not shown) for activating or deactivating specific functions. In some embodiments, the touchpad is a touch-sensitive area of ​​the device that, unlike the touch screen, does not display visual output. The touchpad can be a touch-sensitive surface separate from the touch-sensitive display or an extension of the touch-sensitive surface formed by the touch-sensitive display.

[0147] In some embodiments, an application executed on a user's device may be utilized to perform some or all of the operations described herein. Circuits, logic modules, processors, and / or other components may be configured to perform the various operations described herein. Those skilled in the art will appreciate that, depending on the specific implementation, such configuration may be accomplished by the design, setup, interconnection, and / or programming of specific components, and that, again depending on the specific implementation, the configured components may or may not be reconfigurable for different operations. For example, a programmable processor may be configured by providing appropriate executable code; a dedicated logic circuit may be configured by appropriately connecting logic gates and other circuit elements; and so on.

[0148] Any software component or functionality described in this patent application can be implemented as software code that needs to be executed by a processor using any suitable computer language such as Java, C, C++, C#, Object C, Swift, or a scripting language such as Perl or Python, using, for example, conventional or object-oriented techniques. The software code can be stored on a computer-readable medium as a series of instructions or commands to achieve storage and / or transmission. Suitable non-transitory computer-readable media may include random access memory (RAM), read-only memory (ROM), magnetic media such as a hard drive or floppy disk, or optical media such as a compact disk (CD) or DVD (digital versatile disk), flash memory, etc. The computer-readable medium can be any combination of such storage or transmission devices.

[0149] The computer program incorporating the various features of the example embodiments may be encoded on various computer-readable storage media; suitable media include disks or tapes, optical storage media such as compact discs (CDs) or DVDs (digital versatile discs), flash memory, and the like. A computer-readable storage medium encoded with program code may be packaged with a compatible device or provided independently from other devices. In addition, program code may be encoded and transmitted via wired optical and / or wireless networks (including the Internet) conforming to a variety of protocols, thereby allowing distribution, for example, via Internet download. Any such computer-readable medium may be present in or located within a single computer product (e.g., a hard drive, a CD, or an entire computer system), and may be present in or located within different computer products within a system or network. The computer system may include a monitor, printer, or other suitable display for providing any results mentioned herein to a user.

[0150] Although specific embodiments have been described, various modifications, alterations, alternative constructions, and equivalents are encompassed within the scope of the exemplary embodiments. The various exemplary embodiments are not limited to operating in certain specific data processing environments, but are freely operable in a variety of data processing environments. Furthermore, although the exemplary embodiments have been described using a specific series of transactions and steps, it should be apparent to those skilled in the art that the scope of the exemplary embodiments is not limited to the described series of transactions and steps. The various features and aspects of the above-described embodiments may be used individually or in combination.

[0151] In addition, although the exemplary embodiments have been described using a specific combination of hardware and software, it should be appreciated that other combinations of hardware and software are also within the scope of the exemplary embodiments. The exemplary embodiments may be implemented in hardware only, or in software only, or using a combination thereof. The various processes described herein may be implemented in any combination on the same processor or on different processors. Thus, where a component or module is described as being configured to perform certain operations, such configuration may be implemented, for example, by designing an electronic circuit to perform the operation, programming a programmable electronic circuit (such as a microprocessor) to perform the operation, or any combination thereof. Processes may communicate using a variety of techniques, including but not limited to conventional techniques for inter-process communication, and different pairs of processes may use different techniques, or the same pair of processes may use different techniques at different times.

[0152] The specification and drawings are, therefore, to be regarded as illustrative rather than restrictive. However, it will be appreciated that additions, subtractions, deletions, and other modifications and changes may be made thereto without departing from the broader spirit and scope set forth in the claims. Therefore, while specific embodiments have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.

Claims

1. A method for determining a location of a mobile device, comprising: receiving, by an application processor of the mobile device, a request to determine the location of the mobile device; wherein upon receiving the request to determine the location of the mobile device, the application processor: sending a request to a coprocessor of the mobile device to identify a change in a current mobility state of the mobile device to a second mobility state and to notify the application processor of the change in the current mobility state of the mobile device; reducing, by the application processor, a power level of the application processor after sending the request; wherein upon receiving a request to identify a change in a current mobile state of the mobile device, the coprocessor: Monitoring movement information during a time period to determine a movement classification of the mobile device, wherein determining the movement classification comprises: analyzing the movement information to classify the movement information of the mobile device, generating a histogram of movement classifications for the time period, and identifying the most frequently occurring movement categories during the time period; After identifying the motion classification, the coprocessor: determining that the motion classification corresponds to the second movement state; and A notification is sent to the application processor regarding a motion classification of the mobile device corresponding to the second motion state.

2. The method of claim 1 , wherein upon receiving notification of the motion classification, the application processor: determining whether to obtain location information based on the notification; In response to determining that the location information should be obtained, increasing a power level of the application processor in response to receiving the notification; After increasing the power level of the application processor, obtaining location information of the mobile device; as well as A response regarding the location of the mobile device is returned.

3. The method according to claim 1, further comprising: Determine whether the default time period has expired; as well as In response to the default time period expiring: determining, by the application processor, whether to obtain location information based on the notification; In response to determining that the location information should be obtained, increasing, by the application processor, a power level of the application processor in response to receiving the notification; as well as After increasing the power level of the application processor, location information of the mobile device is obtained by the application processor. 4 . The method of claim 1 , wherein the coprocessor converts the motion classification into a corresponding movement state of the application processor.

5. The method of any one of claims 1-3, wherein the application processor determines the current mobility state of the mobile device based on a mobility information stream received from the coprocessor.

6. The method of any one of claims 1-3, wherein the application processor identifies a desired mobility state and identifies the desired mobility state in the request to the coprocessor.

7. The method according to any one of claims 1-3, wherein the coprocessor analyzes the movement information to classify the movement information of the mobile device. 8 . The method according to claim 7 , wherein the movement information of the mobile device is classified into one of a stationary state and a moving state, wherein the moving state is one of a pedestrian state or a vehicle state.

9. The method of claim 7, wherein the movement information is received from one of an accelerometer and a gyroscope.

10. The method of any one of claims 1-3, wherein the application processor is a central processing unit of the mobile device.

11. The method according to any one of claims 1 to 3, wherein the coprocessor comprises one of a motion coprocessor and a network chip, wherein the motion coprocessor comprises a gyroscope or an accelerometer, and wherein the network chip comprises a WiFi chip.

12. The method according to any one of claims 2-3, wherein the location information comprises geographic coordinate information.

13. A non-transitory computer-readable medium storing a plurality of instructions that, when executed, control a mobile device comprising one or more processors, the instructions comprising: receiving, by an application processor of a mobile device, a request to determine a location of the mobile device; wherein upon receiving the request to determine the location of the mobile device, the application processor: sending a request to a coprocessor of the mobile device to identify a change in a current mobility state of the mobile device to a second mobility state and to notify the application processor of the change in the current mobility state of the mobile device; reducing, by the application processor, a power level of the application processor after sending the request; wherein upon receiving a request to identify a change in a current mobile state of the mobile device, the coprocessor: Monitoring movement information during a time period to determine a movement classification of the mobile device, wherein determining the movement classification comprises: analyzing the movement information to classify the movement information of the mobile device, generating a histogram of movement classifications for the time period, and identifying the most frequently occurring movement categories during the time period; After identifying the motion classification, the coprocessor: determining that the motion classification corresponds to the second movement state; and A notification is sent to the application processor regarding a motion classification of the mobile device corresponding to the second motion state.

14. The non-transitory computer-readable medium of claim 13 , wherein upon receiving notification of the motion classification, the application processor: determining whether to obtain location information based on the notification; In response to determining that the location information should be obtained, increasing a power level of the application processor in response to receiving the notification; After increasing the power level of the application processor, obtaining, via the application processor, location information of the mobile device; as well as A response regarding the location of the mobile device is returned.

15. The non-transitory computer-readable medium of claim 13, further comprising: Determine whether the default time period has expired; as well as In response to the default time period expiring: determining, by the application processor, whether to obtain location information based on the notification; In response to determining that the location information should be obtained, increasing, by the application processor, a power level of the application processor in response to receiving the notification; as well as After increasing the power level of the application processor, location information of the mobile device is obtained by the application processor.

16. A mobile device comprising: one or more sensors; and One or more processors configured to: receiving, by an application processor of the mobile device, a request to determine a location of the mobile device; wherein upon receiving the request to determine the location of the mobile device, the application processor: sending a request to a coprocessor of the mobile device to identify a change in a current mobility state of the mobile device to a second mobility state and to notify the application processor of the change in the current mobility state of the mobile device; reducing, by the application processor, a power level of the application processor after sending the request; wherein upon receiving a request to identify a change in a current mobile state of the mobile device, the coprocessor: Monitoring movement information during a time period to determine a movement classification of the mobile device, wherein determining the movement classification comprises: analyzing the movement information to classify the movement information of the mobile device, generating a histogram of movement classifications for the time period, and identifying the most frequently occurring movement categories during the time period; After identifying the motion classification, the coprocessor: determining that the motion classification corresponds to the second movement state; and A notification is sent to the application processor regarding a motion classification of the mobile device corresponding to the second motion state.

17. The mobile device of claim 16, wherein upon receiving the notification regarding the motion classification, the application processor: determining whether to obtain location information based on the notification; In response to determining that the location information should be obtained, increasing a power level of the application processor in response to receiving the notification; as well as After increasing the power level of the application processor, obtaining location information of the mobile device; as well as A response regarding the location of the mobile device is returned.

18. The mobile device of claim 16, further comprising one or more processors configured to: Determining whether the default time period has expired; and In response to the default time period expiring: determining whether to obtain location information based on the notification; In response to determining that the location information should be obtained, increasing a power level of the application processor in response to receiving the notification; as well as After increasing the power level of the application processor, location information of the mobile device is obtained.

19. An apparatus for determining a location of a mobile device, comprising: means for receiving, by an application processor of the mobile device, a request to determine a location of the mobile device; wherein the application processor comprises: after receiving a request to determine the location of the mobile device, means for sending, by the application processor, to a coprocessor of the mobile device, a request to identify a change in a current mobility state of the mobile device to a second mobility state and to notify the application processor of the change in the current mobility state of the mobile device; means for reducing, by the application processor, a power level of the application processor after sending the request; The coprocessor includes: after receiving a request to identify a change in a current movement state of the mobile device, a unit for monitoring movement information over a time period to determine a movement classification of the mobile device, wherein determining the movement classification includes: analyzing the movement information to classify the movement information of the mobile device, generating a histogram of movement classifications for the time period, and identifying the most frequently occurring movement categories during the time period; The coprocessor comprises: after identifying the motion classification, means for determining that the motion classification corresponds to the second movement state; and Means for sending a notification to the application processor regarding a motion classification of the mobile device corresponding to the second motion state.

20. The apparatus of claim 19, wherein the application processor further comprises, after receiving the notification regarding the motion classification: means for determining whether to obtain location information based on the notification; means for increasing a power level of the application processor in response to receiving the notification, in response to determining that the location information should be obtained; means for obtaining location information of the mobile device after increasing the power level of the application processor; as well as Means for returning a response regarding the location of the mobile device.

21. The apparatus according to claim 19, further comprising: A unit for determining whether a default time period has expired; as well as In response to the default time period expiring: a unit for determining, by the application processor, whether to obtain location information based on the notification; means for increasing, by the application processor, a power level of the application processor in response to receiving the notification, in response to determining that the location information should be obtained; as well as After increasing the power level of the application processor, the unit obtains, by the application processor, location information of the mobile device.

22. The apparatus of any one of claims 19-21, wherein the coprocessor converts the motion classification into a corresponding movement state for the application processor.

23. The apparatus of any one of claims 19-21, wherein the application processor determines a current mobility state of the mobile device based on a mobility information stream received from the coprocessor.

24. The apparatus of any one of claims 19-21, wherein the application processor identifies a desired mobility state and identifies the desired mobility state in the request to the coprocessor.

25. The apparatus of any one of claims 19-21, wherein the coprocessor analyzes the movement information to classify the movement information of the mobile device. 26 . The apparatus of claim 25 , wherein the movement information of the mobile device is classified into one of a stationary state and a moving state, wherein the moving state is one of a pedestrian state or a vehicle state.

27. The device of claim 25, wherein the movement information is received from one of an accelerometer and a gyroscope.

28. The apparatus of any one of claims 19-21, wherein the application processor is a central processing unit of the mobile device.

29. The device of any one of claims 19-21, wherein the coprocessor comprises one of a motion coprocessor and a network chip, wherein the motion coprocessor comprises a gyroscope or an accelerometer, wherein the network chip comprises a WiFi chip.

30. The apparatus according to any one of claims 20-21, wherein the location information comprises geographic coordinate information.

Citation Information

Patent Citations

  • Sending smart alerts on a device at opportune moments using sensors

    US9603123B1

  • Motion sensor data processing using various power management modes

    CN102713788A

  • Improved in-transit detection using low complexity algorithm fusion and phone state heuristics

    CN105191455A

  • A mobile device for state-based location monitoring

    CN209248468U

  • Location-based service provision method and system of electronic device

    US20150099546A1