2

我计划在一个活动中有一个按钮,单击该按钮将启动一项服务。但是,需要启用 GPS 才能使服务正常工作,因此如果禁用了 GPS,我希望禁用该按钮。有没有办法让android在启用/禁用GPS时通知我的活动,以便我可以相应地启用/禁用按钮?

4

3 回答 3

1

此链接描述了如何创建位置监听器: http ://blog.doityourselfandroid.com/2010/12/25/understanding-locationlistener-android/

我已经复制了下面的重要部分,以防网站将来出现故障。第一步是创建一个 LocationListener:

private final class MyLocationListener implements LocationListener {

    @Override
    public void onLocationChanged(Location locFromGps) {
        // called when the listener is notified with a location update from the GPS
    }

    @Override
    public void onProviderDisabled(String provider) {
       // called when the GPS provider is turned off (user turning off the GPS on the phone)
       // Dim the button here!
    }

    @Override
    public void onProviderEnabled(String provider) {
       // called when the GPS provider is turned on (user turning on the GPS on the phone)
       // Brighten the button here!
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
       // called when the status of the GPS provider changes
    }
}

然后你会想要注册那个监听器。这可能应该在你的onCreate()

LocationListener locationListener = new MyLocationListener();
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, this.locationListener);

requestlocationupdates 中的第二个和第三个参数你可能应该做得很大,这样你就不会得到 locationupdates,因为你并不真正关心那些,只关心提供者启用/禁用的更改。

于 2012-11-29T09:03:10.440 回答
0

请使用此代码获取 GPS 状态。在活动的 onResume 中使用此代码

private LocationManager mLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
boolean GPSprovider = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

并根据 GPSProvider 您可以启用和禁用该按钮。

于 2012-11-29T08:44:51.193 回答
0

试试这个

final String GpsProvider = Settings.Secure.getString(
                getContentResolver(),
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (GpsProvider.equals(""){
//No GPS
}else{
 //GPS available 
}
于 2012-11-29T08:47:07.140 回答