2011-03-16 57 views
1

嗨 我想获得用户位置的纬度和经度的当前位置。 我曾尝试开发者网站和堆栈溢出,有针对性的对移动用户的例子负载其中使用的一些事情,如: - onLocationChanged() 我不需要位置更新,用户只需打开了一分钟或2 ,所以我需要找到位置的应用程序启动,以及如果用户从未使用过任何地理位置的应用程序之前,因此时间我也想为 LocationManager.getLastKnownLocation()如何获得在Android

我的代码是一种替代方案: -

LocationManager lm = (LocationManager) 
     getSystemService(Context.LOCATION_SERVICE); 
     // connect to the GPS location service 
     Location loc = lm.getLastKnownLocation(lm.NETWORK_PROVIDER); 
     Toast.makeText(currentLocation.this, "Latitude -> "+Double.toString(loc.getLatitude()) 
       +" Longitude is -> "+Double.toString(loc.getLongitude()), Toast.LENGTH_LONG).show(); 

和工作正常。 但是我害怕getLastKnownLocation在第一次使用时可能会返回null。

感谢

+1

你问过9个问题,从来没有接受一个答案。接受你以前提出的问题的正确答案,更多的用户会关注你的新问题。 – 2011-03-16 20:33:41

回答

3

注册的位置更新,一旦你收到第一次更新,你可以注销为未来的更新。

换句话说,创建一个LocationListener并将其注册为您的LocationManagerrequestLocationUpdates方法。在你LocationListeneronLocationChanged方法,请您LocationManagerremoveUpdates方法,以this作为参数。

你会得到一个新的位置之前,它可能需要一些时间,但除了使用getLastKnownLocation有没有真正的替代品。

+0

感谢您的回复。但requestLocationUpdates有4个参数,第三个参数是回调发生时的最小距离,datas什么我感到困惑,我应该放在那里null?因为可能是用户没有移动.... – abhishek 2011-03-16 20:47:04

+0

传递0作为minDistance将确保每次接收到新位置时调用该方法。 – 2011-03-16 20:52:46

+0

你做了伎俩谢谢 – abhishek 2011-03-17 07:06:10