MyLocationOverlay.enableCompass() 停止在 Google Map API 7 和 8 上工作
Posted
技术标签:
【中文标题】MyLocationOverlay.enableCompass() 停止在 Google Map API 7 和 8 上工作【英文标题】:MyLocationOverlay.enableCompass() stopped working on Google Map API 7 and 8 【发布时间】:2012-04-03 01:34:26 【问题描述】:Arg.. 这令人沮丧:
突然(2012 年 3 月)MyLocationOverlay.enableCompass 不起作用。使用 Google APIs 14 可以正常工作,但在 Google APIs 7 和 Google APIs 8 上会使屏幕全黑。
我想保留指南针功能,但由于它不是必需的,我暂时将其禁用。我认为这可能是在 SDK 工具 15 上安装 android SDK 工具 16 的结果......也许这是我的模拟器设置或 Eclipse 的问题?我有一种强烈的感觉,这个问题不会在真实设备上发生。我的下一步将是在另一个安装的 Eclipse/Android SDK 上尝试它,但那是另一天...
感谢您的帮助。
这是我的示例代码:起初,onResume,我没有启用指南针...一切正常。第二个,onPause后的onResume【点击home键然后重新访问app】,出现黑屏。怎么回事?
@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();
我的清单包括:
...
我的布局包括,以匹配正确的调试密钥存储:
<com.google.android.maps.MapView
android:id="@+id/superMapView"
android:layout_
android:layout_
android:layout_weight="3"
android:clickable="true"
android:apiKey="..." />
Eclipse 平台
版本:3.7.0.v20110530-9gF7UHNFFt4cwE-pkZDJ7oz-mj4OSEIlu9SEv0f
版本号:I20110613-1736
Android 开发工具包
版本:16.0.1.v201112150204-238534
问题类似于
http://groups.google.com/group/android-developers/browse_thread/thread/8928ffa71ef35f8a
但我想继续使用指南针...
【问题讨论】:
【参考方案1】:这可能是我的模拟器设置或 Eclipse 的问题?
模拟器从未模拟过指南针。罗盘玫瑰根本就不会出现。这仍然是我在 Android 2.1 模拟器上使用this sample project 时发生的情况,即使在按下 HOME 并返回活动之后也是如此。
您可以尝试点按一下黑屏。如果你得到一个 ANR 对话框,那么问题是某些东西正在占用主应用程序线程。
我有强烈的感觉这个问题不会在真实设备上发生
这表明您没有 Android 设备,否则您可能已经尝试过了。你需要一个,因为你永远不应该依赖模拟器来处理太接近硬件的东西(例如,GPS、指南针的磁通量传感器)。
另外,将所有出现的getApplicationContext()
替换为this
。切勿将 getApplicationContext()
用于 GUI 工作。
【讨论】:
好的。是的,我真的无法使用安卓设备,真的。然而,我很高兴看到我的应用程序在我朋友的设备上运行得非常好,甚至比我的模拟器快得多。感谢您对 getApplicationContext() 的见解,我会记下。以上是关于MyLocationOverlay.enableCompass() 停止在 Google Map API 7 和 8 上工作的主要内容,如果未能解决你的问题,请参考以下文章