CompassOverlay 的设备特定错误?

Device specific bug with CompassOverlay?

我目前正在 Samsung Galaxy Tab E 上使用 OSMdroid 5.1 开发应用程序。 我的问题是我根本无法让指南针出现。我在互联网上和 OSMdroid 源代码中搜索了几个小时,但我无法弄清楚。 我决定在我个人的 phone (Samsung Galaxy S4) 上测试它,结果证明它在这个设备上显示和运行完美。

平板电脑 运行 Android 5.1.1

Phone 在 Android 5.0.1

上 运行

我正在使用 Android Studio 2.1

以下是引用CompassOverlay的全部代码

@Override
public void onResume() {
    super.onResume();

    compassOverlay.enableCompass();
    myLocationOverlay.enableMyLocation();
    //mMyLocationOverlay.enableFollowLocation();
}

@Override
public void onPause() {
    super.onPause();

    compassOverlay.disableCompass();
    this.myLocationOverlay.disableMyLocation();
    //this.myLocationOverlay.disableFollowLocation();
}

private void mapEndConfig() {
    this.osmv.setBuiltInZoomControls(true);
    this.osmv.setMultiTouchControls(true);

    osmv.getController().setZoom(11);
    double lon = -64.5996; //-74.15702819824206; //,45.6294
    double lat = 45.6294; //40.64938745451832;

    IGeoPoint point = new GeoPoint(lat, lon); // lat lon and not inverse
    osmv.getController().setCenter(point);

    myLocationOverlay = new MyLocationNewOverlay(this, osmv);
    compassOverlay = new CompassOverlay(this, new InternalCompassOrientationProvider(this), this.osmv, mResourceProxy);
    osmv.getOverlayManager().add(myLocationOverlay);
    osmv.getOverlayManager().add(compassOverlay);

    /*anotherOverlayItemArray = new ArrayList<OverlayItem>();
    anotherOverlayItemArray.add(new CompassOverlay());

    ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay
            = new ItemizedIconOverlay<OverlayItem>(
            this, anotherOverlayItemArray, null);
    this.mOsmv.getOverlays().add(anotherItemizedIconOverlay);*/



    /*myLocationOverlay.runOnFirstFix(new Runnable() {
        public void run() {
            osmv.getController().animateTo(myLocationOverlay.getMyLocation());
        }
    });*/
}

之前好像没有人遇到过类似的罗盘问题,请问有解决办法吗?

好的,我找到问题了。这是因为Samsung Galaxy Tab E没有指南针磁力计。

当 OSMdroid 没有检测到它时,它不会给出错误或警告,而只是不显示它。