From 71d924288d45b09ae655d06df9780ba286e3f3be Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 24 Jun 2015 12:02:22 -0700 Subject: [PATCH] altosdroid: Display direction in map view Use direction in map view when available, otherwise use bearing Signed-off-by: Keith Packard --- .../org/altusmetrum/AltosDroid/AltosDroid.java | 10 ++++++++-- .../src/org/altusmetrum/AltosDroid/TabMap.java | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index db7815f3..b87b51b5 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -998,6 +998,12 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { static String direction(AltosGreatCircle from_receiver, Location receiver) { + if (from_receiver == null) + return null; + + if (receiver == null) + return null; + if (!receiver.hasBearing()) return null; @@ -1016,8 +1022,8 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { else if (iheading < -179 || 179 < iheading) return "backwards"; else if (iheading < 0) - return String.format("left %d", -iheading); + return String.format("left %d°", -iheading); else - return String.format("right %d", iheading); + return String.format("right %d°", iheading); } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index 0ee202a4..81b6fe54 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -37,6 +37,7 @@ public class TabMap extends AltosDroidTab { AltosLatLon here; private TextView mDistanceView; + private TextView mBearingLabel; private TextView mBearingView; private TextView mTargetLatitudeView; private TextView mTargetLongitudeView; @@ -63,6 +64,7 @@ public class TabMap extends AltosDroidTab { int map_source = AltosDroidPreferences.map_source(); mDistanceView = (TextView)view.findViewById(R.id.distance_value); + mBearingLabel = (TextView)view.findViewById(R.id.bearing_label); mBearingView = (TextView)view.findViewById(R.id.bearing_value); mTargetLatitudeView = (TextView)view.findViewById(R.id.target_lat_value); mTargetLongitudeView = (TextView)view.findViewById(R.id.target_lon_value); @@ -99,8 +101,19 @@ public class TabMap extends AltosDroidTab { public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { if (from_receiver != null) { - mBearingView.setText(String.format("%3.0f°", from_receiver.bearing)); + String direction = AltosDroid.direction(from_receiver, receiver); + if (direction != null) { + mBearingLabel.setText("Direction"); + mBearingView.setText(direction); + } else { + mBearingLabel.setText("Bearing"); + mBearingView.setText(String.format("%3.0f°", from_receiver.bearing)); + } set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance); + } else { + mBearingLabel.setText("Bearing"); + mBearingView.setText(""); + set_value(mDistanceView, AltosConvert.distance, 6, AltosLib.MISSING); } if (state != null) { -- 2.30.2