Android GPS. Слушатель местоположения не хочет получить исправление :( - PullRequest
2 голосов
/ 13 сентября 2011

Ниже приведен код, который предполагает прослушивание обновлений GPS и отправку уведомлений об основной деятельности

Однако, похоже, он не работает:)

Нет ошибок, только onLocationChanged не являетсязвонил!

Забавно: когда я запускаю какое-то другое приложение, чтобы получить исправление GPS, и после этого запускается мое приложение => onLocationChanged, снижается только точность, и в конечном итоге исправление теряется.

Я также пытался добавить к этому коду GPS-прослушиватель => он работает, спутники, о которых идет речь, сообщаются каждую секунду, только исправление не учитывается.

Что, черт возьми, происходит?:)

открытый класс PhoneGPSpos {

private Handler myHandler = null;
private LocationManager lm;
private LocationListener locationListener;
private Location currentBest;
Context m_context;

public PhoneGPSpos (контекстный контекст, обработчик обработчика) {

    myHandler = handler;
    m_context = context;


    lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

 //  Bundle bundle = new Bundle();
 //  boolean xtraInjection=lm.sendExtraCommand(LocationManager.GPS_PROVIDER,"force_xtra_injection",bundle);
 //  boolean timeInjection=lm.sendExtraCommand(LocationManager.GPS_PROVIDER,"force_time_injection",bundle);

   currentBest = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    locationListener = new LocationListener() 
   { 

           public void onLocationChanged(Location location)
           { 
                Log.w("Compass", "Loc");

            if (location != null)
            {
                currentBest = location;

                Message msg = new Message();

                msg.arg1 = 5;
                myHandler.sendMessage(msg);

            }
           } 

           public void onStatusChanged(String provider, int status, Bundle 
           extras) {
            Log.d("Compass", "Stat");
           } 

           public void onProviderEnabled(String provider) {
            Log.d("Compass", "Prov e");
           } 

           public void onProviderDisabled(String provider) {
            Log.d("Compass", "Prov d");
        } 
   }; 
}

public void requestGPS()
{
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
    Log.d("Compass", "gps requested");
}

public void stopGPS()
{
    Log.d("Compass", "gps stopped");
    lm.removeUpdates(locationListener);
}

public synchronized  Location getBest()
{
    return  currentBest;
}

}

Ответы [ 3 ]

1 голос
/ 19 сентября 2011

Хорошо, выясните, что эту проблему также замечали другие люди: очевидно (по крайней мере, на некоторых телефонах) GPS-слушатель работает намного хуже, если камера активна.

Проблема с получениемДанные GPS при использовании CameraPreview

Android: потеря сигнала GPS на некоторых телефонах при запуске камеры и SurfaceView

Предварительный просмотр камеры и GPSчтение в Android

Создана проблема Andorid для этого http://code.google.com/p/android/issues/detail?id=20098

Если у кого-то есть решение, пожалуйста, поделитесь

0 голосов
/ 13 сентября 2011

Где вы тестируете?В закрытом помещении?Какими провайдерами пользуются другие приложения?Сетевой провайдер?

Я предполагаю, что работающие приложения используют Сетевого провайдера, и, поскольку вы получаете последний известный, он вернет это местоположение из предыдущего пинга местоположения приложения.Сетевой провайдер помогает распределять GPS-спутники, предоставляя общее местоположение.Поэтому, когда вы запускаете приложение (после запуска других приложений), у вас есть спутники, но (поскольку вы, вероятно, находитесь в помещении) без сети, вы можете постепенно терять спутники, снижая точность.провайдер сети, или убедитесь, что у вас есть четкое представление о небе, чтобы проверить GPS.

0 голосов
/ 13 сентября 2011
Check for permissions in your projects AndroidManifest.xml file

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...