mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 23:07:11 +00:00
TRACKING APP: remove magnetic heading, only keep course over ground, with declination mode
This commit is contained in:
1 parent
ac45797106
commit
bea4544381
10 files changed
+35
-154
No files matched your search
@@ -13,7 +13,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="10dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:text="@string/heading"
|
||||
android:text="@string/course_over_ground"
|
||||
android:textColor="@android:color/darker_gray"
|
||||
android:textSize="15sp"
|
||||
android:paddingTop="15dp"
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
<string name="preference_energy_saving_is_disabled">Aus</string>
|
||||
<string name="prefrence_energy_saving_summary_is_enabled">GPS Updates werden alle 30 Sekunden verschickt.</string>
|
||||
<string name="prefrence_energy_saving_summary_is_disabled">GPS Updates werden alle 3 Sekunden verschickt.</string>
|
||||
<string name="preference_heading_from_magnetic_key_is_enabled">magn.</string>
|
||||
<string name="preference_heading_from_magnetic_key_is_disabled">GPS</string>
|
||||
<string name="preference_heading_from_magnetic_key_summary_is_enabled">Richtung stammt vom Magnetkompass</string>
|
||||
<string name="preference_heading_from_magnetic_key_summary_is_disabled">Richtung stammt vom GPS</string>
|
||||
<string name="preference_heading_from_magnetic_enabled">Richtung</string>
|
||||
<string name="preference_heading_with_declination_key_is_enabled">Ein</string>
|
||||
<string name="preference_heading_with_declination_key_is_disabled">Aus</string>
|
||||
<string name="preference_heading_with_declination_key_summary_is_enabled">Anzeige: Magnetkompasskurs + Ablenkung</string>
|
||||
<string name="preference_heading_with_declination_key_summary_is_disabled">Anzeige: Magnetkompasskurs</string>
|
||||
<string name="preference_heading_with_declination_enabled">Richtung</string>
|
||||
</resources>
|
||||
@@ -80,6 +80,7 @@
|
||||
<string name="hud_heading_prefix">HDG: </string>
|
||||
<string name="hud_speed_over_ground_prefix">SPD: </string>
|
||||
<string name="heading">Kurs</string>
|
||||
<string name="course_over_ground">Course over Ground</string>
|
||||
<string name="sog">SOG</string>
|
||||
<string name="none">Keine</string>
|
||||
<string name="show_leaderboard">Leaderboard</string>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<string name="preference_server_url_default">http://95.85.58.11:8000</string>
|
||||
|
||||
<string name="preference_energy_saving_enabled_key">preferenceEnergySavingEnabled</string>
|
||||
<string name="preference_heading_from_magnetic_key">preferenceHeadingFromMagneticKey</string>
|
||||
<string name="preference_heading_with_declination">preferenceHeadingWithDeclination</string>
|
||||
|
||||
<string name="settings_category_energy_saving">Battery Saving</string>
|
||||
<string name="energy_saving_enabled">Save Energy</string>
|
||||
@@ -29,9 +29,9 @@
|
||||
<string name="preference_tracker_is_tracking_checkin_digest">trackerIsTrackingCheckinDigest</string>
|
||||
<string name="preference_last_scanned_qr_code">lastScannedQRCode</string>
|
||||
|
||||
<string name="preference_heading_from_magnetic_key_is_enabled">magn.</string>
|
||||
<string name="preference_heading_from_magnetic_key_is_disabled">GPS</string>
|
||||
<string name="preference_heading_from_magnetic_key_summary_is_enabled">Heading from magnetic compass</string>
|
||||
<string name="preference_heading_from_magnetic_key_summary_is_disabled">Heading from GPS</string>
|
||||
<string name="preference_heading_from_magnetic_enabled">Heading</string>
|
||||
<string name="preference_heading_with_declination_key_is_enabled">On</string>
|
||||
<string name="preference_heading_with_declination_key_is_disabled">Off</string>
|
||||
<string name="preference_heading_with_declination_key_summary_is_enabled">Display: Magnetic + Declination</string>
|
||||
<string name="preference_heading_with_declination_key_summary_is_disabled">Display: Magnetic</string>
|
||||
<string name="preference_heading_with_declination_enabled">Heading</string>
|
||||
</resources>
|
||||
@@ -68,6 +68,7 @@
|
||||
<string name="tracking_colon">Tracking:</string>
|
||||
<string name="regatta_in_progress">The regatta is in progress.</string>
|
||||
<string name="heading">Heading</string>
|
||||
<string name="course_over_ground">Course over Ground</string>
|
||||
<string name="sog">Speed over Ground</string>
|
||||
<string name="none">None</string>
|
||||
<string name="show_leaderboard">Leader board</string>
|
||||
|
||||
@@ -23,12 +23,12 @@
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="@string/preference_heading_from_magnetic_key"
|
||||
android:switchTextOn="@string/preference_heading_from_magnetic_key_is_enabled"
|
||||
android:switchTextOff="@string/preference_heading_from_magnetic_key_is_disabled"
|
||||
android:summaryOn="@string/preference_heading_from_magnetic_key_summary_is_enabled"
|
||||
android:summaryOff="@string/preference_heading_from_magnetic_key_summary_is_disabled"
|
||||
android:title="@string/preference_heading_from_magnetic_enabled" />
|
||||
android:key="@string/preference_heading_with_declination"
|
||||
android:switchTextOn="@string/preference_heading_with_declination_key_is_enabled"
|
||||
android:switchTextOff="@string/preference_heading_with_declination_key_is_disabled"
|
||||
android:summaryOn="@string/preference_heading_with_declination_key_summary_is_enabled"
|
||||
android:summaryOff="@string/preference_heading_with_declination_key_summary_is_disabled"
|
||||
android:title="@string/preference_heading_with_declination_enabled" />
|
||||
</PreferenceCategory>
|
||||
|
||||
|
||||
|
||||
-102
@@ -1,102 +0,0 @@
|
||||
package com.sap.sailing.android.tracking.app.sensors;
|
||||
|
||||
import android.content.Context;
|
||||
import android.hardware.Sensor;
|
||||
import android.hardware.SensorEvent;
|
||||
import android.hardware.SensorEventListener;
|
||||
import android.hardware.SensorManager;
|
||||
|
||||
public class CompassManager implements SensorEventListener {
|
||||
//private final static String TAG = CompassManager.class.getName();
|
||||
|
||||
private static CompassManager mInstance;
|
||||
private Context mContext;
|
||||
|
||||
private SensorManager sensorManager;
|
||||
private Sensor gsensor;
|
||||
private Sensor msensor;
|
||||
private float[] mGravity = new float[3];
|
||||
private float[] mGeomagnetic = new float[3];
|
||||
private float azimuth = 0f;
|
||||
|
||||
private MagneticHeadingListener listener;
|
||||
|
||||
public static synchronized CompassManager getInstance(Context context) {
|
||||
if (mInstance == null) {
|
||||
mInstance = new CompassManager(context);
|
||||
}
|
||||
return mInstance;
|
||||
}
|
||||
|
||||
private CompassManager(Context context) {
|
||||
mContext = context;
|
||||
sensorManager = (SensorManager) mContext
|
||||
.getSystemService(Context.SENSOR_SERVICE);
|
||||
gsensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
|
||||
msensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
|
||||
}
|
||||
|
||||
public void registerListener(MagneticHeadingListener listener)
|
||||
{
|
||||
this.listener = listener;
|
||||
start();
|
||||
}
|
||||
|
||||
public void unregisterListener()
|
||||
{
|
||||
stop();
|
||||
this.listener = null;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
sensorManager.registerListener(this, gsensor, SensorManager.SENSOR_DELAY_GAME);
|
||||
sensorManager.registerListener(this, msensor, SensorManager.SENSOR_DELAY_GAME);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
sensorManager.unregisterListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
final float alpha = 0.97f;
|
||||
|
||||
if (listener == null) {
|
||||
return;
|
||||
}
|
||||
synchronized (this) {
|
||||
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
|
||||
mGravity[0] = alpha * mGravity[0] + (1 - alpha) * event.values[0];
|
||||
mGravity[1] = alpha * mGravity[1] + (1 - alpha) * event.values[1];
|
||||
mGravity[2] = alpha * mGravity[2] + (1 - alpha) * event.values[2];
|
||||
}
|
||||
|
||||
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
|
||||
mGeomagnetic[0] = alpha * mGeomagnetic[0] + (1 - alpha) * event.values[0];
|
||||
mGeomagnetic[1] = alpha * mGeomagnetic[1] + (1 - alpha) * event.values[1];
|
||||
mGeomagnetic[2] = alpha * mGeomagnetic[2] + (1 - alpha) * event.values[2];
|
||||
}
|
||||
|
||||
float R[] = new float[9];
|
||||
float I[] = new float[9];
|
||||
|
||||
boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
|
||||
if (success) {
|
||||
float orientation[] = new float[3];
|
||||
SensorManager.getOrientation(R, orientation);
|
||||
azimuth = (float) Math.toDegrees(orientation[0]); // orientation
|
||||
azimuth = (azimuth + 360) % 360;
|
||||
listener.magneticHeadingUpdated(azimuth);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
public interface MagneticHeadingListener {
|
||||
public void magneticHeadingUpdated(float heading);
|
||||
}
|
||||
}
|
||||
+12
-2
@@ -12,6 +12,7 @@ import android.app.NotificationManager;
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.hardware.GeomagneticField;
|
||||
import android.location.Location;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Binder;
|
||||
@@ -157,7 +158,14 @@ public class TrackingService extends Service implements ConnectionCallbacks,
|
||||
ExLog.i(this, TAG, "LocationClient was disconnected");
|
||||
}
|
||||
|
||||
public void reportGPSQualityBearingAndSpeed(float gpsAccurracy, float bearing, float speed) {
|
||||
public void reportGPSQualityBearingAndSpeed(float gpsAccurracy, float bearing, float speed, double latitude, double longitude, double altitude) {
|
||||
|
||||
if (prefs.getDisplayHeadingWithDeclination())
|
||||
{
|
||||
GeomagneticField geomagneticField = new GeomagneticField((float)latitude, (float)longitude, (float)altitude, System.currentTimeMillis());
|
||||
bearing = bearing + geomagneticField.getDeclination();
|
||||
}
|
||||
|
||||
GPSQuality quality = GPSQuality.noSignal;
|
||||
if (gpsQualityListener != null) {
|
||||
if (gpsAccurracy > 48) {
|
||||
@@ -176,7 +184,9 @@ public class TrackingService extends Service implements ConnectionCallbacks,
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
updateResendIntervalSetting();
|
||||
reportGPSQualityBearingAndSpeed(location.getAccuracy(), location.getBearing(), location.getSpeed());
|
||||
reportGPSQualityBearingAndSpeed(location.getAccuracy(), location.getBearing(),
|
||||
location.getSpeed(), location.getLatitude(), location.getLongitude(),
|
||||
location.getAltitude());
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
try {
|
||||
|
||||
+1
-30
@@ -24,8 +24,6 @@ import com.sap.sailing.android.shared.services.sending.MessageSendingService.API
|
||||
import com.sap.sailing.android.shared.services.sending.MessageSendingService.MessageSendingBinder;
|
||||
import com.sap.sailing.android.tracking.app.BuildConfig;
|
||||
import com.sap.sailing.android.tracking.app.R;
|
||||
import com.sap.sailing.android.tracking.app.sensors.CompassManager;
|
||||
import com.sap.sailing.android.tracking.app.sensors.CompassManager.MagneticHeadingListener;
|
||||
import com.sap.sailing.android.tracking.app.services.TrackingService;
|
||||
import com.sap.sailing.android.tracking.app.services.TrackingService.GPSQuality;
|
||||
import com.sap.sailing.android.tracking.app.services.TrackingService.GPSQualityListener;
|
||||
@@ -41,7 +39,7 @@ import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
|
||||
import com.viewpagerindicator.CirclePageIndicator;
|
||||
|
||||
public class TrackingActivity extends BaseActivity implements GPSQualityListener,
|
||||
APIConnectivityListener, MagneticHeadingListener {
|
||||
APIConnectivityListener {
|
||||
|
||||
TrackingService trackingService;
|
||||
boolean trackingServiceBound;
|
||||
@@ -202,7 +200,6 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
CompassManager.getInstance(this).unregisterListener();
|
||||
timer.stop();
|
||||
|
||||
mPager = (ViewPager) findViewById(R.id.pager);
|
||||
@@ -213,10 +210,6 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (prefs.getHeadingFromMagneticSensorPreferred()) {
|
||||
CompassManager.getInstance(this).registerListener(this);
|
||||
}
|
||||
|
||||
timer = new TimerRunnable();
|
||||
timer.start();
|
||||
|
||||
@@ -318,28 +311,6 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void magneticHeadingUpdated(float heading) {
|
||||
if (prefs.getHeadingFromMagneticSensorPreferred()) {
|
||||
if (mPager.getCurrentItem() == ScreenSlidePagerAdapter.VIEW_PAGER_FRAGMENT_COMPASS) {
|
||||
|
||||
ScreenSlidePagerAdapter viewPagerAdapter = getViewPagerAdapter();
|
||||
if (viewPagerAdapter != null) {
|
||||
CompassFragment compassFragment = viewPagerAdapter.getCompassFragment();
|
||||
if (compassFragment != null && compassFragment.isAdded()) {
|
||||
compassFragment.setBearing(heading);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(this, TAG,
|
||||
"Received magnet compass update, even though prefs say get from GPS. Unregistering listener.");
|
||||
}
|
||||
CompassManager.getInstance(this).unregisterListener();
|
||||
}
|
||||
}
|
||||
|
||||
private ScreenSlidePagerAdapter getViewPagerAdapter() {
|
||||
return (ScreenSlidePagerAdapter) mPager.getAdapter();
|
||||
}
|
||||
|
||||
+2
-2
@@ -96,8 +96,8 @@ public class AppPreferences {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_energy_saving_enabled_key), false);
|
||||
}
|
||||
|
||||
public boolean getHeadingFromMagneticSensorPreferred() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_heading_from_magnetic_key), true);
|
||||
public boolean getDisplayHeadingWithDeclination() {
|
||||
return preferences.getBoolean(context.getString(R.string.preference_heading_with_declination_enabled), true);
|
||||
}
|
||||
|
||||
public void setTrackingTimerStarted(long milliseconds)
|
||||
|
||||
Reference in new issue
Block a user