Galaxy Tab - приложение, у которого нет GPS-местоположения в сети или у пассивного провайдера - PullRequest
0 голосов
/ 29 марта 2012

ОБНОВЛЕНИЕ 2: проблема решена

после того, как я вышел на улицу и получил сигнал с GPS_PROVIDER, теперь у меня больше нет проблем с получением местоположения с помощью NETWORK_PROVIDER ....

Я до сих пор не знаю, почему приложение Google Maps смогло исправить это до того, как я это сделал, а мое приложение - нет, но теперь оно работает (даже после перезапуска вкладки galaxy), и я вроде какhappy;)


ОБНОВЛЕНИЕ: название темы изменено, см. правку внизу поста.

Я только что попробовал этот урок (http://www.firstdroid.com/2010/04/29/android-development-using-gps-to-get-current-location-2/) для полученияGPS-местоположение на вкладке галактики, но я не получаю никакого местоположения ....

Я уже пытался использовать другого провайдера, но это совсем не помогает (я попробовал GPS_PROVIDER, NETWORK_PROVIDER, PASSIVE_PROVIDER).

Странно то, что с помощью официального приложения Google Maps я получаю местоположение.: \

разрешения в AndroidManifest.xml устанавливаются следующим образом:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Кто-нибудь знает, почему мое приложение получает нет местоположения?

edit:

с провайдером GPS я получаю починку, когда нахожусь на улице.но я не понимаю, почему у меня нет местоположения с помощью NETWORK_PROVIDER или PASSIVE_PROVIDER.

, какого провайдера использует приложение Google Maps, если GPS недоступен?

edit 2:

код (это из учебника выше с некоторыми незначительными изменениями):

package Firstdroid.Tutorial.Gps; 

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;

public class UseGps extends Activity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Toast.makeText(getApplicationContext(), "Application started", Toast.LENGTH_SHORT).show();

        /* Use the LocationManager class to obtain GPS locations */

        LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener mlocListener = new MyLocationListener();

        // here I choose the location provider:
        mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); // <---

    }

    /* Class My Location Listener */

    public class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {

            loc.getLatitude();

            loc.getLongitude();

            String Text = "My current location is: " +

            "Latitude = " + loc.getLatitude() +

            "Longitude = " + loc.getLongitude() + " (PROVIDER: " + loc.getProvider() + ")";

            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) {

        }

    }/* End of Class MyLocationListener */

}/* End of UseGps Activity */

1 Ответ

0 голосов
/ 29 марта 2012

Есть ли на вашей вкладке galaxy 3G-радио и он подключен к сети? Если нет, он никогда не получит местоположение network_provider.

Также вам не нужны эти два дополнительных вызова loc.getLatitude и loc.getLongitude вверх, хотя я бы порекомендовал использовать их для установки переменной и использования переменной в вашем выходном сообщении. Теперь вы можете просто вызвать GPSData.getLatitude () и т. Д., Чтобы получить нужные значения.

public class GPSData {
    private static double latitude;
    /**
     * @return the latitude
     */
    public static double getLatitude() {
        return latitude;
    }

    /**
     * @param latitude the latitude to set
     */
    public static void setLatitude(double l) {
        latitude = l;
    }

    private static double longitude;
    /**
     * @return the longitude
     */
    public static double getLongitude() {
        return longitude;
    }

    /**
     * @param d the longitude to set
     */
    public static void setLongitude(double d) {
        longitude = d;
    }

    private static float accuracy;
    /**
     * @return the accuracy
     */
    public static float getAccuracy() {
        return accuracy;
    }

    /**
     * @param f the accuracy to set
     */
    public static void setAccuracy(float f) {
        accuracy = f;
    }

    //Altitude is in feet
    private static double altitude;

    public static void setAltitude (double a) {
        altitude = a;
    }

    public static double getAltitude() {
        return altitude;
    }


    /**
     * New location listener to be instantiated for getting locational data
     *
     */
    public static class MyLocationListener implements LocationListener {
        public void onLocationChanged(Location location) {
            setAccuracy(location.getAccuracy());
            setLongitude(location.getLongitude());
            setLatitude(location.getLatitude());
            //Altitude is in feet
            setAltitude(location.getAltitude());
        }

        @Override
        public void onProviderDisabled(String provider) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }
    }   
}
...