Java 如何获得用户';Android(2.2)设备上的GPS定位
我试图简单地获取用户的GPS位置,但在尝试获取设备的纬度和经度时,我的应用程序崩溃。有关错误发生的位置,请参阅代码Java 如何获得用户';Android(2.2)设备上的GPS定位,java,android,gps,android-location,Java,Android,Gps,Android Location,我试图简单地获取用户的GPS位置,但在尝试获取设备的纬度和经度时,我的应用程序崩溃。有关错误发生的位置,请参阅代码 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager lm = (LocationManager)getSystemService(Context
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
final double longitude = location.getLongitude(); //error occurs here
final double latitude = location.getLatitude(); //and here
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
//longitude = location.getLongitude();
//latitude = location.getLatitude();
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
//update location via GPS PROVIDER
//can also use LocationManager.NETWORK_PROVIDER
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
我还在清单文件中包括访问\u FINE\u位置权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
所以我不太清楚为什么这不起作用。任何帮助都将不胜感激 我想您可以检查这个堆栈溢出问题:您的错误很可能在:lm.getlastnownlocation(LocationManager.GPS\u PROVIDER)
这是因为getLastKnownLocation是一个非阻塞调用,并且假设应用程序刚刚启动,系统没有“最后一个已知位置”。您可能希望循环,直到getLastKnownLocation没有得到非null值。如果发生崩溃,则意味着您得到了一个调用堆栈。您可能想发布它。听起来像location=null,但就像Mike说的……我们需要日志。@EboMike@user432209对此表示抱歉。我得到一个NULLPointerException。位置=空。所以我假设当它试图获取用户的最后一个已知位置时,没有找到一个位置。有没有更好/不同的方法来查找用户的位置,而不是使用getLastKnownLocation?您需要显示完整的调用堆栈。它包含问题发生的确切路线,以及可能的进一步信息。