RequestLocationUpdates with Pending Intent以及如何获取位置提供者(GPS,网络)状态?

时间:2014-12-29 13:36:03

标签: android gps locationmanager location-provider

我使用Android SDK位置管理器来获取用户位置。

我正在使用Pending Intent请求位置信息。我已经使用了挂起的意图,因为我需要发送位置信息,即使应用程序没有运行。

Intent mLocationIntent = new Intent(mContext,
            LocationIntentService.class);
mLocationUpdatePendingIntent = PendingIntent.getService(mContext, 1,
            mLocationIntent, 0);
mLocationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 0, 0,
                mLocationUpdatePendingIntent);

一旦注册了上面的代码,我就会在LocationIntentService类的onHandleIntent中获取位置信息。

但我没有onProviderEnabled或onProviderDisabled方法来监听gps和网络提供商状态。而且我也不想使用融合的位置api。

如何通过使用Pending Intent请求位置更新来实现这两个目的。或者以其他任何方式注册位置信息以及位置提供者状态。

1 个答案:

答案 0 :(得分:-1)

为什么不使用locationlistener而不是意图?

类似的东西:

LocationListener mLocationListener = new LocationListener() {

                @Override
                public void onStatusChanged(String provider, int status,
                        Bundle extras) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onProviderEnabled(String provider) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onProviderDisabled(String provider) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onLocationChanged(Location location) {
                    // TODO Auto-generated method stub                  

                }
};

然后进行更新使用:

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER))    
                    manager.requestSingleUpdate(LocationManager.GPS_PROVIDER, mLocationListener, null);