diff --git a/README.md b/README.md index 662969a..1c110fb 100644 --- a/README.md +++ b/README.md @@ -43,16 +43,10 @@ Which Permissions does Trackbook need? ### Permission "INTERNET" Trackbook needs to download map data from Open Street Map servers and therefore needs access to the internet. -### Permission "ACCESS_NETWORK_STATE" -tbd - -### Permission "ACCESS_WIFI_STATE" +### Permission "ACCESS_NETWORK_STATE" and "ACCESS_WIFI_STATE" tbd -### Permission "ACCESS_COARSE_LOCATION" -tbd - -### Permission "ACCESS_FINE_LOCATION" +### Permission "ACCESS_COARSE_LOCATION" and "ACCESS_FINE_LOCATION" tbd ### Permission "WRITE_EXTERNAL_STORAGE" diff --git a/app/build.gradle b/app/build.gradle index 50476c0..46b8cf5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { minSdkVersion 22 targetSdkVersion 24 versionCode 1 - versionName "0.1 (The Great Gig in the Sky)" + versionName "0.1.0 (The Great Gig in the Sky)" vectorDrawables.useSupportLibrary = true } buildTypes { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2fe6daa..003e5b7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,13 +24,30 @@ + android:theme="@style/TrackbookAppTheme.NoActionBar" + android:launchMode="singleTop"> + + + + + + + + + + mMissingPermissions; private View mRootView; @@ -71,9 +70,9 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { super.onCreate(savedInstanceState); // set state of tracking - mTracking = false; + mTrackerServiceRunning = false; if (savedInstanceState != null) { - mTracking = savedInstanceState.getBoolean(INSTANCE_TRACKING_STATE, false); + mTrackerServiceRunning = savedInstanceState.getBoolean(INSTANCE_TRACKING_STATE, false); } // check permissions on Android 6 and higher @@ -116,7 +115,13 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { // CASE ABOUT case R.id.action_bar_about: - LogHelper.v(LOG_TAG, "About was selected"); // TODO remove + // get title + String aboutTitle = getString(R.string.header_about); + // put title and content into intent and start activity + Intent aboutIntent = new Intent(this, InfosheetActivity.class); + aboutIntent.putExtra(EXTRA_INFOSHEET_TITLE, aboutTitle); + aboutIntent.putExtra(EXTRA_INFOSHEET_CONTENT, INFOSHEET_CONTENT_ABOUT); + startActivity(aboutIntent); return true; // CASE DEFAULT @@ -128,7 +133,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { @Override protected void onSaveInstanceState(Bundle outState) { - outState.putBoolean(INSTANCE_TRACKING_STATE, mTracking); + outState.putBoolean(INSTANCE_TRACKING_STATE, mTrackerServiceRunning); super.onSaveInstanceState(outState); } @@ -137,6 +142,12 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { protected void onResume() { super.onResume(); + Intent intent = getIntent(); + if (intent.hasExtra(EXTRA_TRACKING_STATE)) { + mTrackerServiceRunning = intent.getBooleanExtra(EXTRA_TRACKING_STATE, false); + mMainActivityFragment.setTrackingState(mTrackerServiceRunning); + } + // if not in onboarding mode: set state of FloatingActionButton if (mFloatingActionButton != null) { setFloatingActionButtonState(); @@ -233,7 +244,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { /* Handles tap on the record button */ private void handleFloatingActionButtonClick(View view) { - if (mTracking) { + if (mTrackerServiceRunning) { // show snackbar Snackbar.make(view, R.string.snackbar_message_tracking_stopped, Snackbar.LENGTH_SHORT).setAction("Action", null).show(); @@ -250,7 +261,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { Snackbar.make(view, R.string.snackbar_message_tracking_started, Snackbar.LENGTH_SHORT).setAction("Action", null).show(); // change state - mTracking = true; + mTrackerServiceRunning = true; setFloatingActionButtonState(); // get last location from MainActivity Fragment @@ -264,13 +275,13 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { } // update tracking state in MainActivityFragment - mMainActivityFragment.setTrackingState(mTracking); + mMainActivityFragment.setTrackingState(mTrackerServiceRunning); } /* Set state of FloatingActionButton */ private void setFloatingActionButtonState() { - if (mTracking) { + if (mTrackerServiceRunning) { mFloatingActionButton.setImageResource(R.drawable.ic_fiber_manual_record_red_24dp); } else { mFloatingActionButton.setImageResource(R.drawable.ic_fiber_manual_record_white_24dp); @@ -304,7 +315,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { @Override public void onReceive(Context context, Intent intent) { // change state - mTracking = false; + mTrackerServiceRunning = false; setFloatingActionButtonState(); // pass tracking state to MainActivityFragment diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityFragment.java index 91a3498..b0a7029 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivityFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityFragment.java @@ -194,6 +194,7 @@ public class MainActivityFragment extends Fragment implements TrackbookKeys { } + @Override public void onResume() { super.onResume(); @@ -306,14 +307,22 @@ public class MainActivityFragment extends Fragment implements TrackbookKeys { public void setTrackingState (boolean trackingState) { mTrackerServiceRunning = trackingState; + // got a new track (from notification)= + Intent intent = mActivity.getIntent(); + if (intent.hasExtra(EXTRA_TRACK)) { + LogHelper.v(LOG_TAG, "ding !!!"); + mTrack = intent.getParcelableExtra(EXTRA_TRACK); + } + // turn on/off tracking for MainActivity Fragment - prevent double tracking if (mTrackerServiceRunning) { stopPreliminaryTracking(); } else if (!mLocalTrackerRunning){ startPreliminaryTracking(); - if (mTrack != null) { - drawTrackOverlay(mTrack); - } + } + + if (mTrack != null) { + drawTrackOverlay(mTrack); } // update marker diff --git a/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java b/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java index 28b167c..671911d 100644 --- a/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/NotificationHelper.java @@ -96,6 +96,10 @@ public class NotificationHelper implements TrackbookKeys { // explicit intent for notification tap Intent tapActionIntent = new Intent(mService, MainActivity.class); + tapActionIntent.setAction(Intent.ACTION_MAIN); + tapActionIntent.addCategory(Intent.CATEGORY_LAUNCHER); + tapActionIntent.putExtra(EXTRA_TRACK, track); + tapActionIntent.putExtra(EXTRA_TRACKING_STATE, true); // explicit intent for stopping playback Intent stopActionIntent = new Intent(mService, TrackerService.class); diff --git a/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java b/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java index cbbb2ff..4c4bbff 100644 --- a/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java @@ -31,6 +31,9 @@ public interface TrackbookKeys { /* EXTRAS */ public static final String EXTRA_TRACK = "TRACK"; public static final String EXTRA_LAST_LOCATION = "LAST_LOCATION"; + public static final String EXTRA_TRACKING_STATE = "TRACKING_STATE"; + public static final String EXTRA_INFOSHEET_TITLE = "EXTRA_INFOSHEET_TITLE"; + public static final String EXTRA_INFOSHEET_CONTENT = "INFOSHEET_CONTENT"; /* ARGS */ public static final String ARG_PERMISSIONS_GRANTED = "ArgPermissionsGranted"; @@ -66,5 +69,6 @@ public interface TrackbookKeys { /* MISC */ public static final int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124; public static final int TRACKER_SERVICE_NOTIFICATION_ID = 1; + public static final int INFOSHEET_CONTENT_ABOUT = 1; } diff --git a/app/src/main/res/layout/fragment_infosheet_about.xml b/app/src/main/res/layout/fragment_infosheet_about.xml new file mode 100644 index 0000000..6b0a061 --- /dev/null +++ b/app/src/main/res/layout/fragment_infosheet_about.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 8007b2a..7168dd7 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -10,6 +10,7 @@ android:visible="true" app:showAsAction="ifRoom" /> + Trackbook + Info Sheet My Location About + + About Trackbook running @@ -23,7 +26,7 @@ Unable to start Trackbook. Location is turned off. Acquiring current location. - My Location. + Last recorded location: My current location. @@ -41,5 +44,23 @@ Maxime et commodi modi officiis at deleniti fugit. Magnam atque provident est et nulla incidunt. Beatae excepturi repudiandae aut facilis aperiam. Et totam qui doloremque. Asperiores est ut perspiciatis ducimus ut aut rerum minus. Voluptatem facilis qui minus corporis explicabo eos. Got it! + + About Trackbook + Movement recorder for Android + Version 0.1 ("The Great Gig in the Sky") + Trackbook is a bare bones app for recording your movements. Trackbook is great for hiking, vacation or workout. Once started it displays your movements on a map. You can save your recorded tracks and share them with friends. + Trackbook is free software. It is published under the MIT open source license. Trackbook uses osmdroid to display the map. osmdroid is also free software. It is published under the Apache License. Want to help? You can find the code on GitHub. GitHub is also a good place to file bugs or even to contribute, if you are interested. + https://github.com/y20k/trackbook + https://github.com/osmdroid/osmdroid + https://opensource.org/licenses/MIT + Which Permissions does Trackbook need? + Permission INTERNET + Trackbook needs to download map data from Open Street Map servers and therefore needs access to the internet. + Permission ACCESS_WIFI_STATE and ACCESS_NETWORK_STATE + tbd + Permission ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION + tbd + Permission WRITE_EXTERNAL_STORAGE + Trackbook uses osmdroid, which caches map tiles on Android\'s external storage. You can find the map cache in the osmdroid folder on the top level of the user-facing file system.