我正在使用新的FusedLocationService,但是,尽管我在室内时获得了经度和经度,但我看不到GPS信号被获取(通知栏中的小gps点没有出现)。
我正在使用适用于位置服务的here示例
我不明白的是为什么GPS信号没有被搜索,尽管启用了GPS(但我得到了坐标,我想我从wifi或手机ID中获取了这些信息)
在我的Application类中,我创建了一个Service(这是一个ServicesManager,它又创建了另一个服务(用于检索位置)。我将作为上下文发送到LocationClient的ServicesManager,因为它是一个上下文(因为它是一个服务)
提前致谢。吉列尔莫。
更新 如果在启用GPS的情况下关闭手机上位置服务中的“使用无线网络”选项,则根本无法获取位置。因此,FusedLocationService和GPS正在发生一些事情。
我会添加代码,以便更好地理解
在应用程序类中,我使用的是LocalService示例:here
private ServicesManager mBoundService;
private boolean mIsBound;
private ServiceConnection mConnectionToServicesManager = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mBoundService = ((ServicesManager.LocalBinder)service).getService();
servicesManager = mBoundService;
}
public void onServiceDisconnected(ComponentName className) {
mBoundService = null;
}
};
void doBindServiceManagerService() {
bindService(new Intent(this, ServicesManager.class), mConnectionToServicesManager, Context.BIND_AUTO_CREATE);
mIsBound = true;
}
void doUnbindService() {
if (mIsBound) {
unbindService(mConnectionToServicesManager);
mIsBound = false;
}
}
然后 ServicesManager 扩展服务,在构造函数中我写这个:
fusedLocationService = new FusedLocationService(this);
然后我打电话给:
fusedLocationService.startListeningLocationUpdates(this);
这是 FusedLocationService 类
中 startListeningLocationUpdates 的实现public boolean startListeningLocationUpdates(Context context) {
if (!GdpTesisApplication.IsGooglePlayServicesAvailable) {
return false;
}
mDetectionRequester.requestUpdates();
FusedLocationService.IsServiceRunning = true;
return true;
}
requestUpdates()尝试连接到GooglePlayServices
private void requestConnection() {
getFusedLocationClient().connect();
}
@Override
public void onConnected(Bundle arg0) {
continueRequestLocationUpdates();
}
private void continueRequestLocationUpdates() {
locationrequest = LocationRequest.create();
locationrequest.setInterval(LocationUtils.DETECTION_INTERVAL_MILLISECONDS);
getFusedLocationClient().requestLocationUpdates(locationrequest, createRequestPendingIntent());
}
private PendingIntent createRequestPendingIntent() {
if (null != getRequestPendingIntent()) {
return mFusedLocationPendingIntent;
} else {
Intent intent = new Intent(mContext, FusedLocationIntentService.class);
PendingIntent pendingIntent = PendingIntent.getService(mContext, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
setRequestPendingIntent(pendingIntent);
return pendingIntent;
}
}
最后我有一个IntentService,其中onHandleIntent提取位置并显示:
Location location = intent.getParcelableExtra(LocationClient.KEY_LOCATION_CHANGED);
我不知道为什么GPS无法正常工作。有什么想法吗?
答案 0 :(得分:0)
看看这里:
您没有为LocationRequest设置优先级。尝试使用PRIORITY_HIGH_ACCURACY。