Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 23f47f10f8 | |||
| 251fa17487 | |||
| bae3373fe9 | |||
| 0a685a66e3 | |||
| 5ca9ca857a | |||
| d9dfa6d746 | |||
| 3a5220546e | |||
| 047d5c2340 | |||
| 725c21c0a1 | |||
| 7939e39fc1 | |||
| a133bd8f9e | |||
| 1f9790cba8 | |||
| a3ba1e1490 | |||
| accb30152f | |||
| dc7daa6e8c | |||
| 1d8e788d53 | |||
| 568b908b26 | |||
| 3ab63adb34 | |||
| 91692f345e | |||
| dbdb98a682 | |||
| df66cd5753 | |||
| 6e39dd37f8 | |||
| 7212f7be94 | |||
| 77fe494e6c | |||
| 2f491e8c10 | |||
| f4fe7b1ab3 | |||
| 7e444cbf31 | |||
| ed6ab9c53c | |||
| f91ca3154c | |||
| bbfab1b201 | |||
| 1f2e3bcf70 |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
||||
@@ -51,13 +51,19 @@ _OpenTracks_ is a sport tracking application that completely respects your priva
|
||||
__Only required permissions:__
|
||||
* _ACCESS_FINE_LOCATION_: required to use the GPS.
|
||||
|
||||
An overview of Bluetooth LE sensors that are known to work with OpenTracks is in [README_TESTED_SENSORS.md](README_TESTED_SENSORS.md).
|
||||
|
||||
_Please note:_
|
||||
_OpenTracks_ does not contain a _map_ (as this would required Internet access).
|
||||
To show your tracks on a map, a 3rd party application (e.g., [OsmAnd](https://play.google.com/store/apps/details?id=net.osmand) or [MAPS.ME](https://play.google.com/store/apps/details?id=com.mapswithme.maps.pro)) needs to be installed.
|
||||
|
||||
## Custom Dashboards
|
||||
## Custom Dashboards (incl. Map)
|
||||
As of v3.3.1 OpenTracks enables to use custom dashboards.
|
||||
The reference implementation is [OSMDashboard](https://github.com/OpenTracksApp/OSMDashboard), which presents an OpenStreetMap map (showing the current track, incl. updates).
|
||||
The developer documentation is in [README_API.md](README_API.md).
|
||||
|
||||
Alternatively, recorded tracks can be shared as KMZ/GPX to installed applications (e.g., [OsmAnd](https://play.google.com/store/apps/details?id=net.osmand) or [MAPS.ME](https://play.google.com/store/apps/details?id=com.mapswithme.maps.pro)).
|
||||
However, this is rather slow and does not provide updates while recording.
|
||||
|
||||
|
||||
## Screenshots
|
||||
<div>
|
||||
@@ -87,7 +93,7 @@ Rework of _OpenTracks_ included:
|
||||
* removing calorie estimation and activity estimation,
|
||||
* removing support for ANT+ and Classic Bluetooth,
|
||||
* adding support for Bluetooth LE heart rate sensors,
|
||||
* removing Protobuf (store sensor data in SQLite columns directly), and
|
||||
* removing Protobuf (store sensosensorr data in SQLite columns directly), and
|
||||
* removing Android Service API for other apps.
|
||||
|
||||
Artwork, logos and user interface remained more or less unchanged.
|
||||
|
||||
@@ -7,9 +7,6 @@ Although this might be (mostly) sufficient, it has some limitations.
|
||||
This include limited configurability (e.g., ordering of shown elements) and the lack of Internet access.
|
||||
In fact, the later is considered a feature but severely limits the implementation presenting a map (at least in an easy way).
|
||||
|
||||
_NOTE:_ for showing a track on a map a workaround was implemented in OpenTracks.
|
||||
Data could be exported as KMZ and presented in 3rd-party application (e.g., [OsmAnd](https://play.google.com/store/apps/details?id=net.osmand) or [MAPS.ME](https://play.google.com/store/apps/details?id=com.mapswithme.maps.pro)).
|
||||
|
||||
For the time being, the OpenTracks Data API can be used to implement mainly custom dashboards.
|
||||
|
||||
## Implementation
|
||||
@@ -0,0 +1,20 @@
|
||||
# Overview of tested Bluetooth LE sensors
|
||||
|
||||
## HRS: Heartrate Service
|
||||
* Decathlon|Geonaute|Kalenji Dual HRM Belt
|
||||
* Polar H7
|
||||
* Polar OH1
|
||||
Has updatable firmware that requires a user account at polar.com
|
||||
* Wahoo Tickr (Model: WFBTHR02)
|
||||
|
||||
## CSCP: Cycling Cadence and Speed Service
|
||||
Please note that the according to the specification these sensors _may_ provide speed as well as cadence.
|
||||
However, often only one value is provided.
|
||||
|
||||
### Speed
|
||||
* Wahoo Speed (Model: WFRPMSPD)
|
||||
|
||||
### Cadence
|
||||
* Wahoo Cadence (Model: WFPODCAD2)
|
||||
This sensor reports cadence data as speed.
|
||||
A workaround is in place.
|
||||
@@ -6,7 +6,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.6.2'
|
||||
classpath 'com.android.tools.build:gradle:4.0.0'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,25 +50,30 @@ def getVersionName = { ->
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
compileSdkVersion 30
|
||||
|
||||
defaultConfig {
|
||||
applicationId "de.dennisguse.opentracks"
|
||||
manifestPlaceholders = [
|
||||
applicationLogo: "@drawable/ic_logo_color_24dp",
|
||||
applicationLogo: "@mipmap/ic_launcher",
|
||||
applicationName: "@string/app_name"
|
||||
]
|
||||
|
||||
versionCode 3396
|
||||
versionCode 3427
|
||||
//versionCode getVersionCode() //Useful for debugging.
|
||||
versionName "v3.7.4"
|
||||
versionName "v3.7.5"
|
||||
|
||||
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
|
||||
|
||||
|
||||
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
targetSdkVersion 30
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
@@ -78,7 +83,7 @@ android {
|
||||
applicationIdSuffix ".debug"
|
||||
versionNameSuffix "-debug"
|
||||
manifestPlaceholders = [
|
||||
applicationLogo: "@drawable/ic_logo_black_24dp",
|
||||
applicationLogo: "@mipmap/ic_launcher_debug",
|
||||
applicationName: "OpenTracks (Debug)"
|
||||
]
|
||||
}
|
||||
@@ -102,6 +107,8 @@ dependencies {
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||
implementation 'com.google.android.material:material:1.1.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
|
||||
androidTestImplementation 'androidx.test:core:1.2.0'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
||||
@@ -113,6 +120,4 @@ dependencies {
|
||||
|
||||
testImplementation 'androidx.test:core:1.2.0'
|
||||
testImplementation 'org.mockito:mockito-core:3.0.0'
|
||||
implementation 'com.google.android.material:material:1.1.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
@startuml
|
||||
SensorManager --> ElevationSumManager
|
||||
LocationManager --> TrackRecordingService
|
||||
ElevationSumManager --> TrackRecordingService
|
||||
|
||||
TrackRecordingService --> TrackRecordingServiceConnection
|
||||
TrackRecordingService --> Database
|
||||
|
||||
Database --> CustomContentProvider
|
||||
CustomContentProvider --> TrackDataHub
|
||||
CustomContentProvider --> ShareContentProvider
|
||||
TrackDataHub --> StatisticsRecordingFragment : TrackPoints, TrackStatistics, Waypoints (push)
|
||||
TrackDataHub --> StatisticsRecordedFragment : TrackPoints, TrackStatistics, Waypoints (push)
|
||||
TrackDataHub --> ChartFragment --> ChartView
|
||||
|
||||
TrackRecordingServiceConnection --> StatisticsRecordingFragment : Sensor data (heartrate, cadence, elevation gain; pull 1s)
|
||||
TrackRecordingServiceConnection --> TrackController : Start time (pull, onStart)
|
||||
@enduml
|
||||
@@ -0,0 +1,11 @@
|
||||
v3.7.5: OpenTracks
|
||||
|
||||
Changes:
|
||||
- Added aggregated statistics summary (from main the screen's menu)
|
||||
- Dashboard API: pass "show on lock screen"- and "keep screen on"-setting
|
||||
- Updated translations
|
||||
- Import: be lenient with ISO8601 date format
|
||||
- Show track on map: file format can be selected and opening dashboard works on Android R (API 30+)
|
||||
|
||||
Bugfix:
|
||||
- App icon now correctly implemented
|
||||
@@ -11,7 +11,14 @@ import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||
public class ShareContentProviderTest {
|
||||
|
||||
@Test
|
||||
public void testCreateandParseURI() {
|
||||
public void testCreateandParseURI_invalid() {
|
||||
Uri uri = Uri.parse("content://de.dennisguse.opentracks.debug.content/tracks/1");
|
||||
|
||||
Assert.assertArrayEquals(new long[]{}, ShareContentProvider.parseURI(uri));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateandParseURI_valid() {
|
||||
long[] trackIds = {1, 3, 5};
|
||||
Pair<Uri, String> shareURIandMIME = ShareContentProvider.createURI(trackIds, "TrackName", TrackFileFormat.KML_ONLY_TRACK);
|
||||
|
||||
|
||||
@@ -128,6 +128,7 @@ public class StringUtilsTest {
|
||||
*/
|
||||
@Test
|
||||
public void testGetTime_timezone() {
|
||||
assertGetTime("2010-05-04T03:02:01", 2010, 5, 4, 3, 2, 1, 0);
|
||||
assertGetTime("2010-05-04T03:02:01Z", 2010, 5, 4, 3, 2, 1, 0);
|
||||
assertGetTime("2010-05-04T03:02:01+00:00", 2010, 5, 4, 3, 2, 1, 0);
|
||||
assertGetTime("2010-05-04T03:02:01-00:00", 2010, 5, 4, 3, 2, 1, 0);
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
package de.dennisguse.opentracks.viewmodels;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||
|
||||
@RunWith(JUnit4.class)
|
||||
public class AggregatedStatisticsTest {
|
||||
|
||||
private final Context context = ApplicationProvider.getApplicationContext();
|
||||
|
||||
/**
|
||||
* Create a TrackStatistics object.
|
||||
*
|
||||
* @param totalDistance distance in meters.
|
||||
* @param totalTime total time in milliseconds.
|
||||
* @return TrackStatistics object.
|
||||
*/
|
||||
private static Track createTrack(Context context, long totalDistance, long totalTime, String category) {
|
||||
TrackStatistics statistics = new TrackStatistics();
|
||||
statistics.setStartTime_ms(1000L); // Resulting start time
|
||||
statistics.setStopTime_ms(1000L + totalTime);
|
||||
statistics.setTotalTime(totalTime);
|
||||
statistics.setMovingTime(totalTime);
|
||||
statistics.setTotalDistance(totalDistance);
|
||||
statistics.setTotalElevationGain(50.0);
|
||||
statistics.setMaxSpeed(50.0); // Resulting max speed
|
||||
statistics.setMaxElevation(1250.0);
|
||||
statistics.setMinElevation(1200.0); // Resulting min elevation
|
||||
|
||||
Track track = new Track();
|
||||
track.setIcon(TrackIconUtils.getIconValue(context, category));
|
||||
track.setCategory(category);
|
||||
track.setTrackStatistics(statistics);
|
||||
return track;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate() {
|
||||
// given
|
||||
// 10km in 40 minutes.
|
||||
long totalDistance = 10000;
|
||||
long totalTime = 2400000;
|
||||
String biking = context.getString(R.string.activity_type_biking);
|
||||
Track track = createTrack(context, totalDistance, totalTime, biking);
|
||||
|
||||
// when
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
aggregatedStatistics.aggregate(track);
|
||||
|
||||
// then
|
||||
Assert.assertEquals(1, aggregatedStatistics.getCount());
|
||||
Assert.assertTrue(aggregatedStatistics.get(biking) != null);
|
||||
Assert.assertEquals(1, aggregatedStatistics.get(biking).getCountTracks());
|
||||
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(biking).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate_mountainBiking() {
|
||||
// given
|
||||
// 10km in 40 minutes.
|
||||
long totalDistance = 10000;
|
||||
long totalTime = 2400000;
|
||||
String mountainBiking = context.getString(R.string.activity_type_mountain_biking);
|
||||
Track track = createTrack(context, totalDistance, totalTime, mountainBiking);
|
||||
|
||||
// when
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
aggregatedStatistics.aggregate(track);
|
||||
|
||||
// then
|
||||
Assert.assertTrue(aggregatedStatistics.get(mountainBiking) != null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate_trailRunning() {
|
||||
// given
|
||||
// 10km in 40 minutes.
|
||||
long totalDistance = 10000;
|
||||
long totalTime = 2400000;
|
||||
String trailRunning = context.getString(R.string.activity_type_trail_running);
|
||||
Track track = createTrack(context, totalDistance, totalTime, trailRunning);
|
||||
|
||||
// when
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
aggregatedStatistics.aggregate(track);
|
||||
|
||||
// then
|
||||
Assert.assertTrue(aggregatedStatistics.get(trailRunning) != null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate_twoBikingTracks() {
|
||||
// given
|
||||
// 10km in 40 minutes.
|
||||
long totalDistance = 10000;
|
||||
long totalTime = 2400000;
|
||||
String biking = context.getString(R.string.activity_type_biking);
|
||||
Track[] tracks = new Track[2];
|
||||
for (int i = 0; i < 2; i++) {
|
||||
tracks[i] = createTrack(context, totalDistance, totalTime, biking);
|
||||
}
|
||||
|
||||
// when
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
aggregatedStatistics.aggregate(tracks[0]); // biking activity 1.
|
||||
aggregatedStatistics.aggregate(tracks[1]); // biking activity 2.
|
||||
|
||||
// then
|
||||
Assert.assertEquals(1, aggregatedStatistics.getCount());
|
||||
Assert.assertTrue(aggregatedStatistics.get(biking) != null);
|
||||
Assert.assertEquals(2, aggregatedStatistics.get(biking).getCountTracks());
|
||||
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(biking).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance * 2, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime * 2L, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate_threeDifferentTracks() {
|
||||
// given
|
||||
// 10km in 40 minutes.
|
||||
long totalDistance = 10000;
|
||||
|
||||
String biking = context.getString(R.string.activity_type_biking);
|
||||
String running = context.getString(R.string.activity_type_running);
|
||||
String walking = context.getString(R.string.activity_type_walking);
|
||||
long totalTime = 2400000;
|
||||
Track[] tracks = new Track[]{
|
||||
createTrack(context, totalDistance, totalTime, biking),
|
||||
createTrack(context, totalDistance, totalTime, running),
|
||||
createTrack(context, totalDistance, totalTime, walking)
|
||||
};
|
||||
|
||||
// when
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
aggregatedStatistics.aggregate(tracks[0]); // biking activity 1.
|
||||
aggregatedStatistics.aggregate(tracks[1]); // biking activity 2.
|
||||
aggregatedStatistics.aggregate(tracks[2]); // biking activity 3.
|
||||
|
||||
// then
|
||||
Assert.assertEquals(3, aggregatedStatistics.getCount());
|
||||
Assert.assertTrue(aggregatedStatistics.get(biking) != null);
|
||||
Assert.assertTrue(aggregatedStatistics.get(running) != null);
|
||||
Assert.assertTrue(aggregatedStatistics.get(walking) != null);
|
||||
Assert.assertEquals(1, aggregatedStatistics.get(biking).getCountTracks());
|
||||
Assert.assertEquals(1, aggregatedStatistics.get(running).getCountTracks());
|
||||
Assert.assertEquals(1, aggregatedStatistics.get(walking).getCountTracks());
|
||||
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(biking).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(running).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(walking).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime, statistics2.getMovingTime());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAggregate_severalTracksWithSeveralActivities() {
|
||||
// given
|
||||
// 10km in 40 minutes.
|
||||
long totalDistance = 10000;
|
||||
long totalTime = 2400000;
|
||||
String biking = context.getString(R.string.activity_type_biking);
|
||||
String running = context.getString(R.string.activity_type_running);
|
||||
String walking = context.getString(R.string.activity_type_walking);
|
||||
String driving = context.getString(R.string.activity_type_driving);
|
||||
Track[] tracks = new Track[]{
|
||||
createTrack(context, totalDistance, totalTime, biking),
|
||||
createTrack(context, totalDistance, totalTime, running),
|
||||
createTrack(context, totalDistance, totalTime, walking),
|
||||
createTrack(context, totalDistance, totalTime, biking),
|
||||
createTrack(context, totalDistance, totalTime, running),
|
||||
createTrack(context, totalDistance, totalTime, walking),
|
||||
createTrack(context, totalDistance, totalTime, biking),
|
||||
createTrack(context, totalDistance, totalTime, biking),
|
||||
createTrack(context, totalDistance, totalTime, biking),
|
||||
createTrack(context, totalDistance, totalTime, driving),
|
||||
};
|
||||
|
||||
|
||||
// when
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
for (Track track : tracks) {
|
||||
aggregatedStatistics.aggregate(track);
|
||||
|
||||
}
|
||||
|
||||
// then
|
||||
// 4 sports.
|
||||
Assert.assertEquals(4, aggregatedStatistics.getCount());
|
||||
|
||||
// There is a map for every sport.
|
||||
Assert.assertTrue(aggregatedStatistics.get(biking) != null);
|
||||
Assert.assertTrue(aggregatedStatistics.get(running) != null);
|
||||
Assert.assertTrue(aggregatedStatistics.get(walking) != null);
|
||||
Assert.assertTrue(aggregatedStatistics.get(driving) != null);
|
||||
|
||||
// Number of tracks by sport.
|
||||
Assert.assertEquals(5, aggregatedStatistics.get(biking).getCountTracks()); // Biking.
|
||||
Assert.assertEquals(2, aggregatedStatistics.get(running).getCountTracks()); // Running.
|
||||
Assert.assertEquals(2, aggregatedStatistics.get(walking).getCountTracks()); // Walking.
|
||||
Assert.assertEquals(1, aggregatedStatistics.get(driving).getCountTracks()); // Driving.
|
||||
|
||||
// Biking.
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(biking).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance * 5, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime * 5, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
// Running.
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(running).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance * 2, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime * 2, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
// Walking.
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(walking).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance * 2, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime * 2, statistics2.getMovingTime());
|
||||
}
|
||||
|
||||
// Driving.
|
||||
{
|
||||
TrackStatistics statistics2 = aggregatedStatistics.get(driving).getTrackStatistics();
|
||||
Assert.assertEquals(totalDistance, statistics2.getTotalDistance(), 0);
|
||||
Assert.assertEquals(totalTime, statistics2.getMovingTime());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,14 @@ limitations under the License.
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="de.dennisguse.opentracks"
|
||||
android:installLocation="auto">
|
||||
<!-- Permission to initialize services -->
|
||||
|
||||
<supports-screens
|
||||
android:anyDensity="true"
|
||||
android:largeScreens="true"
|
||||
android:normalScreens="true"
|
||||
android:smallScreens="true"
|
||||
android:xlargeScreens="true" />
|
||||
|
||||
<application
|
||||
android:name=".Startup"
|
||||
android:allowBackup="false"
|
||||
@@ -98,12 +105,30 @@ limitations under the License.
|
||||
android:value=".SearchListActivity" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".AggregatedStatisticsActivity"
|
||||
android:screenOrientation="userPortrait"
|
||||
android:label="@string/menu_aggregated_statistics"/>
|
||||
|
||||
<activity
|
||||
android:name=".io.file.exporter.ExportActivity"
|
||||
android:theme="@style/ThemeCustomTransparent" />
|
||||
|
||||
<activity android:name=".settings.SettingsActivity" />
|
||||
|
||||
<activity android:name=".ShowOnMapProxyActivity$KMZ">
|
||||
<intent-filter android:label="@string/open_track_as_KMZ">
|
||||
<action android:name="Intent.OpenTracks-Dashboard" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".ShowOnMapProxyActivity$GPX">
|
||||
<intent-filter android:label="@string/open_track_as_GPX">
|
||||
<action android:name="Intent.OpenTracks-Dashboard" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<provider
|
||||
android:name=".content.provider.ShareContentProvider"
|
||||
android:authorities="${applicationId}.content"
|
||||
@@ -128,12 +153,7 @@ limitations under the License.
|
||||
android:icon="@drawable/ic_logo_color_24dp"
|
||||
android:label="@string/recording_service" />
|
||||
</application>
|
||||
<supports-screens
|
||||
android:anyDensity="true"
|
||||
android:largeScreens="true"
|
||||
android:normalScreens="true"
|
||||
android:smallScreens="true"
|
||||
android:xlargeScreens="true" />
|
||||
|
||||
<!-- Permissions to record locations -->
|
||||
<uses-feature
|
||||
android:name="android.hardware.location.gps"
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package de.dennisguse.opentracks;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.widget.ListView;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import de.dennisguse.opentracks.adapters.AggregatedStatisticsAdapter;
|
||||
import de.dennisguse.opentracks.viewmodels.AggregatedStatistics;
|
||||
import de.dennisguse.opentracks.viewmodels.AggregatedStatisticsModel;
|
||||
|
||||
public class AggregatedStatisticsActivity extends AbstractActivity {
|
||||
|
||||
private ListView listView;
|
||||
private AggregatedStatisticsAdapter adapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
listView = findViewById(R.id.aggregated_stats_list);
|
||||
|
||||
final AggregatedStatisticsModel viewModel = new ViewModelProvider(this).get(AggregatedStatisticsModel.class);
|
||||
viewModel.getAggregatedStats().observe(this, new Observer<AggregatedStatistics>() {
|
||||
@Override
|
||||
public void onChanged(AggregatedStatistics aggregatedStatistics) {
|
||||
if (aggregatedStatistics != null) {
|
||||
adapter = new AggregatedStatisticsAdapter(getApplicationContext(), aggregatedStatistics);
|
||||
listView.setAdapter(adapter);
|
||||
}
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutResId() {
|
||||
return R.layout.aggregated_stats;
|
||||
}
|
||||
}
|
||||
@@ -109,12 +109,7 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
|
||||
|
||||
@Override
|
||||
public void onDeleteMarkerDone() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
runOnUiThread(this::finish);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -82,12 +82,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
|
||||
recordingTrackPaused = PreferencesUtils.isRecordingTrackPaused(MarkerListActivity.this);
|
||||
}
|
||||
if (key != null) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MarkerListActivity.this.invalidateOptionsMenu();
|
||||
}
|
||||
});
|
||||
runOnUiThread(() -> MarkerListActivity.this.invalidateOptionsMenu());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -153,12 +153,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
recordingTrackPaused = PreferencesUtils.isRecordingTrackPaused(SearchListActivity.this);
|
||||
}
|
||||
if (key != null) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
arrayAdapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
runOnUiThread(() -> arrayAdapter.notifyDataSetChanged());
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -346,12 +341,9 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
final List<Map<String, Object>> displayResults = prepareResultsforDisplay(scoredResults);
|
||||
|
||||
// Use the UI thread to display the results
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
arrayAdapter.clear();
|
||||
arrayAdapter.addAll(displayResults);
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
arrayAdapter.clear();
|
||||
arrayAdapter.addAll(displayResults);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -448,12 +440,7 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
|
||||
@Override
|
||||
public void onDeleteMarkerDone() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleIntent(getIntent());
|
||||
}
|
||||
});
|
||||
runOnUiThread(() -> handleIntent(getIntent()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -463,11 +450,6 @@ public class SearchListActivity extends AbstractListActivity implements DeleteMa
|
||||
|
||||
@Override
|
||||
protected void onDeleted() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleIntent(getIntent());
|
||||
}
|
||||
});
|
||||
runOnUiThread(() -> handleIntent(getIntent()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package de.dennisguse.opentracks;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.provider.ShareContentProvider;
|
||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||
|
||||
/**
|
||||
* Used to convert IntentDashboardUtils.startDashboard-requests into {@link TrackFileFormat}.
|
||||
*/
|
||||
public abstract class ShowOnMapProxyActivity extends AppCompatActivity {
|
||||
|
||||
private TrackFileFormat trackFileFormat;
|
||||
|
||||
protected ShowOnMapProxyActivity(TrackFileFormat trackFileFormat) {
|
||||
this.trackFileFormat = trackFileFormat;
|
||||
}
|
||||
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
long[] trackIds = IntentDashboardUtils.extractTrackIdsFromIntent(getIntent());
|
||||
|
||||
showTrackTrackfileFormat(this, trackFileFormat, trackIds);
|
||||
|
||||
finish();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send intent to show tracks on a map (needs an another app) as KMZ.
|
||||
*
|
||||
* @param context the context
|
||||
* @param trackIds the track ids
|
||||
*/
|
||||
private static void showTrackTrackfileFormat(Context context, TrackFileFormat trackFileFormat, long[] trackIds) {
|
||||
if (trackIds.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.putExtra(TrackPointsColumns.TRACKID, trackIds[0]);
|
||||
Pair<Uri, String> uriAndMime = ShareContentProvider.createURI(trackIds, "SharingTrack", trackFileFormat);
|
||||
intent.setDataAndType(uriAndMime.first, uriAndMime.second);
|
||||
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
|
||||
context.startActivity(Intent.createChooser(intent, context.getString(R.string.open_track_as_trackfileformat, trackFileFormat.getExtension())));
|
||||
}
|
||||
|
||||
public static class KMZ extends ShowOnMapProxyActivity {
|
||||
public KMZ() {
|
||||
super(TrackFileFormat.KMZ_WITH_TRACKDETAIL);
|
||||
}
|
||||
}
|
||||
|
||||
public static class GPX extends ShowOnMapProxyActivity {
|
||||
public GPX() {
|
||||
super(TrackFileFormat.GPX);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,7 @@ import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
||||
import de.dennisguse.opentracks.services.TrackRecordingServiceInterface;
|
||||
import de.dennisguse.opentracks.settings.SettingsActivity;
|
||||
import de.dennisguse.opentracks.util.ActivityUtils;
|
||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||
import de.dennisguse.opentracks.util.IntentUtils;
|
||||
import de.dennisguse.opentracks.util.ListItemUtils;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
@@ -143,14 +144,11 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
||||
recordingTrackPaused = PreferencesUtils.isRecordingTrackPaused(TrackListActivity.this);
|
||||
}
|
||||
if (key != null) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
TrackListActivity.this.invalidateOptionsMenu();
|
||||
LoaderManager.getInstance(TrackListActivity.this).restartLoader(0, null, loaderCallbacks);
|
||||
boolean isRecording = PreferencesUtils.isRecording(recordingTrackId);
|
||||
trackController.update(isRecording, recordingTrackPaused);
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
TrackListActivity.this.invalidateOptionsMenu();
|
||||
LoaderManager.getInstance(TrackListActivity.this).restartLoader(0, null, loaderCallbacks);
|
||||
boolean isRecording = PreferencesUtils.isRecording(recordingTrackId);
|
||||
trackController.update(isRecording, recordingTrackPaused);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -174,15 +172,8 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
||||
private final Runnable bindChangedCallback = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
/*
|
||||
* After binding changes (e.g., becomes available), update the total time in trackController.
|
||||
*/
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
trackController.update(PreferencesUtils.isRecording(recordingTrackId), recordingTrackPaused);
|
||||
}
|
||||
});
|
||||
// After binding changes (e.g., becomes available), update the total time in trackController.
|
||||
runOnUiThread(() -> trackController.update(PreferencesUtils.isRecording(recordingTrackId), recordingTrackPaused));
|
||||
|
||||
if (!startGps) {
|
||||
return;
|
||||
@@ -404,6 +395,10 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
||||
this.invalidateOptionsMenu();
|
||||
}
|
||||
return true;
|
||||
case R.id.track_list_aggregated_stats:
|
||||
intent = IntentUtils.newIntent(this, AggregatedStatisticsActivity.class);
|
||||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.track_list_markers:
|
||||
intent = IntentUtils.newIntent(this, MarkerListActivity.class);
|
||||
startActivity(intent);
|
||||
@@ -487,7 +482,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe
|
||||
Intent intent;
|
||||
switch (itemId) {
|
||||
case R.id.list_context_menu_show_on_map:
|
||||
IntentUtils.showTrackOnMap(this, trackIds);
|
||||
IntentDashboardUtils.startDashboard(this, trackIds);
|
||||
return true;
|
||||
case R.id.list_context_menu_share:
|
||||
intent = IntentUtils.newShareFileIntent(this, trackIds);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package de.dennisguse.opentracks;
|
||||
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
@@ -40,6 +39,7 @@ import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
|
||||
import de.dennisguse.opentracks.fragments.StatisticsRecordedFragment;
|
||||
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
||||
import de.dennisguse.opentracks.settings.SettingsActivity;
|
||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||
import de.dennisguse.opentracks.util.IntentUtils;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||
@@ -187,7 +187,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
|
||||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.track_detail_menu_show_on_map:
|
||||
IntentUtils.showTrackOnMap(this, new long[]{trackId});
|
||||
IntentDashboardUtils.startDashboard(this, trackId);
|
||||
return true;
|
||||
case R.id.track_detail_markers:
|
||||
intent = IntentUtils.newIntent(this, MarkerListActivity.class)
|
||||
@@ -226,12 +226,7 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
|
||||
|
||||
@Override
|
||||
protected void onDeleted() {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
runOnUiThread(this::finish);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -259,7 +254,6 @@ public class TrackRecordedActivity extends AbstractListActivity implements Choos
|
||||
if (trackId == -1L) {
|
||||
Log.e(TAG, "TrackDetailActivity needs EXTRA_TRACK_ID.");
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package de.dennisguse.opentracks;
|
||||
|
||||
import android.app.ActivityOptions;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||
@@ -30,6 +29,7 @@ import de.dennisguse.opentracks.fragments.StatisticsRecordingFragment;
|
||||
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
|
||||
import de.dennisguse.opentracks.services.TrackRecordingServiceInterface;
|
||||
import de.dennisguse.opentracks.settings.SettingsActivity;
|
||||
import de.dennisguse.opentracks.util.IntentDashboardUtils;
|
||||
import de.dennisguse.opentracks.util.IntentUtils;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||
@@ -68,12 +68,7 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
||||
@Override
|
||||
public void run() {
|
||||
// After binding changes (is available), update the total time in trackController.
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
trackController.update(true, recordingTrackPaused);
|
||||
}
|
||||
});
|
||||
runOnUiThread(() -> trackController.update(true, recordingTrackPaused));
|
||||
|
||||
if (recordingTrackId == -1L) {
|
||||
TrackRecordingServiceInterface service = trackRecordingServiceConnection.getServiceIfBound();
|
||||
@@ -130,12 +125,9 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
||||
|
||||
if (key == null) return;
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
TrackRecordingActivity.this.invalidateOptionsMenu();
|
||||
trackController.update(true, recordingTrackPaused);
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
TrackRecordingActivity.this.invalidateOptionsMenu();
|
||||
trackController.update(true, recordingTrackPaused);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -347,7 +339,7 @@ public class TrackRecordingActivity extends AbstractActivity implements ChooseAc
|
||||
startActivity(intent);
|
||||
return true;
|
||||
case R.id.track_detail_menu_show_on_map:
|
||||
IntentUtils.showTrackOnMap(this, new long[]{trackId});
|
||||
IntentDashboardUtils.startDashboard(this, trackId);
|
||||
return true;
|
||||
case R.id.track_detail_markers:
|
||||
intent = IntentUtils.newIntent(this, MarkerListActivity.class)
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
package de.dennisguse.opentracks.adapters;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Pair;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||
import de.dennisguse.opentracks.util.StringUtils;
|
||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||
import de.dennisguse.opentracks.viewmodels.AggregatedStatistics;
|
||||
|
||||
public class AggregatedStatisticsAdapter extends BaseAdapter {
|
||||
|
||||
private AggregatedStatistics aggregatedStatistics;
|
||||
private Context context;
|
||||
|
||||
public AggregatedStatisticsAdapter(Context context, AggregatedStatistics aggregatedStatistics) {
|
||||
this.context = context;
|
||||
this.aggregatedStatistics = aggregatedStatistics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
if (aggregatedStatistics != null) {
|
||||
return aggregatedStatistics.getCount();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AggregatedStatistics.AggregatedStatistic getItem(int position) {
|
||||
return aggregatedStatistics.getItem(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
// Not important because data are not database register but cooked data.
|
||||
return position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
AggregatedStatistics.AggregatedStatistic aggregatedStats = getItem(position);
|
||||
ViewHolder viewHolder;
|
||||
|
||||
if (isSpeedSport(position)) {
|
||||
viewHolder = new ViewSpeedHolder();
|
||||
} else {
|
||||
viewHolder = new ViewPaceHolder();
|
||||
}
|
||||
|
||||
convertView = LayoutInflater.from(context).inflate(R.layout.aggregated_stats_list_item, parent, false);
|
||||
viewHolder.setValues(convertView, getIcon(position), getName(position), aggregatedStats);
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
||||
private boolean isSpeedSport(int position) {
|
||||
String category = aggregatedStatistics.getSportName(position);
|
||||
return TrackIconUtils.isSpeedIcon(context, category);
|
||||
}
|
||||
|
||||
private int getIcon(int position) {
|
||||
String iconValue = TrackIconUtils.getIconValue(context, aggregatedStatistics.getSportName(position));
|
||||
return TrackIconUtils.getIconDrawable(iconValue);
|
||||
}
|
||||
|
||||
private String getName(int position) {
|
||||
return aggregatedStatistics.getSportName(position);
|
||||
}
|
||||
|
||||
private class ViewHolder {
|
||||
protected ImageView sportIcon;
|
||||
protected TextView typeLabel;
|
||||
protected TextView numTracks;
|
||||
protected TextView distance;
|
||||
protected TextView distanceUnit;
|
||||
protected TextView time;
|
||||
protected boolean metricsUnits;
|
||||
|
||||
public ViewHolder() {
|
||||
metricsUnits = PreferencesUtils.isMetricUnits(context);
|
||||
}
|
||||
|
||||
public void setValues(View view, int iconDrawable, String name, AggregatedStatistics.AggregatedStatistic aggregatedStats) {
|
||||
sportIcon = view.findViewById(R.id.aggregated_stats_sport_icon);
|
||||
typeLabel = view.findViewById(R.id.aggregated_stats_type_label);
|
||||
numTracks = view.findViewById(R.id.aggregated_stats_num_tracks);
|
||||
distance = view.findViewById(R.id.aggregated_stats_distance);
|
||||
distanceUnit = view.findViewById(R.id.aggregated_stats_distance_unit);
|
||||
time = view.findViewById(R.id.aggregated_stats_time);
|
||||
|
||||
sportIcon.setImageResource(iconDrawable);
|
||||
typeLabel.setText(name);
|
||||
numTracks.setText(StringUtils.valueInParentheses(String.valueOf(aggregatedStats.getCountTracks())));
|
||||
|
||||
Pair<String, String> parts = StringUtils.getDistanceParts(context, aggregatedStats.getTrackStatistics().getTotalDistance(), metricsUnits);
|
||||
distance.setText(parts.first);
|
||||
distanceUnit.setText(parts.second);
|
||||
|
||||
time.setText(StringUtils.formatElapsedTime(aggregatedStats.getTrackStatistics().getMovingTime()));
|
||||
}
|
||||
}
|
||||
|
||||
private class ViewSpeedHolder extends ViewHolder {
|
||||
private TextView avgSpeed;
|
||||
private TextView avgSpeedUnit;
|
||||
private TextView avgSpeedLabel;
|
||||
private TextView maxSpeed;
|
||||
private TextView maxSpeedUnit;
|
||||
private TextView maxSpeedLabel;
|
||||
|
||||
@Override
|
||||
public void setValues(View view, int iconDrawable, String name, AggregatedStatistics.AggregatedStatistic aggregatedStats) {
|
||||
super.setValues(view, iconDrawable, name, aggregatedStats);
|
||||
|
||||
avgSpeed = view.findViewById(R.id.aggregated_stats_avg_rate);
|
||||
avgSpeedUnit = view.findViewById(R.id.aggregated_stats_avg_rate_unit);
|
||||
avgSpeedLabel = view.findViewById(R.id.aggregated_stats_avg_rate_label);
|
||||
maxSpeed = view.findViewById(R.id.aggregated_stats_max_rate);
|
||||
maxSpeedUnit = view.findViewById(R.id.aggregated_stats_max_rate_unit);
|
||||
maxSpeedLabel = view.findViewById(R.id.aggregated_stats_max_rate_label);
|
||||
|
||||
{
|
||||
Pair<String, String> parts = StringUtils.getSpeedParts(context, aggregatedStats.getTrackStatistics().getAverageMovingSpeed(), metricsUnits, true);
|
||||
avgSpeed.setText(parts.first);
|
||||
avgSpeedUnit.setText(parts.second);
|
||||
avgSpeedLabel.setText(context.getString(R.string.stats_average_moving_speed));
|
||||
}
|
||||
|
||||
{
|
||||
Pair<String, String> parts = StringUtils.getSpeedParts(context, aggregatedStats.getTrackStatistics().getMaxSpeed(), metricsUnits, true);
|
||||
maxSpeed.setText(parts.first);
|
||||
maxSpeedUnit.setText(parts.second);
|
||||
maxSpeedLabel.setText(context.getString(R.string.stats_max_speed));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class ViewPaceHolder extends ViewHolder {
|
||||
private TextView avgPace;
|
||||
private TextView avgPaceUnit;
|
||||
private TextView avgPaceLabel;
|
||||
private TextView maxPace;
|
||||
private TextView maxPaceUnit;
|
||||
private TextView maxPaceLabel;
|
||||
|
||||
@Override
|
||||
public void setValues(View view, int iconDrawable, String name, AggregatedStatistics.AggregatedStatistic aggregatedStats) {
|
||||
super.setValues(view, iconDrawable, name, aggregatedStats);
|
||||
|
||||
avgPace = view.findViewById(R.id.aggregated_stats_avg_rate);
|
||||
avgPaceUnit = view.findViewById(R.id.aggregated_stats_avg_rate_unit);
|
||||
avgPaceLabel = view.findViewById(R.id.aggregated_stats_avg_rate_label);
|
||||
|
||||
maxPace = view.findViewById(R.id.aggregated_stats_max_rate);
|
||||
maxPaceUnit = view.findViewById(R.id.aggregated_stats_max_rate_unit);
|
||||
maxPaceLabel = view.findViewById(R.id.aggregated_stats_max_rate_label);
|
||||
|
||||
{
|
||||
Pair<String, String> parts = StringUtils.getSpeedParts(context, aggregatedStats.getTrackStatistics().getAverageMovingSpeed(), metricsUnits, false);
|
||||
avgPace.setText(parts.first);
|
||||
avgPaceUnit.setText(parts.second);
|
||||
avgPaceLabel.setText(R.string.stats_average_moving_pace);
|
||||
}
|
||||
|
||||
{
|
||||
Pair<String, String> parts = StringUtils.getSpeedParts(context, aggregatedStats.getTrackStatistics().getMaxSpeed(), metricsUnits, false);
|
||||
maxPace.setText(parts.first);
|
||||
maxPaceUnit.setText(parts.second);
|
||||
maxPaceLabel.setText(R.string.stats_fastest_pace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -144,12 +144,9 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
|
||||
PreferencesUtils.register(context, this);
|
||||
onSharedPreferenceChanged(null, null);
|
||||
runInHandlerThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (started) {
|
||||
loadDataForAll();
|
||||
}
|
||||
runInHandlerThread(() -> {
|
||||
if (started) {
|
||||
loadDataForAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -178,16 +175,13 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
}
|
||||
|
||||
public void loadTrack(final long trackId) {
|
||||
runInHandlerThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (trackId == selectedTrackId) {
|
||||
Log.i(TAG, "Not reloading track " + trackId);
|
||||
return;
|
||||
}
|
||||
selectedTrackId = trackId;
|
||||
loadDataForAll();
|
||||
runInHandlerThread(() -> {
|
||||
if (trackId == selectedTrackId) {
|
||||
Log.i(TAG, "Not reloading track " + trackId);
|
||||
return;
|
||||
}
|
||||
selectedTrackId = trackId;
|
||||
loadDataForAll();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -197,13 +191,10 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
* @param trackDataListener the track data listener
|
||||
*/
|
||||
public void registerTrackDataListener(final TrackDataListener trackDataListener, final boolean tracksTable, final boolean waypointsTable, final boolean trackPointsTable_SampleIn, final boolean trackPointsTable_SampleOut) {
|
||||
runInHandlerThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
trackDataManager.registerTrackDataListener(trackDataListener, tracksTable, waypointsTable, trackPointsTable_SampleIn, trackPointsTable_SampleOut);
|
||||
if (started) {
|
||||
loadDataForListener(trackDataListener);
|
||||
}
|
||||
runInHandlerThread(() -> {
|
||||
trackDataManager.registerTrackDataListener(trackDataListener, tracksTable, waypointsTable, trackPointsTable_SampleIn, trackPointsTable_SampleOut);
|
||||
if (started) {
|
||||
loadDataForListener(trackDataListener);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -214,12 +205,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
* @param trackDataListener the track data listener
|
||||
*/
|
||||
public void unregisterTrackDataListener(final TrackDataListener trackDataListener) {
|
||||
runInHandlerThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
trackDataManager.unregisterTrackDataListener(trackDataListener);
|
||||
}
|
||||
});
|
||||
runInHandlerThread(() -> trackDataManager.unregisterTrackDataListener(trackDataListener));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -238,15 +224,12 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, final String key) {
|
||||
runInHandlerThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (PreferencesUtils.isKey(context, R.string.recording_track_id_key, key)) {
|
||||
recordingTrackId = PreferencesUtils.getRecordingTrackId(context);
|
||||
}
|
||||
if (PreferencesUtils.isKey(context, R.string.recording_track_paused_key, key)) {
|
||||
recordingTrackPaused = PreferencesUtils.isRecordingTrackPaused(context);
|
||||
}
|
||||
runInHandlerThread(() -> {
|
||||
if (PreferencesUtils.isKey(context, R.string.recording_track_id_key, key)) {
|
||||
recordingTrackId = PreferencesUtils.getRecordingTrackId(context);
|
||||
}
|
||||
if (PreferencesUtils.isKey(context, R.string.recording_track_paused_key, key)) {
|
||||
recordingTrackPaused = PreferencesUtils.isRecordingTrackPaused(context);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -289,7 +272,7 @@ public class TrackDataHub implements SharedPreferences.OnSharedPreferenceChangeL
|
||||
if (isOnlyListener) {
|
||||
resetSamplingState();
|
||||
}
|
||||
Set<TrackDataListener> sampledOutListeners = hasSampledOut ? trackDataListeners : Collections.<TrackDataListener>emptySet();
|
||||
Set<TrackDataListener> sampledOutListeners = hasSampledOut ? trackDataListeners : Collections.emptySet();
|
||||
notifyTrackPointsTableUpdate(isOnlyListener, trackDataListeners, sampledOutListeners);
|
||||
}
|
||||
|
||||
|
||||
@@ -910,5 +910,4 @@ public class ContentProviderUtils {
|
||||
public static String[] parseTrackIdsFromUri(Uri url) {
|
||||
return TextUtils.split(url.getLastPathSegment(), ID_SEPARATOR);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class ShareContentProvider extends CustomContentProvider implements ICont
|
||||
|
||||
static long[] parseURI(Uri uri) {
|
||||
List<String> uriPaths = uri.getPathSegments();
|
||||
if (uriPaths == null || uriPaths.size() < 2) {
|
||||
if (uriPaths == null || uriPaths.size() < 3) {
|
||||
Log.d(TAG, "URI does not contain any trackIds.");
|
||||
return new long[]{};
|
||||
}
|
||||
|
||||
@@ -90,12 +90,9 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
||||
boolean metricUnits = PreferencesUtils.isMetricUnits(getContext());
|
||||
if (metricUnits != chartView.getMetricUnits()) {
|
||||
chartView.setMetricUnits(metricUnits);
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
chartView.requestLayout();
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
chartView.requestLayout();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -106,12 +103,9 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
||||
chartView.setReportSpeed(reportSpeed);
|
||||
chartView.applyReportSpeed();
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
chartView.requestLayout();
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
chartView.requestLayout();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -214,12 +208,9 @@ public class ChartFragment extends Fragment implements TrackDataListener {
|
||||
trackStatisticsUpdater = startTime != -1L ? new TrackStatisticsUpdater(startTime) : null;
|
||||
pendingPoints.clear();
|
||||
chartView.reset();
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
chartView.resetScroll();
|
||||
}
|
||||
runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
chartView.resetScroll();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -80,15 +80,12 @@ public class DeleteMarkerDialogFragment extends DialogFragment {
|
||||
fragmentActivity, titleId, getString(messageId), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(fragmentActivity);
|
||||
for (long markerId : markerIds) {
|
||||
contentProviderUtils.deleteWaypoint(getContext(), markerId);
|
||||
}
|
||||
caller.onDeleteMarkerDone();
|
||||
new Thread(() -> {
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(fragmentActivity);
|
||||
for (long markerId : markerIds) {
|
||||
contentProviderUtils.deleteWaypoint(getContext(), markerId);
|
||||
}
|
||||
caller.onDeleteMarkerDone();
|
||||
}).start();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -59,12 +59,9 @@ public class StatisticsRecordedFragment extends Fragment implements TrackDataLis
|
||||
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||
if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) {
|
||||
if (isResumed()) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
updateUI();
|
||||
}
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -195,14 +192,11 @@ public class StatisticsRecordedFragment extends Fragment implements TrackDataLis
|
||||
@Override
|
||||
public void onTrackUpdated(final Track track) {
|
||||
if (isResumed()) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
trackStatistics = track != null ? track.getTrackStatistics() : null;
|
||||
category = track != null ? track.getCategory() : "";
|
||||
updateUI();
|
||||
}
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
trackStatistics = track != null ? track.getTrackStatistics() : null;
|
||||
category = track != null ? track.getCategory() : "";
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -68,12 +68,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
||||
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||
if (PreferencesUtils.isKey(getContext(), R.string.stats_units_key, key) || PreferencesUtils.isKey(getContext(), R.string.stats_rate_key, key)) {
|
||||
if (isResumed()) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
updateUI();
|
||||
}
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -308,14 +305,11 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
||||
@Override
|
||||
public void onTrackUpdated(final Track track) {
|
||||
if (isResumed()) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
lastTrackStatistics = track != null ? track.getTrackStatistics() : null;
|
||||
category = track != null ? track.getCategory() : "";
|
||||
updateUI();
|
||||
}
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
lastTrackStatistics = track != null ? track.getTrackStatistics() : null;
|
||||
category = track != null ? track.getCategory() : "";
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -339,24 +333,21 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
||||
@Override
|
||||
public void onNewTrackPointsDone() {
|
||||
if (isResumed()) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (isResumed()) {
|
||||
if (!isSelectedTrackRecording() || isSelectedTrackPaused()) {
|
||||
getActivity().runOnUiThread(() -> {
|
||||
if (isResumed()) {
|
||||
if (!isSelectedTrackRecording() || isSelectedTrackPaused()) {
|
||||
lastTrackPoint = null;
|
||||
}
|
||||
|
||||
if (lastTrackPoint != null) {
|
||||
boolean hasFix = !LocationUtils.isLocationOld(lastTrackPoint.getLocation());
|
||||
boolean hasGoodFix = TrackPointUtils.fulfillsAccuracy(lastTrackPoint, recordingGpsAccuracy);
|
||||
|
||||
if (!hasFix || !hasGoodFix) {
|
||||
lastTrackPoint = null;
|
||||
}
|
||||
|
||||
if (lastTrackPoint != null) {
|
||||
boolean hasFix = !LocationUtils.isLocationOld(lastTrackPoint.getLocation());
|
||||
boolean hasGoodFix = TrackPointUtils.fulfillsAccuracy(lastTrackPoint, recordingGpsAccuracy);
|
||||
|
||||
if (!hasFix || !hasGoodFix) {
|
||||
lastTrackPoint = null;
|
||||
}
|
||||
}
|
||||
setLocationValues();
|
||||
}
|
||||
setLocationValues();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -424,7 +424,7 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track
|
||||
} else {
|
||||
try {
|
||||
timeValue = StringUtils.parseTime(time);
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (Exception e) {
|
||||
throw new SAXException(createErrorMessage(String.format(Locale.US, "Unable to parse time: %s", time)), e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,12 +150,7 @@ public class TrackRecordingService extends Service {
|
||||
if (locationExecutorService == null || locationExecutorService.isShutdown() || locationExecutorService.isTerminated()) {
|
||||
return;
|
||||
}
|
||||
locationExecutorService.submit(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
onLocationChangedAsync(location);
|
||||
}
|
||||
});
|
||||
locationExecutorService.submit(() -> onLocationChangedAsync(location));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -60,20 +60,10 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||
if (PreferencesUtils.isKey(getActivity(), R.string.recording_track_id_key, key)) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateReset();
|
||||
}
|
||||
});
|
||||
getActivity().runOnUiThread(() -> updateReset());
|
||||
}
|
||||
if (PreferencesUtils.isKey(getActivity(), R.string.stats_units_key, key)) {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updateUnits();
|
||||
}
|
||||
});
|
||||
getActivity().runOnUiThread(() -> updateUnits());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -61,13 +61,10 @@ public class BluetoothUtils {
|
||||
final Object mutex = new Object();
|
||||
|
||||
Handler handler = new Handler(Looper.getMainLooper());
|
||||
handler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
adapters.add(BluetoothAdapter.getDefaultAdapter());
|
||||
synchronized (mutex) {
|
||||
mutex.notify();
|
||||
}
|
||||
handler.post(() -> {
|
||||
adapters.add(BluetoothAdapter.getDefaultAdapter());
|
||||
synchronized (mutex) {
|
||||
mutex.notify();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
@@ -21,32 +23,61 @@ public class IntentDashboardUtils {
|
||||
|
||||
private static final String ACTION_DASHBOARD_PAYLOAD = ACTION_DASHBOARD + ".Payload";
|
||||
|
||||
private static final String EXTRAS_SHOULD_KEEP_SCREEN_ON = "EXTRAS_SHOULD_KEEP_SCREEN_ON";
|
||||
private static final String EXTRAS_SHOW_WHEN_LOCKED = "EXTRAS_SHOULD_KEEP_SCREEN_ON";
|
||||
|
||||
private static int TRACK_URI_INDEX = 0;
|
||||
private static int TRACKPOINTS_URI_INDEX = 1;
|
||||
|
||||
private IntentDashboardUtils() {
|
||||
}
|
||||
|
||||
public static boolean startDashboard(Context context, long[] trackIds) {
|
||||
ArrayList<Uri> uris = new ArrayList<>();
|
||||
/**
|
||||
* Send intent to show tracks on a map (needs an another app) as resource URIs.
|
||||
*
|
||||
* @param context the context
|
||||
* @param trackIds the track ids
|
||||
*/
|
||||
public static void startDashboard(Context context, long[] trackIds) {
|
||||
if (trackIds.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
String trackIdList = ContentProviderUtils.formatIdListForUri(trackIds);
|
||||
|
||||
uris.add(0, Uri.withAppendedPath(TracksColumns.CONTENT_URI, trackIdList));
|
||||
uris.add(1, Uri.withAppendedPath(TrackPointsColumns.CONTENT_URI_BY_TRACKID, trackIdList));
|
||||
ArrayList<Uri> uris = new ArrayList<>();
|
||||
uris.add(TRACK_URI_INDEX, Uri.withAppendedPath(TracksColumns.CONTENT_URI, trackIdList));
|
||||
uris.add(TRACKPOINTS_URI_INDEX, Uri.withAppendedPath(TrackPointsColumns.CONTENT_URI_BY_TRACKID, trackIdList));
|
||||
|
||||
Intent intent = new Intent(ACTION_DASHBOARD);
|
||||
intent.putParcelableArrayListExtra(ACTION_DASHBOARD_PAYLOAD, uris);
|
||||
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.putExtra(EXTRAS_SHOULD_KEEP_SCREEN_ON, PreferencesUtils.shouldKeepScreenOn(context));
|
||||
intent.putExtra(EXTRAS_SHOW_WHEN_LOCKED, PreferencesUtils.shouldShowStatsOnLockscreen(context));
|
||||
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
ClipData clipData = ClipData.newRawUri(null, uris.get(0));
|
||||
clipData.addItem(new ClipData.Item(uris.get(1)));
|
||||
ClipData clipData = ClipData.newRawUri(null, uris.get(TRACK_URI_INDEX));
|
||||
clipData.addItem(new ClipData.Item(uris.get(TRACKPOINTS_URI_INDEX)));
|
||||
intent.setClipData(clipData);
|
||||
|
||||
if (intent.resolveActivity(context.getPackageManager()) != null) {
|
||||
context.startActivity(Intent.createChooser(intent, null));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void startDashboard(Context context, long trackId) {
|
||||
startDashboard(context, new long[]{trackId});
|
||||
}
|
||||
|
||||
public static long[] extractTrackIdsFromIntent(@NonNull Intent intent) {
|
||||
final ArrayList<Uri> uris = intent.getParcelableArrayListExtra(ACTION_DASHBOARD_PAYLOAD);
|
||||
final Uri tracksUri = uris.get(TRACK_URI_INDEX);
|
||||
|
||||
String[] trackIdsString = ContentProviderUtils.parseTrackIdsFromUri(tracksUri);
|
||||
long[] trackIds = new long[trackIdsString.length];
|
||||
for (int i = 0; i < trackIdsString.length; i++) {
|
||||
trackIds[i] = Long.parseLong(trackIdsString[i]);
|
||||
}
|
||||
|
||||
return trackIds;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,12 @@
|
||||
|
||||
package de.dennisguse.opentracks.util;
|
||||
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.MediaStore;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.core.content.FileProvider;
|
||||
|
||||
@@ -35,11 +33,9 @@ import java.util.Date;
|
||||
import de.dennisguse.opentracks.R;
|
||||
import de.dennisguse.opentracks.content.DescriptionGenerator;
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.data.TrackPointsColumns;
|
||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
import de.dennisguse.opentracks.content.provider.ShareContentProvider;
|
||||
import de.dennisguse.opentracks.io.file.TrackFileFormat;
|
||||
|
||||
/**
|
||||
* Utilities for creating intents.
|
||||
@@ -153,42 +149,11 @@ public class IntentUtils {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse(uri));
|
||||
|
||||
try {
|
||||
context.startActivity(intent);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(context, context.getString(R.string.app_not_installed_show_on_map), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
context.startActivity(Intent.createChooser(intent, null));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send intent to show tracks on a map (needs an another app).
|
||||
*
|
||||
* @param context the context
|
||||
* @param trackIds the track ids
|
||||
*/
|
||||
public static void showTrackOnMap(Context context, long[] trackIds) {
|
||||
if (trackIds.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (IntentDashboardUtils.startDashboard(context, trackIds)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.putExtra(TrackPointsColumns.TRACKID, trackIds[0]);
|
||||
Pair<Uri, String> uriAndMime = ShareContentProvider.createURI(trackIds, "SharingTrack", TrackFileFormat.KMZ_WITH_TRACKDETAIL);
|
||||
intent.setDataAndType(uriAndMime.first, uriAndMime.second);
|
||||
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
if (intent.resolveActivity(context.getPackageManager()) != null) {
|
||||
context.startActivity(intent);
|
||||
} else {
|
||||
Toast.makeText(context, context.getString(R.string.app_not_installed_show_on_map), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a take picture request to the camera app.
|
||||
|
||||
@@ -20,12 +20,16 @@ import android.location.Location;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.text.format.DateUtils;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.ParsePosition;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Date;
|
||||
@@ -44,6 +48,8 @@ import de.dennisguse.opentracks.R;
|
||||
*/
|
||||
public class StringUtils {
|
||||
|
||||
private static final String TAG = StringUtils.class.getSimpleName();
|
||||
|
||||
private static final String COORDINATE_DEGREE = "\u00B0";
|
||||
|
||||
//TODO Remove when upgrading to API level 26+.
|
||||
@@ -280,22 +286,27 @@ public class StringUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the time, in milliseconds, from an XML date time string as defined at http://www.w3.org/TR/xmlschema-2/#dateTime
|
||||
* Gets the time, in milliseconds, from an XML date time string (ISO8601) as defined at http://www.w3.org/TR/xmlschema-2/#dateTime
|
||||
* Let's be lenient: if timezone information is not provided, UTC will be used.
|
||||
*
|
||||
* @param xmlDateTime the XML date time string
|
||||
*/
|
||||
public static long parseTime(String xmlDateTime) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
try {
|
||||
TemporalAccessor t = DateTimeFormatter.ISO_DATE_TIME.parse(xmlDateTime);
|
||||
TemporalAccessor t = DateTimeFormatter.ISO_DATE_TIME.parseBest(xmlDateTime, ZonedDateTime::from, LocalDateTime::from);
|
||||
if (t instanceof LocalDateTime) {
|
||||
Log.w(TAG, "Date does not contain timezone information: using UTC.");
|
||||
t = ((LocalDateTime) t).atZone(ZoneOffset.UTC);
|
||||
}
|
||||
return Instant.from(t).toEpochMilli();
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("Invalid XML dateTime value: " + e);
|
||||
Log.e(TAG, "Invalid XML dateTime value");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
//TODO Remove the following when upgrading to API level 26+.
|
||||
//ATTENTION: The following code does not require a time zone (+01 or Z); while ISO_DATE_TIME requires this!
|
||||
|
||||
// Parse the date time base
|
||||
ParsePosition position = new ParsePosition(0);
|
||||
@@ -415,4 +426,8 @@ public class StringUtils {
|
||||
}
|
||||
return new Pair<>(value, unit);
|
||||
}
|
||||
|
||||
public static String valueInParentheses(String text) {
|
||||
return "(" + text + ")";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package de.dennisguse.opentracks.viewmodels;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.stats.TrackStatistics;
|
||||
import de.dennisguse.opentracks.util.TrackIconUtils;
|
||||
|
||||
public class AggregatedStatistics {
|
||||
|
||||
private HashMap<String, AggregatedStatistic> aggregatedStatistics = new HashMap<>();
|
||||
|
||||
public void aggregate(List<Track> tracks) {
|
||||
for (Track track : tracks) {
|
||||
aggregate(track);
|
||||
}
|
||||
}
|
||||
|
||||
public void aggregate(Track track) {
|
||||
String category = track.getCategory();
|
||||
if (aggregatedStatistics.containsKey(category)) {
|
||||
aggregatedStatistics.get(category).add(track.getTrackStatistics());
|
||||
} else {
|
||||
aggregatedStatistics.put(category, new AggregatedStatistic(track.getTrackStatistics()));
|
||||
}
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return aggregatedStatistics.size();
|
||||
}
|
||||
|
||||
public String getSportName(int position) {
|
||||
return getKey(position);
|
||||
}
|
||||
|
||||
public AggregatedStatistic get(String category) {
|
||||
return aggregatedStatistics.get(category);
|
||||
}
|
||||
|
||||
private String getKey(int position) {
|
||||
return (new ArrayList<>(aggregatedStatistics.keySet())).get(position);
|
||||
}
|
||||
|
||||
public AggregatedStatistic getItem(int position) {
|
||||
return (new ArrayList<>(aggregatedStatistics.values())).get(position);
|
||||
}
|
||||
|
||||
public static class AggregatedStatistic {
|
||||
private TrackStatistics trackStatistics;
|
||||
private int countTracks;
|
||||
|
||||
public AggregatedStatistic(TrackStatistics trackStatistics) {
|
||||
this.trackStatistics = trackStatistics;
|
||||
this.countTracks = 1;
|
||||
}
|
||||
|
||||
public TrackStatistics getTrackStatistics() {
|
||||
return trackStatistics;
|
||||
}
|
||||
|
||||
public int getCountTracks() {
|
||||
return countTracks;
|
||||
}
|
||||
|
||||
void add(TrackStatistics statistics) {
|
||||
trackStatistics.merge(statistics);
|
||||
countTracks++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package de.dennisguse.opentracks.viewmodels;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.dennisguse.opentracks.content.data.Track;
|
||||
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
|
||||
|
||||
public class AggregatedStatisticsModel extends AndroidViewModel {
|
||||
|
||||
private MutableLiveData<AggregatedStatistics> aggregatedStats;
|
||||
|
||||
public AggregatedStatisticsModel(@NonNull Application application) {
|
||||
super(application);
|
||||
}
|
||||
|
||||
public LiveData<AggregatedStatistics> getAggregatedStats() {
|
||||
if (aggregatedStats == null) {
|
||||
aggregatedStats = new MutableLiveData<>();
|
||||
loadAggregatedStats();
|
||||
}
|
||||
return aggregatedStats;
|
||||
}
|
||||
|
||||
private void loadAggregatedStats() {
|
||||
new Thread(() -> {
|
||||
ContentProviderUtils contentProviderUtils = new ContentProviderUtils(getApplication().getApplicationContext());
|
||||
List<Track> tracks = contentProviderUtils.getAllTracks();
|
||||
|
||||
AggregatedStatistics aggregatedStatistics = new AggregatedStatistics();
|
||||
aggregatedStatistics.aggregate(tracks);
|
||||
|
||||
aggregatedStats.postValue(aggregatedStatistics);
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="100"
|
||||
android:viewportHeight="100">
|
||||
<path
|
||||
android:fillColor="#000000"
|
||||
android:pathData="M82.489,12.834C83.196,10.418 82.043,9.556 79.926,10.917L10.087,55.828c-2.117,1.361 -1.795,2.628 0.714,2.815L39.806,60.807c2.51,0.188 5.291,2.267 6.18,4.621l10.282,27.208c0.89,2.354 2.195,2.304 2.902,-0.111z" />
|
||||
</vector>
|
||||
@@ -0,0 +1,33 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<group
|
||||
android:scaleX="0.56"
|
||||
android:scaleY="0.56"
|
||||
android:translateX="23.76"
|
||||
android:translateY="23.76">
|
||||
<path
|
||||
android:strokeWidth="1"
|
||||
android:pathData="M85.133,20.59C85.731,18.546 84.756,17.817 82.965,18.968L23.874,56.967c-1.791,1.152 -1.519,2.224 0.604,2.382L49.019,61.18c2.124,0.159 4.477,1.918 5.229,3.91l8.7,23.021c0.753,1.992 1.857,1.949 2.455,-0.094z"
|
||||
android:strokeColor="#f69123">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="80.33152"
|
||||
android:startX="38.773293"
|
||||
android:endY="19.211866"
|
||||
android:endX="84.4913"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:offset="0"
|
||||
android:color="#FFFBB22F" />
|
||||
<item
|
||||
android:offset="1"
|
||||
android:color="#FFF58820" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM9,17L7,17v-7h2v7zM13,17h-2L11,7h2v10zM17,17h-2v-4h2v4z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/toolbar" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/aggregated_stats_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1.0" />
|
||||
</LinearLayout>
|
||||
@@ -0,0 +1,150 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="24dp">
|
||||
|
||||
<!-- Guidelines -->
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guideline1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_begin="8dp" />
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guideline2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.5" />
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guideline3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_end="8dp" />
|
||||
|
||||
<!-- Icon and sport name -->
|
||||
<ImageView
|
||||
android:id="@+id/aggregated_stats_sport_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintLeft_toLeftOf="@id/guideline1"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_activity_bike_24dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_type_label"
|
||||
style="@style/StatsLargeLabel"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginBottom="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_sport_icon"
|
||||
app:layout_constraintLeft_toRightOf="@+id/aggregated_stats_sport_icon"
|
||||
app:layout_constraintTop_toTopOf="@+id/aggregated_stats_sport_icon"
|
||||
tools:text="@string/activity_type_cycling"
|
||||
android:layout_marginLeft="16dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_num_tracks"
|
||||
style="@style/StatsLargeLabel"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginBottom="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_type_label"
|
||||
app:layout_constraintLeft_toRightOf="@+id/aggregated_stats_type_label"
|
||||
app:layout_constraintTop_toTopOf="@+id/aggregated_stats_type_label"
|
||||
tools:text="(1)"
|
||||
android:layout_marginLeft="4dp" />
|
||||
|
||||
<!-- Distance -->
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_distance"
|
||||
style="@style/StatsLargeValue"
|
||||
app:layout_constraintLeft_toLeftOf="@id/guideline1"
|
||||
app:layout_constraintTop_toBottomOf="@+id/aggregated_stats_sport_icon"
|
||||
tools:text="100000"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginTop="16dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_distance_unit"
|
||||
style="@style/StatsUnit"
|
||||
android:textColor="@android:color/white"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_distance"
|
||||
app:layout_constraintLeft_toRightOf="@+id/aggregated_stats_distance"
|
||||
tools:text="km" />
|
||||
|
||||
<!-- Time -->
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_time"
|
||||
style="@style/StatsLargeValue"
|
||||
app:layout_constraintRight_toRightOf="@id/guideline3"
|
||||
app:layout_constraintTop_toBottomOf="@+id/aggregated_stats_sport_icon"
|
||||
tools:text="00:00:00"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="16dp" />
|
||||
|
||||
<!-- Avg. rate -->
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_avg_rate"
|
||||
style="@style/StatsSmallValue"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintTop_toBottomOf="@id/aggregated_stats_distance"
|
||||
app:layout_constraintLeft_toRightOf="@id/guideline1"
|
||||
app:layout_constraintRight_toLeftOf="@+id/aggregated_stats_avg_rate_unit"
|
||||
android:layout_marginTop="24dp"
|
||||
tools:text="30" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_avg_rate_unit"
|
||||
style="@style/StatsUnit"
|
||||
android:textColor="@android:color/white"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_avg_rate"
|
||||
app:layout_constraintLeft_toRightOf="@+id/aggregated_stats_avg_rate"
|
||||
app:layout_constraintRight_toRightOf="@id/guideline2"
|
||||
tools:text="km/h" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_avg_rate_label"
|
||||
style="@style/StatsTinyLabel"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintTop_toBottomOf="@+id/aggregated_stats_avg_rate"
|
||||
app:layout_constraintLeft_toRightOf="@id/guideline1"
|
||||
app:layout_constraintRight_toRightOf="@id/guideline2"
|
||||
tools:text="@string/stats_average_moving_speed" />
|
||||
|
||||
<!-- Max. rate -->
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_max_rate"
|
||||
style="@style/StatsSmallValue"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintTop_toBottomOf="@id/aggregated_stats_time"
|
||||
app:layout_constraintLeft_toRightOf="@id/guideline2"
|
||||
app:layout_constraintRight_toLeftOf="@+id/aggregated_stats_max_rate_unit"
|
||||
android:layout_marginTop="24dp"
|
||||
tools:text="70" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_max_rate_unit"
|
||||
style="@style/StatsUnit"
|
||||
android:textColor="@android:color/white"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/aggregated_stats_max_rate"
|
||||
app:layout_constraintLeft_toRightOf="@+id/aggregated_stats_max_rate"
|
||||
app:layout_constraintRight_toLeftOf="@id/guideline3"
|
||||
tools:text="km/h" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/aggregated_stats_max_rate_label"
|
||||
style="@style/StatsTinyLabel"
|
||||
app:layout_constrainedWidth="true"
|
||||
app:layout_constraintTop_toBottomOf="@+id/aggregated_stats_max_rate"
|
||||
app:layout_constraintLeft_toRightOf="@id/guideline2"
|
||||
app:layout_constraintRight_toLeftOf="@id/guideline3"
|
||||
tools:text="@string/stats_max_speed" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -28,6 +28,11 @@ limitations under the License.
|
||||
android:title="@string/menu_start_gps"
|
||||
android:visible="false"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/track_list_aggregated_stats"
|
||||
android:icon="@drawable/ic_statistics_24dp"
|
||||
android:title="@string/menu_aggregated_statistics"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/track_list_markers"
|
||||
android:icon="@drawable/ic_marker_show_24dp"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_logo_color_108dp" />
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_debug_background" />
|
||||
<foreground android:drawable="@drawable/ic_logo_color_108dp" />
|
||||
</adaptive-icon>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
@@ -1,5 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">O OpenTracks</string>
|
||||
<string name="about_description"><i> OpenTracks </i> je sportovní sledovací aplikace, která zcela respektuje vaše soukromí.</string>
|
||||
<string name="about_url">Webová stránka projektu: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Název verze: %1$s</string>
|
||||
<string name="about_version_code">Kód verze: %1$d</string>
|
||||
<string name="about_history">OpenTracks je vidlička <a href="https://code.google.com/archive/p/mytracks/"> <i> MyTracks Google </i> </a> (v roce 2016 ukončena).</string>
|
||||
<string name="about_libraries">Knihovny</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks má následující funkce:</string>
|
||||
<string name="help_feature_content">
|
||||
* vytvářet GPS stopy \ n
|
||||
* použijte snímač srdeční frekvence (pouze Bluetooth LE) \ n
|
||||
* hlasová oznámení (podle času nebo vzdálenosti) \ n
|
||||
* vytvářejte značky (včetně obrázků) \ n
|
||||
* funguje zcela offline \ n
|
||||
* zobrazit skladby na mapě (viz níže)</string>
|
||||
|
||||
<string name="help_track_map_title">Jak ukázat skladbu na mapě?</string>
|
||||
<string name="help_track_map_content">
|
||||
Použijte malou ikonu mapy.\n
|
||||
a) (živé aktualizace) Nainstalujte <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Poskytuje online nebo offline mapy prostřednictvím <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
Ve skutečnosti je OSMDashboard samostatná aplikace, která má přístup (dočasně) pouze k datům stop, které se bud(ou) zobrazovat.\n
|
||||
b) Prostřednictvím „normální“ mapové aplikace (např. <a href="http://osmand.net/">OsmAnd</a> a <a href="https://maps.me/">MAPS.ME</a>).
|
||||
Tyto aplikace musí podporovat formát souboru KMZ (pouze umístění a časová razítka).
|
||||
Ve skutečnosti musí aplikace podporovat <i>ACTION_VIEW</i> pomocí MIME <i>application/vnd.google-earth.kmz</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">Jak ukládá OpenTracks obrázky pořízené jako značky?</string>
|
||||
<string name="help_storage_pictures_content">Jsou uloženy v interním úložišti aplikace (tj. Přístupné pouze v rámci OpenTracks).</string>
|
||||
|
||||
<string name="help_track_export_title">Jak mohu exportovat / sdílet zaznamenané stopy?</string>
|
||||
<string name="help_track_export_content">
|
||||
Skladby lze exportovat z Nastavení jako KMZ, KML nebo GPX.
|
||||
KMZ / KML všechna data; Pouze umístění GPX.
|
||||
Skladby sdílené pomocí ikony sdílení <i> </i> jsou sdíleny jako KMZ.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">Vyžaduje služba OpenTracks / používá službu Google Play?</string>
|
||||
|
||||
<string name="help_recording_title">Jak OpenTracks zaznamenává data?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks používá GPS senzor zařízení k nepřetržitému zaznamenávání polohy.
|
||||
Pokud zařízení GPS hlásí nepřesná data (např. Polohu, rychlost, nadmořskou výšku), OpenTracks s tím nemůže nic udělat.</string>
|
||||
|
||||
<string name="help_data_storage_title">Jak OpenTracks ukládá data senzorů?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Data senzoru se ukládají na zaznamenané místo.
|
||||
Pokud jde o snímač srdeční frekvence, znamená to, že na každé místo je uloženo pouze <i> jedno </i> měření srdeční frekvence.
|
||||
Pokud stojíte v klidu nebo jste uvnitř, nebudou zaznamenána žádná data ze senzorů (ale budou zobrazena).</string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks nezaznamenává místa?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Co můžete udělat: \ n
|
||||
a) zkontrolujte, zda je GPS povoleno, \ n
|
||||
b) zlepšit příjem GPS (např. jít venku), \ n
|
||||
c) zkontrolujte, zda používáte aplikaci <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/"> GPSTest </a> a \ n
|
||||
d) deaktivujte úsporu energie. \ n
|
||||
\ n
|
||||
Pokud všechno nepomůže, nahláste chybu.</string>
|
||||
|
||||
<string name="help_support_title">Jak mohu podporovat OpenTracks?</string>
|
||||
<string name="help_support_content">
|
||||
Můžete: \ n
|
||||
a) šířit slovo o OpenTracks, \ n
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> navrhnout funkce </a>, \ n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> nahlaste chyby </a>, \ n
|
||||
d) pomoc při vývoji softwaru, \ n
|
||||
e) nakupujte v <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore"> Obchod Google Play </a>, \ n
|
||||
f) darovat, a \ n
|
||||
g) udělejte, co si myslíte, že pomůže OpenTracks.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">letadlo</string>
|
||||
<string name="activity_type_atv">terénní auta</string>
|
||||
<string name="activity_type_biking">cyklistika</string>
|
||||
@@ -66,6 +151,8 @@
|
||||
<string name="activity_type_walking">chůze</string>
|
||||
<string name="activity_type_water_skiing">vodní lyžování</string>
|
||||
<string name="activity_type_wind_surfing">windsurfing</string>
|
||||
<string name="app_not_installed_show_on_map">Nainstalujte prosím aplikaci, která podporuje prezentaci mapových dat.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Typ aktivity: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Průměrné tempo pohybu: %1$s min/km (%2$s min/míli)</string>
|
||||
<string name="description_average_moving_speed">Průměrná rychlost přesunu: %1$.2f km/h (%2$.1f mil/h)</string>
|
||||
@@ -93,6 +180,7 @@
|
||||
<string name="description_sensor_cadence">Tempo šlapání (ot./min)</string>
|
||||
<string name="description_sensor_heart_rate">Srdeční frekvence (údery/min)</string>
|
||||
<string name="description_sensor_power">Výkon (W)</string>
|
||||
<string name="description_default_speed_or_pace">Podle typu činnosti</string>
|
||||
<string name="description_speed_imperial">Rychlost (míle/h)</string>
|
||||
<string name="description_speed_metric">Rychlost (km/h)</string>
|
||||
<string name="description_time">Doba</string>
|
||||
@@ -100,19 +188,25 @@
|
||||
<string name="description_total_time">Celková doba: %1$s</string>
|
||||
<string name="description_track_point">Bod</string>
|
||||
<string name="description_track_segment">Segment</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Vše ve formátu %1$s</string>
|
||||
<string name="export_all_title">Export do externího úložiště</string>
|
||||
<string name="export_with_photos">s fotkami</string>
|
||||
<string name="export_without_photos">bez fotografií</string>
|
||||
<string name="export_error">Trasy byly exportovány do složky %3$s (%1$d z %2$s).</string>
|
||||
<string name="export_option">jako %1$s do složky %2$s</string>
|
||||
<string name="export_progress_message">Exportování do složky %1$s…</string>
|
||||
<string name="export_success">Trasy (celkem %1$s) byly exportovány do složky %2$s.</string>
|
||||
<string name="export_title">Export do…</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d soubory</string>
|
||||
<string name="files_many">%1$d souborů</string>
|
||||
<string name="files_one">1 soubor</string>
|
||||
<string name="files_other">%1$d souborů</string>
|
||||
<string name="files_two">2 soubory</string>
|
||||
<string name="files_zero">0 souborů</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Přidat</string>
|
||||
<string name="generic_cancel">Zrušit</string>
|
||||
<string name="generic_delete_all_confirm_title">Smazat vše?</string>
|
||||
@@ -131,6 +225,7 @@
|
||||
<string name="generic_success_title">Úspěch</string>
|
||||
<string name="generic_tracks">Trasy</string>
|
||||
<string name="generic_yes">Ano</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">Přístup k poloze</string>
|
||||
<string name="gps_disabled">Systém GPS není zapnutý. Klepnutím sem přejdete na možnost %1$s. Stisknutím tlačítka Zpět se vrátíte.</string>
|
||||
<string name="gps_disabled_my_location">Aktuální polohu nelze určit. V části %1$s aktivujte další zdroje pro zjišťování polohy a ujistěte se, že vidíte oblohu. Zkuste to znovu později.</string>
|
||||
@@ -138,6 +233,7 @@
|
||||
<string name="gps_starting">Spouštění GPS</string>
|
||||
<string name="gps_wait_for_better_signal">Čekání na lepší signál GPS</string>
|
||||
<string name="gps_wait_for_signal">Čekání na signál GPS</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Aplikace</string>
|
||||
<string name="image_arrow">Šipka</string>
|
||||
<string name="image_marker">Značka</string>
|
||||
@@ -148,6 +244,7 @@
|
||||
<string name="image_record">Zaznamenat</string>
|
||||
<string name="image_stop">Ukončit</string>
|
||||
<string name="image_track">Trasa</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">Trasy byly importovány ze složky %3$s (%1$d z %2$s).</string>
|
||||
<string name="import_no_directory">Složka %1$s neexistuje.</string>
|
||||
<string name="import_no_file">Nebyly nalezeny žádné soubory, které by bylo možné importovat. Připojte zařízení k počítači a umístěte soubory, které chcete importovat, do složky %1$s.</string>
|
||||
@@ -156,9 +253,11 @@
|
||||
<string name="import_selection_option">Všechny soubory %1$s</string>
|
||||
<string name="import_selection_title">Import z externího úložiště</string>
|
||||
<string name="import_success">Trasy (celkem %1$s) byly importovány ze složky %2$s.</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">Značku nelze vložit. Signál GPS není dostupný. Zkuste to znovu.</string>
|
||||
<string name="marker_add_success">Značka byla vložena.</string>
|
||||
<string name="marker_add_canceled">Zrušeno, značky nebyly přidány.</string>
|
||||
<string name="marker_add_photo_canceled">Zrušeno, nebyla přidána žádná značka</string>
|
||||
<string name="marker_delete_all_confirm_message">Všechny značky této trasy budou trvale smazány ze zařízení.</string>
|
||||
<string name="marker_delete_one_confirm_message">Značka bude trvale smazána ze zařízení.</string>
|
||||
<string name="marker_delete_one_confirm_title">Smazat značku?</string>
|
||||
@@ -168,10 +267,14 @@
|
||||
<string name="marker_name_format">Značka %1$d</string>
|
||||
<string name="marker_split_name_format">Dělicí značka %1$d</string>
|
||||
<string name="marker_title">%1$d z %2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Od poslední dělicí značky:</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Typ značky (například vodopád…)</string>
|
||||
<string name="marker_edit_marker_type_hint">Typ značky</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">Nemáte žádné značky.</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Souhrnná statistika</string>
|
||||
<string name="menu_delete">Smazat</string>
|
||||
<string name="menu_edit">Upravit</string>
|
||||
@@ -180,6 +283,7 @@
|
||||
<string name="menu_import_all">Importovat vše</string>
|
||||
<string name="menu_insert_marker">Vložit značku</string>
|
||||
<string name="menu_insert_photo">Vložit fotku</string>
|
||||
<string name="menu_insert_gallery_img">Vložte obrázek galerie</string>
|
||||
<string name="menu_markers">Značky</string>
|
||||
<string name="menu_search">Vyhledat</string>
|
||||
<string name="menu_select_all">Vybrat vše</string>
|
||||
@@ -192,11 +296,17 @@
|
||||
<string name="menu_stop_gps">Ukončit GPS</string>
|
||||
<string name="menu_view_photo">Zobrazit fotku</string>
|
||||
<string name="menu_voice_frequency">Frekvence oznámení</string>
|
||||
<string name="menu_resume_track">Obnovit skladbu</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Služba pro záznam</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks vyžaduje povolení k používání GPS.</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Trasy a značky</string>
|
||||
<string name="search_list_empty_message">Vyhledávacímu dotazu neodpovídají žádné trasy ani značky.</string>
|
||||
<string name="search_list_marker_track_location">Na trase %1$s</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Stav baterie</string>
|
||||
<string name="sensor_state_cadence">Frekvence šlapání</string>
|
||||
<string name="sensor_state_cadence_value">%1$d ot./min</string>
|
||||
@@ -205,12 +315,22 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d úderů/min</string>
|
||||
<string name="sensor_state_power">Napájení</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Senzor %1$s není znám. Zkontrolujte nastavení.</string>
|
||||
<string name="sensor_could_not_scan">Nelze vyhledat zařízení Bluetooth (chyba %1$i).</string>
|
||||
<string name="bluetooth_disabled">Aktivujte prosím Bluetooth.</string>
|
||||
<string name="settings_not_while_recording">Při záznamu trasy není tato funkce dostupná.</string>
|
||||
<string name="settings_show">Zobrazit</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Pokročilé</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Podle vzdálenosti</string>
|
||||
<string name="settings_chart_by_time">Podle doby</string>
|
||||
<string name="settings_chart_x_axis">Osa X</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Zobrazit statistiky na obrazovce uzamčení</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Během nahrávání zobrazte statistiky bez odemknutí zařízení.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Nechte obrazovku zapnutou</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Během nahrávání udržujte obrazovku zapnutou.</string>
|
||||
<string name="settings_recording">Záznam</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Po restartu vždy pokračovat v záznamu</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">Po restartu nikdy nepokračovat v záznamu</string>
|
||||
@@ -228,21 +348,32 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Datum (místní)</string>
|
||||
<string name="settings_recording_track_name_number_option">Číslo</string>
|
||||
<string name="settings_recording_track_name_title">Výchozí název trasy</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Resetovat</string>
|
||||
<string name="settings_reset_confirm_message">Všechna nastavení budou obnovena na výchozí hodnoty.</string>
|
||||
<string name="settings_reset_confirm_title">Resetovat nyní?</string>
|
||||
<string name="settings_reset_done">Všechna nastavení byla obnovena na výchozí hodnoty.</string>
|
||||
<string name="settings_error_initial_values_restored">Litujeme, ale došlo k chybě. Všechna nastavení byla vrácena na výchozí hodnoty.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Senzor</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Senzor Bluetooth</string>
|
||||
<string name="settings_sensor_connecting">Připojeno k senzoru %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Odpojeno od %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Velikost kola (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Zeměpisná šířka/délka</string>
|
||||
<string name="settings_stats_rate_title">Preferovaná rychlost</string>
|
||||
<string name="settings_stats_units_imperial">Imperiální jednotky (míle, stopy)</string>
|
||||
<string name="settings_stats_units_metric">Metrické jednotky (km, m)</string>
|
||||
<string name="settings_stats_units_title">Preferované jednotky</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Sdílet soubor trasy</string>
|
||||
<string name="share_track_share_file_body">Možná by vás mohla zajímat tato trasa.\n\nChcete-li ji zobrazit, použijte Google Earth nebo jiný mapový software.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Chci s vámi sdílet trasu</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Průměrné tempo pohybu</string>
|
||||
<string name="stats_average_moving_speed">Průměrná rychlost pohybu</string>
|
||||
<string name="stats_average_pace">Průměrné tempo</string>
|
||||
@@ -261,25 +392,36 @@
|
||||
<string name="stats_speed">Rychlost</string>
|
||||
<string name="stats_distance">Vzdálenost</string>
|
||||
<string name="stats_total_time">Celková doba</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">Trasa %1$d</string>
|
||||
<string name="track_record_notification">Záznam trasy…</string>
|
||||
<string name="track_recording_notification_accuracy">Přesnost polohy: %1$s</string>
|
||||
<string name="track_markers">Značky na trase %1$s</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">Trasa a související značky budou trvale smazány ze zařízení.</string>
|
||||
<string name="track_delete_one_confirm_title">Smazat trasu?</string>
|
||||
<string name="track_delete_multiple_confirm_message">Vybrané trasy a jejich značky budou trvale smazány ze zařízení.</string>
|
||||
<string name="track_delete_progress_message">Mazání…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Graf</string>
|
||||
<string name="track_detail_stats_tab">Statistika</string>
|
||||
<string name="track_detail_record_success">Zaznamenávání nové trasy</string>
|
||||
<string name="track_detail_resume_success">Nyní se obnovuje skladba</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Typ aktivity (například chůze…)</string>
|
||||
<string name="track_edit_activity_type_hint">Typ aktivity</string>
|
||||
<string name="track_edit_new_track_title">Nová trasa</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Zde zaznamenejte příští výpravu</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d trasy</string>
|
||||
<string name="tracks_many">%1$d tras</string>
|
||||
<string name="tracks_one">1 trasa</string>
|
||||
<string name="tracks_other">%1$d tras</string>
|
||||
<string name="tracks_two">2 trasy</string>
|
||||
<string name="tracks_zero">0 tras</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">stop</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
@@ -288,6 +430,7 @@
|
||||
<string name="unit_mile_per_hour">mil/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/míle</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Přizpůsobit na přesnost</string>
|
||||
<string name="value_adapt_battery_life">Přizpůsobit výdrži baterie</string>
|
||||
<string name="value_always">Vždy</string>
|
||||
@@ -314,6 +457,7 @@
|
||||
<string name="value_off">Vypnuto</string>
|
||||
<string name="value_smallest">Nejmenší</string>
|
||||
<string name="value_smallest_recommended">Nejnižší hodnota (doporučeno)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d hodiny</string>
|
||||
<string name="voice_hours_many">%1$d hodin</string>
|
||||
<string name="voice_hours_one">1 hodina</string>
|
||||
@@ -360,6 +504,7 @@
|
||||
<string name="voice_total_distance_miles_two">celková vzdálenost 2 míle</string>
|
||||
<string name="voice_total_distance_miles_zero">celková vzdálenost 0 mil</string>
|
||||
<string name="voice_total_distance_zero">Celková vzdálenost Mých tras je nulová.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">Bankomat</string>
|
||||
<string name="waypoint_type_bank">banka</string>
|
||||
<string name="waypoint_type_bar">bar</string>
|
||||
@@ -411,4 +556,7 @@
|
||||
<string name="waypoint_type_waterfall">vodopád</string>
|
||||
<string name="waypoint_type_water_fountain">kašna</string>
|
||||
<string name="waypoint_type_waypoint">navigační bod</string>
|
||||
<!-- Share image -->
|
||||
<string name="share_image_subject">Chtěl bych s vámi sdílet obrázek</string>
|
||||
<string name="share_image_body">Myslím, že by vás mohl tento obrázek zajímat.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,91 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">Om OpenTracks</string>
|
||||
<string name="about_description"><i> OpenTracks </i> er en sportssporingsapplikation, der fuldt ud respekterer dit privatliv.</string>
|
||||
<string name="about_url">Projektwebside: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Versionsnavn: %1$s</string>
|
||||
<string name="about_version_code">Versionskode: %1$d</string>
|
||||
<string name="about_history">OpenTracks er en gaffel fra <a href="https://code.google.com/archive/p/mytracks/"> <i> Googles MyTracks </i> </a> (afviklet i 2016).</string>
|
||||
<string name="about_libraries">Biblioteker</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks har følgende funktioner:</string>
|
||||
<string name="help_feature_content">
|
||||
* Opret GPS-spor \n
|
||||
* Brug en pulssensor (kun Bluetooth LE) \n
|
||||
* stemmemeddelelser (efter tid eller afstand) \n
|
||||
* Opret markører (inkl. billeder) \n
|
||||
* fungerer helt offline \n
|
||||
* vis spor på et kort (se nedenfor)</string>
|
||||
|
||||
<string name="help_track_map_title">Hvordan viser man et spor på et kort?</string>
|
||||
<string name="help_track_map_content">
|
||||
Brug det lille kortikon. \n
|
||||
a)
|
||||
(liveopdateringer) Installer <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Det giver online eller offline kort via <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
Faktisk er OSMDashboard en separat app, der kun kan få adgang til (midlertidigt) adgang til dataene fra spor (e), der skal vises.\n
|
||||
b) Via et normalt kortprogram (f.eks. <a href="http://osmand.net/">OsmAnd</a> og <a href="https://maps.me/">MAPS.ME</a>).
|
||||
Disse app skal understøtte KMZ-filformatet (kun placeringer og tidsstempler).
|
||||
Faktisk skal en app understøtte <i>ACTION_VIEW</i> med MIME <i>application/vnd.google-earth.kmz</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">Hvordan gemmer OpenTracks billeder, der blev taget som markører?</string>
|
||||
<string name="help_storage_pictures_content">Disse gemmes i appens interne lager (dvs. kun tilgængelig inden for OpenTracks).</string>
|
||||
|
||||
<string name="help_track_export_title">Hvordan kan jeg eksportere / dele indspillede numre?</string>
|
||||
<string name="help_track_export_content">
|
||||
Spor kan eksporteres fra indstillingerne som KMZ, KML eller GPX.
|
||||
KMZ / KML alle data; GPX kun placeringer.
|
||||
Spor, der deles via <i>delingsikonet</i> deles som KMZ.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">Kræver/bruger OpenTracks Google Play Service?</string>
|
||||
|
||||
<string name="help_recording_title">Hvordan registrerer OpenTracks data?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks bruger enhedens GPS-sensor til at registrere placeringen kontinuerligt.
|
||||
Hvis GPS-enheden rapporterer unøjagtige data (f.eks. Placering, hastighed, højde), kan OpenTracks ikke gøre noget ved det.</string>
|
||||
|
||||
<string name="help_data_storage_title">Hvordan gemmer OpenTracks sensordata?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Sensordata gemmes pr. Optaget placering.
|
||||
Med hensyn til en pulssensor betyder det, at der kun er <i> en </i> måling af hjertefrekvensen lagret pr. Placering.
|
||||
Hvis du står stille eller er indendørs, registreres ingen sensordata (men de vil blive vist).</string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks optager ikke placeringer?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Hvad du kan gøre:\n
|
||||
a) Kontroller, om GPS er aktiveret,\n
|
||||
b) forbedre GPS-modtagelse (f.eks. gå udendørs), \n
|
||||
c) Kontroller, om du har appen <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/"> GPSTest </a> og \n
|
||||
d) deaktiver strømbesparelse. \n
|
||||
\n
|
||||
Hvis alt ikke hjælper, skal du rapportere en fejl.</string>
|
||||
|
||||
<string name="help_support_title">Hvordan kan jeg støtte OpenTracks?</string>
|
||||
<string name="help_support_content">
|
||||
Du kan: \n
|
||||
a) sprede ordet om OpenTracks, \n
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> foreslå funktioner </a>, \n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> rapportfejl </a>, \n
|
||||
d) hjælp til softwareudvikling, \n
|
||||
e) køb i <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore"> Google Play Store </a>, \n
|
||||
f) donere, og \n
|
||||
g) gør hvad du synes hjælper OpenTracks.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">fly</string>
|
||||
<string name="activity_type_atv">Terrængående køretøj</string>
|
||||
<string name="activity_type_biking">cykling</string>
|
||||
@@ -66,6 +152,8 @@
|
||||
<string name="activity_type_walking">til fods</string>
|
||||
<string name="activity_type_water_skiing">vandski</string>
|
||||
<string name="activity_type_wind_surfing">windsurfing</string>
|
||||
<string name="app_not_installed_show_on_map">Installer venligst en app, der understøtter præsentation af kortdata.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Aktivitetstype: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Gennemsnitsfart: %1$s min./km (%2$s min./mil)</string>
|
||||
<string name="description_average_moving_speed">Gennemsnitlig bevægelseshastighed: %1$.2f km/t (%2$.1f mil/t)</string>
|
||||
@@ -93,6 +181,7 @@
|
||||
<string name="description_sensor_cadence">Kadence (omdr./min.)</string>
|
||||
<string name="description_sensor_heart_rate">Puls (slag/min.)</string>
|
||||
<string name="description_sensor_power">Effekt (W)</string>
|
||||
<string name="description_default_speed_or_pace">Efter aktivitetstype</string>
|
||||
<string name="description_speed_imperial">Hastighed (mil/t)</string>
|
||||
<string name="description_speed_metric">Hastighed (km/t)</string>
|
||||
<string name="description_time">Tid</string>
|
||||
@@ -100,19 +189,25 @@
|
||||
<string name="description_total_time">Samlet tid: %1$s</string>
|
||||
<string name="description_track_point">Punkt</string>
|
||||
<string name="description_track_segment">Segment</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Alle som %1$s</string>
|
||||
<string name="export_all_title">Eksportér til eksternt lager</string>
|
||||
<string name="export_with_photos">med fotos</string>
|
||||
<string name="export_without_photos">uden fotos</string>
|
||||
<string name="export_error">%1$d af %2$s blev eksporteret til %3$s</string>
|
||||
<string name="export_option">som %1$s til %2$s</string>
|
||||
<string name="export_progress_message">Eksporterer til %1$s…</string>
|
||||
<string name="export_success">%1$s blev eksporteret til %2$s</string>
|
||||
<string name="export_title">Eksportér til…</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d filer</string>
|
||||
<string name="files_many">%1$d filer</string>
|
||||
<string name="files_one">1 fil</string>
|
||||
<string name="files_other">%1$d filer</string>
|
||||
<string name="files_two">2 filer</string>
|
||||
<string name="files_zero">0 filer</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Tilføj</string>
|
||||
<string name="generic_cancel">Annuller</string>
|
||||
<string name="generic_delete_all_confirm_title">Skal alle slettes?</string>
|
||||
@@ -131,6 +226,7 @@
|
||||
<string name="generic_success_title">Gennemført</string>
|
||||
<string name="generic_tracks">Ruter</string>
|
||||
<string name="generic_yes">Ja</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">\"Placeringsadgang\"</string>
|
||||
<string name="gps_disabled">GPS er ikke aktiveret. Tryk her for at gå til %1$s. Tryk på knappen Tilbage for at vende tilbage.</string>
|
||||
<string name="gps_disabled_my_location">Den aktuelle placering kan ikke bestemmes. Aktivér flere placeringskilder i %1$s, og sørg for, at
|
||||
@@ -139,6 +235,7 @@
|
||||
<string name="gps_starting">Starter GPS</string>
|
||||
<string name="gps_wait_for_better_signal">Venter på et bedre GPS-signal</string>
|
||||
<string name="gps_wait_for_signal">Venter på GPS-signal</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Applikation</string>
|
||||
<string name="image_arrow">Pil</string>
|
||||
<string name="image_marker">Markør</string>
|
||||
@@ -149,6 +246,7 @@
|
||||
<string name="image_record">Registrer</string>
|
||||
<string name="image_stop">Stop</string>
|
||||
<string name="image_track">Rute</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">%1$d af %2$s er importeret fra %3$s</string>
|
||||
<string name="import_no_directory">%1$s findes ikke</string>
|
||||
<string name="import_no_file">Der var ingen filer at importere. Slut din enhed til din computer, og placer filer, der skal
|
||||
@@ -158,9 +256,11 @@
|
||||
<string name="import_selection_option">Alle %1$s</string>
|
||||
<string name="import_selection_title">Importér fra eksternt lager</string>
|
||||
<string name="import_success">%1$s er importeret fra %2$s</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">En markør kan ikke indsættes. Intet GPS-signal. Prøv igen.</string>
|
||||
<string name="marker_add_success">Der blev indsat en markør</string>
|
||||
<string name="marker_add_canceled">Annulleret, ingen markør blev tilføjet</string>
|
||||
<string name="marker_add_photo_canceled">Annulleret, ingen fotomarkering tilføjet</string>
|
||||
<string name="marker_delete_all_confirm_message">Alle markører for denne rute slettes permanent fra enheden</string>
|
||||
<string name="marker_delete_one_confirm_message">Markøren slettes permanent fra enheden</string>
|
||||
<string name="marker_delete_one_confirm_title">Vil du slette markøren?</string>
|
||||
@@ -170,10 +270,14 @@
|
||||
<string name="marker_name_format">Markør %1$d</string>
|
||||
<string name="marker_split_name_format">Deling %1$d</string>
|
||||
<string name="marker_title">%1$d af %2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Siden sidste delte markør:</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Markørtype (f.eks. vandfald)</string>
|
||||
<string name="marker_edit_marker_type_hint">Markørtype</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">Du har ingen markører</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Samlet statistik</string>
|
||||
<string name="menu_delete">Slet</string>
|
||||
<string name="menu_edit">Rediger</string>
|
||||
@@ -182,6 +286,7 @@
|
||||
<string name="menu_import_all">Importér alle</string>
|
||||
<string name="menu_insert_marker">Indsæt markør</string>
|
||||
<string name="menu_insert_photo">Indsæt billede</string>
|
||||
<string name="menu_insert_gallery_img">Indsæt galleribillede</string>
|
||||
<string name="menu_markers">Markører</string>
|
||||
<string name="menu_search">Søg</string>
|
||||
<string name="menu_select_all">Vælg alle</string>
|
||||
@@ -194,11 +299,17 @@
|
||||
<string name="menu_stop_gps">Stop GPS</string>
|
||||
<string name="menu_view_photo">Se billede</string>
|
||||
<string name="menu_voice_frequency">Stemmefrekvens</string>
|
||||
<string name="menu_resume_track">Genoptag sporet</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Registreringstjeneste</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks kræver tilladelse til at bruge GPS.</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Ruter og markører</string>
|
||||
<string name="search_list_empty_message">Ingen ruter eller markører matchede din søgning</string>
|
||||
<string name="search_list_marker_track_location">I ruten \"%1$s\".</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Batteriniveau</string>
|
||||
<string name="sensor_state_cadence">Kadence</string>
|
||||
<string name="sensor_state_cadence_value">%1$d omdr/min</string>
|
||||
@@ -207,12 +318,22 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d slag per minut</string>
|
||||
<string name="sensor_state_power">Strøm</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Sensor %1$s er ukendt. Kontroller indstillingerne.</string>
|
||||
<string name="sensor_could_not_scan">Kunne ikke scanne efter Bluetooth-enheder (fejl %1$i).</string>
|
||||
<string name="bluetooth_disabled">Aktivér Bluetooth.</string>
|
||||
<string name="settings_not_while_recording">Ikke tilgængelig ved registrering af rute</string>
|
||||
<string name="settings_show">Vis</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Avanceret</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Efter afstand</string>
|
||||
<string name="settings_chart_by_time">Efter tid</string>
|
||||
<string name="settings_chart_x_axis">X-akse</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Vis statistik på låseskærm</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Vis statistik, mens du optager, uden at låse enheden op.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Hold skærmen tændt</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Hold skærmen tændt, mens du optager.</string>
|
||||
<string name="settings_recording">Registrering</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Genoptag altid en registrering efter en genstart</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">Genoptag altid en registrering efter en genstart</string>
|
||||
@@ -230,22 +351,33 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Dato (lokal)</string>
|
||||
<string name="settings_recording_track_name_number_option">Nummer</string>
|
||||
<string name="settings_recording_track_name_title">Standardnavn på spor</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Nulstil</string>
|
||||
<string name="settings_reset_confirm_message">Alle indstillinger vil blive ændret til standardværdierne..</string>
|
||||
<string name="settings_reset_confirm_title">Vil du nulstille nu?</string>
|
||||
<string name="settings_reset_done">Alle indstillinger er blevet gendannet til standardværdierne</string>
|
||||
<string name="settings_error_initial_values_restored">Beklager, men der opstod en fejl. Alle indstillinger er vendt tilbage til standardværdierne.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Sensor</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Bluetooth-sensor</string>
|
||||
<string name="settings_sensor_connecting">Tilsluttet %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Frakoblet %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Hjulstørrelse (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Breddegrad/længdegrad</string>
|
||||
<string name="settings_stats_rate_title">Foretrukkenfartenhed</string>
|
||||
<string name="settings_stats_units_imperial">Britisk (mil, ft)</string>
|
||||
<string name="settings_stats_units_metric">Metrisk (km, m)</string>
|
||||
<string name="settings_stats_units_title">Foretrukne enheder</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Del rutefil</string>
|
||||
<string name="share_track_share_file_body">Du kunne måske være interesseret i denne rute.\n\nDu kan bruge Google Earth eller anden
|
||||
kortlægningssoftware til at se ruten.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Jeg vil gerne dele en rute med dig</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Gns. bevægelsestempo</string>
|
||||
<string name="stats_average_moving_speed">Gns. bevægelseshastighed</string>
|
||||
<string name="stats_average_pace">Gns. tempo</string>
|
||||
@@ -264,25 +396,36 @@
|
||||
<string name="stats_speed">Hastighed</string>
|
||||
<string name="stats_distance">Afstand</string>
|
||||
<string name="stats_total_time">Samlet tid</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">Rute %1$d</string>
|
||||
<string name="track_record_notification">Registrerer din rute…</string>
|
||||
<string name="track_recording_notification_accuracy">Placeringsnøjagtighed: %1$s</string>
|
||||
<string name="track_markers">Markører på %1$s</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">Ruten og de tilhørende markører slettes permanent fra enheden.</string>
|
||||
<string name="track_delete_one_confirm_title">Vil du slette ruten?</string>
|
||||
<string name="track_delete_multiple_confirm_message">De valgte ruter og tilhørende markører slettes permanent fra enheden.</string>
|
||||
<string name="track_delete_progress_message">Sletter…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Diagram</string>
|
||||
<string name="track_detail_stats_tab">Statistik</string>
|
||||
<string name="track_detail_record_success">Registrerer en ny rute</string>
|
||||
<string name="track_detail_resume_success">Genoptager nu sporet</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Aktivitetstype (f.eks. vandretur)</string>
|
||||
<string name="track_edit_activity_type_hint">Aktivitetstype</string>
|
||||
<string name="track_edit_new_track_title">Ny rute</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Her kan du gå i gang med at registrere dit næste eventyr</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d ruter</string>
|
||||
<string name="tracks_many">%1$d ruter</string>
|
||||
<string name="tracks_one">1 rute</string>
|
||||
<string name="tracks_other">%1$d ruter</string>
|
||||
<string name="tracks_two">2 ruter</string>
|
||||
<string name="tracks_zero">0 ruter</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">fod</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/t</string>
|
||||
@@ -291,6 +434,7 @@
|
||||
<string name="unit_mile_per_hour">mil/t</string>
|
||||
<string name="unit_minute_per_kilometer">min./km</string>
|
||||
<string name="unit_minute_per_mile">min./mil</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Juster nøjagtighed</string>
|
||||
<string name="value_adapt_battery_life">Tilpas til batterilevetid</string>
|
||||
<string name="value_always">Altid</string>
|
||||
@@ -317,6 +461,7 @@
|
||||
<string name="value_off">Fra</string>
|
||||
<string name="value_smallest">Mindste</string>
|
||||
<string name="value_smallest_recommended">Mindst (anbefalet)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d timer</string>
|
||||
<string name="voice_hours_many">%1$d timer</string>
|
||||
<string name="voice_hours_one">1 time</string>
|
||||
@@ -363,6 +508,7 @@
|
||||
<string name="voice_total_distance_miles_two">afstand i alt 2 mil</string>
|
||||
<string name="voice_total_distance_miles_zero">afstand i alt 0 mil</string>
|
||||
<string name="voice_total_distance_zero">Afstand i alt i OpenTracks er nul.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">Pengeautomat</string>
|
||||
<string name="waypoint_type_bank">bank</string>
|
||||
<string name="waypoint_type_bar">bar</string>
|
||||
@@ -414,4 +560,7 @@
|
||||
<string name="waypoint_type_waterfall">vandfald</string>
|
||||
<string name="waypoint_type_water_fountain">springvand</string>
|
||||
<string name="waypoint_type_waypoint">vejpunkt</string>
|
||||
<!-- Share image -->
|
||||
<string name="share_image_subject">Jeg vil gerne dele et billede med dig</string>
|
||||
<string name="share_image_body">Jeg tror, du måske er interesseret i dette billede.</string>
|
||||
</resources>
|
||||
|
||||
@@ -36,7 +36,7 @@ limitations under the License.
|
||||
Verwende das kleine Kartensymbol.\n
|
||||
a)
|
||||
(Live-Aktualisierungen) Installiere <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
OSMDashboard stellt Online- oder Offline-Karten über <a href="https://www.openstreetmap.org">OpenStreetmap</a>.\n zur Verfügung.
|
||||
OSMDashboard stellt Online- oder Offline-Karten über <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n zur Verfügung.
|
||||
Eigentlich ist OSMDashboard eine separate App, die nur (vorübergehend) auf die Daten der anzuzeigenden Strecke(n) zugreifen kann.
|
||||
|
||||
\n
|
||||
@@ -322,11 +322,12 @@ g) das tun, was Deiner Meinung nach OpenTracks hilft.</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Sensor %1$s ist unbekannt. Bitte überprüfe die Einstellungen.</string>
|
||||
<string name="sensor_could_not_scan">Konnte nicht nach Bluetooth-Geräten scannen (Fehler %1$i).</string>
|
||||
<string name="bluetooth_disabled">Bitte Bluetooth aktivieren.</string><!-- Settings -->
|
||||
<string name="bluetooth_disabled">Bitte Bluetooth aktivieren.</string>
|
||||
<string name="settings_not_while_recording">Während der Aufzeichnung eines Tracks nicht verfügbar</string>
|
||||
<string name="settings_show">Anzeigen</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Erweitert</string>
|
||||
<string name="settings_default_trackfileformat">Dateiformat für export/teilen</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Nach Strecke</string>
|
||||
<string name="settings_chart_by_time">Nach Zeit</string>
|
||||
|
||||
@@ -1,5 +1,94 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">Acerca de OpenTracks</string>
|
||||
<string name="about_description"><i>OpenTracks</i> es una aplicación de seguimiento deportivo que respeta completamente su privacidad.</string>
|
||||
<string name="about_url">Página web del proyecto: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Nombre de la versión: %1$s</string>
|
||||
<string name="about_version_code">Código de la versión: %1$d</string>
|
||||
<string name="about_history">OpenTracks es una bifurcación de <a href="https://code.google.com/archive/p/mytracks/"><i>MyTracks </i></a> de Google (descontinuado en 2016).</string>
|
||||
<string name="about_libraries">Bibliotecas</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks tiene las siguientes características:</string>
|
||||
<string name="help_feature_content">
|
||||
* crear un seguimiento GPS *
|
||||
* usa un sensor de ritmo cardíaco (sólo Bluetooth LE) *
|
||||
* anuncios de voz (por tiempo o distancia)*
|
||||
* crear marcadores (incluyendo imágenes) *
|
||||
* funciona completamente fuera de línea *
|
||||
* mostrar las pistas en un mapa (ver abajo)</string>
|
||||
|
||||
<string name="help_track_map_title">¿Cómo mostrar una pista en un mapa?</string>
|
||||
<string name="help_track_map_content">
|
||||
Usa el icono del mapa pequeño.
|
||||
a)
|
||||
(actualizaciones en vivo) Instalar <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Proporciona mapas en línea o fuera de línea a través de <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
En realidad, OSMDashboard es una aplicación independiente que sólo puede acceder (temporalmente) a los datos de las pist(as) que se van a mostrar.
|
||||
|
||||
\n
|
||||
b)
|
||||
A través de una aplicación de mapas normal (por ejemplo, <a href="http://osmand.net/">OsmAnd</a> y <a href="https://maps.me/">MAPS.ME</a>).
|
||||
Estas aplicaciones necesitan soportar el formato de archivo KMZ (sólo las ubicaciones y las marcas de tiempo).
|
||||
De hecho, una aplicación necesita soportar <i>ACTION_VIEW</i> con MIME <i>application/vnd.google-earth.kmz</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">¿Cómo almacena OpenTracks las fotos que fueron tomadas como marcadores?</string>
|
||||
<string name="help_storage_pictures_content">Estos se almacenan en el almacenamiento interno de la aplicación (es decir, sólo accesible dentro de OpenTracks).</string>
|
||||
|
||||
<string name="help_track_export_title">¿Cómo puedo exportar/compartir las pistas grabadas?</string>
|
||||
<string name="help_track_export_content">
|
||||
Las pistas pueden ser exportadas desde los ajustes como KMZ, KML o GPX.
|
||||
KMZ/KML todos los datos; GPX sólo las ubicaciones.
|
||||
Las pistas compartidas a través del <i> icono de compartir </i> se comparten como KMZ.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">¿Requiere OpenTracks usar el servicio de Google Play?</string>
|
||||
|
||||
<string name="help_recording_title">¿Cómo registra OpenTracks los datos?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks utiliza el sensor GPS del dispositivo para registrar la ubicación de forma continua.
|
||||
Si el dispositivo GPS reporta datos inexactos (por ejemplo, ubicación, velocidad, elevación), OpenTracks no puede hacer nada al respecto.</string>
|
||||
|
||||
<string name="help_data_storage_title">¿Cómo almacena OpenTracks los datos de los sensores?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Los datos de los sensores se almacenan por cada ubicación registrada.
|
||||
En términos de un sensor de frecuencia cardíaca, esto significa que sólo <i>uno</i> la medición de la frecuencia cardíaca se almacena por ubicación.
|
||||
Si está parado o en el interior, no se registrarán los datos del sensor (pero se mostrarán).</string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks no está grabando las localizaciones?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Lo que puedes hacer...
|
||||
a) Comprobar si el GPS está activado.
|
||||
b) mejorar la recepción del GPS (por ejemplo, ir al exterior),\n
|
||||
c) comprueba si con <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> app, y\n
|
||||
d) desactivar el ahorro de energía.
|
||||
\n
|
||||
Si todo no ayuda, por favor informe de un error.</string>
|
||||
|
||||
<string name="help_support_title">¿Cómo puedo apoyar OpenTracks?</string>
|
||||
<string name="help_support_content">
|
||||
Puedes...
|
||||
a) difundir la palabra sobre OpenTracks,...
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">proponer características</a>,\n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">report bugs</a>,\n
|
||||
d) ayudar en el desarrollo de software,\n
|
||||
e) comprar en <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,\n
|
||||
f) donar, y
|
||||
g) haz lo que creas que ayude a OpenTracks.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">avión</string>
|
||||
<string name="activity_type_atv">vehículos todoterreno</string>
|
||||
<string name="activity_type_biking">ciclismo</string>
|
||||
@@ -66,6 +155,8 @@
|
||||
<string name="activity_type_walking">recorrido a pie</string>
|
||||
<string name="activity_type_water_skiing">esquí acuático</string>
|
||||
<string name="activity_type_wind_surfing">windsurf</string>
|
||||
<string name="app_not_installed_show_on_map">Por favor, instale una aplicación que soporte la presentación de datos de mapas.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Tipo de actividad: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Ritmo de movimiento medio: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Velocidad de movimiento media: %1$.2f km/h (%2$.1f mi/h)</string>
|
||||
@@ -93,6 +184,7 @@
|
||||
<string name="description_sensor_cadence">Cadencia (rpm)</string>
|
||||
<string name="description_sensor_heart_rate">Frecuencia cardíaca (bpm)</string>
|
||||
<string name="description_sensor_power">Potencia (W)</string>
|
||||
<string name="description_default_speed_or_pace">Por la clase de actividad</string>
|
||||
<string name="description_speed_imperial">Velocidad (mi/h)</string>
|
||||
<string name="description_speed_metric">Velocidad (km / h)</string>
|
||||
<string name="description_time">Tiempo</string>
|
||||
@@ -100,6 +192,7 @@
|
||||
<string name="description_total_time">Tiempo total: %1$s</string>
|
||||
<string name="description_track_point">Punto</string>
|
||||
<string name="description_track_segment">Segmento</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Todo como %1$s</string>
|
||||
<string name="export_all_title">Exportar a unidad de almacenamiento externa</string>
|
||||
<string name="export_with_photos">con fotos</string>
|
||||
@@ -109,12 +202,15 @@
|
||||
<string name="export_progress_message">Exportando a %1$s…</string>
|
||||
<string name="export_success">Se exportaron %1$s a %2$s</string>
|
||||
<string name="export_title">Exportar a…</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d archivos</string>
|
||||
<string name="files_many">%1$d archivos</string>
|
||||
<string name="files_one">1 archivo</string>
|
||||
<string name="files_other">%1$d archivos</string>
|
||||
<string name="files_two">2 archivos</string>
|
||||
<string name="files_zero">0 archivos</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Añadir</string>
|
||||
<string name="generic_cancel">Cancelar</string>
|
||||
<string name="generic_delete_all_confirm_title">¿Eliminar todo?</string>
|
||||
@@ -133,6 +229,7 @@
|
||||
<string name="generic_success_title">Correcto</string>
|
||||
<string name="generic_tracks">Rutas</string>
|
||||
<string name="generic_yes">Sí</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">\"Acceso a la ubicación\"</string>
|
||||
<string name="gps_disabled">El GPS no está habilitado. Toca aquí para ir a %1$s. Pulsa el botón Atrás para volver.</string>
|
||||
<string name="gps_disabled_my_location">No se puede determinar la ubicación actual. Habilita más fuentes de ubicación en %1$s y asegúrate de que se pueda ver el cielo. Vuelve a intentarlo más tarde.</string>
|
||||
@@ -140,6 +237,7 @@
|
||||
<string name="gps_starting">Iniciando GPS</string>
|
||||
<string name="gps_wait_for_better_signal">Esperando una mejor señal de GPS</string>
|
||||
<string name="gps_wait_for_signal">Esperando señal de GPS</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Aplicación</string>
|
||||
<string name="image_arrow">Flecha</string>
|
||||
<string name="image_marker">Marcador</string>
|
||||
@@ -150,6 +248,7 @@
|
||||
<string name="image_record">Grabar</string>
|
||||
<string name="image_stop">Detener</string>
|
||||
<string name="image_track">Ruta</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">Se importaron %1$d de %2$s desde %3$s</string>
|
||||
<string name="import_no_directory">%1$s no existe</string>
|
||||
<string name="import_no_file">No hay archivos que importar. Conecta tu dispositivo al ordenador y coloca los archivos que quieras
|
||||
@@ -159,6 +258,7 @@
|
||||
<string name="import_selection_option">Todos los archivos %1$s</string>
|
||||
<string name="import_selection_title">Importar desde la unidad de almacenamiento externa</string>
|
||||
<string name="import_success">Se importaron %1$s desde %2$s</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">No se puede insertar el marcador. No se recibe señal de GPS. Inténtalo de nuevo.</string>
|
||||
<string name="marker_add_success">Se ha insertado un marcador</string>
|
||||
<string name="marker_add_canceled">Cancelado, no se ha añadido ningún marcador</string>
|
||||
@@ -172,10 +272,14 @@
|
||||
<string name="marker_name_format">Marcador %1$d</string>
|
||||
<string name="marker_split_name_format">Dividir %1$d</string>
|
||||
<string name="marker_title">%1$d de %2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Desde el último marcador de división:</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Tipo de marcador (p. ej., cascada…)</string>
|
||||
<string name="marker_edit_marker_type_hint">Tipo de marcador</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">No tienes ningún marcador</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Estadísticas globales</string>
|
||||
<string name="menu_delete">Eliminar</string>
|
||||
<string name="menu_edit">Editar</string>
|
||||
@@ -198,11 +302,16 @@
|
||||
<string name="menu_view_photo">Ver foto</string>
|
||||
<string name="menu_voice_frequency">Frecuencia de voz</string>
|
||||
<string name="menu_resume_track">Reanudar ruta</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Servicio de grabación</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks requiere permiso para usar el GPS.</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Recorridos y marcadores</string>
|
||||
<string name="search_list_empty_message">No hay rutas ni marcadores que coincidan con tu búsqueda</string>
|
||||
<string name="search_list_marker_track_location">En la ruta \"%1$s\"</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Nivel de batería</string>
|
||||
<string name="sensor_state_cadence">Cadencia</string>
|
||||
<string name="sensor_state_cadence_value">%1$d rpm</string>
|
||||
@@ -211,12 +320,22 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d bpm</string>
|
||||
<string name="sensor_state_power">Potencia</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Sensor %1$s es desconocido. Por favor, compruebe la configuración.</string>
|
||||
<string name="sensor_could_not_scan">No se pudieron buscar dispositivos Bluetooth (error %1$i).</string>
|
||||
<string name="bluetooth_disabled">Por favor, activa el Bluetooth.</string>
|
||||
<string name="settings_not_while_recording">No disponible mientras se graba una ruta</string>
|
||||
<string name="settings_show">Mostrar</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Avanzado</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Por distancia</string>
|
||||
<string name="settings_chart_by_time">Por tiempo</string>
|
||||
<string name="settings_chart_x_axis">Eje X</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Mostrar las estadísticas en la pantalla de bloqueo</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Mientras graba, muestre las estadísticas sin desbloquear el dispositivo.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Mantén la pantalla encendida</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Mientras graba, mantenga la pantalla encendida.</string>
|
||||
<string name="settings_recording">Grabación</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Reanudar siempre una grabación después de reiniciar</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">No reanudar nunca una grabación después de reiniciar</string>
|
||||
@@ -234,21 +353,32 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Fecha (local)</string>
|
||||
<string name="settings_recording_track_name_number_option">Número</string>
|
||||
<string name="settings_recording_track_name_title">Nombre de la ruta</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Restablecer</string>
|
||||
<string name="settings_reset_confirm_message">Todos los ajustes volverán a los valores predeterminados.</string>
|
||||
<string name="settings_reset_confirm_title">¿Restablecer ahora?</string>
|
||||
<string name="settings_reset_done">Se han restablecido los valores predeterminados de todas las opciones de configuración</string>
|
||||
<string name="settings_error_initial_values_restored">Lo siento, pero ha habido un error. Todos los ajustes se han vuelto a los valores predeterminados.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Sensor</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Sensor Bluetooth</string>
|
||||
<string name="settings_sensor_connecting">Conectado a %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Desconectado de %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Tamaño de la rueda (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Latitud/Longitud</string>
|
||||
<string name="settings_stats_rate_title">Ritmo preferido</string>
|
||||
<string name="settings_stats_units_imperial">Imperiales (millas, pies)</string>
|
||||
<string name="settings_stats_units_metric">Métricas (km, m)</string>
|
||||
<string name="settings_stats_units_title">Unidades preferidas</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Compartir el archivo de la ruta</string>
|
||||
<string name="share_track_share_file_body">Creo que esta ruta te podría interesar.\n\nPara ver esta ruta, usa Google Earth u otro software de mapas.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Me gustaría compartir una ruta contigo</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Ritmo de movimiento medio</string>
|
||||
<string name="stats_average_moving_speed">Velocidad de movimiento media</string>
|
||||
<string name="stats_average_pace">Ritmo medio</string>
|
||||
@@ -267,26 +397,36 @@
|
||||
<string name="stats_speed">Velocidad</string>
|
||||
<string name="stats_distance">Distancia</string>
|
||||
<string name="stats_total_time">Tiempo total</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">Ruta %1$d</string>
|
||||
<string name="track_record_notification">Grabando tu ruta…</string>
|
||||
<string name="track_recording_notification_accuracy">Precisión de la localización: %1$s</string>
|
||||
<string name="track_markers">Marcadores de %1$s</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">La ruta y sus marcadores se eliminarán de forma permanente del dispositivo.</string>
|
||||
<string name="track_delete_one_confirm_title">¿Eliminar ruta?</string>
|
||||
<string name="track_delete_multiple_confirm_message">Las rutas seleccionadas y sus marcadores se eliminarán de forma permanente del dispositivo.</string>
|
||||
<string name="track_delete_progress_message">Eliminando…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Gráfico</string>
|
||||
<string name="track_detail_stats_tab">Estadísticas</string>
|
||||
<string name="track_detail_record_success">Grabando una nueva ruta</string>
|
||||
<string name="track_detail_resume_success">Ahora reanudando la pista</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Tipo de actividad (p. ej., senderismo…)</string>
|
||||
<string name="track_edit_activity_type_hint">Tipo de actividad</string>
|
||||
<string name="track_edit_new_track_title">Nueva pista</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Empieza a grabar aquí tu próxima aventura</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d rutas</string>
|
||||
<string name="tracks_many">%1$d rutas</string>
|
||||
<string name="tracks_one">1 ruta</string>
|
||||
<string name="tracks_other">%1$d rutas</string>
|
||||
<string name="tracks_two">2 rutas</string>
|
||||
<string name="tracks_zero">0 ruta</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">pies</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
@@ -295,6 +435,7 @@
|
||||
<string name="unit_mile_per_hour">millas/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/milla</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Adaptar para obtener valores exactos</string>
|
||||
<string name="value_adapt_battery_life">Adaptar a la duración de la batería</string>
|
||||
<string name="value_always">Siempre</string>
|
||||
@@ -321,6 +462,7 @@
|
||||
<string name="value_off">No</string>
|
||||
<string name="value_smallest">Menor</string>
|
||||
<string name="value_smallest_recommended">Mínimo (recomendado)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d horas</string>
|
||||
<string name="voice_hours_many">%1$d horas</string>
|
||||
<string name="voice_hours_one">1 hora</string>
|
||||
@@ -367,6 +509,7 @@
|
||||
<string name="voice_total_distance_miles_two">distancia total de 2 millas</string>
|
||||
<string name="voice_total_distance_miles_zero">distancia total de 0 millas</string>
|
||||
<string name="voice_total_distance_zero">La distancia total de OpenTracks es igual a cero.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">cajero automático</string>
|
||||
<string name="waypoint_type_bank">banco</string>
|
||||
<string name="waypoint_type_bar">bar</string>
|
||||
|
||||
@@ -1,5 +1,92 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">Umbes OpenTracks</string>
|
||||
<string name="about_description"><i>OpenTracks</i> on spordi jälgimise rakendus, mis austab täielikult teie privaatsust.</string>
|
||||
<string name="about_url">Projekti veebileht: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Versiooni nimi: %1$s</string>
|
||||
<string name="about_version_code">Versiooni kood: %1$d</string>
|
||||
<string name="about_history">OpenTracks on <a href="https://code.google.com/archive/p/mytracks/"> <i> Googlei MyTracks </i> </a> kahvel (lõpetatud 2016. aastal).</string>
|
||||
<string name="about_libraries">Raamatukogud</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks sellel on järgmised omadused:</string>
|
||||
<string name="help_feature_content">
|
||||
* GPS-radade loomine \ n
|
||||
* kasutage pulsisensorit (ainult Bluetooth LE) \ n
|
||||
* häälteated (aja või vahemaa järgi) \ n
|
||||
* loo markerid (koos piltidega) \ n
|
||||
* töötab täiesti võrguühenduseta \ n
|
||||
* näidata radu kaardil (vt allpool)</string>
|
||||
|
||||
<string name="help_track_map_title">Kuidas näidata pala kaardil?</string>
|
||||
<string name="help_track_map_content">
|
||||
Kasutage väikest kaardiikooni. \n
|
||||
a)
|
||||
(reaalajas värskendused) Installige <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
See pakub võrgu- või võrguühenduseta kaarte <a href="https://www.openstreetmap.org">OpenStreetMap</a> kaudu.\n
|
||||
Tegelikult on OSMDashboard eraldiseisev rakendus, mis pääseb juurde (ajutiselt) ainult kuvatavate rada(de) andmetele.
|
||||
\n
|
||||
b) „Tavalise” kaardirakenduse (nt <a href="http://osmand.net/">OsmAnd</a> ja <a href="https://maps.me/">MAPS.ME</a>.
|
||||
Need rakendused peavad toetama KMZ-failivormingut (ainult asukohad ja ajatemplid).
|
||||
Tegelikult peab rakendus toetama rakendust MIME <i>application/vnd.google-earth.</i> <i>ACTION_VIEW</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">Kuidas OpenTracks salvestab markeritena tehtud pilte?</string>
|
||||
<string name="help_storage_pictures_content">Neid hoitakse rakenduse sisemises salvestusruumis (st pääseb juurde ainult OpenTracks is).</string>
|
||||
|
||||
<string name="help_track_export_title">Kuidas saab salvestatud lugusid eksportida / jagada?</string>
|
||||
<string name="help_track_export_content">
|
||||
Lugusid saab seadetest eksportida KMZ-, KML- või GPX-vormingus.
|
||||
KMZ / KML kõik andmed; Ainult GPX-i asukohad.
|
||||
Radasid, mis on jagatud <i> jagamise ikooni </i> kaudu, jagatakse KMZ-na.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">Kas OpenTracks nõuab / kasutab Google Play teenust?</string>
|
||||
|
||||
<string name="help_recording_title">Kuidas OpenTracks andmeid registreerib?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks kasutab seadme GPS-andurit asukoha pidevaks registreerimiseks.
|
||||
Kui GPS-seade teatab ebatäpsetest andmetest (nt asukoht, kiirus, kõrgus), ei saa OpenTracks sellega midagi teha.</string>
|
||||
|
||||
<string name="help_data_storage_title">Kuidas OpenTracks sensori andmeid salvestab?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Anduri andmed salvestatakse salvestatud asukoha kohta.
|
||||
Südame löögisageduse anduri puhul tähendab see, et asukoha kohta salvestatakse ainult <i>üks</i> südame löögisageduse mõõtmine.
|
||||
Kui seisate paigal või siseruumides, siis anduri andmeid ei registreerita (kuid need näidatakse).</string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks ei salvesta asukohti?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Mida saate teha: \ n
|
||||
a) kontrollige, kas GPS on lubatud, \ n
|
||||
b) parandage GPS-vastuvõttu (nt käige õues), \ n
|
||||
c) kontrollige, kas rakendusega <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/"> GPSTest </a> ja \ n
|
||||
d) keelake energiasääst. \ n
|
||||
\ n
|
||||
Kui kõik ei aita, teatage veast.</string>
|
||||
|
||||
<string name="help_support_title">Kuidas OpenTracks it toetada?</string>
|
||||
<string name="help_support_content">
|
||||
Saate: \ n
|
||||
a) levitage sõna OpenTracks kohta, \ n
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> funktsioonide pakkumine </a>, \ n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> teatage vigadest </a>, \ n
|
||||
d) abi tarkvara arendamisel, \ n
|
||||
e) ostke sisse <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore"> Google Play pood </a>, \ n
|
||||
f) annetama ja \ n
|
||||
g) tehke kõike, mis teie arvates OpenTracks aitab.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">lennuk</string>
|
||||
<string name="activity_type_atv">ATV</string>
|
||||
<string name="activity_type_biking">rattasõit</string>
|
||||
@@ -66,6 +153,8 @@
|
||||
<string name="activity_type_walking">kõndimine</string>
|
||||
<string name="activity_type_water_skiing">veesuusatamine</string>
|
||||
<string name="activity_type_wind_surfing">purilauasõit</string>
|
||||
<string name="app_not_installed_show_on_map">Installige rakendus, mis toetab kaardiandmete esitamist.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Tegevuse tüüp: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Keskmine liikumiskiirus: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Keskmine liikumiskiirus: %1$.2f km/h (%2$.1f mi/h)</string>
|
||||
@@ -93,6 +182,7 @@
|
||||
<string name="description_sensor_cadence">Rütm (p/min)</string>
|
||||
<string name="description_sensor_heart_rate">Pulsisagedus (l/min)</string>
|
||||
<string name="description_sensor_power">Võimsus (W)</string>
|
||||
<string name="description_default_speed_or_pace">Tegevuse tüübi järgi</string>
|
||||
<string name="description_speed_imperial">Kiirus (mi/h)</string>
|
||||
<string name="description_speed_metric">Kiirus (km/h)</string>
|
||||
<string name="description_time">Aeg</string>
|
||||
@@ -100,19 +190,25 @@
|
||||
<string name="description_total_time">Koguaeg: %1$s</string>
|
||||
<string name="description_track_point">Punkt</string>
|
||||
<string name="description_track_segment">Lõik</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Kõik %1$s-failina</string>
|
||||
<string name="export_all_title">Ekspordi välismällu</string>
|
||||
<string name="export_with_photos">fotodega</string>
|
||||
<string name="export_without_photos">ilma fotodeta</string>
|
||||
<string name="export_error">Eksporditud %1$d faili %2$s-st kataloogi %3$s</string>
|
||||
<string name="export_option">%1$s-failina kataloogi %2$s</string>
|
||||
<string name="export_progress_message">Eksportimine kataloogi %1$s…</string>
|
||||
<string name="export_success">Eksporditud %1$s rada kataloogi %2$s</string>
|
||||
<string name="export_title">Eksportimine …</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d faili</string>
|
||||
<string name="files_many">%1$d faili</string>
|
||||
<string name="files_one">1 fail</string>
|
||||
<string name="files_other">%1$d faili</string>
|
||||
<string name="files_two">2 faili</string>
|
||||
<string name="files_zero">0 faili</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Lisa</string>
|
||||
<string name="generic_cancel">Tühista</string>
|
||||
<string name="generic_delete_all_confirm_title">Kas kustutada kõik?</string>
|
||||
@@ -131,6 +227,7 @@
|
||||
<string name="generic_success_title">Õnnestus</string>
|
||||
<string name="generic_tracks">Rajad</string>
|
||||
<string name="generic_yes">Jah</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">Juurdepääs asukohale</string>
|
||||
<string name="gps_disabled">GPS ei ole lubatud. Kohta %1$s minemiseks puudutage seda. Naasmiseks vajutage nuppu Tagasi.</string>
|
||||
<string name="gps_disabled_my_location">Praegust asukohta ei saa kindlaks teha. Lubage rohkem asukohaallikaid menüüs %1$s ja veenduge, et taevas on nähtav. Proovige hiljem uuesti.</string>
|
||||
@@ -138,6 +235,7 @@
|
||||
<string name="gps_starting">GPS-i käivitamine</string>
|
||||
<string name="gps_wait_for_better_signal">Oodatakse paremat GPS-signaali</string>
|
||||
<string name="gps_wait_for_signal">Oodatakse GPS-signaali</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Rakendus</string>
|
||||
<string name="image_arrow">Nool</string>
|
||||
<string name="image_marker">Marker</string>
|
||||
@@ -148,6 +246,7 @@
|
||||
<string name="image_record">Salvesta</string>
|
||||
<string name="image_stop">Peata</string>
|
||||
<string name="image_track">Rada</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">Imporditud %1$d faili %2$s-st kataloogist %3$s</string>
|
||||
<string name="import_no_directory">Kataloogi %1$s ei ole olemas</string>
|
||||
<string name="import_no_file">Imporditavad failid puudusid. Ühendage seade oma arvutiga ning salvestage imporditavad failid kataloogi %1$s.</string>
|
||||
@@ -156,9 +255,11 @@
|
||||
<string name="import_selection_option">Kõik %1$s-failid</string>
|
||||
<string name="import_selection_title">Impordi välismälust</string>
|
||||
<string name="import_success">Imporditud %1$s faili kataloogist %2$s</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">Ei saa markerit lisada. GPS-signaal puudub. Proovige uuesti.</string>
|
||||
<string name="marker_add_success">Marker lisati</string>
|
||||
<string name="marker_add_canceled">Tühistatud, markerit ei lisatud</string>
|
||||
<string name="marker_add_photo_canceled">Tühistatud, fotomarkerit pole lisatud</string>
|
||||
<string name="marker_delete_all_confirm_message">Kõik selle raja markerid kustutatakse seadmest jäädavalt</string>
|
||||
<string name="marker_delete_one_confirm_message">Marker kustutatakse seadmest jäädavalt</string>
|
||||
<string name="marker_delete_one_confirm_title">Kas kustutada marker?</string>
|
||||
@@ -168,10 +269,14 @@
|
||||
<string name="marker_name_format">Marker %1$d</string>
|
||||
<string name="marker_split_name_format">Jaotus %1$d</string>
|
||||
<string name="marker_title">%1$d/%2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Viimasest jaotusmarkerist alates:</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Markeri tüüp (nt juga)</string>
|
||||
<string name="marker_edit_marker_type_hint">Markeri tüüp</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">Teil ei ole markereid</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Agreg.statistika</string>
|
||||
<string name="menu_delete">Kustuta</string>
|
||||
<string name="menu_edit">Muuda</string>
|
||||
@@ -180,6 +285,7 @@
|
||||
<string name="menu_import_all">Impordi kõik</string>
|
||||
<string name="menu_insert_marker">Lisa marker</string>
|
||||
<string name="menu_insert_photo">Foto lisamine</string>
|
||||
<string name="menu_insert_gallery_img">Sisestage galerii pilt</string>
|
||||
<string name="menu_markers">Markerid</string>
|
||||
<string name="menu_search">Otsing</string>
|
||||
<string name="menu_select_all">Vali kõik</string>
|
||||
@@ -192,11 +298,17 @@
|
||||
<string name="menu_stop_gps">Peata GPS</string>
|
||||
<string name="menu_view_photo">Foto kuvamine</string>
|
||||
<string name="menu_voice_frequency">Häälteadete sagedus</string>
|
||||
<string name="menu_resume_track">Jätka pala</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Salvestamisteenus</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks vajab GPS-i kasutamiseks luba.</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Rajad ja markerid</string>
|
||||
<string name="search_list_empty_message">Ükski rada ega marker ei sobinud teie otsinguga</string>
|
||||
<string name="search_list_marker_track_location">Rajal „%1$s”.</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Aku tase</string>
|
||||
<string name="sensor_state_cadence">Rütm</string>
|
||||
<string name="sensor_state_cadence_value">%1$d rpm</string>
|
||||
@@ -205,12 +317,22 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d lööki minutis</string>
|
||||
<string name="sensor_state_power">Võimsus</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Andur %1$s pole teada. Kontrollige seadeid.</string>
|
||||
<string name="sensor_could_not_scan">Bluetooth-seadmeid ei õnnestunud skannida (tõrge %1$i).</string>
|
||||
<string name="bluetooth_disabled">Lubage Bluetooth.</string>
|
||||
<string name="settings_not_while_recording">Raja salvestamise ajal ei ole kättesaadav</string>
|
||||
<string name="settings_show">Kuva</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Täpsemad seaded</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Vahemaa järgi</string>
|
||||
<string name="settings_chart_by_time">Aja järgi</string>
|
||||
<string name="settings_chart_x_axis">X-telg</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Kuva lukukraanil statistikat</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Salvestamise ajal näidake statistikat ilma seadet avamata.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Hoidke ekraani peal</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Salvestamise ajal hoidke ekraani sisse lülitatud.</string>
|
||||
<string name="settings_recording">Salvestamine</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Jätka alati salvestamist pärast taaskäivitamist</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">Ärge kunagi jätka salvestamist pärast taaskäivitamist</string>
|
||||
@@ -228,21 +350,32 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Kuupäev (kohalik)</string>
|
||||
<string name="settings_recording_track_name_number_option">Number</string>
|
||||
<string name="settings_recording_track_name_title">Raja vaikenimi</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Lähtesta</string>
|
||||
<string name="settings_reset_confirm_message">Taastatakse kõikide seadete vaikeväärtus.</string>
|
||||
<string name="settings_reset_confirm_title">Kas lähtestada kohe?</string>
|
||||
<string name="settings_reset_done">Kõik seaded on taastatud vaikeväärtustena</string>
|
||||
<string name="settings_error_initial_values_restored">Vabandust, kuid ilmnes viga. Kõik sätted on taastatud vaikeväärtustele.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Andur</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Bluetoothi andur</string>
|
||||
<string name="settings_sensor_connecting">Ühendatud anduriga %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Lahti ühendatud %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Ratta suurus (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Laiuskraad/pikkuskraad</string>
|
||||
<string name="settings_stats_rate_title">Eelistatud määr</string>
|
||||
<string name="settings_stats_units_imperial">Inglise mõõtühikud (miili, jalga)</string>
|
||||
<string name="settings_stats_units_metric">Meetermõõdustik (km, m)</string>
|
||||
<string name="settings_stats_units_title">Eelistatud ühikud</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Jagage rajafaili</string>
|
||||
<string name="share_track_share_file_body">Teile võib see rada huvi pakkuda.\n\nRaja vaatamiseks kasutage rakendust Google Earth või muud kaardistamistarkvara.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Ma soovin teiega rada jagada</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Keskmine liikumistempo</string>
|
||||
<string name="stats_average_moving_speed">Keskmine liikumiskiirus</string>
|
||||
<string name="stats_average_pace">Keskmine tempo</string>
|
||||
@@ -261,25 +394,36 @@
|
||||
<string name="stats_speed">Kiirus</string>
|
||||
<string name="stats_distance">Kaugus</string>
|
||||
<string name="stats_total_time">Aeg kokku</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">Rada %1$d</string>
|
||||
<string name="track_record_notification">Raja salvestamine…</string>
|
||||
<string name="track_recording_notification_accuracy">Asukoha täpsus: %1$s</string>
|
||||
<string name="track_markers">Raja %1$s markerid</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">Rada ja selle markerid kustutatakse seadmest jäädavalt.</string>
|
||||
<string name="track_delete_one_confirm_title">Kas kustutada rada?</string>
|
||||
<string name="track_delete_multiple_confirm_message">Valitud rajad ja nende markerid kustutatakse seadmest jäädavalt.</string>
|
||||
<string name="track_delete_progress_message">Kustutamine…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Diagramm</string>
|
||||
<string name="track_detail_stats_tab">Statistika</string>
|
||||
<string name="track_detail_record_success">Nüüd salvestatakse uut rada</string>
|
||||
<string name="track_detail_resume_success">Nüüd jätkame rada</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Tegevus (nt matkamine)</string>
|
||||
<string name="track_edit_activity_type_hint">Tegevuse tüüp</string>
|
||||
<string name="track_edit_new_track_title">Uus rada</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Alustage oma järgmise seikluse salvestamist siin</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d rada</string>
|
||||
<string name="tracks_many">%1$d rada</string>
|
||||
<string name="tracks_one">1 rada</string>
|
||||
<string name="tracks_other">%1$d rada</string>
|
||||
<string name="tracks_two">2 rada</string>
|
||||
<string name="tracks_zero">0 rada</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">jalga</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
@@ -288,6 +432,7 @@
|
||||
<string name="unit_mile_per_hour">miili/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/miilis</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Täpsuse kohandamine</string>
|
||||
<string name="value_adapt_battery_life">Kohandage aku elueale</string>
|
||||
<string name="value_always">Alati</string>
|
||||
@@ -314,6 +459,7 @@
|
||||
<string name="value_off">Väljas</string>
|
||||
<string name="value_smallest">Kõige väiksem</string>
|
||||
<string name="value_smallest_recommended">Väikseim (soovitatav)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d tundi</string>
|
||||
<string name="voice_hours_many">%1$d tundi</string>
|
||||
<string name="voice_hours_one">1 tund</string>
|
||||
@@ -360,6 +506,7 @@
|
||||
<string name="voice_total_distance_miles_two">kogupikkus 2 miili</string>
|
||||
<string name="voice_total_distance_miles_zero">kogupikkus 0 miili</string>
|
||||
<string name="voice_total_distance_zero">Radade kogupikkus on null.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">Sularahaautomaat</string>
|
||||
<string name="waypoint_type_bank">pank</string>
|
||||
<string name="waypoint_type_bar">baar</string>
|
||||
@@ -411,4 +558,7 @@
|
||||
<string name="waypoint_type_waterfall">juga</string>
|
||||
<string name="waypoint_type_water_fountain">purskkaev</string>
|
||||
<string name="waypoint_type_waypoint">teekonnapunkt</string>
|
||||
<!-- Share image -->
|
||||
<string name="share_image_subject">Tahaksin teiega pilti jagada</string>
|
||||
<string name="share_image_body">Ma arvan, et see pilt võiks teid huvitada.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">OpenTracks-i buruz</string>
|
||||
<string name="about_description"><i> OpenTracks </i> kirol jarraipena egiteko aplikazioa da, zure pribatutasuna erabat errespetatzen duena.</string>
|
||||
<string name="about_url">Proiektuaren web orria: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Bertsioaren izena: %1$s</string>
|
||||
<string name="about_version_code">Bertsio kodea: %1$d</string>
|
||||
<string name="about_history">OpenTracks <a href="https://code.google.com/archive/p/mytracks/"> <i> Google \ n MyTracks </i> </a> (horixe utzi zen 2016an).</string>
|
||||
<string name="about_libraries">Liburutegiak</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks ek ezaugarri hauek ditu:</string>
|
||||
<string name="help_feature_content">
|
||||
* GPS ibilbideak sortu\n
|
||||
* erabili bihotz-maiztasuneko sentsorea (Bluetooth LE soilik)\n
|
||||
* ahots iragarpenak (denboraren edo distantziaren arabera)\n
|
||||
* Sortu markatzaileak (irudiak barne)\n
|
||||
* guztiz lineaz kanpo funtzionatzen du\n
|
||||
* Erakutsi ibilbideak mapa batean (ikusi azpian)</string>
|
||||
|
||||
<string name="help_track_map_title">Nola erakutsi pista batean mapa batean?</string>
|
||||
<string name="help_track_map_content">
|
||||
Erabili maparen ikono txikia.\n
|
||||
a) (zuzeneko eguneratzeak) Instalatu <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Lineako edo lineaz kanpoko mapak eskaintzen ditu <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
Egia esan, OSMDashboard erakundea da erakutsiko diren pista (k) datuetara sartzeko soilik (aldi baterako) sar daitekeena.\n
|
||||
b) Mapa aplikazio normal baten bidez (adibidez, <a href="http://osmand.net/">OsmAnd</a> eta <a href="https://maps.me/">MAPS.ME</a>).
|
||||
Aplikazio horiek KMZ fitxategi formatua onartzen dute (kokapenak eta timestamps soilik).
|
||||
Izan ere, aplikazio batek <i>ACTION_VIEW</i> onartzen du MIME <i>application/vnd.google-earth.kmz</i> rekin.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">Nola gordetzen du OpenTracks markatzaile gisa ateratako argazkiak?</string>
|
||||
<string name="help_storage_pictures_content">Aplikazioaren barne biltegian gordetzen dira (hau da, OpenTracks en soilik eskura daiteke).</string>
|
||||
|
||||
<string name="help_track_export_title">Nola esportatu/berdinak diren ibilbideak grabatutako ibilbideak?</string>
|
||||
<string name="help_track_export_content">
|
||||
Pistak Ezarpenetatik KMZ, KML edo GPX gisa esportatu daitezke.
|
||||
KMZ / KML datu guztiak; GPX kokapenak soilik.
|
||||
<i> Partekatutako ikonoa </i> bidez partekatutako ibilbideak KMZ gisa partekatzen dira.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">OpenTracks-ek Google Play zerbitzua erabiltzea eskatzen al du?</string>
|
||||
|
||||
<string name="help_recording_title">Nola grabatzen ditu OpenTracks datuak?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks gailuaren GPS sentsorea erabiltzen du kokapena etengabe grabatzeko.
|
||||
GPS gailuak datu okerrak salatzen baditu (adibidez, kokapena, abiadura, kota), OpenTracks-ek ezin du ezer egin.</string>
|
||||
|
||||
<string name="help_data_storage_title">Nola gordetzen du OpenTracks ek sentsoreen datuak?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Sentsoreen datuak grabatutako kokapen bakoitzeko gordetzen dira.
|
||||
Bihotz-maiztasuneko sentsoreari dagokionez, horrek esan nahi du <i> bat </i> bihotz-tasaren neurketa kokapen bakoitzean gordetzen dela.
|
||||
Geldirik egon edo barrualdean bazaude, ez da sentsoreen daturik grabatuko (baina erakutsiko da).</string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks ez dira kokapenak grabatzen?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Zer egin dezakezu: \n
|
||||
a) egiaztatu GPSa gaituta dagoen ala ez, \n
|
||||
b) GPS harrera hobetu (adibidez, kanpora joan), \n
|
||||
c) egiaztatu <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/"> GPSTest </a> aplikazioarekin eta \n
|
||||
d) desgaitu energia aurreztea. \n
|
||||
\n
|
||||
Dena laguntzen ez baduzu, jakinarazi akats bat.</string>
|
||||
|
||||
<string name="help_support_title">Nola onartzen dut OpenTracks?</string>
|
||||
<string name="help_support_content">
|
||||
Aukera hau: \ n
|
||||
a) zabaldu OpenTracks-i buruzko hitza, \ n
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> proposatu ezaugarriak </a>, \ n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues"> txostenen akatsak </a>, \ n
|
||||
d) softwarearen garapenean laguntzeko, \ n
|
||||
e) erosi <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore"> Google Play Store </a>, \ n
|
||||
f) eman, eta \ n
|
||||
g) Egin uste duzu OpenTracks-ek laguntzen duela.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">hegazkina</string>
|
||||
<string name="activity_type_atv">Lurreko ibilgailu guztiak</string>
|
||||
<string name="activity_type_biking">ziklismoa</string>
|
||||
@@ -66,6 +151,8 @@
|
||||
<string name="activity_type_walking">oinez</string>
|
||||
<string name="activity_type_water_skiing">uretako eskia</string>
|
||||
<string name="activity_type_wind_surfing">windsurfa</string>
|
||||
<string name="app_not_installed_show_on_map">Mesedez, instalatu maparen datuak aurkezten dituen aplikazioa.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Jarduera mota: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Batez besteko abiadura, abian: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Batez besteko abiadura, abian: %1$.2f km/h (%2$.1f mi/h)</string>
|
||||
@@ -93,6 +180,7 @@
|
||||
<string name="description_sensor_cadence">Kadentzia (rpm)</string>
|
||||
<string name="description_sensor_heart_rate">Maiztasun kardiakoa (bpm)</string>
|
||||
<string name="description_sensor_power">Potentzia (W)</string>
|
||||
<string name="description_default_speed_or_pace">Jarduera motaren arabera</string>
|
||||
<string name="description_speed_imperial">Abiadura (mi/h)</string>
|
||||
<string name="description_speed_metric">Abiadura (km/h)</string>
|
||||
<string name="description_time">Iraupena</string>
|
||||
@@ -100,19 +188,25 @@
|
||||
<string name="description_total_time">Denbora, guztira: %1$s</string>
|
||||
<string name="description_track_point">Puntua</string>
|
||||
<string name="description_track_segment">Segmentua</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Guztiak %1$s</string>
|
||||
<string name="export_all_title">Esportatu kanpoko biltegira</string>
|
||||
<string name="export_with_photos">argazkiekin</string>
|
||||
<string name="export_without_photos">argazkirik gabe</string>
|
||||
<string name="export_error">%1$d/%2$s esportatu dira %3$s direktoriora</string>
|
||||
<string name="export_option">%1$s gisa %2$s karpetara</string>
|
||||
<string name="export_progress_message">%1$s karpetara esportatzen…</string>
|
||||
<string name="export_success">%1$s %2$s direktoriora esportatu dira</string>
|
||||
<string name="export_title">Esportatu hona…</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d fitxategi</string>
|
||||
<string name="files_many">%1$d fitxategi</string>
|
||||
<string name="files_one">1 fitxategi</string>
|
||||
<string name="files_other">%1$d fitxategi</string>
|
||||
<string name="files_two">2 fitxategi</string>
|
||||
<string name="files_zero">0 fitxategi</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Gehitu</string>
|
||||
<string name="generic_cancel">Utzi</string>
|
||||
<string name="generic_delete_all_confirm_title">Guztiak ezabatu nahi dituzu?</string>
|
||||
@@ -131,6 +225,7 @@
|
||||
<string name="generic_success_title">Behar bezala burutu da</string>
|
||||
<string name="generic_tracks">Ibilbideak</string>
|
||||
<string name="generic_yes">Bai</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">\"Kokapenerako sarbidea\"</string>
|
||||
<string name="gps_disabled">GPSa ez dago gaituta. %1$s atalera joateko, sakatu hau. Itzultzeko, sakatu Atzera botoia.</string>
|
||||
<string name="gps_disabled_my_location">Ezin da uneko kokapena zehaztu. Gaitu kokapen-iturburu gehiago %1$s atalean eta ziurtatu zerua ikus dezakezula. Saiatu berriro geroago.</string>
|
||||
@@ -138,6 +233,7 @@
|
||||
<string name="gps_starting">GPSa hasten</string>
|
||||
<string name="gps_wait_for_better_signal">GPS seinale hobearen zain</string>
|
||||
<string name="gps_wait_for_signal">GPS seinalearen zain</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Aplikazioa</string>
|
||||
<string name="image_arrow">Gezia</string>
|
||||
<string name="image_marker">Markatzailea</string>
|
||||
@@ -148,6 +244,7 @@
|
||||
<string name="image_record">Grabatu</string>
|
||||
<string name="image_stop">Gelditu</string>
|
||||
<string name="image_track">Ibilbidea</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">%1$d/%2$s inportatu dira %3$s direktoriotik</string>
|
||||
<string name="import_no_directory">%1$s ez dago</string>
|
||||
<string name="import_no_file">Ez dago fitxategirik inportatzeko. Konektatu gailua ordenagailura eta ezarri inportatu beharreko fitxategiak %1$s karpetan.</string>
|
||||
@@ -156,9 +253,11 @@
|
||||
<string name="import_selection_option">%1$s guztiak</string>
|
||||
<string name="import_selection_title">Inportatu kanpoko memoriatik</string>
|
||||
<string name="import_success">%1$s %2$s direktoriotik inportatu da</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">Ezin da markatzailea txertatu. Ez dago GPS seinalerik. Saiatu berriro.</string>
|
||||
<string name="marker_add_success">Markatzailea txertatu da</string>
|
||||
<string name="marker_add_canceled">Bertan behera utzi da; ez da markatzailea gehitu.</string>
|
||||
<string name="marker_add_photo_canceled">Ezeztatu, ez da argazki-markarik gehitu</string>
|
||||
<string name="marker_delete_all_confirm_message">Ibilbideko markatzaile guztiak behin betiko ezabatuko dira gailutik</string>
|
||||
<string name="marker_delete_one_confirm_message">Markatzailea behin betiko ezabatuko da gailutik</string>
|
||||
<string name="marker_delete_one_confirm_title">Markatzailea ezabatu nahi duzu?</string>
|
||||
@@ -168,10 +267,14 @@
|
||||
<string name="marker_name_format">%1$d markatzailea</string>
|
||||
<string name="marker_split_name_format">Zatitu %1$d</string>
|
||||
<string name="marker_title">%1$d/%2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Azken zatitze-markatzaileaz geroztik:</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Markatzaile mota (adibidez, ur-jauzia)</string>
|
||||
<string name="marker_edit_marker_type_hint">Markatzaile mota</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">Ez duzu markatzailerik</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Estatistika orokorrak</string>
|
||||
<string name="menu_delete">Ezabatu</string>
|
||||
<string name="menu_edit">Editatu</string>
|
||||
@@ -180,6 +283,7 @@
|
||||
<string name="menu_import_all">Inportatu guztiak</string>
|
||||
<string name="menu_insert_marker">Txertatu markatzailea</string>
|
||||
<string name="menu_insert_photo">Txertatu argazkia</string>
|
||||
<string name="menu_insert_gallery_img">Txertatu galeriako irudia</string>
|
||||
<string name="menu_markers">Markatzaileak</string>
|
||||
<string name="menu_search">Bilatu</string>
|
||||
<string name="menu_select_all">Hautatu guztiak</string>
|
||||
@@ -192,11 +296,17 @@
|
||||
<string name="menu_stop_gps">Gelditu GPSa</string>
|
||||
<string name="menu_view_photo">Ikusi argazkia</string>
|
||||
<string name="menu_voice_frequency">Ahotsaren frekuentzia</string>
|
||||
<string name="menu_resume_track">Jarraitu pista</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Grabaketa-zerbitzua</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks GPSa erabiltzeko baimena behar du.</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Ibilbideak eta markatzaileak</string>
|
||||
<string name="search_list_empty_message">Ez da bilaketarekin bat datorren ibilbide edo markatzailerik aurkitu</string>
|
||||
<string name="search_list_marker_track_location">\"%1$s\" ibilbidean.</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Bateria maila</string>
|
||||
<string name="sensor_state_cadence">Erritmoa</string>
|
||||
<string name="sensor_state_cadence_value">%1$d rpm</string>
|
||||
@@ -205,12 +315,22 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d bpm</string>
|
||||
<string name="sensor_state_power">Potentzia</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Sensor %1$s ezezaguna da. Egiaztatu ezarpenak.</string>
|
||||
<string name="sensor_could_not_scan">Ezin izan da Bluetooth gailuak bilatu (%1$i errorea).</string>
|
||||
<string name="bluetooth_disabled">Mesedez, aktibatu Bluetooth.</string>
|
||||
<string name="settings_not_while_recording">Ez dago erabilgarri ibilbidea grabatzen ari den bitartean.</string>
|
||||
<string name="settings_show">Erakutsi</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Aurreratua</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Distantziaren arabera</string>
|
||||
<string name="settings_chart_by_time">Denboraren arabera</string>
|
||||
<string name="settings_chart_x_axis">X ardatza</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Erakutsi estatistika blokeo-pantailan</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Grabatzen ari zaren bitartean, erakutsi estatistikak gailua desblokeatu gabe.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Mantendu pantaila</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Grabatzen ari zaren bitartean, mantendu pantaila.</string>
|
||||
<string name="settings_recording">Grabaketa</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Berrabiarazi ondoren, berrekin grabaketei</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">Berrabiarazi ondoren, ez berrekin grabaketei</string>
|
||||
@@ -228,21 +348,32 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Data (tokikoa)</string>
|
||||
<string name="settings_recording_track_name_number_option">Zenbakia</string>
|
||||
<string name="settings_recording_track_name_title">Ibilbidearen izen lehenetsia</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Berrezarri</string>
|
||||
<string name="settings_reset_confirm_message">Ezarpen guztiak balio lehenetsietara leheneratuko dira.</string>
|
||||
<string name="settings_reset_confirm_title">Berrezarri egin nahi duzu?</string>
|
||||
<string name="settings_reset_done">Ezarpen guztiak balio lehenetsietara leheneratu dira</string>
|
||||
<string name="settings_error_initial_values_restored">Sentitzen dugu, baina akats bat gertatu da. Ezarpen guztiak lehenetsitako balioetara itzuli dira.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Sentsorea</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetootha</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Bluetooth sentsorea</string>
|
||||
<string name="settings_sensor_connecting">Honekin konektatuta: %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Deskonektatuta %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Gurpilaren tamaina (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Latitudea/Longitudea</string>
|
||||
<string name="settings_stats_rate_title">Erritmo hobetsia</string>
|
||||
<string name="settings_stats_units_imperial">Inperiala (mi, ft)</string>
|
||||
<string name="settings_stats_units_metric">Metrikoa (km, m)</string>
|
||||
<string name="settings_stats_units_title">Unitate hobetsiak</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Partekatu ibilbide-fitxategia</string>
|
||||
<string name="share_track_share_file_body">Ibilbidea interesgarria gerta dakizukeela uste dut.\n\nIbilbidea ikusteko, erabili Google Earth edo beste kartografia-softwareren bat.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Bide bat partekatu nahi nuke zurekin</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Batez besteko pausoa, mugitzerakoan</string>
|
||||
<string name="stats_average_moving_speed">Batez besteko abiadura, mugitzerakoan</string>
|
||||
<string name="stats_average_pace">Batez besteko pausoa</string>
|
||||
@@ -261,25 +392,36 @@
|
||||
<string name="stats_speed">Abiadura</string>
|
||||
<string name="stats_distance">Distantzia</string>
|
||||
<string name="stats_total_time">Denbora, guztira</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">%1$d. bidea</string>
|
||||
<string name="track_record_notification">Ibilbidea grabatzen…</string>
|
||||
<string name="track_recording_notification_accuracy">Kokapenaren zehaztasuna: %1$s</string>
|
||||
<string name="track_markers">%1$s ibilbideko markatzaileak</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">Bidea eta bideko markatzaileak behin betiko ezabatuko dira gailutik.</string>
|
||||
<string name="track_delete_one_confirm_title">Ibilbidea ezabatu nahi duzu?</string>
|
||||
<string name="track_delete_multiple_confirm_message">Hautatutako bidea eta bideko markatzaileak behin betiko ezabatuko dira gailutik.</string>
|
||||
<string name="track_delete_progress_message">Ezabatzen…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Diagrama</string>
|
||||
<string name="track_detail_stats_tab">Estatistikak</string>
|
||||
<string name="track_detail_record_success">Ibilbide berria grabatzen ari da</string>
|
||||
<string name="track_detail_resume_success">Orain pista berriro hasi zen</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Jarduera mota (adibidez, mendi-txangoa)</string>
|
||||
<string name="track_edit_activity_type_hint">Jarduera mota</string>
|
||||
<string name="track_edit_new_track_title">Ibilbide berria</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Hasi hurrengo abentura grabatzen</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d ibilbide</string>
|
||||
<string name="tracks_many">%1$d ibilbide</string>
|
||||
<string name="tracks_one">1 ibilbide</string>
|
||||
<string name="tracks_other">%1$d ibilbide</string>
|
||||
<string name="tracks_two">2 ibilbide</string>
|
||||
<string name="tracks_zero">0 ibilbide</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">oin</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
@@ -288,6 +430,7 @@
|
||||
<string name="unit_mile_per_hour">mi/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/mi</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Doitu zehaztasuna</string>
|
||||
<string name="value_adapt_battery_life">Doitu bateriaren iraupenera</string>
|
||||
<string name="value_always">Beti</string>
|
||||
@@ -314,6 +457,7 @@
|
||||
<string name="value_off">Desaktibatuta</string>
|
||||
<string name="value_smallest">Txikiena</string>
|
||||
<string name="value_smallest_recommended">Txikiena (gomendatua)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d ordu</string>
|
||||
<string name="voice_hours_many">%1$d ordu</string>
|
||||
<string name="voice_hours_one">1 ordu</string>
|
||||
@@ -360,6 +504,7 @@
|
||||
<string name="voice_total_distance_miles_two">distantzia, guztira: 2 milia</string>
|
||||
<string name="voice_total_distance_miles_zero">distantzia, guztira: 0 milia</string>
|
||||
<string name="voice_total_distance_zero">Nire ibilbideen distantzia, guztira, zero da.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">kutxazaina</string>
|
||||
<string name="waypoint_type_bank">bankua</string>
|
||||
<string name="waypoint_type_bar">taberna</string>
|
||||
@@ -411,4 +556,7 @@
|
||||
<string name="waypoint_type_waterfall">ur-jauzia</string>
|
||||
<string name="waypoint_type_water_fountain">iturria</string>
|
||||
<string name="waypoint_type_waypoint">bideko puntua</string>
|
||||
<!-- Share image -->
|
||||
<string name="share_image_subject">Irudi bat zurekin partekatu nahi nuke</string>
|
||||
<string name="share_image_body">Irudi hau interesatuko zaizuela uste dut.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">À propos d\'OpenTracks</string>
|
||||
<string name="about_description"><i>OpenTracks</i> est une application de suivi sportif qui respecte totalement votre vie privée.</string>
|
||||
<string name="about_url">Page web du projet: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Nom de la version: %1$s</string>
|
||||
<string name="about_version_code">Code de version: %1$d</string>
|
||||
<string name="about_history">OpenTracks est une bifurcation de <a href="https://code.google.com/archive/p/mytracks/"><i>Google\'s MyTracks</i></a> (abandonné en 2016).</string>
|
||||
<string name="about_libraries">Bibliothèques</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks présente les caractéristiques suivantes:</string>
|
||||
<string name="help_feature_content">
|
||||
* créer des traces GPS\n
|
||||
* utiliser un capteur de fréquence cardiaque (Bluetooth LE uniquement)\n
|
||||
* annonces vocales (par temps ou distance)\n
|
||||
* créer des marqueurs (y compris des images)\n
|
||||
* fonctionne complètement hors ligne
|
||||
* montrer les traces sur une carte (voir ci-dessous)</string>
|
||||
|
||||
<string name="help_track_map_title">Comment faire apparaître une trace sur une carte ?</string>
|
||||
<string name="help_track_map_content">
|
||||
Utilisez la petite icône de carte.\n
|
||||
a)
|
||||
(mises à jour en direct) Installez <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Il fournit des cartes en ligne ou hors ligne via <a href="https://www.openstreetmap.org ">OpenStreetMap</a>.\n
|
||||
En fait, OSMDashboard est une application séparée qui ne peut accéder (temporairement) qu aux données des piste(s) qui vont être affichées.
|
||||
\n
|
||||
b)
|
||||
Via une application cartographique normale (par exemple) , <a href="http://osmand.net/">OsmAnd</a> et <a href="https://maps.me/">MAPS.ME</a>
|
||||
Ces applications doivent prendre en charge le format de fichier KMZ (uniquement les lieux et les horodatages).
|
||||
En fait, une application doit prendre en charge <i>ACTION_VIEW</i> avec MIME <i>application/vnd.google-earth.kmz</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">Comment OpenTracks stocke-t-il les photos qui ont été prises comme marqueurs ?</string>
|
||||
<string name="help_storage_pictures_content">Elles sont stockées dans le stockage interne de lapplication (c est-à-dire uniquement accessible dans OpenTracks).</string>
|
||||
|
||||
<string name="help_track_export_title">Comment puis-je exporter/partager des pistes enregistrées ?</string>
|
||||
<string name="help_track_export_content">
|
||||
Les pistes peuvent être exportées à partir des paramètres sous forme de KMZ, KML ou GPX.
|
||||
KMZ/KML toutes les données; GPX seulement les emplacements.
|
||||
Les pistes partagées via l icône <i>partager</i> sont partagées sous la forme KMZ.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">OpenTracks nécessite-t-il/utilise-t-il le service Google Play ?</string>
|
||||
|
||||
<string name="help_recording_title">Comment OpenTracks enregistre-t-il les données ?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks utilise le capteur GPS de lappareil pour enregistrer la position en continu.
|
||||
Si le dispositif GPS signale des données inexactes (par exemple, la localisation, la vitesse, laltitude), OpenTracks ne peut rien y faire.</string>
|
||||
|
||||
<string name="help_data_storage_title">Comment OpenTracks stocke-t-il les données des capteurs?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Les données des capteurs sont stockées par emplacement enregistré.
|
||||
Dans le cas dun capteur de fréquence cardiaque, cela signifie que seule la mesure de la fréquence cardiaque <i>one</i> est stockée par emplacement.
|
||||
Si vous êtes à larrêt ou à lintérieur, aucune donnée du capteur ne sera enregistrée (mais elle sera affichée).</string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">OpenTracks nenregistre pas les lieux?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Ce que vous pouvez faire :\n
|
||||
a) vérifier si le GPS est activé,\n
|
||||
b) améliorer la réception GPS (par exemple, aller à lextérieur),\n
|
||||
c) vérifier si avec <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a> app, et\n
|
||||
d) désactiver léconomie dénergie.\n
|
||||
\n
|
||||
Si tout ne va pas dans le bon sens, veuillez signaler un bug.</string>
|
||||
|
||||
<string name="help_support_title">Comment puis-je soutenir OpenTracks?</string>
|
||||
<string name="help_support_content">
|
||||
Vous pouvez:\n
|
||||
a) faire connaître OpenTracks,\n
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">proposer des fonctionnalités</a>,\n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">rapporter les bugs</a>,\n
|
||||
d) aide au développement de logiciels,\n
|
||||
e) acheter dans <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,\n
|
||||
f) faire un don, et
|
||||
g) faire tout ce qui vous semble utile à OpenTracks.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">navigation aérienne</string>
|
||||
<string name="activity_type_atv">quad</string>
|
||||
<string name="activity_type_biking">cyclisme</string>
|
||||
@@ -66,6 +154,8 @@
|
||||
<string name="activity_type_walking">marche</string>
|
||||
<string name="activity_type_water_skiing">ski nautique</string>
|
||||
<string name="activity_type_wind_surfing">planche à voile</string>
|
||||
<string name="app_not_installed_show_on_map">Veuillez installer une application qui prend en charge la présentation des données cartographiques.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Type d\'activité : %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Allure moyenne : %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Vitesse moyenne de déplacement : %1$.2f km/h (%2$.1f mi/h)</string>
|
||||
@@ -93,6 +183,7 @@
|
||||
<string name="description_sensor_cadence">Cadence (tr/min)</string>
|
||||
<string name="description_sensor_heart_rate">Fréquence cardiaque (bpm)</string>
|
||||
<string name="description_sensor_power">Puissance (W)</string>
|
||||
<string name="description_default_speed_or_pace">Par type d activité</string>
|
||||
<string name="description_speed_imperial">Vitesse (mi/h)</string>
|
||||
<string name="description_speed_metric">Vitesse (km/h)</string>
|
||||
<string name="description_time">Durée</string>
|
||||
@@ -100,19 +191,25 @@
|
||||
<string name="description_total_time">Durée totale : %1$s</string>
|
||||
<string name="description_track_point">Point</string>
|
||||
<string name="description_track_segment">Segment</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Tous les parcours au format %1$s</string>
|
||||
<string name="export_all_title">Exporter vers la mémoire de stockage externe</string>
|
||||
<string name="export_with_photos">avec les photos</string>
|
||||
<string name="export_without_photos">sans les photos</string>
|
||||
<string name="export_error">%1$d parcours sur %2$s exporté(s) vers le répertoire %3$s.</string>
|
||||
<string name="export_option">au format %1$s vers le répertoire %2$s</string>
|
||||
<string name="export_progress_message">Exportation vers le répertoire %1$s en cours…</string>
|
||||
<string name="export_success">%1$s parcours exporté(s) vers le répertoire %2$s.</string>
|
||||
<string name="export_title">Exporter vers…</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d fichiers</string>
|
||||
<string name="files_many">%1$d fichiers</string>
|
||||
<string name="files_one">1 fichier</string>
|
||||
<string name="files_other">%1$d fichiers</string>
|
||||
<string name="files_two">2 fichiers</string>
|
||||
<string name="files_zero">Aucun fichier</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Ajouter</string>
|
||||
<string name="generic_cancel">Annuler</string>
|
||||
<string name="generic_delete_all_confirm_title">Tout supprimer ?</string>
|
||||
@@ -131,6 +228,7 @@
|
||||
<string name="generic_success_title">Opération réussie</string>
|
||||
<string name="generic_tracks">Parcours</string>
|
||||
<string name="generic_yes">Oui</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">\"Données de localisation\"</string>
|
||||
<string name="gps_disabled">Le GPS n\'est pas activé. Appuyez ici pour accéder aux %1$s. Appuyez sur le bouton Retour pour revenir en arrière.</string>
|
||||
<string name="gps_disabled_my_location">Impossible de déterminer la position actuelle. Veuillez activer d\'autres sources de localisation dans les %1$s et vous assurer
|
||||
@@ -139,6 +237,7 @@
|
||||
<string name="gps_starting">Lancement du GPS en cours…</string>
|
||||
<string name="gps_wait_for_better_signal">En attente d\'un signal GPS de meilleure qualité…</string>
|
||||
<string name="gps_wait_for_signal">En attente du signal GPS…</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Application</string>
|
||||
<string name="image_arrow">Flèche</string>
|
||||
<string name="image_marker">Repère</string>
|
||||
@@ -149,6 +248,7 @@
|
||||
<string name="image_record">Enregistrer</string>
|
||||
<string name="image_stop">Arrêter</string>
|
||||
<string name="image_track">Parcours</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">%1$d fichier(s) sur %2$s importé(s) depuis le répertoire %3$s.</string>
|
||||
<string name="import_no_directory">Le répertoire %1$s n\'existe pas.</string>
|
||||
<string name="import_no_file">Aucun fichier à importer. Connectez votre appareil à l\'ordinateur, puis déplacez les fichiers à importer vers le répertoire %1$s.</string>
|
||||
@@ -157,9 +257,11 @@
|
||||
<string name="import_selection_option">Tous les parcours au format %1$s</string>
|
||||
<string name="import_selection_title">Importer depuis la mémoire de stockage externe</string>
|
||||
<string name="import_success">%1$s fichier(s) importé(s) depuis le répertoire %2$s.</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">Impossible d\'insérer un repère. Pas de signal GPS. Veuillez réessayer.</string>
|
||||
<string name="marker_add_success">Un repère a bien été inséré.</string>
|
||||
<string name="marker_add_canceled">Opération annulée. Aucun repère n\'a été ajouté.</string>
|
||||
<string name="marker_add_photo_canceled">Annulé, aucun marqueur de photo ajouté</string>
|
||||
<string name="marker_delete_all_confirm_message">Tous les repères de ce parcours vont être définitivement supprimés de l\'appareil.</string>
|
||||
<string name="marker_delete_one_confirm_message">Le repère va être définitivement supprimé de l\'appareil.</string>
|
||||
<string name="marker_delete_one_confirm_title">Supprimer le repère ?</string>
|
||||
@@ -169,10 +271,14 @@
|
||||
<string name="marker_name_format">Repère %1$d</string>
|
||||
<string name="marker_split_name_format">Point de cheminement %1$d</string>
|
||||
<string name="marker_title">%1$d sur %2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Depuis le dernier point de cheminement :</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Type de repère (exemple : cascade)</string>
|
||||
<string name="marker_edit_marker_type_hint">Type de repère</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">Vous n\'avez aucun repère.</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Statistiques cumulées</string>
|
||||
<string name="menu_delete">Supprimer</string>
|
||||
<string name="menu_edit">Modifier</string>
|
||||
@@ -181,6 +287,7 @@
|
||||
<string name="menu_import_all">Tout importer</string>
|
||||
<string name="menu_insert_marker">Insérer un repère</string>
|
||||
<string name="menu_insert_photo">Insérer une photo</string>
|
||||
<string name="menu_insert_gallery_img">Insérer une image de la galerie</string>
|
||||
<string name="menu_markers">Repères</string>
|
||||
<string name="menu_search">Rechercher</string>
|
||||
<string name="menu_select_all">Tout sélectionner</string>
|
||||
@@ -193,11 +300,17 @@
|
||||
<string name="menu_stop_gps">Arrêter le GPS</string>
|
||||
<string name="menu_view_photo">Afficher la photo</string>
|
||||
<string name="menu_voice_frequency">Fréquence vocale</string>
|
||||
<string name="menu_resume_track">Reprendre la piste</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Service enregistrement</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks nécessite une autorisation pour utiliser le GPS.</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Parcours et repères</string>
|
||||
<string name="search_list_empty_message">Aucun parcours ni repère ne correspond à votre recherche.</string>
|
||||
<string name="search_list_marker_track_location">Dans le parcours \"%1$s\"</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Niveau de la batterie</string>
|
||||
<string name="sensor_state_cadence">Cadence</string>
|
||||
<string name="sensor_state_cadence_value">%1$d tr/min</string>
|
||||
@@ -206,12 +319,22 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d bpm</string>
|
||||
<string name="sensor_state_power">Puissance</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Capteur %1$s est inconnu. Veuillez vérifier les paramètres.</string>
|
||||
<string name="sensor_could_not_scan">Impossible de rechercher les appareils Bluetooth (erreur %1$i).</string>
|
||||
<string name="bluetooth_disabled">Veuillez activer Bluetooth.</string>
|
||||
<string name="settings_not_while_recording">Non disponible pendant l\'enregistrement d\'un parcours.</string>
|
||||
<string name="settings_show">Afficher</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Avancé</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">En fonction de la distance</string>
|
||||
<string name="settings_chart_by_time">En fonction de la durée</string>
|
||||
<string name="settings_chart_x_axis">Axe X</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Afficher les statistiques sur l\'écran de verrouillage</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Pendant l\'enregistrement, afficher les statistiques sans déverrouiller l\'appareil.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Garder l\'écran allumé</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Pendant l\'enregistrement, garder l\'écran allumé.</string>
|
||||
<string name="settings_recording">Enregistrement</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Toujours reprendre l\'enregistrement après un redémarrage.</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">Ne jamais reprendre l\'enregistrement après un redémarrage.</string>
|
||||
@@ -229,21 +352,32 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Date (format local)</string>
|
||||
<string name="settings_recording_track_name_number_option">Numéro</string>
|
||||
<string name="settings_recording_track_name_title">Nom parcours par défaut</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Réinitialiser</string>
|
||||
<string name="settings_reset_confirm_message">Les valeurs par défaut seront rétablies pour tous les paramètres.</string>
|
||||
<string name="settings_reset_confirm_title">Réinitialiser maintenant ?</string>
|
||||
<string name="settings_reset_done">Les valeurs par défaut de tous les paramètres ont bien été rétablies.</string>
|
||||
<string name="settings_error_initial_values_restored">Désolé, mais une erreur sest produite. Tous les paramètres ont été rétablis aux valeurs par défaut.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Dispositif de mesure</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Capteur Bluetooth</string>
|
||||
<string name="settings_sensor_connecting">Connecté à %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Déconnecté de %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Taille des roues (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Latitude/Longitude</string>
|
||||
<string name="settings_stats_rate_title">Mode de calcul souhaité</string>
|
||||
<string name="settings_stats_units_imperial">Unités impériales (mi, pi)</string>
|
||||
<string name="settings_stats_units_metric">Unités métriques (km, m)</string>
|
||||
<string name="settings_stats_units_title">Unités souhaitées</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Partager le fichier du parcours</string>
|
||||
<string name="share_track_share_file_body">Je pense que ce parcours peut t\'intéresser.\n\nPour l\'afficher, utilise Google Earth ou un autre logiciel de cartographie.\n\n%1$s</string>
|
||||
<string name="share_track_subject">J\'aimerais partager un parcours avec toi</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Allure moyenne de déplacement</string>
|
||||
<string name="stats_average_moving_speed">Vitesse moyenne de déplacement</string>
|
||||
<string name="stats_average_pace">Allure moyenne</string>
|
||||
@@ -262,25 +396,36 @@
|
||||
<string name="stats_speed">Vitesse</string>
|
||||
<string name="stats_distance">Distance</string>
|
||||
<string name="stats_total_time">Durée totale</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">Parcours %1$d</string>
|
||||
<string name="track_record_notification">Enregistrement du parcours…</string>
|
||||
<string name="track_recording_notification_accuracy">Précision de la localisation: %1$s</string>
|
||||
<string name="track_markers">Repères pour le parcours %1$s</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">Ce parcours et ses repères vont être définitivement effacés de l\'appareil.</string>
|
||||
<string name="track_delete_one_confirm_title">Supprimer le parcours ?</string>
|
||||
<string name="track_delete_multiple_confirm_message">Les parcours sélectionnés et leurs repères respectifs vont être définitivement effacés de l\'appareil.</string>
|
||||
<string name="track_delete_progress_message">Suppression en cours…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Graphique</string>
|
||||
<string name="track_detail_stats_tab">Statistiques</string>
|
||||
<string name="track_detail_record_success">Enregistrement d\'un nouveau parcours en cours…</string>
|
||||
<string name="track_detail_resume_success">Reprenons maintenant la piste</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Type d\'activité (exemple : randonnée)</string>
|
||||
<string name="track_edit_activity_type_hint">Type d\'activité</string>
|
||||
<string name="track_edit_new_track_title">Nouveau parcours</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Commencez à enregistrer votre prochaine aventure ici.</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d parcours</string>
|
||||
<string name="tracks_many">%1$d parcours</string>
|
||||
<string name="tracks_one">1 parcours</string>
|
||||
<string name="tracks_other">%1$d parcours</string>
|
||||
<string name="tracks_two">2 parcours</string>
|
||||
<string name="tracks_zero">Aucun parcours</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">pied(s)</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
@@ -289,6 +434,7 @@
|
||||
<string name="unit_mile_per_hour">miles/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/mi</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Adapter pour la précision</string>
|
||||
<string name="value_adapt_battery_life">Économiser la batterie</string>
|
||||
<string name="value_always">Toujours</string>
|
||||
@@ -315,6 +461,7 @@
|
||||
<string name="value_off">Désactiver</string>
|
||||
<string name="value_smallest">La plus faible</string>
|
||||
<string name="value_smallest_recommended">La plus petite (recommandé)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d heures</string>
|
||||
<string name="voice_hours_many">%1$d heures</string>
|
||||
<string name="voice_hours_one">1 heure</string>
|
||||
@@ -361,6 +508,7 @@
|
||||
<string name="voice_total_distance_miles_two">distance totale 2 miles</string>
|
||||
<string name="voice_total_distance_miles_zero">distance totale 0 mile</string>
|
||||
<string name="voice_total_distance_zero">Mes parcours, distance nulle.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">distributeur de billets</string>
|
||||
<string name="waypoint_type_bank">banque</string>
|
||||
<string name="waypoint_type_bar">bar</string>
|
||||
@@ -412,11 +560,7 @@
|
||||
<string name="waypoint_type_waterfall">cascade</string>
|
||||
<string name="waypoint_type_water_fountain">fontaine</string>
|
||||
<string name="waypoint_type_waypoint">point de cheminement</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Afficher les statistiques sur l\'écran de verrouillage</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Pendant l\'enregistrement, afficher les statistiques sans déverrouiller l\'appareil.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Garder l\'écran allumé</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Pendant l\'enregistrement, garder l\'écran allumé.</string>
|
||||
<string name="about_preference_title">À propos d\'OpenTracks</string>
|
||||
<string name="export_with_photos">avec les photos</string>
|
||||
<string name="export_without_photos">sans les photos</string>
|
||||
<!-- Share image -->
|
||||
<string name="share_image_subject">J aimerais partager une image avec vous</string>
|
||||
<string name="share_image_body">Je pense que cette image pourrait vous intéresser.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,5 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Copyright 2010 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="about_preference_title">Acerca de OpenTracks</string>
|
||||
<string name="about_description"><i>OpenTracks</i> é unha aplicación para rexistrar as túas actividades deportivas que respecta a túa privacidade.</string>
|
||||
<string name="about_url">Web do proxecto: <a href="%1$s">%1$s</a></string>
|
||||
<string name="about_version_name">Nome da versión: %1$s</string>
|
||||
<string name="about_version_code">Código da versión: %1$d</string>
|
||||
<string name="about_history">OpenTracks é un fork de <a href="https://code.google.com/archive/p/mytracks/"><i>MyTracks de Google</i></a>(abandonado en 2016)</string>
|
||||
<string name="about_libraries">Bibliotecas</string>
|
||||
<!-- Help -->
|
||||
<string name="help_feature_title">OpenTracks ten as seguintes funcións:</string>
|
||||
<string name="help_feature_content">
|
||||
* crea rutas GPS\n
|
||||
* usa monitor do pulso cardíaco (só Bluetooth LE)\n
|
||||
* anuncios por voz (de tempo ou distancia)\n
|
||||
* crea marcadores (incl. fotos)\n
|
||||
* funciona sen precisar conexión a rede\n
|
||||
* mostra as rutas nun mapa (ver abaixo)
|
||||
</string>
|
||||
|
||||
<string name="help_track_map_title">¿Como mostrar a ruta nun mapa?</string>
|
||||
<string name="help_track_map_content">
|
||||
Usa a pequena icona do mapa.\n
|
||||
a)
|
||||
(actualizacións ao vivo) Instala <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Proporciona mapas con e sen conexión desde <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
En realidade, OSMDashboard é unha aplicación independiente que só pode acceder (temporalmente) aos datos das rutas que se van a mostrar.
|
||||
|
||||
\n
|
||||
b)\n
|
||||
A través dunha app \"normal\" como <a href="http://osmand.net/">OsmAnd</a> ou <a href="https://maps.me/">MAPS.ME</a>.
|
||||
Estas apps deben soportar o formato de ficheiros KMZ (só localización e marcas de tempo).
|
||||
De feito, unha app precisa soportar <i>ACTION_VIEW</i> con MIME <i>application/vnd.google-earth.kmz</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">¿De que xeito garda OpenTracks as fotos tomadas como marcadores?</string>
|
||||
<string name="help_storage_pictures_content">Gárdanse no almacenaxe interno da app (só accesible desde OpenTracks)</string>
|
||||
|
||||
<string name="help_track_export_title">¿De que xeito exporto/importo as rutas gravadas?</string>
|
||||
<string name="help_track_export_content">
|
||||
As rutas pódense exportar desde os Axustes como KMZ, KML ou GPX.
|
||||
KMZ/KML inclúe todos os datos; GPX só localización.
|
||||
As ruts compartidas a través da <i>icona compartir</i> compártense como KMZ.</string>
|
||||
|
||||
<string name="help_data_google_play_services_title">¿OpenTracks precisa/utiliza Google Play Service?</string>
|
||||
|
||||
<string name="help_recording_title">¿Como grava OpenTracks os datos?</string>
|
||||
<string name="help_recording_content">
|
||||
OpenTracks usa o sensor GPS do dispositivo para gravar a localización de xeito contínuo.
|
||||
Se o GPS informa sobre datos pouco precisos (ex.: localización, velocidade, elevación), OpenTracks non pode facer nada ao respecto.</string>
|
||||
|
||||
<string name="help_data_storage_title">¿De que xeito garda OpenTracks os datos dos sensores?</string>
|
||||
<string name="help_data_storage_content">
|
||||
Os datos dos sensores gárdanse asociados a localización.
|
||||
Respecto do ritmo cardíaco, significa que só se garda <i>unha medida</i> asociada a unha localización.
|
||||
Se te detés ou estás en interiores, non se gardarán datos do sensor (mais serán mostrados). </string>
|
||||
|
||||
<string name="help_gps_troubleshooting_title">¿OpenTracks non grava as localizacións?</string>
|
||||
<string name="help_gps_troubleshooting_content">
|
||||
Podes intentar:\n
|
||||
a) mira que o GPS esté activado,\n
|
||||
b) mellora a recepción GPS (ex. sae ao exterior),\n
|
||||
c) comprobaa coa app <a href="https://f-droid.org/en/packages/com.android.gpstest.osmdroid/">GPSTest</a>, e\n
|
||||
d) desactiva o aforro de enerxía.\n
|
||||
\n
|
||||
Se isto non axuda, infórmanos do problema.</string>
|
||||
|
||||
<string name="help_support_title">¿Como podo axudar a OpenTracks?</string>
|
||||
<string name="help_support_content">
|
||||
Podes:\n
|
||||
a) falar de OpenTracks coas túas amizades,\n
|
||||
b) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">propoñer novas funcións</a>,\n
|
||||
c) <a href="https://github.com/OpenTracksApp/OpenTracks/issues">informar de fallos</a>,\n
|
||||
d) axudar no desenvolvemento,\n
|
||||
e) mercar a app na <a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">Google Play Store</a>,\n
|
||||
f) facer unha doazón, e\n
|
||||
g) calquera cousa que estimes axuda a OpenTracks.</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">avión</string>
|
||||
<string name="activity_type_atv">Quad</string>
|
||||
<string name="activity_type_biking">ciclismo</string>
|
||||
@@ -66,6 +156,8 @@
|
||||
<string name="activity_type_walking">camiñar</string>
|
||||
<string name="activity_type_water_skiing">esquí acuático</string>
|
||||
<string name="activity_type_wind_surfing">windsurf</string>
|
||||
<string name="app_not_installed_show_on_map">Por favor instala unha app que mostre datos nun mapa.</string>
|
||||
<!-- Description -->
|
||||
<string name="description_activity_type">Tipo de actividade: %1$s</string>
|
||||
<string name="description_average_moving_pace_in_minute">Ritmo de desprazamento medio: %1$s min/km (%2$s min/mi)</string>
|
||||
<string name="description_average_moving_speed">Velocidade de desprazamento media: %1$.2f km/h (%2$.1f mi/h)</string>
|
||||
@@ -93,6 +185,7 @@
|
||||
<string name="description_sensor_cadence">Cadencia (rpm)</string>
|
||||
<string name="description_sensor_heart_rate">Frecuencia cardíaca (pulsacións por minuto)</string>
|
||||
<string name="description_sensor_power">Potencia (W)</string>
|
||||
<string name="description_default_speed_or_pace">Por tipo de actividade</string>
|
||||
<string name="description_speed_imperial">Velocidade (mi/h)</string>
|
||||
<string name="description_speed_metric">Velocidade (km/h)</string>
|
||||
<string name="description_time">Tempo</string>
|
||||
@@ -100,19 +193,25 @@
|
||||
<string name="description_total_time">Tempo total: %1$s</string>
|
||||
<string name="description_track_point">Punto</string>
|
||||
<string name="description_track_segment">Segmento</string>
|
||||
<!-- Export -->
|
||||
<string name="export_all_option">Todas como %1$s</string>
|
||||
<string name="export_all_title">Exportar a almacenamento externo</string>
|
||||
<string name="export_with_photos">con fotos</string>
|
||||
<string name="export_without_photos">sen fotos</string>
|
||||
<string name="export_error">Exportados: %1$d de %2$s a %3$s</string>
|
||||
<string name="export_option">como %1$s a %2$s</string>
|
||||
<string name="export_progress_message">Exportando a %1$s…</string>
|
||||
<string name="export_success">Exportados: %1$s a %2$s</string>
|
||||
<string name="export_title">Exportar a…</string>
|
||||
<!-- External Storage -->
|
||||
<!-- Files -->
|
||||
<string name="files_few">%1$d ficheiros</string>
|
||||
<string name="files_many">%1$d ficheiros</string>
|
||||
<string name="files_one">1 ficheiro</string>
|
||||
<string name="files_other">%1$d ficheiros</string>
|
||||
<string name="files_two">2 ficheiros</string>
|
||||
<string name="files_zero">0 ficheiros</string>
|
||||
<!-- Generic -->
|
||||
<string name="generic_add">Engadir</string>
|
||||
<string name="generic_cancel">Cancelar</string>
|
||||
<string name="generic_delete_all_confirm_title">Eliminar todos?</string>
|
||||
@@ -131,6 +230,7 @@
|
||||
<string name="generic_success_title">Correcto</string>
|
||||
<string name="generic_tracks">Traxectos</string>
|
||||
<string name="generic_yes">Si</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">\"Acceso á situación\"</string>
|
||||
<string name="gps_disabled">O GPS non está habilitado. Toca aquí para ir a %1$s. Preme o botón Atrás para volver atrás.</string>
|
||||
<string name="gps_disabled_my_location">Non se pode determinar a situación actual. Habilita máis fontes de localización en %1$s e asegúrate de que o ceo estea visible. Téntao de novo máis tarde.</string>
|
||||
@@ -138,6 +238,7 @@
|
||||
<string name="gps_starting">Iniciando o GPS</string>
|
||||
<string name="gps_wait_for_better_signal">Agardando un mellor sinal de GPS</string>
|
||||
<string name="gps_wait_for_signal">Agardando un sinal de GPS</string>
|
||||
<!-- Image -->
|
||||
<string name="image_application">Aplicación</string>
|
||||
<string name="image_arrow">Frecha</string>
|
||||
<string name="image_marker">Marcador</string>
|
||||
@@ -148,6 +249,7 @@
|
||||
<string name="image_record">Gravar</string>
|
||||
<string name="image_stop">Deter</string>
|
||||
<string name="image_track">Traxecto</string>
|
||||
<!-- Import -->
|
||||
<string name="import_error">Importados: %1$d de %2$s de %3$s</string>
|
||||
<string name="import_no_directory">%1$s non existe</string>
|
||||
<string name="import_no_file">Non hai ficheiros para importar. Conecta o teu dispositivo ao ordenador e coloca os ficheiros para importar en %1$s.</string>
|
||||
@@ -156,9 +258,11 @@
|
||||
<string name="import_selection_option">Todos os %1$s</string>
|
||||
<string name="import_selection_title">Importar desde almacenamento externo</string>
|
||||
<string name="import_success">Importados: %1$s de %2$s</string>
|
||||
<!-- Marker -->
|
||||
<string name="marker_add_error">Non se pode inserir un marcador. Non hai sinal de GPS. Téntao de novo.</string>
|
||||
<string name="marker_add_success">Inseriuse un marcador</string>
|
||||
<string name="marker_add_canceled">Cancelouse a operación. Non se engadiu ningún marcador</string>
|
||||
<string name="marker_add_photo_canceled">Cancelado, non se engadiu marcador con foto</string>
|
||||
<string name="marker_delete_all_confirm_message">Todos os marcadores para este traxecto eliminaranse permanentemente do dispositivo</string>
|
||||
<string name="marker_delete_one_confirm_message">O marcador eliminarase permanentemente do dispositivo</string>
|
||||
<string name="marker_delete_one_confirm_title">Eliminar o marcador?</string>
|
||||
@@ -168,10 +272,14 @@
|
||||
<string name="marker_name_format">Marcador %1$d</string>
|
||||
<string name="marker_split_name_format">División %1$d</string>
|
||||
<string name="marker_title">%1$d de %2$d</string>
|
||||
<!-- Marker Detail -->
|
||||
<string name="marker_detail_statistics_title">Desde o último marcador de división:</string>
|
||||
<!-- Marker Edit -->
|
||||
<string name="marker_edit_marker_type">Tipo de marcador (por exemplo, fervenza)</string>
|
||||
<string name="marker_edit_marker_type_hint">Tipo de marcador</string>
|
||||
<!-- Marker List -->
|
||||
<string name="marker_list_empty_message">Non tes marcadores</string>
|
||||
<!-- Menu -->
|
||||
<string name="menu_aggregated_statistics">Estatísticas globais</string>
|
||||
<string name="menu_delete">Eliminar</string>
|
||||
<string name="menu_edit">Editar</string>
|
||||
@@ -180,6 +288,7 @@
|
||||
<string name="menu_import_all">Importar todo</string>
|
||||
<string name="menu_insert_marker">Inserir marcador</string>
|
||||
<string name="menu_insert_photo">Inserir foto</string>
|
||||
<string name="menu_insert_gallery_img">Insertar imaxe da galería</string>
|
||||
<string name="menu_markers">Marcadores</string>
|
||||
<string name="menu_search">Busca</string>
|
||||
<string name="menu_select_all">Seleccionar todo</string>
|
||||
@@ -192,11 +301,17 @@
|
||||
<string name="menu_stop_gps">Desactivar GPS</string>
|
||||
<string name="menu_view_photo">Ver foto</string>
|
||||
<string name="menu_voice_frequency">Frecuencia da voz</string>
|
||||
<string name="menu_resume_track">Retomar gravación</string>
|
||||
<!-- OpenTracks -->
|
||||
<string name="app_name">OpenTracks</string>
|
||||
<string name="recording_service">Servizo de gravación</string>
|
||||
<!-- Permission -->
|
||||
<string name="permission_gps_failed">OpenTracks precisa permiso para usar o GPS</string>
|
||||
<!-- Search -->
|
||||
<string name="search_global_description">Traxectos e marcadores</string>
|
||||
<string name="search_list_empty_message">Non hai traxectos ou marcadores que coincidan coa túa busca</string>
|
||||
<string name="search_list_marker_track_location">Na ruta \"%1$s\".</string>
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_state_battery">Nivel da batería</string>
|
||||
<string name="sensor_state_cadence">Cadencia</string>
|
||||
<string name="sensor_state_cadence_value">%1$d rpm</string>
|
||||
@@ -205,12 +320,23 @@
|
||||
<string name="sensor_state_heart_rate_value">%1$d bpm</string>
|
||||
<string name="sensor_state_power">Potencia</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Sensor %1$s descoñecido. Comproba os axustes.</string>
|
||||
<string name="sensor_could_not_scan">Non se escanearon dispositivos Bluetooth (fallo %1$i).</string>
|
||||
<string name="bluetooth_disabled">Activa o Bluetooth</string>
|
||||
<string name="settings_not_while_recording">Non dispoñible durante a gravación dunha ruta</string>
|
||||
<string name="settings_show">Mostrar</string>
|
||||
<!-- Settings Advanced -->
|
||||
<string name="settings_advanced">Opcións avanzadas</string>
|
||||
<string name="settings_default_trackfileformat">Formato do ficheiro a exportar/compartir</string>
|
||||
<!-- Settings Chart -->
|
||||
<string name="settings_chart_by_distance">Por distancia</string>
|
||||
<string name="settings_chart_by_time">Por duración</string>
|
||||
<string name="settings_chart_x_axis">Eixo X</string>
|
||||
<!-- Settings Recording -->
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_title">Mostrar estatísticas na pantalla de bloqueo</string>
|
||||
<string name="settings_recording_show_on_lockscreen_while_recording_summary">Ao gravar, mostra estatísticas sen desbloquear o dispositivo.</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_title">Manter pantalla acesa</string>
|
||||
<string name="settings_recording_keep_screen_on_while_recording_summary">Ao gravar, manten a pantalla acesa.</string>
|
||||
<string name="settings_recording">Gravación</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_always_summary">Retomar sempre unha gravación ao reiniciar o sistema</string>
|
||||
<string name="settings_recording_auto_resume_track_timeout_never_summary">Non retomar nunca unha gravación ao reiniciar o sistema</string>
|
||||
@@ -228,21 +354,32 @@
|
||||
<string name="settings_recording_track_name_date_local_option">Data (local)</string>
|
||||
<string name="settings_recording_track_name_number_option">Número</string>
|
||||
<string name="settings_recording_track_name_title">Nome de ruta predeterm.</string>
|
||||
<!-- Settings Reset -->
|
||||
<string name="settings_reset">Restablecer</string>
|
||||
<string name="settings_reset_confirm_message">Toda a configuración volverá aos valores predeterminados.</string>
|
||||
<string name="settings_reset_confirm_title">Restablecer agora?</string>
|
||||
<string name="settings_reset_done">Restablecéronse todos os valores predeterminados da configuración</string>
|
||||
<string name="settings_error_initial_values_restored">Sentímolo, pero algo fallou. Os axustes foron restablecidos aos valores por omisión.</string>
|
||||
<!-- Settings Sensor -->
|
||||
<string name="settings_sensor">Sensor</string>
|
||||
<string name="settings_sensor_bluetooth">Bluetooth</string>
|
||||
<string name="settings_sensor_bluetooth_sensor">Sensor de Bluetooth</string>
|
||||
<string name="settings_sensor_connecting">Conectado a %1$s</string>
|
||||
<string name="settings_sensor_disconnected">Desconectado de %1$s</string>
|
||||
|
||||
<string name="settings_sensor_wheel_circumference">Tamaño da roda (ETRTO)</string>
|
||||
|
||||
<!-- Settings Stats -->
|
||||
<string name="settings_stats_coordinate">Latitude/lonxitude</string>
|
||||
<string name="settings_stats_rate_title">Indicador preferido</string>
|
||||
<string name="settings_stats_units_imperial">Imperiais (millas, pés)</string>
|
||||
<string name="settings_stats_units_metric">Métricas (km, m)</string>
|
||||
<string name="settings_stats_units_title">Unidades preferidas</string>
|
||||
<!-- Share Track -->
|
||||
<string name="share_track_share_file">Compartir ficheiro de traxecto</string>
|
||||
<string name="share_track_share_file_body">Creo que che pode interesar este traxecto.\n\nPara velo, utiliza Google Earth ou outro programa de mapas.\n\n%1$s</string>
|
||||
<string name="share_track_subject">Gustaríame compartir un traxecto contigo</string>
|
||||
<!-- Stats -->
|
||||
<string name="stats_average_moving_pace">Ritmo de desprazamento medio</string>
|
||||
<string name="stats_average_moving_speed">Velocidade de desprazamento media</string>
|
||||
<string name="stats_average_pace">Ritmo medio</string>
|
||||
@@ -261,25 +398,36 @@
|
||||
<string name="stats_speed">Velocidade</string>
|
||||
<string name="stats_distance">Distancia</string>
|
||||
<string name="stats_total_time">Tempo total</string>
|
||||
<!-- Track -->
|
||||
<string name="track_name_format">Pista %1$d</string>
|
||||
<string name="track_record_notification">Gravando o teu traxecto…</string>
|
||||
<string name="track_recording_notification_accuracy">Precisión da localización: %1$s</string>
|
||||
<string name="track_markers">Marcadores de %1$s</string>
|
||||
<!-- Track Delete -->
|
||||
<string name="track_delete_one_confirm_message">A ruta e os seus marcadores eliminaranse permanentemente do dispositivo.</string>
|
||||
<string name="track_delete_one_confirm_title">Eliminar o traxecto?</string>
|
||||
<string name="track_delete_multiple_confirm_message">As rutas seleccionadas e os seus marcadores eliminaranse permanentemente do dispositivo.</string>
|
||||
<string name="track_delete_progress_message">Eliminando…</string>
|
||||
<!-- Track Detail -->
|
||||
<string name="track_detail_chart_tab">Táboa</string>
|
||||
<string name="track_detail_stats_tab">Estatísticas</string>
|
||||
<string name="track_detail_record_success">Estase a gravar un novo traxecto</string>
|
||||
<string name="track_detail_resume_success">Retomando a ruta</string>
|
||||
<!-- Track Edit -->
|
||||
<string name="track_edit_activity_type">Tipo de actividade (por exemplo, sendeirismo)</string>
|
||||
<string name="track_edit_activity_type_hint">Tipo de actividade</string>
|
||||
<string name="track_edit_new_track_title">Novo traxecto</string>
|
||||
<!-- Track List -->
|
||||
<string name="track_list_empty_message">Empeza a gravar aquí a túa próxima aventura</string>
|
||||
<!-- Track Widget -->
|
||||
<!-- Tracks -->
|
||||
<string name="tracks_few">%1$d rutas</string>
|
||||
<string name="tracks_many">%1$d rutas</string>
|
||||
<string name="tracks_one">1 ruta</string>
|
||||
<string name="tracks_other">%1$d rutas</string>
|
||||
<string name="tracks_two">2 rutas</string>
|
||||
<string name="tracks_zero">0 rutas</string>
|
||||
<!-- Unit -->
|
||||
<string name="unit_feet">m</string>
|
||||
<string name="unit_kilometer">km</string>
|
||||
<string name="unit_kilometer_per_hour">km/h</string>
|
||||
@@ -288,6 +436,7 @@
|
||||
<string name="unit_mile_per_hour">km/h</string>
|
||||
<string name="unit_minute_per_kilometer">min/km</string>
|
||||
<string name="unit_minute_per_mile">min/km</string>
|
||||
<!-- Value -->
|
||||
<string name="value_adapt_accuracy">Adaptar para obter precisión</string>
|
||||
<string name="value_adapt_battery_life">Adaptar á duración restante da batería</string>
|
||||
<string name="value_always">Sempre</string>
|
||||
@@ -314,6 +463,7 @@
|
||||
<string name="value_off">Desactivar</string>
|
||||
<string name="value_smallest">Máis pequeno</string>
|
||||
<string name="value_smallest_recommended">O máis pequeno (recomendado)</string>
|
||||
<!-- Voice -->
|
||||
<string name="voice_hours_few">%1$d horas</string>
|
||||
<string name="voice_hours_many">%1$d horas</string>
|
||||
<string name="voice_hours_one">1 hora</string>
|
||||
@@ -360,6 +510,7 @@
|
||||
<string name="voice_total_distance_miles_two">distancia total 2 quilómetros</string>
|
||||
<string name="voice_total_distance_miles_zero">distancia total 0 quilómetros</string>
|
||||
<string name="voice_total_distance_zero">A distancia total de As miñas rutas é cero.</string>
|
||||
<!-- Waypoint Type -->
|
||||
<string name="waypoint_type_atm">Caixeiro automático</string>
|
||||
<string name="waypoint_type_bank">banco</string>
|
||||
<string name="waypoint_type_bar">bar</string>
|
||||
@@ -411,4 +562,7 @@
|
||||
<string name="waypoint_type_waterfall">fervenza</string>
|
||||
<string name="waypoint_type_water_fountain">fonte de auga</string>
|
||||
<string name="waypoint_type_waypoint">Punto de referencia</string>
|
||||
<!-- Share image -->
|
||||
<string name="share_image_subject">Quixera compartir unha imaxe contigo</string>
|
||||
<string name="share_image_body">Creo que che podería gustar esta imaxe.</string>
|
||||
</resources>
|
||||
|
||||
@@ -36,15 +36,14 @@ limitations under the License.
|
||||
Gebruik het kleine kaarticoontje.
|
||||
a)
|
||||
(live updates) Installeer <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
Het biedt online of offline kaarten via <a href="https://www.openstreetmap.org">OpenStreetmap</a>.\n
|
||||
Het biedt online of offline kaarten via <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
Eigenlijk is OSMDashboard een aparte app die alleen (tijdelijk) toegang heeft tot de gegevens van track(s) die getoond gaan worden.
|
||||
|
||||
\n
|
||||
b)
|
||||
Via een "normale" kaarttoepassing (bijv. <a href="http://osmand.net/">OsmAnd</a> en <a href="https://maps.me/">MAPS.ME</a>).
|
||||
Via een normale kaarttoepassing (bijv. <a href="http://osmand.net/">OsmAnd</a> en <a href="https://maps.me/">MAPS.ME</a>).
|
||||
Deze app moet het KMZ-bestandsformaat ondersteunen (alleen locaties en tijdstempels).
|
||||
In feite moet een app <i>ACTION_VIEW</i> ondersteunen met MIME <i>application/vnd.google-earth.kmz</i>.
|
||||
</string>
|
||||
In feite moet een app <i>ACTION_VIEW</i> ondersteunen met MIME <i>application/vnd.google-earth.kmz</i>.</string>
|
||||
|
||||
<string name="help_storage_pictures_title">Hoe slaat OpenTracks fotos op die als markers zijn genomen?</string>
|
||||
<string name="help_storage_pictures_content">Deze worden opgeslagen in de interne opslag van de app (d.w.z. alleen toegankelijk binnen OpenTracks).</string>
|
||||
@@ -322,7 +321,7 @@ g) doe wat je denkt dat OpenTracks helpt.</string>
|
||||
<string name="sensor_state_power_value">%1$d W</string>
|
||||
<string name="sensor_not_known">Sensor %1$s is onbekend. Controleer de instellingen.</string>
|
||||
<string name="sensor_could_not_scan">Kon niet scannen naar Bluetooth-apparaten (fout %1$i).</string>
|
||||
<string name="bluetooth_disabled">Schakel Bluetooth in.</string><!-- Settings -->
|
||||
<string name="bluetooth_disabled">Schakel Bluetooth in.</string>
|
||||
<string name="settings_not_while_recording">Niet beschikbaar tijdens het opnemen van een route</string>
|
||||
<string name="settings_show">Weergeven</string>
|
||||
<!-- Settings Advanced -->
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#FFFFFF</color>
|
||||
</resources>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_debug_background">#8F0000</color>
|
||||
</resources>
|
||||
@@ -37,7 +37,7 @@ limitations under the License.
|
||||
Use the small map icon.\n
|
||||
a)
|
||||
(live updates) Install <a href="https://github.com/OpenTracksApp/OSMDashboard">OSMDashboard</a>.
|
||||
It provides online or offline maps via <a href="https://www.openstreetmap.org">OpenStreetmap</a>.\n
|
||||
It provides online or offline maps via <a href="https://www.openstreetmap.org">OpenStreetMap</a>.\n
|
||||
Actually, OSMDashboard is a separate app that only can access (temporarily) access the data of track(s) that are going to be shown.
|
||||
|
||||
\n
|
||||
@@ -95,6 +95,11 @@ limitations under the License.
|
||||
g) do whatever you think helps OpenTracks.
|
||||
</string>
|
||||
|
||||
<string name="open_track_using_dashboard">Open using OpenTracks-Dashboard</string>
|
||||
<string name="open_track_as_KMZ">Open as KMZ</string>
|
||||
<string name="open_track_as_GPX">Open as GPX</string>
|
||||
<string name="open_track_as_trackfileformat">Open as %1$s</string>
|
||||
|
||||
<!-- Activity Type -->
|
||||
<string name="activity_type_airplane">airplane</string>
|
||||
<string name="activity_type_atv">ATV</string>
|
||||
@@ -236,8 +241,6 @@ limitations under the License.
|
||||
<string name="generic_success_title">Success</string>
|
||||
<string name="generic_tracks">Tracks</string>
|
||||
<string name="generic_yes">Yes</string>
|
||||
<string name="generic_today">Today</string>
|
||||
<string name="generic_yesterday">Yesterday</string>
|
||||
<!-- Gps -->
|
||||
<string name="gps_location_access">‘Location access’</string>
|
||||
<string name="gps_disabled">GPS not enabled. Tap here to go to %1$s. Press the back button to return.</string>
|
||||
|
||||
@@ -195,6 +195,13 @@ limitations under the License.
|
||||
<item name="android:singleLine">true</item>
|
||||
<item name="android:textColor">@android:color/white</item>
|
||||
</style>
|
||||
<!-- stats small label -->
|
||||
<style name="StatsTinyLabel" parent="@style/TextSmall">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:singleLine">false</item>
|
||||
<item name="android:textColor">@android:color/secondary_text_light_nodisable</item>
|
||||
</style>
|
||||
<!-- stats small value container -->
|
||||
<style name="StatsSmallValueContainer" parent="@style/StatsLargeValueContainer">
|
||||
<item name="android:layout_marginTop">-2dp</item>
|
||||
|
||||