Trackbook got an About screen
This commit is contained in:
parent
3789c66f3b
commit
87636e9a64
11 changed files with 273 additions and 25 deletions
10
README.md
10
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"
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -24,13 +24,30 @@
|
|||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/TrackbookAppTheme.NoActionBar">
|
||||
android:theme="@style/TrackbookAppTheme.NoActionBar"
|
||||
android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
|
||||
<!-- INFOSHEET ACTIVITY -->
|
||||
<activity
|
||||
android:name=".InfosheetActivity"
|
||||
android:label="@string/title_activity_infosheet"
|
||||
android:parentActivityName=".MainActivity"
|
||||
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout">
|
||||
|
||||
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="org.y20k.trackbook.MainActivity" />
|
||||
|
||||
</activity>
|
||||
|
||||
|
||||
<!-- PLAYER SERVICE -->
|
||||
<service
|
||||
android:name=".TrackerService"
|
||||
|
|
49
app/src/main/java/org/y20k/trackbook/InfosheetActivity.java
Normal file
49
app/src/main/java/org/y20k/trackbook/InfosheetActivity.java
Normal file
|
@ -0,0 +1,49 @@
|
|||
/**
|
||||
* InfosheetActivity.java
|
||||
* Implements the app's infosheet activity
|
||||
* The infosheet activity sets up infosheet screens for "About" and "How to"
|
||||
*
|
||||
* This file is part of
|
||||
* TRANSISTOR - Radio App for Android
|
||||
*
|
||||
* Copyright (c) 2015-16 - Y20K.org
|
||||
* Licensed under the MIT-License
|
||||
* http://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
|
||||
package org.y20k.trackbook;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
||||
import org.y20k.trackbook.helpers.TrackbookKeys;
|
||||
|
||||
|
||||
/**
|
||||
* InfosheetActivity class
|
||||
*/
|
||||
public final class InfosheetActivity extends AppCompatActivity implements TrackbookKeys {
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// get activity title from intent
|
||||
Intent intent = this.getIntent();
|
||||
|
||||
// set activity title
|
||||
if (intent.hasExtra(EXTRA_INFOSHEET_TITLE)) {
|
||||
this.setTitle(intent.getStringExtra(EXTRA_INFOSHEET_TITLE));
|
||||
}
|
||||
|
||||
// set activity view
|
||||
if (intent.hasExtra(EXTRA_INFOSHEET_CONTENT) && intent.getIntExtra(EXTRA_INFOSHEET_CONTENT, -1) == INFOSHEET_CONTENT_ABOUT) {
|
||||
setContentView(R.layout.fragment_infosheet_about);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -38,7 +38,6 @@ import android.view.View;
|
|||
import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.y20k.trackbook.helpers.LogHelper;
|
||||
import org.y20k.trackbook.helpers.TrackbookKeys;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -57,7 +56,7 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
|
|||
|
||||
|
||||
/* Main class variables */
|
||||
private boolean mTracking;
|
||||
private boolean mTrackerServiceRunning;
|
||||
private boolean mPermissionsGranted;
|
||||
private List<String> 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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
138
app/src/main/res/layout/fragment_infosheet_about.xml
Normal file
138
app/src/main/res/layout/fragment_infosheet_about.xml
Normal file
|
@ -0,0 +1,138 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
android:scrollbars="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h1_about"
|
||||
android:textAppearance="@android:style/TextAppearance.Large"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h2_recorder"
|
||||
android:textAppearance="@android:style/TextAppearance.Medium"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h3_version"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_bare"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:layout_marginTop="4dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_free"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:layout_marginTop="2dp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_github"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:layout_marginTop="4dp"
|
||||
android:autoLink="web" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_license"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:autoLink="web" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_osmdroid"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:autoLink="web" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h2_permissions"
|
||||
android:textAppearance="@android:style/TextAppearance.Medium"
|
||||
android:layout_marginTop="8dp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h3_internet"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="2dp" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_internet"
|
||||
android:textAppearance="@android:style/TextAppearance.Small" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h3_network"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="2dp" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_network"
|
||||
android:textAppearance="@android:style/TextAppearance.Small" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h3_location"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginEnd="2dp" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_location"
|
||||
android:textAppearance="@android:style/TextAppearance.Small" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_h3_external"
|
||||
android:textAppearance="@android:style/TextAppearance.Small"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginTop="2dp" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/infosheet_about_p_external"
|
||||
android:textAppearance="@android:style/TextAppearance.Small" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
android:visible="true"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
|
||||
<item
|
||||
android:id="@+id/action_bar_about"
|
||||
android:orderInCategory="100"
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
<resources>
|
||||
<!-- activities -->
|
||||
<string name="app_name">Trackbook</string>
|
||||
<string name="title_activity_infosheet">Info Sheet</string>
|
||||
|
||||
<!-- menu entries -->
|
||||
<string name="menu_my_location">My Location</string>
|
||||
<string name="menu_about">About</string>
|
||||
|
||||
<!-- headers -->
|
||||
<string name="header_about">About</string>
|
||||
|
||||
<!-- notification -->
|
||||
<string name="notification_title_trackbook_running">Trackbook running</string>
|
||||
|
@ -23,7 +26,7 @@
|
|||
<string name="toast_message_unable_to_start_app">Unable to start Trackbook.</string>
|
||||
<string name="toast_message_location_offline">Location is turned off.</string>
|
||||
<string name="toast_message_acquiring_location">Acquiring current location.</string>
|
||||
<string name="toast_message_my_location">My Location.</string>
|
||||
<string name="toast_message_my_location">Last recorded location:</string>
|
||||
|
||||
<!-- map markers -->
|
||||
<string name="marker_my_location_title">My current location.</string>
|
||||
|
@ -41,5 +44,23 @@
|
|||
<string name="layout_onboading_p_permission_storage">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.</string>
|
||||
<string name="layout_onboading_button_okay">Got it!</string>
|
||||
|
||||
<!-- infosheet about -->
|
||||
<string name="infosheet_about_h1_about">About Trackbook</string>
|
||||
<string name="infosheet_about_h2_recorder">Movement recorder for Android</string>
|
||||
<string name="infosheet_about_h3_version">Version 0.1 ("The Great Gig in the Sky")</string>
|
||||
<string name="infosheet_about_p_bare">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.</string>
|
||||
<string name="infosheet_about_p_free">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.</string>
|
||||
<string name="infosheet_about_p_github">https://github.com/y20k/trackbook</string>
|
||||
<string name="infosheet_about_p_osmdroid">https://github.com/osmdroid/osmdroid</string>
|
||||
<string name="infosheet_about_p_license">https://opensource.org/licenses/MIT</string>
|
||||
<string name="infosheet_about_h2_permissions">Which Permissions does Trackbook need?</string>
|
||||
<string name="infosheet_about_h3_internet">Permission INTERNET</string>
|
||||
<string name="infosheet_about_p_internet">Trackbook needs to download map data from Open Street Map servers and therefore needs access to the internet.</string>
|
||||
<string name="infosheet_about_h3_network">Permission ACCESS_WIFI_STATE and ACCESS_NETWORK_STATE</string>
|
||||
<string name="infosheet_about_p_network">tbd</string>
|
||||
<string name="infosheet_about_h3_location">Permission ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION</string>
|
||||
<string name="infosheet_about_p_location">tbd</string>
|
||||
<string name="infosheet_about_h3_external">Permission WRITE_EXTERNAL_STORAGE</string>
|
||||
<string name="infosheet_about_p_external">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.</string>
|
||||
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue