Icon now has a red background (#54), Trackbook does not need the permission EXTERNAL STORAGE anymore, Night mode has now a dark map

master
y20k 2019-05-04 17:10:32 +02:00
parent e43b700819
commit 6f4aa0b22e
35 changed files with 123 additions and 124 deletions

View File

@ -61,9 +61,6 @@ Trackbook needs accurate GPS location data to be able to record your movements.
### Permission "VIBRATE"
Tapping and holding some controls will toggle a tiny vibration (force feedback).
### Permission "WRITE\_EXTERNAL\_STORAGE"
Trackbook uses [osmdroid](https://github.com/osmdroid/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.
Screenshots (v1.1)
------------------
[<img src="https://raw.githubusercontent.com/y20k/trackbook/master/fastlane/metadata/en-US/phoneScreenshots/p1.png" width="240">](https://raw.githubusercontent.com/y20k/trackbook/master/fastlane/metadata/en-US/phoneScreenshots/p1.png)

View File

@ -15,7 +15,6 @@
<!-- DANGEROUS PERMISSIONS, must request -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".Trackbook"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -41,6 +41,17 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
@ -59,17 +70,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
/**
* MainActivity class
@ -142,6 +142,8 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
// set user agent to prevent getting banned from the osm servers
Configuration.getInstance().setUserAgentValue(BuildConfig.APPLICATION_ID);
// set the path for osmdroid's files (e.g. tile cache)
Configuration.getInstance().setOsmdroidBasePath(this.getExternalFilesDir(null));
// set up main layout
setupLayout();
@ -220,9 +222,9 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
// check for ACCESS_FINE_LOCATION and WRITE_EXTERNAL_STORAGE
Boolean location = perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
Boolean storage = perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
// Boolean storage = perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
if (location && storage) {
if (location) {
// permissions granted - notify user
Toast.makeText(this, R.string.toast_message_permissions_granted, Toast.LENGTH_SHORT).show();
mPermissionsGranted = true;
@ -748,11 +750,11 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys {
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
// check for storage permission
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// add missing permission
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
// // check for storage permission
// if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// // add missing permission
// permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
// }
return permissions;
}

View File

@ -36,6 +36,12 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.android.material.snackbar.Snackbar;
import org.osmdroid.api.IMapController;
@ -43,6 +49,7 @@ import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.ItemizedIconOverlay;
import org.osmdroid.views.overlay.TilesOverlay;
import org.osmdroid.views.overlay.compass.CompassOverlay;
import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider;
import org.y20k.trackbook.core.Track;
@ -50,17 +57,12 @@ import org.y20k.trackbook.helpers.DialogHelper;
import org.y20k.trackbook.helpers.LocationHelper;
import org.y20k.trackbook.helpers.LogHelper;
import org.y20k.trackbook.helpers.MapHelper;
import org.y20k.trackbook.helpers.NightModeHelper;
import org.y20k.trackbook.helpers.StorageHelper;
import org.y20k.trackbook.helpers.TrackbookKeys;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
/**
* MainActivityMapFragment class
@ -173,11 +175,16 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys {
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setTilesScaledToDpi(true);
// set dark map tiles, if necessary
if (NightModeHelper.getNightMode(mActivity)) {
mMapView.getOverlayManager().getTilesOverlay().setColorFilter(TilesOverlay.INVERT_COLORS);
}
// add multi-touch capability
mMapView.setMultiTouchControls(true);
// disable default zoom controls
mMapView.setBuiltInZoomControls(false);
mMapView.getZoomController().setVisibility(org.osmdroid.views.CustomZoomButtonsController.Visibility.NEVER);
// add compass to map
CompassOverlay compassOverlay = new CompassOverlay(mActivity, new InternalCompassOrientationProvider(mActivity), mMapView);

View File

@ -35,6 +35,16 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Group;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import org.osmdroid.api.IMapController;
@ -42,6 +52,7 @@ import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.ItemizedIconOverlay;
import org.osmdroid.views.overlay.TilesOverlay;
import org.osmdroid.views.overlay.compass.CompassOverlay;
import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider;
import org.y20k.trackbook.core.Track;
@ -52,6 +63,7 @@ import org.y20k.trackbook.helpers.LengthUnitHelper;
import org.y20k.trackbook.helpers.LocationHelper;
import org.y20k.trackbook.helpers.LogHelper;
import org.y20k.trackbook.helpers.MapHelper;
import org.y20k.trackbook.helpers.NightModeHelper;
import org.y20k.trackbook.helpers.StorageHelper;
import org.y20k.trackbook.helpers.TrackbookKeys;
@ -59,16 +71,6 @@ import java.io.File;
import java.text.DateFormat;
import java.util.Locale;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Group;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
/**
* MainActivityTrackFragment class
@ -179,11 +181,16 @@ public class MainActivityTrackFragment extends Fragment implements AdapterView.O
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setTilesScaledToDpi(true);
// set dark map tiles, if necessary
if (NightModeHelper.getNightMode(mActivity)) {
mMapView.getOverlayManager().getTilesOverlay().setColorFilter(TilesOverlay.INVERT_COLORS);
}
// add multi-touch capability
mMapView.setMultiTouchControls(true);
// disable default zoom controls
mMapView.setBuiltInZoomControls(false);
mMapView.getZoomController().setVisibility(org.osmdroid.views.CustomZoomButtonsController.Visibility.NEVER);
// add compass to map
CompassOverlay compassOverlay = new CompassOverlay(mActivity, new InternalCompassOrientationProvider(mActivity), mMapView);

View File

@ -25,10 +25,10 @@ import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Toast;
import org.y20k.trackbook.R;
import androidx.appcompat.app.AppCompatDelegate;
import org.y20k.trackbook.R;
/**
* NightModeHelper class
@ -85,6 +85,13 @@ public final class NightModeHelper implements TrackbookKeys {
}
/* Return weather Night Mode is on, or not */
public static Boolean getNightMode(Context context) {
int nightMode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
return nightMode == Configuration.UI_MODE_NIGHT_YES;
}
/* Returns state of night mode */
private static int getCurrentNightModeState(Context context) {
return context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;

View File

@ -91,23 +91,6 @@
android:text="@string/layout_onboarding_p_permission_location"
android:id="@+id/p_permission_location" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/main_onboarding_text"
android:textStyle="bold"
android:text="@string/layout_onboarding_h3_permission_storage"
android:id="@+id/h3_permission_storage"
android:layout_marginTop="@dimen/activity_vertical_margin" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/main_onboarding_text"
android:text="@string/layout_onboarding_p_permission_storage"
android:id="@+id/p_permission_storage" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -82,7 +82,7 @@
<string name="layout_onboarding_description_app_icon">Trackbook App-Symbol</string>
<string name="layout_onboarding_h2_app_name">Trackbook</string>
<string name="layout_onboarding_p_app_claim">Bewegungsrekorder</string>
<string name="layout_onboarding_h2_request_permissions">Trackbook kann ohne diese Berechtigungen nicht ausgeführt werden:</string>
<string name="layout_onboarding_h2_request_permissions">Trackbook kann ohne diese Berechtigung nicht ausgeführt werden:</string>
<string name="layout_onboarding_h3_permission_location">STANDORT</string>
<string name="layout_onboarding_p_permission_location">Trackbook benötigt präzise GPS-Informationen, um Bewegungen aufzeichnen zu können. Wenn GPS nicht verfügbar ist, oder wenn die GPS-Daten zu ungenau sind, nutzt Trackbook zur Ortung Mobilfunk- und WLAN-Triangulation.</string>
<string name="layout_onboarding_h3_permission_storage">SPEICHER</string>

View File

@ -82,7 +82,7 @@
<string name="layout_onboarding_description_app_icon">Trackbook App Icon</string>
<string name="layout_onboarding_h2_app_name">Trackbook</string>
<string name="layout_onboarding_p_app_claim">Movement Recorder</string>
<string name="layout_onboarding_h2_request_permissions">Trackbook cannot work without these permissions:</string>
<string name="layout_onboarding_h2_request_permissions">Trackbook cannot work without this permission:</string>
<string name="layout_onboarding_h3_permission_location">LOCATION</string>
<string name="layout_onboarding_p_permission_location">Trackbook needs accurate GPS data to be able to record your movements. If the GPS data is not available or not accurate enough, Trackbook uses location data from cell tower and Wi-Fi triangulation.</string>
<string name="layout_onboarding_h3_permission_storage">STORAGE</string>

View File

@ -8,8 +8,8 @@ How to create Trackbooks's [Adaptive Icon](https://developer.android.com/guide/p
1. Go to `File > New > Image Asset`
2. Choose `Icon Type > Launcher Icons (Adaptive and Legacy)`
3. Foreground Layer: Select the file [trackbook-app-icon-current-without-background.png](https://raw.githubusercontent.com/y20k/trackbook/master/assets/trackbook-app-icon-current-without-background.png)
4. Background Layer: Select the color `3C98DB`
3. Foreground Layer: Select the file [trackbook-app-icon-current-foreground.png](https://raw.githubusercontent.com/y20k/trackbook/master/assets/trackbook-app-icon-current-foreground.png)
4. Background Layer: Select the file [trackbook-app-icon-current-background.png](https://raw.githubusercontent.com/y20k/trackbook/master/assets/trackbook-app-icon-current-background.png)
5. Foreground Layer: Set Trim to `No`
6. Foreground Layer: Set Resize to `100%`

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,28 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
xml:space="preserve"
width="108pt"
height="108pt"
viewBox="0 0 144.00001 144.00001"
sodipodi:docname="trackbook-app-icon-current.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
inkscape:export-filename="/home/solaris/Desktop/trackbook/assets/trackbook-app-icon-current.png"
inkscape:export-xdpi="1117.09"
inkscape:export-ydpi="1117.09"><metadata
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg2" xml:space="preserve"
width="108pt" height="108pt" viewBox="0 0 144.00001 144.00001" sodipodi:docname="trackbook-app-icon-red.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14" inkscape:export-filename="/home/solaris/Desktop/trackbook/assets/trackbook-app-icon-background-current.png"
inkscape:export-xdpi="1000" inkscape:export-ydpi="1000"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><linearGradient
id="linearGradient4834"
spreadMethod="pad"
@ -305,12 +292,12 @@
id="g388"><image
sodipodi:absref="/home/solaris/Desktop/trackbook/assets/app-icon-5_img0.png"
xlink:href="app-icon-5_img0.png"
width="1"
height="1"
style="image-rendering:optimizeSpeed"
preserveAspectRatio="none"
id="image386"
transform="matrix(1,0,0,-1,0,1)"
id="image386" /></g></g></g></g></g></g></g></mask><clipPath
preserveAspectRatio="none"
style="image-rendering:optimizeSpeed"
height="1"
width="1" /></g></g></g></g></g></g></g></mask><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath408"><path
d="m 262.198,439.809 h 70.663 V 33 h -70.663 z"
@ -365,45 +352,58 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2043"
inkscape:window-height="1303"
inkscape:window-height="1370"
id="namedview4"
showgrid="false"
inkscape:zoom="11.313708"
inkscape:cx="65.112209"
inkscape:cy="75.672871"
inkscape:zoom="8"
inkscape:cx="69.795993"
inkscape:cy="70.240041"
inkscape:window-x="517"
inkscape:window-y="49"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
inkscape:current-layer="layer3"
units="pt"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"><sodipodi:guide
position="0,72.000005"
orientation="0,1"
id="guide4776"
inkscape:locked="true"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /><sodipodi:guide
position="72.000005,0"
orientation="1,0"
id="guide4778"
inkscape:locked="true"
inkscape:label=""
inkscape:color="rgb(0,0,255)" /></sodipodi:namedview><g
fit-margin-bottom="0" /><g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="circular background "
style="display:inline"><circle
style="opacity:1;fill:#3c98db;fill-opacity:1;stroke-width:9.66016388"
id="path4781"
cx="72"
cy="72"
r="44"
inkscape:label="circular background" /></g><g
inkscape:label="background "
style="display:inline"><rect
style="display:inline;opacity:1;fill:#d93025;fill-opacity:1;stroke:none;stroke-width:1.54674852;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.07843137"
id="rect971"
width="144"
height="144"
x="0"
y="6.6613381e-15"
inkscape:label="red square" /><path
style="display:none;opacity:1;fill:#17181a;fill-opacity:0.0627451;stroke:none;stroke-width:1.54674852;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.07843137"
d="M 0,0 144,144 H 0 Z"
id="rect973"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="diagonal shaddow" /><path
inkscape:label="diagonal shaddow"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path978"
d="M 0,0 26,-1.1396943e-7 144,144 H 0 Z"
style="display:none;opacity:1;fill:#17181a;fill-opacity:0.0627451;stroke:none;stroke-width:1.54674852;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.07843137" /><rect
inkscape:label="left shaddow"
y="6.6613381e-15"
x="0"
height="144"
width="72"
id="rect976"
style="display:inline;opacity:1;fill:#17181a;fill-opacity:0.0627451;stroke:none;stroke-width:1.09371638;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.07843137" /><path
style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.13320997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.07843137"
d="M 0.06640625,0.06640625 V 143.93359 H 143.93359 V 0.06640625 Z M 72,28 A 44,44 0 0 1 116,72 44,44 0 0 1 72,116 44,44 0 0 1 28,72 44,44 0 0 1 72,28 Z"
id="rect957"
inkscape:connector-curvature="0"
inkscape:label="cicular stencil" /></g><g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="shaddow shape"

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -8,7 +8,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}

View File

@ -1,6 +1,6 @@
#Thu Oct 04 08:52:03 CEST 2018
#Wed Apr 24 13:40:20 CEST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

View File

@ -47,7 +47,4 @@ Permission "ACCESS\_COARSE\_LOCATION" and "ACCESS\_FINE\_LOCATION"
Trackbook needs accurate GPS location data to be able to record your movements. If the GPS data is not available or not accurate enough Trackbook uses location data from cell tower and WiFi triangulation.
Permission "VIBRATE"
Tapping and holding some controls will toggle a tiny vibration (force feedback).
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.
Tapping and holding some controls will toggle a tiny vibration (force feedback).