diff options
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java | 23 | 
1 files changed, 23 insertions, 0 deletions
| 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<AltosDroidTab> mTabs = new ArrayList<AltosDroidTab>(); +	// 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);  	} | 
