我有一個應用程序,使用MapView
,我打印出用戶的緯度,經度和水平精度的一些標籤。這一切都適用於我的HTC Wildfire,但在我的SE Xperia上,只要我嘗試觸摸Location.getLatitude()
,Location.getLongitude()
或Location.getAccuracy()
,應用程序就會崩潰。位置方法調用在某些設備上崩潰
我有一種預感,它可能是Xperia上的GPS速度太慢了,當我輪詢拉特,長度和準確度時,位置管理器還沒有獲得它的座標 - 但是我怎麼能保護這個?
這裏的片段:
mapView.setBuiltInZoomControls(false);
mc = mapView.getController();
int maxLat = (int) (34.07687 * 1E6);
int maxLon = (int) (-118.438239 * 1E6);
int minLat = (int) (34.06489 * 1E6);
int minLon = (int) (-118.452358 * 1E6);
List <Overlay> overlays = mapView.getOverlays();
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
myLocationOverlay.enableMyLocation();
overlays.add(myLocationOverlay);
mc.zoomToSpan(Math.abs(maxLat - minLat), Math.abs(maxLon - minLon));
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
GeoPoint gp = new GeoPoint((int)(location.getLatitude() * 1E6), (int)(location.getLongitude() * 1E6));
logcat的輸出:
01-09 13:32:04.086: W/dalvikvm(1794): threadid=1: thread exiting with uncaught exception (group=0x2aac8560)
01-09 13:32:04.086: E/AndroidRuntime(1794): FATAL EXCEPTION: main
01-09 13:32:04.086: E/AndroidRuntime(1794): java.lang.NullPointerException
01-09 13:32:04.086: E/AndroidRuntime(1794): at no.tibeapp.sno.UlovligeGarnActivity$1.run(UlovligeGarnActivity.java:180)
01-09 13:32:04.086: E/AndroidRuntime(1794): at android.os.Handler.handleCallback(Handler.java:587)
01-09 13:32:04.086: E/AndroidRuntime(1794): at android.os.Handler.dispatchMessage(Handler.java:92)
01-09 13:32:04.086: E/AndroidRuntime(1794): at android.os.Looper.loop(Looper.java:123)
01-09 13:32:04.086: E/AndroidRuntime(1794): at android.app.ActivityThread.main(ActivityThread.java:3701)
01-09 13:32:04.086: E/AndroidRuntime(1794): at java.lang.reflect.Method.invokeNative(Native Method)
01-09 13:32:04.086: E/AndroidRuntime(1794): at java.lang.reflect.Method.invoke(Method.java:507)
01-09 13:32:04.086: E/AndroidRuntime(1794): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
01-09 13:32:04.086: E/AndroidRuntime(1794): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
01-09 13:32:04.086: E/AndroidRuntime(1794): at dalvik.system.NativeStart.main(Native Method)
這是什麼在logcat中打印時崩潰的代碼與此應對? – 2012-03-31 08:14:54
@Alex我剛剛更新了Q與logcat輸出 - NullPointerException它似乎 – PinkFloydRocks 2012-03-31 08:16:53