2012-04-06 1 views
0

Я хочу, чтобы мой менеджер местоположений попытался получить Fine_Location, а затем, если он недоступен, получите Coarse_Location. Можно ли настроить этот тип иерархии для свойства Criteria Accuracy?LocationManager GetBestProvider Criteria

const string context = LocationService; 
LocationManager locationManager = (LocationManager)GetSystemService(context); 
Criteria criteria = new Criteria() { Accuracy = Accuracy.Fine | Accuracy.Coarse }; 
string provider = locationManager.GetBestProvider(criteria, true); 

ответ

0

Взятые из документации метода GetBestProvider():

Возвращает имя поставщика, который наилучшим образом соответствует заданным критериям. Возвращаются только провайдеры, которым разрешен доступ по вызову . Если несколько поставщиков отвечают критериям, возвращается с лучшей точностью.

Это похоже на поведение, которое вы ищете.

+0

Приносим извинения, если неясно. Когда у меня есть Точность, установленная на Fine, но в помещении, где у меня есть покрытие сети, но нет покрытия GPS, местоположение возвращает null. Но затем, когда я устанавливаю его в курс, он возвращает значение, основанное на охвате сети. Я хочу, чтобы местоположение было максимально точным, но я не хочу, чтобы он возвращал значение null, если он не может получить сигнал GPS. – jmease

0

Я хочу, чтобы место, чтобы быть как можно более точным, но я не хочу, чтобы вернуть нулевое значение, если он не может получить GPS сигнал

Тогда вы должны зарегистрироваться для поставщиков - provider = LocationManager.GetBestProvider(criteria, true); вернет лучший провайдер - он не будет проверять, действительно ли этот провайдер может получить исправление. См. here и here для регистрации у обоих провайдеров