├── .gitignore
├── .idea
├── .name
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── encodings.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── BackPackTrackII.iml
├── LICENSE
├── README.md
├── app
├── .gitignore
├── app.iml
├── build.gradle
├── google-services.json
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ └── WW15MGH.DAC
│ ├── ic_launcher-web.png
│ ├── java
│ └── eu
│ │ └── faircode
│ │ └── backpacktrack2
│ │ ├── ActivityDurationAdapter.java
│ │ ├── ActivityLogAdapter.java
│ │ ├── ActivityTypeAdapter.java
│ │ ├── BackgroundService.java
│ │ ├── BootReceiver.java
│ │ ├── ConnectivityChangedReceiver.java
│ │ ├── DarkSky.java
│ │ ├── DatabaseHelper.java
│ │ ├── ForecastAdapter.java
│ │ ├── GPXFileWriter.java
│ │ ├── GcmService.java
│ │ ├── GeocoderEx.java
│ │ ├── GeonameAdapter.java
│ │ ├── Geonames.java
│ │ ├── GoogleElevationApi.java
│ │ ├── GpsStatusService.java
│ │ ├── IIDService.java
│ │ ├── JobExecutionService.java
│ │ ├── KMLFileWriter.java
│ │ ├── LocationAdapter.java
│ │ ├── MyPackageChangedReceiver.java
│ │ ├── PowerSaveModeChangedReceiver.java
│ │ ├── PressureService.java
│ │ ├── ProvidersChangedReceiver.java
│ │ ├── Proximity.java
│ │ ├── SettingsActivity.java
│ │ ├── SettingsFragment.java
│ │ ├── ShutdownReceiver.java
│ │ ├── StepCountAdapter.java
│ │ ├── StepCountWidget.java
│ │ ├── StepCounterService.java
│ │ ├── SunMoonCalculator.java
│ │ ├── TimezoneChangedReceiver.java
│ │ ├── Util.java
│ │ ├── WaypointAdapter.java
│ │ ├── Weather.java
│ │ ├── WeatherAdapter.java
│ │ ├── WeatherWidget.java
│ │ ├── WikiAdapter.java
│ │ └── Wikimedia.java
│ └── res
│ ├── drawable-mdpi
│ ├── degrees_m1.png
│ ├── degrees_m10.png
│ ├── degrees_m11.png
│ ├── degrees_m12.png
│ ├── degrees_m13.png
│ ├── degrees_m14.png
│ ├── degrees_m15.png
│ ├── degrees_m16.png
│ ├── degrees_m17.png
│ ├── degrees_m18.png
│ ├── degrees_m19.png
│ ├── degrees_m2.png
│ ├── degrees_m20.png
│ ├── degrees_m21.png
│ ├── degrees_m22.png
│ ├── degrees_m23.png
│ ├── degrees_m24.png
│ ├── degrees_m25.png
│ ├── degrees_m26.png
│ ├── degrees_m27.png
│ ├── degrees_m28.png
│ ├── degrees_m29.png
│ ├── degrees_m3.png
│ ├── degrees_m30.png
│ ├── degrees_m31.png
│ ├── degrees_m32.png
│ ├── degrees_m33.png
│ ├── degrees_m34.png
│ ├── degrees_m35.png
│ ├── degrees_m36.png
│ ├── degrees_m37.png
│ ├── degrees_m38.png
│ ├── degrees_m39.png
│ ├── degrees_m4.png
│ ├── degrees_m40.png
│ ├── degrees_m5.png
│ ├── degrees_m6.png
│ ├── degrees_m7.png
│ ├── degrees_m8.png
│ ├── degrees_m9.png
│ ├── degrees_p0.png
│ ├── degrees_p1.png
│ ├── degrees_p10.png
│ ├── degrees_p100.png
│ ├── degrees_p101.png
│ ├── degrees_p102.png
│ ├── degrees_p103.png
│ ├── degrees_p104.png
│ ├── degrees_p105.png
│ ├── degrees_p106.png
│ ├── degrees_p107.png
│ ├── degrees_p108.png
│ ├── degrees_p109.png
│ ├── degrees_p11.png
│ ├── degrees_p110.png
│ ├── degrees_p111.png
│ ├── degrees_p112.png
│ ├── degrees_p113.png
│ ├── degrees_p114.png
│ ├── degrees_p115.png
│ ├── degrees_p116.png
│ ├── degrees_p117.png
│ ├── degrees_p118.png
│ ├── degrees_p119.png
│ ├── degrees_p12.png
│ ├── degrees_p120.png
│ ├── degrees_p13.png
│ ├── degrees_p14.png
│ ├── degrees_p15.png
│ ├── degrees_p16.png
│ ├── degrees_p17.png
│ ├── degrees_p18.png
│ ├── degrees_p19.png
│ ├── degrees_p2.png
│ ├── degrees_p20.png
│ ├── degrees_p21.png
│ ├── degrees_p22.png
│ ├── degrees_p23.png
│ ├── degrees_p24.png
│ ├── degrees_p25.png
│ ├── degrees_p26.png
│ ├── degrees_p27.png
│ ├── degrees_p28.png
│ ├── degrees_p29.png
│ ├── degrees_p3.png
│ ├── degrees_p30.png
│ ├── degrees_p31.png
│ ├── degrees_p32.png
│ ├── degrees_p33.png
│ ├── degrees_p34.png
│ ├── degrees_p35.png
│ ├── degrees_p36.png
│ ├── degrees_p37.png
│ ├── degrees_p38.png
│ ├── degrees_p39.png
│ ├── degrees_p4.png
│ ├── degrees_p40.png
│ ├── degrees_p41.png
│ ├── degrees_p42.png
│ ├── degrees_p43.png
│ ├── degrees_p44.png
│ ├── degrees_p45.png
│ ├── degrees_p46.png
│ ├── degrees_p47.png
│ ├── degrees_p48.png
│ ├── degrees_p49.png
│ ├── degrees_p5.png
│ ├── degrees_p50.png
│ ├── degrees_p51.png
│ ├── degrees_p52.png
│ ├── degrees_p53.png
│ ├── degrees_p54.png
│ ├── degrees_p55.png
│ ├── degrees_p56.png
│ ├── degrees_p57.png
│ ├── degrees_p58.png
│ ├── degrees_p59.png
│ ├── degrees_p6.png
│ ├── degrees_p60.png
│ ├── degrees_p61.png
│ ├── degrees_p62.png
│ ├── degrees_p63.png
│ ├── degrees_p64.png
│ ├── degrees_p65.png
│ ├── degrees_p66.png
│ ├── degrees_p67.png
│ ├── degrees_p68.png
│ ├── degrees_p69.png
│ ├── degrees_p7.png
│ ├── degrees_p70.png
│ ├── degrees_p71.png
│ ├── degrees_p72.png
│ ├── degrees_p73.png
│ ├── degrees_p74.png
│ ├── degrees_p75.png
│ ├── degrees_p76.png
│ ├── degrees_p77.png
│ ├── degrees_p78.png
│ ├── degrees_p79.png
│ ├── degrees_p8.png
│ ├── degrees_p80.png
│ ├── degrees_p81.png
│ ├── degrees_p82.png
│ ├── degrees_p83.png
│ ├── degrees_p84.png
│ ├── degrees_p85.png
│ ├── degrees_p86.png
│ ├── degrees_p87.png
│ ├── degrees_p88.png
│ ├── degrees_p89.png
│ ├── degrees_p9.png
│ ├── degrees_p90.png
│ ├── degrees_p91.png
│ ├── degrees_p92.png
│ ├── degrees_p93.png
│ ├── degrees_p94.png
│ ├── degrees_p95.png
│ ├── degrees_p96.png
│ ├── degrees_p97.png
│ ├── degrees_p98.png
│ └── degrees_p99.png
│ ├── drawable-xhdpi
│ ├── backpacker_black.png
│ ├── backpacker_white.png
│ ├── backup_60.png
│ ├── bike.png
│ ├── car.png
│ ├── clear_day_60.png
│ ├── clear_day_black.png
│ ├── clear_day_white.png
│ ├── clear_night_60.png
│ ├── clear_night_black.png
│ ├── clear_night_white.png
│ ├── cloud_download_black.png
│ ├── cloudy_60.png
│ ├── cloudy_black.png
│ ├── cloudy_white.png
│ ├── create_60.png
│ ├── explore.png
│ ├── feature_htl_60.png
│ ├── fog_60.png
│ ├── fog_black.png
│ ├── fog_white.png
│ ├── gpsfixed_60.png
│ ├── history_60.png
│ ├── language_60.png
│ ├── link_60.png
│ ├── location_60.png
│ ├── navigation_60.png
│ ├── partly_cloudy_day_60.png
│ ├── partly_cloudy_day_black.png
│ ├── partly_cloudy_day_white.png
│ ├── partly_cloudy_night_60.png
│ ├── partly_cloudy_night_black.png
│ ├── partly_cloudy_night_white.png
│ ├── pause.png
│ ├── person_outline_60.png
│ ├── rain_60.png
│ ├── rain_black.png
│ ├── rain_white.png
│ ├── refresh_60.png
│ ├── refresh_black.png
│ ├── run.png
│ ├── send_60.png
│ ├── sleet_60.png
│ ├── sleet_black.png
│ ├── sleet_white.png
│ ├── snow_60.png
│ ├── snow_black.png
│ ├── snow_white.png
│ ├── sunny_60.png
│ ├── toc.png
│ ├── trending_60.png
│ ├── trending_up_60.png
│ ├── umbrella_black.png
│ ├── umbrella_white.png
│ ├── walk.png
│ ├── walk_60.png
│ ├── wind_60.png
│ ├── wind_black.png
│ └── wind_white.png
│ ├── layout
│ ├── activity.xml
│ ├── activity_history.xml
│ ├── activity_list.xml
│ ├── activity_log.xml
│ ├── duration.xml
│ ├── export.xml
│ ├── forecast.xml
│ ├── geoname.xml
│ ├── geoname_search.xml
│ ├── location.xml
│ ├── location_history.xml
│ ├── log.xml
│ ├── nopermissions.xml
│ ├── proximity.xml
│ ├── step.xml
│ ├── step_history.xml
│ ├── step_widget.xml
│ ├── title.xml
│ ├── waypoint.xml
│ ├── waypoint_add.xml
│ ├── waypoint_editor.xml
│ ├── weather.xml
│ ├── weather_forecast.xml
│ ├── weather_history.xml
│ ├── weather_widget.xml
│ ├── wiki.xml
│ └── wiki_search.xml
│ ├── menu
│ ├── activity.xml
│ ├── location.xml
│ ├── step.xml
│ ├── waypoint.xml
│ └── weather.xml
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-mdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxxhdpi
│ └── ic_launcher.png
│ ├── values-de
│ ├── api.xml
│ ├── precipitation.xml
│ ├── pressure.xml
│ ├── strings.xml
│ ├── temperature.xml
│ ├── weather.xml
│ └── windspeed.xml
│ ├── values-nl
│ ├── api.xml
│ ├── precipitation.xml
│ ├── pressure.xml
│ ├── strings.xml
│ ├── temperature.xml
│ ├── weather.xml
│ └── windspeed.xml
│ ├── values
│ ├── api.xml
│ ├── colors.xml
│ ├── play.xml
│ ├── precipitation.xml
│ ├── pressure.xml
│ ├── strings.xml
│ ├── temperature.xml
│ ├── weather.xml
│ └── windspeed.xml
│ └── xml
│ ├── preferences.xml
│ ├── provider_paths.xml
│ ├── step_widget_info.xml
│ └── weather_widget_info.xml
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── play-function.png
├── play-function.xcf
├── screenshot1.png
├── screenshot1_scaled.png
├── screenshot2.png
├── screenshot2_scaled.png
├── screenshot3.png
├── screenshot3_scaled.png
├── screenshot4.png
├── screenshot4_scaled.png
├── screenshot5.png
├── screenshot5_scaled.png
├── screenshot6.png
├── screenshot6_scaled.png
├── screenshot7.png
├── screenshot7_scaled.png
├── settings.gradle
└── wordpress
├── bpt.php
└── readme.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | /.idea/libraries
5 | .DS_Store
6 | /build
7 | /captures
8 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | BackPackTrackII
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/BackPackTrackII.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 25
5 | buildToolsVersion "25.0.3"
6 |
7 | defaultConfig {
8 | applicationId "eu.faircode.backpacktrack2"
9 | minSdkVersion 16
10 | targetSdkVersion 25
11 | versionCode 2017021901
12 | versionName "1.38"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | applicationVariants.all { variant ->
19 | setOutputFile(variant, defaultConfig)
20 | }
21 | }
22 | }
23 | lintOptions {
24 | abortOnError false
25 | }
26 | }
27 |
28 | def setOutputFile(variant, defaultConfig) {
29 | variant.outputs.each { output ->
30 | def fileName = "BPT2-v" + defaultConfig.versionName + ".apk"
31 | if (output.zipAlign)
32 | output.outputFile = new File(output.outputFile.parent, fileName)
33 | else
34 | output.packageApplication.outputFile = new File(output.packageApplication.outputFile.parent, fileName)
35 | }
36 | }
37 |
38 | dependencies {
39 | compile fileTree(dir: 'libs', include: ['*.jar'])
40 |
41 | // https://mvnrepository.com/artifact/com.google.code.gson/gson
42 | compile 'com.google.code.gson:gson:2.8.+'
43 |
44 | // https://developers.google.com/android/guides/setup
45 | compile 'com.google.android.gms:play-services-location:10.2.+'
46 | compile 'com.google.android.gms:play-services-places:10.2.+'
47 | compile 'com.google.android.gms:play-services-gcm:10.2.+'
48 |
49 | // https://mvnrepository.com/artifact/de.timroes/aXMLRPC
50 | compile 'de.timroes:aXMLRPC:1.8.+'
51 |
52 | // https://mvnrepository.com/artifact/org.jdom/jdom2
53 | compile 'org.jdom:jdom2:2.0.+'
54 |
55 | // https://mvnrepository.com/artifact/com.jjoe64/graphview
56 | compile 'com.jjoe64:graphview:4.2.+'
57 |
58 | // https://mvnrepository.com/artifact/joda-time/joda-time
59 | compile 'joda-time:joda-time:2.9.+'
60 | }
61 |
62 | android {
63 | packagingOptions {
64 | exclude 'META-INF/LICENSE.txt'
65 | exclude 'META-INF/NOTICE.txt'
66 | }
67 | }
68 |
69 | apply plugin: 'com.google.gms.google-services'
70 |
--------------------------------------------------------------------------------
/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "552508033698",
4 | "project_id": "backpacktrack-2"
5 | },
6 | "client": [
7 | {
8 | "client_info": {
9 | "mobilesdk_app_id": "1:552508033698:android:612e0f9713a60c29",
10 | "android_client_info": {
11 | "package_name": "eu.faircode.backpacktrack2"
12 | }
13 | },
14 | "oauth_client": [],
15 | "api_key": [
16 | {
17 | "current_key": "AIzaSyA6IM3Fq4IjRru2sMM9UVtY_-NAk-W0gVM"
18 | }
19 | ],
20 | "services": {
21 | "analytics_service": {
22 | "status": 1
23 | },
24 | "appinvite_service": {
25 | "status": 1,
26 | "other_platform_oauth_client": []
27 | },
28 | "ads_service": {
29 | "status": 1
30 | }
31 | }
32 | }
33 | ],
34 | "configuration_version": "1"
35 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/marcel/Documents/adt/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | -dontwarn gov.nasa.worldwind.**
20 | -dontwarn com.zebraimaging.ZebraInputHandler
21 |
--------------------------------------------------------------------------------
/app/src/main/assets/WW15MGH.DAC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/assets/WW15MGH.DAC
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/ActivityDurationAdapter.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.CursorAdapter;
9 | import android.widget.TextView;
10 |
11 | import java.text.SimpleDateFormat;
12 |
13 | public class ActivityDurationAdapter extends CursorAdapter {
14 | private int colTime;
15 | private int colStill;
16 | private int colWalking;
17 | private int colRunning;
18 | private int colOnbicycle;
19 | private int colInvehicle;
20 | private int colUnknown;
21 |
22 | public ActivityDurationAdapter(Context context, Cursor cursor) {
23 | super(context, cursor, 0);
24 | colTime = cursor.getColumnIndex("time");
25 | colWalking = cursor.getColumnIndex("walking");
26 | colRunning = cursor.getColumnIndex("running");
27 | colOnbicycle = cursor.getColumnIndex("onbicycle");
28 | colInvehicle = cursor.getColumnIndex("invehicle");
29 | colUnknown = cursor.getColumnIndex("unknown");
30 | }
31 |
32 | @Override
33 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
34 | return LayoutInflater.from(context).inflate(R.layout.duration, parent, false);
35 | }
36 |
37 | @Override
38 | public void bindView(final View view, final Context context, final Cursor cursor) {
39 | // Get values
40 | long time = cursor.getLong(colTime);
41 | long still = cursor.getInt(cursor.getColumnIndex("still"));
42 | long walking = cursor.getInt(colWalking);
43 | long running = cursor.getInt(colRunning);
44 | long onbicycle = cursor.getInt(colOnbicycle);
45 | long invehicle = cursor.getInt(colInvehicle);
46 | long unknown = cursor.getInt(colUnknown);
47 |
48 | // Get views
49 | TextView tvTime = (TextView) view.findViewById(R.id.tvTime);
50 | TextView tvStill = (TextView) view.findViewById(R.id.tvStill);
51 | TextView tvOnfoot = (TextView) view.findViewById(R.id.tvOnfoot);
52 | TextView tvRunning = (TextView) view.findViewById(R.id.tvRunning);
53 | TextView tvOnbicycle = (TextView) view.findViewById(R.id.tvOnbicycle);
54 | TextView tvInvehicle = (TextView) view.findViewById(R.id.tvInvehicle);
55 | TextView tvUnknown = (TextView) view.findViewById(R.id.tvUnknown);
56 |
57 | // Set values
58 | tvTime.setText(SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT).format(time));
59 | tvStill.setText(format(still));
60 | tvOnfoot.setText(format(walking));
61 | tvRunning.setText(format(running));
62 | tvOnbicycle.setText(format(onbicycle));
63 | tvInvehicle.setText(format(invehicle));
64 | tvUnknown.setText(format(unknown));
65 | }
66 |
67 | private static String format(long duration) {
68 | long hours = duration / (3600 * 1000);
69 | duration = duration % (3600 * 1000);
70 | long minutes = duration / (60 * 1000);
71 | if (hours == 0 && minutes == 0)
72 | return "";
73 | else
74 | return hours + ":" + (minutes < 10 ? "0" : "") + minutes;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/ActivityLogAdapter.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.CursorAdapter;
9 | import android.widget.TextView;
10 |
11 | import java.text.SimpleDateFormat;
12 |
13 | public class ActivityLogAdapter extends CursorAdapter {
14 | private int colStart;
15 | private int colFinish;
16 | private int colActivity;
17 |
18 | public ActivityLogAdapter(Context context, Cursor cursor) {
19 | super(context, cursor, 0);
20 | colStart = cursor.getColumnIndex("start");
21 | colFinish = cursor.getColumnIndex("finish");
22 | colActivity = cursor.getColumnIndex("activity");
23 | }
24 |
25 | @Override
26 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
27 | return LayoutInflater.from(context).inflate(R.layout.log, parent, false);
28 | }
29 |
30 | @Override
31 | public void bindView(final View view, final Context context, final Cursor cursor) {
32 | // Get values
33 | long start = cursor.getLong(colStart);
34 | long finish = cursor.getLong(colFinish);
35 | int activity = cursor.getInt(colActivity);
36 |
37 | // Get views
38 | TextView tvStart = (TextView) view.findViewById(R.id.tvStart);
39 | TextView tvFinish = (TextView) view.findViewById(R.id.tvFinish);
40 | TextView tvActivity = (TextView) view.findViewById(R.id.tvActivity);
41 |
42 | // Set values
43 | tvStart.setText(SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM).format(start));
44 | tvFinish.setText(SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM).format(finish));
45 | tvActivity.setText(BackgroundService.getActivityName(activity, context));
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/ActivityTypeAdapter.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.CursorAdapter;
9 | import android.widget.TextView;
10 |
11 | import java.text.SimpleDateFormat;
12 |
13 | public class ActivityTypeAdapter extends CursorAdapter {
14 | private int colTime;
15 | private int colActivity;
16 | private int colCondidence;
17 |
18 | public ActivityTypeAdapter(Context context, Cursor cursor) {
19 | super(context, cursor, 0);
20 | colTime = cursor.getColumnIndex("time");
21 | colActivity = cursor.getColumnIndex("activity");
22 | colCondidence = cursor.getColumnIndex("confidence");
23 | }
24 |
25 | @Override
26 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
27 | return LayoutInflater.from(context).inflate(R.layout.activity, parent, false);
28 | }
29 |
30 | @Override
31 | public void bindView(final View view, final Context context, final Cursor cursor) {
32 | // Get values
33 | long time = cursor.getLong(colTime);
34 | int activity = cursor.getInt(colActivity);
35 | int confidence = cursor.getInt(colCondidence);
36 |
37 | // Get views
38 | TextView tvTime = (TextView) view.findViewById(R.id.tvTime);
39 | TextView tvActivity = (TextView) view.findViewById(R.id.tvActivity);
40 | TextView tvConfidence = (TextView) view.findViewById(R.id.tvConfidence);
41 |
42 | // Set values
43 | tvTime.setText(SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.MEDIUM).format(time));
44 | tvActivity.setText(BackgroundService.getActivityName(activity, context));
45 | tvConfidence.setText(confidence + "%");
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/BootReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.preference.PreferenceManager;
8 | import android.util.Log;
9 |
10 | public class BootReceiver extends BroadcastReceiver {
11 | private static final String TAG = "BPT2.Boot";
12 |
13 | @Override
14 | public void onReceive(final Context context, Intent intent) {
15 | Log.i(TAG, "Received " + intent);
16 |
17 | // Clear last step count
18 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
19 | prefs.edit().remove(SettingsFragment.PREF_LAST_STEP_COUNT).apply();
20 |
21 | // Restore proximity alerts
22 | try {
23 | Proximity.restoreAlerts(context);
24 | } catch (Throwable ex) {
25 | Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
26 | }
27 |
28 | new Thread(new Runnable() {
29 | @Override
30 | public void run() {
31 | synchronized (context.getApplicationContext()) {
32 | SettingsFragment.firstRun(context);
33 | }
34 | }
35 | }).start();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/ConnectivityChangedReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.preference.PreferenceManager;
8 | import android.util.Log;
9 |
10 | import java.util.Date;
11 |
12 | public class ConnectivityChangedReceiver extends BroadcastReceiver {
13 | private static final String TAG = "BPT2.Connectivity";
14 |
15 | @Override
16 | public void onReceive(final Context context, Intent intent) {
17 | Log.i(TAG, "Received " + intent);
18 |
19 | if (Util.isConnected(context)) {
20 | long time = new Date().getTime();
21 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
22 | long ref_time = prefs.getLong(SettingsFragment.PREF_PRESSURE_REF_TIME, 0);
23 | int interval = Integer.parseInt(prefs.getString(SettingsFragment.PREF_WEATHER_INTERVAL, SettingsFragment.DEFAULT_WEATHER_INTERVAL));
24 |
25 | if (ref_time + interval * 60 * 1000 < time) {
26 | Intent intentWeather = new Intent(context, BackgroundService.class);
27 | intentWeather.setAction(BackgroundService.ACTION_UPDATE_WEATHER);
28 | context.startService(intentWeather);
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/GeocoderEx.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.location.Address;
5 | import android.location.Geocoder;
6 | import android.location.Location;
7 | import android.text.TextUtils;
8 | import android.util.Log;
9 |
10 | import java.io.IOException;
11 | import java.util.ArrayList;
12 | import java.util.List;
13 | import java.util.Locale;
14 |
15 | public class GeocoderEx {
16 | private Geocoder geocoder;
17 |
18 | private static final String TAG = "BPT2.Geocoder";
19 |
20 | public static boolean isPresent() {
21 | return Geocoder.isPresent();
22 | }
23 |
24 | public GeocoderEx(Context context) {
25 | this.geocoder = new Geocoder(context, Locale.getDefault());
26 | }
27 |
28 | public String reverseGeocode(Location location) {
29 | if (location == null)
30 | return null;
31 | try {
32 | List listAddress = getFromLocation(location, 1);
33 | return (listAddress.size() == 0 ? null : listAddress.get(0).name);
34 | } catch (IOException ex) {
35 | Log.w(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
36 | return null;
37 | }
38 | }
39 |
40 | public List getFromLocation(Location location, int results) throws IOException {
41 | return getAddressList(this.geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), results));
42 | }
43 |
44 | public List getFromLocationName(String name, int results) throws IOException {
45 | return getAddressList(this.geocoder.getFromLocationName(name, results));
46 | }
47 |
48 | private static List getAddressList(List listAddress) {
49 | List listAddressEx = new ArrayList<>();
50 | if (listAddress != null)
51 | for (Address address : listAddress)
52 | if (address.hasLatitude() && address.hasLongitude()) {
53 | List listLine = new ArrayList<>();
54 | for (int l = 0; l < address.getMaxAddressLineIndex(); l++)
55 | listLine.add(address.getAddressLine(l));
56 | AddressEx addressEx = new AddressEx();
57 | addressEx.name = TextUtils.join(", ", listLine);
58 | addressEx.location = new Location("geocoded");
59 | addressEx.location.setLatitude(address.getLatitude());
60 | addressEx.location.setLongitude(address.getLongitude());
61 | addressEx.location.setTime(System.currentTimeMillis());
62 | listAddressEx.add(addressEx);
63 | }
64 | return listAddressEx;
65 | }
66 |
67 | public static class AddressEx {
68 | public String name;
69 | public Location location;
70 | }
71 |
72 | public static CharSequence[] getNameList(List listAddress) {
73 | List listResult = new ArrayList();
74 | for (AddressEx address : listAddress)
75 | listResult.add(address.name);
76 | return listResult.toArray(new CharSequence[0]);
77 | }
78 | }
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/GeonameAdapter.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.location.Location;
6 | import android.net.Uri;
7 | import android.util.Log;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.widget.ArrayAdapter;
12 | import android.widget.ImageView;
13 | import android.widget.TextView;
14 | import android.widget.Toast;
15 |
16 | import java.util.List;
17 |
18 | public class GeonameAdapter extends ArrayAdapter {
19 | private static final String TAG = "BPT2.Geonames";
20 |
21 | private Context context;
22 | private Location location;
23 |
24 | public GeonameAdapter(Context context, List names, Location location) {
25 | super(context, 0, names);
26 | this.context = context;
27 | this.location = location;
28 | }
29 |
30 | @Override
31 | public View getView(int position, View convertView, ViewGroup parent) {
32 | final Geonames.Geoname name = getItem(position);
33 | if (convertView == null)
34 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.geoname, parent, false);
35 |
36 | ImageView ivFeature = (ImageView) convertView.findViewById(R.id.ivFeature);
37 | TextView tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
38 | TextView tvDistance = (TextView) convertView.findViewById(R.id.tvDistance);
39 | TextView tvType = (TextView) convertView.findViewById(R.id.tvType);
40 | TextView tvPopulation = (TextView) convertView.findViewById(R.id.tvPopulation);
41 |
42 | int resId = 0;
43 | if (name.fcode != null)
44 | resId = context.getResources().getIdentifier(
45 | "feature_" + name.fcode.toLowerCase() + "_60", "drawable", context.getPackageName());
46 | if (resId > 0)
47 | ivFeature.setImageResource(resId);
48 | ivFeature.setVisibility(resId > 0 ? View.VISIBLE : View.INVISIBLE);
49 |
50 | tvTitle.setText(name.name);
51 | tvDistance.setText((name.countryCode == null ? "" : name.countryCode + " ") + Math.round(name.location.distanceTo(location)) + " m");
52 | tvType.setText((name.fcode == null ? "" : name.fcode) + (name.fcodeName == null ? "" : " " + name.fcodeName));
53 | tvPopulation.setVisibility(name.population > 0 ? View.VISIBLE : View.GONE);
54 | tvPopulation.setText(Long.toString(name.population));
55 |
56 | return convertView;
57 | }
58 | }
59 |
60 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/GoogleElevationApi.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.location.Location;
5 | import android.util.Log;
6 |
7 | import org.json.JSONArray;
8 | import org.json.JSONException;
9 | import org.json.JSONObject;
10 |
11 | import java.io.BufferedReader;
12 | import java.io.IOException;
13 | import java.io.InputStreamReader;
14 | import java.net.URL;
15 |
16 | import javax.net.ssl.HttpsURLConnection;
17 |
18 | public class GoogleElevationApi {
19 | private static final String TAG = "BPT2.GoogleElevation";
20 |
21 | public static final int cTimeOutMs = 30 * 1000;
22 |
23 | public static void getElevation(Location location, Context context) throws IOException, JSONException {
24 | // https://developers.google.com/maps/documentation/elevation/
25 | URL url = new URL("https://maps.googleapis.com/maps/api/elevation/json?locations=" +
26 | String.valueOf(location.getLatitude()) + "," +
27 | String.valueOf(location.getLongitude()) +
28 | "&key=AIzaSyAp0gtiT6AqaSUSlqwXSyoFCA6SCzMyr6w");
29 | Log.d(TAG, "url=" + url);
30 | HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
31 |
32 | urlConnection.setConnectTimeout(cTimeOutMs);
33 | urlConnection.setReadTimeout(cTimeOutMs);
34 | urlConnection.setRequestProperty("Accept", "application/json");
35 |
36 | // Set request type
37 | urlConnection.setRequestMethod("GET");
38 | urlConnection.setDoOutput(false);
39 | urlConnection.setDoInput(true);
40 |
41 | try {
42 | // Check for errors
43 | int code = urlConnection.getResponseCode();
44 | if (code != HttpsURLConnection.HTTP_OK)
45 | throw new IOException("HTTP error " + urlConnection.getResponseCode());
46 |
47 | // Get response
48 | BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
49 | StringBuilder json = new StringBuilder();
50 | String line;
51 | while ((line = br.readLine()) != null)
52 | json.append(line);
53 | Log.d(TAG, json.toString());
54 |
55 | // Decode result
56 | JSONObject jroot = new JSONObject(json.toString());
57 | String status = jroot.getString("status");
58 | if ("OK".equals(status)) {
59 | JSONArray results = jroot.getJSONArray("results");
60 | if (results.length() > 0) {
61 | double elevation = results.getJSONObject(0).getDouble("elevation");
62 | location.setAltitude(elevation);
63 | Log.i(TAG, "Elevation " + location);
64 | } else
65 | throw new IOException("JSON no results");
66 | } else
67 | throw new IOException("JSON status " + status);
68 | } finally {
69 | urlConnection.disconnect();
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/GpsStatusService.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.app.Service;
4 | import android.content.Intent;
5 | import android.content.SharedPreferences;
6 | import android.location.GpsSatellite;
7 | import android.location.GpsStatus;
8 | import android.location.LocationManager;
9 | import android.os.IBinder;
10 | import android.preference.PreferenceManager;
11 | import android.util.Log;
12 |
13 | public class GpsStatusService extends Service {
14 | private static final String TAG = "BPT2.GpsStatusService";
15 |
16 | public GpsStatusService() {
17 | }
18 |
19 | private GpsStatus.Listener mGpsStatusListener = new GpsStatus.Listener() {
20 | @Override
21 | public void onGpsStatusChanged(int event) {
22 | if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {
23 | // Count fixed/visible satellites
24 | int fixed = 0;
25 | int visible = 0;
26 | LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
27 | for (GpsSatellite sat : lm.getGpsStatus(null).getSatellites()) {
28 | visible++;
29 | if (sat.usedInFix())
30 | fixed++;
31 | }
32 |
33 | // Persist fixed/visible satellites
34 | Log.i(TAG, "Satellites fixed/visible=" + fixed + "/" + visible);
35 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GpsStatusService.this);
36 | SharedPreferences.Editor editor = prefs.edit();
37 | editor.putInt(SettingsFragment.PREF_SATS_FIXED, fixed);
38 | editor.putInt(SettingsFragment.PREF_SATS_VISIBLE, visible);
39 | editor.apply();
40 |
41 | // Send state changed intent
42 | Intent intent = new Intent(GpsStatusService.this, BackgroundService.class);
43 | intent.setAction(BackgroundService.ACTION_STATE_CHANGED);
44 | startService(intent);
45 | }
46 | }
47 | };
48 |
49 | @Override
50 | public void onCreate() {
51 | super.onCreate();
52 |
53 | Log.i(TAG, "Requesting GPS status updates");
54 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GpsStatusService.this);
55 | SharedPreferences.Editor editor = prefs.edit();
56 | editor.remove(SettingsFragment.PREF_SATS_FIXED);
57 | editor.remove(SettingsFragment.PREF_SATS_VISIBLE);
58 | editor.apply();
59 | LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
60 | lm.addGpsStatusListener(mGpsStatusListener);
61 | }
62 |
63 | @Override
64 | public void onDestroy() {
65 | Log.i(TAG, "Stopping GPS status updates");
66 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GpsStatusService.this);
67 | SharedPreferences.Editor editor = prefs.edit();
68 | editor.remove(SettingsFragment.PREF_SATS_FIXED);
69 | editor.remove(SettingsFragment.PREF_SATS_VISIBLE);
70 | editor.apply();
71 | LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
72 | lm.removeGpsStatusListener(mGpsStatusListener);
73 |
74 | super.onDestroy();
75 | }
76 |
77 | @Override
78 | public int onStartCommand(Intent intent, int flags, int startId) {
79 | return START_STICKY;
80 | }
81 |
82 | @Override
83 | public IBinder onBind(Intent intent) {
84 | return null;
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/IIDService.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.preference.PreferenceManager;
6 | import android.util.Log;
7 |
8 | import com.google.android.gms.gcm.GoogleCloudMessaging;
9 | import com.google.android.gms.iid.InstanceID;
10 | import com.google.android.gms.iid.InstanceIDListenerService;
11 |
12 | import java.io.IOException;
13 |
14 | public class IIDService extends InstanceIDListenerService {
15 | private static final String TAG = "BPT2.IID";
16 |
17 | @Override
18 | public void onTokenRefresh() {
19 | Log.i(TAG, "Token refresh");
20 | getToken(this, true);
21 | }
22 |
23 | public static void getToken(Context context, boolean refresh) {
24 | try {
25 | // Get token
26 | InstanceID instanceID = InstanceID.getInstance(context);
27 | String token = instanceID.getToken(
28 | context.getString(R.string.gcm_defaultSenderId),
29 | GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
30 | Log.i(TAG, "Token=" + token);
31 |
32 | // Store token
33 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
34 | prefs.edit().putString(SettingsFragment.PREF_GCM_TOKEN, token).apply();
35 |
36 | // Subscribe to topics
37 | GcmService.subscribeBroadcasts(context);
38 | GcmService.subscribeWeatherUpdates(context);
39 | } catch (IOException ex) {
40 | Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/JobExecutionService.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.annotation.TargetApi;
4 | import android.app.job.JobInfo;
5 | import android.app.job.JobParameters;
6 | import android.app.job.JobScheduler;
7 | import android.app.job.JobService;
8 | import android.content.ComponentName;
9 | import android.content.Context;
10 | import android.content.Intent;
11 | import android.content.SharedPreferences;
12 | import android.os.Build;
13 | import android.os.Bundle;
14 | import android.preference.PreferenceManager;
15 | import android.util.Log;
16 |
17 | @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1)
18 | public class JobExecutionService extends JobService {
19 | private static final String TAG = "BPT2.Job";
20 |
21 | public static int JOB_UPLOAD_GPX = 100;
22 | public static int JOB_CONNECTIVITY = 101;
23 |
24 | public static void schedule(int id, Bundle extras, Context context) {
25 | JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
26 | js.cancel(id);
27 |
28 | ComponentName component = new ComponentName(context, JobExecutionService.class);
29 | JobInfo.Builder builder = new JobInfo.Builder(id, component);
30 | if (id == JOB_UPLOAD_GPX) {
31 | builder.setExtras(Util.getPersistableBundle(extras));
32 | builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
33 | builder.setRequiresCharging(false);
34 | builder.setRequiresDeviceIdle(false);
35 | builder.setMinimumLatency(0);
36 | builder.setBackoffCriteria(10 * 1000L, JobInfo.BACKOFF_POLICY_LINEAR);
37 | builder.setOverrideDeadline(2 * 3600 * 1000L);
38 | builder.setPersisted(false);
39 | JobInfo job = builder.build();
40 | Log.i(TAG, "Scheduling upload GPX job=" + job);
41 | js.schedule(job);
42 | } else if (id == JOB_CONNECTIVITY) {
43 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
44 | int interval = Integer.parseInt(prefs.getString(SettingsFragment.PREF_CONNECTIVITY_CHECK_INTERVAL, SettingsFragment.DEFAULT_CONNECTIVITY_CHECK_INTERVAL));
45 | if (interval > 0) {
46 | builder.setRequiredNetworkType(Util.isMeteredNetwork(context) ? JobInfo.NETWORK_TYPE_UNMETERED : JobInfo.NETWORK_TYPE_ANY);
47 | builder.setRequiresCharging(false);
48 | builder.setRequiresDeviceIdle(false);
49 | builder.setMinimumLatency(0);
50 | builder.setBackoffCriteria(interval * 60 * 1000L, JobInfo.BACKOFF_POLICY_LINEAR);
51 | builder.setOverrideDeadline(2 * 3600 * 1000L);
52 | builder.setPersisted(false);
53 | JobInfo job = builder.build();
54 | Log.i(TAG, "Scheduling connectivity interval=" + interval + " job=" + job);
55 | js.schedule(job);
56 | }
57 | } else
58 | Log.w(TAG, "Unknown job id=" + id);
59 | }
60 |
61 | @Override
62 | public boolean onStartJob(JobParameters jobParameters) {
63 | Log.i(TAG, "Start params=" + jobParameters);
64 |
65 | Intent intent = new Intent(this, BackgroundService.class);
66 | int id = jobParameters.getJobId();
67 | if (id == JOB_UPLOAD_GPX) {
68 | intent.setAction(BackgroundService.ACTION_UPLOAD_GPX);
69 | intent.putExtras(Util.getBundle(jobParameters.getExtras()));
70 | } else if (id == JOB_CONNECTIVITY)
71 | intent.setAction(BackgroundService.ACTION_CONNECTIVITY);
72 | else
73 | Log.w(TAG, "Unknown job id=" + id);
74 |
75 | Log.i(TAG, "Starting intent=" + intent);
76 | startService(intent);
77 |
78 | return false;
79 | }
80 |
81 | @Override
82 | public boolean onStopJob(JobParameters jobParameters) {
83 | Log.i(TAG, "Stop params=" + jobParameters);
84 | return false;
85 | }
86 | }
87 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/MyPackageChangedReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.net.Uri;
7 | import android.util.Log;
8 |
9 | public class MyPackageChangedReceiver extends BroadcastReceiver {
10 | private static final String TAG = "BPT2.MyPackageChanged";
11 |
12 | @Override
13 | public void onReceive(final Context context, Intent intent) {
14 | Log.i(TAG, "Received " + intent);
15 |
16 | new Thread(new Runnable() {
17 | @Override
18 | public void run() {
19 | synchronized (context.getApplicationContext()) {
20 | SettingsFragment.firstRun(context);
21 | }
22 | }
23 | }).start();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/PowerSaveModeChangedReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.BroadcastReceiver;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.content.SharedPreferences;
8 | import android.os.Build;
9 | import android.os.PowerManager;
10 | import android.preference.PreferenceManager;
11 | import android.util.Log;
12 |
13 | import java.util.Date;
14 |
15 | @TargetApi(Build.VERSION_CODES.M)
16 | public class PowerSaveModeChangedReceiver extends BroadcastReceiver {
17 | private static final String TAG = "BPT2.PowerSave";
18 |
19 | @Override
20 | public void onReceive(final Context context, Intent intent) {
21 | Log.i(TAG, "Received " + intent);
22 |
23 | PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
24 | if (!pm.isDeviceIdleMode()) {
25 | long time = new Date().getTime();
26 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
27 | long ref_time = prefs.getLong(SettingsFragment.PREF_PRESSURE_REF_TIME, 0);
28 | int interval = Integer.parseInt(prefs.getString(SettingsFragment.PREF_WEATHER_INTERVAL, SettingsFragment.DEFAULT_WEATHER_INTERVAL));
29 |
30 | if (ref_time + interval * 60 * 1000 < time) {
31 | Intent intentWeather = new Intent(context, BackgroundService.class);
32 | intentWeather.setAction(BackgroundService.ACTION_UPDATE_WEATHER);
33 | context.startService(intentWeather);
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/ProvidersChangedReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.util.Log;
7 |
8 | public class ProvidersChangedReceiver extends BroadcastReceiver {
9 | private static final String TAG = "BPT2.ProvidersChanged";
10 |
11 | @Override
12 | public void onReceive(final Context context, Intent intent) {
13 | Log.i(TAG, "Received " + intent);
14 | new Thread(new Runnable() {
15 | @Override
16 | public void run() {
17 | synchronized (context.getApplicationContext()) {
18 | BackgroundService.stopTracking(context);
19 | BackgroundService.startTracking(context);
20 | }
21 | }
22 | }).start();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/Proximity.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.app.PendingIntent;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.pm.PackageManager;
7 | import android.database.Cursor;
8 | import android.location.LocationManager;
9 | import android.os.Build;
10 | import android.util.Log;
11 |
12 | public class Proximity {
13 | private static final String TAG = "BPT2.Proximity";
14 |
15 | public static void setAlert(long id, double latitude, double longitude, long radius, Context context) {
16 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
17 | context.checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
18 | Intent proximity = new Intent(context, BackgroundService.class);
19 | proximity.setAction(BackgroundService.ACTION_PROXIMITY);
20 | proximity.putExtra(BackgroundService.EXTRA_WAYPOINT, id);
21 | PendingIntent pi = PendingIntent.getService(context, 100 + (int) id, proximity, PendingIntent.FLAG_UPDATE_CURRENT);
22 | LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
23 | Log.i(TAG, "Set proximity waypoint=" + id + " radius=" + radius);
24 | if (radius == 0) {
25 | lm.removeProximityAlert(pi);
26 |
27 | // Send proximity exit
28 | Intent exit = new Intent(context, BackgroundService.class);
29 | exit.setAction(BackgroundService.ACTION_PROXIMITY);
30 | exit.putExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);
31 | exit.putExtra(BackgroundService.EXTRA_WAYPOINT, id);
32 | context.startService(exit);
33 | } else
34 | lm.addProximityAlert(latitude, longitude, radius, -1, pi);
35 |
36 | new DatabaseHelper(context).setProximity(id, radius).close();
37 | }
38 | }
39 |
40 | public static void restoreAlerts(Context context) {
41 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
42 | context.checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
43 | Log.i(TAG, "Restoring proximity alerts");
44 | LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
45 | DatabaseHelper db = null;
46 | try {
47 | db = new DatabaseHelper(context);
48 | Cursor cursor = null;
49 | try {
50 | cursor = db.getLocations(0, Long.MAX_VALUE, false, true, true, 0);
51 | int colID = cursor.getColumnIndex("ID");
52 | int colLatitude = cursor.getColumnIndex("latitude");
53 | int colLongitude = cursor.getColumnIndex("longitude");
54 | int colProximity = cursor.getColumnIndex("proximity");
55 | while (cursor.moveToNext()) {
56 | long id = cursor.getLong(colID);
57 | double latitude = cursor.getDouble(colLatitude);
58 | double longitude = cursor.getDouble(colLongitude);
59 | long radius = cursor.getLong(colProximity);
60 | if (radius > 0) {
61 | Intent proximity = new Intent(context, BackgroundService.class);
62 | proximity.setAction(BackgroundService.ACTION_PROXIMITY);
63 | proximity.putExtra(BackgroundService.EXTRA_WAYPOINT, id);
64 | PendingIntent pi = PendingIntent.getService(context, 100 + (int) id, proximity, PendingIntent.FLAG_UPDATE_CURRENT);
65 | Log.i(TAG, "Restoring proximity alert waypoint=" + id);
66 | lm.addProximityAlert(latitude, longitude, radius, -1, pi);
67 | }
68 | }
69 | } finally {
70 | if (cursor != null)
71 | cursor.close();
72 | }
73 | } finally {
74 | if (db != null)
75 | db.close();
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/SettingsActivity.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.Manifest;
4 | import android.annotation.TargetApi;
5 | import android.app.Activity;
6 | import android.app.AlarmManager;
7 | import android.app.PendingIntent;
8 | import android.content.Context;
9 | import android.content.Intent;
10 | import android.content.pm.PackageManager;
11 | import android.net.Uri;
12 | import android.os.Build;
13 | import android.os.Bundle;
14 | import android.util.Log;
15 | import android.view.Window;
16 | import android.view.WindowManager;
17 |
18 | import java.util.ArrayList;
19 | import java.util.Arrays;
20 | import java.util.List;
21 |
22 | public class SettingsActivity extends Activity {
23 | private static final String TAG = "BPT2.Settings";
24 |
25 | public static List cPermission = Arrays.asList(
26 | Manifest.permission.ACCESS_COARSE_LOCATION,
27 | Manifest.permission.ACCESS_FINE_LOCATION,
28 | Manifest.permission.WRITE_EXTERNAL_STORAGE
29 | );
30 |
31 | @Override
32 | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
33 | protected void onCreate(Bundle savedInstanceState) {
34 | super.onCreate(savedInstanceState);
35 |
36 | setTheme(android.R.style.Theme_Material_NoActionBar);
37 |
38 | // Set status bar color
39 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
40 | Window window = getWindow();
41 | window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
42 | window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
43 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
44 | window.setStatusBarColor(getResources().getColor(R.color.color_teal_600, null));
45 | else
46 | window.setStatusBarColor(getResources().getColor(R.color.color_teal_600));
47 | }
48 |
49 | // Remove window title
50 | requestWindowFeature(Window.FEATURE_NO_TITLE);
51 |
52 | // Check runtime permissions
53 | boolean hasPermision = true;
54 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
55 | for (String permission : cPermission)
56 | hasPermision = hasPermision && (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
57 |
58 | // Show main activity
59 | if (hasPermision)
60 | getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
61 | else {
62 | setContentView(R.layout.nopermissions);
63 |
64 | // Build list of missing runtime permissions
65 | List listPermission = new ArrayList();
66 | for (String permission : cPermission)
67 | if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED)
68 | listPermission.add(permission);
69 |
70 | // Request runtime permissions
71 | requestPermissions(listPermission.toArray(new String[0]), 1);
72 | }
73 | }
74 |
75 | @Override
76 | public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
77 | // Write external store permission requires a restart
78 | for (int i = 0; i < permissions.length; i++)
79 | if (Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permissions[i]) &&
80 | grantResults[i] == PackageManager.PERMISSION_GRANTED) {
81 | Log.i(TAG, "Restarting application");
82 |
83 | // Schedule start after 1 second
84 | PendingIntent pi = PendingIntent.getActivity(
85 | this,
86 | BackgroundService.REQUEST_RESTART,
87 | getIntent(),
88 | PendingIntent.FLAG_CANCEL_CURRENT);
89 | AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
90 | am.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, pi);
91 |
92 | // Stop now
93 | System.exit(0);
94 | }
95 |
96 | // Try again
97 | recreate();
98 |
99 | // Make sure first run has been called
100 | new Thread(new Runnable() {
101 | @Override
102 | public void run() {
103 | synchronized (getApplicationContext()) {
104 | SettingsFragment.firstRun(SettingsActivity.this);
105 | }
106 | }
107 | }).start();
108 | }
109 |
110 | @Override
111 | protected void onNewIntent(Intent intent) {
112 | setIntent(intent);
113 |
114 | Uri data = intent.getData();
115 | Bundle extras = intent.getExtras();
116 | if ((data != null && "geo".equals(data.getScheme())) ||
117 | (extras != null && extras.containsKey(SettingsFragment.EXTRA_ACTION)))
118 | recreate();
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/ShutdownReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.preference.PreferenceManager;
8 | import android.util.Log;
9 |
10 | import com.google.android.gms.location.DetectedActivity;
11 |
12 | import java.util.Date;
13 |
14 | public class ShutdownReceiver extends BroadcastReceiver {
15 | private static final String TAG = "BPT2.Shutdown";
16 |
17 | @Override
18 | public void onReceive(final Context context, Intent intent) {
19 | Log.i(TAG, "Received " + intent);
20 |
21 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
22 |
23 | long time = new Date().getTime();
24 | int lastActivity = prefs.getInt(SettingsFragment.PREF_LAST_ACTIVITY, DetectedActivity.STILL);
25 | long lastTime = prefs.getLong(SettingsFragment.PREF_LAST_ACTIVITY_TIME, -1);
26 | if (lastTime >= 0) {
27 | new DatabaseHelper(context).updateActivity(lastTime, lastActivity, time - lastTime).close();
28 | prefs.edit().putLong(SettingsFragment.PREF_LAST_ACTIVITY_TIME, time).apply();
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/StepCountAdapter.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 | import android.database.Cursor;
6 | import android.preference.PreferenceManager;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.CursorAdapter;
11 | import android.widget.TextView;
12 |
13 | import java.text.DateFormat;
14 | import java.text.DecimalFormat;
15 | import java.text.DecimalFormatSymbols;
16 | import java.text.SimpleDateFormat;
17 | import java.util.Locale;
18 | import java.util.TimeZone;
19 |
20 | public class StepCountAdapter extends CursorAdapter {
21 | private int stepsize;
22 | private int weight;
23 | private int colTime;
24 | private int colCount;
25 | private static final DateFormat SDF = SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT);
26 | private static final DecimalFormat ZF = new DecimalFormat("+0.#;-0.#", new DecimalFormatSymbols(Locale.ROOT));
27 |
28 | public StepCountAdapter(Context context, Cursor cursor) {
29 | super(context, cursor, 0);
30 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
31 | stepsize = Integer.parseInt(prefs.getString(SettingsFragment.PREF_STEP_SIZE, SettingsFragment.DEFAULT_STEP_SIZE));
32 | weight = Integer.parseInt(prefs.getString(SettingsFragment.PREF_WEIGHT, SettingsFragment.DEFAULT_WEIGHT));
33 | colTime = cursor.getColumnIndex("time");
34 | colCount = cursor.getColumnIndex("count");
35 | SDF.setTimeZone(TimeZone.getTimeZone("UTC"));
36 | }
37 |
38 | @Override
39 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
40 | return LayoutInflater.from(context).inflate(R.layout.step, parent, false);
41 | }
42 |
43 | @Override
44 | public void bindView(final View view, final Context context, final Cursor cursor) {
45 | // Get values
46 | long time = cursor.getLong(colTime);
47 | int count = cursor.getInt(colCount);
48 |
49 | // Get views
50 | TextView tvTime = (TextView) view.findViewById(R.id.tvTime);
51 | TextView tvCount = (TextView) view.findViewById(R.id.tvCount);
52 | TextView tvDistance = (TextView) view.findViewById(R.id.tvDistance);
53 | TextView tvCalories = (TextView) view.findViewById(R.id.tvCalories);
54 |
55 | // Calculations
56 | float distance = count * stepsize / 100f;
57 | float calories = (distance / 1000f / 1.609344f) * (weight / 0.45359237f) * 0.3f;
58 | // http://www.runnersworld.com/weight-loss/how-many-calories-are-you-really-burning
59 |
60 | // Set values
61 | float zone = (time % (24 * 3600 * 1000L)) / (float) (3600 * 1000);
62 | zone = (zone <= 12 ? 0 : 24) - zone;
63 | tvTime.setText(SDF.format(time + 12 * 3600 * 1000L) + ZF.format(zone));
64 | tvCount.setText(Long.toString(count));
65 | tvDistance.setText(Long.toString(Math.round(distance)));
66 | tvCalories.setText(Long.toString(Math.round(calories)));
67 | }
68 | }
69 |
70 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/StepCountWidget.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.app.PendingIntent;
4 | import android.appwidget.AppWidgetManager;
5 | import android.appwidget.AppWidgetProvider;
6 | import android.content.ComponentName;
7 | import android.content.Context;
8 | import android.content.Intent;
9 | import android.widget.RemoteViews;
10 |
11 | import java.util.Date;
12 |
13 | public class StepCountWidget extends AppWidgetProvider {
14 | @Override
15 | public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
16 | DatabaseHelper dh = null;
17 | try {
18 | dh = new DatabaseHelper(context);
19 | int count = dh.getSteps(new Date().getTime());
20 |
21 | Intent riMain = new Intent(context, SettingsActivity.class);
22 | riMain.putExtra(SettingsFragment.EXTRA_ACTION, SettingsFragment.ACTION_STEPS);
23 | PendingIntent piMain = PendingIntent.getActivity(context, BackgroundService.REQUEST_STEPS, riMain, PendingIntent.FLAG_CANCEL_CURRENT);
24 |
25 | for (int id : appWidgetIds) {
26 | RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.step_widget);
27 | views.setOnClickPendingIntent(R.id.llCount, piMain);
28 | views.setTextViewText(R.id.tvCount, Integer.toString(count));
29 | appWidgetManager.updateAppWidget(id, views);
30 | }
31 | } finally {
32 | if (dh != null)
33 | dh.close();
34 | }
35 | }
36 |
37 | public static void updateWidgets(Context context) {
38 | Intent intent = new Intent(context, StepCountWidget.class);
39 | intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
40 | int ids[] = AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, StepCountWidget.class));
41 | intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
42 | context.sendBroadcast(intent);
43 | }
44 | }
45 |
46 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/StepCounterService.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.annotation.TargetApi;
4 | import android.app.Service;
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.content.SharedPreferences;
8 | import android.hardware.Sensor;
9 | import android.hardware.SensorEvent;
10 | import android.hardware.SensorEventListener;
11 | import android.hardware.SensorManager;
12 | import android.os.Build;
13 | import android.os.IBinder;
14 | import android.preference.PreferenceManager;
15 | import android.util.Log;
16 |
17 | import java.util.Date;
18 |
19 | @TargetApi(Build.VERSION_CODES.KITKAT)
20 | public class StepCounterService extends Service {
21 | private static final String TAG = "BPT2.StepCounterService";
22 |
23 | public StepCounterService() {
24 | }
25 |
26 | private SensorEventListener mStepCounterListener = new SensorEventListener() {
27 | @Override
28 | public void onSensorChanged(SensorEvent sensorEvent) {
29 | int steps = (int) sensorEvent.values[0];
30 | Log.w(TAG, "Step count=" + steps);
31 |
32 | // Check delta
33 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(StepCounterService.this);
34 | int last = prefs.getInt(SettingsFragment.PREF_LAST_STEP_COUNT, -1);
35 | int delta = Integer.parseInt(prefs.getString(SettingsFragment.PREF_STEP_DELTA, SettingsFragment.DEFAULT_STEP_DELTA));
36 | if (last < 0 || steps - last >= delta) {
37 | // Update last step count
38 | prefs.edit().putInt(SettingsFragment.PREF_LAST_STEP_COUNT, steps).apply();
39 |
40 | if (last >= 0) {
41 | // Update total step count
42 | int stepped = steps - last;
43 | new DatabaseHelper(StepCounterService.this).updateSteps(new Date().getTime(), stepped).close();
44 |
45 | // Update UI
46 | StepCountWidget.updateWidgets(StepCounterService.this);
47 |
48 | // Send state changed intent
49 | Intent intent = new Intent(StepCounterService.this, BackgroundService.class);
50 | intent.setAction(BackgroundService.ACTION_STATE_CHANGED);
51 | startService(intent);
52 | }
53 | }
54 | }
55 |
56 | @Override
57 | public void onAccuracyChanged(Sensor sensor, int i) {
58 | // Do nothing
59 | }
60 | };
61 |
62 | @Override
63 | public void onCreate() {
64 | super.onCreate();
65 |
66 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
67 | prefs.edit().remove(SettingsFragment.PREF_LAST_STEP_COUNT).apply();
68 |
69 | SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
70 | Sensor stepCounter = sm.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
71 | if (stepCounter == null)
72 | Log.w(TAG, "No hardware stepcounter available");
73 | else {
74 | Log.w(TAG, "Registering step counter listener");
75 | sm.registerListener(mStepCounterListener, stepCounter, SensorManager.SENSOR_DELAY_NORMAL);
76 | }
77 | }
78 |
79 | @Override
80 | public void onDestroy() {
81 | Log.w(TAG, "Unregistering step counter listener");
82 | SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
83 | sm.unregisterListener(mStepCounterListener);
84 |
85 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
86 | prefs.edit().remove(SettingsFragment.PREF_LAST_STEP_COUNT).apply();
87 |
88 | super.onDestroy();
89 | }
90 |
91 | @Override
92 | public int onStartCommand(Intent intent, int flags, int startId) {
93 | return START_STICKY;
94 | }
95 |
96 | @Override
97 | public IBinder onBind(Intent intent) {
98 | return null;
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/TimezoneChangedReceiver.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.content.SharedPreferences;
7 | import android.preference.PreferenceManager;
8 | import android.util.Log;
9 |
10 | import java.util.Date;
11 |
12 | public class TimezoneChangedReceiver extends BroadcastReceiver {
13 | private static final String TAG = "BPT2.Timezone";
14 |
15 | @Override
16 | public void onReceive(final Context context, Intent intent) {
17 | Log.i(TAG, "Received " + intent);
18 |
19 | Intent intentDaily = new Intent(context, BackgroundService.class);
20 | intentDaily.setAction(BackgroundService.ACTION_DAILY);
21 | context.startService(intentDaily);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/WeatherWidget.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.app.PendingIntent;
4 | import android.appwidget.AppWidgetManager;
5 | import android.appwidget.AppWidgetProvider;
6 | import android.content.ComponentName;
7 | import android.content.Context;
8 | import android.content.Intent;
9 | import android.content.SharedPreferences;
10 | import android.preference.PreferenceManager;
11 | import android.widget.RemoteViews;
12 |
13 | import java.text.DecimalFormat;
14 | import java.text.DecimalFormatSymbols;
15 | import java.util.Date;
16 | import java.util.Locale;
17 |
18 | public class WeatherWidget extends AppWidgetProvider {
19 | private static final DecimalFormat DF = new DecimalFormat("0", new DecimalFormatSymbols(Locale.ROOT));
20 |
21 | @Override
22 | public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
23 | DatabaseHelper dh = null;
24 | try {
25 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
26 | String temperature_unit = prefs.getString(SettingsFragment.PREF_TEMPERATURE, SettingsFragment.DEFAULT_TEMPERATURE);
27 | String report = prefs.getString(SettingsFragment.PREF_LAST_WEATHER_REPORT, null);
28 | Weather weather = (report == null ? null : Weather.deserialize(report));
29 |
30 | Intent riMain = new Intent(context, SettingsActivity.class);
31 | riMain.putExtra(SettingsFragment.EXTRA_ACTION, SettingsFragment.ACTION_WEATHER);
32 | PendingIntent piMain = PendingIntent.getActivity(context, BackgroundService.REQUEST_WAYPOINT, riMain, PendingIntent.FLAG_CANCEL_CURRENT);
33 |
34 | for (int id : appWidgetIds) {
35 | RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.weather_widget);
36 | views.setOnClickPendingIntent(R.id.llWeather, piMain);
37 | if (weather != null && weather.isValid(context)) {
38 | // Show icon
39 | views.setImageViewResource(R.id.ivWeather, BackgroundService.getWeatherIcon(weather, false, context));
40 |
41 | // Show temperature
42 | if (Double.isNaN(weather.temperature))
43 | views.setTextViewText(R.id.tvDegrees, "");
44 | else {
45 | double temperature = weather.temperature;
46 | if ("f".equals(temperature_unit))
47 | temperature = temperature * 9 / 5 + 32;
48 | views.setTextViewText(R.id.tvDegrees, DF.format(temperature) + "°");
49 | }
50 | } else {
51 | views.setImageViewResource(R.id.ivWeather, android.R.drawable.ic_menu_help);
52 | views.setTextViewText(R.id.tvDegrees, "?");
53 | }
54 | appWidgetManager.updateAppWidget(id, views);
55 | }
56 | } finally {
57 | if (dh != null)
58 | dh.close();
59 | }
60 | }
61 |
62 | public static void updateWidgets(Context context) {
63 | Intent intent = new Intent(context, WeatherWidget.class);
64 | intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
65 | int ids[] = AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, WeatherWidget.class));
66 | intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
67 | context.sendBroadcast(intent);
68 | }
69 | }
70 |
71 |
--------------------------------------------------------------------------------
/app/src/main/java/eu/faircode/backpacktrack2/WikiAdapter.java:
--------------------------------------------------------------------------------
1 | package eu.faircode.backpacktrack2;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.location.Location;
6 | import android.net.Uri;
7 | import android.util.Log;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.widget.ArrayAdapter;
12 | import android.widget.ImageView;
13 | import android.widget.TextView;
14 | import android.widget.Toast;
15 |
16 | import java.util.List;
17 |
18 | public class WikiAdapter extends ArrayAdapter {
19 | private static final String TAG = "BPT2.Wiki";
20 |
21 | private Location location;
22 |
23 | public WikiAdapter(Context context, List pages, Location location) {
24 | super(context, 0, pages);
25 | this.location = location;
26 | }
27 |
28 | @Override
29 | public View getView(int position, View convertView, ViewGroup parent) {
30 | final Wikimedia.Page page = getItem(position);
31 | if (convertView == null)
32 | convertView = LayoutInflater.from(getContext()).inflate(R.layout.wiki, parent, false);
33 |
34 | TextView tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
35 | TextView tvDistance = (TextView) convertView.findViewById(R.id.tvDistance);
36 | TextView tvSource = (TextView) convertView.findViewById(R.id.tvSource);
37 | ImageView ivShare = (ImageView) convertView.findViewById(R.id.ivShare);
38 |
39 | tvTitle.setText(page.title);
40 | tvDistance.setText(Math.round(page.location.distanceTo(location)) + " m");
41 | tvSource.setText(Uri.parse(page.baseurl).getHost() + (page.type == null ? "" : "/" + page.type));
42 |
43 | ivShare.setOnClickListener(new View.OnClickListener() {
44 | @Override
45 | public void onClick(View view) {
46 | Util.geoShare(page.location, page.title, getContext());
47 | }
48 | });
49 |
50 | return convertView;
51 | }
52 | }
53 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m10.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m11.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m12.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m13.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m14.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m15.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m16.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m17.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m18.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m19.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m20.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m21.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m22.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m23.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m24.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m25.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m26.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m27.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m28.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m29.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m30.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m31.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m32.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m33.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m34.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m35.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m36.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m37.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m38.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m39.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m40.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_m9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_m9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p0.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p10.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p100.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p101.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p101.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p102.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p102.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p103.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p103.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p104.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p104.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p105.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p105.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p106.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p106.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p107.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p107.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p108.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p108.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p109.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p109.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p11.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p110.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p110.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p111.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p111.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p112.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p113.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p113.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p114.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p115.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p115.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p116.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p116.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p117.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p117.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p118.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p118.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p119.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p119.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p12.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p120.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p13.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p14.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p15.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p16.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p17.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p18.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p19.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p20.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p21.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p22.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p23.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p24.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p25.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p26.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p27.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p28.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p29.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p30.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p31.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p32.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p33.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p34.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p35.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p36.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p37.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p38.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p39.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p40.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p41.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p42.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p43.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p44.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p45.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p46.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p47.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p48.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p49.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p49.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p50.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p51.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p52.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p52.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p53.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p54.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p55.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p56.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p57.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p58.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p59.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p61.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p61.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p62.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p62.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p63.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p63.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p64.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p65.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p65.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p66.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p66.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p67.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p67.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p68.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p68.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p69.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p69.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p70.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p71.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p71.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p72.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p73.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p73.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p74.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p74.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p75.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p76.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p77.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p77.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p78.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p78.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p79.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p79.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p80.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p81.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p81.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p82.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p82.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p83.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p83.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p84.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p84.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p85.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p85.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p86.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p86.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p87.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p88.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p89.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p89.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p90.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p91.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p91.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p92.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p92.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p93.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p93.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p94.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p94.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p95.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p95.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p96.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p97.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p97.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p98.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p98.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/degrees_p99.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-mdpi/degrees_p99.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/backpacker_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/backpacker_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/backpacker_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/backpacker_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/backup_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/backup_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/bike.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/bike.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/car.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/clear_day_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/clear_day_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/clear_day_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/clear_day_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/clear_day_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/clear_day_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/clear_night_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/clear_night_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/clear_night_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/clear_night_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/clear_night_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/clear_night_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/cloud_download_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/cloud_download_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/cloudy_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/cloudy_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/cloudy_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/cloudy_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/cloudy_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/cloudy_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/create_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/create_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/explore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/explore.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/feature_htl_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/feature_htl_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/fog_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/fog_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/fog_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/fog_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/fog_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/fog_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/gpsfixed_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/gpsfixed_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/history_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/history_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/language_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/language_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/link_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/link_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/location_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/location_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/navigation_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/navigation_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/partly_cloudy_day_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/partly_cloudy_day_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/partly_cloudy_day_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/partly_cloudy_day_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/partly_cloudy_day_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/partly_cloudy_day_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/partly_cloudy_night_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/partly_cloudy_night_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/partly_cloudy_night_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/partly_cloudy_night_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/partly_cloudy_night_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/partly_cloudy_night_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/pause.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/person_outline_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/person_outline_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/rain_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/rain_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/rain_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/rain_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/rain_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/rain_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/refresh_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/refresh_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/refresh_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/refresh_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/run.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/send_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/send_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/sleet_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/sleet_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/sleet_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/sleet_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/sleet_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/sleet_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/snow_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/snow_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/snow_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/snow_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/snow_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/snow_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/sunny_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/sunny_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/toc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/toc.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/trending_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/trending_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/trending_up_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/trending_up_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/umbrella_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/umbrella_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/umbrella_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/umbrella_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/walk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/walk.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/walk_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/walk_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/wind_60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/wind_60.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/wind_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/wind_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/wind_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/drawable-xhdpi/wind_white.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
19 |
20 |
23 |
24 |
29 |
30 |
36 |
37 |
38 |
44 |
45 |
51 |
52 |
58 |
59 |
65 |
66 |
72 |
73 |
79 |
80 |
81 |
82 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
20 |
21 |
27 |
28 |
29 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_log.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/duration.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
19 |
20 |
26 |
27 |
33 |
34 |
40 |
41 |
47 |
48 |
54 |
55 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/export.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
18 |
19 |
25 |
26 |
32 |
33 |
39 |
40 |
44 |
45 |
52 |
53 |
59 |
60 |
67 |
68 |
74 |
75 |
76 |
82 |
83 |
87 |
88 |
95 |
96 |
102 |
103 |
110 |
111 |
117 |
118 |
119 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/geoname.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
25 |
26 |
27 |
32 |
33 |
39 |
40 |
49 |
50 |
57 |
58 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/geoname_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
19 |
20 |
27 |
28 |
29 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/location.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
23 |
24 |
32 |
33 |
41 |
42 |
49 |
50 |
58 |
59 |
67 |
68 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/location_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
18 |
19 |
23 |
24 |
29 |
30 |
36 |
37 |
38 |
43 |
44 |
49 |
50 |
59 |
60 |
69 |
70 |
79 |
80 |
89 |
90 |
91 |
96 |
97 |
98 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/log.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/nopermissions.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
19 |
20 |
28 |
29 |
30 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/proximity.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/step.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
19 |
20 |
26 |
27 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/step_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
18 |
19 |
22 |
23 |
30 |
31 |
38 |
39 |
46 |
47 |
48 |
49 |
54 |
55 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/step_widget.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
15 |
16 |
21 |
22 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/title.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
17 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/waypoint.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
22 |
23 |
30 |
31 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/waypoint_add.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/waypoint_editor.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
19 |
20 |
27 |
28 |
35 |
36 |
37 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/weather.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
19 |
20 |
26 |
27 |
33 |
34 |
40 |
41 |
47 |
48 |
55 |
56 |
62 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/weather_widget.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
15 |
16 |
22 |
23 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/wiki.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
21 |
22 |
27 |
28 |
32 |
33 |
39 |
40 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/wiki_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/location.xml:
--------------------------------------------------------------------------------
1 |
2 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/step.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/waypoint.xml:
--------------------------------------------------------------------------------
1 |
2 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/weather.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-de/api.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Dark Sky
5 |
6 |
7 |
8 | - fio
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/precipitation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - mm
5 | - Zoll
6 |
7 |
8 |
9 | - mm
10 | - in
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/pressure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - hPa/mbar
5 | - mmHg
6 |
7 |
8 |
9 | - hpa
10 | - mmhg
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/temperature.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - °C
5 | - °F
6 |
7 |
8 |
9 | - c
10 | - f
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/weather.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Temperatur/feuchtigkeit
5 | - Niederschlag
6 | - Wind
7 | - Luftdruck
8 | - Wolken
9 | - Sichtweite
10 | - Ozone
11 |
12 |
13 |
14 | - temperature
15 | - rain_1h
16 | - wind_speed
17 | - pressure
18 | - clouds
19 | - visibility
20 | - ozone
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de/windspeed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Beaufort
5 | - m/s
6 | - km/h
7 |
8 |
9 |
10 | - bft
11 | - ms
12 | - kmh
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/api.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Dark Sky
5 |
6 |
7 |
8 | - fio
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/precipitation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - mm
5 | - inch
6 |
7 |
8 |
9 | - mm
10 | - in
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/pressure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - hPa/mbar
5 | - mmHg
6 |
7 |
8 |
9 | - hpa
10 | - mmhg
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/temperature.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - °C
5 | - °F
6 |
7 |
8 |
9 | - c
10 | - f
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/weather.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Temperatuur/vochtigheid
5 | - Neerslag
6 | - Wind
7 | - Luchtdruk
8 | - Wolken
9 | - Zicht
10 | - Ozon
11 |
12 |
13 |
14 | - temperature
15 | - rain_1h
16 | - wind_speed
17 | - pressure
18 | - clouds
19 | - visibility
20 | - ozone
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl/windspeed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Beaufort
5 | - m/s
6 | - km/h
7 |
8 |
9 |
10 | - bft
11 | - ms
12 | - kmh
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/values/api.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Dark Sky
5 |
6 |
7 |
8 | - fio
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #4DB6AC
4 | #00897B
5 | #7f000000
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/play.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 0
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/precipitation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - mm
5 | - inch
6 |
7 |
8 |
9 | - mm
10 | - in
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/pressure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - hPa/mbar
5 | - mmHg
6 |
7 |
8 |
9 | - hpa
10 | - mmhg
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/temperature.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - °C
5 | - °F
6 |
7 |
8 |
9 | - c
10 | - f
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/weather.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Temperature/humidity
5 | - Precipitation
6 | - Wind
7 | - Pressure
8 | - Clouds
9 | - Visibility
10 | - Ozone
11 |
12 |
13 |
14 | - temperature
15 | - rain_1h
16 | - wind_speed
17 | - pressure
18 | - clouds
19 | - visibility
20 | - ozone
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values/windspeed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Beaufort
5 | - m/s
6 | - km/h
7 |
8 |
9 |
10 | - bft
11 | - ms
12 | - kmh
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/step_widget_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/weather_widget_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:2.3.2'
9 | classpath 'com.google.gms:google-services:3.0.0'
10 | // https://bintray.com/android/android-tools/com.google.gms.google-services/
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | jcenter()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Mar 17 12:30:26 CET 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/play-function.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/play-function.png
--------------------------------------------------------------------------------
/play-function.xcf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/play-function.xcf
--------------------------------------------------------------------------------
/screenshot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot1.png
--------------------------------------------------------------------------------
/screenshot1_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot1_scaled.png
--------------------------------------------------------------------------------
/screenshot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot2.png
--------------------------------------------------------------------------------
/screenshot2_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot2_scaled.png
--------------------------------------------------------------------------------
/screenshot3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot3.png
--------------------------------------------------------------------------------
/screenshot3_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot3_scaled.png
--------------------------------------------------------------------------------
/screenshot4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot4.png
--------------------------------------------------------------------------------
/screenshot4_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot4_scaled.png
--------------------------------------------------------------------------------
/screenshot5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot5.png
--------------------------------------------------------------------------------
/screenshot5_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot5_scaled.png
--------------------------------------------------------------------------------
/screenshot6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot6.png
--------------------------------------------------------------------------------
/screenshot6_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot6_scaled.png
--------------------------------------------------------------------------------
/screenshot7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot7.png
--------------------------------------------------------------------------------
/screenshot7_scaled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/M66B/BackPackTrackII/24a21bab7c188f666e32e91353fc79c039d750be/screenshot7_scaled.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/wordpress/bpt.php:
--------------------------------------------------------------------------------
1 | escape($args[1]);
48 | $password = $wpdb->escape($args[2]);
49 | $data = $args[3];
50 |
51 | $name = sanitize_file_name($data['name']);
52 | $type = $data['type'];
53 | $bits = $data['bits'];
54 |
55 | logIO('O', 'bpt.upload ' . $name . ' ' . strlen($bits) . ' bytes');
56 |
57 | // Check credentials
58 | if (!$user = $wp_xmlrpc_server->login($username, $password)) {
59 | logIO('O', 'bpt.upload invalid login');
60 | return $wp_xmlrpc_server->error;
61 | }
62 |
63 | do_action('xmlrpc_call', 'metaWeblog.newMediaObject');
64 |
65 | // Check user capabilities
66 | if (!current_user_can('upload_files')) {
67 | logIO('O', 'bpt.upload no capability');
68 | return new IXR_Error(401, __('You are not allowed to upload files to this site.'));
69 | }
70 |
71 | if ($error = apply_filters('pre_upload_error', false))
72 | return new IXR_Error(500, $error);
73 |
74 | // Find post
75 | $attached = $wpdb->get_row(
76 | "SELECT ID, post_parent FROM {$wpdb->posts}" .
77 | " WHERE post_title = '{$name}'" .
78 | " AND post_type = 'attachment'");
79 | if (empty($attached)) {
80 | get_currentuserinfo();
81 | global $user_ID;
82 | $upload_dir = wp_upload_dir();
83 | // Create new draft post
84 | $post_data = array(
85 | 'post_title' => basename($name, '.gpx'),
86 | 'post_content' => '' . $name . '',
87 | 'post_status' => 'draft',
88 | 'post_author' => $user_ID
89 | );
90 | $post_ID = wp_insert_post($post_data);
91 | logIO('O', 'bpt.upload post=' . $post_ID);
92 | }
93 | else {
94 | $post_ID = $attached->post_parent;
95 | wp_delete_attachment($attached->ID);
96 | logIO('O', 'bpt.upload deleted attachment id=' . $attached->ID . ' post=' . $post_ID);
97 | }
98 |
99 | // Save file
100 | $upload = wp_upload_bits($name, NULL, $bits);
101 | if (!empty($upload['error'])) {
102 | $error = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
103 | logIO('O', 'bpt.upload ' . $error);
104 | return new IXR_Error(500, $error);
105 | }
106 |
107 | // Attach file
108 | $attachment = array(
109 | 'post_title' => $name,
110 | 'post_content' => '',
111 | 'post_type' => 'attachment',
112 | 'post_parent' => $post_ID,
113 | 'post_mime_type' => $type,
114 | 'guid' => $upload['url']
115 | );
116 | $id = wp_insert_attachment($attachment, $upload['file'], $post_ID);
117 | wp_update_attachment_metadata($id, wp_generate_attachment_metadata($id, $upload['file']));
118 |
119 | logIO('O', 'bpt.upload attachment=' . $id);
120 |
121 | // Handle upload
122 | return apply_filters('wp_handle_upload', array('file' => $name, 'url' => $upload['url'], 'type' => $type), 'upload');
123 | }
124 | catch (Exception $e) {
125 | // What?
126 | logIO('O', 'bpt.upload exception' . $e->getMessage());
127 | return new IXR_Error(500, $e->getMessage());
128 | }
129 | }
130 |
131 | function bpt_upload_mimes($mimes) {
132 | $mimes['gpx'] = 'text/xml';
133 | return $mimes;
134 | }
135 |
136 | ?>
137 |
--------------------------------------------------------------------------------
/wordpress/readme.txt:
--------------------------------------------------------------------------------
1 | === BackPackTrack for Android ===
2 | Contributors: Marcel Bokhorst, M66B
3 | Tags: Android, track, trackpoint, waypoint, geocode, travel, journey, GPX
4 | Requires at least: 3.1
5 | Tested up to: 4.3
6 | Stable tag: 0.8
7 |
8 | WordPress plugin and open source Android application to track your journeys
9 |
10 | == Description ==
11 |
12 | Companion plugin for the Android application [BackPackTrack II](https://play.google.com/store/apps/details?id=eu.faircode.backpacktrack2)
13 |
14 | == Installation ==
15 |
16 | After intstalling the plugin:
17 |
18 | 1. Enable XML-RPC (WordPress menu > Settings > Writing > Remote Publishing > XML-RPC > Check and Save Changes)
19 | 1. Install and setup the [Android application](https://github.com/M66B/BackPackTrackII "Android application")
20 | 1. Install and setup a plugin to display GPX files
21 |
22 | To be able to upload GPX files, you should fill in your weblog address (URL), your user name and password into the Android application.
23 |
24 | == Changelog ==
25 |
26 | = 0.8 =
27 | * Completely rewritten Android application
28 |
29 | = 0.6 =
30 | * Improvement: using alarm manager instead of wakelocks to save battery
31 |
32 | = 0.5.1 =
33 | * Fixed internal storage location
34 |
35 | = 0.5 =
36 | * New feature: auto update GPX file (option)
37 |
38 | = 0.4.1 =
39 | * New feature: vibrate after creating new waypoint
40 |
41 | = 0.4 =
42 | * Improvement: Android: acquiring partial wake lock
43 | * Improvement: Android: more source code documentation
44 | * Improvement: Android: list newest waypoint first
45 |
46 | = 0.3 =
47 | * Improvement: added option to write GPX file to external storage
48 |
49 | = 0.2 =
50 | * Bugfix: define gpx mime type as text/xml
51 |
52 | = 0.1 =
53 | * First public release
54 |
55 | = 0.0 =
56 | * Development version
57 |
58 | == Upgrade Notice ==
59 |
60 | = 0.8 =
61 | Rewritten Android application
62 |
63 | = 0.6 =
64 | One improvement
65 |
66 | = 0.5.1 =
67 | One bugfix
68 |
69 | = 0.5 =
70 | One new features
71 |
72 | = 0.4.1 =
73 | One new feature
74 |
75 | = 0.4 =
76 | Three improvements
77 |
78 | = 0.3 =
79 | One improvement
80 |
81 | = 0.2 =
82 | One bugfix
83 |
84 | = 0.1 =
85 | First public release
86 |
87 | = 0.0 =
88 | Development version
89 |
--------------------------------------------------------------------------------