大佬教程收集整理的这篇文章主要介绍了Android – 可靠地获取当前位置,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
LOCATIOnManager.requestLOCATIOnupdates(bestProvider,listener);
并检查:
LOCATIOnManager.getLastKNownLOCATIOn(bestProvider);
但是我在真实设备上运行时遇到了问题.首先,getLastKNownLOCATIOn很可能是GPS所在的最后一个位置,可能是任何地方(即,它可能距离用户的当前位置数英里).所以我只是等待requestLOCATIOnupdates回调,如果它们在两分钟内不存在,则删除监听器并放弃,对吧?
错了,因为如果用户的位置已经稳定(即,他们最近使用过GPS并且没有移动过),那么我的听众永远不会被调用,因为位置没有改变.但GPS将一直运行,直到我的听众被移除,耗尽电池……
public class MyLOCATIOn { Timer timer1; LOCATIOnManager lm; public Boolean getLOCATIOn(Context context) { lm = (LOCATIOnManager) context.getSystem@R_874_9260@ce(Context.LOCATION_@R_874_9260@CE); lm.requestLOCATIOnupdates(LOCATIOnManager.GPS_PROVIDER,LOCATIOnListenerGps); timer1=new Timer(); timer1.schedule(new GetLastLOCATIOn(),20000); return true; } LOCATIOnListener LOCATIOnListenerGps = new LOCATIOnListener() { public void onLOCATIOnChanged(LOCATIOn LOCATIOn) { timer1.cancel(); lm.removeupdates(this); //use LOCATIOn as it is the latest value } public void onProviderDisabled(String provider) {} public void onProviderEnabled(String provider) {} public void onStatusChanged(String provider,int status,Bundle extras) {} }; class GetLastLOCATIOn extends TimerTask { @Override public void run() { lm.removeupdates(LOCATIOnListenerGps); LOCATIOn LOCATIOn=lm.getLastKNownLOCATIOn(LOCATIOnManager.NETWORK_PROVIDER); //use LOCATIOn as we have not received the new value from listener } } }
我们启动监听器并等待更新一段时间(在我的示例中为20秒).如果我们在此期间收到更新,我们会使用它.如果我们在此期间没有收到更新,我们使用getLastKNownLOCATIOn值并停止监听器.
你可以在这里看到我的完整代码What is the simplest and most robust way to get the user’s current location on Android?
以上是大佬教程为你收集整理的Android – 可靠地获取当前位置全部内容,希望文章能够帮你解决Android – 可靠地获取当前位置所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。