关于gps api的java.lang.NullPointerException?

时间:2011-03-17 09:11:05

标签: android api gps

作为标题,我对gps api有疑问 以下是我的代码

 LocationManager loctionManager; 
                 String contextService=Context.LOCATION_SERVICE;
                 loctionManager=(LocationManager) getSystemService(contextService); 
                 Criteria criteria = new Criteria(); 
                    criteria.setAccuracy(Criteria.ACCURACY_FINE);
                    criteria.setAltitudeRequired(false);
                    criteria.setBearingRequired(false); 
                    criteria.setCostAllowed(true); 
                    criteria.setPowerRequirement(Criteria.POWER_LOW);
                    String provider = loctionManager.getBestProvider(criteria, true); 
                    Location location = loctionManager.getLastKnownLocation(provider);


                     double a=location.getLatitude();
                    double b=location.getLongitude();
Log.d(""+a,""+b);

然后错误是java.lang.NullPointerException 有谁可以帮助我?thx

1 个答案:

答案 0 :(得分:1)

getLastKnownLocation()可以返回null,您需要确保它不会。

要获取位置,首先需要在您的清单中设置权限。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

然后在您的代码中,您需要监听位置可用性。您可以通过注册LocationListener来实现。系统会显示该活动,当Android为您提供位置时,它会给您回电。

private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
    latitude = location.getLatitude();
    longitude = location.getLongitude();
    //Do what you want with your coordinates
}
loctionManager.requestLocationUpdates(LocationManager.GPS, 100, 1, locationListener);

如果您使用的是仿真器而不是真正的设备,则需要强制使用某个位置,您可以在Eclipse中使用DDMS发送虚假位置:

Send a fake location to an Android Emulator