1

ユーザーのGPS位置を取得しようとしていますが、デバイスの緯度と経度を取得しようとするとアプリケーションがクラッシュします。エラーが発生する場所については、コードを参照してください。

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" />

だから、なぜこれが機能しないのかよくわかりません。どんな助けでも大歓迎です!

4

2 に答える 2

2

このStackOverflowの質問を確認できると思います:Androidでユーザーの現在地を取得するための最も簡単で堅牢な方法は何ですか?

于 2011-02-11T03:59:09.517 に答える
0

あなたのエラーはおそらく次の場所にあります: lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

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

于 2011-02-26T13:39:07.093 に答える