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

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • MkElite

    MkElite

    13 NİSAN 2012
  • ŠĩŗĜŕôŵåɭȍҭҭ

    ŠĩŗĜŕô

    29 Kasım 2009