A method for determining a location of a mobile device comprising: identifying, by an application processor of the mobile device, that the mobile device is currently in a first movement state; sending, by the application processor to a coprocessor of the mobile device, a request to identify a change in a current movement state of the mobile device to a second movement state and to notify the application processor regarding the change in the current movement state of the mobile device; after sending the request, decreasing, by the application processor, a power level of the application processor; monitoring over a period of time, by the coprocessor, movement information and determining, by the coprocessor, a motion classification of the mobile device, wherein determining the motion classification comprises: analyzing the movement information to classify the movement information of the mobile device; generating a motion classification histogram over the period of time, and identifying the motion classification which occurs most often during said period of time; determining, by the coprocessor, that the identified motion classification corresponds to the second movement state; sending, by the coprocessor to the application processor, a notification regarding the motion classification of the mobile device corresponding to the second movement state; receiving, by the application processor, the notification; and determining, by the application processor, based on the notification, whether to obtain location information; in response to determining that the location information should be obtained, increasing, by the application processor, the power level of the application processor; and obtaining, by the application processor, the location information of the mobile device after increasing the power level of the application processor. identifying, by an application processor of the mobile device, that the mobile device is currently in a first movement state; sending, by the application processor to a coprocessor of the mobile device, a request to identify a change in a current movement state of the mobile device to a second movement state and to notify the application processor regarding the change in the current movement state of the mobile device; after sending the request, decreasing, by the application processor, a power level of the application processor; monitoring over a period of time, by the coprocessor, movement information and determining, by the coprocessor, a motion classification of the mobile device, wherein determining the motion classification comprises: analyzing the movement information to classify the movement information of the mobile device; generating a motion classification histogram over the period of time, and identifying the motion classification which occurs most often during said period of time; analyzing the movement information to classify the movement information of the mobile device; generating a motion classification histogram over the period of time, and identifying the motion classification which occurs most often during said period of time; determining, by the coprocessor, that the identified motion classification corresponds to the second movement state; sending, by the coprocessor to the application processor, a notification regarding the motion classification of the mobile device corresponding to the second movement state; receiving, by the application processor, the notification; and determining, by the application processor, based on the notification, whether to obtain location information; in response to determining that the location information should be obtained, increasing, by the application processor, the power level of the application processor; and obtaining, by the application processor, the location information of the mobile device after increasing the power level of the application processor.