From ecfc568574ababd23b2c4dc1323cb7265c097933 Mon Sep 17 00:00:00 2001 From: Mike Beattie Date: Thu, 7 Mar 2013 21:37:22 +1300 Subject: [PATCH] altosdroid: implement Age field updating Signed-off-by: Mike Beattie --- .../altusmetrum/AltosDroid/AltosDroid.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index 8ddba9bd..2f98b64b 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -19,6 +19,8 @@ package org.altusmetrum.AltosDroid; import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.Timer; +import java.util.TimerTask; import android.app.Activity; import android.bluetooth.BluetoothAdapter; @@ -56,6 +58,7 @@ public class AltosDroid extends FragmentActivity { // Message types received by our Handler public static final int MSG_STATE_CHANGE = 1; public static final int MSG_TELEMETRY = 2; + public static final int MSG_UPDATE_AGE = 3; // Intent request codes private static final int REQUEST_CONNECT_DEVICE = 1; @@ -81,6 +84,10 @@ public class AltosDroid extends FragmentActivity { TabsAdapter mTabsAdapter; ArrayList mTabs = new ArrayList(); + // Timer and Saved flight state for Age calculation + private Timer timer = new Timer(); + AltosState saved_state; + // Service private boolean mIsBound = false; private Messenger mService = null; @@ -130,6 +137,11 @@ public class AltosDroid extends FragmentActivity { case MSG_TELEMETRY: ad.update_ui((AltosState) msg.obj); break; + case MSG_UPDATE_AGE: + if (ad.saved_state != null) { + ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.report_time + 500) / 1000)); + } + break; } } }; @@ -185,6 +197,8 @@ public class AltosDroid extends FragmentActivity { } void update_ui(AltosState state) { + saved_state = state; + mCallsignView.setText(state.data.callsign); mSerialView.setText(String.format("%d", state.data.serial)); mFlightView.setText(String.format("%d", state.data.flight)); @@ -197,6 +211,13 @@ public class AltosDroid extends FragmentActivity { mAltosVoice.tell(state); } + private void onTimerTick() { + try { + mMessenger.send(Message.obtain(null, MSG_UPDATE_AGE)); + } catch (RemoteException e) { + } + } + static String pos(double p, String pos, String neg) { String h = pos; if (p < 0) { @@ -265,6 +286,8 @@ public class AltosDroid extends FragmentActivity { mStateView = (TextView) findViewById(R.id.state_value); mAgeView = (TextView) findViewById(R.id.age_value); + timer.scheduleAtFixedRate(new TimerTask(){ public void run() {onTimerTick();}}, 1000L, 100L); + mAltosVoice = new AltosVoice(this); } -- 2.30.2