Android 如何在 LocationManager 中获取高度。我总是归零
Posted
技术标签:
【中文标题】Android 如何在 LocationManager 中获取高度。我总是归零【英文标题】:Android how to get altitude in LocationManager. i am alwaya getting zero 【发布时间】:2012-05-08 03:39:48 【问题描述】:我正在尝试从 location.getAltitude() 方法获取当前高度。但它总是返回零。我应该怎么做才能获得当前的高度值。但正确获取经度和纬度。请给我建议。我在谷歌搜索并制定了一些样本,但所有样本都只返回零。
我用过的代码:
在创建时我调用了 =getMyCurrentLocation();这种方法。
void getMyCurrentLocation()
LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locListener = new MyLocationListener();
trygps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);catch(Exception ex)
trynetwork_enabled=locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);catch(Exception ex)
if(gps_enabled)
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
if(network_enabled)
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
if(gps_enabled)
location=locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(network_enabled && location==null)
location=locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null)
MyLat = location.getLatitude();
MyLong = location.getLongitude();
Toast.makeText(this,"My Lat : " + MyLat + "\n" + "My Long : " + MyLong, Toast.LENGTH_SHORT).show();
else
System.out.println(" LATTITUDE " + MyLat);
System.out.println("Longitude " + MyLong);
public class MyLocationListener implements LocationListener
@Override
public void onLocationChanged(Location loc)
MyLat =loc.getLatitude();
MyLong= loc.getLongitude();
gooalt=getElevationFromGoogleMaps(MyLat,MyLong) ;
double alt=loc.getAltitude(); **==>>> This one returns ZERO**
String Text = "Longitud = " + (loc.getLongitude()) +"Latitud = " + loc.getLatitude()+"Altitude "+gooalt+"feet";
Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
@Override
public void onProviderDisabled(String provider)
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
@Override
public void onProviderEnabled(String provider)
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
【问题讨论】:
试试下面的链接以获得 Altitude 的答案:***.com/questions/2791927/… 谢谢..! 【参考方案1】:你用什么方法来获取位置的? 也许你可以试试http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String),这对我有用。
如果没有,也许可以尝试另一种方法,有几种方法: http://developer.android.com/guide/topics/location/index.html
顺便说一句:你能给我们一些代码吗?你在什么设备上测试?
【讨论】:
嗨@Thomas K 我在编辑中添加了我的代码。你能说说为什么我得到双 alt=loc.getAltitude() 总是零。我用过 HTC EVO 4G 和 SOny Experia 手机,三星 Galaxy ACE。【参考方案2】:网络位置没有高度。 GPS 可以,但如果你总是得到 0,那么你的 GPS 硬件可能坏了。关闭手机上的网络位置设置,然后尝试使用地图应用,看看是否可以从 GPS 获得任何修复。
【讨论】:
我也这样检查过。我还没有签入单个设备,。我有三个设备.. 都只提供零.. 上面我提到了我用过的设备。 只需为 GPS_PROVIDER 请求LocationUpdates 并查看是否有任何修复。如果你这样做了,那么调用 LocationProvider 类中的 supportsAltitude 方法来查看你的 GPS 提供者是否支持高度。顺便说一句,高度非常不准确。【参考方案3】:我想知道为什么它没有获得高度值,您的代码是正确的。尝试删除网络提供商并仅在 gps 中测试代码,看看它是否获得任何值,如果您遇到任何问题,请在代码中告诉我您是否显示高度,请突出显示它。如果您使用的是 String Text = "Longitud = " + (loc.getLongitude()) +"Latitud = " + loc.getLatitude()+"Altitude "+gooalt+"feet";对于海拔高度,尝试使用 loc.getAltitude() 代替 gooalt.. .
【讨论】:
你的回答格式太差了,即使我想改正也改不了以上是关于Android 如何在 LocationManager 中获取高度。我总是归零的主要内容,如果未能解决你的问题,请参考以下文章