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 上工作的主要内容,如果未能解决你的问题,请参考以下文章