2011-08-12 10 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プロバイダ(Location fine ....)と一致するすべてのものを要求していますが、gpsは電力を消費しますので、その行を削除するか、条件をPOWER_HIGHに設定してください

+0

申し訳ありませんが、変更は機能しません – Abhi

+0

bestProviderの値を出力しますか? –