Android 寻找全球定位系统的奇怪问题

Android 寻找全球定位系统的奇怪问题,android,gps,location,Android,Gps,Location,所有我想找到的当前GPS位置,我使用了以下代码 public class GPSManager { private static final int gpsMinTime = 500; private static final int gpsMinDistance = 0; private LocationManager locationManager = null; private LocationListener locationListener = nul

所有我想找到的当前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处于打开模式,则该设备不工作

谁能告诉我我的代码有什么问题吗


请帮帮我。。。提前感谢。

问题应该是电源需求。你要求的所有东西都符合gps提供商的位置,很好。。。。但是gps是耗电的,所以请尝试删除该行或将标准设置为power_HIGH

是否尝试打印bestProvider的值?