Android, как получить высоту в LocationManager. я всегда получаю ноль

Я пытаюсь получить текущую высоту из метода location.getAltitude(). но он всегда возвращает ноль. что я должен сделать, чтобы получить текущее значение высоты. но получая долготу и широту правильно. пожалуйста, посоветуйте мне. Я искал в Google и разработал несколько образцов, но все они возвращаются только к нулю.

Код, который я использовал:

при создании я вызвал =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)

        {

        }

        }

person RAJESH    schedule 27.04.2012    source источник
comment
Попробуйте ссылку ниже для вашего сообщения с ответом для получения высоты: Android GPS работает"> stackoverflow.com/questions/2791927/ Спасибо ..!   -  person Dinesh    schedule 27.04.2012


Ответы (3)


Какой метод вы использовали, чтобы получить местоположение? Возможно, вы могли бы попробовать http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String) вместо этого, это сработало для меня.

Если нет, попробуйте другой подход, их несколько: http://developer.android.com/guide/topics/location/index.html

Кстати: не могли бы вы дать нам код? На каком устройстве вы тестируете?

person Thkru    schedule 27.04.2012
comment
привет @Thomas K, я добавил свой код в редактирование. не могли бы вы сказать, почему я получаю, что двойной alt=loc.getAltitude() всегда равен нулю. Я использовал мобильные телефоны HTC EVO 4G и SOny Experia, Samsung Galaxy ACE. - person RAJESH; 28.04.2012

Местоположение сети не имеет высоты. GPS работает, но если вы всегда получаете 0, то, вероятно, ваше оборудование GPS сломано. Отключите настройку сетевого местоположения на своем телефоне и попробуйте приложение «Карта», чтобы узнать, получаете ли вы какие-либо исправления от GPS.

person Hoan Nguyen    schedule 23.05.2012
comment
я тоже так проверял. я не проверял ни одно устройство. у меня есть три устройства.. все они обеспечивают только ноль.. выше я упомянул устройства, которые я использовал. - person RAJESH; 23.05.2012
comment
Просто запроситеLocationUpdates для GPS_PROVIDER и посмотрите, получите ли вы какое-либо исправление. И если вы это сделаете, вызовите метод supportsAltitude в классе LocationProvider, чтобы узнать, поддерживает ли ваш провайдер GPS высоту. Кстати, высота очень неточная. - person Hoan Nguyen; 23.05.2012

Я ИНТЕРЕСУЮСЬ, почему он не получает значение высоты, ваш КОД ПРАВИЛЬНЫЙ. ПОПРОБУЙТЕ УДАЛИТЬ сетевой провайдер и проверьте код только в gps, посмотрите, получает ли он какие-либо значения, если вы столкнулись с какой-либо проблемой, пожалуйста, дайте мне знать в коде, где вы показываете высота, не могли бы вы выделить ее? для высоты это неправильно, попробуйте использовать loc.getAltitude() вместо gooalt.. .

person Abhijit Chakra    schedule 05.12.2012
comment
Ваш ответ так плохо оформлен, что даже если бы я хотел его исправить, я бы не смог - person Jimmy Kane; 28.04.2016