我正在开发一款使用Google地图并跟踪用户位置的应用。我想改变“你在这里!”的知名度。当用户手动关闭位置服务或服务进入无法访问的状态时的标记。此方法可以返回是否启用位置服务的信息:
private boolean isLocationServicesEnabled() {
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER) || lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
return true;
}
return false;
}
但是,我不想一次检测位置服务的状态。每当用户打开或关闭位置服务时,我都应检测到它并更改标记的可见性。简而言之,这个草率的伪代码解释了我想听的内容:
while application runs
if location services turn off
change marker visibility to false
else
change marker visibility to true
如果没有android.location.LocationListener,我没有找到实现此任务的方法,只想使用Fused Location Provider实现它。你有什么主意吗?如果您想看到,我使用的核心结构如下:
http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/ (检查“完整代码”的标题)
答案 0 :(得分:3)
以正确的方式执行此操作涉及大量代码。您必须使用位置SettingsApi类。
与该位置进行交互的主要入口点 settings-enabler API。
此API可让应用程序轻松确保设备的系统 根据应用的位置需求正确配置了设置。
幸运的是,谷歌在github
上提供了一个完整的样本答案 1 :(得分:0)
如何实现gps监听器?
mLocationManager.addGpsStatusListener(new GpsStatus.Listener(){
@Override
public void onGpsStatusChanged(int event) {
if(event==GpsStatus.GPS_EVENT_STARTED){
Log.d(TAG,"Gps Started");
}else if(event==GpsStatus.GPS_EVENT_STOPPED){
Log.d(TAG,"Gps Stopped");
}
}
});
修改上述代码以更改标记的可见性。希望这有效。