我关注这篇文章在Android上获取用户当前位置的最简单和最强大的方法是什么?
我有很多关于帖子的问题,但不幸的是我没有足够的声誉在那里回复,所以我必须创建一个单独的帖子。任何不便敬请谅解。
将代码复制并粘贴到我的应用程序中,它适用于我的三星 S2,但不适用于模拟器 (2.3)。
我的问题:
在模拟器中运行时,代码永远不会到达 onLocationChanged() 方法,而是等待 20 秒(由 timer1 设置的超时)来启动 GetLastLocation 的 run()。为什么?
现在,GetLastLocation 类的 run() 方法总是被调用,我得到了上面的异常。
(E/AndroidRuntime(436): android.view.ViewRoot$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸它的视图。)。
我猜错误发生在我的代码中:
public LocationResult locationResult = new LocationResult()
{
@Override
public void gotLocation(final Location location)
{
Log.i(LOG_TAG, "gotLocation");
if (location == null)
{
Log.i(LOG_TAG, "Cannot get location");
}
else
{
Log.i(LOG_TAG, "Lat: " + location.getLatitude() + " Long:" + location.getLongitude());
tv = (TextView) findViewById(R.id.my_text); // <<< error here!!!
tv.setText(lat + "," + lon);
}
}
};
TextView tv 在我的主 Activity 中初始化,它调用MyLocation myLocation = new MyLocation();
和myLocation.getLocation(this, locationResult);
. 设计与帖子的设计相同。我想知道 GetLastLocation 的 run() 是否在另一个线程中被调用?为什么是这样?有没有人有同样的问题?
非常感谢!