所以我试图在应用程序中只对一次gps坐标进行采样.我不想创建一个LocationListener对象来不断获取gps更新.我想等到收到坐标,然后继续进行另一项任务.
这是一段代码片段
LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);
Run Code Online (Sandbox Code Playgroud)
loc变量在模拟器中始终为null.我尝试使用命令"geo fix latitude longitude"来设置它,我也尝试使用DDMS设置它.这两种方法都没有对代码产生任何影响.该片段也没有引起任何异常.
谢谢你的帮助.
小智 11
请求更新某个位置的调用没有阻塞,因此它不会在那里等待.此外,模拟器中的提供程序可能尚未启动.
可能的检查可能是看它中的设置是否禁用gps提供程序?然后发送geo修复.
但是,我会使用位置监听器,因为您需要进行进一步的地理修复,所以它将是您的理想选择.位置监听器用于在位置发生变化时从LocationManager接收通知.您可以在第一个geofix之后取消注册侦听器.
注意:在设备上获取当前位置可能需要一些时间,甚至在设备上也可以返回null.