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
Android Development Toolkit
Вопрос аналогичен
http://groups.google.com/group/android-developers/browse_thread/thread/8928ffa71ef35f8a
но я хотел бы продолжать использовать компас...
Может быть, это проблема с настройкой эмулятора или Eclipse?
Эмулятор никогда не эмулировал компас. Компас просто не появлялся. Это все равно, что происходит для меня на эмуляторе Android 2.1, с этим образцовым проектом, даже после нажатия HOME и возврата к активности.
Вы можете попробовать немного нажать на черный экран. Если вы получите диалог ANR, проблема в том, что что-то связывает основной поток приложений.
У меня сильное чувство, что эта проблема не будет возникать на реальном устройстве
Это говорит о том, что у вас нет устройства Android, иначе вы бы уже пробовали это. Вам нужно его получить, так как вы никогда не должны полагаться на эмулятор для вещей, которые слишком близки к оборудованию (например, GPS, датчик магнитного потока для компаса).
Кроме того, замените все вхождения getApplicationContext()
на this
. Никогда не используйте getApplicationContext()
для работы с графическим интерфейсом.