2011-02-11 14 views
1

ユーザーのGPS位置を取得しようとしていますが、デバイスの緯度と経度を取得しようとするとアプリケーションがクラッシュします。Android(2.2)デバイスでユーザーのGPS位置を取得する方法

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

ので、私はこれが動作しない理由はかなりわからない:私は、マニフェストファイルのACCESS_FINE_LOCATION許可を含むも午前

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); 

} 

に...エラーが発生した場所のコードを参照してください。どんな助けでも大歓迎です!

+1

クラッシュした場合は、コールスタックを取得したことを意味します。それを投稿したいかもしれません。 – EboMike

+0

location = nullのような音ですが、Mikeのように...ログが必要です。 – user432209

+0

@EboMike @ user432209ごめんなさい。私はNULLPointerExceptionを取得しています。 location = null。だから私はそれがユーザーの最後の既知の場所を取得しようとすると、場所が見つかりませんと仮定しています。 getLastKnownLocationを使用するのではなく、ユーザーの場所を見つける方法が改善されていますか? – AndroidRob

答えて

0

あなたのエラーがでおそらくです:lm.getLastKnownLocation(LocationManager.GPS_PROVIDER)。

これは、getLastKnownLocationが非ブロッキング呼び出しであり、アプリケーションが開始されたばかりであると仮定すると、システムには「最後の既知の場所」が存在しないためです。 getLastKnownLocationのnull以外の値が得られなくなるまでループすることができます。

関連する問題