0

私はこのコードを持っています。

 lm = (LocationManager) 
 getSystemService(Context.LOCATION_SERVICE);

 gpslocation = Double.toString(lm.getLastKnownLocation("gps").getLatitude()) +" " 
 + Double.toString(lm.getLastKnownLocation("gps").getLongitude());

これは、エミュレーターとandroid 1.5を実行している私のヒーローの両方で正常に機能しますが、1.6のエミュレーターと私のタトゥーでは強制終了します。

1.5から1.6に何が変わりましたか?

OK、代わりにこれを使用します。

    lm = (LocationManager) 
    getSystemService(Context.LOCATION_SERVICE);

    Double latPoint = null;
    Double lngPoint = null;

    Location loc = lm.getLastKnownLocation("gps");
    if(loc != null) {
       latPoint = lm.getLastKnownLocation("gps").getLatitude();
       lngPoint = lm.getLastKnownLocation("gps").getLongitude();

    } else {

    }

  Toast.makeText(getBaseContext(),"test lat " + latPoint, Toast.LENGTH_LONG).show();

アプリを実行する前にエミュレーターで場所を起動すると、nullトーストが発生し、nullトーストが発生します。

4

1 に答える 1

2

一般にadb logcat、DDMS、または Eclipse の DDMS パースペクティブを使用して、「強制終了」ダイアログに関連付けられた Java スタック トレースを調べて、問題の内容を確認します。

具体的には、コード スニペットで GPS をオンにしていないため、機能しません。

getLastKnownLocation()プロバイダーが稼働していない限り、そのプロバイダーを確実に呼び出すことはできません。あなたの場合、GPS はおそらく実行されておらず、getLastKnownLocation()返されnullます。

が機能する前に、GPS ラジオの電源を入れて修正を求めるために、位置情報の更新または近接アラートに登録する必要がありますgetLastKnownLocation()。また、エミュレーターでは、位置情報の更新を登録した後 (DDMS などを介して) 修正を送信する必要がありgetLastKnownLocation()ますnull

于 2010-03-06T20:39:00.133 に答える