2012-04-27 98 views
4

我想从location.getAltitude()方法获得当前高度。但它总是返回零。我应该怎么做才能获得当前的高度值。但正确地经度和地位。请指教我。我已经在谷歌搜索和制定了一些样本,但所有只返回零。我已经使用Android如何在LocationManager中获取高度。我alwaya越来越零

代码:

产生I呼吁= getMyCurrentLocation();这种方法。

void getMyCurrentLocation() { 
     LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     LocationListener locListener = new MyLocationListener(); 
try{gps_enabled=locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);}catch(Exception ex){} 
      try{network_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) 

     { 

     } 

     } 
+0

请尝试下面的链接为您的答案发布geting海拔:http://stackoverflow.com/questions/2791927/how-does-getaltitude-of-android-gps-location-works谢谢..! – Dinesh 2012-04-27 11:30:38

回答

1

你用什么方法得到位置? 也许你可以试试http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String),这对我很有用。

如果没有,也许尝试另一种方法,有几种的: http://developer.android.com/guide/topics/location/index.html

BTW:可以ü给我们一些代码?你在测试什么设备?

+0

hi @Thomas K我在编辑中添加了我的代码。你能说请问为什么我得到double alt = loc.getAltitude()总是为零。我已经使用HTC EVO 4G和SOny Experia手机,三星Galaxy ACE。 – RAJESH 2012-04-28 10:01:59

1

网络位置没有高度。 GPS的确如此,但如果你总是得到0,那么你的GPS硬件可能已经坏了。关闭手机上的网络位置设置,然后尝试使用地图应用查看是否从GPS获得任何修复。

+0

我也检查过这种方式。我没有检查过单个设备。我有三个设备..都只提供零..上面我已经提到了我用过的设备。 – RAJESH 2012-05-23 11:18:09

+1

Just requestLocationUpdates for GPS_PROVIDER,看看你是否得到任何修复。如果你这样做,然后调用LocationProvider类中的supportsAltitude方法来查看你的GPS提供者是否支持高度。顺便说一下,高度是非常不准确的。 – 2012-05-23 12:02:20

-1

I WONDER为什么它没有得到高度值,你的CODE IS CORRECT.TRY要删除networkprovider并且只用gps测试代码看它是否有任何值,如果你遇到任何问题请在代码中告诉我你在哪里显示海拔高度,你可以突出显示它。如果你正在使用String Text =“Longitud =”+(loc.getLongitude())+“Latitud =”+ loc.getLatitude()+“Altitude”+ gooalt +“feet” ;对于高度错误的尝试使用loc.getAltitude()代替gooalt .. 。

+0

你的回答非常糟糕,即使我想纠正它,我也无法 – 2016-04-28 16:10:39