基本上,我试图获得当前的Latitude&设备的经度,将其存储在变量中,并使用StringBuilder将该变量写入字符串。目前,变量返回null,我无法弄清楚原因。
任何人都可以看到我出错的地方吗?我已经在Manifest中设置了权限,我的代码编译得很好。
@Override
protected void onCreate(Bundle savedInstanceState) {
...
LocationListener locListener = new MyLocationListener();
LocationManager locmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, locListener);
...
}
public class MyLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
//Retrieve Latitude
location.getLatitude();
//retirieve longitude
location.getLongitude();
System.out.println(Latitude);
System.out.println(Longitude);
Latitude = location.getLatitude();
Longitude = location.getLongitude();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "GPS Enabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "GPS Disabled",Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:2)
您无需致电
location.getLatitude();
location.getLongitude();
获取位置。这些方法只返回已存储在位置变量中的纬度和经度值。
目前,您正在打印纬度和经度变量,然后再为它们指定实际坐标值。
试试这个:
@Override
public void onLocationChanged(Location location) {
Latitude = location.getLatitude(); //assuming Latitude and Longitude are of type double
Longitude = location.getLongitude();
System.out.println(Latitude);
System.out.println(Longitude);
}