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 没有检测到它时,它不会给出错误或警告,而只是不显示它。
我目前正在 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 没有检测到它时,它不会给出错误或警告,而只是不显示它。