Do not draw foregroundBearingDrawable when rotation sensor is not available (#8065)

This commit is contained in:
Tobrun
2017-02-15 16:02:34 +01:00
committed by GitHub
parent 9ed9a32ded
commit 8bf1cf7843

View File

@@ -298,7 +298,7 @@ public class MyLocationView extends View {
}
// draw foreground
if (myBearingTrackingMode == MyBearingTracking.NONE) {
if (myBearingTrackingMode == MyBearingTracking.NONE || !compassListener.isSensorAvailable()) {
if (foregroundDrawable != null) {
foregroundDrawable.draw(canvas);
}
@@ -322,7 +322,8 @@ public class MyLocationView extends View {
if (location != null) {
setCompass(location.getBearing() - bearing);
}
} else if (myBearingTrackingMode == MyBearingTracking.COMPASS) {
} else if (myBearingTrackingMode == MyBearingTracking.COMPASS
&& compassListener.isSensorAvailable()) {
setCompass(magneticHeading - bearing);
}
}
@@ -336,7 +337,8 @@ public class MyLocationView extends View {
}
public void onStart() {
if (myBearingTrackingMode == MyBearingTracking.COMPASS) {
if (myBearingTrackingMode == MyBearingTracking.COMPASS
&& compassListener.isSensorAvailable()) {
compassListener.onResume();
}
if (isEnabled()) {
@@ -458,7 +460,8 @@ public class MyLocationView extends View {
public void setMyBearingTrackingMode(@MyBearingTracking.Mode int myBearingTrackingMode) {
this.myBearingTrackingMode = myBearingTrackingMode;
if (myBearingTrackingMode == MyBearingTracking.COMPASS) {
if (myBearingTrackingMode == MyBearingTracking.COMPASS
&& compassListener.isSensorAvailable()) {
compassListener.onResume();
} else {
compassListener.onPause();
@@ -613,6 +616,10 @@ public class MyLocationView extends View {
sensorManager.unregisterListener(this, rotationVectorSensor);
}
public boolean isSensorAvailable() {
return rotationVectorSensor != null;
}
@Override
public void onSensorChanged(SensorEvent event) {