correct handling of bottom navigation state
This commit is contained in:
parent
143f9c44b3
commit
fc8371999a
3 changed files with 114 additions and 140 deletions
|
@ -94,6 +94,9 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
// initialize selected tab
|
||||||
|
mSelectedTab = FRAGMENT_ID_MAP;
|
||||||
|
|
||||||
// check state of External Storage
|
// check state of External Storage
|
||||||
checkExternalStorageState();
|
checkExternalStorageState();
|
||||||
|
|
||||||
|
@ -110,12 +113,18 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
mPermissionsGranted = true;
|
mPermissionsGranted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// restore state if saved instance is available
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
mTrackerServiceRunning = savedInstanceState.getBoolean(INSTANCE_TRACKING_STATE, false);
|
||||||
|
mSelectedTab = savedInstanceState.getInt(INSTANCE_SELECTED_TAB, FRAGMENT_ID_MAP);
|
||||||
|
mFloatingActionButtonSubMenuVisible = savedInstanceState.getBoolean(INSTANCE_FAB_SUB_MENU_VISIBLE, false);
|
||||||
|
}
|
||||||
|
|
||||||
// set user agent to prevent getting banned from the osm servers
|
// set user agent to prevent getting banned from the osm servers
|
||||||
org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants.setUserAgentValue(BuildConfig.APPLICATION_ID);
|
org.osmdroid.tileprovider.constants.OpenStreetMapTileProviderConstants.setUserAgentValue(BuildConfig.APPLICATION_ID);
|
||||||
|
|
||||||
// set up main layout
|
// set up main layout
|
||||||
setupLayout();
|
setupLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,9 +160,6 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
|
||||||
// // save state of Floating Action Button
|
|
||||||
// saveFloatingActionButtonState(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -212,22 +218,23 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
// @Override
|
||||||
public void onRestoreInstanceState(Bundle savedInstanceState) {
|
// public void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||||
super.onRestoreInstanceState(savedInstanceState);
|
// super.onRestoreInstanceState(savedInstanceState);
|
||||||
mTrackerServiceRunning = savedInstanceState.getBoolean(INSTANCE_TRACKING_STATE, false);
|
// mTrackerServiceRunning = savedInstanceState.getBoolean(INSTANCE_TRACKING_STATE, false);
|
||||||
mSelectedTab = savedInstanceState.getInt(INSTANCE_SELECTED_TAB, FRAGMENT_ID_MAP);
|
// mSelectedTab = savedInstanceState.getInt(INSTANCE_SELECTED_TAB, FRAGMENT_ID_MAP);
|
||||||
mFloatingActionButtonSubMenuVisible = savedInstanceState.getBoolean(INSTANCE_FAB_SUB_MENU_VISIBLE, false);
|
// mFloatingActionButtonSubMenuVisible = savedInstanceState.getBoolean(INSTANCE_FAB_SUB_MENU_VISIBLE, false);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
/* Handles FloatingActionButton dialog results */
|
/* Handles FloatingActionButton dialog results - called by MainActivityMapFragment after Saving and/or clearing the map */
|
||||||
public void onFloatingActionButtonResult(int requestCode, int resultCode) {
|
public void onFloatingActionButtonResult(int requestCode, int resultCode) {
|
||||||
switch(requestCode) {
|
switch(requestCode) {
|
||||||
case RESULT_SAVE_DIALOG:
|
case RESULT_SAVE_DIALOG:
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
// user chose SAVE
|
// user chose SAVE
|
||||||
handleStateAfterSave();
|
handleStateAfterSave();
|
||||||
|
LogHelper.v(LOG_TAG, "Save dialog result: SAVE");
|
||||||
} else if (resultCode == Activity.RESULT_CANCELED){
|
} else if (resultCode == Activity.RESULT_CANCELED){
|
||||||
LogHelper.v(LOG_TAG, "Save dialog result: CANCEL");
|
LogHelper.v(LOG_TAG, "Save dialog result: CANCEL");
|
||||||
}
|
}
|
||||||
|
@ -236,6 +243,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
// user chose CLEAR
|
// user chose CLEAR
|
||||||
handleStateAfterClear();
|
handleStateAfterClear();
|
||||||
|
LogHelper.v(LOG_TAG, "Save dialog result: CLEAR");
|
||||||
} else if (resultCode == Activity.RESULT_CANCELED){
|
} else if (resultCode == Activity.RESULT_CANCELED){
|
||||||
LogHelper.v(LOG_TAG, "Clear map: User chose CANCEL.");
|
LogHelper.v(LOG_TAG, "Clear map: User chose CANCEL.");
|
||||||
}
|
}
|
||||||
|
@ -246,9 +254,8 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
|
|
||||||
/* Handles the visual state after a save action */
|
/* Handles the visual state after a save action */
|
||||||
private void handleStateAfterSave() {
|
private void handleStateAfterSave() {
|
||||||
// display and update track tab
|
// display and update tracks tab
|
||||||
mSelectedTab = FRAGMENT_ID_TRACKS;
|
mBottomNavigationView.setSelectedItemId(R.id.navigation_last_tracks);
|
||||||
mViewPager.setCurrentItem(mSelectedTab);
|
|
||||||
|
|
||||||
// dismiss notification
|
// dismiss notification
|
||||||
Intent intent = new Intent(this, TrackerService.class);
|
Intent intent = new Intent(this, TrackerService.class);
|
||||||
|
@ -290,7 +297,31 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /* Saves state of Floating Action Button */
|
/* Handles tap on the button "save and clear" */
|
||||||
|
private void handleSaveButtonClick() {
|
||||||
|
// save button click is handled by onActivityResult in MainActivityMapFragment
|
||||||
|
MainActivityMapFragment mainActivityMapFragment = (MainActivityMapFragment) mSectionsPagerAdapter.getFragment(FRAGMENT_ID_MAP);
|
||||||
|
mainActivityMapFragment.onActivityResult(RESULT_SAVE_DIALOG, Activity.RESULT_OK, getIntent());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Handles tap on the button "clear" */
|
||||||
|
private void handleClearButtonClick() {
|
||||||
|
// prepare delete dialog
|
||||||
|
int dialogTitle = -1;
|
||||||
|
String dialogMessage = getString(R.string.dialog_clear_content);
|
||||||
|
int dialogPositiveButton = R.string.dialog_clear_action_clear;
|
||||||
|
int dialogNegativeButton = R.string.dialog_default_action_cancel;
|
||||||
|
// show delete dialog
|
||||||
|
MainActivityMapFragment mainActivityMapFragment = (MainActivityMapFragment) mSectionsPagerAdapter.getFragment(FRAGMENT_ID_MAP);
|
||||||
|
DialogFragment dialogFragment = DialogHelper.newInstance(dialogTitle, dialogMessage, dialogPositiveButton, dialogNegativeButton);
|
||||||
|
dialogFragment.setTargetFragment(mainActivityMapFragment, RESULT_CLEAR_DIALOG);
|
||||||
|
dialogFragment.show(getSupportFragmentManager(), "ClearDialog");
|
||||||
|
// results of dialog are handled by onActivityResult in MainActivityMapFragment
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// /* Saves state of Floating Action Button */ // not needed tracker service saves state
|
||||||
// private void saveFloatingActionButtonState(Context context) {
|
// private void saveFloatingActionButtonState(Context context) {
|
||||||
// SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
|
// SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
// SharedPreferences.Editor editor = settings.edit();
|
// SharedPreferences.Editor editor = settings.edit();
|
||||||
|
@ -311,7 +342,6 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
// set up the ViewPager with the sections adapter.
|
// set up the ViewPager with the sections adapter.
|
||||||
mViewPager = (NonSwipeableViewPager) findViewById(R.id.container2);
|
mViewPager = (NonSwipeableViewPager) findViewById(R.id.container2);
|
||||||
mViewPager.setAdapter(mSectionsPagerAdapter);
|
mViewPager.setAdapter(mSectionsPagerAdapter);
|
||||||
mViewPager.setCurrentItem(mSelectedTab);
|
|
||||||
|
|
||||||
// setup bottom navigation
|
// setup bottom navigation
|
||||||
mBottomNavigationView = findViewById(R.id.navigation);
|
mBottomNavigationView = findViewById(R.id.navigation);
|
||||||
|
@ -330,12 +360,16 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
showFloatingActionButtonMenu(false);
|
showFloatingActionButtonMenu(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// restore selected tab
|
||||||
|
if (mSelectedTab == FRAGMENT_ID_TRACKS) {
|
||||||
|
mBottomNavigationView.setSelectedItemId(R.id.navigation_last_tracks);
|
||||||
|
} else {
|
||||||
|
mBottomNavigationView.setSelectedItemId(R.id.navigation_map);
|
||||||
|
}
|
||||||
|
|
||||||
// add listeners to buttons
|
// add listeners to buttons
|
||||||
addListenersToViews();
|
addListenersToViews();
|
||||||
|
|
||||||
// // show map fragment
|
|
||||||
// showFragment(FRAGMENT_ID_MAP);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// point to the on main onboarding layout
|
// point to the on main onboarding layout
|
||||||
setContentView(R.layout.activity_main_onboarding);
|
setContentView(R.layout.activity_main_onboarding);
|
||||||
|
@ -402,30 +436,6 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Handles tap on the button "save and clear" */
|
|
||||||
private void handleSaveButtonClick() {
|
|
||||||
// todo check -> may produce NullPointerException
|
|
||||||
MainActivityMapFragment mainActivityMapFragment = (MainActivityMapFragment) mSectionsPagerAdapter.getFragment(FRAGMENT_ID_MAP);
|
|
||||||
mainActivityMapFragment.onActivityResult(RESULT_SAVE_DIALOG, Activity.RESULT_OK, getIntent());
|
|
||||||
handleStateAfterSave();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Handles tap on the button "clear" */
|
|
||||||
private void handleClearButtonClick() {
|
|
||||||
int dialogTitle = -1;
|
|
||||||
String dialogMessage = getString(R.string.dialog_clear_content);
|
|
||||||
int dialogPositiveButton = R.string.dialog_clear_action_clear;
|
|
||||||
int dialogNegativeButton = R.string.dialog_default_action_cancel;
|
|
||||||
|
|
||||||
// show delete dialog - results are handles by onActivityResult
|
|
||||||
MainActivityMapFragment mainActivityMapFragment = (MainActivityMapFragment) mSectionsPagerAdapter.getFragment(FRAGMENT_ID_MAP);
|
|
||||||
DialogFragment dialogFragment = DialogHelper.newInstance(dialogTitle, dialogMessage, dialogPositiveButton, dialogNegativeButton);
|
|
||||||
dialogFragment.setTargetFragment(mainActivityMapFragment, RESULT_CLEAR_DIALOG);
|
|
||||||
dialogFragment.show(getSupportFragmentManager(), "ClearDialog");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Handles tap on the record button */
|
/* Handles tap on the record button */
|
||||||
private void handleFloatingActionButtonClick(View view) {
|
private void handleFloatingActionButtonClick(View view) {
|
||||||
|
|
||||||
|
@ -495,49 +505,6 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// /* Handles tap on the save and clear button */
|
|
||||||
// private void handleButtonSaveAndClearClick() {
|
|
||||||
// // clear map and save track
|
|
||||||
// MainActivityMapFragment mainActivityMapFragment = (MainActivityMapFragment) mSectionsPagerAdapter.getFragment(FRAGMENT_ID_MAP);
|
|
||||||
// mainActivityMapFragment.clearMap(true);
|
|
||||||
//
|
|
||||||
// // display and update track tab
|
|
||||||
// mSelectedTab = FRAGMENT_ID_TRACKS;
|
|
||||||
// mViewPager.setCurrentItem(mSelectedTab);
|
|
||||||
//
|
|
||||||
// // dismiss notification
|
|
||||||
// NotificationHelper.stop();
|
|
||||||
//
|
|
||||||
// // hide Floating Action Button sub menu
|
|
||||||
// showFloatingActionButtonMenu(false);
|
|
||||||
//
|
|
||||||
// // update Floating Action Button icon
|
|
||||||
// mFloatingActionButtonState = FAB_STATE_DEFAULT;
|
|
||||||
// setFloatingActionButtonState();
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// /* Handles tap on the clear button */
|
|
||||||
// private void handleButtonClearClick() {
|
|
||||||
// // clear map, do not save track
|
|
||||||
// MainActivityMapFragment mainActivityMapFragment = (MainActivityMapFragment) mSectionsPagerAdapter.getFragment(FRAGMENT_ID_MAP);
|
|
||||||
// mainActivityMapFragment.clearMap(false);
|
|
||||||
//
|
|
||||||
// // dismiss notification
|
|
||||||
// NotificationHelper.stop();
|
|
||||||
//
|
|
||||||
// // hide Floating Action Button sub menu
|
|
||||||
// showFloatingActionButtonMenu(false);
|
|
||||||
//
|
|
||||||
// // update Floating Action Button icon
|
|
||||||
// mFloatingActionButtonState = FAB_STATE_DEFAULT;
|
|
||||||
// setFloatingActionButtonState();
|
|
||||||
//
|
|
||||||
// Toast.makeText(this, getString(R.string.toast_message_track_clear), Toast.LENGTH_LONG).show();
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
/* Set state of FloatingActionButton */
|
/* Set state of FloatingActionButton */
|
||||||
private void setFloatingActionButtonState() {
|
private void setFloatingActionButtonState() {
|
||||||
|
|
||||||
|
@ -593,6 +560,10 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
mSelectedTab = FRAGMENT_ID_MAP;
|
mSelectedTab = FRAGMENT_ID_MAP;
|
||||||
mViewPager.setCurrentItem(mSelectedTab);
|
mViewPager.setCurrentItem(mSelectedTab);
|
||||||
|
|
||||||
|
// tint bottom bar red
|
||||||
|
mBottomNavigationView.setBackgroundResource(R.color.trackbook_red);
|
||||||
|
mBottomNavigationView.setItemBackgroundResource(R.color.trackbook_red);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case R.id.navigation_last_tracks:
|
case R.id.navigation_last_tracks:
|
||||||
|
@ -607,6 +578,10 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
mSelectedTab = FRAGMENT_ID_TRACKS;
|
mSelectedTab = FRAGMENT_ID_TRACKS;
|
||||||
mViewPager.setCurrentItem(mSelectedTab);
|
mViewPager.setCurrentItem(mSelectedTab);
|
||||||
|
|
||||||
|
// tint bottom bar blue
|
||||||
|
mBottomNavigationView.setBackgroundResource(R.color.trackbook_blue);
|
||||||
|
mBottomNavigationView.setItemBackgroundResource(R.color.trackbook_blue);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -627,8 +602,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
||||||
switch (intentAction) {
|
switch (intentAction) {
|
||||||
case ACTION_SHOW_MAP:
|
case ACTION_SHOW_MAP:
|
||||||
// show map fragment
|
// show map fragment
|
||||||
mSelectedTab = FRAGMENT_ID_MAP;
|
mBottomNavigationView.setSelectedItemId(R.id.navigation_map);
|
||||||
mViewPager.setCurrentItem(mSelectedTab);
|
|
||||||
|
|
||||||
// clear intent
|
// clear intent
|
||||||
intent.setAction(ACTION_DEFAULT);
|
intent.setAction(ACTION_DEFAULT);
|
||||||
|
|
|
@ -300,10 +300,10 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys {
|
||||||
switch(requestCode) {
|
switch(requestCode) {
|
||||||
case RESULT_SAVE_DIALOG:
|
case RESULT_SAVE_DIALOG:
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
// user chose SAVE - clear map and save track
|
// user chose SAVE - clear map AND save track
|
||||||
clearMap(true);
|
clearMap(true);
|
||||||
// FloatingActionButton state is already being handled in MainActivity
|
// FloatingActionButton state is already being handled in MainActivity
|
||||||
// ((MainActivity)mActivity).onFloatingActionButtonResult(requestCode, resultCode);
|
((MainActivity)mActivity).onFloatingActionButtonResult(requestCode, resultCode);
|
||||||
LogHelper.v(LOG_TAG, "Save dialog result: SAVE");
|
LogHelper.v(LOG_TAG, "Save dialog result: SAVE");
|
||||||
} else if (resultCode == Activity.RESULT_CANCELED){
|
} else if (resultCode == Activity.RESULT_CANCELED){
|
||||||
LogHelper.v(LOG_TAG, "Save dialog result: CANCEL");
|
LogHelper.v(LOG_TAG, "Save dialog result: CANCEL");
|
||||||
|
@ -311,7 +311,7 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys {
|
||||||
break;
|
break;
|
||||||
case RESULT_CLEAR_DIALOG:
|
case RESULT_CLEAR_DIALOG:
|
||||||
if (resultCode == Activity.RESULT_OK) {
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
// User chose CLEAR - clear map, do not save track
|
// User chose CLEAR - clear map, DO NOT save track
|
||||||
clearMap(false);
|
clearMap(false);
|
||||||
// handle FloatingActionButton state in MainActivity
|
// handle FloatingActionButton state in MainActivity
|
||||||
((MainActivity)mActivity).onFloatingActionButtonResult(requestCode, resultCode);
|
((MainActivity)mActivity).onFloatingActionButtonResult(requestCode, resultCode);
|
||||||
|
@ -363,6 +363,53 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Handles tap on the my location button */
|
||||||
|
public boolean handleShowMyLocation() {
|
||||||
|
|
||||||
|
// do nothing if location setting is off
|
||||||
|
if (toggleLocationOffBar()) {
|
||||||
|
stopPreliminaryTracking();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
GeoPoint position;
|
||||||
|
|
||||||
|
// get current position
|
||||||
|
if (mTrackerServiceRunning && mTrack != null) {
|
||||||
|
// get current Location from tracker service
|
||||||
|
mCurrentBestLocation = mTrack.getWayPointLocation(mTrack.getSize() - 1);
|
||||||
|
} else if (mCurrentBestLocation == null) {
|
||||||
|
// app does not have any location fix
|
||||||
|
mCurrentBestLocation = LocationHelper.determineLastKnownLocation(mLocationManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if really got a position
|
||||||
|
if (mCurrentBestLocation != null) {
|
||||||
|
position = convertToGeoPoint(mCurrentBestLocation);
|
||||||
|
|
||||||
|
// center map on current position
|
||||||
|
mController.setCenter(position);
|
||||||
|
|
||||||
|
// mark user's new location on map and remove last marker
|
||||||
|
updateMyLocationMarker();
|
||||||
|
|
||||||
|
// inform user about location quality
|
||||||
|
String locationInfo;
|
||||||
|
long locationAge = (SystemClock.elapsedRealtimeNanos() - mCurrentBestLocation.getElapsedRealtimeNanos()) / 1000000;
|
||||||
|
String locationAgeString = LocationHelper.convertToReadableTime(locationAge, false);
|
||||||
|
if (locationAgeString == null) {
|
||||||
|
locationAgeString = mActivity.getString(R.string.toast_message_last_location_age_one_hour);
|
||||||
|
}
|
||||||
|
locationInfo = " " + locationAgeString + " | " + mCurrentBestLocation.getProvider();
|
||||||
|
Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_last_location) + locationInfo, Toast.LENGTH_LONG).show();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_location_services_not_ready), Toast.LENGTH_LONG).show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Removes track crumbs from map */
|
/* Removes track crumbs from map */
|
||||||
private void clearMap(boolean saveTrack) {
|
private void clearMap(boolean saveTrack) {
|
||||||
|
|
||||||
|
@ -493,53 +540,6 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Handles tap on the my location button */
|
|
||||||
public boolean handleShowMyLocation() {
|
|
||||||
|
|
||||||
// do nothing if location setting is off
|
|
||||||
if (toggleLocationOffBar()) {
|
|
||||||
stopPreliminaryTracking();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get current position
|
|
||||||
GeoPoint position;
|
|
||||||
|
|
||||||
if (mTrackerServiceRunning && mTrack != null) {
|
|
||||||
// get current Location from tracker service
|
|
||||||
mCurrentBestLocation = mTrack.getWayPointLocation(mTrack.getSize() - 1);
|
|
||||||
} else if (mCurrentBestLocation == null) {
|
|
||||||
// app does not have any location fix
|
|
||||||
mCurrentBestLocation = LocationHelper.determineLastKnownLocation(mLocationManager);
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if really got a position
|
|
||||||
if (mCurrentBestLocation != null) {
|
|
||||||
position = convertToGeoPoint(mCurrentBestLocation);
|
|
||||||
|
|
||||||
// center map on current position
|
|
||||||
mController.setCenter(position);
|
|
||||||
|
|
||||||
// mark user's new location on map and remove last marker
|
|
||||||
updateMyLocationMarker();
|
|
||||||
|
|
||||||
// inform user about location quality
|
|
||||||
String locationInfo;
|
|
||||||
long locationAge = (SystemClock.elapsedRealtimeNanos() - mCurrentBestLocation.getElapsedRealtimeNanos()) / 1000000;
|
|
||||||
String locationAgeString = LocationHelper.convertToReadableTime(locationAge, false);
|
|
||||||
if (locationAgeString == null) {
|
|
||||||
locationAgeString = mActivity.getString(R.string.toast_message_last_location_age_one_hour);
|
|
||||||
}
|
|
||||||
locationInfo = " " + locationAgeString + " | " + mCurrentBestLocation.getProvider();
|
|
||||||
Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_last_location) + locationInfo, Toast.LENGTH_LONG).show();
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_location_services_not_ready), Toast.LENGTH_LONG).show();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Creates receiver for new WayPoints */
|
/* Creates receiver for new WayPoints */
|
||||||
private BroadcastReceiver createTrackUpdatedReceiver() {
|
private BroadcastReceiver createTrackUpdatedReceiver() {
|
||||||
return new BroadcastReceiver() {
|
return new BroadcastReceiver() {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:state_checked="false" android:color="@color/trackbook_grey_lighter" />
|
<item android:state_checked="false" android:color="@color/trackbook_white" />
|
||||||
<item android:state_checked="true" android:color="@color/trackbook_white" />
|
<item android:state_checked="true" android:color="@color/trackbook_white" />
|
||||||
<item android:color="@color/trackbook_grey_lighter" />
|
<item android:color="@color/trackbook_grey_lighter" />
|
||||||
</selector>
|
</selector>
|
||||||
|
|
Loading…
Reference in a new issue