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 回答