Android Location开关过程分析
有同事发现目前车机的location位置在刷机(线刷之后),每次的location初始值(在settings中看见的)都不一致.之前对这个是一点都没接触过,所以今天拿出来研究下,凑一篇博客.
location的三种工作模式?
从settings->location界面来看,location主要有三种工作模式:
high_accuracy battery_saving sensors_only
对应代码:
//packages/apps/Settings/src/com/android/settings/location/LocationMode.java
int mode = Settings.Secure.LOCATION_MODE_OFF;//其实还有一种off模式
if (emiter == mHighAccuracy) {
mode = Settings.Secure.LOCATION_MODE_HIGH_ACCURACY;
} else if (emiter == mBatterySaving) {
mode = Settings.Secure.LOCATION_MODE_BATTERY_SAVING;
} else if (emiter == mSensorsOnly) {
mode = Settings.Secure.LOCATION_MODE_SENSORS_ONLY;
}
setLocationMode(mode);
迅速找到setLocationMode
//packages/apps/Settings/src/com/android/settings/location/LocationSettingsBase.java
public void setLocationMode(int mode) {