作为标题,我对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
答案 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发送虚假位置: