Galaxy Tab - приложение не получает местоположение GPS в сети или у пассивного провайдера

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

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

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


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

Я только что попробовал это руководство ( 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" />

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

редактировать:

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

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

редактировать 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 */

person LittleJohn    schedule 29.03.2012    source источник
comment
Не могли бы вы опубликовать свой код, где вы настраиваете свой прослушиватель местоположения и т. Д.? Кроме того, вам не нужно запрашивать грубый, если вы запрашиваете штраф; прекрасно справляется как с сетевыми, так и с GPS-провайдерами.   -  person Kevin    schedule 29.03.2012
comment
привет, я только что увидел твой комментарий. поэтому GPS_PROVIDER работает, но я не понимаю, что NETWORK_PROVIDER или PASSIVE_PROVIDER не работают. о, и я добавлю код в первый пост.   -  person LittleJohn    schedule 29.03.2012


Ответы (1)


Есть ли на вашем планшете Galaxy Tab 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) {

        }
    }   
}
person Kevin    schedule 29.03.2012
comment
о, у него вообще нет сим-карты. единственное, что может определить местоположение, - это Wi-Fi, к которому я подключен, я думаю. как я уже сказал, это не сильно меня удивит, если приложение Google Maps не получит исправление местоположения... :\ - person LittleJohn; 29.03.2012
comment
Вот почему тогда. =) Пожалуйста, примите мой ответ, когда сможете, чтобы это можно было пометить как решенное. - person Kevin; 29.03.2012
comment
привет, извините, я случайно наткнулся на ENTER и отправил свой пост слишком рано;) я добавил немного текста ... поэтому я бы пометил тему как решенную, но для меня это просто не решено, потому что я получаю местоположение на картах Google, поэтому оно должно быть возможно и в моем приложении или нет? - person LittleJohn; 29.03.2012
comment
Абсолютно. Я опубликую что-то, что должно помочь на мгновение. - person Kevin; 29.03.2012
comment
хм, это странно .... теперь, после моего теста GPS снаружи, я сменил провайдера на NETWORK_PROVIDER, и теперь я получаю исправление .... - person LittleJohn; 29.03.2012
comment
Wi-Fi также будет выполнять network_provider... Я бы не стал полагаться на это в вашем приложении. - person Kevin; 29.03.2012
comment
поэтому даже после перезапуска вкладки галактики я теперь получаю местоположение с помощью NETWORK_PROVIDER... Я просто не знаю, почему это не работало раньше для моего приложения, но для карт Google это работало... действительно странно... кажется, произошло что-то волшебное ;) редактировать: о, и спасибо, Кевин! Я очень ценю вашу помощь! - person LittleJohn; 29.03.2012
comment
Вы включили Wi-Fi? Кроме того, некоторые устройства имеют Assisted GPS, о котором я забыл ранее, который также запускает network_provider. - person Kevin; 29.03.2012
comment
нет, WIFI уже был включен, и я не менял его. единственное, что я изменил, чтобы убедиться, что исправление не связано с GPS, - это отключить определение местоположения GPS в настройках Galaxy Tab. - person LittleJohn; 29.03.2012