2011-02-11 3 views
1

Я пытаюсь просто получить GPS-местоположение пользователя, но мое приложение падает при попытке получить широту и долготу устройства. См код, где происходит ошибка ..Как получить местоположение GPS пользователя на устройстве Android (2.2)

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    final double longitude = location.getLongitude(); //error occurs here 
    final double latitude = location.getLatitude(); //and here 

    LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
      // Called when a new location is found by the network location provider. 
      //longitude = location.getLongitude(); 
      //latitude = location.getLatitude(); 
     } 
     public void onStatusChanged(String provider, int status, Bundle extras) {} 
     public void onProviderEnabled(String provider) {} 
     public void onProviderDisabled(String provider) {} 
     }; 
    //update location via GPS PROVIDER 
    //can also use LocationManager.NETWORK_PROVIDER 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 

} 

Я также включая разрешение ACCESS_FINE_LOCATION в файле манифеста:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

, так что я не совсем уверен, почему это не работает. Любая помощь будет принята с благодарностью!

+1

Если вы получили сбой, это означает, что вы получаете столбец. Вы можете опубликовать его. – EboMike

+0

Звучит как location = null, но, как сказал Майк, нам нужен журнал. – user432209

+0

@EboMike @ user432209 Извините. Я получаю исключение NULLPointerException. location = null. Поэтому я предполагаю, что когда он пытается получить последнее известное местоположение пользователя, местоположение не будет найдено. Есть ли лучший/другой способ найти местоположение пользователя, а не использовать getLastKnownLocation? – AndroidRob

ответ

0

Ваша ошибка, скорее всего, по адресу: lm.getLastKnownLocation (LocationManager.GPS_PROVIDER);

Это потому, что getLastKnownLocation является неблокирующим вызовом и, предположив, что приложение только что началось, отсутствует «последнее известное местоположение», которое имеет система. Вы можете запрограммировать цикл до тех пор, пока не получите ненулевое значение для getLastKnownLocation.

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