aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2013-05-19 20:13:09 +0200
committerSamuel Tardieu <sam@rfc1149.net>2013-05-19 20:18:57 +0200
commitac3800351ee51a7a8d062dec5e61e128f1aefd5d (patch)
treedbb232184ad5f289977c605298448e0d64428b1c /main/src
parenta417f690148b09fd9b3fe7ea7e7b64714791fa74 (diff)
downloadcgeo-ac3800351ee51a7a8d062dec5e61e128f1aefd5d.zip
cgeo-ac3800351ee51a7a8d062dec5e61e128f1aefd5d.tar.gz
cgeo-ac3800351ee51a7a8d062dec5e61e128f1aefd5d.tar.bz2
fix #2741: some devices do not have a magnetic field sensor
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/cgeonavigate.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/cgeonavigate.java b/main/src/cgeo/geocaching/cgeonavigate.java
index 17c2e20..c029ee7 100644
--- a/main/src/cgeo/geocaching/cgeonavigate.java
+++ b/main/src/cgeo/geocaching/cgeonavigate.java
@@ -12,6 +12,8 @@ import org.apache.commons.lang3.StringUtils;
import android.content.Context;
import android.content.Intent;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.view.Menu;
@@ -45,6 +47,7 @@ public class cgeonavigate extends AbstractActivity {
private TextView distanceView = null;
private TextView headingView = null;
private CompassView compassView = null;
+ private boolean hasMagneticFieldSensor;
public cgeonavigate() {
super("c:geo-compass", true);
@@ -58,6 +61,12 @@ public class cgeonavigate extends AbstractActivity {
setContentView(R.layout.navigate);
setTitle(res.getString(R.string.compass_title));
+ final SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
+ hasMagneticFieldSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null;
+ if (!hasMagneticFieldSensor) {
+ Settings.setUseCompass(false);
+ }
+
// get parameters
Bundle extras = getIntent().getExtras();
if (extras != null) {
@@ -118,6 +127,7 @@ public class cgeonavigate extends AbstractActivity {
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
menu.add(0, MENU_SWITCH_COMPASS_GPS, 0, res.getString(Settings.isUseCompass() ? R.string.use_gps : R.string.use_compass)).setIcon(R.drawable.ic_menu_compass);
+ menu.findItem(MENU_SWITCH_COMPASS_GPS).setVisible(hasMagneticFieldSensor);
menu.add(0, MENU_MAP, 0, res.getString(R.string.caches_on_map)).setIcon(R.drawable.ic_menu_mapmode);
menu.add(0, 2, 0, res.getString(R.string.destination_set)).setIcon(R.drawable.ic_menu_edit);
if (coordinates.size() > 1) {