0

私はAndroid開発にかなり慣れていないので、ボタンを押して座標(経度と緯度)を取得するAndroidアプリケーションでメソッドを作成しようとしました。しかし、ボタンを押すと、プログラムはエミュレーターでの動作を停止します。

私はおそらくここで何か間違ったことをしているだけです。コールスタックを調べても役に立ちませんでした。あまりにも散らかっていて、役に立たない情報がたくさんありました。

これを修正するにはどうすればよいですか?

public void onLocateByGMapButtonClick() {
    LocationManager mloc = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    List<String> providers = mloc.getAllProviders();
    Location loc = new Location(providers.get(0));
    double loTude = loc.getLongitude();
    double laTude = loc.getLatitude();

    String newCoords = loTude + "," + laTude;
    location.setText(newCoords);
    Toast.makeText(this.getBaseContext(),"Location have been updated!",5);
}
4

1 に答える 1

0

アプリケーションがクラッシュする理由は、おそらくnull pointer exception.

GPS 修正は即時のプロセスではないことを理解する必要があります。時間がかかる場合があり、この時点では、getLaskKnownLocationメソッドを使用しない限り作業する場所がありません (null を返す場合もあります)。

したがって、必要なものは次のとおりです。

Location loc = lm.getLastKnownLocation(provider);

または、新しい場所の更新が到着するとすぐに起動するLocationListenerを実装します。

チュートリアル: http://www.vogella.com/articles/AndroidLocationAPI/article.html

于 2013-04-02T09:19:45.707 に答える