Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion gpslogger/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,11 @@ dependencies {
//CSV library
implementation('org.apache.commons:commons-csv:1.9.0')

//Libraries required for unit testing
//QR-Code scanner
implementation("com.journeyapps:zxing-android-embedded:4.3.0")
implementation("com.google.zxing:core:3.5.4")

//Libraries required for unit testing
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:3.10.0'
testImplementation 'org.json:json:20180813'
Expand Down
7 changes: 7 additions & 0 deletions gpslogger/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
android:installLocation="auto">

<!-- Satellite and network location services -->
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
Expand Down Expand Up @@ -31,6 +32,11 @@

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<!-- Used for DaWarIch QR-Code scanning. -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHER" android:required="false" />



<application
android:allowBackup="true"
Expand All @@ -41,6 +47,7 @@
android:usesCleartextTraffic="true"
android:enableOnBackInvokedCallback="true"
android:requestLegacyExternalStorage="true"
android:hardwareAccelerated="true"
>


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,16 +127,6 @@ public class PreferenceNames {
public static final String GPSLOGGER_FOLDER = "gpslogger_folder";
public static final String PREFIX_SERIAL_TO_FILENAME = "new_file_prefix_serial";

public static final String AUTOSEND_DAWARICH_ENABLED = "dawarich_enabled";
public static final String DAWARICH_BASE_URL = "dawarich_server";
public static final String DAWARICH_APIKEY = "dawarich_apikey";
public static final String DAWARICH_DEVICE_ID = "dawarich_device_id";
public static final String DAWARICH_DISCARD_LOG_WHEN_OFFLINE = "dawarich_discard_offline_logs";
public static final String DAWARICH_FILE_PATH = "dawarich_persistence_file_path";
public static final String LOG_TO_DAWARICH = "dawarich_enable_logging";
public static final String DAWARICH_BATCH_MIN = "dawarich_bulk_min";
public static final String DAWARICH_BATCH_MAX = "dawarich_bulk_max";

public static final String ALTITUDE_SUBTRACT_OFFSET = "altitude_subtractoffset";
public static final String ALTITUDE_SHOULD_ADJUST = "altitude_subtractgeoidheight";
public static final String AUTOSEND_WIFI_ONLY = "autosend_wifionly";
Expand All @@ -150,6 +140,19 @@ public class PreferenceNames {
public static final String APP_THEME_SETTING = "app_theme_setting";
public static final String LOGGING_WRITE_TIME_WITH_OFFSET = "file_logging_write_time_with_offset";

//region Dawarich
public static final String AUTOSEND_DAWARICH_ENABLED = "dawarich_enabled";
public static final String DAWARICH_BASE_URL = "dawarich_server";
public static final String DAWARICH_APIKEY = "dawarich_apikey";
public static final String DAWARICH_DEVICE_ID = "dawarich_device_id";
public static final String DAWARICH_DISCARD_LOG_WHEN_OFFLINE = "dawarich_discard_offline_logs";
public static final String DAWARICH_FILE_PATH = "dawarich_persistence_file_path";
public static final String LOG_TO_DAWARICH = "dawarich_enable_logging";
public static final String DAWARICH_BATCH_MIN = "dawarich_bulk_min";
public static final String DAWARICH_BATCH_MAX = "dawarich_bulk_max";
public static final String DAWARICH_QR_BUTTON = "dawarich_qr_button";
//endrecgion



public static enum DegreesDisplayFormat {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,17 @@
import android.os.Environment;
import android.provider.Settings;
import android.text.InputType;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import com.codekidlabs.storagechooser.StorageChooser;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
import com.google.zxing.BarcodeFormat;
import com.mendhak.gpslogger.BuildConfig;
import com.mendhak.gpslogger.R;
import com.mendhak.gpslogger.common.PreferenceHelper;
Expand All @@ -49,12 +55,18 @@
import eltos.simpledialogfragment.form.SimpleFormDialog;
import org.slf4j.Logger;

import com.journeyapps.barcodescanner.ScanContract;
import com.journeyapps.barcodescanner.ScanIntentResult;
import com.journeyapps.barcodescanner.ScanOptions;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.MessageFormat;
import java.util.Objects;

import static androidx.activity.result.ActivityResultCallerKt.registerForActivityResult;


public class DawarichFragment extends PreferenceFragmentCompat implements
SimpleDialog.OnDialogResultListener,
Expand Down Expand Up @@ -87,6 +99,8 @@ public void onCreate(Bundle savedInstanceState) {

findPreference(PreferenceNames.LOG_TO_DAWARICH).setOnPreferenceChangeListener(this);

findPreference(PreferenceNames.DAWARICH_QR_BUTTON).setOnPreferenceClickListener(this);


}

Expand Down Expand Up @@ -180,7 +194,14 @@ public boolean onPreferenceClick(Preference preference) {
return true;
}


if(preference.getKey().equalsIgnoreCase(PreferenceNames.DAWARICH_QR_BUTTON)){
ScanOptions options = new ScanOptions();
options.setDesiredBarcodeFormats(ScanOptions.QR_CODE);
options.setPrompt(getContext().getString(R.string.dawarich_qr_prompt));
options.setBarcodeImageEnabled(false);
options.setOrientationLocked(false);
readDawarichQR.launch(options);
}

return false;
}
Expand Down Expand Up @@ -272,4 +293,26 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {

return false;
}
}

private final ActivityResultLauncher<ScanOptions> readDawarichQR = registerForActivityResult(new ScanContract(),
result -> {
if (result.getContents() == null) {
Toast.makeText(getContext(), R.string.cancelled, Toast.LENGTH_LONG).show();
} else {
Gson gson = new Gson();
try {
JsonObject data = gson.fromJson(result.getContents(), JsonObject.class);
String url = data.get("server_url").getAsString().replaceAll("/+$", "");
String apikey = data.get("api_key").getAsString();
assert !Strings.isNullOrEmpty(url);
assert !Strings.isNullOrEmpty(apikey);
preferenceHelper.setDawarichApikey(apikey);
preferenceHelper.setDawarichBaseUrl(url);
findPreference(PreferenceNames.DAWARICH_BASE_URL).setSummary(url);

} catch (Exception e) {
Toast.makeText(getContext(), R.string.dawarich_qr_not_valid, Toast.LENGTH_LONG).show();
}
}
});
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions gpslogger/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -537,4 +537,7 @@
<string name="dawarich_baseUrl_not_set_msg">Please set the Dawarich base-URL and try again</string>
<string name="dawarich_apiKey_not_set_title">API-key not set</string>
<string name="dawarich_apiKey_not_set_msg">Please set the Dawarich API-key and try again</string>
<string name="dawarich_qr_not_valid">Not a valid Dawarich QR-Code</string>
<string name="cancelled">Cancelled</string>
<string name="dawarich_qr_prompt">Scan the QR-Code provided by Dawarich</string>
</resources>
6 changes: 6 additions & 0 deletions gpslogger/src/main/res/xml/dawarichsettings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
android:summary="@string/log_dawarich_discard_offline_locations_summary"
app:iconSpaceReserved="false" />

<Preference
android:key="dawarich_qr_button"
android:title="Read Dawarich QR-Code"
android:summary="Uses the QR-Code from Dawarich to fill base URL and API-key"
android:icon="@drawable/dawarich_qr" />

<Preference
android:key="dawarich_server"
android:singleLine="true"
Expand Down
Loading