2011-08-12 37 views
0

海所有我想找到當前的GPS位置,我已經使用了下面的代碼。尋找GPS的奇怪問題

public class GPSManager 
{ 
    private static final int gpsMinTime = 500; 
    private static final int gpsMinDistance = 0; 

    private LocationManager locationManager = null; 
    private LocationListener locationListener = null; 
    private GPSCallback gpsCallback = null; 

    public GPSManager() 
    { 
     locationListener = new LocationListener() 
     { 
      public void onProviderDisabled(final String provider) 
      { 
      } 

      public void onProviderEnabled(final String provider) 
      { 
      } 

      public void onStatusChanged(final String provider, final int status, final Bundle extras) 
      { 
      } 

      public void onLocationChanged(final Location location) 
      { 
       location.getLatitude(); 
       location.getLongitude(); 

       if (location != null && gpsCallback != null) 
       { 
        Log.e("if location "+location,"if gpscallback"+gpsCallback); 
        gpsCallback.onGPSUpdate(location); 
        location.getLatitude(); 
        location.getLongitude(); 
       } 
       else{ 
        Log.e("else location "+location,"else gpscallback"+gpsCallback); 
       } 
      } 
     }; 
    } 

    public void startListening(final Activity activity) 
    { 
     if (locationManager == null) 
     { 
      locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE); 
     } 

     final Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_FINE); 
     criteria.setAltitudeRequired(false); 
     criteria.setBearingRequired(false); 
     criteria.setCostAllowed(true); 
     criteria.setPowerRequirement(Criteria.POWER_LOW); 

     final String bestProvider = locationManager.getBestProvider(criteria, true); 

     if (bestProvider != null && bestProvider.length() > 0) 
     { 
      locationManager.requestLocationUpdates(bestProvider, GPSManager.gpsMinTime, 
        GPSManager.gpsMinDistance, locationListener); 
     } 
     else 
     { 
      final List<String> providers = locationManager.getProviders(true); 

      for (final String provider : providers) 
      { 
       locationManager.requestLocationUpdates(provider, GPSManager.gpsMinTime, 
         GPSManager.gpsMinDistance, locationListener); 
      } 
     } 
    } 

    public void stopListening() 
    { 
     try 
     { 
      if (locationManager != null && locationListener != null) 
      { 
       locationManager.removeUpdates(locationListener); 
      } 

      locationManager = null; 
     } 
     catch (final Exception ex) 
     { 

     } 
    } 

    public void setGPSCallback(final GPSCallback gpsCallback) 
    { 
     this.gpsCallback = gpsCallback; 
    } 

    public GPSCallback getGPSCallback() 
    { 
     return gpsCallback; 
    } 

但奇怪的問題是,它只在移動中的GPS處於關閉模式時才起作用。如果設備中的GPS處於開啓模式,則不起作用。

任何人都可以告訴我什麼是我的代碼問題?

請幫助我...在此先感謝。

回答

0

的問題應該是功率要求。你要求爲配襯的GPS提供商(地點精細....)的一切,但GPS是耗電所以嘗試刪除該行或設置標準功率_

+0

對不起,變化沒有奏效 – Abhi

+0

你嘗試打印bestProvider的值? –