MyLocationOverlay.enableCompass () перестал работать с Google Map API 7 и 8

1

Arg.. Это расстраивает:

Внезапно (март 2012 г.) MyLocationOverlay.enableCompass не работает. Он работает нормально с использованием API Google 14, но оставляет экран черным в API Google 7 и API Google 8.

Я хотел бы сохранить функциональность компаса, но поскольку это не существенно, я просто оставлю его отключенным. Я думаю, что это может быть результатом установки Android SDK Tools 16 через SDK Tools 15... Может быть, это проблема с моей настройкой эмулятора или Eclipse? У меня сильное чувство, что эта проблема не будет возникать на реальном устройстве. Следующим шагом с моей стороны будет попробовать еще одну установку Eclipse/Android SDK, но это на следующий день...

Спасибо за помощь.

Вот мой пример кода: сначала, onResume, я не включаю компас... Все работает нормально. Во-вторых, onResume после onPause [нажмите кнопку "домой", а затем повторно загрузите приложение], появится черный экран. Что происходит?

@Override
public void onCreate(Bundle state)
{
    super.onCreate(state);
    setContentView(MAP_LAYOUT);
    MapView mv = (MapView) findViewById(MAP_VIEW);
    mv.setBuiltInZoomControls(true);
    List<Overlay> mapOverlays = mv.getOverlays();
    Context c = getApplicationContext();
    mLocation = new MyLocationOverlay(c,mv);
    mapOverlays.add(mLocation);
}

@Override
public void onPause() {
    super.onPause();
    mLocation.disableCompass();
    mLocation.disableMyLocation();
    mCompassOn = true;
}

boolean mCompassOn = false;

@Override
public void onResume() {
    super.onResume();
    if( mCompassOn ) mLocation.enableCompass();
    mLocation.enableMyLocation();
}

Мой манифест включает:

... <uses-permission android: name = "android.permission.INTERNET"/> <uses-permission android: name = "android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android: name = "android.permission. ACCESS_FINE_LOCATION "/> <application android: icon =" @drawable/ic_launcher "android: label =" @string/app_name "> <uses-library android: name =" com.google.android.maps "/>... </application>...

И мой макет включает, чтобы соответствовать правильному хранилищу ключей отладки:

<com.google.android.maps.MapView
    android:id="@+id/superMapView"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="3"
    android:clickable="true"
    android:apiKey="..." />

Платформа Eclipse

Версия: 3.7.0.v20110530-9gF7UHNFFt4cwE-pkZDJ7oz-mj4OSEIlu9SEv0f

Идентификатор сборки: I20110613-1736

Android Development Toolkit

Версия: 16.0.1.v201112150204-238534

Вопрос аналогичен

http://groups.google.com/group/android-developers/browse_thread/thread/8928ffa71ef35f8a

но я хотел бы продолжать использовать компас...

Теги:
google-maps
mapactivity
android-sdk-2.1

1 ответ

0

Может быть, это проблема с настройкой эмулятора или Eclipse?

Эмулятор никогда не эмулировал компас. Компас просто не появлялся. Это все равно, что происходит для меня на эмуляторе Android 2.1, с этим образцовым проектом, даже после нажатия HOME и возврата к активности.

Вы можете попробовать немного нажать на черный экран. Если вы получите диалог ANR, проблема в том, что что-то связывает основной поток приложений.

У меня сильное чувство, что эта проблема не будет возникать на реальном устройстве

Это говорит о том, что у вас нет устройства Android, иначе вы бы уже пробовали это. Вам нужно его получить, так как вы никогда не должны полагаться на эмулятор для вещей, которые слишком близки к оборудованию (например, GPS, датчик магнитного потока для компаса).

Кроме того, замените все вхождения getApplicationContext() на this. Никогда не используйте getApplicationContext() для работы с графическим интерфейсом.

  • 0
    Хорошо. Да, у меня действительно нет доступа к устройству Android, правда. Тем не менее, я был приятно удивлен, увидев, что мое приложение работает достаточно хорошо, даже намного быстрее, чем мой эмулятор, на устройствах моих друзей. Спасибо за понимание о getApplicationContext (), я приму к сведению.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню