Android 防止GPS在搜索位置时耗尽手机电池
我正在使用LocationManager的方法Android 防止GPS在搜索位置时耗尽手机电池,android,gps,android-location,Android,Gps,Android Location,我正在使用LocationManager的方法requestLocationUpdates获取手机的位置 我使用GPS作为提供商,并使用LocationListener更新我的应用程序的UI 我需要每1000毫秒对我的活动调用一个方法。为此,我将requestLocationUpdates配置如下: locationManager.requestLocationUpdates(provider, 0, 1000, listener); 一切都很顺利。调用onLocationChanged方法,
requestLocationUpdates
获取手机的位置
我使用GPS作为提供商,并使用LocationListener
更新我的应用程序的UI
我需要每1000毫秒对我的活动调用一个方法。为此,我将requestLocationUpdates
配置如下:
locationManager.requestLocationUpdates(provider, 0, 1000, listener);
一切都很顺利。调用onLocationChanged
方法,纬度和逻辑度显示为ok
但我有一些疑问
自动超时李>
或者,应用程序会一直尝试使用GPS获取位置,并耗尽电池电量
如果我切换到WiFI/3G
Provider,并且信号也不工作,会发生什么情况?事情也是这样吗
我在互联网上搜索答案,但找不到正确的解决方案。例如,假设您驾驶的是一辆汽车,LocationManager已连接到有效的GPS提供商。现在你开车穿过隧道,失去了信号。现在不再触发onLocationChanged()
。但该系统将继续在后台搜索有效的GPS提供商。如果您通过隧道,系统将重新连接到GPS提供商(如果仍然可用),并再次触发onLocationChanged()
在连接和获取位置更新时,电池的耗电量比系统寻找有效提供商时要高得多
如果您切换到WiFi或3G,系统将查找最后一组提供商,并覆盖上一组提供商。但行为将是一样的
您可以通过监视LocationListener.onStatusChanged()回调和接口对此事件做出反应。例如,切换到另一个提供程序,或者如果没有提供程序可用,请调用removeLocationUpdates()
,并在一段时间后使用计时器再次调用requestLocationUpdates()
。这将更好地节省您的电池
编辑:
LocationManager.isProviderEnabled(LocationManager.GPS\u提供程序)
如果在设备设置中启用了GPS,则返回true。没有迹象表明您已连接到GPS提供商。
使用该方法可以知道哪个提供程序可用
请注意:如果您在房间内,您几乎永远无法连接到GPS。1。如果你没有GPS,也没有提供商信号,你将无法获得位置。2.据我所知,它将一直运行,直到您或服务器停止它(一旦您达到最大请求,服务器将停止它)。3.是的,经常发出请求(特别是每1000毫秒一次,尽管它不会真的那么快)会耗尽你的电池。4.如果您切换到您的提供商,但他们的工作不正常,您将无法获得更新。你必须有某种连接才能获取位置更新。因此,使用GPS或WiFi/3G,没有信号,如果我不设法停止“拉动”,电池将耗尽?。有一些正确的方法可以做到这一点??谢谢如果你没有信号,它只会继续寻找,最终会耗尽你的电池。你可以设置某种计时器,一旦你在一段时间内没有收到信号,它就会停止你的服务,并在有信号时提示用户重试。我正在测试这种情况。我在我的房子里(里面没有GPS信号)。我运行我的应用程序。应用程序使用locationManager.isProviderEnabled(locationManager.GPS\U提供程序)检查GPS;并返回true。但是,当方法locationManager.requestLocationUpdates(provider,0,1000,listener)时;调用,开始尝试获取信号,但什么都没有发生。未调用任何LocationListener方法。不仅位置改变,状态改变,什么都没有。在这种情况下,电池耗尽了,我不知道该怎么做谢谢你的回答。所以你是在告诉我我是对的。问题是不存在任何截断GPS拉力的方法?。没有办法添加超时?这是一种正确而简单的方法?是的,只有RemovelocationUpdate(…)将停止此机制。