Я следую за этим постом Какой самый простой и надежный способ узнать текущее местоположение пользователя на Android?
У меня много вопросов по поводу поста, но, к сожалению, я не знаюУ меня достаточно репутации, чтобы отвечать там, поэтому я должен создать отдельный пост.Приносим извинения за неудобства.
Скопируйте и вставьте код в мое приложение, и оно работает на моем Samsung S2, но не работает в эмуляторе (2.3).
Мои вопросы:
При запуске в эмуляторе код никогда не достигает методов onLocationChanged (), вместо этого он будет ждать 20 секунд (тайм-аут, установленный timer1), чтобы запустить run () функции GetLastLocation.Почему?
Теперь метод run () класса GetLastLocation всегда вызывается, и я получил исключение выше.
(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 инициализируется в моей основной деятельности, которая вызывает MyLocation myLocation = new MyLocation();
и myLocation.getLocation(this, locationResult);
.Дизайн такой же, как и у поста.Интересно, вызывается ли run () GetLastLocation в другом потоке?Почему это?У кого-нибудь возникла такая же проблема?
Большое спасибо!