2011-11-16 1 views
0

こんにちは私は、PreferenceActivityでUIを更新できるので、AndroidでGPSを使って次のように聞く方法を知る必要があります。私は何も起こっていないとGpsStatus.Listenerを試してみました。 GpsStatus.GPS_EVENT_STARTED Android GPSステータスの変更をリッスンしますか?

  • GpsStatus.GPS_EVENT_STOPPED
    • 任意の提案は素晴らしいことです。

    答えて

    0

    システム設定アプリのソースコードを見て、どのようにしてそれを行い、それを私のアプリに実装したのですか?助けのための@SKJのthxしかし、悲しいことに私はGpsStatus.Listenerソースコードを動作させる完全に動作することができませんでした。

    6
    mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
    
        // Define a listener that responds to location updates 
        mGPSStatusListener = new GpsStatus.Listener() { 
         public void onGpsStatusChanged(int event) { 
          switch (event) { 
          case GpsStatus.GPS_EVENT_SATELLITE_STATUS: 
           satelliteStatus = mLocationManager.getGpsStatus(null); 
    
           Iterable<GpsSatellite> iSatellites = satelliteStatus 
             .getSatellites(); 
           Iterator<GpsSatellite> it = iSatellites.iterator(); 
           maxsatellites = 0; 
           while (it.hasNext()) { 
            GpsSatellite oSat = (GpsSatellite) it.next(); 
            statArray[maxsatellites][0] = oSat.getPrn(); 
            statArray[maxsatellites][1] = oSat.getAzimuth(); 
            statArray[maxsatellites][2] = oSat.getPrn(); 
            statArray[maxsatellites][3] = oSat.getElevation(); 
            statArray[maxsatellites][4] = oSat.getSnr(); 
            if (oSat.usedInFix()) { 
             statArray[maxsatellites][5] = 1; 
            } else { 
             statArray[maxsatellites][5] = 0; 
            } 
            maxsatellites++; 
           } 
    
           if (mLastLocation != null) 
            if ((SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000) { 
             isGPSFix = 7; // Enumeration for ONC_STAT_3D 
            } else { 
             isGPSFix = 2; // Enumeration for ONC_STAT_BAD_COVER 
            } 
    
           } 
    
           if (isGPSFix == 1) { // 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 = 1; 
           break; 
          case GpsStatus.GPS_EVENT_STOPPED: 
           if ((mLastLocation = mLocationManager 
             .getLastKnownLocation(LocationManager.GPS_PROVIDER)) != null) { 
            isGPSFix = 5; // Enumeration for     } else { 
            isGPSFix = 2; // Enumeration for 
           } 
    
          } 
         } 
    
        }; 
    
        mGPSLocationListener = new LocationListener() { 
         public void onLocationChanged(Location location) { 
          // Called when a new location is found by the location 
          // provider. 
          if (location == null) 
           return; 
    
          mLastLocationMillis = SystemClock.elapsedRealtime(); 
    
          // Do something. 
    
          mLastLocation = location; 
             } 
         } 
    
         public void onProviderDisabled(String provider) { 
          // TODO Auto-generated method stub 
    
         } 
    
         public void onProviderEnabled(String provider) { 
          // TODO Auto-generated method stub 
    
         } 
    
         public void onStatusChanged(String provider, int status, 
           Bundle extras) { 
          // TODO Auto-generated method stub 
    
         } 
        }; 
    
        mLocationManager.addGpsStatusListener(mGPSStatusListener); 
    
    
        // Register the listener with the Location Manager to receive location 
        // updates 
        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
          mUpdateIntervalInMillis, 0, mGPSLocationListener); 
    
    +0

    'mLocationManager.addGpsStatusListener(mGPSStatusListener);を実行するときは、' onCreate'または 'onResume'で行うべきでしょうか、それとも両方で行うことができますか? – camelCaseD

    関連する問題