在android emulator中查找最后一个已知位置

在android emulator中查找最后一个已知位置,android,location,avd,locationlistener,Android,Location,Avd,Locationlistener,我正在尝试获取用户的最后一个已知位置,我正在使用getLastKnownLocation方法,因为我只想读取一次位置,我正在emulator中测试应用程序(不是真正的手机),但位置为空,我的代码 locMgr = (LocationManager) getSystemService(LOCATION_SERVICE); Location myLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER); if(myLoc !=

我正在尝试获取用户的最后一个已知位置,我正在使用getLastKnownLocation方法,因为我只想读取一次位置,我正在emulator中测试应用程序(不是真正的手机),但位置为空,我的代码

locMgr = (LocationManager) getSystemService(LOCATION_SERVICE); 
Location myLoc = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
if(myLoc != null)
{}
else 
{
 Toast.makeText(getApplicationContext(), "coudn't get your location", Toast.LENGTH_LONG).show();
}
问题是,我不知道何时将位置(从DDMS)发送到仿真器(我尝试在打开应用程序之前和之后发送它,有时它会工作)

我可以通过输入LocationListener获得位置,并执行以下操作:

mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE); 
mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 3, this); 
在onLocationChanged()方法之外,它工作正常,但每次位置更改时它都会告诉我,我只需要读取一次位置。
那么,如何一次获取用户的当前位置呢?

为什么不创建一个服务或线程,一旦确定了位置就可以进行回调呢?这样你就可以经常检查。

不,我只想得到一次位置,这种方法有什么问题?不能用getLastKnownLocation()方法完成吗?显然,它不能按预期工作,但听起来在未知的时间之后,您确实会得到一个有效的响应。无论此延迟的原因是什么,线程都会让应用程序等待响应,同时继续为用户创建显示并允许交互。问题是,使用requestLocationUpdates(),它可以毫无延迟地正常工作,我正在模拟器中测试(getLastKownLocation()),因此我会发送位置,所以不应该有任何延迟,事实上它不是一个延迟,它不工作(返回null)啊,好了,开始吧。模拟器对于大多数硬件交互来说都是垃圾。