2010-04-26 2 views
3

Я выделил мою проблему в несколько строк кодаAndroid Расположение Ошибка

lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 5.0f, this); 
lat = location.getLatitude(); 
lng = location.getLongitude(); 
//lat = new Double(40.431682); 
//lng = new Double(-74.2021819); 
pLocation = new GeoPoint((int)(lat * 1000000), (int)(lng * 1000000)); 

Мои onLocationChanged, если интересно

public void onLocationChanged(Location location) { 
     if (location != null) { 
     lat = location.getLatitude(); 
     lng = location.getLongitude(); 
     pLocation = new GeoPoint((int)(lat * 1000000), (int)(lng * 1000000)); 
     } 
} 

Мои сбои приложений при попытке получить LastKnownLocation

Но он отлично работает, если я его кормит Место вручную

У меня нет i dea в настоящее время не так

ответ

3

Во-первых, всякий раз, когда вы получаете сбой, используйте adb logcat, DDMS или перспективу DDMS в Eclipse, чтобы получить трассировку стека Java, связанную с сбоем. В этом случае, я подозреваю, вы обнаружите, что у вас есть NullPointerException при попытке использовать объект location.

Вы не можете использовать getLastKnownLocation() до тех пор, пока вы не позвоните requestLocationUpdates(), особенно для GPS. GPS может начать принимать исправления.

Пожалуйста, измените код, чтобы исключить использование getLastKnownLocation(), и просто используйте логику, требующую расположения, уже находящегося в вашем методе onLocationChanged(). Как минимум, найдите объект nulllocation и не пытайтесь его использовать.

+0

Спасибо, что вы были на месте! Я исправил это вскоре после публикации этого, хотя –

0

Мое решение было в основном просто использовать грубое место.

Criteria criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
String bestProvider = lm.getBestProvider(criteria, true); 
Location loc = lm.getLastKnownLocation(bestProvider); 
lat = loc.getLatitude(); 
lng = loc.getLongitude(); 
0

Это может произойти из-за того, что на вашем устройстве не установлено точное местоположение (GPS). Разрешение ACCESS_FINE_LOCATION не указано в вашем манифесте.

0

Бьюсь об заклад, если вы отлаживаете вы увидите нулевое исключение. Это происходит потому, что вы пытаетесь извлечь широту и долготу из местоположения, которое еще не исправлено. Объедините это извлечение с if (loc! = Null) {} и положите progressDialog, чтобы удерживать пользователя там

Смежные вопросы