2012-04-27 8 views
4

私は現在の高度をlocation.getAltitude()メソッドから取得しようとしています。常にゼロを返します。現在の標高値を得るためにはどうすればよいですか?経度と緯度を正しく取得しています。アドバイスをお願いします。私はGoogleで検索し、いくつかのサンプルを試しましたが、すべてゼロが返されます。Androidは、LocationManagerで高度を取得する方法を示します。私はalwaaがゼロになっています

私が使用しているコード:

の上には、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

高度を取得するためのあなたの回答のポストの下のリンクを試してください:http://stackoverflow.com/questions/2791927/how-does-getaltitude-of-android-gps-location-worksありがとう! – Dinesh

答えて

1

場所取得にどのような方法が使用されましたか? 代わりに、http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.Stringを試してみることができます)、それは私のために働いた。

、多分別のアプローチを試していない場合は、いくつかのものがあります。ところで http://developer.android.com/guide/topics/location/index.html

:uが私たちにいくつかのコードを与えることができますか?あなたはどのデバイスをテストしていますか?

+0

こんにちは@Thomas K編集に自分のコードを追加しました。私はdouble alt = loc.getAltitude()が常にゼロになっている理由を教えてください。私はHTC EVO 4GとSOny Experiaモバイル、Samsung Galaxy ACEを使用しています。 – RAJESH

1

ネットワークの位置に標高がありません。 GPSは機能しますが、常に0になると、おそらくGPSハードウェアが壊れている可能性があります。お使いの携帯電話のネットワークの場所の設定をオフにして、地図アプリを試してGPSからの修正があるかどうかを確認してください。

+0

私はその方法もチェックしました。私は単一のデバイスでチェックしていません。私は3つのデバイスを持っています..すべてはゼロだけを提供しています..上記私は私が使用しているデバイスを述べています。 – RAJESH

+1

GPS_PROVIDERのrequestLocationUpdatesを実行し、修正があるかどうかを確認してください。そして、そうしたら、LocationProviderクラスのsupportsAltitudeメソッドを呼び出して、GPSプロバイダが高度をサポートしているかどうかを確認します。ところで、高度は非常に不正確です。 –

-1

私はなぜ高度値を得られないのか、あなたのコードは正しいですか?networkproviderを削除し、gpsでコードをテストするだけです。何か問題がある場合は、コードがありますか? (Latitude = "+ Latitude =" + loc.getLatitude()+ "Altitude" + gooalt + "feet"を使用している場合は、高度を表示していますか?String Text = "Longitud =" +(loc.getLongitude() ;高度のために間違っての代わりにloc.getAltitude()を使用しようとするgooalt .. 。

+0

あなたは答えがとても悪いので、私はそれを修正したい場合でも私はできません –

関連する問題