SORU
7 Ocak 2010, PERŞEMBE


Nasıl GPS alıcısı mevcut durumunu kontrol edebilir miyim?

Nasıl GPS alıcısı mevcut durumunu kontrol edebilir miyim? Ben zatenLocationListener onStatusChanged yöntemini kontrol ettim ama nedense işe yaramaz, ya da sadece yanlış bir olasılık gibi görünüyor.

Temelde ben sadece eğer GPS ekranın üst kısmında simgesi yanıp sönüyor (gerçek düzeltme) veya katı (düzeltme kullanılabilir) olup olmadığını bilmek gerekir.

CEVAP
14 EYLÜL 2010, Salı


Öncelikle, ben bir geliştirici SpeedView, GPS hız göstergesi için Android, bu yüzden bana güvenebilirsin derken bunu denedik, mümkün olan her çözüm için bu sorun, tüm ile aynı olumsuz sonuç. Hadi işe yaramayan, aynı cümleyle başlar:

  1. () onStatusChanged Eclair ve Froyo. adlı gelmez 1.6 olsa çağrıldı.
  2. Sadece tüm mevcut sayım uydular, tabii ki, hiçbir işe yaramaz.
  3. Eğer uyduların herhangi usedİnFix için doğru verir diye kontrol() çok yararlı da değil. Sistem görünüşe göre düzeltme kaybeder ama hala kullanılan birkaç sat sınavı olduğunu rapor etmeye devam ediyor.

Yani, biz sadece çalışan çözüm, ve biz aslında bizim uygulamayı kullanmak, şudur. Hadi GpsStatus uygulayan bu basit bir sınıf var diyelim.Dinleyici:

private class MyGPSListener implements GpsStatus.Listener {
    public void onGpsStatusChanged(int event) {
        switch (event) {
            case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
                if (mLastLocation != null)
                    isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

                if (isGPSFix) { // A fix has been acquired.
                    // Do something.
                } else { // The fix has been lost.
                    // Do something.
                }

                break;
            case GpsStatus.GPS_EVENT_FIRST_FIX:
                // Do something.
                isGPSFix = true;

                break;
        }
    }
}

TAMAM, şimdi onLocationChanged() şunları eklemek gerekir:

@Override
public void onLocationChanged(Location location) {
    if (location == null) return;

    mLastLocationMillis = SystemClock.elapsedRealtime();

    // Do something.

    mLastLocation = location;
}

Ve işte bu kadar. Temel olarak, bu her şeyi yapıyor çizgi vardır:

isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

Elbette milisaniye değeri tweak, ancak 3-5 saniye civarında ayarlamanızı öneririz.

Bu gerçekten çalışıyor ve standart GPS simgesi uygulayan kaynak kodu görmemiş olmama rağmen, bu davranışı çoğaltmak için yakın geliyor. Lol iyi olabilir bile. Bu kimse yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • curioustravelers

    curioustrave

    12 AĞUSTOS 2006
  • Jaclyn W

    Jaclyn W

    5 Mayıs 2006
  • jesiel santos

    jesiel santo

    15 Ocak 2009