mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 23:07:11 +00:00
TRACKING APP: landscape version of tracking view
This commit is contained in:
1 parent
b58bb1b7ab
commit
49bd357870
5 files changed
+225
-139
No files matched your search
@@ -63,7 +63,7 @@
|
||||
<activity
|
||||
android:name=".ui.activities.TrackingActivity"
|
||||
android:label="@string/title_activity_tracking"
|
||||
android:screenOrientation="portrait" >
|
||||
android:screenOrientation="unspecified" >
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value=".ui.activities.StartActivity" />
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:custom="http://schemas.android.com/apk/res/com.sap.sailing.android.tracking.app.views"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res/com.sap.sailing.android.tracking.app"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/black" >
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/stop_tracking_box"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="100dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@color/gray" >
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@color/white_transparent" />
|
||||
|
||||
<com.sap.sailing.android.tracking.app.customviews.OpenSansButton
|
||||
android:id="@+id/stop_tracking"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_margin="10dp"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:background="@drawable/rounded_btn_red"
|
||||
android:padding="10dp"
|
||||
android:text="@string/stop_tracking"
|
||||
android:textAllCaps="true"
|
||||
android:textStyle="bold" />
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
+163
-70
@@ -14,6 +14,7 @@ import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v4.view.ViewPager.OnPageChangeListener;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.tracking.app.BuildConfig;
|
||||
@@ -29,7 +30,6 @@ import com.sap.sailing.android.tracking.app.services.TransmittingService.APIConn
|
||||
import com.sap.sailing.android.tracking.app.services.TransmittingService.APIConnectivityListener;
|
||||
import com.sap.sailing.android.tracking.app.services.TransmittingService.TransmittingBinder;
|
||||
import com.sap.sailing.android.tracking.app.ui.fragments.CompassFragment;
|
||||
import com.sap.sailing.android.tracking.app.ui.fragments.RegattaFragment;
|
||||
import com.sap.sailing.android.tracking.app.ui.fragments.SpeedFragment;
|
||||
import com.sap.sailing.android.tracking.app.ui.fragments.StopTrackingButtonFragment;
|
||||
import com.sap.sailing.android.tracking.app.ui.fragments.TrackingFragment;
|
||||
@@ -39,7 +39,8 @@ import com.sap.sailing.android.tracking.app.utils.ServiceHelper;
|
||||
import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
|
||||
import com.viewpagerindicator.CirclePageIndicator;
|
||||
|
||||
public class TrackingActivity extends BaseActivity implements GPSQualityListener, APIConnectivityListener, MagneticHeadingListener {
|
||||
public class TrackingActivity extends BaseActivity implements GPSQualityListener,
|
||||
APIConnectivityListener, MagneticHeadingListener {
|
||||
|
||||
TrackingService trackingService;
|
||||
boolean trackingServiceBound;
|
||||
@@ -64,6 +65,8 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
private SpeedFragment speedFragment;
|
||||
private StopTrackingButtonFragment stopTrackingButtonFragment;
|
||||
|
||||
private TimerRunnable timer;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -71,11 +74,11 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
prefs = new AppPreferences(this);
|
||||
|
||||
Intent intent = getIntent();
|
||||
eventId = intent.getExtras().getString(getString(R.string.tracking_activity_event_id_parameter));
|
||||
eventId = intent.getExtras().getString(
|
||||
getString(R.string.tracking_activity_event_id_parameter));
|
||||
|
||||
setContentView(R.layout.fragment_hud_container);
|
||||
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
if (toolbar != null) {
|
||||
setSupportActionBar(toolbar);
|
||||
@@ -85,38 +88,67 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
}
|
||||
|
||||
if (getSupportActionBar() != null) {
|
||||
EventInfo eventInfo = DatabaseHelper.getInstance().getEventInfoWithLeaderboard(this, eventId);
|
||||
EventInfo eventInfo = DatabaseHelper.getInstance().getEventInfoWithLeaderboard(this,
|
||||
eventId);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq);
|
||||
toolbar.setPadding(20, 0, 0, 0);
|
||||
getSupportActionBar().setTitle(eventInfo.leaderboardName);
|
||||
getSupportActionBar().setSubtitle(getString(R.string.tracking_colon) + " " + eventInfo.name);
|
||||
getSupportActionBar().setSubtitle(
|
||||
getString(R.string.tracking_colon) + " " + eventInfo.name);
|
||||
}
|
||||
|
||||
// Instantiate a ViewPager and a PagerAdapter.
|
||||
mPager = (ViewPager) findViewById(R.id.pager);
|
||||
if (mPagerAdapter == null)
|
||||
{
|
||||
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
|
||||
}
|
||||
mPager.setAdapter(mPagerAdapter);
|
||||
mPager.setOffscreenPageLimit(3);
|
||||
|
||||
if (savedInstanceState != null)
|
||||
{
|
||||
trackingFragment = (TrackingFragment)getSupportFragmentManager().getFragment(savedInstanceState, SIS_TRACKING_FRAGMENT);
|
||||
compassFragment = (CompassFragment)getSupportFragmentManager().getFragment(savedInstanceState, SIS_COMPASS_FRAGMENT);
|
||||
speedFragment = (SpeedFragment)getSupportFragmentManager().getFragment(savedInstanceState, SIS_SPEED_FRAGMENT);
|
||||
stopTrackingButtonFragment = (StopTrackingButtonFragment)getSupportFragmentManager().getFragment(savedInstanceState, SIS_STOP_TRACKING_BUTTON_FRAGMENT);
|
||||
// ok, here be dragons.
|
||||
// however, I haven't found out how the ViewPager retains and dismisses fragments, so I check for every case.
|
||||
// The easy way (if savedInstanceState != null) takeFromBundle(); doesn't work, since only some fragments are
|
||||
// saved to the bundle it seems.
|
||||
if (savedInstanceState != null) {
|
||||
Fragment tFragment = getSupportFragmentManager().getFragment(savedInstanceState, SIS_TRACKING_FRAGMENT);
|
||||
if (tFragment != null) {
|
||||
trackingFragment = (TrackingFragment) tFragment;
|
||||
} else {
|
||||
trackingFragment = new TrackingFragment();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Fragment cFragment = getSupportFragmentManager().getFragment(savedInstanceState, SIS_COMPASS_FRAGMENT);
|
||||
if (cFragment != null) {
|
||||
compassFragment = (CompassFragment) cFragment;
|
||||
} else {
|
||||
compassFragment = new CompassFragment();
|
||||
}
|
||||
|
||||
Fragment sFragment = getSupportFragmentManager().getFragment(savedInstanceState, SIS_SPEED_FRAGMENT);
|
||||
if (sFragment != null) {
|
||||
speedFragment = (SpeedFragment) sFragment;
|
||||
} else {
|
||||
speedFragment = new SpeedFragment();
|
||||
}
|
||||
|
||||
Fragment stFragment = getSupportFragmentManager().getFragment(savedInstanceState, SIS_STOP_TRACKING_BUTTON_FRAGMENT);
|
||||
if (stFragment != null) {
|
||||
stopTrackingButtonFragment = (StopTrackingButtonFragment) stFragment;
|
||||
} else {
|
||||
stopTrackingButtonFragment = new StopTrackingButtonFragment();
|
||||
}
|
||||
} else {
|
||||
trackingFragment = new TrackingFragment();
|
||||
compassFragment = new CompassFragment();
|
||||
speedFragment = new SpeedFragment();
|
||||
stopTrackingButtonFragment = new StopTrackingButtonFragment();
|
||||
}
|
||||
|
||||
//Bind the title indicator to the adapter
|
||||
CirclePageIndicator titleIndicator = (CirclePageIndicator)findViewById(R.id.title_page_indicator);
|
||||
// Bind the title indicator to the adapter
|
||||
CirclePageIndicator titleIndicator = (CirclePageIndicator) findViewById(R.id.title_page_indicator);
|
||||
titleIndicator.setViewPager(mPager);
|
||||
titleIndicator.setOnPageChangeListener(new OnPageChangeListener() {
|
||||
|
||||
@@ -140,28 +172,43 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
// HudFragment hudFragment = (HudFragment) getSupportFragmentManager().findFragmentById(R.id.hud_content_frame);
|
||||
// hudFragment.layoutOverlay();
|
||||
//
|
||||
// hudFragment.setSpeedOverGround(0);
|
||||
// hudFragment.setHeading(0);
|
||||
// HudFragment hudFragment = (HudFragment)
|
||||
// getSupportFragmentManager().findFragmentById(R.id.hud_content_frame);
|
||||
// hudFragment.layoutOverlay();
|
||||
//
|
||||
// hudFragment.setSpeedOverGround(0);
|
||||
// hudFragment.setHeading(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
||||
if (trackingFragment.isAdded()) {
|
||||
getSupportFragmentManager().putFragment(outState, SIS_TRACKING_FRAGMENT, trackingFragment);
|
||||
getSupportFragmentManager().putFragment(outState, SIS_COMPASS_FRAGMENT, compassFragment);
|
||||
}
|
||||
|
||||
if (compassFragment.isAdded()) {
|
||||
getSupportFragmentManager()
|
||||
.putFragment(outState, SIS_COMPASS_FRAGMENT, compassFragment);
|
||||
}
|
||||
|
||||
if (speedFragment.isAdded()) {
|
||||
getSupportFragmentManager().putFragment(outState, SIS_SPEED_FRAGMENT, speedFragment);
|
||||
getSupportFragmentManager().putFragment(outState, SIS_STOP_TRACKING_BUTTON_FRAGMENT, stopTrackingButtonFragment);
|
||||
}
|
||||
|
||||
if (stopTrackingButtonFragment.isAdded()) {
|
||||
getSupportFragmentManager().putFragment(outState, SIS_STOP_TRACKING_BUTTON_FRAGMENT,
|
||||
stopTrackingButtonFragment);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
Intent transmittingServiceIntent = new Intent(this, TransmittingService.class);
|
||||
bindService(transmittingServiceIntent, transmittingServiceConnection, Context.BIND_AUTO_CREATE);
|
||||
bindService(transmittingServiceIntent, transmittingServiceConnection,
|
||||
Context.BIND_AUTO_CREATE);
|
||||
Intent trackingServiceIntent = new Intent(this, TrackingService.class);
|
||||
bindService(trackingServiceIntent, trackingServiceConnection, Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
@@ -174,21 +221,18 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
unbindService(trackingServiceConnection);
|
||||
trackingServiceBound = false;
|
||||
|
||||
if (BuildConfig.DEBUG)
|
||||
{
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(this, TAG, "Unbound tracking Service");
|
||||
}
|
||||
}
|
||||
|
||||
if (transmittingServiceBound)
|
||||
{
|
||||
if (transmittingServiceBound) {
|
||||
transmittingService.unregisterAPIConnectivityListener();
|
||||
unbindService(transmittingServiceConnection);
|
||||
|
||||
transmittingServiceBound = false;
|
||||
|
||||
if (BuildConfig.DEBUG)
|
||||
{
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(this, TAG, "Unbound transmitting Service");
|
||||
}
|
||||
}
|
||||
@@ -198,6 +242,10 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
CompassManager.getInstance(this).unregisterListener();
|
||||
timer.stop();
|
||||
|
||||
mPager = (ViewPager) findViewById(R.id.pager);
|
||||
mPager.setAdapter(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -207,10 +255,14 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
if (prefs.getHeadingFromMagneticSensorPreferred()) {
|
||||
CompassManager.getInstance(this).registerListener(this);
|
||||
}
|
||||
|
||||
timer = new TimerRunnable();
|
||||
timer.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gpsQualityAndAccurracyUpdated(GPSQuality quality, float gpsAccurracy, float bearing, float speed) {
|
||||
public void gpsQualityAndAccurracyUpdated(GPSQuality quality, float gpsAccurracy,
|
||||
float bearing, float speed) {
|
||||
trackingFragment.setGPSQualityAndAcurracy(quality, gpsAccurracy);
|
||||
speedFragment.setSpeed(speed);
|
||||
compassFragment.setBearing(bearing);
|
||||
@@ -235,15 +287,14 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
private ServiceConnection transmittingServiceConnection = new ServiceConnection() {
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName className,
|
||||
IBinder service) {
|
||||
// We've bound to LocalService, cast the IBinder and get LocalService instance
|
||||
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||
// We've bound to LocalService, cast the IBinder and get
|
||||
// LocalService instance
|
||||
TransmittingBinder binder = (TransmittingBinder) service;
|
||||
transmittingService = binder.getService();
|
||||
transmittingServiceBound = true;
|
||||
transmittingService.registerAPIConnectivityListener(TrackingActivity.this);
|
||||
if (BuildConfig.DEBUG)
|
||||
{
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(TrackingActivity.this, TAG, "connected to transmitting service");
|
||||
}
|
||||
}
|
||||
@@ -258,15 +309,14 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
private ServiceConnection trackingServiceConnection = new ServiceConnection() {
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName className,
|
||||
IBinder service) {
|
||||
// We've bound to LocalService, cast the IBinder and get LocalService instance
|
||||
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||
// We've bound to LocalService, cast the IBinder and get
|
||||
// LocalService instance
|
||||
TrackingBinder binder = (TrackingBinder) service;
|
||||
trackingService = binder.getService();
|
||||
trackingServiceBound = true;
|
||||
trackingService.registerGPSQualityListener(TrackingActivity.this);
|
||||
if (BuildConfig.DEBUG)
|
||||
{
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(TrackingActivity.this, TAG, "connected to tracking service");
|
||||
}
|
||||
}
|
||||
@@ -279,19 +329,16 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
@Override
|
||||
public void magneticHeadingUpdated(float heading) {
|
||||
//HudFragment hudFragment = (HudFragment) getSupportFragmentManager().findFragmentById(R.id.hud_content_frame);
|
||||
if (prefs.getHeadingFromMagneticSensorPreferred())
|
||||
{
|
||||
if (mPager.getCurrentItem() == ScreenSlidePagerAdapter.VIEW_PAGER_FRAGMENT_COMPASS)
|
||||
{
|
||||
// HudFragment hudFragment = (HudFragment)
|
||||
// getSupportFragmentManager().findFragmentById(R.id.hud_content_frame);
|
||||
if (prefs.getHeadingFromMagneticSensorPreferred()) {
|
||||
if (mPager.getCurrentItem() == ScreenSlidePagerAdapter.VIEW_PAGER_FRAGMENT_COMPASS) {
|
||||
compassFragment.setBearing(heading);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (BuildConfig.DEBUG)
|
||||
{
|
||||
ExLog.i(this, TAG, "Received magnet compass update, even though prefs say get from GPS. Unregistering listener." );
|
||||
} 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();
|
||||
}
|
||||
@@ -299,7 +346,7 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
|
||||
|
||||
public final static int VIEW_PAGER_FRAGMENT_STOP_BUTTON= 0;
|
||||
public final static int VIEW_PAGER_FRAGMENT_STOP_BUTTON = 0;
|
||||
public final static int VIEW_PAGER_FRAGMENT_COMPASS = 1;
|
||||
public final static int VIEW_PAGER_FRAGMENT_SPEED = 2;
|
||||
|
||||
@@ -309,20 +356,13 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
if (position == VIEW_PAGER_FRAGMENT_STOP_BUTTON)
|
||||
{
|
||||
if (position == VIEW_PAGER_FRAGMENT_STOP_BUTTON) {
|
||||
return stopTrackingButtonFragment;
|
||||
}
|
||||
else if (position == VIEW_PAGER_FRAGMENT_COMPASS)
|
||||
{
|
||||
} else if (position == VIEW_PAGER_FRAGMENT_COMPASS) {
|
||||
return compassFragment;
|
||||
}
|
||||
else if (position == VIEW_PAGER_FRAGMENT_SPEED)
|
||||
{
|
||||
} else if (position == VIEW_PAGER_FRAGMENT_SPEED) {
|
||||
return speedFragment;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -334,15 +374,12 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
}
|
||||
|
||||
public void showStopTrackingConfirmationDialog() {
|
||||
AlertDialog dialog = new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.please_confirm)
|
||||
AlertDialog dialog = new AlertDialog.Builder(this).setTitle(R.string.please_confirm)
|
||||
.setMessage(R.string.do_you_really_want_to_stop_tracking)
|
||||
.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setPositiveButton(android.R.string.yes,
|
||||
new DialogInterface.OnClickListener() {
|
||||
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
|
||||
|
||||
public void onClick(DialogInterface dialog,
|
||||
int whichButton) {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
stopTracking();
|
||||
}
|
||||
}).setNegativeButton(android.R.string.no, null).create();
|
||||
@@ -355,4 +392,60 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
ServiceHelper.getInstance().stopTrackingService(this);
|
||||
finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update UI with a string containing the time since tracking started, e.g.
|
||||
* 01:22:45
|
||||
*/
|
||||
public void updateTimer() {
|
||||
long diff = System.currentTimeMillis() - prefs.getTrackingTimerStarted();
|
||||
TextView textView = (TextView) findViewById(R.id.tracking_time_label);
|
||||
if (textView != null) {
|
||||
textView.setText(getTimeFormatString(diff));
|
||||
}
|
||||
}
|
||||
|
||||
private String getTimeFormatString(long milliseconds) {
|
||||
int seconds = (int) (milliseconds / 1000) % 60 ;
|
||||
int minutes = (int) ((milliseconds / (1000*60)) % 60);
|
||||
int hours = (int) ((milliseconds / (1000*60*60)) % 24);
|
||||
|
||||
return String.format(getResources().getConfiguration().locale, "%02d:%02d:%02d", hours, minutes, seconds);
|
||||
}
|
||||
|
||||
private class TimerRunnable implements Runnable {
|
||||
|
||||
public Thread t;
|
||||
public volatile boolean running = true;
|
||||
|
||||
public void start() {
|
||||
running = true;
|
||||
if (t == null) {
|
||||
t = new Thread(this);
|
||||
t.start();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (running) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
trackingFragment.checkLastGPSReceived();
|
||||
updateTimer();
|
||||
}
|
||||
});
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
running = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
@@ -6,12 +6,15 @@ import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.tracking.app.R;
|
||||
import com.sap.sailing.android.tracking.app.ui.activities.TrackingActivity;
|
||||
|
||||
public class StopTrackingButtonFragment extends BaseFragment {
|
||||
|
||||
private final static String SIS_TRACKING_TIMER = "savedInstanceTrackingTimer";
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
@@ -35,4 +38,23 @@ public class StopTrackingButtonFragment extends BaseFragment {
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
||||
TextView timerView = (TextView) getActivity().findViewById(R.id.tracking_time_label);
|
||||
outState.putString(SIS_TRACKING_TIMER, timerView.getText().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
if (savedInstanceState != null)
|
||||
{
|
||||
TextView timerView = (TextView) getActivity().findViewById(R.id.tracking_time_label);
|
||||
timerView.setText(savedInstanceState.getString(SIS_TRACKING_TIMER));
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-68
@@ -31,7 +31,7 @@ public class TrackingFragment extends BaseFragment {
|
||||
static final String SIS_GPS_ACCURACY = "instanceStateGpsAccuracy";
|
||||
static final String SIS_GPS_UNSENT_FIXES = "instanceStateGpsUnsentFixes";
|
||||
|
||||
private TimerRunnable timer;
|
||||
|
||||
private AppPreferences prefs;
|
||||
private long lastGPSQualityUpdate;
|
||||
|
||||
@@ -57,14 +57,6 @@ public class TrackingFragment extends BaseFragment {
|
||||
super.onResume();
|
||||
// so it initally updates to "battery-saving" etc.
|
||||
setAPIConnectivityStatus(APIConnectivity.noAttempt);
|
||||
timer = new TimerRunnable();
|
||||
timer.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
timer.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -103,21 +95,6 @@ public class TrackingFragment extends BaseFragment {
|
||||
outState.putString(SIS_GPS_UNSENT_FIXES, unsentFixesText.getText().toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Update UI with a string containing the time since tracking started, e.g. 01:22:45
|
||||
*/
|
||||
public void updateTimer()
|
||||
{
|
||||
if (isAdded())
|
||||
{
|
||||
long diff = System.currentTimeMillis() - prefs.getTrackingTimerStarted();
|
||||
TextView textView = (TextView) getActivity().findViewById(R.id.tracking_time_label);
|
||||
if (textView != null)
|
||||
{
|
||||
textView.setText(getTimeFormatString(diff));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If last GPS update is too long ago, let's assume there's no signal and set quality to .noSignal
|
||||
@@ -237,15 +214,6 @@ public class TrackingFragment extends BaseFragment {
|
||||
activity.showStopTrackingConfirmationDialog();
|
||||
}
|
||||
|
||||
|
||||
private String getTimeFormatString(long milliseconds) {
|
||||
int seconds = (int) (milliseconds / 1000) % 60 ;
|
||||
int minutes = (int) ((milliseconds / (1000*60)) % 60);
|
||||
int hours = (int) ((milliseconds / (1000*60*60)) % 24);
|
||||
|
||||
return String.format(getResources().getConfiguration().locale, "%02d:%02d:%02d", hours, minutes, seconds);
|
||||
}
|
||||
|
||||
public void setGPSQualityAndAcurracy(GPSQuality quality, float gpsAccurracy)
|
||||
{
|
||||
if (isAdded())
|
||||
@@ -285,40 +253,5 @@ public class TrackingFragment extends BaseFragment {
|
||||
}
|
||||
}
|
||||
|
||||
private class TimerRunnable implements Runnable {
|
||||
|
||||
public Thread t;
|
||||
public volatile boolean running = true;
|
||||
|
||||
public void start() {
|
||||
running = true;
|
||||
if (t == null) {
|
||||
t = new Thread(this);
|
||||
t.start();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (running) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
checkLastGPSReceived();
|
||||
updateTimer();
|
||||
}
|
||||
});
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void stop()
|
||||
{
|
||||
running = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user