2011-08-12 34 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的值? –