mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-11-09 09:18:52 +01:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 648c106f7f | |||
| bb86ab927c | |||
| 9150318ef9 | |||
| b98a0a0283 | |||
| 71f1049642 | |||
| 6185154af9 |
+3
-3
@@ -6,7 +6,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:8.9.1'
|
||||
classpath 'com.android.tools.build:gradle:8.9.2'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,8 +46,8 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId 'de.dennisguse.opentracks'
|
||||
versionCode 6102
|
||||
versionName "v4.19.0"
|
||||
versionCode 6124
|
||||
versionName "v4.19.2"
|
||||
|
||||
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
v4.19.1: OpenTracks
|
||||
|
||||
Bugfix:
|
||||
- Exported GPX files missed one schemaLocation
|
||||
@@ -0,0 +1,5 @@
|
||||
v4.19.2: OpenTracks
|
||||
|
||||
Bugfix:
|
||||
- Fix crash due to faulty translations
|
||||
|
||||
-44
@@ -1,44 +0,0 @@
|
||||
package de.dennisguse.opentracks.io.file.exporter;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
|
||||
public class FITv2TrackExporterTest {
|
||||
|
||||
private final byte FIT_PROTOCOL_VERSION = 2 << 4 + 0;
|
||||
private final short FIT_PROFILE_VERSION = 21 * 1000 + 158;
|
||||
|
||||
private long checksum;
|
||||
private final byte FILE_HEADER_SIZE = 14;
|
||||
|
||||
@Test
|
||||
public void run() {
|
||||
ByteBuffer littleEndian = ByteBuffer
|
||||
.allocate(FILE_HEADER_SIZE)
|
||||
.order(ByteOrder.LITTLE_ENDIAN);
|
||||
|
||||
littleEndian.put(0, FILE_HEADER_SIZE);
|
||||
littleEndian.put(1, FIT_PROTOCOL_VERSION);
|
||||
|
||||
// Profile version: 1513
|
||||
littleEndian.putShort(2, FIT_PROFILE_VERSION);
|
||||
|
||||
// Data size: 32bit
|
||||
littleEndian.putInt(4, 0); // We do not calculate the data size.
|
||||
|
||||
// .FIT
|
||||
littleEndian.putChar(8, '.');
|
||||
littleEndian.putChar(9, 'F');
|
||||
littleEndian.putChar(10, 'I');
|
||||
littleEndian.putChar(11, 'T');
|
||||
|
||||
// CRC (not implemented)
|
||||
littleEndian.put(12, (byte) 0);
|
||||
littleEndian.put(13, (byte) 0);
|
||||
|
||||
var a = littleEndian.array();
|
||||
littleEndian.array();
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
package de.dennisguse.opentracks.io.file.exporter;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.channels.WritableByteChannel;
|
||||
import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.data.models.Track;
|
||||
|
||||
/**
|
||||
* FIT v2.0
|
||||
* https://developer.garmin.com/fit/
|
||||
* <p>
|
||||
* Encoding is little endian.
|
||||
*/
|
||||
public class FITv2TrackExporter implements TrackExporter {
|
||||
|
||||
private final byte FIT_PROTOCOL_VERSION = 2 << 4 + 0;
|
||||
private final short FIT_PROFILE_VERSION = 21 * 1000 + 158;
|
||||
|
||||
private long checksum;
|
||||
private final byte FILE_HEADER_SIZE = 14;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean writeTrack(List<Track> tracks, @NonNull OutputStream outputStream) {
|
||||
WritableByteChannel channel = Channels.newChannel(outputStream);
|
||||
|
||||
writeFileHeader(channel);
|
||||
// writeFileId(channel);
|
||||
writeFooter(channel);
|
||||
return false;
|
||||
}
|
||||
|
||||
// https://developer.garmin.com/fit/protocol/
|
||||
@VisibleForTesting
|
||||
void writeFileHeader(@NonNull WritableByteChannel channel) {
|
||||
ByteBuffer littleEndian = ByteBuffer
|
||||
.allocate(FILE_HEADER_SIZE)
|
||||
.order(ByteOrder.LITTLE_ENDIAN);
|
||||
|
||||
littleEndian.put(0, FILE_HEADER_SIZE);
|
||||
littleEndian.put(1, FIT_PROTOCOL_VERSION);
|
||||
|
||||
// Profile version
|
||||
littleEndian.putShort(2, FIT_PROFILE_VERSION);
|
||||
|
||||
// Data size: 32bit
|
||||
littleEndian.putInt(4, 0); // We do not calculate the data size.
|
||||
|
||||
// .FIT
|
||||
littleEndian.putChar(8, '.');
|
||||
littleEndian.putChar(9, 'F');
|
||||
littleEndian.putChar(10, 'I');
|
||||
littleEndian.putChar(11, 'T');
|
||||
|
||||
// CRC (not implemented)
|
||||
littleEndian.put(12, (byte) 0);
|
||||
littleEndian.put(13, (byte) 0);
|
||||
|
||||
var a = littleEndian.array();
|
||||
littleEndian.array();
|
||||
}
|
||||
|
||||
|
||||
private void writeFooter(@NonNull WritableByteChannel channel) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -637,7 +637,7 @@ Meldet das GPS-Gerät ungenaue Daten (z.B. Standort, Geschwindigkeit, Höhe), ka
|
||||
<string name="settings_announcements_unit">Distanz/Geschwindigkeits Einheit</string>
|
||||
<string name="power_x_watt">Leistung {x, plural, =1 {1 Watt} other {# Watt} }</string>
|
||||
<string name="power">Leistung</string>
|
||||
<string name="voiceDistance">{n, plural, =1 {1 } anderes {{n,number,#.0}} }</string>
|
||||
<string name="voiceDistance">{n, plural, =1 {1 } other {{n,number,#.0}} }</string>
|
||||
<string name="settings_recording_min_sampling_interval_title">Abtastzeitintervall</string>
|
||||
<string name="voiceIdle">Untätig werden.</string>
|
||||
<string name="voice_announce_lap_power_key">StimmeAnkündigungLapPower</string>
|
||||
|
||||
@@ -657,11 +657,11 @@ Si le dispositif GPS signale des données inexactes (par exemple, la localisatio
|
||||
<string name="permission_recording_failed">OpenTracks a besoin de la permission d\'accéder à votre localisation ainsi qu\'aux appareils à proximité.</string>
|
||||
<string name="create_marker_error">Impossible de créer un marqueur. Veuillez réessayer.</string>
|
||||
<string name="power">Puissance</string>
|
||||
<string name="power_x_watt">Puissance {x, plural, =1 {1 watt} autres {# watt} }</string>
|
||||
<string name="power_x_watt">Puissance {x, plural, =1 {1 watt} other {# watt} }</string>
|
||||
<string name="settings_announcements_lap_power">Puissance par tour</string>
|
||||
<string name="activity_type_kickscooter">trottinette</string>
|
||||
<string name="voiceSpeed">{n, plural, =1 {1} autres {{n,number,#.0}} }</string>
|
||||
<string name="voiceDistance">{n, plural, =1 {1 } autres {{n,number,#.0}} }</string>
|
||||
<string name="voiceSpeed">{n, plural, =1 {1} other {{n,number,#.0}} }</string>
|
||||
<string name="voiceDistance">{n, plural, =1 {1 } other {{n,number,#.0}} }</string>
|
||||
<string name="settings_locale_system_default">Paramètres par défaut du système</string>
|
||||
<string name="settings_locale_title">Langue</string>
|
||||
<string name="stats_gain_loss">Gain et perte</string>
|
||||
|
||||
@@ -507,11 +507,11 @@
|
||||
<string name="settings_announcements_unit">Aonad faid/luas</string>
|
||||
<string name="value_internal_sensor">Braiteoir inmheánach</string>
|
||||
<string name="voiceIdle">Ag éirí díomhaoin.</string>
|
||||
<string name="voiceSecondsPlural">{n, iolra, =1 {1 soicind} eile {{ n,uimhir} soicind} }</string>
|
||||
<string name="voiceSpeedKilometersPerHourPlural">{n, iolra, =1 {1 chiliméadar in aghaidh na huaire} eile {{ n,uimhir, #.0} ciliméadar san uair} }</string>
|
||||
<string name="voiceSpeedMKnotsPlural">{n, iolra, =1 {1 snaidhm} eile {{ n,uimhir, #.0} snaidhm} }</string>
|
||||
<string name="voiceDistanceNauticalMilesPlural">{n, iolra, =1 {1 mhuirmhíle} eile {{ n,uimhir, #.0} muirmhíle} }</string>
|
||||
<string name="voiceDistance">{n, iolra, =1 {1 } eile {{ n,uimhir, #.0}} }</string>
|
||||
<string name="voiceSecondsPlural">{n, plural, =1 {1 soicind} other {{ n,number} soicind} }</string>
|
||||
<string name="voiceSpeedKilometersPerHourPlural">{n, plural, =1 {1 chiliméadar in aghaidh na huaire} other {{ n,number, #.0} ciliméadar san uair} }</string>
|
||||
<string name="voiceSpeedMKnotsPlural">{n, plural, =1 {1 snaidhm} other {{ n,number, #.0} snaidhm} }</string>
|
||||
<string name="voiceDistanceNauticalMilesPlural">{n, plural, =1 {1 mhuirmhíle} other {{ n,number, #.0} muirmhíle} }</string>
|
||||
<string name="voiceDistance">{n, plural, =1 {1 } other {{ n,number, #.0}} }</string>
|
||||
<string name="settings_recording_min_sampling_interval_title">Eatramh ama samplála</string>
|
||||
<string name="sensor_state_cadence_unit">rpm</string>
|
||||
<string name="sensor_state_heart_rate_unit">bpm</string>
|
||||
@@ -527,20 +527,20 @@
|
||||
<string name="settings_api_summary">Cianrialú agus staitisticí API le haghaidh aipeanna eile</string>
|
||||
<string name="create_marker_error">Ní féidir marcóir a chruthú. Déan iarracht arís.</string>
|
||||
<string name="sensor_state_power_unit">W</string>
|
||||
<string name="voiceMinutesPlural">{n, iolra, =1 {1 nóiméad} eile {{ n,uimhir} nóiméad} }</string>
|
||||
<string name="voiceDistanceKilometersPlural">{n, iolra, =1 {1 chiliméadar} eile {{ n,uimhir, #.0} ciliméadar} }</string>
|
||||
<string name="voiceMinutesPlural">{n, plural, =1 {1 nóiméad} other {{ n,number} nóiméad} }</string>
|
||||
<string name="voiceDistanceKilometersPlural">{n, plural, =1 {1 chiliméadar} other {{ n,number, #.0} ciliméadar} }</string>
|
||||
<string name="sensor_state_power_max">Cumhacht Max</string>
|
||||
<string name="bluetooth_sensor_summary">%1$s (%2$s)</string>
|
||||
<string name="voiceHoursPlural">{n, iolra, =1 {1 uair} eile {{ n,uimhir} uair an chloig} }</string>
|
||||
<string name="voiceDistanceMilesPlural">{n, iolra, =1 {1 mhíle} eile {{ n,uimhir, #.0} míle} }</string>
|
||||
<string name="voiceHoursPlural">{n, plural, =1 {1 uair} other {{ n,number} uair an chloig} }</string>
|
||||
<string name="voiceDistanceMilesPlural">{n, plural, =1 {1 mhíle} other {{ n,number, #.0} míle} }</string>
|
||||
<string name="no_compatible_camera_installed">Níl feidhmchlár ceamara comhoiriúnach suiteáilte</string>
|
||||
<string name="voiceSpeedMilesPerHourPlural">{n, iolra, =1 {1 mhíle san uair} eile {{ n,uimhir, #.0} míle san uair} }</string>
|
||||
<string name="voiceSpeed">{n, iolra, =1 {1} eile {{ n,uimhir, #.0}} }</string>
|
||||
<string name="voiceSpeedMilesPerHourPlural">{n, plural, =1 {1 mhíle san uair} other {{ n,number, #.0} míle san uair} }</string>
|
||||
<string name="voiceSpeed">{n, plural, =1 {1} other {{ n,number, #.0}} }</string>
|
||||
<string name="voice_on_device_speaker_title">Úsáid cainteoir an ghléis</string>
|
||||
<string name="no_compatible_gallery_installed">Níl feidhmchlár gailearaí íomhá comhoiriúnach suiteáilte</string>
|
||||
<string name="settings_recording_location_distance_summary">%1$s idir suíomhanna taifeadta</string>
|
||||
<string name="settings_announcements_lap_power">Cumhacht glúine</string>
|
||||
<string name="power_x_watt">Cumhacht {x, iolra, = 1 {1 vata} eile {# vata} }</string>
|
||||
<string name="power_x_watt">Cumhacht {x, plural, = 1 {1 vata} other {# vata} }</string>
|
||||
<string name="empty">" "</string>
|
||||
<string name="settings_locale_system_default">Réamhshocrú córais</string>
|
||||
<string name="settings_locale_title">Teanga</string>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<string name="settings_recording_location_distance_summary">பதிவுசெய்யப்பட்ட இடங்களுக்கு இடையில் %1$s</string>
|
||||
<string name="voice_announce_lap_power_key">VoiceAnnouncelappower</string>
|
||||
<string name="settings_announcements_lap_power">மடியில் ஆற்றல்</string>
|
||||
<string name="power_x_watt">ஆற்றல் {x, பன்மை, = 1 {1 watt} பிற {# வாட்ச்}}</string>
|
||||
<string name="power_x_watt">ஆற்றல் {x, plural, = 1 {1 watt} other {# வாட்ச்}}</string>
|
||||
<string name="power">விசை</string>
|
||||
<string name="help_feature_content">* சி.பி.எச் தடங்களை உருவாக்கவும்\n * இதய துடிப்பு சென்சார் பயன்படுத்தவும் (புளூடூத் லு மட்டும்)\n * குரல் அறிவிப்புகள் (நேரம் அல்லது தூரத்தின் அடிப்படையில்)\n * குறிப்பான்களை உருவாக்கு (படங்கள் உள்ளிட்டவை)\n * முற்றிலும் ஆஃப்லைனில் வேலை செய்கிறது\n * வரைபடத்தில் தடங்களைக் காண்பி (கீழே காண்க)</string>
|
||||
<string name="help_track_map_title">வரைபடத்தில் ஒரு பாதையை எவ்வாறு காண்பிப்பது?</string>
|
||||
@@ -411,13 +411,13 @@
|
||||
<string name="value_smallest_recommended">சிறியது (பரிந்துரைக்கப்படுகிறது)</string>
|
||||
<string name="value_int_seconds">%1$d கள் (பரிந்துரைக்கப்படுகிறது)</string>
|
||||
<string name="voiceIdle">சும்மா ஆக.</string>
|
||||
<string name="voiceHoursPlural">{n, பன்மை, = 1 {1 hour} பிற {{n, எண்} மணிநேரம்}}</string>
|
||||
<string name="voiceMinutesPlural">{n, பன்மை, = 1 {1 minute} பிற {{n, எண்} நிமிடங்கள்}}</string>
|
||||
<string name="voiceSecondsPlural">{n, பன்மை, = 1 {1 second} பிற {{n, எண்} விநாடிகள்}}</string>
|
||||
<string name="voiceSpeedKilometersPerHourPlural">{n, பன்மை, = 1 {1 kilometer per hour} பிற {{n, எண்,#. 0} ஒரு மணி நேரத்திற்கு கிலோமீட்டர்}}</string>
|
||||
<string name="voiceSpeedMKnotsPlural">{n, பன்மை, = 1 {1 knot} பிற {{n, எண்,#. 0} முடிச்சுகள்}}</string>
|
||||
<string name="voiceSpeedMilesPerHourPlural">{n, பன்மை, = 1 {1 mile per hour} பிற {{n, எண்,#. 0} ஒரு மணி நேரத்திற்கு மைல்கள்}}</string>
|
||||
<string name="voiceSpeed">{n, பன்மை, = 1 {1} பிற {{n, எண்,#. 0}}}</string>
|
||||
<string name="voiceHoursPlural">{n, plural, = 1 {1 hour} other {{n,number} மணிநேரம்}}</string>
|
||||
<string name="voiceMinutesPlural">{n, plural, = 1 {1 minute} other {{n,number} நிமிடங்கள்}}</string>
|
||||
<string name="voiceSecondsPlural">{n, plural, = 1 {1 second} other {{n,number} விநாடிகள்}}</string>
|
||||
<string name="voiceSpeedKilometersPerHourPlural">{n, plural, = 1 {1 kilometer per hour} other {{n,number,#. 0} ஒரு மணி நேரத்திற்கு கிலோமீட்டர்}}</string>
|
||||
<string name="voiceSpeedMKnotsPlural">{n, plural, = 1 {1 knot} other {{n,number,#. 0} முடிச்சுகள்}}</string>
|
||||
<string name="voiceSpeedMilesPerHourPlural">{n, plural, = 1 {1 mile per hour} other {{n,number,#. 0} ஒரு மணி நேரத்திற்கு மைல்கள்}}</string>
|
||||
<string name="voiceSpeed">{n, plural, = 1 {1} other {{n,number,#. 0}}}</string>
|
||||
<string name="voice_on_device_speaker_title">சாதனத்தின் ச்பீக்கரைப் பயன்படுத்தவும்</string>
|
||||
<string name="voice_per_kilometer">ஒரு கிலோமீட்டருக்கு</string>
|
||||
<string name="voice_per_nautical_mile">ஒரு கடல் மைலுக்கு</string>
|
||||
@@ -426,10 +426,10 @@
|
||||
<string name="lap_speed">மடியில் விரைவு</string>
|
||||
<string name="speed">சராசரி நகரும் விரைவு</string>
|
||||
<string name="total_distance">மொத்த தூரம்</string>
|
||||
<string name="voiceDistanceKilometersPlural">{n, பன்மை, = 1 {1 kilometer} பிற {{n, எண்,#. 0} கிலோமீட்டர்}}</string>
|
||||
<string name="voiceDistanceMilesPlural">{n, பன்மை, = 1 {1 mile} பிற {{n, எண்,#. 0} மைல்கள்}}</string>
|
||||
<string name="voiceDistanceNauticalMilesPlural">{n, பன்மை, = 1 {1 nautical mile} பிற {{n, எண்,#. 0} கடல் மைல்கள்}}</string>
|
||||
<string name="voiceDistance">{n, பன்மை, = 1 {1 } பிற {{n, எண்,#. 0}}}</string>
|
||||
<string name="voiceDistanceKilometersPlural">{n, plural, = 1 {1 kilometer} other {{n,number,#. 0} கிலோமீட்டர்}}</string>
|
||||
<string name="voiceDistanceMilesPlural">{n, plural, = 1 {1 mile} other {{n,number,#. 0} மைல்கள்}}</string>
|
||||
<string name="voiceDistanceNauticalMilesPlural">{n, plural, = 1 {1 nautical mile} other {{n,number,#. 0} கடல் மைல்கள்}}</string>
|
||||
<string name="voiceDistance">{n, plural, = 1 {1 } other {{n,number,#. 0}}}</string>
|
||||
<string name="average_heart_rate">சராசரி இதய துடிப்பு</string>
|
||||
<string name="current_heart_rate">தற்போதைய இதய துடிப்பு</string>
|
||||
<string name="lap_heart_rate">மடியில் இதய துடிப்பு</string>
|
||||
|
||||
Reference in New Issue
Block a user