Compare commits
363 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c7db7c0926 | |||
| e107766a61 | |||
| 05a0b6c615 | |||
| 887a77f4a3 | |||
| 97bde67b1d | |||
| 33c3668175 | |||
| 0158fc3a7a | |||
| 72bb2ddb08 | |||
| 01c1a37fa2 | |||
| 35aa51d6a9 | |||
| fe9b27ecf2 | |||
| e03f120a00 | |||
| 59344f540d | |||
| e829f1fc1b | |||
| d9904eb5f1 | |||
| 10cd26af5e | |||
| c1f649fc83 | |||
| a4865f860d | |||
| 14fce8edfe | |||
| 6826e3567d | |||
| 250e8625a7 | |||
| 58530d6f72 | |||
| 823fb3fca7 | |||
| 29302c0891 | |||
| 03570ebd43 | |||
| 2a4a0d38e3 | |||
| 9be9127ad1 | |||
| 66dd1c01f0 | |||
| d8dce7938d | |||
| 0701f5885e | |||
| ea3f660999 | |||
| 95a21ffe8a | |||
| 89d2cf8340 | |||
| 0eb676d3cd | |||
| ac1a762fa8 | |||
| 59a05262a1 | |||
| 5f91d187c8 | |||
| 8d8bf311ed | |||
| 69545c8a56 | |||
| a1868c0205 | |||
| 12bc4f0da8 | |||
| 510b887042 | |||
| ff7171daa2 | |||
| 5b0dbd5d30 | |||
| 9c7fb25a94 | |||
| 2e24eab5ad | |||
| 8135ad4424 | |||
| 6ffa40e40d | |||
| bc120176ca | |||
| d50d4ae1c9 | |||
| d34aa61e95 | |||
| 04578a4ed1 | |||
| 3e5282a06d | |||
| f86cadb802 | |||
| c4fe4d87db | |||
| 7e5deeaab3 | |||
| 36c425d699 | |||
| a2c69c6144 | |||
| 58e3c0604d | |||
| 7408849eb5 | |||
| b42142f692 | |||
| ddafdcf392 | |||
| 95cbaf1993 | |||
| 43aa3c857d | |||
| 964e0d6f41 | |||
| 5a1c52d3b5 | |||
| 02c374b61e | |||
| f2094e049a | |||
| 8ff2b3b090 | |||
| eeaa363132 | |||
| 43e51848fc | |||
| 8b17117220 | |||
| a4e06a4ce0 | |||
| 4d55f5ebdb | |||
| 268f3c77c2 | |||
| ce73718620 | |||
| d307c58f87 | |||
| e7ec021da8 | |||
| ca94fc7a96 | |||
| 9d650c4885 | |||
| c6d9be499c | |||
| 0e78e8b3f9 | |||
| 2a99278b52 | |||
| 4a47c096f7 | |||
| bd961be055 | |||
| 525fea80b8 | |||
| 6f92ae6a59 | |||
| 91cca16f40 | |||
| a0697a048d | |||
| d22c6aae79 | |||
| 83997980ba | |||
| 4d9bdd1c12 | |||
| 163a73722e | |||
| 65d17decb8 | |||
| 1aa300f97e | |||
| 8fbb30bded | |||
| 6b0f1a0c10 | |||
| 1cee590eca | |||
| 9ff370ee27 | |||
| cd0057ea5a | |||
| 2c0a294b6a | |||
| 3e09bd5c60 | |||
| 0a99d7cebb | |||
| 3138e3edc7 | |||
| 99ab34ad0b | |||
| 9b7923f8f5 | |||
| cfcbe7f107 | |||
| 5fb27ab186 | |||
| 36b1a3c020 | |||
| baccb5d12e | |||
| adc4621711 | |||
| a8d78664e9 | |||
| 9fab4eb088 | |||
| 0d0f1315ff | |||
| 555598c155 | |||
| f49fa23f69 | |||
| b732064f88 | |||
| 1f99a381eb | |||
| 81b610cc4c | |||
| b0a0bfc888 | |||
| 6221ccb53b | |||
| cbe1da2d68 | |||
| 24297e373c | |||
| 99d14a559c | |||
| 08339a1f65 | |||
| 4e3ad38087 | |||
| 63c97fadc6 | |||
| 45633ad7e8 | |||
| 8508decd5c | |||
| 315f47bf30 | |||
| 12f8d79d84 | |||
| 710690e2d2 | |||
| 03bfbe81d0 | |||
| c990fb6fe7 | |||
| 9b31cd63a4 | |||
| dee3ccdf77 | |||
| de23a32c96 | |||
| 2beb840a5c | |||
| f748d76549 | |||
| 9d9a326c2b | |||
| 9184827195 | |||
| cb533c954b | |||
| ead876036d | |||
| cfa25eccb1 | |||
| b0d6233de6 | |||
| b07b8a1aaa | |||
| a68cdaf2ba | |||
| 16641b9193 | |||
| 0469a90992 | |||
| 6dc3e5ab7a | |||
| 82012fa623 | |||
| 7ddd254bb1 | |||
| 464858cfdf | |||
| 30db23255d | |||
| 868c1ef891 | |||
| b961356b7b | |||
| 2e32d6c574 | |||
| a31e5aab79 | |||
| ae4f9565bd | |||
| f33ba10b96 | |||
| 904c519091 | |||
| a0db837910 | |||
| 51cb5db8b4 | |||
| c328728e0c | |||
| 3384ef67a6 | |||
| e89c549706 | |||
| 3c67ac73da | |||
| 656349e6c5 | |||
| df2af0185c | |||
| 913d30f2de | |||
| e96172b698 | |||
| 0c241f683d | |||
| a19097de2b | |||
| f6feeb9d1e | |||
| f205e6f9cc | |||
| 4e543e6068 | |||
| 176062f11c | |||
| 4d88191171 | |||
| 025ea1d094 | |||
| a4283d545a | |||
| 52fa2aace9 | |||
| fa711cf142 | |||
| 70bc7e53fe | |||
| 56f22aa073 | |||
| 878a87278d | |||
| c4a539d2ba | |||
| 4225e81080 | |||
| 8fd4887f10 | |||
| 0e397797b4 | |||
| e6c8458ce7 | |||
| 50ea9919af | |||
| 67f62df894 | |||
| 0da0280156 | |||
| fa713eac4a | |||
| 2c7d56ab34 | |||
| e340268dd0 | |||
| affec6720b | |||
| 5047826a74 | |||
| 33d9230442 | |||
| 607b174c5f | |||
| 6b4ea71404 | |||
| 014322c240 | |||
| b789f84151 | |||
| 19d5fe1ba6 | |||
| 93b95954c4 | |||
| fb7a2aaa32 | |||
| 3105eacd4d | |||
| 215893214f | |||
| 30e01d6700 | |||
| 94cfc5d7d6 | |||
| 471b32cce1 | |||
| 036b34e91d | |||
| 77f7f8c1ed | |||
| e6fc991d2a | |||
| 060881777d | |||
| 6e567fa725 | |||
| 7e4c01937f | |||
| 06a00e6482 | |||
| 242df42f55 | |||
| 8d78c16c8a | |||
| db2b05eb7f | |||
| 282b1090ba | |||
| 4f6c9fa866 | |||
| 9375842c71 | |||
| ea3fca0f1b | |||
| 5971d67a66 | |||
| 357b68dd4f | |||
| 384f3f5698 | |||
| 4577ff9628 | |||
| e6cd9f524d | |||
| 3dad56621f | |||
| 6c9a225b64 | |||
| 3bbb9bd95d | |||
| a4f855ccd8 | |||
| 4d80af4e06 | |||
| 7abce12499 | |||
| 7b1302c011 | |||
| 66d23b7eac | |||
| dc0255509b | |||
| 6661f91eb5 | |||
| d5ec7c3001 | |||
| a0af1a811a | |||
| 4933b9ce54 | |||
| e81c4eb155 | |||
| b284c8bc56 | |||
| 525f1b7781 | |||
| 2f99d8ca62 | |||
| 7781014cf7 | |||
| 2432b36f5d | |||
| 288aa015fa | |||
| 1cb8b922c3 | |||
| 41cec64bf6 | |||
| d82bda9d00 | |||
| d02c947b84 | |||
| 7167a5a71e | |||
| f13c2455ea | |||
| b200b66612 | |||
| b811df8cda | |||
| 1e239b78c3 | |||
| 3a8daadd92 | |||
| f605d6fca5 | |||
| cd85e43624 | |||
| 2b94d09539 | |||
| ab82da5c75 | |||
| 8a467aa537 | |||
| 742e6b1e3e | |||
| e35e8bcdce | |||
| 5f953aa47f | |||
| e550e9aa1d | |||
| 26e2defd9e | |||
| 3b3641c69e | |||
| 56ccd518d6 | |||
| 59846280a8 | |||
| aa95e3abcd | |||
| ad6340c1a7 | |||
| 62a54aab58 | |||
| 23f1e81cf0 | |||
| d014f422d2 | |||
| 68a9f1bc46 | |||
| 798637d465 | |||
| 60ea4c5f77 | |||
| 0e119950c2 | |||
| 4be4467fc6 | |||
| 06636b2a28 | |||
| 71a36d1b25 | |||
| 9ba93ff8d2 | |||
| 4059308dd7 | |||
| 9befe8ae5f | |||
| 20e01f3b2c | |||
| 98b894ed8e | |||
| ac8b7264b3 | |||
| bf7b24ecc0 | |||
| 9f43dd2db5 | |||
| 28d868985e | |||
| cf1be26da2 | |||
| 1de9b73aa0 | |||
| 3532a6360b | |||
| beddc8e1ea | |||
| df81fba565 | |||
| 25da0d26ef | |||
| e0c34d20a8 | |||
| cc6db5b5cc | |||
| c38df03add | |||
| 63402358d1 | |||
| 3ae1de735e | |||
| a701eb0e4f | |||
| 09caf017a9 | |||
| 32b8b2093d | |||
| c84a4f1aa8 | |||
| d90c0b5431 | |||
| 94f6785f0d | |||
| f01c382807 | |||
| 6d42803dd8 | |||
| 61e908ccb5 | |||
| 7bae8c34a7 | |||
| 3960341640 | |||
| 06e453dd05 | |||
| 361b1cbad4 | |||
| 56a866fca7 | |||
| 49e0d68374 | |||
| c9ffd0b4bb | |||
| 1d2f6f46a4 | |||
| 4af6d856b9 | |||
| 6fd4294391 | |||
| 88b2b85f2a | |||
| 2c1dff6ac8 | |||
| 481b42f563 | |||
| 597c321009 | |||
| 76651f75d8 | |||
| 3d8bae55a1 | |||
| 4b6869e367 | |||
| 477ba7c081 | |||
| 5b6d9725b8 | |||
| 25c3cea115 | |||
| d90601276f | |||
| 4f692bc698 | |||
| d8dd02eef0 | |||
| 8ad65ae233 | |||
| eabbb4569b | |||
| 49888b771d | |||
| 2b1c1cd052 | |||
| 61884e67ec | |||
| 9a2f028843 | |||
| 2b56acf164 | |||
| 98b67dcc28 | |||
| 500dfa3107 | |||
| c4efcfd2db | |||
| 81ee6bbcf6 | |||
| e4e2e76e06 | |||
| f847862e84 | |||
| 427dbeafde | |||
| 99ac85b40e | |||
| 020388baed | |||
| 4ade79de4f | |||
| 870dda9b8b | |||
| 27dd5298f7 | |||
| 6d5d406ce9 | |||
| ffb5e7e6f7 | |||
| 0de101c89f | |||
| bd3a0766e1 | |||
| f536cc8f8a | |||
| 826c0495fc | |||
| 9eac541ce5 |
@@ -2,5 +2,7 @@ syntax:glob
|
||||
|
||||
*/bin
|
||||
*/gen/**
|
||||
*/proguard/**
|
||||
.metadata
|
||||
MyTracksTest/annotations.log
|
||||
MyTracks/src/com/google/android/apps/mytracks/io/mymaps
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
<classpathentry kind="lib" path="libs/googleloginclient-helper.jar"/>
|
||||
<classpathentry kind="lib" path="libs/google-common.jar"/>
|
||||
<classpathentry kind="lib" path="libs/accounts.jar"/>
|
||||
<classpathentry kind="lib" path="libs/google-api-client-1.2.2-alpha.jar"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry exported="true" kind="lib" path="/MyTracksLib/libs/protobuf-java-2.3.0-lite.jar"/>
|
||||
<classpathentry kind="src" path="MyTracksLib_src"/>
|
||||
<classpathentry kind="lib" path="libs/libmymaps.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
@@ -30,4 +30,11 @@
|
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>MyTracksLib_src</name>
|
||||
<type>2</type>
|
||||
<locationURI>_android_MyTracksLib_e2802071/src</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
</projectDescription>
|
||||
|
||||
@@ -1,9 +1,24 @@
|
||||
<?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.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.google.android.maps.mytracks"
|
||||
android:installLocation="auto"
|
||||
android:versionCode="21"
|
||||
android:versionName="1.0.20">
|
||||
android:versionCode="25"
|
||||
android:versionName="1.1.2">
|
||||
<application android:icon="@drawable/arrow_icon"
|
||||
android:label="@string/app_name"
|
||||
android:backupAgent="com.google.android.apps.mytracks.io.backup.MyTracksBackupAgent">
|
||||
@@ -13,7 +28,10 @@
|
||||
android:value="AEdPqrEAAAAIi-_QiwoRSc9_bAC9cmuNXTQyU8ajJmGtKdhskQ" />
|
||||
|
||||
<provider android:name="com.google.android.apps.mytracks.content.MyTracksProvider"
|
||||
android:authorities="com.google.android.maps.mytracks" />
|
||||
android:authorities="com.google.android.maps.mytracks"
|
||||
android:exported="true"
|
||||
android:readPermission="com.google.android.apps.mytracks.READ_TRACK_DATA"
|
||||
android:writePermission="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.MyTracks"
|
||||
android:label="My Tracks"
|
||||
@@ -35,11 +53,13 @@
|
||||
</activity>
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.MyTracksMap"
|
||||
android:label="MyTracks" />
|
||||
android:label="MyTracks"
|
||||
android:exported="false" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mymaps.MyMapsList"
|
||||
<activity android:name="com.google.android.apps.mytracks.MyMapsList"
|
||||
android:label="@string/map_list_title"
|
||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale" />
|
||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale"
|
||||
android:exported="false" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.MyTracksList"
|
||||
android:label="Recorded Tracks" />
|
||||
@@ -60,19 +80,26 @@
|
||||
android:label="@string/aggregated_stats" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.StatsActivity"
|
||||
android:label="@string/statistics" />
|
||||
android:label="@string/statistics"
|
||||
android:exported="false" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.SensorStateActivity"
|
||||
android:label="@string/sensor_state" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.ChartActivity"
|
||||
android:label="@string/elevation_label"/>
|
||||
android:label="@string/elevation_label"
|
||||
android:exported="false" />
|
||||
|
||||
<activity android:name="com.google.android.apps.mytracks.WelcomeActivity"
|
||||
android:label="@string/welcome"/>
|
||||
android:label="@string/welcome"
|
||||
android:exported="false" />
|
||||
|
||||
<service android:name="com.google.android.apps.mytracks.services.TrackRecordingService"
|
||||
android:label="Track Recording Service"
|
||||
android:icon="@drawable/arrow_320"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
android:exported="true"
|
||||
android:permission="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
|
||||
|
||||
<receiver android:name="com.google.android.apps.mytracks.MyTracksReceiver">
|
||||
<intent-filter>
|
||||
@@ -89,12 +116,18 @@
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
|
||||
<uses-permission android:name="com.dsi.ant.permission.ANT" />
|
||||
<uses-permission android:name="com.dsi.ant.permission.ANT_ADMIN" />
|
||||
|
||||
<!-- Permissions for uploading tracks -->
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
|
||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.fusiontables" />
|
||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.local" />
|
||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.wise" />
|
||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.writely" />
|
||||
@@ -102,12 +135,37 @@
|
||||
|
||||
<!-- Permissions for misc services -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
|
||||
|
||||
<!-- Exported permissions (for other apps to use our features) -->
|
||||
<!-- Permission to get track start/end broadcasts -->
|
||||
<permission android:name="com.google.android.apps.mytracks.TRACK_NOTIFICATIONS"
|
||||
android:permissionGroup="android.permission-group.LOCATION"
|
||||
android:label="@string/notification_permission_label"
|
||||
android:description="@string/notification_permission_description"
|
||||
android:protectionLevel="normal" />
|
||||
<!-- Permission to read raw track data (points, etc.) -->
|
||||
<permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA"
|
||||
android:permissionGroup="android.permission-group.LOCATION"
|
||||
android:label="@string/read_tracks_permission_label"
|
||||
android:description="@string/read_tracks_permission_description"
|
||||
android:protectionLevel="dangerous" />
|
||||
<!-- Permission to write track data, either raw or by making service calls -->
|
||||
<permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA"
|
||||
android:permissionGroup="android.permission-group.LOCATION"
|
||||
android:label="@string/write_tracks_permission_label"
|
||||
android:description="@string/write_tracks_permission_description"
|
||||
android:protectionLevel="dangerous" />
|
||||
|
||||
<!-- We read and write raw track data, obviously. -->
|
||||
<uses-permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA" />
|
||||
<uses-permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
|
||||
<uses-permission android:name="com.google.android.apps.mytracks.TRACK_NOTIFICATIONS" />
|
||||
|
||||
<!-- Features required -->
|
||||
<uses-feature android:name="android.hardware.location" android:required="true"/>
|
||||
<uses-feature android:name="android.hardware.location.gps" android:required="true"/>
|
||||
<uses-feature android:name="android.hardware.touchscreen" android:required="true"/>
|
||||
|
||||
|
||||
<!-- Features optional -->
|
||||
<uses-feature android:name="android.hardware.bluetooth" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.location.network" android:required="false"/>
|
||||
@@ -118,6 +176,7 @@
|
||||
|
||||
<uses-sdk android:minSdkVersion="3"/>
|
||||
<supports-screens
|
||||
android:xlargeScreens="true"
|
||||
android:largeScreens="true"
|
||||
android:normalScreens="true"
|
||||
android:smallScreens="true"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<launchConfiguration type="com.android.ide.eclipse.adt.debug.LaunchConfigType">
|
||||
<intAttribute key="com.android.ide.eclipse.adt.action" value="0"/>
|
||||
<stringAttribute key="com.android.ide.eclipse.adt.commandline" value=""/>
|
||||
@@ -16,8 +16,8 @@
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
|
||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="true"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="MyTracks"/>
|
||||
|
||||
@@ -10,4 +10,10 @@
|
||||
# Indicates whether an apk should be generated for each density.
|
||||
split.density=false
|
||||
# Project target.
|
||||
target=Google Inc.:Google APIs:8
|
||||
target=Google Inc.:Google APIs:9
|
||||
android.library.reference.1=../MyTracksLib/
|
||||
|
||||
# ProGuard is turned off while we investigate the removal of code that
|
||||
# isn't actually dead from Fusion Tables. See issue 303 for an example of
|
||||
# the result of that removal.
|
||||
#proguard.config=proguard.cfg
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
The libraries contained here in binary format are licensed according to their
|
||||
own licenses, which allow their usage for the My Tracks application. Any other
|
||||
applications that wish to use these files should consult the appropriate
|
||||
licenses or the JAR's authors.
|
||||
|
||||
References are provided to the libraries:
|
||||
|
||||
accounts.jar (Android accounts library):
|
||||
http://code.google.com/p/libs-for-android/wiki/AccountsLibrary
|
||||
|
||||
google-api-client-*.jar (GData client):
|
||||
http://code.google.com/p/google-api-java-client/
|
||||
|
||||
google-common.jar,
|
||||
googleloginclient-helper.jar,
|
||||
libmymaps.jar (Google My Maps upload library):
|
||||
Licensed exclusively for use in My Tracks and derived Android applications.
|
||||
@@ -0,0 +1,53 @@
|
||||
-target 6
|
||||
-optimizationpasses 5
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-dontpreverify
|
||||
-verbose
|
||||
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||||
|
||||
# Add the libraries, but ignore warnings about them
|
||||
-libraryjars libs
|
||||
-libraryjars ../MyTracksLib/libs
|
||||
-dontwarn com.google.android.googleapps.**
|
||||
-dontwarn com.android.common.**
|
||||
-dontwarn com.google.android.gsf.**
|
||||
-dontwarn org.codehaus.**
|
||||
-dontwarn com.google.appengine.**
|
||||
|
||||
# Make our stack traces useful
|
||||
# Line numbers will be correct, file names will be replaced by "MT" since the
|
||||
# class name is enough to get the file name.
|
||||
-renamesourcefileattribute MT
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# Keep everything android references from XMLs
|
||||
-keep public class * extends android.app.Activity
|
||||
-keep public class * extends android.app.Application
|
||||
-keep public class * extends android.app.Service
|
||||
-keep public class * extends android.app.backup.BackupAgent
|
||||
-keep public class * extends android.content.BroadcastReceiver
|
||||
-keep public class * extends android.content.ContentProvider
|
||||
-keep public class * extends android.preference.Preference
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet);
|
||||
}
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
}
|
||||
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keep class * implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 639 B |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 343 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 358 B After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 384 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
@@ -41,8 +41,7 @@ limitations under the License.
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<View
|
||||
android:layout_height="2dip" />
|
||||
<View android:layout_height="2dip" />
|
||||
|
||||
<TableRow>
|
||||
<TextView
|
||||
@@ -58,6 +57,11 @@ limitations under the License.
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:text="@string/about_bart"
|
||||
android:textSize="20sp" />
|
||||
<TextView
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -81,8 +85,7 @@ limitations under the License.
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<View
|
||||
android:layout_height="2dip" />
|
||||
<View android:layout_height="2dip" />
|
||||
|
||||
<TableRow>
|
||||
<TextView
|
||||
@@ -101,8 +104,7 @@ limitations under the License.
|
||||
android:textSize="20sp" />
|
||||
</TableRow>
|
||||
|
||||
<View
|
||||
android:layout_height="2dip" />
|
||||
<View android:layout_height="2dip" />
|
||||
|
||||
<TableRow>
|
||||
<TextView
|
||||
@@ -121,7 +123,25 @@ limitations under the License.
|
||||
android:textSize="18sp" />
|
||||
</TableRow>
|
||||
|
||||
<View
|
||||
android:layout_height="4dip" />
|
||||
<View android:layout_height="2dip" />
|
||||
|
||||
<TableRow>
|
||||
<TextView
|
||||
android:paddingLeft="10dip"
|
||||
android:paddingRight="10dip"
|
||||
android:layout_column="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:text="@string/about_privacy"
|
||||
android:textSize="20sp" />
|
||||
<TextView
|
||||
android:autoLink="web"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:text="@string/about_privacy_weburl"
|
||||
android:textSize="18sp" />
|
||||
</TableRow>
|
||||
|
||||
<View android:layout_height="4dip" />
|
||||
|
||||
</TableLayout>
|
||||
|
||||
@@ -103,6 +103,21 @@ limitations under the License.
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/speed"/>
|
||||
<CheckBox android:id="@+id/chart_settings_power"
|
||||
android:checked="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/power"/>
|
||||
<CheckBox android:id="@+id/chart_settings_cadence"
|
||||
android:checked="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/cadence"/>
|
||||
<CheckBox android:id="@+id/chart_settings_heart_rate"
|
||||
android:checked="true"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/heart_rate"/>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
|
||||
@@ -30,13 +30,15 @@ limitations under the License.
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="10dip"
|
||||
android:layout_weight="0">
|
||||
<ZoomControls android:id="@+id/elevation_zoom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerHorizontal="true"/>
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_alignParentRight="true"/>
|
||||
</RelativeLayout>
|
||||
<LinearLayout android:id="@+id/elevation_busypane"
|
||||
android:orientation="vertical"
|
||||
@@ -50,6 +50,12 @@ limitations under the License.
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"/>
|
||||
<Button android:id="@+id/tracklist_btn_import_all"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dip"
|
||||
android:layout_gravity="left|top"
|
||||
android:text="@string/tracklist_btn_import_all"
|
||||
android:textSize="14dip"/>
|
||||
<Button android:id="@+id/tracklist_btn_export_all"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dip"
|
||||
|
||||
@@ -41,6 +41,8 @@ limitations under the License.
|
||||
android:stretchColumns="1"
|
||||
android:layout_marginTop="5dip"
|
||||
android:layout_marginLeft="5dip">
|
||||
|
||||
<!-- My Maps -->
|
||||
<TableRow>
|
||||
<ImageView android:src="@drawable/mymaps_icon"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -70,6 +72,27 @@ limitations under the License.
|
||||
</RadioGroup>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<!-- Fusion Tables -->
|
||||
<TableRow>
|
||||
<ImageView android:src="@drawable/googledocs_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginLeft="10dip">
|
||||
<CheckBox android:id="@+id/sendtogoogle_google_fusiontables"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sendtogoogle_google_fusiontables"
|
||||
android:textSize="20dip"
|
||||
android:checked="true"/>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<!-- Google Docs -->
|
||||
<TableRow>
|
||||
<ImageView android:src="@drawable/googledocs_icon"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
<?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.
|
||||
-->
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent">
|
||||
|
||||
<ScrollView
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="fill_parent">
|
||||
|
||||
<TableLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:stretchColumns="1,4"
|
||||
android:layout_width="fill_parent">
|
||||
|
||||
<!-- Layout the sensor state on one line. -->
|
||||
<TableRow>
|
||||
<TextView
|
||||
android:layout_span="5"
|
||||
android:text="@string/sensor_state" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:id="@+id/sensor_state_register"
|
||||
android:layout_column="1"
|
||||
android:layout_span="5"
|
||||
style="@style/StatsRegister" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Layout the sensor data age on one line. -->
|
||||
<TableRow>
|
||||
<TextView
|
||||
android:layout_span="5"
|
||||
android:text="@string/sensor_data_time" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:id="@+id/sensor_data_time_register"
|
||||
android:layout_column="1"
|
||||
android:layout_span="5"
|
||||
style="@style/StatsRegister" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Power meter -->
|
||||
<TableRow
|
||||
android:padding="1dip">
|
||||
<TextView
|
||||
android:layout_column="1"
|
||||
android:layout_span="3"
|
||||
android:text="@string/power" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
style="@style/StatsRegister.Big"
|
||||
android:id="@+id/power_state_register"
|
||||
android:layout_column="1"
|
||||
android:layout_span="4" />
|
||||
<TextView
|
||||
style="@style/StatsUnitSolo" />
|
||||
android:layout_column="5"
|
||||
android:text="@string/watts" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Cadence -->
|
||||
<TableRow
|
||||
android:padding="1dip">
|
||||
<TextView
|
||||
android:layout_column="1"
|
||||
android:layout_span="3"
|
||||
android:text="@string/cadence" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
style="@style/StatsRegister.Big"
|
||||
android:id="@+id/cadence_state_register"
|
||||
android:layout_column="4" />
|
||||
<TextView
|
||||
style="@style/StatsUnitSolo" />
|
||||
android:layout_column="2"
|
||||
android:text="@string/revolutions_per_minute" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Heart Rate -->
|
||||
<TableRow
|
||||
android:padding="1dip">
|
||||
<TextView
|
||||
android:layout_column="1"
|
||||
android:layout_span="3"
|
||||
android:text="@string/heart_rate" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
style="@style/StatsRegister.Big"
|
||||
android:id="@+id/heart_rate_register"
|
||||
android:layout_column="1"
|
||||
android:layout_span="4" />
|
||||
<TextView
|
||||
style="@style/StatsUnitSolo"
|
||||
android:layout_column="5"
|
||||
android:text="@string/bpm" />
|
||||
</TableRow>
|
||||
|
||||
</TableLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</RelativeLayout>
|
||||
@@ -42,15 +42,10 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
style="@style/StatsRegister.Big"
|
||||
android:id="@+id/speed_register"
|
||||
android:layout_column="1"
|
||||
android:layout_marginBottom="-13dip"
|
||||
android:layout_marginTop="-13dip"
|
||||
android:layout_span="4"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="50sp" />
|
||||
android:layout_span="4"/>
|
||||
<LinearLayout
|
||||
android:gravity="bottom"
|
||||
android:layout_column="5"
|
||||
@@ -62,24 +57,12 @@ limitations under the License.
|
||||
android:layout_width="fill_parent" />
|
||||
<TextView
|
||||
android:id="@+id/speed_unit_label_top"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="2dip"
|
||||
android:layout_marginTop="2dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_height="3dip"
|
||||
android:layout_width="fill_parent" />
|
||||
style="@style/StatsDivider" />
|
||||
<TextView
|
||||
android:id="@+id/speed_unit_label_bottom"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="2dip"
|
||||
android:layout_marginTop="2dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
@@ -100,43 +83,25 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
style="@style/StatsRegister"
|
||||
android:id="@+id/total_distance_register"
|
||||
android:layout_column="1"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
android:layout_column="1" />
|
||||
<TextView
|
||||
android:gravity="left"
|
||||
android:id="@+id/total_distance_unit_label"
|
||||
android:layout_column="2"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/mile"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnitSolo" />
|
||||
<!-- TODO 4/08/2009
|
||||
The following is a bad hack to get a spacer the same size as the
|
||||
text. Ideally this should just be a View, however I don't know how to
|
||||
set the view height properly. fill_parent on this element causes as
|
||||
NullPointerException. This same filler is repeated on each line.-->
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"/>
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/max_speed_register"
|
||||
android:layout_column="4"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister"
|
||||
android:layout_column="4" />
|
||||
<LinearLayout
|
||||
android:gravity="bottom"
|
||||
android:layout_column="5"
|
||||
@@ -145,24 +110,12 @@ limitations under the License.
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/max_speed_unit_label_top"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-1dip"
|
||||
android:layout_marginTop="-1dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_height="3dip"
|
||||
android:layout_width="fill_parent" />
|
||||
style="@style/StatsDivider" />
|
||||
<TextView
|
||||
android:id="@+id/max_speed_unit_label_bottom"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-1dip"
|
||||
android:layout_marginTop="-1dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
@@ -182,33 +135,19 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/total_time_register"
|
||||
android:layout_column="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_span="2"
|
||||
android:layout_width="fill_parent"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"/>
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/average_speed_register"
|
||||
android:layout_column="4"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<LinearLayout
|
||||
android:gravity="bottom"
|
||||
android:layout_column="5"
|
||||
@@ -217,24 +156,12 @@ limitations under the License.
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/average_speed_unit_label_top"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-1dip"
|
||||
android:layout_marginTop="-1dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_height="3dip"
|
||||
android:layout_width="fill_parent" />
|
||||
style="@style/StatsDivider" />
|
||||
<TextView
|
||||
android:id="@+id/average_speed_unit_label_bottom"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-1dip"
|
||||
android:layout_marginTop="-1dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
@@ -254,33 +181,18 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/moving_time_register"
|
||||
android:layout_column="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_span="2"
|
||||
android:layout_width="fill_parent"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"/>
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/average_moving_speed_register"
|
||||
android:layout_column="4"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<LinearLayout
|
||||
android:gravity="bottom"
|
||||
android:layout_column="5"
|
||||
@@ -289,24 +201,14 @@ limitations under the License.
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/average_moving_speed_unit_label_top"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-1dip"
|
||||
android:layout_marginTop="-1dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
style="@style/StatsDivider" />
|
||||
android:layout_height="3dip"
|
||||
android:layout_width="fill_parent" />
|
||||
<TextView
|
||||
android:id="@+id/average_moving_speed_unit_label_bottom"
|
||||
android:gravity="bottom"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-1dip"
|
||||
android:layout_marginTop="-1dip"
|
||||
android:layout_width="wrap_content"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnit" />
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
@@ -326,46 +228,24 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/elevation_register"
|
||||
android:layout_column="1"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:gravity="left"
|
||||
android:id="@+id/elevation_unit_label"
|
||||
android:layout_column="2"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/feet"
|
||||
android:textColor="@color/stat_label_text"/>
|
||||
style="@style/StatsUnitSolo" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"/>
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/elevation_gain_register"
|
||||
android:layout_column="4"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/elevation_gain_unit_label"
|
||||
android:layout_column="5"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/feet"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnitSolo" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Min and max elevation -->
|
||||
@@ -384,46 +264,24 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/min_elevation_register"
|
||||
android:layout_column="1"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:gravity="left"
|
||||
android:id="@+id/min_elevation_unit_label"
|
||||
android:layout_column="2"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/feet"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnitSolo" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"/>
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/max_elevation_register"
|
||||
android:layout_column="4"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/max_elevation_unit_label"
|
||||
android:layout_column="5"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:text="@string/feet"
|
||||
android:textColor="@color/stat_label_text" />
|
||||
style="@style/StatsUnitSolo" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Min and max grade -->
|
||||
@@ -442,36 +300,18 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/min_grade_register"
|
||||
android:layout_column="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_span="2"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"/>
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/max_grade_register"
|
||||
android:layout_column="4"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_span="2"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="40sp" />
|
||||
style="@style/StatsRegister" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Latitude and Longitude -->
|
||||
@@ -488,36 +328,19 @@ limitations under the License.
|
||||
<TableRow
|
||||
android:background="@color/stat_label_background">
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/latitude_register"
|
||||
android:layout_column="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-5dip"
|
||||
android:layout_marginTop="-5dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_span="2"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="25sp" />
|
||||
style="@style/StatsRegister.Small" />
|
||||
<TextView
|
||||
android:background="@color/black"
|
||||
style="@style/StatsSpacer"
|
||||
android:layout_column="3"
|
||||
android:layout_marginBottom="-9dip"
|
||||
android:layout_marginTop="-9dip"
|
||||
android:layout_width="5dip"
|
||||
android:textSize="25sp" />
|
||||
<TextView
|
||||
android:gravity="right"
|
||||
android:id="@+id/longitude_register"
|
||||
android:layout_column="4"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-5dip"
|
||||
android:layout_marginTop="-5dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_span="2"
|
||||
android:text="@string/unknown"
|
||||
android:textColor="@color/stat_label_text"
|
||||
android:textSize="25sp" />
|
||||
style="@style/StatsRegister.Small" />
|
||||
</TableRow>
|
||||
|
||||
</TableLayout>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/menu_start_recording"
|
||||
android:icon="@drawable/menu_record"
|
||||
android:icon="@drawable/ic_menu_recordtrack"
|
||||
android:title="@string/start_recording"/>
|
||||
|
||||
<item android:id="@+id/menu_stop_recording"
|
||||
android:icon="@drawable/menu_stop"
|
||||
android:icon="@drawable/ic_menu_stoprecording"
|
||||
android:title="@string/stop_recording"/>
|
||||
|
||||
<item android:id="@+id/menu_list_tracks"
|
||||
android:icon="@drawable/menu_list_tracks"
|
||||
android:icon="@drawable/ic_menu_tracklist"
|
||||
android:title="@string/list_tracks"/>
|
||||
|
||||
<item android:id="@+id/menu_list_markers"
|
||||
android:icon="@drawable/menu_marker"
|
||||
android:icon="@drawable/ic_menu_waypoints"
|
||||
android:title="@string/list_markers"/>
|
||||
|
||||
<item android:id="@+id/menu_settings"
|
||||
@@ -22,10 +22,14 @@
|
||||
android:title="@string/settings"/>
|
||||
|
||||
<item android:id="@+id/menu_aggregated_stats"
|
||||
android:icon="@android:drawable/ic_menu_info_details"
|
||||
android:orderInCategory="1002"
|
||||
android:title="@string/aggregated_stats"/>
|
||||
|
||||
<item android:id="@+id/menu_sensor_state"
|
||||
android:icon="@drawable/ic_menu_sensorstatus"
|
||||
android:orderInCategory="1000"
|
||||
android:title="@string/sensor_state"/>
|
||||
|
||||
<item android:id="@+id/menu_help"
|
||||
android:icon="@android:drawable/ic_menu_info_details"
|
||||
android:orderInCategory="1003"
|
||||
|
||||
@@ -0,0 +1,292 @@
|
||||
<?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>
|
||||
<!-- Task frequency -->
|
||||
<string-array name="task_frequency_options">
|
||||
<item>Inactiu</item>
|
||||
<item>1 min</item>
|
||||
<item>2 min</item>
|
||||
<item>5 min</item>
|
||||
<item>10 min</item>
|
||||
<item>15 min</item>
|
||||
<item>30 min</item>
|
||||
<item>60 min</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Minimum recording distance -->
|
||||
<string-array name="min_recording_distance_options">
|
||||
<item>1 m</item>
|
||||
<item>2 m</item>
|
||||
<item>3 m</item>
|
||||
<item>4 m</item>
|
||||
<item>5 m (recomanat)</item>
|
||||
<item>10 m</item>
|
||||
<item>100 m</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="min_recording_distance_options_ft">
|
||||
<item>3 ft</item>
|
||||
<item>6 ft</item>
|
||||
<item>10 ft</item>
|
||||
<item>13 ft</item>
|
||||
<item>16 ft (recomanat)</item>
|
||||
<item>33 ft</item>
|
||||
<item>328 ft</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Maximum recording distance -->
|
||||
<string-array name="max_recording_distance_options">
|
||||
<item>50 m</item>
|
||||
<item>100 m</item>
|
||||
<item>200 m (recomanat)</item>
|
||||
<item>500 m</item>
|
||||
<item>1000 m</item>
|
||||
<item>5000 m</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="max_recording_distance_options_ft">
|
||||
<item>164 ft</item>
|
||||
<item>328 ft</item>
|
||||
<item>656 ft (recomanat)</item>
|
||||
<item>1640 ft</item>
|
||||
<item>0.6 miles</item>
|
||||
<item>3.1 miles</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Minimum recording interval -->
|
||||
<string-array name="min_recording_interval_options">
|
||||
<item>poca precisió (adaptable)</item>
|
||||
<item>gran precisió (adaptable)</item>
|
||||
<item>el millor (recomanat)</item>
|
||||
<item>2 s</item>
|
||||
<item>3 s</item>
|
||||
<item>4 s</item>
|
||||
<item>5 s</item>
|
||||
<item>10 s</item>
|
||||
<item>20 s</item>
|
||||
<item>30 s</item>
|
||||
<item>1 min</item>
|
||||
<item>2 min</item>
|
||||
<item>5 min</item>
|
||||
<item>10 min</item>
|
||||
<item>15 min</item>
|
||||
<item>30 min</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Minimum required accuracy -->
|
||||
<string-array name="min_required_accuracy_options">
|
||||
<item>10 m (senyal GPS excel·lent)</item>
|
||||
<item>20 m</item>
|
||||
<item>50 m</item>
|
||||
<item>100 m</item>
|
||||
<item>200 m (recomanat)</item>
|
||||
<item>500 m</item>
|
||||
<item>1000 m</item>
|
||||
<item>2000 m</item>
|
||||
<item>5000 m (senyal GPS pobre)</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="min_required_accuracy_options_ft">
|
||||
<item>33 ft (senyal GPS excel·lent)</item>
|
||||
<item>66 ft</item>
|
||||
<item>165 ft</item>
|
||||
<item>328 ft</item>
|
||||
<item>656 ft (recomanat)</item>
|
||||
<item>1640 ft</item>
|
||||
<item>0.6 miles</item>
|
||||
<item>1.2 miles</item>
|
||||
<item>3.1 miles (senyal GPS pobre)</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Split frequency -->
|
||||
<string-array name="split_frequency_options">
|
||||
<item>Sense divisió</item>
|
||||
<item>100 km</item>
|
||||
<item>50 km</item>
|
||||
<item>25 km</item>
|
||||
<item>10 km</item>
|
||||
<item>5 km</item>
|
||||
<item>1 km</item>
|
||||
<item>60 min</item>
|
||||
<item>30 min</item>
|
||||
<item>15 min</item>
|
||||
<item>10 min</item>
|
||||
<item>5 min</item>
|
||||
<item>2 min</item>
|
||||
<item>1 min</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="split_frequency_options_ft">
|
||||
<item>No splitting</item>
|
||||
<item>100 mi</item>
|
||||
<item>50 mi</item>
|
||||
<item>25 mi</item>
|
||||
<item>10 mi</item>
|
||||
<item>5 mi</item>
|
||||
<item>1 mi</item>
|
||||
<item>60 min</item>
|
||||
<item>30 min</item>
|
||||
<item>15 min</item>
|
||||
<item>10 min</item>
|
||||
<item>5 min</item>
|
||||
<item>2 min</item>
|
||||
<item>1 min</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Auto-resume track timeout -->
|
||||
<string-array name="auto_resume_track_timeout_options">
|
||||
<item>Mai</item>
|
||||
<item>5 min</item>
|
||||
<item>10 min</item>
|
||||
<item>15 min</item>
|
||||
<item>Always</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Other non-preference arrays -->
|
||||
<array name="activity_types">
|
||||
<item>desconegut</item>
|
||||
<item>tipus barrejats</item>
|
||||
<item>altre</item>
|
||||
|
||||
<item>córrer</item>
|
||||
<item>córrer al carrer</item>
|
||||
<item>pista d\'atletisme</item>
|
||||
<item>córrer en ruta</item>
|
||||
<item>a peu</item>
|
||||
<item>caminar de presa</item>
|
||||
<item>senderisme</item>
|
||||
<item>ruta de senderisme</item>
|
||||
<item>senderisme fora de ruta</item>
|
||||
<item>escalada</item>
|
||||
|
||||
<item>ciclisme</item>
|
||||
<item>bici al carrer</item>
|
||||
<item>bici de muntanya</item>
|
||||
<item>ruta de bici</item>
|
||||
|
||||
<item>patinatge</item>
|
||||
<item>patinatge en línia</item>
|
||||
<item>skate</item>
|
||||
|
||||
<item>snow shoeing</item>
|
||||
<item>skiing</item>
|
||||
<item>snow boarding</item>
|
||||
<item>sled</item>
|
||||
<item>ice sailing</item>
|
||||
|
||||
<item>pesca</item>
|
||||
<item>rem</item>
|
||||
<item>caiac</item>
|
||||
<item>rem</item>
|
||||
<item>llanxa motora</item>
|
||||
<item>ferry</item>
|
||||
<item>RC boat</item>
|
||||
<item>surf</item>
|
||||
<item>windsurf</item>
|
||||
<item>kitesurf</item>
|
||||
<item>esquí aquàtic</item>
|
||||
<item>wakeboard</item>
|
||||
|
||||
<item>avió</item>
|
||||
<item>hidroavió</item>
|
||||
<item>avió comercial</item>
|
||||
<item>helicòpter</item>
|
||||
<item>globus aerostàtic</item>
|
||||
<item>dirigible</item>
|
||||
<item>avió RC</item>
|
||||
<item>helicòpter RC</item>
|
||||
<item>salt d\'esquí</item>
|
||||
<item>vol sense motor</item>
|
||||
<item>ala delta</item>
|
||||
<item>parapent</item>
|
||||
|
||||
<item>riding</item>
|
||||
<item>horse back riding</item>
|
||||
<item>donkey back riding</item>
|
||||
|
||||
<item>conducció d\'automòbil</item>
|
||||
<item>conducció de bus</item>
|
||||
<item>tren</item>
|
||||
<item>moto</item>
|
||||
<item>dirtbike</item>
|
||||
<item>ATV</item>
|
||||
|
||||
<item>landsailing</item>
|
||||
<item>frisbee</item>
|
||||
<item>ultimate frisbee</item>
|
||||
</array>
|
||||
|
||||
<array name="waypoint_types">
|
||||
<item>ATM</item>
|
||||
<item>banc</item>
|
||||
<item>bar</item>
|
||||
<item>barbeque</item>
|
||||
<item>edifici</item>
|
||||
<item>parada de bús</item>
|
||||
<item>cafeteria</item>
|
||||
<item>acampada</item>
|
||||
<item>càmping</item>
|
||||
<item>església</item>
|
||||
<item>cafeteria</item>
|
||||
<item>botiga de conveniència</item>
|
||||
<item>aigua potable</item>
|
||||
<item>caiguda de roques</item>
|
||||
<item>ferry</item>
|
||||
<item>llar de foc</item>
|
||||
<item>estació de bombers</item>
|
||||
<item>pesca</item>
|
||||
<item>benzinera</item>
|
||||
<item>camp de golf</item>
|
||||
<item>botiga de queviures</item>
|
||||
<item>perruqueria</item>
|
||||
<item>port</item>
|
||||
<item>ruta de senderisme</item>
|
||||
<item>hotel</item>
|
||||
<item>casa</item>
|
||||
<item>informació</item>
|
||||
<item>intersecció</item>
|
||||
<item>bústia</item>
|
||||
<item>mercat</item>
|
||||
<item>punt de trobada</item>
|
||||
<item>opera</item>
|
||||
<item>parking</item>
|
||||
<item>oficina de correus</item>
|
||||
<item>sot</item>
|
||||
<item>comissaria dels mossos</item>
|
||||
<item>encreuament ferroviari</item>
|
||||
<item>restaurant</item>
|
||||
<item>compres</item>
|
||||
<item>vista</item>
|
||||
<item>magatzem</item>
|
||||
<item>piscina</item>
|
||||
<item>telèfon</item>
|
||||
<item>teatre</item>
|
||||
<item>serveis</item>
|
||||
<item>informació turística</item>
|
||||
<item>túnel</item>
|
||||
<item>arbre</item>
|
||||
<item>cascada</item>
|
||||
<item>font d\'aigua</item>
|
||||
<item>punt de referència</item>
|
||||
</array>
|
||||
|
||||
<array name="sensor_type_options">
|
||||
<item>Cap</item>
|
||||
<item>Zephyr Bluetooth</item>
|
||||
</array>
|
||||
|
||||
</resources>
|
||||
@@ -0,0 +1,413 @@
|
||||
<?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>
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">Enregistra la ruta</string>
|
||||
<string name="stop_recording">Atura l\'enregistrament</string>
|
||||
<string name="switch_to_sat">Mode de satèl·lit</string>
|
||||
<string name="switch_to_map">Mode de mapa</string>
|
||||
<string name="mylocation">La meva ubicació</string>
|
||||
<string name="list_tracks">Rutes</string>
|
||||
<string name="list_markers">Marcadors</string>
|
||||
<string name="delete_all_tracks">Elimina totes les rutes</string>
|
||||
<string name="settings">Paràmetres</string>
|
||||
<string name="elevation">Elevació</string>
|
||||
<string name="choose_track_message">Seleccioneu la ruta que es visualitzarà</string>
|
||||
<string name="current_track">Ruta actual</string>
|
||||
<string name="current_segment">Darrer segment</string>
|
||||
<string name="sensor_state">Estat del sensor</string>
|
||||
<string name="aggregated_stats">Estadístiques agregades</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">No s\'ha trobat cap gestor d\'ubicacions en aquest dispositiu.</string>
|
||||
<string name="error_no_gps_location_provider">No s\'ha trobat cap proveïdor d\'ubicació GPS en aquest dispositiu.</string>
|
||||
<string name="error_sending_to_fusiontables">S\'ha produït un error quan s\'enviava la ruta a Google Fusion Tables. Proveu més tard.</string>
|
||||
<string name="error_sending_to_docs">S\'ha prdouït un error quan s\'enviava la ruta a Google Docs. Proveu més tard.</string>
|
||||
<string name="error_unable_to_start_recording">No es pot iniciar l\'enregistrament. Proveu de nou.</string>
|
||||
<string name="error_unable_to_stop_recording">No es pot aturar l\'enregistrament. Proveu de nou.</string>
|
||||
<string name="error_unable_to_read_file">No es pot llegir des del fitxer.</string>
|
||||
<string name="error_invalid_gpx_format">El fitxer no conté un format GPX vàlid.</string>
|
||||
<string name="error_generic">S\'ha produït un error. Proveu de nou.</string>
|
||||
<string name="error_track_does_not_exist">No existeix la ruta.</string>
|
||||
<string name="error_out_of_memory">Aquest fitxer és massa gran (ha d\'ésser inferior a 500KB. S\'està cancel·lant.</string>
|
||||
<string name="error_unable_to_insert_marker">No es pot inserir un marcador. No hi ha cap ubicació fixa disponible.</string>
|
||||
|
||||
<!-- Status messages -->
|
||||
<string name="wait_for_fix">S\'està esperant per tenir una posició GPS fixa. Assegureu-vos que el cel és visible.</string>
|
||||
<string name="status_now_recording">Ara s\'està enregistrant una ruta nova.</string>
|
||||
<string name="status_stopped_recording">S\'ha aturat l\'enregistrament de la ruta.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">S\'ha creat un Google Fusion Table nou a google.com/fusiontables.</string>
|
||||
<string name="status_tracks_have_been_uploaded">S\'ha enviat la ruta a maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">S\'ha enviat la ruta a un full de càlcul a docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">S\'ha enviat la ruta a docs.google.com.</string>
|
||||
<string name="status_enable_gps">Toqueu aquí per anar als paràmetres de seguretat i ubicació i activeu \'habilita els satèl·lits GPS\'. Premeu el botó d\'anar enrere per tornar.</string>
|
||||
<string name="status_approximate_location">Nota: Es mostra una ubicació determinada a partir de les xarxes sense fils i antenes telefòniques.</string>
|
||||
<string name="status_no_location">No es pot determinar la ubicació. Habiliteu més fonts d\'ubicació (vegeu els paràmetres de seguretat i ubicació) i assegureu-vos que el cel és visible. Proveu de nou més tard.</string>
|
||||
<string name="status_waypoint_inserted">S\'ha inserit un marcader de punt de ruta.</string>
|
||||
<string name="status_statistics_inserted">S\'ha inserit un marcador d\'estadístiques.</string>
|
||||
|
||||
<!-- Progress dialog -->
|
||||
<string name="progress_title">Espereu...</string>
|
||||
<string name="progress_message">S\'està enviant la ruta a Google.</string>
|
||||
<string name="progress_message_reading_track">S\'està llegint la ruta...</string>
|
||||
<string name="progress_message_preparing_track">S\'està preparant la ruta...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">S\'està to Google Fusion Tables...</string>
|
||||
<string name="progress_message_authenticating_docs">S\'està autenticant a Google Docs...</string>
|
||||
<string name="progress_message_sending_docs">S\'està enviant la ruta a Google Docs...</string>
|
||||
<string name="progress_message_sending_fusiontables">S\'està enviant a Google Fusion Tables...</string>
|
||||
<string name="progress_message_creating_fusiontable">S\'està creant un Fusion Table nou...</string>
|
||||
<string name="import_progress_message">S\'està imporant una ruta GPS. Això pot trigar una estona.</string>
|
||||
<string name="write_progress_message">S\'està escrivint a la targeta SD. Això pot trigar una estona.</string>
|
||||
<string name="progress_message_updating_track">S\'estan actualitzant les estadístiques de la ruta...</string>
|
||||
|
||||
<!-- Used by DeleteAllDataHandler -->
|
||||
<string name="are_you_sure_question">Esteu segur?</string>
|
||||
<string name="all_data_will_be_permanently_deleted">Tots els marcadors i rutes s\'eliminaran d\'aquest telèfon.</string>
|
||||
<string name="track_will_be_permanently_deleted">La ruta i els seus marcadors s\'eliminaran de forma permanent d\'aquest telèfon.</string>
|
||||
<string name="marker_will_be_permanently_deleted">El marcador s\'eliminarà de forma permanent d\'aquest telèfon.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">Creat per My Tracks a l\'Android.</string>
|
||||
<string name="fusiontable_link">Creat per <a href=\'http://mytracks.appspot.com\'>My Tracks</a> a l\'Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Punts</string>
|
||||
<string name="recorded_date">Enregistrat</string>
|
||||
<string name="category">Tipus d\'activitat</string>
|
||||
<string name="waypoint_category">Tipus de marcador</string>
|
||||
<string name="part">(Part %d)</string>
|
||||
|
||||
<!-- Used by the track recording service -->
|
||||
<string name="recording_your_track">S\'està enregistrant la ruta...</string>
|
||||
<string name="new_track">Ruta %d</string>
|
||||
|
||||
<!-- Common -->
|
||||
<string name="no">No</string>
|
||||
<string name="yes">Sí</string>
|
||||
<string name="ok">D\'acord</string>
|
||||
<string name="error">Error</string>
|
||||
<string name="success">Fet</string>
|
||||
<string name="waypoint">Punt de referència</string>
|
||||
<string name="cancel">Cancel·la</string>
|
||||
<string name="close">Tanca</string>
|
||||
<string name="edit">Edita</string>
|
||||
<string name="save">Desa</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Inici)</string>
|
||||
<string name="end">(Fi)</string>
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Mostra</string>
|
||||
<string name="tracklist_send_to_fusiontables">Envia a Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">Envia a un Google Fusion Table nou</string>
|
||||
<string name="tracklist_send_to_docs">Envia a Google Docs</string>
|
||||
<string name="tracklist_send_to_google">Envia a Google...</string>
|
||||
<string name="tracklist_delete_track">Elimina del telèfon...</string>
|
||||
<string name="tracklist_edit_track">Edita els detalls</string>
|
||||
<string name="tracklist_write_to_sd">Escriu a la targeta SD...</string>
|
||||
<string name="tracklist_save_as_gpx">Anomena i desa com un fitxer GPX</string>
|
||||
<string name="tracklist_save_as_kml">Anomena i desa com un fitxer KML</string>
|
||||
<string name="tracklist_save_as_csv">Anomena i desa com un fitxer CSV</string>
|
||||
<string name="tracklist_save_as_tcx">Anomena i desa com un fitxer TCX</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Envia a Google Fusion Tables</string>
|
||||
<string name="tracklist_btn_delete_all">Elimina totes les rutes</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Exporta totes les rutes</string>
|
||||
<string name="export_done">Exporta les finalitzades</string>
|
||||
<string name="tracklist_pick_one">Seleccioneu una ruta. Mantingueu el dit per veure més opcions.</string>
|
||||
<string name="tracklist_all_tracks">Totes les rutes:</string>
|
||||
<string name="tracklist_this_track">Aquesta ruta</string>
|
||||
<string name="tracklist_share_track">Comparteix amb amics...</string>
|
||||
<string name="tracklist_share_gpx_file">Un fitxer GPX</string>
|
||||
<string name="tracklist_share_kml_file">Un fitxer KML</string>
|
||||
<string name="tracklist_share_csv_file">Un fitxer CSV</string>
|
||||
<string name="tracklist_share_tcx_file">Un fitxer TCX</string>
|
||||
<string name="tracklist_clear_map">Neteja el mapa</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
<string name="waypointslist_btn_delete_all">Elimina tots els marcadors</string>
|
||||
<string name="waypointslist_this_waypoint">Aquest marcador</string>
|
||||
<string name="waypointslist_delete_waypoint">Elimina</string>
|
||||
<string name="waypointslist_edit_waypoint">Edita els detalls</string>
|
||||
<string name="waypointslist_show_waypoint">Mostra al mapa</string>
|
||||
<string name="waypointslist_btn_insert_waypoint">Insereix un punt de referència</string>
|
||||
<string name="waypointslist_btn_insert_statistics">Insereix estadístiques</string>
|
||||
<string name="waypointslist_pick_one">Seleccioneu un marcador. Mantingueu el dit per veure més opcions.</string>
|
||||
|
||||
<!-- MyTracks Details -->
|
||||
<string name="trackdetails_title">Detalls de la ruta</string>
|
||||
<string name="trackdetails_name">Nom de la ruta</string>
|
||||
<string name="trackdetails_description">Descripció de la ruta</string>
|
||||
<string name="trackdetails_category">Tipus d\'activitat (p.e. senderisme, bicicleta, còrrer, escalada...)</string>
|
||||
|
||||
<!-- MyTracks Waypoint Details -->
|
||||
<string name="waypointdetails_title">Detalls del marcador</string>
|
||||
<string name="waypointdetails_name">Nom del marcador</string>
|
||||
<string name="waypointdetails_description">Descripció del marcador</string>
|
||||
<string name="waypointdetails_category">Tipus de marcador (e.g. edifici, sot, vista...)</string>
|
||||
|
||||
<!-- MyTracks Settings -->
|
||||
<string name="mytracks_settings">Paràmetres de My Tracks</string>
|
||||
<string name="settings_display">Visualització</string>
|
||||
<string name="settings_recording">Enregistrament</string>
|
||||
<string name="settings_sharing">Compartició</string>
|
||||
|
||||
<string name="settings_not_available_summary">No es troba disponible a la vostra versió de l\'Android</string>
|
||||
|
||||
<string name="settings_announcement_frequency">Freqüència d\'avís</string>
|
||||
<string name="settings_announcement_frequency_summary">Temps mínim entre dos avisos de veu</string>
|
||||
|
||||
<string name="settings_min_recording_distance">Distància mínima entre punts</string>
|
||||
<string name="settings_min_recording_distance_summary">La distància més petita entre dos punts enregistrats de la vostra posició</string>
|
||||
|
||||
<string name="settings_max_recording_distance">Distància màxima entre punts</string>
|
||||
<string name="settings_max_recording_distance_summary">Si dos punts estan més lluny d\'això, es dividirà la ruta</string>
|
||||
|
||||
<string name="settings_min_recording_interval">Temps mínim entre punts</string>
|
||||
<string name="settings_min_recording_interval_summary">Interval de temps mínim entre dos enregistraments de la vostra posició</string>
|
||||
|
||||
<string name="settings_min_required_accuracy">Precisió mínima</string>
|
||||
<string name="settings_min_required_accuracy_summary">S\'aturarà l\'enregistrament si la vostra posició no és així de precisa com a mínim</string>
|
||||
|
||||
<string name="settings_metric_units">Fes servir unitats mètriques</string>
|
||||
<string name="settings_metric_units_summary_on">Totes les distàncies es mostraran en unitats mètriques</string>
|
||||
<string name="settings_metric_units_summary_off">Totes les distàncies es mostraran en unitats imperials</string>
|
||||
|
||||
<string name="settings_map_public">Fes el mapa públic</string>
|
||||
<string name="settings_map_public_summary_on">Els mapes pujats seran visibles per tothom a maps.google.com</string>
|
||||
<string name="settings_map_public_summary_off">Els mapes pujats no es llistaran públicament a maps.google.com</string>
|
||||
|
||||
<string name="settings_report_speed_or_pace">Mostra la velocitat</string>
|
||||
<string name="settings_report_speed_or_pace_summary_on">Es mostrarà la velocitat</string>
|
||||
<string name="settings_report_speed_or_pace_summary_off">Es mostrarà el ritme de pas</string>
|
||||
|
||||
<string name="settings_share_url_only">Comparteix només l\'URL</string>
|
||||
<string name="settings_share_url_only_summary_on">Només s\'enviarà l\'URL del mapa quan es comparteixi</string>
|
||||
<string name="settings_share_url_only_summary_off">També s\'inclouran els continguts de la ruta quan es comparteixi</string>
|
||||
|
||||
<string name="settings_split_frequency">Freqüència de divisió</string>
|
||||
<string name="settings_split_frequency_summary">Temps o distància màxima a partir de la qual s\'insertarà un marcador de divisió nou</string>
|
||||
|
||||
<string name="settings_auto_resume_track_timeout">Temps d\'espera per reprende la ruta</string>
|
||||
<string name="settings_auto_resume_track_timeout_summary">Temps màxim en minuts a partir del qual l\'anterior ruta enregistrada no es reprendrà en actualitzar el telèfon</string>
|
||||
|
||||
<string name="settings_timestamp_track_name">Data i hora com a nom de la ruta</string>
|
||||
<string name="settings_timestamp_track_name_summary_on">El nom per defecte de la ruta serà la data i hora en que s\'ha iniciat.</string>
|
||||
<string name="settings_timestamp_track_name_summary_off">Els noms de les rutes seran números que s\'incrementaran per a cada nova ruta.</string>
|
||||
|
||||
<string name="pace_label">Ritme de pas</string>
|
||||
|
||||
<string name="eclair_required">Suportat només en Android 2.0 i superior</string>
|
||||
<string name="settings_sensor_type">Tipus de sensor</string>
|
||||
<string name="settings_sensor_type_summary">El tipus de sensor al qual es connecta.</string>
|
||||
<string name="bluetooth_sensor_title">Sensor bluetooth</string>
|
||||
<string name="bluetooth_sensor_summary">El sensor bluetooth al qual es connecta.</string>
|
||||
<string name="settings_modular_stats_display_title">Pantalla d\'estadístiques modulars</string>
|
||||
|
||||
<string name="settings_backup">Còpia de seguretat (BETA)</string>
|
||||
<string name="settings_sd_backup">Còpia de seguretat a la targeta SD</string>
|
||||
<string name="settings_backup_to_sd">Fes la còpia ara</string>
|
||||
<string name="settings_backup_to_sd_summary">Escriu una còpia completa de totes les rutes i els paràmetres a la targeta SD</string>
|
||||
<string name="settings_restore_from_sd">Restaura ara</string>
|
||||
<string name="settings_restore_from_sd_summary">Restaura totes les rutes i els paràmetres des de la targeta SD.</string>
|
||||
<string name="settings_no_backup_while_recording">No es poden gestionar les còpies de seguretat mentre s\'enregistra una ruta.</string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="restore_overwrites_warning">La restauració d\'una còpia de seguretat des de la targeta SD sobreescriurà totes les rutes i paràmetres. Esteu segur?</string>
|
||||
<string name="select_backup_to_restore">Seleccioneu la còpia que es restaurarà</string>
|
||||
<string name="no_backups">No s\'ha trobat cap còpia de seguretat.</string>
|
||||
<string name="backup_write_progress_message">S\'estan escrivint totes les rutes i els paràmetres a la targeta SD. Això pot trigar una estona...</string>
|
||||
<string name="backup_import_progress_message">S\'estan llegint totes les rutes i els paràmetres de la targeta SD. Això pot trigar una estona...</string>
|
||||
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">Satèl·lits GPS</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">M\'agradaria compartir un mapa amb tu</string>
|
||||
<string name="share_map_body_format">Em sembla que estaràs interessat en aquest mapa:
|
||||
|
||||
%s</string>
|
||||
<string name="send_track_subject">M\'agradaria compartir una ruta amb tu</string>
|
||||
<string name="send_track_body_format">Em sembla que estaràs interessat en aquesta ruta.
|
||||
|
||||
Per veure aquesta ruta fes servir Google Earth o altre programari de mapes.</string>
|
||||
<string name="share_track">Comparteix la ruta amb amics</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Públic</string>
|
||||
<string name="unlisted_map">No llistat</string>
|
||||
<string name="mapslist_no_maps_available">Encara no teniu cap mapa.</string>
|
||||
|
||||
<!-- Statistics View -->
|
||||
<!-- Average Moving -->
|
||||
<string name="average_moving_speed_label">Velocitat mitjana en moviment</string>
|
||||
<string name="average_moving_pace_label">Ritme mitjà en moviment</string>
|
||||
|
||||
<!-- Average -->
|
||||
<string name="average_speed_label">Velocitat mitjana</string>
|
||||
<string name="average_pace_label">Ritme de pas mitjà</string>
|
||||
|
||||
<string name="elevation_chart_name">Gràfic d\'elevació</string>
|
||||
<string name="elevation_gain_label">Guany d\'elevació</string>
|
||||
<string name="elevation_label">Elevació</string>
|
||||
<string name="latitude_label">Latitud</string>
|
||||
<string name="longitude_label">Longitud</string>
|
||||
|
||||
<!-- Min -->
|
||||
<string name="min_elevation_label">Elevació mínima</string>
|
||||
<string name="min_grade_label">Grau mínim</string>
|
||||
<string name="min_pace_label">Ritme de pas mínima</string>
|
||||
|
||||
<!-- Max -->
|
||||
<string name="max_elevation_label">Elevació màxima</string>
|
||||
<string name="max_grade_label">Grau màxim</string>
|
||||
<string name="max_speed_label">Velocitat màxima</string>
|
||||
|
||||
<string name="loading_track">S\'està carregant la ruta...</string>
|
||||
|
||||
<!-- Chart Settings -->
|
||||
<string name="chart_settings">Configuració del gràfic</string>
|
||||
<!-- X Axis -->
|
||||
<string name="x_axis">Eix X</string>
|
||||
<string name="by_distance">Per distància</string>
|
||||
<string name="by_time">Per temps</string>
|
||||
|
||||
<!-- Y Axis -->
|
||||
<string name="y_axis">Eix Y</string>
|
||||
|
||||
<!-- Units -->
|
||||
<!-- Time -->
|
||||
<string name="hour">hora</string>
|
||||
<string name="hours">hores</string>
|
||||
<string name="minute">minut</string>
|
||||
<string name="minutes">minuts</string>
|
||||
<string name="second">segon</string>
|
||||
<string name="seconds">segons</string>
|
||||
|
||||
<!-- Distance -->
|
||||
<string name="kilometers_long">kilòmetres</string>
|
||||
<string name="miles_long">milles</string>
|
||||
|
||||
<!-- Speed and Pace -->
|
||||
<string name="kilometer_per_hour_long">kilòmetres per hora</string>
|
||||
<string name="per_kilometer">per kilòmetre</string>
|
||||
<string name="mile_per_hour_long">milles per hora</string>
|
||||
<string name="per_mile">per milla</string>
|
||||
|
||||
<!-- Stats Labels -->
|
||||
<string name="moving_time_label">Temps en moviment</string>
|
||||
<string name="total_time_label">Temps total</string>
|
||||
<string name="time_label">Temps</string>
|
||||
<string name="sd_unavail">La targeta SD no està disponible</string>
|
||||
<string name="speed">Velocitat</string>
|
||||
<string name="start_trip">Heu d\'iniciar la marxa.</string>
|
||||
<string name="statistics">Estadístiques</string>
|
||||
<string name="total_distance_label">Distància total</string>
|
||||
<string name="distance_label">Distància</string>
|
||||
<string name="power">Energia</string>
|
||||
<string name="cadence">Cadència</string>
|
||||
<string name="heart_rate">Freqüència cardíaca</string>
|
||||
<string name="max_heart_rate">Freqüència cardíaca màxima</string>
|
||||
<string name="waiting">S\'està esperant...</string>
|
||||
|
||||
<!-- End User License Agreement -->
|
||||
<string name="eula_title">Acord de llicencia d\'usuari final</string>
|
||||
<string name="accept">Accepta</string>
|
||||
<string name="decline">Rebutja</string>
|
||||
|
||||
<!-- About -->
|
||||
<string name="about">Quant a</string>
|
||||
<string name="help">Ajuda</string>
|
||||
<string name="about_team">Equip:</string>
|
||||
<string name="about_version">Versió:</string>
|
||||
<string name="about_support">Assistència:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Envia a...</string>
|
||||
<string name="sendtogoogle_send_now">Envia ara</string>
|
||||
<string name="sendtogoogle_send_stats">Envia les estadístiques de la ruta</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Envia les estadístiques i els punts</string>
|
||||
|
||||
<!-- Getting the account to upload to. -->
|
||||
<string name="no_account_found_title">No s\'ha trobat cap compte</string>
|
||||
<string name="no_account_found">No s\'ha trobat cap compte on pujar les rutes.</string>
|
||||
<string name="choose_account_title">Trieu un compte</string>
|
||||
|
||||
<!-- SD card -->
|
||||
<string name="io_no_external_storage_found">No s\'ha trobat cap dispositiu d\'emmagatzematge extern. Assegureu-vos que la targeta SD està inserida i que el telèfon no està connectat a un ordinador.</string>
|
||||
<string name="io_write_failed">No es pot escriure a un fitxer.</string>
|
||||
<string name="io_read_failed">No es pot llegir des del fitxer.</string>
|
||||
<string name="io_create_dir_failed">No es pot crear el directori a la targeta SD.</string>
|
||||
<string name="io_write_finished">S\'ha finalitzat l\'escriptura a la targeta SD.</string>
|
||||
<string name="io_read_finished">S\'ha finalitzat la lectura a la targeta SD.</string>
|
||||
|
||||
<!-- VersionChecker -->
|
||||
<string name="version_check_title">Comprovació d\'actualitzacions</string>
|
||||
<string name="version_check_upgrade_button">Actualitza ara</string>
|
||||
<string name="version_check_continue_button">Continua sense actualitzar</string>
|
||||
<string name="upgrade_required">La vostra versió de %1$s podria no funcionar correctament a partir d\'ara i no està suportada. Actualitzeu per continuar fent servir %1$s.</string>
|
||||
<string name="upgrade_recommended">La vostra versió de %1$s podria no funcionar correctament a partir d\'ara. Heu d\'actualitzar-la ara o continuar fent-la servir pel vostre compte. Algunes funcionalitats com la sincronització podrien no funcionar fins que no actualitzeu.</string>
|
||||
<string name="upgrade_available">Hi ha una nova versió disponible de %1$s. Podeu continuar fent servir la vostra versió sense cap problema, però no aconseguireu les darreres funcionalitats fins que no actualitzeu.</string>
|
||||
|
||||
<!-- Welcome -->
|
||||
<string name="welcome">Benvingut</string>
|
||||
<string name="welcome_read_later">D\'acord</string>
|
||||
<string name="welcome_about">Quant a My Tracks</string>
|
||||
|
||||
<!-- Announcement -->
|
||||
<string name="announce_no_distance">Sense distància My Tracks</string>
|
||||
<!-- Format:
|
||||
$1 : Distance label
|
||||
$2 : Distance value (5)
|
||||
$3 : Distance units (mi, km)
|
||||
$4 : Time description (10 minutes 5 seconds)
|
||||
$5 : Speed value (5.6) : Pace value (5 minutes 6 seconds)
|
||||
$6 : Speed units (mph) : Pace units (per mile)
|
||||
-->
|
||||
<string name="announce_template">My Tracks %1$s %2$.2f %3$s en %4$s at %5$s %6$s</string>
|
||||
|
||||
<!-- Check Units -->
|
||||
<string name="check_units_title">Avís de les unitats de mesura</string>
|
||||
<string name="check_units_message">Les unitats són mètriques per defecte. Voleu canviar aquest paràmetre?</string>
|
||||
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<string name="bluetooth_options">Opcions del Bluetooth</string>
|
||||
<string name="bluetooth_pairing">Associació de dispositius</string>
|
||||
<string name="bluetooth_pairing_summary">Obriu els paràmetres de bluetooth de l\'Android per associar un dispositiu</string>
|
||||
<string name="sensor_bluetooth_options_key">bluetoothSensorsEnabled</string>
|
||||
<string name="sensor_options">Opcions del sensor</string>
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">Connectat a %s</string>
|
||||
<string name="bluetooth_connecting">Connexió del sensor bluetooth...</string>
|
||||
<string name="bluetooth_not_connected">El sensor bluetooth no està connectat</string>
|
||||
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_data_time">Dades del sensor de temps</string>
|
||||
<string name="power_meter_enabled">S\'ha habilitat el mesurador de potència</string>
|
||||
<string name="heart_rate_monitor_enabled">S\'ha habilitat el monitor de la freqüència cardíaca</string>
|
||||
<string name="no_sensor_manager">Cap gestor de sensors</string>
|
||||
<string name="enabled">Habilitat</string>
|
||||
<string name="connecting">S\'està connectant</string>
|
||||
<string name="connected">S\'ha connectat</string>
|
||||
<string name="disconnected">S\'ha desconnectat</string>
|
||||
<string name="no_sensor_service">Cap servei de sensor</string>
|
||||
<string name="searching">S\'està cercant</string>
|
||||
<string name="sending">S\'està enviant</string>
|
||||
|
||||
</resources>
|
||||
@@ -17,7 +17,7 @@ limitations under the License.
|
||||
<resources>
|
||||
<!-- Task frequency -->
|
||||
<string-array name="task_frequency_options">
|
||||
<item>Off</item>
|
||||
<item>Aus</item>
|
||||
<item>1 min</item>
|
||||
<item>2 min</item>
|
||||
<item>5 min</item>
|
||||
@@ -70,8 +70,8 @@ limitations under the License.
|
||||
|
||||
<!-- Minimum recording interval -->
|
||||
<string-array name="min_recording_interval_options">
|
||||
<item>batterie sparend (adaptiv)</item>
|
||||
<item>hohe genauigkeit (adaptiv)</item>
|
||||
<item>batteriesparend (adaptiv)</item>
|
||||
<item>hohe Genauigkeit (adaptiv)</item>
|
||||
<item>maximal (empfohlen)</item>
|
||||
<item>2 s</item>
|
||||
<item>3 s</item>
|
||||
@@ -133,12 +133,12 @@ limitations under the License.
|
||||
|
||||
<string-array name="split_frequency_options_ft">
|
||||
<item>Nicht zerteilen</item>
|
||||
<item>100 meilen</item>
|
||||
<item>50 meilen</item>
|
||||
<item>25 meilen</item>
|
||||
<item>10 meilen</item>
|
||||
<item>5 meilen</item>
|
||||
<item>1 meile</item>
|
||||
<item>100 Meilen</item>
|
||||
<item>50 Meilen</item>
|
||||
<item>25 Meilen</item>
|
||||
<item>10 Meilen</item>
|
||||
<item>5 Meilen</item>
|
||||
<item>1 Meile</item>
|
||||
<item>60 min</item>
|
||||
<item>30 min</item>
|
||||
<item>15 min</item>
|
||||
@@ -159,7 +159,7 @@ limitations under the License.
|
||||
<item>Laufbahn</item>
|
||||
<item>Geländelauf</item>
|
||||
<item>Gehen</item>
|
||||
<item>Schnelles Gehen</item>
|
||||
<item>Gehen (Sport)</item>
|
||||
<item>Wandern</item>
|
||||
<item>Bergwandern</item>
|
||||
<item>Bergsteigen</item>
|
||||
@@ -181,11 +181,11 @@ limitations under the License.
|
||||
<item>Eissegeln</item>
|
||||
|
||||
<item>Segeln</item>
|
||||
<item>Kanadierfahren</item>
|
||||
<item>Kajakfahren</item>
|
||||
<item>Paddeln</item>
|
||||
<item>Kajak fahren</item>
|
||||
<item>Kanuwandern</item>
|
||||
<item>Rudern</item>
|
||||
<item>Motorbootfahren</item>
|
||||
<item>Motorboot fahren</item>
|
||||
<item>Fähre</item>
|
||||
<item>Ferngesteuertes Boot</item>
|
||||
<item>Surfen</item>
|
||||
@@ -229,13 +229,14 @@ limitations under the License.
|
||||
<item>Bank</item>
|
||||
<item>Kneipe</item>
|
||||
<item>Grill</item>
|
||||
<item>Imbiss</item>
|
||||
<item>Gebäude</item>
|
||||
<item>Bushaltestelle</item>
|
||||
<item>Straßenbahnhaltestelle</item>
|
||||
<item>Bahnhof</item>
|
||||
<item>S-Bahnhof</item>
|
||||
<item>Café</item>
|
||||
<item>Lagerfeuer</item>
|
||||
<item>Feuerstelle</item>
|
||||
<item>Campingplatz</item>
|
||||
<item>Zeltplatz</item>
|
||||
<item>Kirche</item>
|
||||
@@ -278,6 +279,7 @@ limitations under the License.
|
||||
<item>Tunnel</item>
|
||||
<item>Baum</item>
|
||||
<item>Wasserfall</item>
|
||||
<item>Springbrunnen</item>
|
||||
<item>Wegpunkt</item>
|
||||
</array>
|
||||
|
||||
|
||||
@@ -1,347 +1,381 @@
|
||||
<?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>
|
||||
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">Track aufzeichnen</string>
|
||||
<string name="stop_recording">Aufzeichnung anhalten</string>
|
||||
<string name="switch_to_sat">Satellitenansicht</string>
|
||||
<string name="switch_to_map">Kartenansicht</string>
|
||||
<string name="mylocation">Mein Aufenthaltsort</string>
|
||||
-->
|
||||
<resources>
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">Track aufzeichnen</string>
|
||||
<string name="stop_recording">Aufzeichnung anhalten</string>
|
||||
<string name="switch_to_sat">Satellitenansicht</string>
|
||||
<string name="switch_to_map">Kartenansicht</string>
|
||||
<string name="mylocation">Mein Aufenthaltsort</string>
|
||||
<string name="list_markers">Wegpunkte</string>
|
||||
<string name="delete_all_tracks">Alle Tracks löschen</string>
|
||||
<string name="settings">Einstellungen</string>
|
||||
<string name="elevation">Höhe</string>
|
||||
<string name="choose_track_message">Bitte wählen Sie einen Track zur Ansicht aus</string>
|
||||
<string name="current_track">Aktueller Track</string>
|
||||
<string name="current_segment">Letztes Segment</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Es wurde kein \'Location Manager\' auf diesem Gerät gefunden.</string>
|
||||
<string name="error_no_gps_location_provider">Konnte keinen GPS-Empfänger auf diesem Gerät finden.</string>
|
||||
<string name="error_sending_to_mymap">Beim Senden Ihres Tracks an Google My Maps ist ein Fehler aufgetreten. Bitte versuchen Sie es später nochmal.</string>
|
||||
<string name="error_sending_to_docs">Beim Senden Ihres Tracks an Google Docs ist ein Fehler aufgetreten. Bitte versuchen Sie es später nochmal.</string>
|
||||
<string name="error_unable_to_start_recording">Aufzeichnen fehlgeschlagen. Bitte versuchen Sie es nochmal.</string>
|
||||
<string name="error_unable_to_stop_recording">Anhalten unmöglich. Bitte versuchen Sie es nochmal.</string>
|
||||
<string name="error_unable_to_read_file">Datei nicht lesbar.</string>
|
||||
<string name="error_invalid_gpx_format">Datei ist nicht im GPX-Format.</string>
|
||||
<string name="error_generic">Ein Fehler ist aufgetreten. Bitte versuchen Sie es nochmal.</string>
|
||||
<string name="error_track_does_not_exist">Track existiert nicht.</string>
|
||||
<string name="error_out_of_memory">Die Datei ist zu groß (Obergrenze sind 500 KB). Operation abgebrochen.</string>
|
||||
<string name="error_unable_to_insert_marker">Der Wegpunkt kann nicht einfügt werden. Keine Positionsbestimmung möglich.</string>
|
||||
|
||||
<!-- Status messages -->
|
||||
<string name="wait_for_fix">Warten auf ein besseres GPS-Signal. Bitte stellen Sie sicher, dass der Himmel sichtbar ist.</string>
|
||||
<string name="status_now_recording">Ein neuer Track wird aufgezeichnet.</string>
|
||||
<string name="status_stopped_recording">Die Aufzeichnung wurde beendet.</string>
|
||||
<string name="status_new_mymap_has_been_created">Eine neue Karte wurde auf maps.google.com erstellt.</string>
|
||||
<string name="status_tracks_have_been_uploaded">Ihr Track wurde auf maps.google.com gespeichert.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Ihr Track wurde in einer neuen Tabelle bei docs.google.com gespeichert.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Ihr Track wurde an docs.google.com gesendet.</string>
|
||||
<string name="status_mymap_info">Manchmal dauert es ein paar Minuten, bis neue Tracks bei maps.google.com erscheinen.</string>
|
||||
<string name="status_enable_gps">Berühren Sie hier um zu den Sicherheits- und Positionseinstellungen zu gelangen. Aktiviere \'GPS-Satelliten\'. Drücken Sie dann den Zurück-Knopf um zurückzukehren.</string>
|
||||
<string name="status_approximate_location">Anmerkung: Eine ungefähre Position wird angezeigt, bestimmt mittels Funktürmen und WiFi-Netzwerken.</string>
|
||||
<string name="status_no_location">Ihre Position kann derzeit nicht bestimmt werden. Aktivieren Sie mehr Positionsquellen (siehe Sicherheits- und Positionseinstellungen) und stellen Sie sicher, dass der Himmel sichtbar ist.</string>
|
||||
<string name="status_waypoint_inserted">Ein Wegpunkt wurde eingefügt.</string>
|
||||
<string name="status_statistics_inserted">Ein Statistikwegpunkt wurde eingefügt.</string>
|
||||
|
||||
<!-- Progress dialog -->
|
||||
<string name="progress_title">Bitte warten…</string>
|
||||
<string name="progress_message">Ihr GPS-Track wird an Google gesendet.</string>
|
||||
<string name="progress_message_reading_track">Lese Track</string>
|
||||
<string name="progress_message_preparing_track">Bereite Track vor</string>
|
||||
<string name="progress_message_authenticating_mymaps">Anmelden bei Google Maps</string>
|
||||
<string name="progress_message_authenticating_docs">Anmelden bei Google Docs</string>
|
||||
<string name="progress_message_sending_docs">Track an Google Docs senden</string>
|
||||
<string name="progress_message_sending_mymaps">Track an Google Maps senden</string>
|
||||
<string name="progress_message_creating_map">Neue \'Meine Karte\' erstellen</string>
|
||||
<string name="import_progress_message">Importiere GPS-Track. Das dauert ein wenig.</string>
|
||||
<string name="write_progress_message">Schreibe Datei auf SD-Karte. Das dauert ein wenig.</string>
|
||||
<string name="progress_message_updating_track">Aktualisiere Trackstatistik</string>
|
||||
|
||||
<!-- Used by DeleteAllDataHandler -->
|
||||
<string name="are_you_sure_question">Bist Du Dir wirklich sicher?</string>
|
||||
<string name="all_data_will_be_permanently_deleted">Alle Tracks und Wegpunkte werden endgültig von diesem Gerät gelöscht.</string>
|
||||
<string name="track_will_be_permanently_deleted">Dieser Track und seine Wegpunkte werden endgültig von diesem Gerät gelöscht.</string>
|
||||
<string name="marker_will_be_permanently_deleted">Dieser Wegpunkt wird endgültig von diesem Gerät gelöscht.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google MyMaps -->
|
||||
<string name="new_map_title">Neue Karte</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Punkte</string>
|
||||
<string name="recorded_date">Aufgezeichnet am</string>
|
||||
<string name="category">"Aktivität"</string>
|
||||
<string name="waypoint_category">"Art des Wegpunktes"</string>
|
||||
<string name="part">"(Teil %d)"</string>
|
||||
|
||||
<!-- Used by the track recording service -->
|
||||
<string name="recording_your_track">"Ihr Track wird aufgezeichnet…"</string>
|
||||
|
||||
<!-- Common -->
|
||||
<string name="no">Nein</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="error">Fehler</string>
|
||||
<string name="success">Erfolgreich</string>
|
||||
<string name="waypoint">Wegpunkt</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Anfang)</string>
|
||||
<string name="end">(Ende)</string>
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Anzeigen</string>
|
||||
<string name="tracklist_send_to_mymaps">An eine Google MyMaps-Karte senden</string>
|
||||
<string name="tracklist_send_to_new_mymap">An eine neue Google MyMaps-Karte senden</string>
|
||||
<string name="tracklist_send_to_docs">An Google Docs senden</string>
|
||||
<string name="tracklist_send_to_google">An Google senden…</string>
|
||||
<string name="tracklist_delete_track">Vom Gerät löschen…</string>
|
||||
<string name="tracklist_edit_track">Bearbeiten</string>
|
||||
<string name="tracklist_write_to_sd">Auf SD-Karte speichern…</string>
|
||||
<string name="tracklist_save_as_gpx">GPX-Datei exportieren</string>
|
||||
<string name="tracklist_save_as_kml">KML-Datei exportieren</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">An Google MyMaps senden</string>
|
||||
<string name="tracklist_btn_delete_all">Alle Tracks löschen</string>
|
||||
<string name="tracklist_pick_one">Eine Track auswählen. Lange berühren für mehr Optionen.</string>
|
||||
<string name="tracklist_all_tracks">Alle Tracks:</string>
|
||||
<string name="tracklist_this_track">Dieser Track</string>
|
||||
<string name="tracklist_share_track">Mit Freunden teilen…</string>
|
||||
<string name="tracklist_share_link">Ein Link zur Google MyMaps-Karte</string>
|
||||
<string name="tracklist_share_gpx_file">Eine GPX-Datei</string>
|
||||
<string name="tracklist_share_kml_file">Eine KML-Datei</string>
|
||||
<string name="tracklist_clear_map">Karte zurücksetzen.</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
<string name="waypointslist_btn_delete_all">Alle Wegpunkte löschen</string>
|
||||
<string name="waypointslist_this_waypoint">Dieser Wegpunkt</string>
|
||||
<string name="waypointslist_delete_waypoint">Löschen</string>
|
||||
<string name="waypointslist_edit_waypoint">Details bearbeiten</string>
|
||||
<string name="waypointslist_show_waypoint">Auf der Karte zeigen</string>
|
||||
<string name="waypointslist_btn_insert_waypoint">Wegpunkt einfügen</string>
|
||||
<string name="waypointslist_btn_insert_statistics">Statistik einfügen</string>
|
||||
<string name="waypointslist_pick_one">Wegpunkt auswählen. Lange berühren für mehr Optionen.</string>
|
||||
|
||||
<!-- MyTracks Details -->
|
||||
<string name="trackdetails_title">Trackdetails</string>
|
||||
<string name="trackdetails_name">Name</string>
|
||||
<string name="trackdetails_description">Beschreibung</string>
|
||||
<string name="trackdetails_category">Aktivität (z. B. Wandern, Fahrradfahren, Laufen, Klettern…)</string>
|
||||
|
||||
<!-- MyTracks Waypoint Details -->
|
||||
<string name="waypointdetails_title">Wegpunktdetails</string>
|
||||
<string name="waypointdetails_name">Wegpunktname</string>
|
||||
<string name="waypointdetails_description">Wegpunktbeschreibung</string>
|
||||
<string name="waypointdetails_category">Art des Wegpunktes (z. B. Gebäude, Schlagloch, Sehenswürdigkeit…)</string>
|
||||
|
||||
<!-- MyTracks Settings -->
|
||||
<string name="mytracks_settings">Einstellungen für My Tracks</string>
|
||||
<string name="settings_display">Anzeige</string>
|
||||
<string name="settings_recording">Aufzeichnen</string>
|
||||
<string name="settings_sharing">Mit Freunden Teilen</string>
|
||||
|
||||
<string name="settings_announcement_frequency">Dauer zwischen Ansagen:</string>
|
||||
<string name="settings_announcement_frequency_summary">Kürzeste Zeit zwichen zwei Ansagen</string>
|
||||
|
||||
<string name="settings_min_recording_distance">Kleinste Entfernung zwischen Punkten:</string>
|
||||
<string name="settings_min_recording_distance_summary">Kleinste Entfernung zwischen zwei Positionsaufzeichnungen</string>
|
||||
|
||||
<string name="settings_max_recording_distance">Neues Segment wenn Punkte weiter entfernt als:</string>
|
||||
<string name="settings_max_recording_distance_summary">Der Track wird in Zwei geteilt wenn zwei folgende Punkte weiter entfernt sind als hier angegeben.</string>
|
||||
|
||||
<string name="settings_min_recording_interval">Aufzeichnungsfrequenz:</string>
|
||||
<string name="settings_min_recording_interval_summary">Kürzeste Zeit zwischen zwei Positionsaufzeichnungen.</string>
|
||||
|
||||
<string name="settings_min_required_accuracy">Aufzeichnung pausieren wenn Genauigkeit kleiner als:</string>
|
||||
<string name="settings_min_required_accuracy_summary">Die Aufzeichnung wird kurzfristig angehalten, wenn Ihre Position nicht genauer als hier angegeben ermittelt werden kann.</string>
|
||||
|
||||
<string name="settings_metric_units">Entfernungen in metrischen Einheiten anzeigen</string>
|
||||
<string name="settings_metric_units_summary_on">Alle Entfernungen werden in metrischen Einheiten angezeigt.</string>
|
||||
<string name="settings_metric_units_summary_off">Alle Entfernungen werden in britischen Längeneinheiten angezeigt.</string>
|
||||
|
||||
<string name="settings_map_public">Karten auf maps.google.com veröffentlichen</string>
|
||||
<string name="settings_map_public_summary_on">Hochgeladene Karten auf maps.google.com sind für alle sichtbar.</string>
|
||||
<string name="settings_map_public_summary_off">Hochgeladene Karten auf maps.google.com werden nicht öffentlich sichtbar aufgelistet.</string>
|
||||
|
||||
<string name="settings_report_speed_or_pace">Geschwindigkeitsanzeige:</string>
|
||||
<string name="settings_report_speed_or_pace_summary_on">Geschwindigkeit wird angezeigt.</string>
|
||||
<string name="settings_report_speed_or_pace_summary_off">Gangart wird angezeigt.</string>
|
||||
|
||||
<string name="settings_share_url_only">Nur URL als Einladung zum Teilen senden</string>
|
||||
<string name="settings_share_url_only_summary_on">Beim teilen mit Freunden wird nur die Karten URL gesendet.</string>
|
||||
<string name="settings_share_url_only_summary_off">Beim teilen mit Freunden wird der GPS Track selbst gesendet.</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Empfangsstärke Aufzeichnungsfrequenz</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Dauer zwischen zwei Aufzeichnungen der Telefonempfangsstärke.</string>
|
||||
|
||||
<string name="settings_split_frequency">Zerteilungs Frequenz</string>
|
||||
<string name="settings_split_frequency_summary">Längste Dauer oder Entfernung nach der automatisch ein Marker eingefügt wird.</string>
|
||||
<string name="pace_label">Tempo</string>
|
||||
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">GPS-Satelliten</string>
|
||||
|
||||
<!-- MyMaps -->
|
||||
<string name="select_map_message">Wähle eine Karte von Deinem Konto aus:</string>
|
||||
<string name="create_new_map">Neue Karte erstellen…</string>
|
||||
<string name="map_list_title">An Google My Maps senden</string>
|
||||
<string name="maps_list_loading">Karten werden geladen…</string>
|
||||
<string name="maps_list_failed">Ihre Karten konnten im Augenblick nicht geladen werden!</string>
|
||||
<string name="open_map">Diese Karte auswählen</string>
|
||||
<string name="edit_map_details">Kartendetails bearbeiten</string>
|
||||
<string name="share_map">Karte mit Freunden teilen</string>
|
||||
<string name="share_track">Track mit Freunden teilen</string>
|
||||
<string name="delete_map">Karte vom Konto löschen</string>
|
||||
<string name="map_title">Kartentitel:</string>
|
||||
<string name="map_description">Trackbeschreibung:</string>
|
||||
<string name="map_searchable_edit">Diese Karte und Ihren Inhalt in Suchergebnissen sichtbar machen.</string>
|
||||
<string name="map_not_searchable_edit">Diese Karte und Ihren Inhalt nicht in Suchergebnissen sichtbar machen.</string>
|
||||
<string name="map_searchable">Diese Karte und Ihr Inhalt sind in Suchergebnissen sichtbar.</string>
|
||||
<string name="map_not_searchable">Weder diese Karte noch Ihr Inhalt sind in Suchergebnissen sichtbar, allerdings können Sie trotzdem von anderen durch einen direkten Link angezeigt werden.</string>
|
||||
<string name="delete_all_tracks">Alle Tracks löschen</string>
|
||||
<string name="settings">Einstellungen</string>
|
||||
<string name="elevation">Höhe</string>
|
||||
<string name="choose_track_message">Bitte wähle einen Track zur Ansicht aus</string>
|
||||
<string name="current_track">Aktueller Track</string>
|
||||
<string name="current_segment">Letztes Segment</string>
|
||||
<string name="sensor_state">Sensorstatus</string>
|
||||
<string name="aggregated_stats">Aggregierte Statistiken</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Es wurde kein Dienst zur Positionsermittlung auf diesem Gerät gefunden.</string>
|
||||
<string name="error_no_gps_location_provider">Es wurde kein GPS-Empfänger auf diesem Gerät gefunden.</string>
|
||||
<string name="error_sending_to_fusiontables">Beim Senden des Tracks an Google Fusion Tables ist ein Fehler aufgetreten. Bitte versuche es später noch einmal.</string>
|
||||
<string name="error_sending_to_docs">Beim Senden des Tracks an Google Docs ist ein Fehler aufgetreten. Bitte versuche es später noch einmal.</string>
|
||||
<string name="error_unable_to_start_recording">Start der Aufzeichnung fehlgeschlagen. Bitte versuche es noch einmal.</string>
|
||||
<string name="error_unable_to_stop_recording">Anhalten unmöglich. Bitte versuche es noch einmal.</string>
|
||||
<string name="error_unable_to_read_file">Konnte Datei nicht lesen.</string>
|
||||
<string name="error_invalid_gpx_format">Datei ist nicht im GPX-Format.</string>
|
||||
<string name="error_generic">Ein Fehler ist aufgetreten. Bitte versuche es noch einmal.</string>
|
||||
<string name="error_track_does_not_exist">Track existiert nicht.</string>
|
||||
<string name="error_out_of_memory">Die Datei ist zu groß (maximal 500 KB). Operation abgebrochen.</string>
|
||||
<string name="error_unable_to_insert_marker">Der Wegpunkt kann nicht einfügt werden. Keine Positionsbestimmung möglich.</string>
|
||||
|
||||
<!-- Status messages -->
|
||||
<string name="wait_for_fix">Warte auf ein besseres GPS-Signal. Bitte stelle sicher, dass der Himmel sichtbar ist.</string>
|
||||
<string name="status_now_recording">Ein neuer Track wird aufgezeichnet.</string>
|
||||
<string name="status_stopped_recording">Die Aufzeichnung wurde angehalten.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">Eine neue Tabelle wurde auf google.com/fusiontables erstellt.</string>
|
||||
<string name="status_tracks_have_been_uploaded">Dein Track wurde auf maps.google.com gespeichert.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Dein Track wurde in einer neuen Tabelle bei docs.google.com gespeichert.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Dein Track wurde an docs.google.com gesendet.</string>
|
||||
<string name="status_enable_gps">Hier berühren, um zu den Sicherheits- und Positionseinstellungen zu gelangen. Aktiviere \'GPS-Satelliten\'. Drücke dann den Zurück-Knopf, um hierher zurückzukehren.</string>
|
||||
<string name="status_approximate_location">Anmerkung: Eine ungefähre Position wird angezeigt, bestimmt mittels Mobilfunkstationen und WiFi-Netzwerken.</string>
|
||||
<string name="status_no_location">Die Position kann derzeit nicht bestimmt werden. Aktiviere mehr Positionsquellen (siehe Sicherheits- und Positionseinstellungen) und stelle sicher, dass der Himmel sichtbar ist.</string>
|
||||
<string name="status_waypoint_inserted">Ein Wegpunkt wurde eingefügt.</string>
|
||||
<string name="status_statistics_inserted">Ein Statistikwegpunkt wurde eingefügt.</string>
|
||||
|
||||
<!-- Progress dialog -->
|
||||
<string name="progress_title">Bitte warten…</string>
|
||||
<string name="progress_message">Dein Track wird an Google gesendet...</string>
|
||||
<string name="progress_message_reading_track">Lese Track...</string>
|
||||
<string name="progress_message_preparing_track">Bereite Track vor...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">Anmeldung bei Google Fusion Tables...</string>
|
||||
<string name="progress_message_authenticating_docs">Anmeldung bei Google Docs...</string>
|
||||
<string name="progress_message_sending_docs">Track wird an Google Docs gesendet...</string>
|
||||
<string name="progress_message_sending_fusiontables">Track wird an Google Fusion Tables gesendet...</string>
|
||||
<string name="progress_message_creating_fusiontable">Neue \'Fusion Tabelle\' wird erstellt...</string>
|
||||
<string name="import_progress_message">Importiere GPS-Track. Das kann ein wenig dauern.</string>
|
||||
<string name="write_progress_message">Schreibe Datei auf SD-Karte. Das kann ein wenig dauern.</string>
|
||||
<string name="progress_message_updating_track">Aktualisiere Trackstatistik...</string>
|
||||
|
||||
<!-- Used by DeleteAllDataHandler -->
|
||||
<string name="are_you_sure_question">Bist Du Dir wirklich sicher?</string>
|
||||
<string name="all_data_will_be_permanently_deleted">Alle Tracks und Wegpunkte werden endgültig von diesem Gerät gelöscht.</string>
|
||||
<string name="track_will_be_permanently_deleted">Dieser Track und seine Wegpunkte werden endgültig von diesem Gerät gelöscht.</string>
|
||||
<string name="marker_will_be_permanently_deleted">Dieser Wegpunkt wird endgültig von diesem Gerät gelöscht.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google Fusion Tables -->
|
||||
<string name="new_map_description">Erstellt von My Tracks für Android.</string>
|
||||
<string name="fusiontable_link">Erstellt von <a href=\'http://mytracks.appspot.com\'>My Tracks</a> für Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Punkte</string>
|
||||
<string name="recorded_date">Aufgezeichnet am</string>
|
||||
<string name="category">Aktivität</string>
|
||||
<string name="waypoint_category">Art des Wegpunktes</string>
|
||||
<string name="part">(Teil %d)</string>
|
||||
|
||||
<!-- Used by the track recording service -->
|
||||
<string name="recording_your_track">Dein Track wird aufgezeichnet…</string>
|
||||
|
||||
<!-- Common -->
|
||||
<string name="no">Nein</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="error">Fehler</string>
|
||||
<string name="success">Erfolgreich</string>
|
||||
<string name="waypoint">Wegpunkt</string>
|
||||
<string name="license">Lizenz</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="close">Schließen</string>
|
||||
<string name="edit">Bearbeiten</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="save">Sichern</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">Ich möchte gerne eine Karte mit Dir teilen.</string>
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="end">(Ende)</string>
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Anzeigen</string>
|
||||
<string name="tracklist_send_to_fusiontables">An eine Google Fusion Tables-Karte senden</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">An eine neue Google Fusion Tables-Karte senden</string>
|
||||
<string name="tracklist_send_to_docs">An Google Docs senden</string>
|
||||
<string name="tracklist_send_to_google">An Google senden…</string>
|
||||
<string name="tracklist_delete_track">Vom Gerät löschen…</string>
|
||||
<string name="tracklist_edit_track">Bearbeiten</string>
|
||||
<string name="tracklist_write_to_sd">Auf SD-Karte speichern…</string>
|
||||
<string name="tracklist_save_as_gpx">GPX-Datei exportieren</string>
|
||||
<string name="tracklist_save_as_kml">KML-Datei exportieren</string>
|
||||
<string name="tracklist_save_as_csv">CSV-Datei exportieren</string>
|
||||
<string name="tracklist_save_as_tcx">TCX-Datei exportieren</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">An Google Fusion Tables senden</string>
|
||||
<string name="tracklist_btn_delete_all">Alle Tracks löschen</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Alle Tracks exportieren</string>
|
||||
<string name="export_done">Exportieren beendet</string>
|
||||
<string name="tracklist_pick_one">Einen Track auswählen. Lange berühren für mehr Optionen.</string>
|
||||
<string name="tracklist_all_tracks">Alle Tracks</string>
|
||||
<string name="tracklist_this_track">Dieser Track</string>
|
||||
<string name="tracklist_share_track">Mit Freunden teilen…</string>
|
||||
<string name="tracklist_share_gpx_file">Eine GPX-Datei</string>
|
||||
<string name="tracklist_share_kml_file">Eine KML-Datei</string>
|
||||
<string name="tracklist_share_csv_file">Eine CSV-Datei</string>
|
||||
<string name="tracklist_share_tcx_file">Eine TCX-Datei</string>
|
||||
<string name="tracklist_clear_map">Karte zurücksetzen.</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
<string name="waypointslist_btn_delete_all">Alle Wegpunkte löschen</string>
|
||||
<string name="waypointslist_this_waypoint">Dieser Wegpunkt</string>
|
||||
<string name="waypointslist_delete_waypoint">Löschen</string>
|
||||
<string name="waypointslist_edit_waypoint">Details bearbeiten</string>
|
||||
<string name="waypointslist_show_waypoint">Auf der Karte zeigen</string>
|
||||
<string name="waypointslist_btn_insert_waypoint">Wegpunkt einfügen</string>
|
||||
<string name="waypointslist_btn_insert_statistics">Statistik einfügen</string>
|
||||
<string name="waypointslist_pick_one">Wegpunkt auswählen. Lange berühren für mehr Optionen.</string>
|
||||
|
||||
<!-- MyTracks Details -->
|
||||
<string name="trackdetails_title">Trackdetails</string>
|
||||
<string name="trackdetails_name">Name</string>
|
||||
<string name="trackdetails_description">Beschreibung</string>
|
||||
<string name="trackdetails_category">Aktivität (z. B. Wandern, Fahrradfahren, Laufen, Klettern…)</string>
|
||||
|
||||
<!-- MyTracks Waypoint Details -->
|
||||
<string name="waypointdetails_title">Wegpunktdetails</string>
|
||||
<string name="waypointdetails_name">Wegpunktname</string>
|
||||
<string name="waypointdetails_description">Wegpunktbeschreibung</string>
|
||||
<string name="waypointdetails_category">Art des Wegpunktes (z. B. Gebäude, Schlagloch, Sehenswürdigkeit…)</string>
|
||||
|
||||
<!-- MyTracks Settings -->
|
||||
<string name="mytracks_settings">Einstellungen für My Tracks</string>
|
||||
<string name="settings_display">Anzeige</string>
|
||||
<string name="settings_recording">Aufzeichnung</string>
|
||||
<string name="settings_sharing">Mit Freunden teilen</string>
|
||||
|
||||
<string name="settings_not_available_summary">In dieser Android-Version nicht verfügbar</string>
|
||||
|
||||
<string name="settings_announcement_frequency">Dauer zwischen Ansagen</string>
|
||||
<string name="settings_announcement_frequency_summary">Kürzeste Zeit zwischen zwei Ansagen</string>
|
||||
|
||||
<string name="settings_min_recording_distance">Kleinste Entfernung zwischen Punkten</string>
|
||||
<string name="settings_min_recording_distance_summary">Kleinste Entfernung zwischen zwei Positionsaufzeichnungen</string>
|
||||
|
||||
<string name="settings_max_recording_distance">Neues Segment, wenn Punkte weiter entfernt als</string>
|
||||
<string name="settings_max_recording_distance_summary">Der Track wird in zwei geteilt, wenn zwei folgende Punkte weiter entfernt sind als hier angegeben.</string>
|
||||
|
||||
<string name="settings_min_recording_interval">Aufzeichnungsfrequenz</string>
|
||||
<string name="settings_min_recording_interval_summary">Kürzeste Zeit zwischen zwei Positionsaufzeichnungen</string>
|
||||
|
||||
<string name="settings_min_required_accuracy">Aufzeichnung pausieren, wenn Genauigkeit kleiner als</string>
|
||||
<string name="settings_min_required_accuracy_summary">Die Aufzeichnung wird kurzfristig angehalten, wenn Deine Position nicht genauer als hier angegeben ermittelt werden kann.</string>
|
||||
|
||||
<string name="settings_metric_units">Entfernungen in metrischen Einheiten anzeigen</string>
|
||||
<string name="settings_metric_units_summary_on">Alle Entfernungen werden in metrischen Einheiten angezeigt.</string>
|
||||
<string name="settings_metric_units_summary_off">Alle Entfernungen werden in imperialen Längeneinheiten angezeigt.</string>
|
||||
|
||||
<string name="settings_map_public">Karten auf maps.google.com veröffentlichen</string>
|
||||
<string name="settings_map_public_summary_on">Hochgeladene Karten auf maps.google.com sind für alle sichtbar.</string>
|
||||
<string name="settings_map_public_summary_off">Hochgeladene Karten auf maps.google.com werden nicht öffentlich sichtbar aufgelistet.</string>
|
||||
|
||||
<string name="settings_report_speed_or_pace">Geschwindigkeitsanzeige</string>
|
||||
<string name="settings_report_speed_or_pace_summary_on">Geschwindigkeit wird angezeigt.</string>
|
||||
<string name="settings_report_speed_or_pace_summary_off">Pace wird angezeigt.</string>
|
||||
|
||||
<string name="settings_share_url_only">Nur URL als Einladung zum Teilen senden</string>
|
||||
<string name="settings_share_url_only_summary_on">Beim Teilen mit Freunden wird nur die Karten-URL gesendet.</string>
|
||||
<string name="settings_share_url_only_summary_off">Beim Teilen mit Freunden wird der GPS-Track selbst gesendet.</string>
|
||||
|
||||
<string name="settings_split_frequency">Zerteilungsfrequenz</string>
|
||||
<string name="settings_split_frequency_summary">Längste Dauer oder Entfernung, nach der automatisch ein Marker eingefügt wird.</string>
|
||||
|
||||
<string name="settings_auto_resume_track_timeout">Zeitbegrenzung der Auto-Wiederaufnahme</string>
|
||||
<string name="settings_auto_resume_track_timeout_summary">Maximale Zeit in Minuten, nach der eine abgebrochene Aufzeichnung nach einem Telefonneustart wiederaufgenommen wird.</string>
|
||||
|
||||
<string name="settings_timestamp_track_name">Zeitstempel als Trackname</string>
|
||||
<string name="settings_timestamp_track_name_summary_on">Der Trackname wird aus Datum und Zeit zum Aufzeichnungsbeginn zusammengesetzt.</string>
|
||||
<string name="settings_timestamp_track_name_summary_off">Tracknamen erhalten eine fortlaufende Nummer.</string>
|
||||
|
||||
<string name="pace_label">Pace</string>
|
||||
|
||||
<string name="eclair_required">Wird nur unter Android 2.0 oder höher unterstützt</string>
|
||||
<string name="settings_sensor_type">Sensortyp</string>
|
||||
<string name="settings_sensor_type_summary">Der Typ des zu verbindenden Sensors</string>
|
||||
<string name="settings_heart_rate_ant_sensor_id">Verbindung mit ANT Herzqrequenzmesser aufheben</string>
|
||||
<string name="settings_power_ant_sensor_id">Verbindung mit ANT Kraftmesser aufheben</string>
|
||||
<string name="settings_srm_bridge_ant_sensor_id">Verbindung mit ANT srm bridge aufheben</string>
|
||||
<string name="settings_ant_not_paired">ANT-Sensor nicht verbunden</string>
|
||||
<string name="settings_ant_paired">ANT-Sensor verbunden mit: %d</string>
|
||||
<string name="bluetooth_sensor_title">Bluetooth-Sensor</string>
|
||||
<string name="bluetooth_sensor_summary">Der zu verbindende Bluetoothsensor</string>
|
||||
<string name="settings_modular_stats_display_title">Art der Datenanzeige</string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="settings_backup">Datensicherung (BETA)</string>
|
||||
<string name="settings_sd_backup">SD-Karten-Sicherung</string>
|
||||
<string name="settings_backup_to_sd">Jetzt sichern</string>
|
||||
<string name="settings_backup_to_sd_summary">Eine Kopie aller Deiner Tracks und Einstellungen auf die SD-Karte schreiben</string>
|
||||
<string name="settings_restore_from_sd">Jetzt wiederherstellen</string>
|
||||
<string name="settings_restore_from_sd_summary">Alle Tracks und Einstellungen von der SD-Karte holen.</string>
|
||||
<string name="settings_no_backup_while_recording">Während ein Track aufgezeichnet wird, kann nicht mit der Datensicherung gearbeitet werden.</string>
|
||||
|
||||
<string name="restore_overwrites_warning">Eine Wiederherstellung von der SD-Karte ÜBERSCHREIBT alle vorhandenen Tracks und Einstellungen. Willst Du das wirklich?</string>
|
||||
<string name="select_backup_to_restore">Wähle die wiederherzustellende Datensicherung aus</string>
|
||||
<string name="no_backups">Keine Datensicherungen gefunden.</string>
|
||||
<string name="backup_write_progress_message">Schreibe alle Tracks und Einstellungen auf die SD-Karte. Dies kann eine Weile dauern...</string>
|
||||
<string name="backup_import_progress_message">Lese alle Tracks und Einstellungen von der SD-Karte. Dies kann eine Weile dauern...</string>
|
||||
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">GPS-Satelliten</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map">Karte mit Freunden teilen</string>
|
||||
<string name="share_map_subject">Ich möchte gerne eine Karte mit Dir teilen.</string>
|
||||
<string name="share_map_body_format">Vielleicht interessierst Du Dich für diese Karte:
|
||||
|
||||
%s</string>
|
||||
<string name="send_track_subject">Ich möchte einen GPS-Track mit Dir teilen</string>
|
||||
|
||||
%s</string>
|
||||
<string name="send_track_subject">Ich möchte einen GPS-Track mit Dir teilen</string>
|
||||
<string name="send_track_body_format">Vielleicht interessierst Du Dich für diese Track:
|
||||
|
||||
|
||||
%s.</string>
|
||||
<string name="share_track">Track mit Freunden teilen</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Öffentlich</string>
|
||||
<string name="unlisted_map">Nicht in Suchergebnissen enthalten.</string>
|
||||
<string name="mapslist_no_maps_available">Du hast noch keine Karten.</string>
|
||||
|
||||
<!-- Statistics View -->
|
||||
<!-- Average Moving -->
|
||||
<string name="average_moving_speed_label">Durchschnitt in Bew.</string>
|
||||
<string name="average_moving_pace_label">Durchschnitt in Bew.</string>
|
||||
|
||||
<!-- Average -->
|
||||
<string name="average_speed_label">Durchschnittsgeschw.</string>
|
||||
<string name="average_pace_label">Durchschnittstempo</string>
|
||||
|
||||
<string name="elevation_chart_name">Höhenprofil</string>
|
||||
<string name="elevation_gain_label">Höhengewinn</string>
|
||||
<string name="elevation_label">Höhe</string>
|
||||
<string name="latitude_label">Breitengrad</string>
|
||||
<string name="longitude_label">Längengrad</string>
|
||||
|
||||
<!-- Min -->
|
||||
<string name="min_elevation_label">Niedrigste Höhenlage</string>
|
||||
<string name="min_grade_label">Minimale Steigung</string>
|
||||
<string name="min_pace_label">Schnellstes Tempo</string>
|
||||
|
||||
<!-- Max -->
|
||||
<string name="max_elevation_label">Höchste Höhenlage</string>
|
||||
<string name="max_grade_label">Maximale Steigung</string>
|
||||
<string name="max_speed_label">Max. Geschwindigkeit</string>
|
||||
|
||||
<string name="loading_track">Lade Track…</string>
|
||||
|
||||
<!-- Chart Settings -->
|
||||
<string name="chart_settings">Diagram Einstellungen</string>
|
||||
<!-- X Axis -->
|
||||
<string name="x_axis">X Achse</string>
|
||||
<string name="by_distance">Nach Entfernung</string>
|
||||
<string name="by_time">Nach Zeit</string>
|
||||
|
||||
<!-- Y Axis -->
|
||||
<string name="y_axis">Y Achse</string>
|
||||
|
||||
<!-- Units -->
|
||||
<!-- Time -->
|
||||
<string name="hour">Stunde</string>
|
||||
<string name="hours">Stunden</string>
|
||||
<string name="hr">Std</string>
|
||||
<string name="minute">Minute</string>
|
||||
<string name="minutes">Minuten</string>
|
||||
<string name="second">Sekunde</string>
|
||||
<string name="seconds">Sekunden</string>
|
||||
|
||||
<!-- Distance -->
|
||||
<string name="feet">Fuß</string>
|
||||
<!-- Statistics View -->
|
||||
<!-- Average Moving -->
|
||||
<string name="average_moving_speed_label">Durchschnitt in Bew.</string>
|
||||
<string name="average_moving_pace_label">Pace in Bew.</string>
|
||||
|
||||
<!-- Average -->
|
||||
<string name="average_speed_label">Durchschnittsgeschw.</string>
|
||||
<string name="average_pace_label">Durchschnitts-Pace</string>
|
||||
|
||||
<string name="elevation_chart_name">Höhenprofil</string>
|
||||
<string name="elevation_gain_label">Höhengewinn</string>
|
||||
<string name="elevation_label">Höhe</string>
|
||||
<string name="latitude_label">Breitengrad</string>
|
||||
<string name="longitude_label">Längengrad</string>
|
||||
|
||||
<!-- Min -->
|
||||
<string name="min_elevation_label">Niedrigste Höhenlage</string>
|
||||
<string name="min_grade_label">Minimale Steigung</string>
|
||||
<string name="min_pace_label">Minimaler Pace</string>
|
||||
|
||||
<!-- Max -->
|
||||
<string name="max_elevation_label">Höchste Höhenlage</string>
|
||||
<string name="max_grade_label">Maximale Steigung</string>
|
||||
<string name="max_speed_label">Max. Geschwindigkeit</string>
|
||||
|
||||
<string name="loading_track">Lade Track…</string>
|
||||
|
||||
<!-- Chart Settings -->
|
||||
<string name="chart_settings">Diagramm-Einstellungen</string>
|
||||
<!-- X Axis -->
|
||||
<string name="x_axis">X-Achse</string>
|
||||
<string name="by_distance">Nach Entfernung</string>
|
||||
<string name="by_time">Nach Zeit</string>
|
||||
|
||||
<!-- Y Axis -->
|
||||
<string name="y_axis">Y-Achse</string>
|
||||
|
||||
<!-- Units -->
|
||||
<!-- Time -->
|
||||
<string name="hour">Stunde</string>
|
||||
<string name="hours">Stunden</string>
|
||||
<string name="hr">Std</string>
|
||||
<string name="minute">Minute</string>
|
||||
<string name="minutes">Minuten</string>
|
||||
<string name="second">Sekunde</string>
|
||||
<string name="seconds">Sekunden</string>
|
||||
|
||||
<!-- Distance -->
|
||||
<string name="kilometers_long">Kilometer</string>
|
||||
<string name="miles_long">Meilen</string>
|
||||
|
||||
<string name="feet">Fuß</string>
|
||||
<string name="miles_long">Meilen</string>
|
||||
|
||||
<!-- Speed and Pace -->
|
||||
<string name="kilometer_per_hour_long">Kilometer pro Stunde</string>
|
||||
<string name="per_kilometer">pro Kilometer</string>
|
||||
<string name="per_kilometer">pro Kilometer</string>
|
||||
<string name="mile_per_hour_long">Meilen pro Stunde</string>
|
||||
<string name="per_mile">pro meile</string>
|
||||
|
||||
<!-- Stats Labels -->
|
||||
<string name="moving_time_label">Zeit in Bewegung</string>
|
||||
<string name="total_time_label">Gesamtzeit</string>
|
||||
<string name="time_label">Zeit</string>
|
||||
<string name="sd_unavail">SD-Karte nicht verfügbar</string>
|
||||
<string name="speed">Geschwindigkeit</string>
|
||||
<string name="start_trip">Sie müssen erst eine Strecke zurücklegen.</string>
|
||||
<string name="statistics">Statistik</string>
|
||||
<string name="total_distance_label">Gesamtentfernung</string>
|
||||
<string name="distance_label">Entfernung</string>
|
||||
<string name="waiting">Bitte warten…</string>
|
||||
|
||||
<!-- End User License Agreement -->
|
||||
<string name="eula_title">Lizenzvereinbarung für Endverbraucher</string>
|
||||
<string name="accept">Akzeptieren</string>
|
||||
<string name="decline">Ablehnen</string>
|
||||
|
||||
<!-- About -->
|
||||
<string name="about">Über</string>
|
||||
<string name="help">Hilfe</string>
|
||||
<string name="about_email">Unterstützung</string>
|
||||
<string name="per_mile">pro Meile</string>
|
||||
|
||||
<!-- Stats Labels -->
|
||||
<string name="moving_time_label">Zeit in Bewegung</string>
|
||||
<string name="total_time_label">Gesamtzeit</string>
|
||||
<string name="time_label">Zeit</string>
|
||||
<string name="sd_unavail">SD-Karte nicht verfügbar</string>
|
||||
<string name="speed">Geschwindigkeit</string>
|
||||
<string name="start_trip">Du musst erst eine Aufzeichnung beginnen.</string>
|
||||
<string name="statistics">Statistik</string>
|
||||
<string name="total_distance_label">Gesamtentfernung</string>
|
||||
<string name="distance_label">Entfernung</string>
|
||||
<string name="power">Kraft</string>
|
||||
<string name="cadence">Kadenz</string>
|
||||
<string name="heart_rate">Herzfrequenz</string>
|
||||
<string name="max_heart_rate">Höchste Herzfrequenz</string>
|
||||
<string name="waiting">Bitte warten…</string>
|
||||
|
||||
<!-- End User License Agreement -->
|
||||
<string name="eula_title">Lizenzvereinbarung für Endverbraucher</string>
|
||||
<string name="accept">Akzeptieren</string>
|
||||
<string name="decline">Ablehnen</string>
|
||||
|
||||
<!-- About -->
|
||||
<string name="about">Über</string>
|
||||
<string name="help">Hilfe</string>
|
||||
<string name="about_support">Unterstützung:</string>
|
||||
<string name="about_privacy">Datenschutz:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Senden an…</string>
|
||||
<string name="sendtogoogle_send_now">Jetzt senden</string>
|
||||
<string name="sendtogoogle_create_new_map">Neue Karte erstellen</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Eine Karte auswählen</string>
|
||||
<string name="sendtogoogle_send_stats">Trackstatistik senden</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Statistik und Punkte senden</string>
|
||||
|
||||
<!-- Getting the account to upload to. -->
|
||||
<string name="no_account_found_title">Kein Konto vorhanden</string>
|
||||
<string name="no_account_found">Kein Konto gefunden um Tracks zu versenden.</string>
|
||||
<string name="choose_account_title">Wählen Sei ein Konto</string>
|
||||
|
||||
<!-- SD card -->
|
||||
<string name="io_no_external_storage_found">Keine externes Speichermedium verfügbar. Stellen Sie sicher, dass eine SD-Karte vorhanden ist und nicht bereits von einem Computer darauf zugegriffen wird.</string>
|
||||
<string name="io_write_failed">Die Datei kann nicht geschrieben werden.</string>
|
||||
<string name="io_create_dir_failed">Das Verzeichnis auf der SD-Karte kann nicht erstellt werden.</string>
|
||||
<string name="io_write_finished">Der Track wurde auf die SD-Karte geschrieben.</string>
|
||||
|
||||
<!-- VersionChecker -->
|
||||
<string name="version_check_title">Suche nach neuer Version</string>
|
||||
<string name="version_check_upgrade_button">Jetzt aktualisieren</string>
|
||||
<string name="version_check_continue_button">Fortfahren ohne zu aktualisieren</string>
|
||||
<string name="upgrade_required">Ihre Version von %1$s funktioniert möglicherweise nicht mehr richtig und wird nicht mehr unterstützt. Bitte aktualisieren Sie %1$s.</string>
|
||||
<string name="upgrade_recommended">Ihre Version von %1$s funktioniert möglicherweise nicht mehr richtig. Sie können sie jetzt aktualisieren, oder auf sie auf eigene Gefahr weiterverwenden. Einige Funktionen wie Datenaustausch mit Google-Diensten wird möglicherweise nicht mehr funktionieren, solange Sie die Software nicht aktualisieren.</string>
|
||||
<string name="upgrade_available">Eine neue Version von %1$s ist jetzt verfügbar. Sie können Ihre aktuelle Version ohne Probleme weiterverwenden, aber um die neuesten Funktionen in Anspruch nehmen zu können, müssen sie die Software aktualisieren.</string>
|
||||
|
||||
<!-- Welcome -->
|
||||
<string name="welcome">Willkommen</string>
|
||||
<string name="welcome_about">Über My Tracks</string>
|
||||
|
||||
<!-- Announcement -->
|
||||
<string name="announce_no_distance">My Tracks keine Entfernung</string>
|
||||
<string name="sendtogoogle_google_docs">Google Text & Tabellen</string>
|
||||
<string name="sendtogoogle_send_now">Jetzt senden</string>
|
||||
<string name="sendtogoogle_send_stats">Trackstatistik senden</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Statistik und Punkte senden</string>
|
||||
|
||||
<!-- Getting the account to upload to. -->
|
||||
<string name="no_account_found_title">Kein Konto vorhanden</string>
|
||||
<string name="no_account_found">Kein Konto gefunden, um Tracks zu versenden.</string>
|
||||
<string name="choose_account_title">Wähle ein Konto</string>
|
||||
|
||||
<!-- SD card -->
|
||||
<string name="io_no_external_storage_found">Keine externes Speichermedium verfügbar. Stelle sicher, dass eine SD-Karte vorhanden ist und nicht bereits von einem Computer darauf zugegriffen wird.</string>
|
||||
<string name="io_write_failed">Die Datei kann nicht geschrieben werden.</string>
|
||||
<string name="io_read_failed">Die Datei konnte nicht gelesen werden.</string>
|
||||
<string name="io_create_dir_failed">Das Verzeichnis auf der SD-Karte kann nicht erstellt werden.</string>
|
||||
<string name="io_write_finished">Der Track wurde auf die SD-Karte geschrieben.</string>
|
||||
<string name="io_read_finished">Lesen von der SD-Karte beendet.</string>
|
||||
|
||||
<!-- VersionChecker -->
|
||||
<string name="version_check_title">Suche nach neuer Version</string>
|
||||
<string name="version_check_upgrade_button">Jetzt aktualisieren</string>
|
||||
<string name="version_check_continue_button">Fortfahren, ohne zu aktualisieren</string>
|
||||
<string name="upgrade_required">Deine Version von %1$s funktioniert möglicherweise nicht mehr richtig und wird nicht mehr unterstützt. Bitte aktualisiere %1$s.</string>
|
||||
<string name="upgrade_recommended">Deine Version von %1$s funktioniert möglicherweise nicht mehr richtig. Du kannst sie jetzt aktualisieren, oder auf sie auf eigene Gefahr weiterverwenden. Einige Funktionen wie Datenaustausch mit Google-Diensten werden möglicherweise nicht mehr funktionieren, solange Du die Software nicht aktualisierst.</string>
|
||||
<string name="upgrade_available">Eine neue Version von %1$s ist jetzt verfügbar. Du kannst Deine installierte Version ohne Probleme weiterverwenden, aber um die neuesten Funktionen in Anspruch nehmen zu können, musst Du die Software aktualisieren.</string>
|
||||
|
||||
<!-- Welcome -->
|
||||
<string name="welcome">Willkommen</string>
|
||||
<string name="welcome_read_later">OK</string>
|
||||
<string name="welcome_about">Über My Tracks</string>
|
||||
|
||||
<!-- Announcement -->
|
||||
<string name="announce_no_distance">My Tracks keine Entfernung</string>
|
||||
<!-- Format:
|
||||
$1 : Distance label
|
||||
$2 : Distance value (5)
|
||||
@@ -349,6 +383,42 @@ limitations under the License.
|
||||
$4 : Time description (10 minutes 5 seconds)
|
||||
$5 : Speed value (5.6) : Pace value (5 minutes 6 seconds)
|
||||
$6 : Speed units (mph) : Pace units (per mile)
|
||||
-->
|
||||
<string name="announce_template">My Tracks %1$s %2$.2f %3$s in %4$s mit %5$s %6$s</string>
|
||||
</resources>
|
||||
-->
|
||||
<string name="announce_template">My Tracks %1$s %2$.2f %3$s in %4$s mit %5$s %6$s</string>
|
||||
|
||||
<!-- Check Units -->
|
||||
<string name="check_units_title">Einheitenbenachrichtigung</string>
|
||||
<string name="check_units_message">Voreingestellt sind metrische Einheiten. Willst Du diese Einstellung ändern?</string>
|
||||
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<string name="bluetooth_options">Bluetooth-Einstellungen</string>
|
||||
<string name="bluetooth_pairing">Geräteverbindung</string>
|
||||
<string name="bluetooth_pairing_summary">Öffnet Androids Bluetooth-Einstellungen, um Geräte zu verbinden.</string>
|
||||
<string name="sensor_options">Sensor-Einstellungen</string>
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">Verbunden mit %s</string>
|
||||
<string name="bluetooth_connecting">Verbinde mit Bluetooth-Sensor ...</string>
|
||||
<string name="bluetooth_not_connected">Bluetooth-Sensor nicht verbunden.</string>
|
||||
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_data_time">Uhrzeit</string>
|
||||
<string name="power_meter_enabled">Kraftmesser aktiviert</string>
|
||||
<string name="heart_rate_monitor_enabled">Herzfrequenzmessung aktiviert</string>
|
||||
<string name="no_sensor_manager">Keine Sensoren verfügbar</string>
|
||||
<string name="enabled">Aktiviert</string>
|
||||
<string name="connecting">Verbinde...</string>
|
||||
<string name="connected">Verbunden</string>
|
||||
<string name="disconnected">Getrennt</string>
|
||||
<string name="no_sensor_service">Kein Sensor-Dienst</string>
|
||||
<string name="searching">Suche...</string>
|
||||
<string name="sending">Sende...</string>
|
||||
|
||||
<!-- Manifest description (not seen inside the app) -->
|
||||
<string name="notification_permission_label">Track-Aufzeichnungs-Benachrichtigungen empfangen</string>
|
||||
<string name="read_tracks_permission_label">Aufgezeichnete Trackdaten lesen</string>
|
||||
<string name="write_tracks_permission_label">Aufgezeichnete Trackdaten schreiben, Starten/Anhalten des Aufzeichnens von Tracks</string>
|
||||
<string name="notification_permission_description">Werde benachrichtigt, wenn die Aufzeichnung eines Tracks beginnt oder anhält.</string>
|
||||
<string name="read_tracks_permission_description">Ermöglicht das Lesen von Trackdaten wie Messpunkten oder Wegpunkten.</string>
|
||||
<string name="write_tracks_permission_description">Ermöglicht das Schreiben von Trackdaten wie beim Starten der Aufzeichnung oder beim Hinzufügen von Wegpunkten.</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,153 @@
|
||||
<?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>
|
||||
<!-- Other non-preference arrays -->
|
||||
<array name="activity_types">
|
||||
<item>desconocido</item>
|
||||
<item>tipo mixto</item>
|
||||
<item>otro</item>
|
||||
|
||||
<item>correr</item>
|
||||
<item>correr en calle</item>
|
||||
<item>correr en pista</item>
|
||||
<item>correr en senda</item>
|
||||
<item>caminar</item>
|
||||
<item>caminar rápido</item>
|
||||
<item>excursión</item>
|
||||
<item>excursión por sendas</item>
|
||||
<item>excursión campo a través</item>
|
||||
<item>escalando</item>
|
||||
|
||||
<item>bicicleta</item>
|
||||
<item>bicicleta de carreras</item>
|
||||
<item>bicicleta de montaña</item>
|
||||
<item>bicicleta de pista</item>
|
||||
|
||||
<item>patinando</item>
|
||||
<item>patinando inline</item>
|
||||
<item>skate boarding</item>
|
||||
|
||||
<item>caminata sobre nieve</item>
|
||||
<item>esquiando</item>
|
||||
<item>snow boarding</item>
|
||||
<item>trineo</item>
|
||||
<item>navegando sobre hielo</item>
|
||||
|
||||
<item>navegando</item>
|
||||
<item>en canoa</item>
|
||||
<item>en kayak</item>
|
||||
<item>remo</item>
|
||||
<item>bote de motor</item>
|
||||
<item>transbordador</item>
|
||||
<item>barco teledirigido</item>
|
||||
<item>surfeando</item>
|
||||
<item>wind surfing</item>
|
||||
<item>kite surfing</item>
|
||||
<item>esquí aquático</item>
|
||||
<item>wake boarding</item>
|
||||
|
||||
<item>avión</item>
|
||||
<item>hidroavión</item>
|
||||
<item>avión comercial</item>
|
||||
<item>helicóptero</item>
|
||||
<item>globo aerostático</item>
|
||||
<item>dirigible</item>
|
||||
<item>avión teledirigido</item>
|
||||
<item>helicóptero teledirigido</item>
|
||||
<item>paracaidismo</item>
|
||||
<item>planeador</item>
|
||||
<item>hang gliding</item>
|
||||
<item>para gliding</item>
|
||||
|
||||
<item>montando</item>
|
||||
<item>montando caballo</item>
|
||||
<item>montando burro</item>
|
||||
|
||||
<item>conduciendo coche</item>
|
||||
<item>conduciendo autobús</item>
|
||||
<item>tren</item>
|
||||
<item>moto</item>
|
||||
<item>moto cross</item>
|
||||
<item>ATV</item>
|
||||
|
||||
<item>navegando sobre tierra</item>
|
||||
<item>frisbee</item>
|
||||
<item>ultimate frisbee</item>
|
||||
</array>
|
||||
|
||||
<array name="waypoint_types">
|
||||
<item>cajero automático</item>
|
||||
<item>banco</item>
|
||||
<item>bar</item>
|
||||
<item>barbacoa</item>
|
||||
<item>edificio</item>
|
||||
<item>parada de autobús</item>
|
||||
<item>café</item>
|
||||
<item>fogata</item>
|
||||
<item>campamento</item>
|
||||
<item>iglesia</item>
|
||||
<item>café</item>
|
||||
<item>tienda de abarrotes</item>
|
||||
<item>agua potable</item>
|
||||
<item>derrumbamiento</item>
|
||||
<item>transbordador</item>
|
||||
<item>chimenea</item>
|
||||
<item>estación de bomberos</item>
|
||||
<item>pesca</item>
|
||||
<item>gasolinera</item>
|
||||
<item>campo de golf</item>
|
||||
<item>tienda de abarrotes</item>
|
||||
<item>salon de belleza</item>
|
||||
<item>puerto</item>
|
||||
<item>senda</item>
|
||||
<item>hotel</item>
|
||||
<item>casa</item>
|
||||
<item>información</item>
|
||||
<item>intersección</item>
|
||||
<item>buzón de correos</item>
|
||||
<item>mercado</item>
|
||||
<item>punto de encuentro</item>
|
||||
<item>ópera</item>
|
||||
<item>aparcamiento</item>
|
||||
<item>oficina de correos</item>
|
||||
<item>bache</item>
|
||||
<item>comisaría de policía</item>
|
||||
<item>cruce de vía de tren</item>
|
||||
<item>restaurante</item>
|
||||
<item>mall</item>
|
||||
<item>lugar de interés</item>
|
||||
<item>tienda</item>
|
||||
<item>piscina</item>
|
||||
<item>teléfono</item>
|
||||
<item>teatro</item>
|
||||
<item>baño</item>
|
||||
<item>información turística</item>
|
||||
<item>túnel</item>
|
||||
<item>árbol</item>
|
||||
<item>cascada</item>
|
||||
<item>fuente de agua</item>
|
||||
<item>camino</item>
|
||||
</array>
|
||||
|
||||
<array name="sensor_type_options">
|
||||
<item>Ninguna</item>
|
||||
<item>ANT+ Sensores</item>
|
||||
<item>SRM ANT+ Puente</item>
|
||||
<item>Zephyr Bluetooth</item>
|
||||
</array>
|
||||
|
||||
</resources>
|
||||
@@ -0,0 +1,131 @@
|
||||
<?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>
|
||||
<!-- Used by the Menu -->
|
||||
<string name="list_markers">Señales</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
|
||||
<!-- Status messages -->
|
||||
|
||||
<!-- Progress dialog -->
|
||||
|
||||
<!-- Used by DeleteAllDataHandler -->
|
||||
|
||||
<!-- Text and links when uploading to Google Fusion Tables -->
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
|
||||
<!-- Used by the track recording service -->
|
||||
|
||||
<!-- Common -->
|
||||
<string name="license">Licencia</string>
|
||||
<string name="close">Cerrar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="save">Guardar</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_send_to_fusiontables">Enviar a Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">Enviar a nueva Google Fusion Table</string>
|
||||
<string name="tracklist_save_as_csv">Guardar en archivo CSV</string>
|
||||
<string name="tracklist_save_as_tcx">Guardar en archivo TCX</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Enviar a Google Fusion Tables</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_share_csv_file">Un archivo CSV</string>
|
||||
<string name="tracklist_share_tcx_file">Un archivo TCX</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
|
||||
<!-- MyTracks Details -->
|
||||
|
||||
<!-- MyTracks Waypoint Details -->
|
||||
|
||||
<!-- MyTracks Settings -->
|
||||
<string name="settings_not_available_summary">No está disponible en su versión de Android</string>
|
||||
|
||||
|
||||
<string name="settings_report_speed_or_pace">Mostrar velocidad</string>
|
||||
|
||||
<!-- Backups -->
|
||||
|
||||
<!-- MyTracksSky -->
|
||||
|
||||
<!-- Sharing -->
|
||||
|
||||
<!-- Visibility -->
|
||||
|
||||
<!-- Statistics View -->
|
||||
<!-- Average Moving -->
|
||||
|
||||
<!-- Average -->
|
||||
|
||||
<!-- Min -->
|
||||
|
||||
<!-- Max -->
|
||||
|
||||
<!-- Chart Settings -->
|
||||
<!-- X Axis -->
|
||||
|
||||
<!-- Y Axis -->
|
||||
|
||||
<!-- Units -->
|
||||
<!-- Time -->
|
||||
|
||||
<!-- Distance -->
|
||||
|
||||
<!-- Speed and Pace -->
|
||||
|
||||
<!-- Sensors -->
|
||||
|
||||
<!-- Stats Labels -->
|
||||
|
||||
<!-- End User License Agreement -->
|
||||
|
||||
<!-- About -->
|
||||
<string name="about_version">Versión:</string>
|
||||
<string name="about_support">Soporte:</string>
|
||||
<string name="about_privacy">Privacidad:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
|
||||
<!-- Getting the account to upload to. -->
|
||||
<string name="no_account_found_title">No se ha encontrado la cuenta</string>
|
||||
<string name="no_account_found">No se ha encontrado la cuenta a la que subir los recorridos.</string>
|
||||
<string name="choose_account_title">Elegir cuenta</string>
|
||||
|
||||
<!-- SD card -->
|
||||
<string name="io_read_failed">No es posible leer del fichero.</string>
|
||||
<string name="io_write_finished">Grabación a tarjeta SD terminada.</string>
|
||||
<string name="io_read_finished">Lectura de tarjeta SD terminada.</string>
|
||||
|
||||
<!-- VersionChecker -->
|
||||
|
||||
<!-- Welcome -->
|
||||
|
||||
<!-- Announcement -->
|
||||
<!-- Format:
|
||||
$1 : Distance label
|
||||
$2 : Distance value (5)
|
||||
$3 : Distance units (mi, km)
|
||||
$4 : Time description (10 minutes 5 seconds)
|
||||
$5 : Speed value (5.6) : Pace value (5 minutes 6 seconds)
|
||||
$6 : Speed units (mph) : Pace units (per mile)
|
||||
-->
|
||||
|
||||
</resources>
|
||||
@@ -32,7 +32,7 @@ limitations under the License.
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Ningún administrador de ubicación fue hallado en este aparato! </string>
|
||||
<string name="error_no_gps_location_provider">Ningún proveedor GPS de ubicación fue hallado en este aparato.</string>
|
||||
<string name="error_sending_to_mymap">Hubo un error al mandar su recorrido a Google My Map. Por favor inténtelo de nuevo más tarde.</string>
|
||||
<string name="error_sending_to_fusiontables">Hubo un error al mandar su recorrido a Google Fusion Tables. Por favor inténtelo de nuevo más tarde.</string>
|
||||
<string name="error_sending_to_docs">Hubo un error al mandar su recorrido a Google Docs. Por favor inténtelo de nuevo más tarde.</string>
|
||||
<string name="error_unable_to_start_recording">No pude empezar a grabar. Por favor inténtelo de nuevo. </string>
|
||||
<string name="error_unable_to_stop_recording">No pude dejar de grabar. Por favor inténtelo de nuevo.</string>
|
||||
@@ -47,11 +47,10 @@ limitations under the License.
|
||||
<string name="wait_for_fix">Esperando una ubicación mas exacta del GPS. Asegúrese que el cielo sea visible.</string>
|
||||
<string name="status_now_recording">Grabando un nuevo recorrido.</string>
|
||||
<string name="status_stopped_recording">Grabacíon interrumpida.</string>
|
||||
<string name="status_new_mymap_has_been_created">Un mapa Google My Map nuevo has sido creado en maps.google.com.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">Un mapa Google Fusion Tables nuevo has sido creado en google.com/fusiontables.</string>
|
||||
<string name="status_tracks_have_been_uploaded">Su recorrido ha sido enviado a maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Su recorrido ha sido enviado a una nueva hoja de cálculo en docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Su recorrido ha sido enviado a docs.google.com.</string>
|
||||
<string name="status_mymap_info">A veces nuevos recorridos pueden tardar algunos minutos en aparecer.</string>
|
||||
<string name="status_enable_gps">Por favor presione aquí para ir al menú de Seguridad y Ubicación y asegúrese que el GPS esté habilitado. Presione el botón de regreso para regresar.</string>
|
||||
<string name="status_approximate_location">Nota: Una ubicación aproximada es mostrada, basada en informacion de torres de telefonía celular y red WIFI.</string>
|
||||
<string name="status_no_location">La ubicación actual no puede ser determinada. Habilite más fuentes de datos (vea configuraciones de Seguridad y Ubicación) y asegúrese que el cielo sea visible. Inténtelo mas tarde.</string>
|
||||
@@ -63,11 +62,11 @@ limitations under the License.
|
||||
<string name="progress_message">Enviando su recorrido a Google.</string>
|
||||
<string name="progress_message_reading_track">Leyendo recorrido...</string>
|
||||
<string name="progress_message_preparing_track">Preparando recorrido...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Autenticando con Google Maps...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">Autenticando con Google Fusion Tables...</string>
|
||||
<string name="progress_message_authenticating_docs">Autenticando con Google Docs...</string>
|
||||
<string name="progress_message_sending_docs">Enviando recorrido a Google Docs...</string>
|
||||
<string name="progress_message_sending_mymaps">Enviando recorrido a Google Maps...</string>
|
||||
<string name="progress_message_creating_map">Creando nuevo mapa My Map...</string>
|
||||
<string name="progress_message_sending_fusiontables">Enviando recorrido a Google Fusion Tables...</string>
|
||||
<string name="progress_message_creating_fusiontable">Creando nuevo mapa Fusion Tables...</string>
|
||||
<string name="import_progress_message">Importando un recorrido GPS. Esto puede tardar.</string>
|
||||
<string name="write_progress_message">Escribiendo archivo a tarjeta SD. Esto puede tardar.</string>
|
||||
<string name="progress_message_updating_track">Actualizando estadísticas del recorrido...</string>
|
||||
@@ -78,10 +77,8 @@ limitations under the License.
|
||||
<string name="track_will_be_permanently_deleted">El recorrido y sus señales serán borrados permanentemente de este teléfono.</string>
|
||||
<string name="marker_will_be_permanently_deleted">La señal será borrada permanentemente de este teléfono.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">"Creado por My Tracks en Android."</string>
|
||||
<string name="my_map_link">"Creado por <a href='http://mytracks.appspot.com'>My Tracks</a> en Android."</string>
|
||||
<string name="new_map_title">Nuevo mapa</string>
|
||||
<!-- Text and links when uploading to Google Fusion Tables -->
|
||||
<string name="fusiontable_link">Creado por <a href=\'http://mytracks.appspot.com\'>My Tracks</a> en Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Puntos</string>
|
||||
@@ -98,6 +95,7 @@ limitations under the License.
|
||||
<string name="yes">Sí</string>
|
||||
<string name="success">Éxito</string>
|
||||
<string name="waypoint">Señal de recorrido</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Inicio)</string>
|
||||
@@ -105,8 +103,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Mostrar</string>
|
||||
<string name="tracklist_send_to_mymaps">Enviar a Google My Maps</string>
|
||||
<string name="tracklist_send_to_new_mymap">Enviar a nuevo Google My Map</string>
|
||||
<string name="tracklist_send_to_fusiontables">Enviar a Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">Enviar a nueva Google Fusion Table</string>
|
||||
<string name="tracklist_send_to_docs">Enviar a Google Docs</string>
|
||||
<string name="tracklist_send_to_google">Enviar a Google...</string>
|
||||
<string name="tracklist_delete_track">Borrar del teléfono...</string>
|
||||
@@ -114,7 +112,7 @@ limitations under the License.
|
||||
<string name="tracklist_write_to_sd">Guardar en tarjeta SD...</string>
|
||||
<string name="tracklist_save_as_gpx">Guardar en archivo GPX</string>
|
||||
<string name="tracklist_save_as_kml">Guardar en archivo KML</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Enviar a Google My Maps</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Enviar a Google Fusion Tables</string>
|
||||
<string name="tracklist_btn_delete_all">Borrar todos los recorridos</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Exportar todos los recorridos</string>
|
||||
@@ -123,7 +121,6 @@ limitations under the License.
|
||||
<string name="tracklist_all_tracks">Todos los recorridos:"</string>
|
||||
<string name="tracklist_this_track">Este recorrido"</string>
|
||||
<string name="tracklist_share_track">Compartir con amigos..."</string>
|
||||
<string name="tracklist_share_link">Un link a Google My Map"</string>
|
||||
<string name="tracklist_share_gpx_file">Un archivo GPX"</string>
|
||||
<string name="tracklist_share_kml_file">Un archivo KML"</string>
|
||||
<string name="tracklist_clear_map">"Limpiar mapa"</string>
|
||||
@@ -187,39 +184,47 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">Sólo el URL del mapa será enviado al compartir</string>
|
||||
<string name="settings_share_url_only_summary_off">Los contenidos de la pista también serán incluídos al compartir</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Frecuencia de medición de señal</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Tiempo entre grabaciones de la intensidad de la señal del teléfono</string>
|
||||
|
||||
<string name="settings_split_frequency">Dividir frecuencia</string>
|
||||
<string name="settings_split_frequency_summary">Tiempo o distancia máxima para insertar una nueva marca de división</string>
|
||||
<string name="pace_label">Paso</string>
|
||||
|
||||
<string name="settings_auto_resume_track_timeout">Temporizador de auto-reinicio de recorrido</string>
|
||||
<string name="settings_auto_resume_track_timeout_summary">Máximo tiempo en minutos después del cual un recorrido previamente grabado no será reiniciado después de un reinicio del teléfono</string>
|
||||
|
||||
<string name="settings_timestamp_track_name">Hora como nombre de recorrido</string>
|
||||
<string name="settings_timestamp_track_name_summary_on">El nombre por defecto del recorrido será la fecha y hora del inicio del recorrido</string>
|
||||
<string name="settings_timestamp_track_name_summary_off">Los nombre de recorrido tendrán números que se incrementarán en cada nuevo recorrido.</string>
|
||||
|
||||
<string name="eclair_required">Sólo soportado en Android 2.0 o superior</string>
|
||||
<string name="settings_sensor_type">Tipo de sensor</string>
|
||||
<string name="settings_sensor_type_summary">Tipo de sensor al que conectar</string>
|
||||
<string name="settings_heart_rate_ant_sensor_id">Liberar conexión al sensor de corazón ANT</string>
|
||||
<string name="settings_power_ant_sensor_id">Liberar conexión al sensor de energía ANT</string>
|
||||
<string name="settings_srm_bridge_ant_sensor_id">Liberar conexión al sensor puente SRM ANT</string>
|
||||
<string name="settings_ant_not_paired">Sensor ANT no conectado</string>
|
||||
<string name="settings_ant_paired">Sensor ANT conectado con: %d</string>
|
||||
<string name="bluetooth_sensor_title">Sensor Bluetooth</string>
|
||||
<string name="bluetooth_sensor_summary">Sensor Bluetooth al que conectar</string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="settings_sd_backup">Backup en tarjeta SD</string>
|
||||
<string name="settings_backup_to_sd">Hacer backup</string>
|
||||
<string name="settings_backup_to_sd_summary">Hacer una copia total de sus recorridos y configuraciones a la tarjeta SD</string>
|
||||
<string name="settings_restore_from_sd">Restaurar</string>
|
||||
<string name="settings_restore_from_sd_summary">Restaurar todos los recorridos y configuraciones desde la tarjeta SD</string>
|
||||
<string name="settings_no_backup_while_recording">No se pueden manejar backups mientras se está registrando un recorrido.</string>
|
||||
|
||||
<string name="restore_overwrites_warning">Restaurar un backup desde la tarjeta SD SOBREESCRIBIRÁ todos sus recorridos y configuraciones actuales. ¿Está usted seguro?</string>
|
||||
<string name="select_backup_to_restore">Seleccionar el backup para restaurar</string>
|
||||
<string name="no_backups">No se han encontrado backups.</string>
|
||||
<string name="backup_write_progress_message">Guardando todos los recorridos y configuraciones a la tarjeta SD. Esto puede llevar un rato...</string>
|
||||
<string name="backup_import_progress_message">Leyendo todos los recorridos y configuraciones desde la tarjeta SD. Esto puede llevar un rato...</string>
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">Satélites GPS</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">Elija un mapa de su cuenta:</string>
|
||||
<string name="create_new_map">Crear mapa nuevo...</string>
|
||||
<string name="map_list_title">Enviar a Google My Maps</string>
|
||||
<string name="maps_list_loading">Cargando mapas...</string>
|
||||
<string name="maps_list_failed">Sus mapas no pudieron ser cargados en este momento!</string>
|
||||
<string name="open_map">Seleccione este mapa</string>
|
||||
<string name="edit_map_details">Editar detalles del mapa</string>
|
||||
<string name="share_map">Compartir mapa con amigos</string>
|
||||
<string name="share_track">Compartir recorrido con amigos</string>
|
||||
<string name="delete_map">Borrar mapa de su cuenta</string>
|
||||
<string name="map_title">Título del mapa:</string>
|
||||
<string name="map_description">Descripción del mapa:</string>
|
||||
<string name="map_searchable_edit">Permitir que este mapa y su contenido sean mostrados en resultados de búsqueda</string>
|
||||
<string name="map_not_searchable_edit">No permitir que este mapa y su contenido sean mostrados en resultados de búsqueda, pero permitir acceso directo mediante su URL</string>
|
||||
<string name="map_searchable">Este mapa y su contenido serán mostrados en resultados de búsqueda</string>
|
||||
<string name="map_not_searchable">No mostrar ni este mapa ni sus contenidos en resultados de búsqueda, pero permitir acceso directo mediante su URL</string>
|
||||
<string name="close">Cerrar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="save">Guardar</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map">Compartir mapa con amigos</string>
|
||||
<string name="share_map_subject">Me gustaría compartir un mapa contigo</string>
|
||||
<string name="share_map_body_format">Creo que este mapa pudiera interesarte:
|
||||
|
||||
@@ -228,6 +233,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">Creo que este recorrido pudiera interesarte.
|
||||
|
||||
Para ver este recorrido usa Google Earth o algún otro software de mapeo.</string>
|
||||
<string name="share_track">Compartir recorrido con amigos</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Público</string>
|
||||
@@ -301,6 +307,10 @@ limitations under the License.
|
||||
<string name="total_distance_label">Distancia total</string>
|
||||
<string name="distance_label">Distancia</string>
|
||||
<string name="waiting">Esperando...</string>
|
||||
<string name="power">Potencia</string>
|
||||
<string name="cadence">Cadencia</string>
|
||||
<string name="heart_rate">Ritmo cardíaco</string>
|
||||
<string name="max_heart_rate">Máx ritmo cardíaco</string>
|
||||
|
||||
<!-- End User License Agreement -->
|
||||
<string name="eula_title">Contrato de Licencia de Usuario Final</string>
|
||||
@@ -310,16 +320,12 @@ limitations under the License.
|
||||
<!-- About -->
|
||||
<string name="about">Sobre</string>
|
||||
<string name="help">Ayuda</string>
|
||||
<string name="about_email">Soporte técnico</string>
|
||||
|
||||
<string name="about_team">Equipo:</string>
|
||||
<string name="about_support">Soporte técnico:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Enviar a...</string>
|
||||
<string name="sendtogoogle_send_now">Enviar ahora</string>
|
||||
<string name="sendtogoogle_create_new_map">Crear un nuevo mapa</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Escoja un mapa existente</string>
|
||||
<string name="sendtogoogle_send_stats">Enviar estadísticas de recorrido</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Enviar estadísticas y puntos</string>
|
||||
|
||||
@@ -352,5 +358,41 @@ limitations under the License.
|
||||
$6 : Speed units (mph) : Pace units (per mile)
|
||||
-->
|
||||
<string name="announce_template">My Tracks %1$s %2$.2f %3$s en %4$s a %5$s %6$s</string>
|
||||
</resources>
|
||||
|
||||
<!-- Check Units -->
|
||||
<string name="check_units_title">Aviso de unidades de medida</string>
|
||||
<string name="check_units_message">Por defecto las unidades son métricas. ¿Quiere cambiar la configuración?</string>
|
||||
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<string name="bluetooth_options">Opciones Bluetooth</string>
|
||||
<string name="bluetooth_pairing">Conexión de dispositivos</string>
|
||||
<string name="bluetooth_pairing_summary">Abrir la configuración Bluetooth de Android para conectar un dispositivo</string>
|
||||
<string name="sensor_bluetooth_options_key">Sensor Bluetooth activado</string>
|
||||
<string name="sensor_options">Opciones del sensor</string>
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">Conectado a %s</string>
|
||||
<string name="bluetooth_connecting">Sensor Bluetooth conectando ...</string>
|
||||
<string name="bluetooth_not_connected">Sensor Bluetooth no conectado</string>
|
||||
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_data_time">Hora de los datos del sensor</string>
|
||||
<string name="power_meter_enabled">Sensor de batería activado</string>
|
||||
<string name="heart_rate_monitor_enabled">Monitor de ritmo cardíaco activado</string>
|
||||
<string name="no_sensor_manager">No hay un gestor de sensores</string>
|
||||
<string name="enabled">Activado</string>
|
||||
<string name="connecting">Conectando</string>
|
||||
<string name="connected">Conectado</string>
|
||||
<string name="disconnected">Desconectando</string>
|
||||
<string name="no_sensor_service">No hay un servicio de sensores</string>
|
||||
<string name="searching">Buscando</string>
|
||||
<string name="sending">Enviando</string>
|
||||
|
||||
<!-- Manifest description (not seen inside the app) -->
|
||||
<string name="notification_permission_label">recibir avisos de registro de recorridos</string>
|
||||
<string name="read_tracks_permission_label">leer datos de recorridos grabados</string>
|
||||
<string name="write_tracks_permission_label">escribir datos de recorridos grabados, iniciar/detener recorridos</string>
|
||||
<string name="notification_permission_description">Ser notificado cuando un recorrido empieza o termina de registrarse.</string>
|
||||
<string name="read_tracks_permission_description">Poder leer datos, como puntos de interés.</string>
|
||||
<string name="write_tracks_permission_description">Poder escribir datos, como registrar o añadir puntos de interés.</string>
|
||||
</resources>
|
||||
|
||||
@@ -201,7 +201,7 @@ limitations under the License.
|
||||
<item>kayak</item>
|
||||
<item>bateau à moteur</item>
|
||||
<item>ferry</item>
|
||||
<item>boat télécommandé</item>
|
||||
<item>bateau télécommandé</item>
|
||||
<item>surf</item>
|
||||
<item>planche à voile</item>
|
||||
<item>kite surf</item>
|
||||
@@ -304,4 +304,11 @@ limitations under the License.
|
||||
<item>point de passage</item>
|
||||
</array>
|
||||
|
||||
<array name="sensor_type_options">
|
||||
<item>Aucun</item>
|
||||
<item>Capteur ANT+</item>
|
||||
<item>Pont SRM ANT+</item>
|
||||
<item>Bluetooth Zephyr</item>
|
||||
</array>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -30,11 +30,13 @@ limitations under the License.
|
||||
<string name="choose_track_message">Sélectionnez le parcours à visualiser</string>
|
||||
<string name="current_track">Parcours actuel</string>
|
||||
<string name="current_segment">Segment actuel</string>
|
||||
|
||||
<string name="sensor_state">État du capteur</string>
|
||||
<string name="aggregated_stats">Statistiques consolidées</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Aucune source de localisation n\'a été trouvée sur ce système !</string>
|
||||
<string name="error_no_gps_location_provider">Aucune source GPS de localisation n\'a été trouvée sur ce système.</string>
|
||||
<string name="error_sending_to_mymap">Il y a eu une erreur lors de l\'envoi de votre parcours à Google Mes cartes. Réessayez plus tard SVP.</string>
|
||||
<string name="error_sending_to_fusiontables">Il y a eu une erreur lors de l\'envoi de votre parcours à Google Fusion Tables. Réessayez plus tard SVP.</string>
|
||||
<string name="error_sending_to_docs">Il y a eu une erreur lors de l\'envoi de votre parcours à Google Docs. Réessayez plus tard SVP.</string>
|
||||
<string name="error_unable_to_start_recording">Impossible de débuter l\'enregistrement. Réessayez.</string>
|
||||
<string name="error_unable_to_stop_recording">Impossible de stopper l\'enregistrement. Réessayez.</string>
|
||||
@@ -49,11 +51,10 @@ limitations under the License.
|
||||
<string name="wait_for_fix">Attente du signal GPS. Assurez-vous que le ciel est bien visible.</string>
|
||||
<string name="status_now_recording">Parcours en cours d\'enregistrement.</string>
|
||||
<string name="status_stopped_recording">Enregistrement du parcours terminé.</string>
|
||||
<string name="status_new_mymap_has_been_created">Une nouvelle carte Google \'Mes cartes\' vient d\'être créée sur maps.google.com.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">Une nouvelle table Google Fusion vient d\'être créée sur google.com/fusiontables.</string>
|
||||
<string name="status_tracks_have_been_uploaded">Votre parcours a été envoyé à maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Votre parcours a été envoyé dans un tableur à docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Votre parcours a été envoyé à docs.google.com.</string>
|
||||
<string name="status_mymap_info">Votre parcours peut prendre quelques minutes avant d\'être visible.</string>
|
||||
<string name="status_enable_gps">Cliquez ici et allez dans \'Paramètres\', \'Sécurité et Localisation\' et selectionnez \'Activer les satellites GPS\'. Appuyez sur le bouton de retour pour revenir au menu.</string>
|
||||
<string name="status_approximate_location">Note : Votre position est approximative, elle a été déterminée par les antennes de téléphonie ou le réseau WiFi.</string>
|
||||
<string name="status_no_location">Votre position ne peut être déterminée. Vérifiez votre configuration dans \'Paramètres\', \'Sécurité et Localisation\'. Assurez-vous également que le ciel soit bien visible.</string>
|
||||
@@ -65,11 +66,11 @@ limitations under the License.
|
||||
<string name="progress_message">Envoi du parcours à Google...</string>
|
||||
<string name="progress_message_reading_track">Lecture du parcours...</string>
|
||||
<string name="progress_message_preparing_track">Préparation du parcours</string>
|
||||
<string name="progress_message_authenticating_mymaps">Authentification à Google Mes cartes...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">Authentification à Google Fusion Tables...</string>
|
||||
<string name="progress_message_authenticating_docs">Authentification à Google Docs...</string>
|
||||
<string name="progress_message_sending_docs">Envoi du parcours vers Google Docs...</string>
|
||||
<string name="progress_message_sending_mymaps">Envoi du parcours vers Google Mes cartes...</string>
|
||||
<string name="progress_message_creating_map">Création d\'une nouvelle carte...</string>
|
||||
<string name="progress_message_sending_fusiontables">Envoi du parcours vers Google Fusion Tables...</string>
|
||||
<string name="progress_message_creating_fusiontable">Création d\'une nouvelle \'Fusion Table\'...</string>
|
||||
<string name="import_progress_message">Importation du parcours GPS. Patientez SVP.</string>
|
||||
<string name="write_progress_message">Enregistrement du fichier sur la carte SD. Patientez SVP.</string>
|
||||
<string name="progress_message_updating_track">Mise à jour des statistiques du parcours...</string>
|
||||
@@ -82,8 +83,7 @@ limitations under the License.
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">Créée par My Tracks sous Android.</string>
|
||||
<string name="my_map_link">Créée par <a href=\'http://mytracks.appspot.com\'>My Tracks</a> sous Android.</string>
|
||||
<string name="new_map_title">Nouvelle carte</string>
|
||||
<string name="fusiontable_link">Créée par <a href=\'http://mytracks.appspot.com\'>My Tracks</a> sous Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="recorded_date">Enregistré</string>
|
||||
@@ -100,6 +100,10 @@ limitations under the License.
|
||||
<string name="yes">Oui</string>
|
||||
<string name="error">Erreur</string>
|
||||
<string name="waypoint">Point de passage</string>
|
||||
<string name="cancel">Annuler</string>
|
||||
<string name="close">Fermer</string>
|
||||
<string name="edit">Modifier</string>
|
||||
<string name="save">Enregistrer</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Début)</string>
|
||||
@@ -107,8 +111,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Afficher</string>
|
||||
<string name="tracklist_send_to_mymaps">Envoyer à Google Mes cartes</string>
|
||||
<string name="tracklist_send_to_new_mymap">Envoyer et créer un nouvelle carte Google Mes cartes</string>
|
||||
<string name="tracklist_send_to_fusiontables">Envoyer à Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">Envoyer et créer un nouvelle table Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_docs">Envoyer à Google Docs</string>
|
||||
<string name="tracklist_send_to_google">Envoyer à Google...</string>
|
||||
<string name="tracklist_delete_track">Effacer du téléphone...</string>
|
||||
@@ -116,14 +120,13 @@ limitations under the License.
|
||||
<string name="tracklist_write_to_sd">Enregistrer sur la carte SD...</string>
|
||||
<string name="tracklist_save_as_gpx">Enregistrer en fichier GPX </string>
|
||||
<string name="tracklist_save_as_kml">Enregistrer en fichier KML</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Envoyer à Google Mes cartes</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Envoyer à Google Fusion Tables</string>
|
||||
<string name="tracklist_btn_export_all">Exporter tous les parcours</string>
|
||||
<string name="tracklist_btn_delete_all">Tout supprimer</string>
|
||||
<string name="tracklist_pick_one">Choisissez un parcours. Faites un appui prolongé pour plus d\'options.</string>
|
||||
<string name="tracklist_all_tracks">Tous les parcours:</string>
|
||||
<string name="tracklist_this_track">Ce parcours</string>
|
||||
<string name="tracklist_share_track">Partager...</string>
|
||||
<string name="tracklist_share_link">Lien sur Google Mes cartes</string>
|
||||
<string name="tracklist_share_gpx_file">Fichier GPX</string>
|
||||
<string name="tracklist_share_kml_file">Fichier KML</string>
|
||||
<string name="tracklist_clear_map">Effacer la carte</string>
|
||||
@@ -187,39 +190,43 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">Seule l\'adresse URL de la carte sera envoyée lors du partage</string>
|
||||
<string name="settings_share_url_only_summary_off">Le contenu du parcours sera également inclus lors du partage</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Échantillonnage du signal</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Intervalle de temps entre deux enregistrements de la force du signal</string>
|
||||
|
||||
<string name="settings_split_frequency">Fréquence de séparation</string>
|
||||
<string name="settings_split_frequency_summary">Temps ou distance minimum avant l\'insertion d\'un marqueur de séparation</string>
|
||||
<string name="pace_label">Rythme</string>
|
||||
|
||||
<string name="eclair_required">Nécessite au minimum Android 2.0</string>
|
||||
<string name="settings_sensor_type">Type de capteur</string>
|
||||
<string name="settings_sensor_type_summary">Type du capteur à utiliser</string>
|
||||
<string name="settings_heart_rate_ant_sensor_id">Se désassocier du Cardiofréquencemètre ANT</string>
|
||||
<string name="settings_power_ant_sensor_id">Se désassocier du compteur ANT</string>
|
||||
<string name="settings_srm_bridge_ant_sensor_id">Se désassocier du pont SRM ANT</string>
|
||||
<string name="settings_ant_not_paired">Capteur ANT non associé</string>
|
||||
<string name="settings_ant_paired">Capteur ANT associé: %d</string>
|
||||
<string name="bluetooth_sensor_title">Capteur Bluetooth</string>
|
||||
<string name="bluetooth_sensor_summary">Capteur Bluetooth à utiliser</string>
|
||||
<string name="settings_modular_stats_display_title">Affichage des statistiques modulaires</string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="settings_backup">Sauvegarde (BETA)</string>
|
||||
<string name="settings_sd_backup">Sauvegarde sur carte SD</string>
|
||||
<string name="settings_backup_to_sd">Sauvegarder</string>
|
||||
<string name="settings_backup_to_sd_summary">Copier tous vos parcours et paramètres sur la carte SD</string>
|
||||
<string name="settings_restore_from_sd">Restaurer</string>
|
||||
<string name="settings_restore_from_sd_summary">Restaurer tous les parcours et paramètres depuis la carte SD</string>
|
||||
<string name="settings_no_backup_while_recording">Sauvegarde impossible lors de l\'enregistrement d\'un parcours.</string>
|
||||
|
||||
|
||||
<string name="restore_overwrites_warning">Restaurer une sauvegarde depuis la carte SD écrasera tous vos parcours et paramètres actuels.</string>
|
||||
<string name="select_backup_to_restore">Choisissez la sauvegarde à restaurer</string>
|
||||
<string name="no_backups">Pas de sauvegarde disponible.</string>
|
||||
<string name="backup_write_progress_message">Écriture de tous vos parcours et paramètres sur la carte SD. Veuillez patienter...</string>
|
||||
<string name="backup_import_progress_message">Lecture de tous vos parcours et paramètres depuis la carte SD. Veuillez patienter...</string>
|
||||
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">Satellites GPS</string>
|
||||
|
||||
<!-- MyMaps -->
|
||||
<string name="select_map_message">Choisissez une carte de votre compte :</string>
|
||||
<string name="create_new_map">Création d\'une nouvelle carte en cours...</string>
|
||||
<string name="map_list_title">Envoyer à Google Mes cartes</string>
|
||||
<string name="maps_list_loading">Chargements de vos cartes...</string>
|
||||
<string name="maps_list_failed">Vos cartes n\'ont pu être chargées</string>
|
||||
<string name="open_map">Sélectionnez la carte</string>
|
||||
<string name="edit_map_details">Consulter les détails de la carte</string>
|
||||
<string name="share_map">Partager.</string>
|
||||
<string name="share_track">Partager des parcours.</string>
|
||||
<string name="delete_map">Supprimer la carte de votre compte.</string>
|
||||
<string name="map_title">Titre de la carte :</string>
|
||||
<string name="map_description">Description de la carte :</string>
|
||||
<string name="map_searchable_edit">Rendre cette carte et son contenu visibles dans les résultats de recherche.</string>
|
||||
<string name="map_not_searchable_edit">Ne pas inclure cette carte et sont contenu dans les résultats de recherche. Ils seront cependant consultables par d\'autres utilisateurs en utilisant l\'adresse URL exacte</string>
|
||||
<string name="map_searchable">Cette carte et son contenu seront visibles dans les résultats de recherche</string>
|
||||
<string name="map_not_searchable">Ni cette carte, ni son contenu seront visible dans les résultats de recherche, mais ils seront consultables en utilisant l\'adresse URL exacte</string>
|
||||
<string name="close">Fermer</string>
|
||||
<string name="edit">Modifier</string>
|
||||
<string name="cancel">Annuler</string>
|
||||
<string name="save">Enregistrer</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map">Partager.</string>
|
||||
<string name="share_map_subject">Je voudrais partager ma carte avec vous</string>
|
||||
<string name="share_map_body_format">Je pense que cette carte vous intéressera :
|
||||
|
||||
@@ -228,6 +235,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">Je pense que ce parcours vous intéressera.
|
||||
|
||||
Pour voir ce parcours, utilisez Google Earth ou tout autre logiciel de cartographie.</string>
|
||||
<string name="share_track">Partager des parcours.</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="unlisted_map">Carte non listée</string>
|
||||
@@ -288,6 +296,9 @@ limitations under the License.
|
||||
<string name="mile_per_hour_long">miles/heure</string>
|
||||
<string name="per_mile">per mile</string>
|
||||
|
||||
|
||||
<string name="waiting">Waiting...</string>
|
||||
|
||||
<!-- Stats Labels -->
|
||||
<string name="moving_time_label">Durée (déplacement)</string>
|
||||
<string name="total_time_label">Durée totale</string>
|
||||
@@ -295,6 +306,12 @@ limitations under the License.
|
||||
<string name="sd_unavail">Carte SD indisponible</string>
|
||||
<string name="speed">Vitesse</string>
|
||||
<string name="start_trip">Vous devez commencer un parcours</string>
|
||||
<string name="distance_label">Distance</string>
|
||||
<string name="power">Puissance</string>
|
||||
<string name="cadence">Cadence</string>
|
||||
<string name="heart_rate">Rythme cardiaque</string>
|
||||
<string name="max_heart_rate">Rythme cardiaque maximum</string>
|
||||
<string name="unknown">-</string>
|
||||
<string name="statistics">Statistiques</string>
|
||||
<string name="total_distance_label">Distance totale</string>
|
||||
<string name="waiting">Patientez</string>
|
||||
@@ -313,8 +330,6 @@ limitations under the License.
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Envoyer à</string>
|
||||
<string name="sendtogoogle_send_now">Envoyer maintenant</string>
|
||||
<string name="sendtogoogle_create_new_map">Créer une nouvelle carte</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Choisir une carte</string>
|
||||
<string name="sendtogoogle_send_stats">Envoyer les statistiques du parcours</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Envoyer les statistiques et les balises</string>
|
||||
|
||||
@@ -353,4 +368,42 @@ limitations under the License.
|
||||
$6 : Speed units (mph) : Pace units (per mile)
|
||||
-->
|
||||
<string name="announce_template">My Tracks %1$s %2$.2f %3$s en %4$s at %5$s %6$s</string>
|
||||
|
||||
<!-- Check Units -->
|
||||
<string name="check_units_title">Note sur les unités de mesure</string>
|
||||
<string name="check_units_message">Le système métrique est utilisé par défaut. Souhaitez-vous changer ce paramètre ?</string>
|
||||
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<string name="method_bluetooth">Bluetooth</string>
|
||||
<string name="bluetooth_options">Options Bluetooth</string>
|
||||
<string name="bluetooth_pairing">Association d\'un appareil</string>
|
||||
<string name="bluetooth_pairing_summary">Visitez les paramètres Bluetooth d\'Android pour associer un nouvel appareil</string>
|
||||
<string name="sensor_bluetooth_options_key">bluetoothSensorsEnabled</string>
|
||||
<string name="sensor_options">Options du capteur</string>
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">Connecté à %s</string>
|
||||
<string name="bluetooth_connecting">Connexion du capteur Bluetooth...</string>
|
||||
<string name="bluetooth_not_connected">Capteur Bluetooth non connecté</string>
|
||||
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_data_time">Date des données du capteur</string>
|
||||
<string name="power_meter_enabled">Compteur activé</string>
|
||||
<string name="heart_rate_monitor_enabled">Cardiofréquencemètre activé</string>
|
||||
<string name="no_sensor_manager">Pas de gestionnaire de capteur</string>
|
||||
<string name="enabled">Activé</string>
|
||||
<string name="connecting">Connexion</string>
|
||||
<string name="connected">Connecté</string>
|
||||
<string name="disconnected">Déconnecté</string>
|
||||
<string name="no_sensor_service">Pas de capteur</string>
|
||||
<string name="searching">Recherche</string>
|
||||
<string name="sending">Envoi</string>
|
||||
|
||||
<!-- Manifest description (not seen inside the app) -->
|
||||
<string name="notification_permission_label">notifications lors de l\'enregistrement de parcours</string>
|
||||
<string name="read_tracks_permission_label">lecture des parcours enregistrés</string>
|
||||
<string name="write_tracks_permission_label">sauvegarde de parcours, lancer/arrêter l\'enregistrement de parcours</string>
|
||||
<string name="notification_permission_description">Notifications lors du lancement et de l\'arrêt de l\'enregistrement de parcours.</string>
|
||||
<string name="read_tracks_permission_description">Possibilité de lire les données des parcours enregistrés, telles que les marqueurs et les points de passage.</string>
|
||||
<string name="write_tracks_permission_description">Possibilité d\'écrire des données de parcours, telles que les marqueurs et les points de passage..</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,8 +15,6 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<string name="app_name">My Tracks</string>
|
||||
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">Registra percorso</string>
|
||||
<string name="stop_recording">Fine registrazione</string>
|
||||
@@ -35,7 +33,7 @@ limitations under the License.
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Nessuna fonte di posizione trovata su questo dispositivo.</string>
|
||||
<string name="error_no_gps_location_provider">Nessuna fonte di posizione GPS trovata su questo dispositivo.</string>
|
||||
<string name="error_sending_to_mymap">Si è verificato un errore nell\'invio del percorso a «Le mie mappe». Per favore riprova più tardi.</string>
|
||||
<string name="error_sending_to_fusiontables">Si è verificato un errore nell\'invio del percorso a Google Fusion Tables. Per favore riprova più tardi.</string>
|
||||
<string name="error_sending_to_docs">Si è verificato un errore nell\'invio del percorso a Google Docs. Per favore riporva più tardi.</string>
|
||||
<string name="error_unable_to_start_recording">Impossibile iniziare la registrazione. Riprova.</string>
|
||||
<string name="error_unable_to_stop_recording">Impossibile fermare la registrazione. Riprova.</string>
|
||||
@@ -50,11 +48,10 @@ limitations under the License.
|
||||
<string name="wait_for_fix">Sto aspettando il fix del GPS. Accertati che il cielo sia visibile.</string>
|
||||
<string name="status_now_recording">Sto registrando un nuovo percorso.</string>
|
||||
<string name="status_stopped_recording">Registrazione del percorso terminata.</string>
|
||||
<string name="status_new_mymap_has_been_created">Una nuova mappa è stata creata in «Le mie mappe» su maps.google.com.</string>
|
||||
<!-- <string name="status_new_fusiontable_has_been_created">Una nuova mappa è stata creata in «Le mie mappe» su maps.google.com.</string> -->
|
||||
<string name="status_tracks_have_been_uploaded">Il tuo percorso è stato inviato a maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Il tuo percorso è stato inviato ad un nuovo foglio di calcolo su docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Il tuo percorso è stato inviato a docs.google.com.</string>
|
||||
<string name="status_mymap_info">Potrebbe essere necessario aspettare qualche minuto prima che i nuovi percorsi siano visibili.</string>
|
||||
<string name="status_enable_gps">Premi qui per andare a «Impostazioni di posizione e protezione» e attiva «Utilizza satelliti GPS». Poi premi il tasto di ritorno per tornare qui.</string>
|
||||
<string name="status_approximate_location">Nota: la posizione indicata è un\'approssimazione determinata in base alle antenne cellulari e reti WIFI vicine.</string>
|
||||
<string name="status_no_location">La posizione non può essere determinata. Attiva più fonti di posizione (vedi «Impostazioni di posizione e protezione») e eccertati che il cielo sia visibile. Riprova più tardi.</string>
|
||||
@@ -66,11 +63,11 @@ limitations under the License.
|
||||
<string name="progress_message">Invio del percorso a Google in corso.</string>
|
||||
<string name="progress_message_reading_track">Lettura in corso...</string>
|
||||
<string name="progress_message_preparing_track">Elaborazione del percorso in corso...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Autenticazione a Google Maps in corso...</string>
|
||||
<!-- <string name="progress_message_authenticating_fusiontables">Autenticazione a Google Maps in corso...</string> -->
|
||||
<string name="progress_message_authenticating_docs">Autenticazione a Google Docs in corso...</string>
|
||||
<string name="progress_message_sending_docs">Invio del percorso a Google Docs in corso...</string>
|
||||
<string name="progress_message_sending_mymaps">Invio del percorso a Google Maps in corso...</string>
|
||||
<string name="progress_message_creating_map">Creazione di una nuova mappa in «Le mie mappe» in corso...</string>
|
||||
<!-- <string name="progress_message_sending_fusiontables">Invio del percorso a Google Maps in corso...</string> -->
|
||||
<!-- <string name="progress_message_creating_fusiontable">Creazione di una nuova mappa in «Le mie mappe» in corso...</string> -->
|
||||
<string name="import_progress_message">Importazione del percorso GPS in corso. Attendere prego...</string>
|
||||
<string name="write_progress_message">Salvataggio del file sulla scheda SD in corso. Attendere prego...</string>
|
||||
<string name="progress_message_updating_track">Aggiornamento delle statistiche del percorso in corso...</string>
|
||||
@@ -83,8 +80,7 @@ limitations under the License.
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">Creato da My Tracks su Android.</string>
|
||||
<string name="my_map_link">Creato da <a href=\'http://mytracks.appspot.com\'>My Tracks</a> su Android.</string>
|
||||
<string name="new_map_title">Nuova mappa</string>
|
||||
<string name="fusiontable_link">Creato da <a href=\'http://mytracks.appspot.com\'>My Tracks</a> su Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Punti</string>
|
||||
@@ -104,6 +100,10 @@ limitations under the License.
|
||||
<string name="error">Errore</string>
|
||||
<string name="success">Successo</string>
|
||||
<string name="waypoint">Punto di passaggio</string>
|
||||
<string name="cancel">Annulla</string>
|
||||
<string name="close">Chiudi</string>
|
||||
<string name="edit">Modifica</string>
|
||||
<string name="save">Salva</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Inizio)</string>
|
||||
@@ -111,8 +111,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Mostra</string>
|
||||
<string name="tracklist_send_to_mymaps">Invia a «Le mie mappe» di Google</string>
|
||||
<string name="tracklist_send_to_new_mymap">Invia a nuova mappa in «Le mie mappe» di Google</string>
|
||||
<!-- <string name="tracklist_send_to_fusiontables">Invia a «Le mie mappe» di Google</string> -->
|
||||
<!-- <string name="tracklist_send_to_new_fusiontable">Invia a nuova mappa in «Le mie mappe» di Google</string> -->
|
||||
<string name="tracklist_send_to_docs">Invia a Google Docs</string>
|
||||
<string name="tracklist_send_to_google">Invia a Google...</string>
|
||||
<string name="tracklist_delete_track">Elimina dal telefono...</string>
|
||||
@@ -120,7 +120,7 @@ limitations under the License.
|
||||
<string name="tracklist_write_to_sd">Salva su scheda SD...</string>
|
||||
<string name="tracklist_save_as_gpx">Salva in un file GPX</string>
|
||||
<string name="tracklist_save_as_kml">Salva in un file KML</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Invia a «Le mie mappe» di Google</string>
|
||||
<!-- <string name="tracklist_btn_send_all_to_fusiontables">Invia a «Le mie mappe» di Google</string> -->
|
||||
<string name="tracklist_btn_delete_all">Elimina tutti i percorsi</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Esporta tutti i percorsi</string>
|
||||
@@ -129,7 +129,7 @@ limitations under the License.
|
||||
<string name="tracklist_all_tracks">Tutti i percorsi:</string>
|
||||
<string name="tracklist_this_track">Questo percorso</string>
|
||||
<string name="tracklist_share_track">Condividi con amici...</string>
|
||||
<string name="tracklist_share_link">Un link alla mappa in «Le mie mappe» di Google</string>
|
||||
<string name="tracklist_share_link">Un link alla mappa</string>
|
||||
<string name="tracklist_share_gpx_file">Un file GPX</string>
|
||||
<string name="tracklist_share_kml_file">Un file KML</string>
|
||||
<string name="tracklist_clear_map">Cancella la mappa</string>
|
||||
@@ -193,9 +193,6 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">Solo l\'URL della mappa sarà inviata quando condividi un percorso</string>
|
||||
<string name="settings_share_url_only_summary_off">Anche il contenuto del percorso sarà inviato quando condividi un persorso</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Frequenza di campionamento</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Tempo fra due registrazioni della qualità del segnale cellulare</string>
|
||||
|
||||
<string name="settings_split_frequency">Frequenza di divisione</string>
|
||||
<string name="settings_split_frequency_summary">Tempo o distanza massima dopo di cui il percorso verrà diviso</string>
|
||||
<string name="pace_label">Andatura</string>
|
||||
@@ -203,28 +200,6 @@ limitations under the License.
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">Satelliti GPS</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">Scegli una mappa dal tuo account:</string>
|
||||
<string name="create_new_map">Crea una nuova mappa...</string>
|
||||
<string name="map_list_title">Invia a «Le mie mappe» di Google</string>
|
||||
<string name="maps_list_loading">Caricamento mappe in corso...</string>
|
||||
<string name="maps_list_failed">Le tue mappe non possono momentaneamente essere caricate!</string>
|
||||
<string name="open_map">Scegli questa mappa</string>
|
||||
<string name="edit_map_details">Modifica dettagli della mappa</string>
|
||||
<string name="share_map">Condividi la mappa con amici</string>
|
||||
<string name="share_track">Condividi il percorso con amici</string>
|
||||
<string name="delete_map">Elimina la mappa dal tuo account</string>
|
||||
<string name="map_title">Titolo della mappa:</string>
|
||||
<string name="map_description">Descrizione della mappa:</string>
|
||||
<string name="map_searchable_edit">Rendi questa mappa e il suo contenuto visibili fra i risultati di ricerche</string>
|
||||
<string name="map_not_searchable_edit">Rendi questa mappa e il suo contenuto invisibili fra i risultati di ricerche. Resteranno comunque visibili ad altri utilizzando l\'indirizzo URL esatto</string>
|
||||
<string name="map_searchable">Questa mappa e il suo contenuto saranno visibili fra i risultati di ricerche</string>
|
||||
<string name="map_not_searchable">Né questa mappa né il suo contenuto saranno visibili in risultati di ricerche, ma saranno comunque visibili ad altri tramite un link diretto.</string>
|
||||
<string name="close">Chiudi</string>
|
||||
<string name="edit">Modifica</string>
|
||||
<string name="cancel">Annulla</string>
|
||||
<string name="save">Salva</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">Vorrei condividere una mappa con te</string>
|
||||
<string name="share_map_body_format">Credo che questa mappa potrebbe interessarti:
|
||||
@@ -234,6 +209,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">Credo che questo percorso potrebbe interessarti.
|
||||
|
||||
Per vedere questo percorso, usa Google Earth o un altro software di cartografia.</string>
|
||||
<string name="share_track">Condividi il percorso con amici</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Pubblica</string>
|
||||
@@ -327,19 +303,15 @@ limitations under the License.
|
||||
<!-- About -->
|
||||
<string name="about">Informazioni</string>
|
||||
<string name="help">Aiuto</string>
|
||||
<string name="about_email">Supporto</string>
|
||||
|
||||
<string name="about_team">Team:</string>
|
||||
<string name="about_version">Versione:</string>
|
||||
<string name="about_support">Supporto:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Invia a...</string>
|
||||
<string name="sendtogoogle_google_mymaps">«Le mie mappe» di Google</string>
|
||||
<!-- <string name="sendtogoogle_google_fusiontables">«Le mie mappe» di Google</string> -->
|
||||
<string name="sendtogoogle_google_docs">Google Docs</string>
|
||||
<string name="sendtogoogle_send_now">Invia adesso</string>
|
||||
<string name="sendtogoogle_create_new_map">Crea una nuova mappa</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Scegli una mappa esistente</string>
|
||||
<string name="sendtogoogle_send_stats">Invia statistiche del percorso</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Invia statistiche e segnaposti</string>
|
||||
|
||||
|
||||
@@ -151,6 +151,14 @@ limitations under the License.
|
||||
<item>1 分</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Auto-resume track timeout -->
|
||||
<string-array name="auto_resume_track_timeout_options">
|
||||
<item>なし</item>
|
||||
<item>5 分</item>
|
||||
<item>10 分</item>
|
||||
<item>15 分</item>
|
||||
<item>常時</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Other non-preference arrays -->
|
||||
<array name="activity_types">
|
||||
@@ -249,12 +257,12 @@ limitations under the License.
|
||||
<item>ゴルフ場</item>
|
||||
<item>雑貨店</item>
|
||||
<item>美容室</item>
|
||||
<item>散髪屋</item>
|
||||
<item>船着き場</item>
|
||||
<item>ハイキング道</item>
|
||||
<item>ホテル</item>
|
||||
<item>家</item>
|
||||
<item>情報</item>
|
||||
<item>交差</item>
|
||||
<item>案内所</item>
|
||||
<item>交差点</item>
|
||||
<item>メールボックス</item>
|
||||
<item>市場</item>
|
||||
<item>集合場所</item>
|
||||
|
||||
@@ -22,18 +22,20 @@ limitations under the License.
|
||||
<string name="switch_to_map">地図モード</string>
|
||||
<string name="mylocation">現在地</string>
|
||||
<string name="list_tracks">トラック</string>
|
||||
<string name="list_markers">マーカ</string>
|
||||
<string name="list_markers">マーカー</string>
|
||||
<string name="delete_all_tracks">全トラック消去</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="elevation">標高</string>
|
||||
<string name="choose_track_message">表示するトラックを選択して下さい</string>
|
||||
<string name="current_track">現在のトラック</string>
|
||||
<string name="current_segment">最終セグメント</string>
|
||||
<string name="sensor_state">センサー情報</string>
|
||||
<string name="aggregated_stats">集計情報</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">この端末でロケーションマネージャを発見できませんでした</string>
|
||||
<string name="error_no_gps_location_provider">この端末でGPSロケーションプロバイダを発見できました</string>
|
||||
<string name="error_sending_to_mymap">Googleマイマップへのトラック送信でエラーが発生しました.しばらく待って試して下さい.</string>
|
||||
<string name="error_no_location_manager">この端末でロケーションマネージャを発見できませんでした.</string>
|
||||
<string name="error_no_gps_location_provider">この端末でGPSロケーションプロバイダを発見できました.</string>
|
||||
<string name="error_sending_to_fusiontables">Google Fusion Tablesへのトラック送信でエラーが発生しました.しばらく待って試して下さい.</string>
|
||||
<string name="error_sending_to_docs">Google Docsへのトラック送信でエラーが発生しました.しばらく待って試して下さい.</string>
|
||||
<string name="error_unable_to_start_recording">記録作成開始できません.もう一度試して下さい.</string>
|
||||
<string name="error_unable_to_stop_recording">記録停止できません.もう一度試して下さい.</string>
|
||||
@@ -42,54 +44,52 @@ limitations under the License.
|
||||
<string name="error_generic">エラーが発生しました.もう一度試して下さい.</string>
|
||||
<string name="error_track_does_not_exist">トラックが存在しません.</string>
|
||||
<string name="error_out_of_memory">大きなファイルです(500KB未満でなければなりません).終了します.</string>
|
||||
<string name="error_unable_to_insert_marker">マーカの挿入ができません.位置決定ができません.</string>
|
||||
<string name="error_unable_to_insert_marker">マーカーの挿入ができません.位置決定ができません.</string>
|
||||
|
||||
<!-- Status messages -->
|
||||
<string name="wait_for_fix">GPS位置精度がよくなるまで待機しています.空が見えるところにいて下さい.</string>
|
||||
<string name="status_now_recording">新しいトラックを記録中です.</string>
|
||||
<string name="status_stopped_recording">トラック記録を停止しました.</string>
|
||||
<string name="status_new_mymap_has_been_created">新しいGoogleマイマップを maps.google.com に作成しました.</string>
|
||||
<string name="status_tracks_have_been_uploaded">トラックを maps.google.com に送信しました.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">トラックを docs.google.com の新しいスプレッドシートに送信しました.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">トラックを docs.google.com に送信しました.</string>
|
||||
<string name="status_mymap_info">新しいトラックが見えるようになるまで数分程度かかります.</string>
|
||||
<string name="status_enable_gps">ここをタップして,セキュリティ &位置情報 を開いて,「GPS機能をONにする」にチェックして下さい.バックボタンで戻ってください.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">新しいGoogle Fusion Tableをgoogle.com/fusiontablesに作成しました.</string>
|
||||
<string name="status_tracks_have_been_uploaded">トラックをmaps.google.comに送信しました.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">トラックをdocs.google.comの新しいスプレッドシートに送信しました.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">トラックをdocs.google.comに送信しました.</string>
|
||||
<string name="status_enable_gps">ここをタップして「位置情報とセキュリティの設定」を開いて「GPS機能を使用」にチェックして下さい.バックボタンで戻ってください.</string>
|
||||
<string name="status_approximate_location">ご注意: 携帯電話中継局とWi-Fiネットワークから大まかな位置を特定します.</string>
|
||||
<string name="status_no_location">現在位置決定ができません.位置取得源を増やし(セキュリティ&位置情報をご覧ください),空が見えるようにして下さい.もう一度試して下さい.</string>
|
||||
<string name="status_waypoint_inserted">ウェイポイントマーカを挿入しました.</string>
|
||||
<string name="status_statistics_inserted">統計マーカを挿入しました.</string>
|
||||
<string name="status_no_location">現在位置決定ができません.位置取得源を増やし(位置情報とセキュリティの設定 をご覧ください)、空が見えるようにして下さい.もう一度試して下さい.</string>
|
||||
<string name="status_waypoint_inserted">ウェイポイントマーカーを挿入しました.</string>
|
||||
<string name="status_statistics_inserted">統計マーカーを挿入しました.</string>
|
||||
|
||||
<!-- Progress dialog -->
|
||||
<string name="progress_title">お待ちください...</string>
|
||||
<string name="progress_message">トラックをGoogleに送信しました.</string>
|
||||
<string name="progress_message_reading_track">トラックを読んでいます...</string>
|
||||
<string name="progress_message_preparing_track">トラックを準備しています...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Googleマップの認証しています...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">Google Fusion Tablesへの認証を行っています...</string>
|
||||
<string name="progress_message_authenticating_docs">Google Docsへの認証を行っています...</string>
|
||||
<string name="progress_message_sending_docs">トラックをGoogle Docsに送信しています...</string>
|
||||
<string name="progress_message_sending_mymaps">トラックをGoogleマップに送信しています...</string>
|
||||
<string name="progress_message_creating_map">新しいマイマップを生成しています...</string>
|
||||
<string name="progress_message_sending_fusiontables">トラックをFusion Tablesに送信しています...</string>
|
||||
<string name="progress_message_creating_fusiontable">新しいFusion Tablesを生成しています...</string>
|
||||
<string name="import_progress_message">GPSトラックをインポートしています.若干時間がかかります.</string>
|
||||
<string name="write_progress_message">SDカードにデータを書き込んでいます.若干時間がかかります.</string>
|
||||
<string name="progress_message_updating_track">トラック統計情報を更新しています...</string>
|
||||
|
||||
<!-- Used by DeleteAllDataHandler -->
|
||||
<string name="are_you_sure_question">よろしいですか?</string>
|
||||
<string name="all_data_will_be_permanently_deleted">全てのトラックとマーカをこの端末から削除しました.</string>
|
||||
<string name="track_will_be_permanently_deleted">トラックとマーカをこの端末から完全に削除しました.</string>
|
||||
<string name="marker_will_be_permanently_deleted">マーカをこの端末から完全に削除しました.</string>
|
||||
<string name="all_data_will_be_permanently_deleted">全てのトラックとマーカーをこの端末から削除します.</string>
|
||||
<string name="track_will_be_permanently_deleted">トラックとマーカーをこの端末から完全に削除します.</string>
|
||||
<string name="marker_will_be_permanently_deleted">マーカーをこの端末から完全に削除します.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<!-- Text and links when uploading to Google Fusion Tables -->
|
||||
<string name="new_map_description">Android用My Tracksで作成</string>
|
||||
<string name="my_map_link">Android用<a href=\'http://mytracks.appspot.com\'>My Tracks</a>で作成しました.</string>
|
||||
<string name="new_map_title">新規マップ</string>
|
||||
<string name="fusiontable_link">Android用<a href=\'http://mytracks.appspot.com\'>My Tracks</a>で作成しました.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">ポイント</string>
|
||||
<string name="recorded_date">記録</string>
|
||||
<string name="recorded_date">記録日</string>
|
||||
<string name="category">活動タイプ</string>
|
||||
<string name="waypoint_category">マーカタイプ</string>
|
||||
<string name="part">(Part %d)</string>
|
||||
<string name="waypoint_category">マーカータイプ</string>
|
||||
<string name="part">(パート %d)</string>
|
||||
|
||||
<!-- Used by the track recording service -->
|
||||
<string name="recording_your_track">トラックを保存中...</string>
|
||||
@@ -98,10 +98,14 @@ limitations under the License.
|
||||
<!-- Common -->
|
||||
<string name="no">いいえ</string>
|
||||
<string name="yes">はい</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="error">エラー</string>
|
||||
<string name="success">成功</string>
|
||||
<string name="waypoint">ウェイポイント</string>
|
||||
<string name="license">ライセンス</string>
|
||||
<string name="cancel">キャンセル</string>
|
||||
<string name="close">閉じる</string>
|
||||
<string name="edit">編集</string>
|
||||
<string name="save">保存</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(開始)</string>
|
||||
@@ -109,8 +113,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">表示</string>
|
||||
<string name="tracklist_send_to_mymaps">Google My Mapsへ送信</string>
|
||||
<string name="tracklist_send_to_new_mymap">新規Googleマイマップへ送信</string>
|
||||
<string name="tracklist_send_to_fusiontables">Google Fusion Tablesへ送信</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">新規Google Fusion Tableへ送信</string>
|
||||
<string name="tracklist_send_to_docs">Google Docsへ送信</string>
|
||||
<string name="tracklist_send_to_google">Googleへ送信...</string>
|
||||
<string name="tracklist_delete_track">端末から削除...</string>
|
||||
@@ -119,42 +123,43 @@ limitations under the License.
|
||||
<string name="tracklist_save_as_gpx">GPXファイルの保存</string>
|
||||
<string name="tracklist_save_as_kml">KMLファイルの保存</string>
|
||||
<string name="tracklist_save_as_csv">CVSファイルの保存</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Googleマイマップへの送信</string>
|
||||
<string name="tracklist_btn_delete_all">全てのトラックの削除</string>
|
||||
<string name="tracklist_save_as_tcx">TCXファイルの保存</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Google Fusion Tablesへの送信</string>
|
||||
<string name="tracklist_btn_delete_all">全トラックの削除</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">全てのトラックのエクスポート</string>
|
||||
<string name="export_done">エクスポート終了</string>
|
||||
<string name="tracklist_btn_export_all">全トラックの出力</string>
|
||||
<string name="export_done">出力終了</string>
|
||||
<string name="tracklist_pick_one">トラックを選択します.オプションを表示するには長押しして下さい.</string>
|
||||
<string name="tracklist_all_tracks">全てのトラック:</string>
|
||||
<string name="tracklist_this_track">このトラック</string>
|
||||
<string name="tracklist_share_track">共有...</string>
|
||||
<string name="tracklist_share_link">Googleマイマップへのリンク</string>
|
||||
<string name="tracklist_share_gpx_file">GPXファイル</string>
|
||||
<string name="tracklist_share_kml_file">KMLファイル</string>
|
||||
<string name="tracklist_share_csv_file">CSVファイル</string>
|
||||
<string name="tracklist_share_tcx_file">TCXファイル</string>
|
||||
<string name="tracklist_clear_map">マップの消去</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
<string name="waypointslist_btn_delete_all">全てのマーカの削除</string>
|
||||
<string name="waypointslist_this_waypoint">このマーカ</string>
|
||||
<string name="waypointslist_btn_delete_all">全てのマーカーの削除</string>
|
||||
<string name="waypointslist_this_waypoint">このマーカー</string>
|
||||
<string name="waypointslist_delete_waypoint">削除</string>
|
||||
<string name="waypointslist_edit_waypoint">詳細編集</string>
|
||||
<string name="waypointslist_show_waypoint">マップに表示</string>
|
||||
<string name="waypointslist_btn_insert_waypoint">ウェイポイントの挿入</string>
|
||||
<string name="waypointslist_btn_insert_statistics">統計情報の挿入</string>
|
||||
<string name="waypointslist_pick_one">マーカを選択します.オプションを表示するには長押しして下さい.</string>
|
||||
<string name="waypointslist_pick_one">マーカーを選択します.オプションを表示するには長押しして下さい.</string>
|
||||
|
||||
<!-- MyTracks Details -->
|
||||
<string name="trackdetails_title">トラック詳細</string>
|
||||
<string name="trackdetails_name">トラック名</string>
|
||||
<string name="trackdetails_description">トラック説明</string>
|
||||
<string name="trackdetails_category">活動タイプ(ハイキング, サイクリング, ランニング, 登山...)</string>
|
||||
<string name="trackdetails_category">活動タイプ(ハイキング, サイクリング、ランニング、登山...)</string>
|
||||
|
||||
<!-- MyTracks Waypoint Details -->
|
||||
<string name="waypointdetails_title">マーカ詳細</string>
|
||||
<string name="waypointdetails_name">マーカ名</string>
|
||||
<string name="waypointdetails_description">マーカ説明</string>
|
||||
<string name="waypointdetails_category">マーカタイプ(建物, 洞穴, 名所...)</string>
|
||||
<string name="waypointdetails_title">マーカー詳細</string>
|
||||
<string name="waypointdetails_name">マーカー名</string>
|
||||
<string name="waypointdetails_description">マーカー説明</string>
|
||||
<string name="waypointdetails_category">マーカータイプ(建物、洞穴、名所...)</string>
|
||||
|
||||
<!-- MyTracks Settings -->
|
||||
<string name="mytracks_settings">My Tracks設定</string>
|
||||
@@ -162,9 +167,10 @@ limitations under the License.
|
||||
<string name="settings_recording">記録</string>
|
||||
<string name="settings_sharing">共有</string>
|
||||
|
||||
<string name="settings_not_available_summary">このAndroidバージョンでは使用できません</string>
|
||||
|
||||
<string name="settings_announcement_frequency">定期通知</string>
|
||||
<string name="settings_announcement_frequency_summary">音声通知間隔の最小時間</string>
|
||||
|
||||
|
||||
<string name="settings_min_recording_distance">ポイント間の最短距離</string>
|
||||
<string name="settings_min_recording_distance_summary">位置記録間の最短距離</string>
|
||||
@@ -194,41 +200,50 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">共有時にマップのURLのみ送信します</string>
|
||||
<string name="settings_share_url_only_summary_off">共有時にトラックのコンテントが含まれます</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">信号サンプリング周波数</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">端末の信号強度記録の時間間隔</string>
|
||||
|
||||
<string name="settings_split_frequency">分割頻度</string>
|
||||
<string name="settings_split_frequency_summary">分割マーカを挿入する時間または距離の間隔</string>
|
||||
<string name="settings_split_frequency_summary">分割マーカーを挿入する時間または距離の間隔</string>
|
||||
|
||||
<string name="settings_auto_resume_track_timeout">記録自動再開の制限時間</string>
|
||||
<string name="settings_auto_resume_track_timeout_summary">指定時間(分単位)以内なら端末再起動時に以前のトラック記録を再開します.</string>
|
||||
|
||||
<string name="settings_timestamp_track_name">日時をトラック名にする</string>
|
||||
<string name="settings_timestamp_track_name_summary_on">デフォルトのトラック名をトラック開始日時にします.</string>
|
||||
<string name="settings_timestamp_track_name_summary_off">トラック名を昇順の数字にします.</string>
|
||||
|
||||
<string name="pace_label">ペース</string>
|
||||
|
||||
<string name="eclair_required">Android 2.0以上でのみサポート</string>
|
||||
<string name="settings_sensor_type">センサータイプ</string>
|
||||
<string name="settings_sensor_type_summary">接続先センサーのタイプ</string>
|
||||
<string name="settings_heart_rate_ant_sensor_id">ANT心拍数センサーとのペアリング解消</string>
|
||||
<string name="settings_power_ant_sensor_id">ANT心拍強度センサーとのペアリング解消</string>
|
||||
<string name="settings_srm_bridge_ant_sensor_id">ANT SRMブリッジセンサーとのペアリング解消</string>
|
||||
<string name="settings_ant_not_paired">ANTセンサーとペアリングしていません</string>
|
||||
<string name="settings_ant_paired">ANTセンサーとペアリング: %d</string>
|
||||
<string name="bluetooth_sensor_title">Bluetoothセンサー</string>
|
||||
<string name="bluetooth_sensor_summary">Bluetoothセンサー接続先</string>
|
||||
<string name="settings_modular_stats_display_title">モジュール統計表示 </string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="settings_backup">バックアップ (ベータ版)</string>
|
||||
<string name="settings_sd_backup">SDカード バックアップ</string>
|
||||
<string name="settings_backup_to_sd">今すぐバックアップ</string>
|
||||
<string name="settings_backup_to_sd_summary">SDカードに全てのトラックと設定をバックアップします</string>
|
||||
<string name="settings_restore_from_sd">今すぐ復元</string>
|
||||
<string name="settings_restore_from_sd_summary">SDカードから全てのトラックと設定を復元します</string>
|
||||
<string name="settings_no_backup_while_recording">トラック記録中はバックアップ操作はできません.</string>
|
||||
|
||||
<string name="restore_overwrites_warning">SDカードからの復元を実行すると、現在のトラックと設定は *全て上書き* されてしまいます.よろしいですか?</string>
|
||||
<string name="select_backup_to_restore">復元するバックアップの選択</string>
|
||||
<string name="no_backups">バックアップがありません.</string>
|
||||
<string name="backup_write_progress_message">SDカードに全てのトラックと設定をバックアップしています.しばらくかかることがあります...</string>
|
||||
<string name="backup_import_progress_message">SDカードから全てのトラックと設定を復元しています.しばらくかかることがあります...</string>
|
||||
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">GPS衛星</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">ご使用のアカウントからのマップ選択:</string>
|
||||
<string name="create_new_map">新規マップ...</string>
|
||||
<string name="map_list_title">Googleマイマップへの送信</string>
|
||||
<string name="maps_list_loading">マップの読み込み中...</string>
|
||||
<string name="maps_list_failed">マップを読み込めませんでした!</string>
|
||||
<string name="open_map">このマップを選択</string>
|
||||
<string name="edit_map_details">マップ詳細の編集</string>
|
||||
<string name="share_map">マップの共有</string>
|
||||
<string name="share_track">トラックの共有</string>
|
||||
<string name="delete_map">アカウントからマップの削除</string>
|
||||
<string name="map_title">マップタイトル:</string>
|
||||
<string name="map_description">マップ説明:</string>
|
||||
|
||||
|
||||
<string name="map_searchable_edit">このマップとコンテンツを検索結果に表示させる</string>
|
||||
<string name="map_not_searchable_edit">このマップとコンテンツはどちらも検索結果に表示させない(直接URLで他の方が見ることは可能)</string>
|
||||
<string name="map_searchable">このマップとコンテンツは検索結果に表示されます</string>
|
||||
<string name="map_not_searchable">このマップとコンテンツはどちらも検索結果に表示されませんが,直接リンクで他の方が見ることができます.</string>
|
||||
<string name="close">閉じる</string>
|
||||
<string name="edit">編集</string>
|
||||
<string name="cancel">キャンセル</string>
|
||||
<string name="save">保存</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map">マップ共有</string>
|
||||
<string name="share_map_subject">マップを共有したいと思います</string>
|
||||
<string name="share_map_body_format">このマップに興味を持って頂けると思います:
|
||||
|
||||
@@ -236,7 +251,8 @@ limitations under the License.
|
||||
<string name="send_track_subject">トラックを共有したいと思います</string>
|
||||
<string name="send_track_body_format">このトラックに興味を持って頂けると思います.
|
||||
|
||||
このトラックを閲覧するには,Google Earthまたは他のマッピングソフトウェアが必要です.</string>
|
||||
このトラックを閲覧するには、Google Earthまたは他のマッピングソフトウェアが必要です.</string>
|
||||
<string name="share_track">トラックの共有</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">公開</string>
|
||||
@@ -290,23 +306,16 @@ limitations under the License.
|
||||
<string name="minutes">分</string>
|
||||
<string name="second">秒</string>
|
||||
<string name="seconds">秒</string>
|
||||
<string name="milliseconds">ミリ秒</string>
|
||||
|
||||
<!-- Distance -->
|
||||
<string name="meter">m</string>
|
||||
<string name="kilometer">km</string>
|
||||
<string name="kilometers_long">キロメータ</string>
|
||||
<string name="feet">ft</string>
|
||||
<string name="mile">mi</string>
|
||||
<string name="miles_long">マイル</string>
|
||||
|
||||
<!-- Speed and Pace -->
|
||||
<string name="kilometer_per_hour">km/h</string>
|
||||
<string name="kilometer_per_hour_long">キロメータ毎時</string>
|
||||
<string name="min_per_kilometer">min/km</string>
|
||||
<string name="per_kilometer">毎キロメータ</string>
|
||||
<string name="mile_per_hour">mi/h</string>
|
||||
<string name="mile_per_hour_long">マイル毎時</string>
|
||||
<string name="min_per_mile">min/mi</string>
|
||||
<string name="per_mile">毎マイル</string>
|
||||
|
||||
<!-- Stats Labels -->
|
||||
@@ -319,6 +328,10 @@ limitations under the License.
|
||||
<string name="statistics">統計</string>
|
||||
<string name="total_distance_label">合計距離</string>
|
||||
<string name="distance_label">距離</string>
|
||||
<string name="power">心拍強度</string>
|
||||
<string name="cadence">ケイデンス</string>
|
||||
<string name="heart_rate">心拍数</string>
|
||||
<string name="max_heart_rate">最大心拍数</string>
|
||||
<string name="unknown">-</string>
|
||||
<string name="waiting">待機中...</string>
|
||||
|
||||
@@ -332,16 +345,13 @@ limitations under the License.
|
||||
<string name="help">ヘルプ</string>
|
||||
<string name="about_team">チーム:</string>
|
||||
<string name="about_version">バージョン:</string>
|
||||
<string name="about_email">サポート</string>
|
||||
<string name="about_support">サポート:</string>
|
||||
<string name="about_privacy">プライバシー:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">送信...</string>
|
||||
<string name="sendtogoogle_google_mymaps">Googleマイマップ</string>
|
||||
<string name="sendtogoogle_google_docs">Google Docs</string>
|
||||
<string name="sendtogoogle_google_fusiontables">Googleマイマップ</string>
|
||||
<string name="sendtogoogle_send_now">今すぐ送信</string>
|
||||
<string name="sendtogoogle_create_new_map">新規マップ作成</string>
|
||||
<string name="sendtogoogle_pick_existing_map">既存マップ選択</string>
|
||||
<string name="sendtogoogle_send_stats">トラック統計情報送信</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">統計情報とポイント送信</string>
|
||||
|
||||
@@ -351,22 +361,23 @@ limitations under the License.
|
||||
<string name="choose_account_title">アカウント選択</string>
|
||||
|
||||
<!-- SD card -->
|
||||
<string name="io_no_external_storage_found">外部ストレージを発見できませんでした.SDカードが刺さっているか,端末がコンピュータにマウントされているか確認してください.</string>
|
||||
<string name="io_no_external_storage_found">外部ストレージを発見できませんでした.SDカードが刺さっているか、端末がコンピュータにマウントされていないか確認してください.</string>
|
||||
<string name="io_write_failed">ファイルへの書き込みができません.</string>
|
||||
<string name="io_read_failed">ファイルからの読み込みができません.</string>
|
||||
<string name="io_create_dir_failed">SDカードにディレクトリを作成できません.</string>
|
||||
<string name="io_write_finished">SDカードへの書き込み終了.</string>
|
||||
<string name="io_read_finished">SDカードからの読み込み終了.</string>
|
||||
|
||||
<!-- VersionChecker -->
|
||||
<string name="version_check_title">アップグレードチェック</string>
|
||||
<string name="version_check_upgrade_button">今すぐアップデート</string>
|
||||
<string name="version_check_upgrade_button">今すぐアップグレード</string>
|
||||
<string name="version_check_continue_button">アップグレードせずに続行</string>
|
||||
<string name="upgrade_required">お使いの版では,確実には動作せず,サポートもされません.ご使用を続けるには %1$s のアップグレードしてください.</string>
|
||||
<string name="upgrade_recommended">お使いの版では,確実には動作しません.すぐにアップグレードすることをお勧めします.アップグレードされない場合は問題発生の可能性があることをご認識ください. サーバ同期するような機能の中には,アップグレードされるまで機能しないものがあります.</string>
|
||||
<string name="upgrade_available">%1$s の新しい版が出ています.現版で問題なくご使用になれますが,アップグレードするまで最新の機能をお使いになれません.</string>
|
||||
<string name="upgrade_required">お使いの版では、確実には動作せず、サポートもされません.ご使用を続けるには %1$s をアップグレードしてください.</string>
|
||||
<string name="upgrade_recommended">お使いの版では、確実には動作しません.すぐにアップグレードすることをお勧めします.アップグレードされない場合は問題発生の可能性があることをご認識ください. サーバ同期するような機能の中には、アップグレードされるまで機能しないものがあります.</string>
|
||||
<string name="upgrade_available">%1$s の新しい版が出ています.現版で問題なくご使用になれますが、アップグレードするまで最新の機能をお使いになれません.</string>
|
||||
|
||||
<!-- Welcome -->
|
||||
<string name="welcome">ようこそ</string>
|
||||
<string name="welcome_read_later">Ok</string>
|
||||
<string name="welcome_about">My Tracksについて</string>
|
||||
|
||||
<!-- Announcement -->
|
||||
@@ -385,11 +396,37 @@ limitations under the License.
|
||||
<string name="check_units_title">計測単位についてのご注意</string>
|
||||
<string name="check_units_message">デフォルトの単位はメートルです.設定を変更しますか?</string>
|
||||
|
||||
<!-- Signal Strength -->
|
||||
<string name="error_rate"> 誤り率: %1$d</string>
|
||||
<string name="signal_to_noise_ratio"> S/N比: %1$d</string>
|
||||
<string name="ecio"> Ec/Io比: %1$.1f dB</string>
|
||||
<string name="gsm_strength">GSM 強度: %1$d</string>
|
||||
<string name="cdma_strength">CDMA 強度: %1$d dBm</string>
|
||||
<string name="evdo_strength">EVDO 強度: %1$d dBm</string>
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<!-- string name="method_bluetooth">Bluetooth</string --> <!-- duplicate -->
|
||||
<string name="bluetooth_options">Bluetoothオプション</string>
|
||||
<string name="bluetooth_pairing">ペアリング</string>
|
||||
<string name="bluetooth_pairing_summary">ペアリングを行うには「Bluetooth設定」を開いて下さい</string>
|
||||
<string name="sensor_bluetooth_options_key">bluetoothSensorsEnabled</string>
|
||||
<string name="sensor_options">センサーオプション</string>
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">%sに接続しました</string>
|
||||
<string name="bluetooth_connecting">Bluetoothセンサー接続中...</string>
|
||||
<string name="bluetooth_not_connected">Bluetoothセンサーに接続していません</string>
|
||||
|
||||
<!-- Sensor State -->
|
||||
<string name="sensor_data_time">計測日時</string>
|
||||
<string name="power_meter_enabled">パワーメーター有効</string>
|
||||
<string name="heart_rate_monitor_enabled">心拍数モニタ有効</string>
|
||||
<string name="no_sensor_manager">センサーマネージャがありません</string>
|
||||
<string name="enabled">有効</string>
|
||||
<string name="connecting">接続中</string>
|
||||
<string name="connected">接続</string>
|
||||
<string name="disconnected">解除</string>
|
||||
<string name="no_sensor_service">センサーサービスがありません</string>
|
||||
<string name="searching">検索中</string>
|
||||
<string name="sending">送信中</string>
|
||||
|
||||
<!-- Manifest description (not seen inside the app) -->
|
||||
<string name="notification_permission_label">トラック記録通知受信</string>
|
||||
<string name="read_tracks_permission_label">トラック読み込み</string>
|
||||
<string name="write_tracks_permission_label">トラック書き込み トラック記録の開始・終了</string>
|
||||
<string name="notification_permission_description">トラック記録の開始・終了時に通知されます.</string>
|
||||
<string name="read_tracks_permission_description">ポイントやウェイポイントといったトラックの読み込みを可能にします.</string>
|
||||
<string name="write_tracks_permission_description">記録開始やウェイポイント追加といったトラック記録を可能にします.</string>
|
||||
</resources>
|
||||
|
||||
@@ -34,7 +34,7 @@ limitations under the License.
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Brak menedżera lokalizacji na urządzeniu!</string>
|
||||
<string name="error_no_gps_location_provider">Brak dostawcy lokalizacji GPS na urządzeniu.</string>
|
||||
<string name="error_sending_to_mymap">Podczas przesyłania pliku do Moich Map Google pojawił się błąd. Spróbuj ponownie później.</string>
|
||||
<string name="error_sending_to_fusiontables">Podczas przesyłania pliku do Moich Map Google pojawił się błąd. Spróbuj ponownie później.</string>
|
||||
<string name="error_sending_to_docs">Podczas przesyłania pliku do Dokumentów Google pojawił się błąd. Spróbuj ponownie później.</string>
|
||||
<string name="error_unable_to_start_recording">Nie można rozpocząć rejestrowania. Spróbuj ponownie.</string>
|
||||
<string name="error_unable_to_stop_recording">Nie można zakończyć rejestrowania. Spróbuj ponownie.</string>
|
||||
@@ -49,11 +49,10 @@ limitations under the License.
|
||||
<string name="wait_for_fix">Oczekiwanie na lepsze ustalenie pozycji GPS. Upewnij się, że niebo jest widoczne.</string>
|
||||
<string name="status_now_recording">Rejestrowanie nowej trasy.</string>
|
||||
<string name="status_stopped_recording">Zatrzymano rejestrowanie nowej trasy.</string>
|
||||
<string name="status_new_mymap_has_been_created">Utworzona nową Mapę Google na maps.google.com.</string>
|
||||
<!-- <string name="status_new_fusiontable_has_been_created">Utworzona nową Mapę Google na maps.google.com.</string> -->
|
||||
<string name="status_tracks_have_been_uploaded">Twoja trasa został wysłana do maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Twoja trasa została wysłana do nowego arkusza na docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Twoja trasa została wysłana do docs.google.com.</string>
|
||||
<string name="status_mymap_info">Trasa będzie widoczna za kilka minut.</string>
|
||||
<string name="status_enable_gps">Tapnij tutaj, aby przejść do ustawień Lokalizacji i zabezpieczeń, a następnie zaznacz Użyj satelitów GPS. Naciśnij klawisz Wstecz, aby powrócić.</string>
|
||||
<string name="status_approximate_location">Uwaga: używana jest przybliżona lokalizacja ustalona za pomocą stacji komórkowych i sieci WIFI.</string>
|
||||
<string name="status_no_location">Lokalizacja nie może być obecnie ustalona. Włącz wiecej źródeł (zobacz ustawienia Lokalizacji i zabezpieczeń) i upewnij się, że niebo jest widoczne. Spróbuj później.</string>
|
||||
@@ -65,11 +64,11 @@ limitations under the License.
|
||||
<string name="progress_message">Przesyłanie trasy do Google.</string>
|
||||
<string name="progress_message_reading_track">Czytanie trasy...</string>
|
||||
<string name="progress_message_preparing_track">Przygotowywanie trasy...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Uwierzytelnianie w Mapach Google...</string>
|
||||
<!-- <string name="progress_message_authenticating_fusiontables">Uwierzytelnianie w Mapach Google...</string> -->
|
||||
<string name="progress_message_authenticating_docs">Uwierzytelnianie w Dokumentach Google...</string>
|
||||
<string name="progress_message_sending_docs">Przesyłanie trasy do Dokumentów Google...</string>
|
||||
<string name="progress_message_sending_mymaps">Przesyłanie trasy do Map Google...</string>
|
||||
<string name="progress_message_creating_map">Tworzenie nowej Mojej Mapy...</string>
|
||||
<!-- <string name="progress_message_sending_fusiontables">Przesyłanie trasy do Map Google...</string> -->
|
||||
<!-- <string name="progress_message_creating_fusiontable">Tworzenie nowej Mojej Mapy...</string> -->
|
||||
<string name="import_progress_message">Importowanie trasy GPS. Poczekaj chwilę.</string>
|
||||
<string name="write_progress_message">Zapisywanie pliku na kartę SD. Poczekaj chwilę.</string>
|
||||
<string name="progress_message_updating_track">Aktualizacja statystyk trasy...</string>
|
||||
@@ -82,8 +81,7 @@ limitations under the License.
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">Utworzono za pomocą My Tracks na Android.</string>
|
||||
<string name="my_map_link">Utworzona przez <a href=\'http://mytracks.appspot.com\'>My Tracks</a> na Android.</string>
|
||||
<string name="new_map_title">Nowa mapa</string>
|
||||
<string name="fusiontable_link">Utworzona przez <a href=\'http://mytracks.appspot.com\'>My Tracks</a> na Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Punkty</string>
|
||||
@@ -103,6 +101,10 @@ limitations under the License.
|
||||
<string name="error">Błąd</string>
|
||||
<string name="success">Powodzenie</string>
|
||||
<string name="waypoint">Punkt orientacyjny</string>
|
||||
<string name="cancel">Anuluj</string>
|
||||
<string name="close">Zamknij</string>
|
||||
<string name="edit">Edytuj</string>
|
||||
<string name="save">Zapisz</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Początek)</string>
|
||||
@@ -110,8 +112,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Pokaż</string>
|
||||
<string name="tracklist_send_to_mymaps">Wyślij do Moich Map Google</string>
|
||||
<string name="tracklist_send_to_new_mymap">Wyślij do Moich Map Google jako nową mapę</string>
|
||||
<!-- <string name="tracklist_send_to_fusiontables">Wyślij do Moich Map Google</string> -->
|
||||
<!-- <string name="tracklist_send_to_new_fusiontable">Wyślij do Moich Map Google jako nową mapę</string> -->
|
||||
<string name="tracklist_send_to_docs">Wyślij do Dokumentów Google</string>
|
||||
<string name="tracklist_send_to_google">Wyślij do Google...</string>
|
||||
<string name="tracklist_delete_track">Usuń z telefonu...</string>
|
||||
@@ -120,7 +122,7 @@ limitations under the License.
|
||||
<string name="tracklist_save_as_gpx">Zapisz plik GPX</string>
|
||||
<string name="tracklist_save_as_kml">Zapisz plik KML</string>
|
||||
<string name="tracklist_save_as_csv">Zapisz plik CSV</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Wyślij do Moich Map Google</string>
|
||||
<!-- <string name="tracklist_btn_send_all_to_fusiontables">Wyślij do Moich Map Google</string> -->
|
||||
<string name="tracklist_btn_delete_all">Usuń wszystkie trasy</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Eksportuj wszystkie trasy</string>
|
||||
@@ -129,7 +131,6 @@ limitations under the License.
|
||||
<string name="tracklist_all_tracks">Wszystkie trasy:</string>
|
||||
<string name="tracklist_this_track">Ta trasa</string>
|
||||
<string name="tracklist_share_track">Podziel się z przyjaciółmi...</string>
|
||||
<string name="tracklist_share_link">Link do Moich Map Google</string>
|
||||
<string name="tracklist_share_gpx_file">Plik GPX</string>
|
||||
<string name="tracklist_share_kml_file">PLik KML</string>
|
||||
<string name="tracklist_share_csv_file">Plik CSV</string>
|
||||
@@ -195,9 +196,6 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">Tylko odnośnik do mapy będzie wysyłany podczas dzielenia się</string>
|
||||
<string name="settings_share_url_only_summary_off">Zawartość trasy będzie również przesyłana</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Częstotliowść próbkowania sygnału</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Czas między dwoma zapisami siły sygnału telefonu</string>
|
||||
|
||||
<string name="settings_split_frequency">Częstotliwość rozdzielania</string>
|
||||
<string name="settings_split_frequency_summary">Maksymalny czas lub odległość po którym wstawiony zostanie znacznik rozdzielenia</string>
|
||||
|
||||
@@ -209,14 +207,9 @@ limitations under the License.
|
||||
<string name="eclair_required">Dostępne tylko w wersji Android 2.0 lub nowszej</string>
|
||||
<string name="settings_sensor_type">Typ Czujnika</string>
|
||||
<string name="settings_sensor_type_summary">Typ czujnika do podłączenia.</string>
|
||||
<string name="settings_sensor_id">Id Czujnika</string>
|
||||
<string name="settings_sensor_id_summary">Identyfikator wysyłany do czujników.</string>
|
||||
<string name="sensor_id_malformed">Identyfikator musi być liczbą całkowitą.</string>
|
||||
<string name="bluetooth_sensor_title">Czujnik bluetooth</string>
|
||||
<string name="bluetooth_sensor_summary">Czujnik bluetooth do podłączenia.</string>
|
||||
<string name="settings_modular_stats_display_title">Widok Statystyk Modularnych</string>
|
||||
<string name="settings_modular_stats_display_summary_on">Ekran statystyk jest podzielony w zależności od trybu.</string>
|
||||
<string name="settings_modular_stats_display_summary_off">Wyświetl wszystkie statystyki na jednym ekranie.</string>
|
||||
|
||||
<string name="settings_backup">Kopia zapasowa (BETA)</string>
|
||||
<string name="settings_sd_backup">Kopia zapasowa na kartę SD</string>
|
||||
@@ -236,28 +229,6 @@ limitations under the License.
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">Satelity GPS</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">Wybierz mapę z twojego konta:</string>
|
||||
<string name="create_new_map">Utwórz nową mapę...</string>
|
||||
<string name="map_list_title">Wyślij do Moich Map Google</string>
|
||||
<string name="maps_list_loading">Wczytywanie map...</string>
|
||||
<string name="maps_list_failed">Nie można wczytać twoich map!</string>
|
||||
<string name="open_map">Wybierz tę mapę</string>
|
||||
<string name="edit_map_details">Edytuj szczegóły mapy</string>
|
||||
<string name="share_map">Podziel się mapą z przyjaciółmi</string>
|
||||
<string name="share_track">Podziel się trasą z przyjaciółmi</string>
|
||||
<string name="delete_map">Usuń mapę z twojego konta</string>
|
||||
<string name="map_title">Tytuł mapy:</string>
|
||||
<string name="map_description">Opis mapy:</string>
|
||||
<string name="map_searchable_edit">Pokazuj tę pamę i jej zawartość w wynikach wyszukiwania</string>
|
||||
<string name="map_not_searchable_edit">Nie pokazuj tej mapy i jej zawartości w wynikach wyszukiwania. Dostęp do mapy będzie ciągle możliwy poprzez odnośnik</string>
|
||||
<string name="map_searchable">Ta mapa i jej zawartość będzie dostępna w wynikach wyszukiwania</string>
|
||||
<string name="map_not_searchable">Mapa i jej zawartość nie będzie dostępna w wynikach wyszukiwania, ale będzie dostępna przez bezpośredni odnośnik</string>
|
||||
<string name="close">Zamknij</string>
|
||||
<string name="edit">Edytuj</string>
|
||||
<string name="cancel">Anuluj</string>
|
||||
<string name="save">Zapisz</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">Chciałbym się z Tobą podzielić mapą</string>
|
||||
<string name="share_map_body_format">Myślę, że może Cię zainteresować ta mapa:
|
||||
@@ -267,6 +238,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">Myślę, że może Cię zainteresować ta trasa.
|
||||
|
||||
Trasę możesz obejrzeć w Google Earth lub innym programie do obsługi map.</string>
|
||||
<string name="share_track">Podziel się trasą z przyjaciółmi</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Publiczna</string>
|
||||
@@ -362,16 +334,14 @@ limitations under the License.
|
||||
<string name="help">Pomoc</string>
|
||||
<string name="about_team">Zespół:</string>
|
||||
<string name="about_version">Wersja:</string>
|
||||
<string name="about_email">Wsparcie</string>
|
||||
<string name="about_support">Wsparcie:</string>
|
||||
<string name="about_bart">Bartłomiej Niechwiej</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Wyślij do...</string>
|
||||
<string name="sendtogoogle_google_mymaps">Moje Mapy Google</string>
|
||||
<!-- <string name="sendtogoogle_google_fusiontables">Moje Mapy Google</string> -->
|
||||
<string name="sendtogoogle_google_docs">Dokumenty Google</string>
|
||||
<string name="sendtogoogle_send_now">Wyślij teraz</string>
|
||||
<string name="sendtogoogle_create_new_map">Utwórz nową mapę</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Wybierz istniejąca mapę</string>
|
||||
<string name="sendtogoogle_send_stats">Wyślij statystyki trasy</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Wyślij statystyki i punkty</string>
|
||||
|
||||
@@ -416,12 +386,4 @@ limitations under the License.
|
||||
<!-- Check Units -->
|
||||
<string name="check_units_title">Jednostki miary</string>
|
||||
<string name="check_units_message">Domyślnie używane są jednostki metryczne. Chcesz to zmienić?</string>
|
||||
|
||||
<!-- Signal Strength -->
|
||||
<string name="error_rate"> Poziom błędów: %1$d</string>
|
||||
<string name="signal_to_noise_ratio"> Stosunek sygnału do szumu: %1$d</string>
|
||||
<string name="ecio"> Ec/lo: %1$.1f dB</string>
|
||||
<string name="gsm_strength">Siła GSM: %1$d</string>
|
||||
<string name="cdma_strength">Siła CDMA: %1$d dBm</string>
|
||||
<string name="evdo_strength">Siła EVDO: %1$d dBm</string>
|
||||
</resources>
|
||||
|
||||
@@ -18,9 +18,9 @@ limitations under the License.
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">Gravar caminho</string>
|
||||
<string name="stop_recording">Para gravação</string>
|
||||
<string name="switch_to_sat">Modo do satélite"</string>
|
||||
<string name="switch_to_map">Modo do mapa"</string>
|
||||
<string name="mylocation">Minha Localização"</string>
|
||||
<string name="switch_to_sat">Modo do satélite</string>
|
||||
<string name="switch_to_map">Modo do mapa</string>
|
||||
<string name="mylocation">Minha Localização</string>
|
||||
<string name="list_tracks">Caminhos</string>
|
||||
<string name="list_markers">Marcadores</string>
|
||||
<string name="delete_all_tracks">Apagar todos os caminhos</string>
|
||||
@@ -31,10 +31,10 @@ limitations under the License.
|
||||
<string name="current_segment">Último segmento</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Gerenciador de localização não encontrado neste dispositivo!"</string>
|
||||
<string name="error_no_gps_location_provider">"Provedor de posição de GPS não encontrado neste dispositivo."</string>
|
||||
<string name="error_sending_to_mymap">Ocorreu um erro ao enviar seu caminho para o Google Meu Mapa. Por favor tente novamente mais tarde."</string>
|
||||
<string name="error_sending_to_docs">Ocorreu um erro ao enviar seu caminho para o Google Docs. Por favor tente novamente mais tarde."</string>
|
||||
<string name="error_no_location_manager">Gerenciador de localização não encontrado neste dispositivo!</string>
|
||||
<string name="error_no_gps_location_provider">"Provedor de posição de GPS não encontrado neste dispositivo.</string>
|
||||
<string name="error_sending_to_fusiontables">Ocorreu um erro ao enviar seu caminho para o Google Fusion Tables. Por favor tente novamente mais tarde.</string>
|
||||
<string name="error_sending_to_docs">Ocorreu um erro ao enviar seu caminho para o Google Docs. Por favor tente novamente mais tarde.</string>
|
||||
<string name="error_unable_to_start_recording">Impossível iniciar a gravação. Tente novamente.</string>
|
||||
<string name="error_unable_to_stop_recording">Impossível interromper a gravação. Tente novamente.</string>
|
||||
<string name="error_unable_to_read_file">Impossível ler do arquivo.</string>
|
||||
@@ -48,12 +48,11 @@ limitations under the License.
|
||||
<string name="wait_for_fix">Esperando por um sinal melhor do GPS. Assegure-se de que o céu está visível.</string>
|
||||
<string name="status_now_recording">Gravando um novo caminho.</string>
|
||||
<string name="status_stopped_recording">Gravação interrompida.</string>
|
||||
<string name="status_new_mymap_has_been_created">Um novo Meu Mapa Google foi criado em maps.google.com.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">Uma nova Fusion Table Google foi criada em google.com/fusiontables.</string>
|
||||
<string name="status_tracks_have_been_uploaded">Seu caminho foi enviado para maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Seu caminho foi enviado para uma nova planilha em docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Seu caminho foi enviado para docs.google.com.</string>
|
||||
<string name="status_mymap_info">"Pode demorar alguns minutor para que novos caminhos apareçam.</string>
|
||||
<string name="status_enable_gps">"Por favor pressione aqui para ir aos ajustes de segurança e localização e verifique que o GPS esteja habilitado. Pressione o botão de voltar para retornar."</string>
|
||||
<string name="status_enable_gps">"Por favor pressione aqui para ir aos ajustes de segurança e localização e verifique que o GPS esteja habilitado. Pressione o botão de voltar para retornar.</string>
|
||||
<string name="status_approximate_location">Nota: Uma localização aproximada, determinada por torres de telefonia celular, está sendo mostrada.</string>
|
||||
<string name="status_no_location">Sua localização não pôde ser determinada. Habilite fontes adicionais de localização (veja configurações de Segurança e Localização) e assegure-se de que o céu está visível.</string>
|
||||
<string name="status_waypoint_inserted">Um marcador de ponto de passagem foi inserido.</string>
|
||||
@@ -64,11 +63,11 @@ limitations under the License.
|
||||
<string name="progress_message">Enviando seu caminho ao Google.</string>
|
||||
<string name="progress_message_reading_track">Lendo caminho...</string>
|
||||
<string name="progress_message_preparing_track">Preparando caminho...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Autenticando com o Google Maps...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">Autenticando com o Google Fusion Tables...</string>
|
||||
<string name="progress_message_authenticating_docs">Authenticando com o Google Docs...</string>
|
||||
<string name="progress_message_sending_docs">Enviando caminho para o Google Docs...</string>
|
||||
<string name="progress_message_sending_mymaps">Enviando caminho para o Google Maps...</string>
|
||||
<string name="progress_message_creating_map">Criando novo Meu Mapa...</string>
|
||||
<string name="progress_message_sending_fusiontables">Enviando caminho para o Google Fusion Tables...</string>
|
||||
<string name="progress_message_creating_fusiontable">Criando nova Fusion Table...</string>
|
||||
<string name="import_progress_message">Importando um caminho de GPS. Isso pode demorar alguns instantes.</string>
|
||||
<string name="write_progress_message">Salvando arquivo para o cartão SD. Isso pode demorar alguns instantes.</string>
|
||||
<string name="progress_message_updating_track">Atualizando estatísticas do caminho...</string>
|
||||
@@ -80,20 +79,19 @@ limitations under the License.
|
||||
<string name="marker_will_be_permanently_deleted">O marcador será permanentemente apagado deste telefone.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">"Criado por My Tracks no Android."</string>
|
||||
<string name="my_map_link">"Criado por <a href='http://mytracks.appspot.com'>My Tracks</a> no Android."</string>
|
||||
<string name="new_map_title">Novo mapa</string>
|
||||
<string name="new_map_description">"Criado por My Tracks no Android.</string>
|
||||
<string name="fusiontable_link">"Criado por <a href='http://mytracks.appspot.com'>My Tracks</a> no Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Pontos</string>
|
||||
<string name="recorded_date">Gravado"</string>
|
||||
<string name="category">"Tipo de atividade"</string>
|
||||
<string name="waypoint_category">"Tipo de marcador"</string>
|
||||
<string name="part">"(Parte %d)"</string>
|
||||
<string name="recorded_date">Gravado</string>
|
||||
<string name="category">"Tipo de atividade</string>
|
||||
<string name="waypoint_category">"Tipo de marcador</string>
|
||||
<string name="part">"(Parte %d)</string>
|
||||
|
||||
<!-- Used by the track recording service -->
|
||||
<string name="recording_your_track">"Gravando seu caminho..."</string>
|
||||
<string name="new_track">"Caminho %d"</string>
|
||||
<string name="recording_your_track">"Gravando seu caminho...</string>
|
||||
<string name="new_track">"Caminho %d</string>
|
||||
|
||||
<!-- Common -->
|
||||
<string name="no">Não</string>
|
||||
@@ -101,6 +99,10 @@ limitations under the License.
|
||||
<string name="error">Erro</string>
|
||||
<string name="success">Successo</string>
|
||||
<string name="waypoint">Ponto de passagem</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="close">Fechar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="save">Salvar</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Início)</string>
|
||||
@@ -108,8 +110,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Mostrar</string>
|
||||
<string name="tracklist_send_to_mymaps">Enviar para o Google Meus Mapas</string>
|
||||
<string name="tracklist_send_to_new_mymap">Enviar para o novo Google Meu Mapa</string>
|
||||
<string name="tracklist_send_to_fusiontables">Enviar para o Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">Enviar para nova Google Fusion Table</string>
|
||||
<string name="tracklist_send_to_docs">Enviar para o Google Docs</string>
|
||||
<string name="tracklist_send_to_google">Enviar para o Google...</string>
|
||||
<string name="tracklist_delete_track">Apagar do telefone...</string>
|
||||
@@ -117,25 +119,25 @@ limitations under the License.
|
||||
<string name="tracklist_write_to_sd">Salvar no cartão SD...</string>
|
||||
<string name="tracklist_save_as_gpx">Salvar arquivo GPX</string>
|
||||
<string name="tracklist_save_as_kml">Salvar arquivo KML</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Enviar para o Google Meus Mapas</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Enviar para o Google Fusion Tables</string>
|
||||
<string name="tracklist_btn_delete_all">Apagar todos os caminhos</string>
|
||||
<string name="tracklist_pick_one">Escolha um caminho. Pressione&segure para mais opções.</string>
|
||||
<string name="tracklist_all_tracks">Todos os Caminhos:"</string>
|
||||
<string name="tracklist_this_track">Este Caminho"</string>
|
||||
<string name="tracklist_share_track">Compartilhar com amigos..."</string>
|
||||
<string name="tracklist_share_link">Um link para o Google Meu Mapa"</string>
|
||||
<string name="tracklist_share_gpx_file">Um arquivo GPX"</string>
|
||||
<string name="tracklist_share_kml_file">Um arquivo KML"</string>
|
||||
<string name="tracklist_clear_map">"Limpar mapa"</string>
|
||||
<string name="tracklist_all_tracks">Todos os Caminhos:</string>
|
||||
<string name="tracklist_this_track">Este Caminho</string>
|
||||
<string name="tracklist_share_track">Compartilhar com amigos...</string>
|
||||
<string name="tracklist_share_link">Um link para a mapa</string>
|
||||
<string name="tracklist_share_gpx_file">Um arquivo GPX</string>
|
||||
<string name="tracklist_share_kml_file">Um arquivo KML</string>
|
||||
<string name="tracklist_clear_map">Limpar mapa</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
<string name="waypointslist_btn_delete_all">Apagar todos os marcadores</string>
|
||||
<string name="waypointslist_this_waypoint">Este Marcador</string>
|
||||
<string name="waypointslist_delete_waypoint">Apagar</string>
|
||||
<string name="waypointslist_edit_waypoint">Editar detalhes"</string>
|
||||
<string name="waypointslist_show_waypoint">Mostrar no mapa"</string>
|
||||
<string name="waypointslist_btn_insert_waypoint">Inserir ponto no caminho"</string>
|
||||
<string name="waypointslist_btn_insert_statistics">Inserir estatísticas"</string>
|
||||
<string name="waypointslist_edit_waypoint">Editar detalhes</string>
|
||||
<string name="waypointslist_show_waypoint">Mostrar no mapa</string>
|
||||
<string name="waypointslist_btn_insert_waypoint">Inserir ponto no caminho</string>
|
||||
<string name="waypointslist_btn_insert_statistics">Inserir estatísticas</string>
|
||||
<string name="waypointslist_pick_one">Escolha um marcador. Pressione&segure para mais opções.</string>
|
||||
|
||||
<!-- MyTracks Details -->
|
||||
@@ -184,28 +186,6 @@ limitations under the License.
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">Satélites de GPS</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">Escolha um mapa da sua conta:</string>
|
||||
<string name="create_new_map">Criar novo mapa...</string>
|
||||
<string name="map_list_title">Enviar para o Google Meus Mapas</string>
|
||||
<string name="maps_list_loading">Carregando mapas...</string>
|
||||
<string name="maps_list_failed">Seus mapas não puderam ser carregados neste momento!</string>
|
||||
<string name="open_map">Selecionar este Mapa</string>
|
||||
<string name="edit_map_details">Editar detalhes do mapa</string>
|
||||
<string name="share_map">Compartilhar mapa com amigos</string>
|
||||
<string name="share_track">Compartilhar caminho com amigos</string>
|
||||
<string name="delete_map">Apagar mapa da sua conta</string>
|
||||
<string name="map_title">Título do Mapa:</string>
|
||||
<string name="map_description">Descrição do Mapa:</string>
|
||||
<string name="map_searchable_edit">Fazer com que o conteúdo deste mapa apareça em resultados de buscas</string>
|
||||
<string name="map_not_searchable_edit">Não permitir que este mapa ou seu conteúdo apareçam em resultados de buscas, porém ele ainda pode ser visto por sua URL direta</string>
|
||||
<string name="map_searchable">Este mapa e seu conteúdo vão aparecer em resultados de buscas</string>
|
||||
<string name="map_not_searchable">Nem este mapa nem seu conteúdo vão aparecer em resultados de buscas, porém outras pessoas ainda podem vê-los se obtiverem sua URL direta</string>
|
||||
<string name="close">Fechar</string>
|
||||
<string name="edit">Editar</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="save">Salvar</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">Eu gostaria de compartilhar um mapa com você</string>
|
||||
<string name="share_map_body_format">Eu acredito que você pode se interessar por este mapa:
|
||||
@@ -215,6 +195,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">Eu acredito que você pode se interesasr por este caminho.
|
||||
|
||||
Para visualizar este caminho, use o Google Earth ou outro software de mapas.</string>
|
||||
<string name="share_track">Compartilhar caminho com amigos</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Público</string>
|
||||
@@ -298,19 +279,14 @@ limitations under the License.
|
||||
<!-- About -->
|
||||
<string name="about">Sobre</string>
|
||||
<string name="help">Ajuda</string>
|
||||
<string name="about_email">Suporte</string>
|
||||
|
||||
<string name="about_team">Equipe:</string>
|
||||
<string name="about_version">Versão:</string>
|
||||
<string name="about_support">Suporte:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Enviar para...</string>
|
||||
<string name="sendtogoogle_google_mymaps">Google Meus Mapas</string>
|
||||
<string name="sendtogoogle_google_docs">Google Docs</string>
|
||||
<string name="sendtogoogle_send_now">Enviar agora</string>
|
||||
<string name="sendtogoogle_create_new_map">Criar novo mapa</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Escolher um mapa existente</string>
|
||||
<string name="sendtogoogle_send_stats">Enviar estatísticas do caminho</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Enviar estatísticas e pontos</string>
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ limitations under the License.
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">Ingen platshanterare hittades på denna enhet!</string>
|
||||
<string name="error_no_gps_location_provider">Ingen GPS-positioneringstjänst hittades på denna enhet.</string>
|
||||
<string name="error_sending_to_mymap">Det uppstod ett fel i sändningen av ditt spår till Google Mina Kartor. Försök igen senare.</string>
|
||||
<string name="error_sending_to_fusiontables">Det uppstod ett fel i sändningen av ditt spår till Google Fusion Tables. Försök igen senare.</string>
|
||||
<string name="error_sending_to_docs">Det uppstod ett fel i sändningen av ditt spår till Google Dokument. Försök igen senare.</string>
|
||||
<string name="error_unable_to_start_recording">Kan inte starta inspelningen. Försök igen.</string>
|
||||
<string name="error_unable_to_stop_recording">Kan inte stoppa inspelningen. Försök igen.</string>
|
||||
@@ -49,11 +49,10 @@ limitations under the License.
|
||||
<string name="wait_for_fix">Väntar på bättre GPS-position. Se till att himlen är synlig.</string>
|
||||
<string name="status_now_recording">Spelar nu in ett nytt spår.</string>
|
||||
<string name="status_stopped_recording">Stoppade inspelning av ditt spår.</string>
|
||||
<string name="status_new_mymap_has_been_created">En ny Google Mina Kartor har skapats på maps.google.com.</string>
|
||||
<!-- <string name="status_new_fusiontable_has_been_created">En ny Google Mina Kartor har skapats på maps.google.com.</string> -->
|
||||
<string name="status_tracks_have_been_uploaded">Ditt spår har skickats till maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Ditt spår har skickats till ett nytt kalkylblad på docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Ditt spår har skickats till docs.google.com.</string>
|
||||
<string name="status_mymap_info">Det kan ibland ta några minuter innan nya spår visas.</string>
|
||||
<string name="status_enable_gps">Klicka här för att gå till Säkerhet och Platsinställningar och kryssa i \'aktivera gps-satteliter\'. Tryck på tillbakaknappen för att återgå.</string>
|
||||
<string name="status_approximate_location">OBS: En ungefärlig position som avgörs från mobilmaster och WIFI-nät visas.</string>
|
||||
<string name="status_no_location">En position kan för närvarande inte fastställas. Aktivera mer platskällor (se Säkerhet och Platsinställningar) och se till att himlen är synlig. Försök igen senare.</string>
|
||||
@@ -65,11 +64,11 @@ limitations under the License.
|
||||
<string name="progress_message">Skickar ditt spår till Google.</string>
|
||||
<string name="progress_message_reading_track">Läser spår...</string>
|
||||
<string name="progress_message_preparing_track">Förbereder spår...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Autentiserar till Google Kartor...</string>
|
||||
<!-- <string name="progress_message_authenticating_fusiontables">Autentiserar till Google Kartor...</string> -->
|
||||
<string name="progress_message_authenticating_docs">Autentiserar till Google Dokument...</string>
|
||||
<string name="progress_message_sending_docs">Skickar spår till Google Dokument...</string>
|
||||
<string name="progress_message_sending_mymaps">Skickar spår till Google Kartor...</string>
|
||||
<string name="progress_message_creating_map">Skapar en ny Min Karta...</string>
|
||||
<!-- <string name="progress_message_sending_fusiontables">Skickar spår till Google Kartor...</string> -->
|
||||
<!-- <string name="progress_message_creating_fusiontable">Skapar en ny Min Karta...</string> -->
|
||||
<string name="import_progress_message">Importerar ett GPS-spår. Detta kan ta en stund.</string>
|
||||
<string name="write_progress_message">Skriver till SD-kortet. Detta kan ta en stund.</string>
|
||||
<string name="progress_message_updating_track">Uppdaterar spårstatistik...</string>
|
||||
@@ -82,8 +81,7 @@ limitations under the License.
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">Skapad av My Tracks på Android.</string>
|
||||
<string name="my_map_link">Skapad av <a href=\'http://mytracks.appspot.com\'>My Tracks</a> på Android.</string>
|
||||
<string name="new_map_title">Ny karta</string>
|
||||
<string name="fusiontable_link">Skapad av <a href=\'http://mytracks.appspot.com\'>My Tracks</a> på Android.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">Punkter</string>
|
||||
@@ -103,6 +101,10 @@ limitations under the License.
|
||||
<string name="error">Fel</string>
|
||||
<string name="success">Lyckades</string>
|
||||
<string name="waypoint">Positionsmärke</string>
|
||||
<string name="cancel">Avbryt</string>
|
||||
<string name="close">Stäng</string>
|
||||
<string name="edit">Ändra</string>
|
||||
<string name="save">Spara</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Start)</string>
|
||||
@@ -110,8 +112,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">Visa</string>
|
||||
<string name="tracklist_send_to_mymaps">Skicka till Google Mina Kartor</string>
|
||||
<string name="tracklist_send_to_new_mymap">Skicka till ny Google Mina Kartor</string>
|
||||
<!-- <string name="tracklist_send_to_fusiontables">Skicka till Google Mina Kartor</string> -->
|
||||
<!-- <string name="tracklist_send_to_new_fusiontable">Skicka till ny Google Mina Kartor</string> -->
|
||||
<string name="tracklist_send_to_docs">Skicka till Google Dokument</string>
|
||||
<string name="tracklist_send_to_google">Skicka till Google...</string>
|
||||
<string name="tracklist_delete_track">Ta bort från telefonen...</string>
|
||||
@@ -120,7 +122,7 @@ limitations under the License.
|
||||
<string name="tracklist_save_as_gpx">Spara en GPX-fil</string>
|
||||
<string name="tracklist_save_as_kml">Spara en KML-fil</string>
|
||||
<string name="tracklist_save_as_csv">Spara en CSV-fil</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Skicka till Google Mina Kartor</string>
|
||||
<!-- <string name="tracklist_btn_send_all_to_fusiontables">Skicka till Google Mina Kartor</string> -->
|
||||
<string name="tracklist_btn_delete_all">Ta bort alla spår</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Exportera alla spår</string>
|
||||
@@ -129,7 +131,6 @@ limitations under the License.
|
||||
<string name="tracklist_all_tracks">Alla spår:</string>
|
||||
<string name="tracklist_this_track">Det här spåret</string>
|
||||
<string name="tracklist_share_track">Dela med vänner...</string>
|
||||
<string name="tracklist_share_link">En länk till Google Mina Kartor</string>
|
||||
<string name="tracklist_share_gpx_file">En GPX-fil</string>
|
||||
<string name="tracklist_share_kml_file">En KML-fil</string>
|
||||
<string name="tracklist_share_csv_file">En CSV-fil</string>
|
||||
@@ -195,9 +196,6 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">Bara länken till kartan kommer att skickas vid delning</string>
|
||||
<string name="settings_share_url_only_summary_off">Innehållet i spåret kommer också att inkluderas vid delning</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Signalprovsfrekvens</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Tid mellan två inspelningar av telefonens signalstyrka</string>
|
||||
|
||||
<string name="settings_split_frequency">Delningsfrekvens</string>
|
||||
<string name="settings_split_frequency_summary">Maximala tiden eller distansen varefter en ny delningsmarkör kommer infogas</string>
|
||||
<string name="pace_label">Tempo</string>
|
||||
@@ -205,28 +203,6 @@ limitations under the License.
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">GPS-satelliter</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">Välj en karta från ditt konto:</string>
|
||||
<string name="create_new_map">Skapa en ny karta...</string>
|
||||
<string name="map_list_title">Skicka till Google Mina Kartor</string>
|
||||
<string name="maps_list_loading">Laddar kartor...</string>
|
||||
<string name="maps_list_failed">Dina kartor kunde inte laddas just nu!</string>
|
||||
<string name="open_map">Välj den här kartan</string>
|
||||
<string name="edit_map_details">Ändra kartdetaljer</string>
|
||||
<string name="share_map">Dela kartan med vänner</string>
|
||||
<string name="share_track">Dela spår med vänner</string>
|
||||
<string name="delete_map">Ta bort kartan från ditt konto</string>
|
||||
<string name="map_title">Karttitel:</string>
|
||||
<string name="map_description">Kartbeskrivning:</string>
|
||||
<string name="map_searchable_edit">Gör så att kartan och dess innehåll visas i sökresultat</string>
|
||||
<string name="map_not_searchable_edit">Låt inte kartan och dess innehåll visas i sökresultat, men de kan ändå ses av andra genom en direktlänk</string>
|
||||
<string name="map_searchable">Kartan och dess innehåll kommer att visas i sökresultat</string>
|
||||
<string name="map_not_searchable">Varken kartan eller dess innehåll visas i sökresultat, men de kan ändå ses av andra genom en direktlänk</string>
|
||||
<string name="close">Stäng</string>
|
||||
<string name="edit">Ändra</string>
|
||||
<string name="cancel">Avbryt</string>
|
||||
<string name="save">Spara</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">Jag vill dela en karta med dig</string>
|
||||
<string name="share_map_body_format">Jag tror att du skulle vara intresserad av den här kartan:
|
||||
@@ -236,6 +212,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">Jag tror att du skulle vara intresserad av det här spåret.
|
||||
|
||||
För att se det här spåret använd Google Earth eller något annat kartprogram.</string>
|
||||
<string name="share_track">Dela spår med vänner</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Publik</string>
|
||||
@@ -331,16 +308,13 @@ limitations under the License.
|
||||
<string name="help">Hjälp</string>
|
||||
<string name="about_team">Team:</string>
|
||||
<string name="about_version">Version:</string>
|
||||
<string name="about_email">Support</string>
|
||||
<string name="about_support">Support:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Skicka till...</string>
|
||||
<string name="sendtogoogle_google_mymaps">Google Mina Kartor</string>
|
||||
<!--<string name="sendtogoogle_google_fusiontables">Google Mina Kartor</string>-->
|
||||
<string name="sendtogoogle_google_docs">Google Dokument</string>
|
||||
<string name="sendtogoogle_send_now">Skicka nu</string>
|
||||
<string name="sendtogoogle_create_new_map">Skapa en ny karta</string>
|
||||
<string name="sendtogoogle_pick_existing_map">Välj en befintlig karta</string>
|
||||
<string name="sendtogoogle_send_stats">Skicka spårstatistik</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">Skicka statistik och punkter</string>
|
||||
|
||||
@@ -383,12 +357,4 @@ limitations under the License.
|
||||
<!-- Check Units -->
|
||||
<string name="check_units_title">Mätenheter</string>
|
||||
<string name="check_units_message">Som standard är enheterna metriska. Vill du ändra den inställningen?</string>
|
||||
|
||||
<!-- Signal Strength -->
|
||||
<string name="error_rate"> Felfrekvens: %1$d</string>
|
||||
<string name="signal_to_noise_ratio"> Signal / brus-förhållande: %1$d</string>
|
||||
<string name="ecio"> Ec/lo: %1$.1f dB</string>
|
||||
<string name="gsm_strength">GSM-styrka: %1$d</string>
|
||||
<string name="cdma_strength">CDMA-styrka: %1$d dBm</string>
|
||||
<string name="evdo_strength">EVDO-styrka: %1$d dBm</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,9 +15,6 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
|
||||
|
||||
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">记录轨迹</string>
|
||||
<string name="stop_recording">停止记录</string>
|
||||
@@ -37,7 +34,7 @@ limitations under the License.
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">此设备上没有位置管理器!</string>
|
||||
<string name="error_no_gps_location_provider">此设备上没有 GPS 定位装置.</string>
|
||||
<string name="error_sending_to_mymap">发送你的轨迹到 Google My Map 时发生错误. 请稍后重试.</string>
|
||||
<string name="error_sending_to_fusiontables">发送你的轨迹到 Google Fusion Tables 时发生错误. 请稍后重试.</string>
|
||||
<string name="error_sending_to_docs">发送你的轨迹到 Google Docs 时发生错误. 请稍后重试.</string>
|
||||
<string name="error_unable_to_start_recording">无法开始记录. 请重试.</string>
|
||||
<string name="error_unable_to_stop_recording">无法停止记录. 请重试.</string>
|
||||
@@ -52,11 +49,10 @@ limitations under the License.
|
||||
<string name="wait_for_fix">等待更准确的 GPS 定位. 请确定可以看见天空.</string>
|
||||
<string name="status_now_recording">现在开始记录新的轨迹.</string>
|
||||
<string name="status_stopped_recording">停止记录你的轨迹.</string>
|
||||
<string name="status_new_mymap_has_been_created">已在 maps.google.com 创建新 Google My Map.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">已在 google.com/fusiontables 创建新 Google Fusion Table.</string>
|
||||
<string name="status_tracks_have_been_uploaded">你的轨迹已经发送到 maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">你的轨迹已经作为新的电子表格发送到 docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">你的轨迹已经发送到 docs.google.com.</string>
|
||||
<string name="status_mymap_info">新增的轨迹可能需要等待一段时间才会显示到页面上.</string>
|
||||
<string name="status_enable_gps">请点击这里进入\'安全和位置设置\'并勾选上\'启用 GPS 卫星\'. 然后用后退键返回.</string>
|
||||
<string name="status_approximate_location">注意: 当前显示的位置是根据无线信号和无线网络计算的近似位置.</string>
|
||||
<string name="status_no_location">目前无法定位. 请启用更多的位置来源 (在\'安全和位置设置\'中) 并确认天空是可见的. 再重试.</string>
|
||||
@@ -68,11 +64,11 @@ limitations under the License.
|
||||
<string name="progress_message">发送你的轨迹到 Google.</string>
|
||||
<string name="progress_message_reading_track">读取轨迹中...</string>
|
||||
<string name="progress_message_preparing_track">准备轨迹中...</string>
|
||||
<string name="progress_message_authenticating_mymaps">登录 Google Maps 中...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">登录 Google Fusion Tables 中...</string>
|
||||
<string name="progress_message_authenticating_docs">登录 Google Docs 中...</string>
|
||||
<string name="progress_message_sending_docs">发送轨迹到 Google Docs 中...</string>
|
||||
<string name="progress_message_sending_mymaps">发送轨迹到 Google Maps 中...</string>
|
||||
<string name="progress_message_creating_map">创建新的 My Map 中...</string>
|
||||
<string name="progress_message_sending_fusiontables">发送轨迹到 Google Fusion Tables 中...</string>
|
||||
<string name="progress_message_creating_fusiontable">创建新的 Fusion Table 中...</string>
|
||||
<string name="import_progress_message">导入 GPS 轨迹中. 请稍候.</string>
|
||||
<string name="write_progress_message">写入文件到 SD 卡中. 请稍候.</string>
|
||||
<string name="progress_message_updating_track">更新轨迹统计信息中...</string>
|
||||
@@ -85,8 +81,7 @@ limitations under the License.
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="new_map_description">由 Android 上的 My Tracks 生成.</string>
|
||||
<string name="my_map_link">由 Android 上的 <a href=\'http://mytracks.appspot.com\'>My Tracks</a> 生成.</string>
|
||||
<string name="new_map_title">新地图</string>
|
||||
<string name="fusiontable_link">由 Android 上的 <a href=\'http://mytracks.appspot.com\'>My Tracks</a> 生成.</string>
|
||||
|
||||
<!-- Formatting of track and marker descriptions -->
|
||||
<string name="points">点数</string>
|
||||
@@ -106,6 +101,10 @@ limitations under the License.
|
||||
<string name="error">错误</string>
|
||||
<string name="success">成功</string>
|
||||
<string name="waypoint">路点</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="close">关闭</string>
|
||||
<string name="edit">编辑</string>
|
||||
<string name="save">保存</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(开始)</string>
|
||||
@@ -113,8 +112,8 @@ limitations under the License.
|
||||
|
||||
<!-- TrackList -->
|
||||
<string name="tracklist_show_track">显示</string>
|
||||
<string name="tracklist_send_to_mymaps">发送到 Google My Maps</string>
|
||||
<string name="tracklist_send_to_new_mymap">发送到新建 Google My Map</string>
|
||||
<string name="tracklist_send_to_fusiontables">发送到 Google Fusion Table</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">发送到新建 Google Fusion Table</string>
|
||||
<string name="tracklist_send_to_docs">发送到 Google Docs</string>
|
||||
<string name="tracklist_send_to_google">发送到 Google...</string>
|
||||
<string name="tracklist_delete_track">从手机上删除...</string>
|
||||
@@ -124,7 +123,7 @@ limitations under the License.
|
||||
<string name="tracklist_save_as_kml">保存为 KML 文件</string>
|
||||
<string name="tracklist_save_as_csv">保存为 CSV 文件</string>
|
||||
<string name="tracklist_save_as_tcx">保存为 TCX 文件</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">发送到 Google My Maps</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">发送到 Google Fusion Tables</string>
|
||||
<string name="tracklist_btn_delete_all">删除所有轨迹</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">导出所有轨迹</string>
|
||||
@@ -133,7 +132,6 @@ limitations under the License.
|
||||
<string name="tracklist_all_tracks">全部轨迹:</string>
|
||||
<string name="tracklist_this_track">此轨迹</string>
|
||||
<string name="tracklist_share_track">与朋友分享...</string>
|
||||
<string name="tracklist_share_link">链接到 Google My Map</string>
|
||||
<string name="tracklist_share_gpx_file">GPX 文件</string>
|
||||
<string name="tracklist_share_kml_file">KML 文件</string>
|
||||
<string name="tracklist_share_csv_file">CSV 文件</string>
|
||||
@@ -201,9 +199,6 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">在分享时只发送地图的 URL</string>
|
||||
<string name="settings_share_url_only_summary_off">在分享时也包括轨迹的内容</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">信号采样频率</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">记录电话信号强度的时间间隔</string>
|
||||
|
||||
<string name="settings_split_frequency">切割频度</string>
|
||||
<string name="settings_split_frequency_summary">插入新切割标记所需要达到的最大时间或距离</string>
|
||||
|
||||
@@ -215,15 +210,9 @@ limitations under the License.
|
||||
<string name="eclair_required">只在 Android 2.0 及以上版本支持</string>
|
||||
<string name="settings_sensor_type">感应器类型</string>
|
||||
<string name="settings_sensor_type_summary">要连接到的感应器类型</string>
|
||||
<string name="settings_sensor_id">感应器ID</string>
|
||||
<string name="settings_sensor_id_summary">发送到感应器的ID.</string>
|
||||
<string name="sensor_id_malformed">ID必须是一个整数值.</string>
|
||||
<string name="bluetooth_sensor_title">蓝牙感应器</string>
|
||||
<string name="bluetooth_sensor_summary">要连接到的蓝牙感应器</string>
|
||||
|
||||
|
||||
|
||||
|
||||
<string name="settings_backup">备份 (测试版)</string>
|
||||
<string name="settings_sd_backup">SD 存储卡备份</string>
|
||||
<string name="settings_backup_to_sd">立即备份</string>
|
||||
@@ -242,28 +231,6 @@ limitations under the License.
|
||||
<!-- MyTracksSky -->
|
||||
<string name="mytracks_sky">GPS 卫星</string>
|
||||
|
||||
<!-- My Maps -->
|
||||
<string name="select_map_message">从你的帐户里选择地图:</string>
|
||||
<string name="create_new_map">创建新地图...</string>
|
||||
<string name="map_list_title">发送到 Google My Maps</string>
|
||||
<string name="maps_list_loading">载入地图中...</string>
|
||||
<string name="maps_list_failed">现在无法载入你的地图!</string>
|
||||
<string name="open_map">选择此地图</string>
|
||||
<string name="edit_map_details">编辑地图详细信息</string>
|
||||
<string name="share_map">与朋友分享地图</string>
|
||||
<string name="share_track">与朋友分享轨迹</string>
|
||||
<string name="delete_map">删除你帐号下的此地图</string>
|
||||
<string name="map_title">地图标题:</string>
|
||||
<string name="map_description">地图描述:</string>
|
||||
<string name="map_searchable_edit">允许此地图及其内容出现在搜索结果中</string>
|
||||
<string name="map_not_searchable_edit">不允许地图及其内容出现在搜索结果中, 但它的内容依然可以通过网址直接访问</string>
|
||||
<string name="map_searchable">此地图及其内容会出现在搜索结果中</string>
|
||||
<string name="map_not_searchable">此地图及其内容不会出现在搜索结果中, 但它的内容依然可以通过网址直接访问</string>
|
||||
<string name="close">关闭</string>
|
||||
<string name="edit">编辑</string>
|
||||
<string name="cancel">取消</string>
|
||||
<string name="save">保存</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">我想与你分享一张地图</string>
|
||||
<string name="share_map_body_format">我想你可能会对这个地图感兴趣:
|
||||
@@ -273,6 +240,7 @@ limitations under the License.
|
||||
<string name="send_track_body_format">我想你可能会对这条轨迹感兴趣.
|
||||
|
||||
请用 Google Earth 或其它地图软件查看此轨迹.</string>
|
||||
<string name="share_track">与朋友分享轨迹</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">公开</string>
|
||||
@@ -327,32 +295,16 @@ limitations under the License.
|
||||
<string name="second">秒</string>
|
||||
<string name="seconds">秒</string>
|
||||
|
||||
|
||||
|
||||
<!-- Distance -->
|
||||
|
||||
|
||||
<string name="kilometers_long">千米</string>
|
||||
|
||||
|
||||
<string name="miles_long">英里</string>
|
||||
|
||||
<!-- Speed and Pace -->
|
||||
|
||||
<string name="kilometer_per_hour_long">千米每小时</string>
|
||||
|
||||
<string name="per_kilometer">每千米</string>
|
||||
|
||||
<string name="mile_per_hour_long">英里每小时</string>
|
||||
|
||||
<string name="per_mile">每英里</string>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Stats Labels -->
|
||||
<string name="moving_time_label">移动时间</string>
|
||||
<string name="total_time_label">总时间</string>
|
||||
@@ -367,7 +319,6 @@ limitations under the License.
|
||||
<string name="cadence">节奏</string>
|
||||
<string name="heart_rate">心率</string>
|
||||
<string name="max_heart_rate">最大心率</string>
|
||||
|
||||
<string name="waiting">请稍候...</string>
|
||||
|
||||
<!-- End User License Agreement -->
|
||||
@@ -380,33 +331,11 @@ limitations under the License.
|
||||
<string name="help">帮助</string>
|
||||
<string name="about_team">开发团队:</string>
|
||||
<string name="about_version">版本:</string>
|
||||
<string name="about_email">技术支持</string>
|
||||
<string name="about_support">技术支持:</string>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">发送到...</string>
|
||||
|
||||
|
||||
<string name="sendtogoogle_send_now">立即发送</string>
|
||||
<string name="sendtogoogle_create_new_map">创建新地图</string>
|
||||
<string name="sendtogoogle_pick_existing_map">选择已有地图</string>
|
||||
<string name="sendtogoogle_send_stats">发送轨迹统计信息</string>
|
||||
<string name="sendtogoogle_send_stats_and_points">发送统计信息和路点</string>
|
||||
|
||||
@@ -451,28 +380,13 @@ limitations under the License.
|
||||
<string name="check_units_title">测量单位提示</string>
|
||||
<string name="check_units_message">默认单位均为公制. 你想要修改此设置吗?</string>
|
||||
|
||||
<!-- Signal Strength -->
|
||||
<string name="error_rate"> 错误率: %1$d</string>
|
||||
<string name="signal_to_noise_ratio"> 信噪比: %1$d</string>
|
||||
<string name="ecio"> Ec/lo: %1$.1f dB</string>
|
||||
<string name="gsm_strength">GSM 强度 %1$d</string>
|
||||
<string name="cdma_strength">CDMA 强度 %1$d dBm</string>
|
||||
<string name="evdo_strength">EVDO 强度 %1$d dBm</string>
|
||||
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<string name="method_bluetooth">蓝牙</string>
|
||||
<string name="bluetooth_options">蓝牙设置</string>
|
||||
<string name="bluetooth_pairing">设备关联</string>
|
||||
<string name="bluetooth_pairing_summary">打开 Android 的蓝牙设置关联设备</string>
|
||||
|
||||
<string name="sensor_options">感应器选项</string>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">连接到 %s</string>
|
||||
<string name="bluetooth_connecting">蓝牙感应器连接中 ...</string>
|
||||
@@ -482,5 +396,4 @@ limitations under the License.
|
||||
<string name="sensor_data_time">感应器数据时间</string>
|
||||
<string name="power_meter_enabled">电源计量器已启用</string>
|
||||
<string name="heart_rate_monitor_enabled">心率监视器已启用</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -390,4 +390,26 @@ limitations under the License.
|
||||
<item>CSV</item>
|
||||
<item>TCX</item>
|
||||
</array>
|
||||
|
||||
<array name="sensor_type_options">
|
||||
<item>None</item>
|
||||
<item>ANT+ Sensors</item>
|
||||
<item>SRM ANT+ Bridge</item>
|
||||
<item>Zephyr Bluetooth</item>
|
||||
</array>
|
||||
|
||||
<!-- DO NOT TRANSLATE -->
|
||||
<array name="sensor_type_values">
|
||||
<item>@string/none</item>
|
||||
<item>@string/ant_sensor_type</item>
|
||||
<item>@string/srm_ant_bridge_sensor_type</item>
|
||||
<item>@string/zephyr_sensor_type</item>
|
||||
</array>
|
||||
|
||||
<!-- DO NOT TRANSLATE -->
|
||||
<string-array name="ant_sensor_type_values">
|
||||
<item>@string/ant_sensor_type</item>
|
||||
<item>@string/srm_ant_bridge_sensor_type</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -15,17 +15,36 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<color name="gold">#FFffd700</color>
|
||||
<color name="white">#FFFFFFFF</color>
|
||||
<color name="black">#FF000000</color>
|
||||
<color name="lightblue">#FF00FFFF</color>
|
||||
<color name="blue">#FF0000FF</color>
|
||||
<color name="blue_transparent">#400000FF</color>
|
||||
<color name="red">#FFFF0000</color>
|
||||
<color name="green">#FF00AA00</color>
|
||||
<color name="gray">#FFAAAAAA</color>
|
||||
<color name="darkgray">#FF444444</color>
|
||||
<color name="gold">#FFffd700</color>
|
||||
<color name="gray">#FFAAAAAA</color>
|
||||
<color name="lightblue">#FF00FFFF</color>
|
||||
<color name="opaque_shadow">#70000000</color>
|
||||
<color name="red">#FFFF0000</color>
|
||||
<color name="stat_label_background">#FFF0F0F0</color>
|
||||
<color name="stat_label_text">#FF0F0F0F</color>
|
||||
<color name="white">#FFFFFFFF</color>
|
||||
|
||||
<!-- Chart colors by series. -->
|
||||
<!-- Green and a transparent green -->
|
||||
<color name="elevation_border">#FF339933</color>
|
||||
<color name="elevation_fill">#40B3CFB3</color>
|
||||
|
||||
<!-- Blue and a transparent blue -->
|
||||
<color name="speed_border">#FF0066FF</color>
|
||||
<color name="speed_fill">#40C8E0FF</color>
|
||||
|
||||
<!-- Red and a transparent red -->
|
||||
<color name="heartrate_border">#FFCC3300</color>
|
||||
<color name="heartrate_fill">#40E88A70</color>
|
||||
|
||||
<!-- Pink and a transparent pink -->
|
||||
<color name="cadence_border">#FFF128F3</color>
|
||||
<color name="cadence_fill">#40F128F3</color>
|
||||
|
||||
<!-- Purple and a transparent purple -->
|
||||
<color name="power_border">#FF401465</color>
|
||||
<color name="power_fill">#40401465</color>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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>
|
||||
<!-- DO NOT TRANSLATE ANY STRINGS IN THIS FILE. -->
|
||||
<string name="app_name">My Tracks</string>
|
||||
|
||||
<!-- About Dialog -->
|
||||
<string name="about_googlegroups">mytracks@googlegroups.com</string>
|
||||
<string name="about_weburl">mytracks.appspot.com</string>
|
||||
<string name="about_privacy_weburl">m.google.com/privacy</string>
|
||||
<string name="about_copyright_message">Copyright 2009 Google Inc.</string>
|
||||
<string name="about_bart">Bartlomiej Niechwiej</string>
|
||||
<string name="about_dylan">Dylan Casey</string>
|
||||
<string name="about_leif">Leif Hendrik Wilden</string>
|
||||
<string name="about_rdamazio">Rodrigo Damazio Bovendorp</string>
|
||||
<string name="about_sandor">Sandor Dornbush</string>
|
||||
|
||||
<!-- Sensor Types -->
|
||||
<string name="none">NONE</string>
|
||||
<string name="ant_sensor_type">ANT</string>
|
||||
<string name="srm_ant_bridge_sensor_type">SRM_ANT_BRIDGE</string>
|
||||
<string name="zephyr_sensor_type">ZEPHYR</string>
|
||||
</resources>
|
||||
@@ -17,6 +17,9 @@ limitations under the License.
|
||||
<resources>
|
||||
<!-- Keys for application preferences - DO NOT TRANSLATE -->
|
||||
<string name="announcement_frequency_key">announcementFrequency</string>
|
||||
<string name="ant_heart_rate_sensor_id_key">antHeartRateSensorId</string>
|
||||
<string name="ant_power_sensor_id_key">antPowerSensorId</string>
|
||||
<string name="ant_srm_bridge_sensor_id_key">antSRMBridgeSensorId</string>
|
||||
<string name="auto_resume_track_timeout_key">autoResumeTrackTimeout</string>
|
||||
<string name="bluetooth_device_key">bluetoothDevice</string>
|
||||
<string name="bluetooth_pairing_key">bluetoothPairing</string>
|
||||
@@ -33,10 +36,9 @@ limitations under the License.
|
||||
<string name="send_stats_and_points_key">sendStatsAndPoints</string>
|
||||
<string name="send_to_docs_key">sendToDocs</string>
|
||||
<string name="send_to_my_maps_key">sendToMyMaps</string>
|
||||
<string name="sensor_id_key">sensorId</string>
|
||||
<string name="send_to_fusion_tables_key">sendToFusionTables</string>
|
||||
<string name="sensor_type_key">sensorType</string>
|
||||
<string name="share_url_only_key">shareUrlOnly</string>
|
||||
<string name="signal_sampling_frequency_key">signalSamplingFrequency</string>
|
||||
<string name="split_frequency_key">splitFrequency</string>
|
||||
<string name="timestamp_track_name_key">timestampTrackName</string>
|
||||
|
||||
@@ -48,4 +50,8 @@ limitations under the License.
|
||||
<!-- Keys for non-persisted preferences - DO NOT TRANSLATE -->
|
||||
<string name="backup_to_sd_key">backupToSd</string>
|
||||
<string name="restore_from_sd_key">restoreFromSd</string>
|
||||
|
||||
<!-- Inoperative keys used for the location of preferences items -->
|
||||
<string name="sensor_options_key">sensorOptions</string>
|
||||
<string name="ant_options_key">antOptions</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,9 +15,6 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<!-- DO NOT TRANSLATE -->
|
||||
<string name="app_name">My Tracks</string>
|
||||
|
||||
<!-- Used by the Menu -->
|
||||
<string name="start_recording">Record track</string>
|
||||
<string name="stop_recording">Stop recording</string>
|
||||
@@ -32,12 +29,14 @@ limitations under the License.
|
||||
<string name="choose_track_message">Please select the track to view</string>
|
||||
<string name="current_track">Current track</string>
|
||||
<string name="current_segment">Last segment</string>
|
||||
<string name="sensor_state">Sensor State</string>
|
||||
<string name="aggregated_stats">Aggregated Statistics</string>
|
||||
|
||||
<!-- Error messages -->
|
||||
<string name="error_no_location_manager">No location manager was found on this device!</string>
|
||||
<string name="error_no_gps_location_provider">No GPS location provider was found on this device.</string>
|
||||
<string name="error_sending_to_mymap">There was an error while sending your track to Google My Map. Please try again later.</string>
|
||||
<string name="error_sending_to_fusiontables">There was an error while sending your track to Google Fusion Tables. Please try again later.</string>
|
||||
<string name="error_sending_to_docs">There was an error while sending your track to Google Docs. Please try again later.</string>
|
||||
<string name="error_unable_to_start_recording">Unable to start recording. Try again.</string>
|
||||
<string name="error_unable_to_stop_recording">Unable to stop recording. Try again.</string>
|
||||
@@ -53,6 +52,7 @@ limitations under the License.
|
||||
<string name="status_now_recording">Now recording a new track.</string>
|
||||
<string name="status_stopped_recording">Stopped recording your track.</string>
|
||||
<string name="status_new_mymap_has_been_created">A new Google My Map has been created at maps.google.com.</string>
|
||||
<string name="status_new_fusiontable_has_been_created">A new Google Fusion table has been created at google.com/fusiontables.</string>
|
||||
<string name="status_tracks_have_been_uploaded">Your track has been sent to maps.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_new_doc">Your track has been sent to a new spreadsheet at docs.google.com.</string>
|
||||
<string name="status_tracks_have_been_uploaded_to_docs">Your track has been sent to docs.google.com.</string>
|
||||
@@ -68,11 +68,14 @@ limitations under the License.
|
||||
<string name="progress_message">Sending your track to Google.</string>
|
||||
<string name="progress_message_reading_track">Reading track...</string>
|
||||
<string name="progress_message_preparing_track">Preparing track...</string>
|
||||
<string name="progress_message_authenticating_fusiontables">Authenticating to Google Fusion Tables...</string>
|
||||
<string name="progress_message_authenticating_mymaps">Authenticating to Google Maps...</string>
|
||||
<string name="progress_message_authenticating_docs">Authenticating to Google Docs...</string>
|
||||
<string name="progress_message_sending_docs">Sending track to Google Docs...</string>
|
||||
<string name="progress_message_sending_mymaps">Sending track to Google Maps...</string>
|
||||
<string name="progress_message_creating_map">Creating new My Map...</string>
|
||||
<string name="progress_message_sending_fusiontables">Sending track to Fusion Tables...</string>
|
||||
<string name="progress_message_creating_fusiontable">Creating new Fusion table...</string>
|
||||
<string name="import_progress_message">Importing a GPS track. This may take a while.</string>
|
||||
<string name="write_progress_message">Writing file to SD card. This may take a while.</string>
|
||||
<string name="progress_message_updating_track">Updating track statistics...</string>
|
||||
@@ -83,8 +86,11 @@ limitations under the License.
|
||||
<string name="track_will_be_permanently_deleted">The track and its markers will be permanently deleted from this phone.</string>
|
||||
<string name="marker_will_be_permanently_deleted">The marker will be permanently deleted from this phone.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<!-- Text and links when uploading to Google Fusion Tables -->
|
||||
<string name="new_map_description">Created by My Tracks on Android.</string>
|
||||
<string name="fusiontable_link">Created by <a href=\'http://mytracks.appspot.com\'>My Tracks</a> on Android.</string>
|
||||
|
||||
<!-- Text and links when uploading to Google My Maps -->
|
||||
<string name="my_map_link">Created by <a href=\'http://mytracks.appspot.com\'>My Tracks</a> on Android.</string>
|
||||
<string name="new_map_title">New map</string>
|
||||
|
||||
@@ -106,6 +112,11 @@ limitations under the License.
|
||||
<string name="error">Error</string>
|
||||
<string name="success">Success</string>
|
||||
<string name="waypoint">Waypoint</string>
|
||||
<string name="license">License</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="save">Save</string>
|
||||
|
||||
<!-- Placemark labels for start and end of track -->
|
||||
<string name="start">(Start)</string>
|
||||
@@ -115,6 +126,8 @@ limitations under the License.
|
||||
<string name="tracklist_show_track">Show</string>
|
||||
<string name="tracklist_send_to_mymaps">Send to Google My Maps</string>
|
||||
<string name="tracklist_send_to_new_mymap">Send to New Google My Map</string>
|
||||
<string name="tracklist_send_to_fusiontables">Send to Google Fusion Tables</string>
|
||||
<string name="tracklist_send_to_new_fusiontable">Send to New Google Fusion Table</string>
|
||||
<string name="tracklist_send_to_docs">Send to Google Docs</string>
|
||||
<string name="tracklist_send_to_google">Send to Google...</string>
|
||||
<string name="tracklist_delete_track">Delete from phone...</string>
|
||||
@@ -124,21 +137,33 @@ limitations under the License.
|
||||
<string name="tracklist_save_as_kml">Save a KML file</string>
|
||||
<string name="tracklist_save_as_csv">Save a CSV file</string>
|
||||
<string name="tracklist_save_as_tcx">Save a TCX file</string>
|
||||
<string name="tracklist_btn_send_all_to_fusiontables">Send to Google Fusion Tables</string>
|
||||
<string name="tracklist_btn_send_all_to_mymaps">Send to Google My Maps</string>
|
||||
<string name="tracklist_btn_delete_all">Delete all tracks</string>
|
||||
<string name="tracklist_btn_delete_all">Delete all</string>
|
||||
<!-- Export All -->
|
||||
<string name="tracklist_btn_export_all">Export all tracks</string>
|
||||
<string name="tracklist_btn_export_all">Export all</string>
|
||||
<string name="export_done">Export finished</string>
|
||||
<string name="tracklist_pick_one">Pick a track. Press&hold for more options.</string>
|
||||
<string name="tracklist_all_tracks">All Tracks:</string>
|
||||
<string name="tracklist_this_track">This Track</string>
|
||||
<string name="tracklist_share_track">Share with Friends...</string>
|
||||
<string name="tracklist_share_link">A link to Google My Map</string>
|
||||
<string name="tracklist_share_link">A link to the map</string>
|
||||
<string name="tracklist_share_gpx_file">A GPX file</string>
|
||||
<string name="tracklist_share_kml_file">A KML file</string>
|
||||
<string name="tracklist_share_csv_file">A CSV file</string>
|
||||
<string name="tracklist_share_tcx_file">A TCX file</string>
|
||||
<string name="tracklist_clear_map">Clear map</string>
|
||||
<!-- Import All -->
|
||||
<string name="tracklist_btn_import_all">Import all</string>
|
||||
<string name="import_done">Import finished, imported</string>
|
||||
<!-- Format:
|
||||
$1 : Successful imports
|
||||
$2 : Attempted imports
|
||||
$3 : MyTracks gpx path
|
||||
-->
|
||||
<string name="import_done">Imported %1$d of %2$d GPX files from %3$s</string>
|
||||
<string name="import_empty">No GPX files found in %s. SD card may be unreadable or directory may not contain GPX files.</string>
|
||||
<string name="import_error">Import error for file %s</string>
|
||||
|
||||
<!-- Waypoints list -->
|
||||
<string name="waypointslist_btn_delete_all">Delete all markers</string>
|
||||
@@ -201,9 +226,6 @@ limitations under the License.
|
||||
<string name="settings_share_url_only_summary_on">Only the URL of the map will be sent when sharing</string>
|
||||
<string name="settings_share_url_only_summary_off">The contents of the track will also be included when sharing</string>
|
||||
|
||||
<string name="settings_signal_sampling_frequency">Signal sampling frequency</string>
|
||||
<string name="settings_signal_sampling_frequency_summary">Time between two recordings of the phone\'s signal strength</string>
|
||||
|
||||
<string name="settings_split_frequency">Split frequency</string>
|
||||
<string name="settings_split_frequency_summary">Maximum time or distance after which a new split marker will be inserted</string>
|
||||
|
||||
@@ -218,16 +240,17 @@ limitations under the License.
|
||||
|
||||
<string name="eclair_required">Only supported in Android 2.0 or above</string>
|
||||
<string name="settings_sensor_type">Sensor Type</string>
|
||||
<string name="settings_sensor_type_summary">The type of sensor to connect to.</string>
|
||||
<string name="settings_sensor_id">Sensor Id</string>
|
||||
<string name="settings_sensor_id_summary">The Id sent to sensors.</string>
|
||||
<string name="sensor_id_malformed">The Id must be an integer value.</string>
|
||||
<string name="settings_sensor_type_summary">The type of sensor to connect to</string>
|
||||
<string name="settings_heart_rate_ant_sensor_id">Clear ANT heart rate sensor pairing</string>
|
||||
<string name="settings_power_ant_sensor_id">Clear ANT power sensor pairing</string>
|
||||
<string name="settings_srm_bridge_ant_sensor_id">Clear ANT SRM bridge sensor pairing</string>
|
||||
<string name="settings_ant_not_paired">ANT sensor not paired</string>
|
||||
<string name="settings_ant_paired">ANT sensor paired with: %d</string>
|
||||
<string name="bluetooth_sensor_title">Bluetooth sensor</string>
|
||||
<string name="bluetooth_sensor_summary">The bluetooth sensor to connect to.</string>
|
||||
<string name="bluetooth_sensor_summary">The bluetooth sensor to connect to</string>
|
||||
<string name="settings_modular_stats_display_title">Modular Stats Display</string>
|
||||
<string name="settings_modular_stats_display_summary_on">The stats screen is split in various modes.</string>
|
||||
<string name="settings_modular_stats_display_summary_off">Display all stats on one screen</string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="settings_backup">Backup (BETA)</string>
|
||||
<string name="settings_sd_backup">SD Card Backup</string>
|
||||
<string name="settings_backup_to_sd">Backup now</string>
|
||||
@@ -236,7 +259,6 @@ limitations under the License.
|
||||
<string name="settings_restore_from_sd_summary">Restore all tracks and settings from the SD card</string>
|
||||
<string name="settings_no_backup_while_recording">Cannot manipulate backups while recording a track.</string>
|
||||
|
||||
<!-- Backups -->
|
||||
<string name="restore_overwrites_warning">Restoring a backup from the SD card will OVERWRITE all your current tracks and settings. Are you sure?</string>
|
||||
<string name="select_backup_to_restore">Select the backup to restore</string>
|
||||
<string name="no_backups">No backups found.</string>
|
||||
@@ -254,7 +276,6 @@ limitations under the License.
|
||||
<string name="maps_list_failed">Your maps could not be loaded at this time!</string>
|
||||
<string name="open_map">Select this Map</string>
|
||||
<string name="edit_map_details">Edit Map Details</string>
|
||||
<string name="share_map">Share Map with Friends</string>
|
||||
<string name="share_track">Share Track with Friends</string>
|
||||
<string name="delete_map">Delete Map from your Account</string>
|
||||
<string name="map_title">Map Title:</string>
|
||||
@@ -263,20 +284,18 @@ limitations under the License.
|
||||
<string name="map_not_searchable_edit">Do not let this map or its contents show up in search results, though they may still be viewed be others through the direct URL</string>
|
||||
<string name="map_searchable">This map and its contents will show in search results</string>
|
||||
<string name="map_not_searchable">Neither this map nor its contents will show in search results, but they may still be viewed by others through a direct link</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="edit">Edit</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="save">Save</string>
|
||||
|
||||
<!-- Sharing -->
|
||||
<string name="share_map_subject">I would like to share a map with you</string>
|
||||
<string name="share_map_body_format">I think you might be interested in this map:
|
||||
<string name="share_map">Share map with friends</string>
|
||||
<string name="share_map_subject">I would like to share a track with you</string>
|
||||
<string name="share_map_body_format">I think you might be interested in this track:
|
||||
|
||||
%s</string>
|
||||
<string name="send_track_subject">I would like to share a track with you</string>
|
||||
<string name="send_track_body_format">I think you might be interested in this track.
|
||||
|
||||
To view this track use Google Earth or other mapping software.</string>
|
||||
<string name="share_track">Share track with friends</string>
|
||||
|
||||
<!-- Visibility -->
|
||||
<string name="public_map">Public</string>
|
||||
@@ -350,7 +369,7 @@ limitations under the License.
|
||||
<string name="min_per_mile">min/mi</string>
|
||||
<string name="per_mile">per mile</string>
|
||||
|
||||
<!-- Power -->
|
||||
<!-- Sensors -->
|
||||
<string name="watts">W</string>
|
||||
|
||||
<string name="revolutions_per_minute">rpm</string>
|
||||
@@ -383,20 +402,12 @@ limitations under the License.
|
||||
<string name="help">Help</string>
|
||||
<string name="about_team">Team:</string>
|
||||
<string name="about_version">Version:</string>
|
||||
<string name="about_email">Support</string>
|
||||
<string name="about_support">Support:</string>
|
||||
|
||||
<!-- DO NOT TRANSLATE -->
|
||||
<string name="about_googlegroups">mytracks@googlegroups.com</string>
|
||||
<string name="about_weburl">mytracks.appspot.com</string>
|
||||
<string name="about_copyright_message">Copyright 2009 Google Inc.</string>
|
||||
<string name="about_dylan">Dylan Casey</string>
|
||||
<string name="about_leif">Leif Hendrik Wilden</string>
|
||||
<string name="about_rdamazio">Rodrigo Damazio Bovendorp</string>
|
||||
<string name="about_sandor">Sandor Dornbush</string>
|
||||
<string name="about_privacy">Privacy:</string>
|
||||
|
||||
<!-- Send to Google -->
|
||||
<string name="sendtogoogle_title">Send to...</string>
|
||||
<string name="sendtogoogle_google_fusiontables">Google Fusion Tables</string>
|
||||
<string name="sendtogoogle_google_mymaps">Google My Maps</string>
|
||||
<string name="sendtogoogle_google_docs">Google Docs</string>
|
||||
<string name="sendtogoogle_send_now">Send now</string>
|
||||
@@ -447,28 +458,15 @@ limitations under the License.
|
||||
<string name="check_units_title">Units of Measure Notice</string>
|
||||
<string name="check_units_message">By default units are metric. Would you like to change that setting?</string>
|
||||
|
||||
<!-- Signal Strength -->
|
||||
<string name="error_rate"> Error Rate: %1$d</string>
|
||||
<string name="signal_to_noise_ratio"> Signal to Noise Ratio: %1$d</string>
|
||||
<string name="ecio"> Ec/lo: %1$.1f dB</string>
|
||||
<string name="gsm_strength">GSM Strength: %1$d</string>
|
||||
<string name="cdma_strength">CDMA Strength: %1$d dBm</string>
|
||||
<string name="evdo_strength">EVDO Strength: %1$d dBm</string>
|
||||
|
||||
<!-- Fake preference keys - never saved, but show options in the preferences screen -->
|
||||
<string name="method_bluetooth">Bluetooth</string>
|
||||
<string name="bluetooth_options">Bluetooth options</string>
|
||||
<string name="bluetooth_pairing">Device pairing</string>
|
||||
<string name="bluetooth_pairing_summary">Open Android\'s bluetooth settings to pair a device</string>
|
||||
<string name="sensor_bluetooth_options_key">bluetoothSensorsEnabled</string>
|
||||
<string name="ant_options">ANT options</string>
|
||||
<string name="sensor_options">Sensor Options</string>
|
||||
|
||||
<!-- Sensor Types => DO NOT TRANSLATE -->
|
||||
<string name="none">NONE</string>
|
||||
<string name="ant_sensor_type">ANT</string>
|
||||
<string name="srm_sensor_type">SRM</string>
|
||||
<string name="athlosoft_sensor_type">ATHLOSOFT</string>
|
||||
|
||||
<!-- Bluetooth Sensor -->
|
||||
<string name="bluetooth_connected">Connected to %s</string>
|
||||
<string name="bluetooth_connecting">Bluetooth sensor connecting ...</string>
|
||||
@@ -478,5 +476,20 @@ limitations under the License.
|
||||
<string name="sensor_data_time">Sensor Data Time</string>
|
||||
<string name="power_meter_enabled">Power meter enabled</string>
|
||||
<string name="heart_rate_monitor_enabled">Heart rate monitor enabled</string>
|
||||
<string name="no_sensor_manager">No Sensor Manager</string>
|
||||
<string name="enabled">Enabled</string>
|
||||
<string name="connecting">Connecting</string>
|
||||
<string name="connected">Connected</string>
|
||||
<string name="disconnected">Disconnected</string>
|
||||
<string name="no_sensor_service">No Sensor Service</string>
|
||||
<string name="searching">Searching</string>
|
||||
<string name="sending">Sending</string>
|
||||
|
||||
<!-- Manifest description (not seen inside the app) -->
|
||||
<string name="notification_permission_label">receive track recording notifications</string>
|
||||
<string name="read_tracks_permission_label">read recorded track data</string>
|
||||
<string name="write_tracks_permission_label">write recorded track data, start/stop recording tracks</string>
|
||||
<string name="notification_permission_description">Be notified when a track starts or stops being recorded.</string>
|
||||
<string name="read_tracks_permission_description">Be able to read track data, such as points and waypoints.</string>
|
||||
<string name="write_tracks_permission_description">Be able to write track data, such as starting recording or adding waypoints.</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<?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>
|
||||
<!-- The style for the unit on the statistics activity. -->
|
||||
<style name="StatsUnit" parent="@android:Widget.TextView">
|
||||
<item name="android:gravity">bottom</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_marginBottom">-2dip</item>
|
||||
<item name="android:layout_marginTop">-2dip</item>
|
||||
<item name="android:layout_width">wrap_content</item>
|
||||
<item name="android:textColor">@color/stat_label_text</item>
|
||||
</style>
|
||||
|
||||
<!-- The style for the unit on the statistics activity where there is only one string. -->
|
||||
<style name="StatsUnitSolo" parent="@android:Widget.TextView">
|
||||
<item name="android:gravity">right</item>
|
||||
<item name="android:layout_marginBottom">-9dip</item>
|
||||
<item name="android:layout_marginTop">-9dip</item>
|
||||
<item name="android:textColor">@color/stat_label_text</item>
|
||||
</style>
|
||||
|
||||
<!-- The style for a text view for displaying a value on the statistics activity. -->
|
||||
<style name="StatsRegister" parent="@android:Widget.TextView">
|
||||
<item name="android:gravity">right</item>
|
||||
<item name="android:layout_marginBottom">-9dip</item>
|
||||
<item name="android:layout_marginTop">-9dip</item>
|
||||
<item name="android:text">@string/unknown</item>
|
||||
<item name="android:textColor">@color/stat_label_text</item>
|
||||
<item name="android:textSize">40sp</item>
|
||||
</style>
|
||||
|
||||
<!-- The style for a text view for displaying a large value on the statistics activity. -->
|
||||
<style name="StatsRegister.Big">
|
||||
<item name="android:layout_marginBottom">-13dip</item>
|
||||
<item name="android:layout_marginTop">-13dip</item>
|
||||
<item name="android:textSize">50sp</item>
|
||||
</style>
|
||||
|
||||
<!-- The style for a text view for displaying a small value on the statistics activity. -->
|
||||
<style name="StatsRegister.Small">
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_marginBottom">-5dip</item>
|
||||
<item name="android:layout_marginTop">-5dip</item>
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
<item name="android:textSize">25sp</item>
|
||||
</style>
|
||||
|
||||
<!-- The style for a view which divides two columns in the statistics activity. -->
|
||||
<style name="StatsSpacer" parent="@android:Widget.TextView">
|
||||
<item name="android:background">@color/black</item>
|
||||
<item name="android:layout_marginBottom">-9dip</item>
|
||||
<item name="android:layout_marginTop">-9dip</item>
|
||||
<item name="android:layout_width">5dip</item>
|
||||
<item name="android:textSize">40sp</item>
|
||||
</style>
|
||||
|
||||
<!-- The style for a view which divides the numerator and denominator of the units on the statistics activity. -->
|
||||
<style name="StatsDivider" parent="@android:Widget.TextView">
|
||||
<item name="android:background">@color/black</item>
|
||||
<item name="android:layout_height">3dip</item>
|
||||
<item name="android:layout_width">fill_parent</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?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>
|
||||
<!-- DO NOT TRANSLATE -->
|
||||
<string name="waypoint_icon_url">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string>
|
||||
<string name="stats_icon_url">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string>
|
||||
</resources>
|
||||
@@ -84,14 +84,6 @@ limitations under the License.
|
||||
android:entryValues="@array/min_required_accuracy_values"
|
||||
android:defaultValue="200" />
|
||||
|
||||
<com.google.android.apps.mytracks.IntegerListPreference
|
||||
android:key="@string/signal_sampling_frequency_key"
|
||||
android:title="@string/settings_signal_sampling_frequency"
|
||||
android:summary="@string/settings_signal_sampling_frequency_summary"
|
||||
android:entries="@array/task_frequency_options"
|
||||
android:entryValues="@array/task_frequency_values"
|
||||
android:defaultValue="-1" />
|
||||
|
||||
<com.google.android.apps.mytracks.IntegerListPreference
|
||||
android:key="@string/auto_resume_track_timeout_key"
|
||||
android:title="@string/settings_auto_resume_track_timeout"
|
||||
@@ -109,6 +101,46 @@ limitations under the License.
|
||||
|
||||
</PreferenceScreen>
|
||||
|
||||
<!-- Sensors -->
|
||||
<PreferenceScreen android:title="@string/sensor_options"
|
||||
android:key="@string/sensor_options_key">
|
||||
<ListPreference android:key="@string/sensor_type_key"
|
||||
android:title="@string/settings_sensor_type"
|
||||
android:summary="@string/settings_sensor_type_summary"
|
||||
android:entries="@array/sensor_type_options"
|
||||
android:entryValues="@array/sensor_type_values"
|
||||
android:defaultValue="@string/none"/>
|
||||
|
||||
<!-- Bluetooth -->
|
||||
<PreferenceCategory android:title="@string/bluetooth_options">
|
||||
<ListPreference android:key="@string/bluetooth_sensor_key"
|
||||
android:title="@string/bluetooth_sensor_title"
|
||||
android:summary="@string/bluetooth_sensor_summary"
|
||||
android:defaultValue="any" />
|
||||
|
||||
<Preference android:key="@string/bluetooth_pairing_key"
|
||||
android:title="@string/bluetooth_pairing"
|
||||
android:summary="@string/bluetooth_pairing_summary"
|
||||
android:persistent="false" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/ant_options"
|
||||
android:key="@string/ant_options_key">
|
||||
<com.google.android.apps.mytracks.AntPreference
|
||||
android:key="@string/ant_heart_rate_sensor_id_key"
|
||||
android:title="@string/settings_heart_rate_ant_sensor_id"/>
|
||||
<!--
|
||||
<com.google.android.apps.mytracks.AntPreference
|
||||
android:key="@string/ant_power_sensor_id_key"
|
||||
android:title="@string/settings_power_ant_sensor_id"/>
|
||||
-->
|
||||
|
||||
<com.google.android.apps.mytracks.AntPreference
|
||||
android:key="@string/ant_srm_bridge_sensor_id_key"
|
||||
android:title="@string/settings_srm_bridge_ant_sensor_id"/>
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
|
||||
<!-- Sharing settings -->
|
||||
<PreferenceScreen android:title="@string/settings_sharing">
|
||||
<CheckBoxPreference
|
||||
|
||||
@@ -0,0 +1,268 @@
|
||||
/*
|
||||
* Copyright 2010 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The Android Ant API is not finalized, and *will* change. Use at your
|
||||
* own risk.
|
||||
*
|
||||
* Public API for controlling the Ant Service.
|
||||
* AntDefines contains definitions commonly used in ANT messaging.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class AntDefine {
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Valid Configuration Values
|
||||
//////////////////////////////////////////////
|
||||
public static final byte MIN_BIN = 0;
|
||||
public static final byte MAX_BIN = 10;
|
||||
|
||||
public static final short MIN_DEVICE_ID = 0;
|
||||
public static final short MAX_DEVICE_ID = (short)65535;
|
||||
|
||||
public static final short MIN_BUFFER_THRESHOLD = 0;
|
||||
public static final short MAX_BUFFER_THRESHOLD = 996;
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// ANT Message Payload Size
|
||||
//////////////////////////////////////////////
|
||||
public static final byte ANT_STANDARD_DATA_PAYLOAD_SIZE =((byte)8);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// ANT LIBRARY Extended Data Message Fields
|
||||
// NOTE: You must check the extended message
|
||||
// bitfield first to find out which fields
|
||||
// are present before accessing them!
|
||||
//////////////////////////////////////////////
|
||||
public static final byte ANT_EXT_MESG_DEVICE_ID_FIELD_SIZE =((byte)4);
|
||||
//public static final byte ANT_EXT_STRING_SIZE =((byte)19); // this is the additional buffer space required required for setting USB Descriptor strings
|
||||
public static final byte ANT_EXT_STRING_SIZE =((byte)0); // changed to 0 as we will not be dealing with ANT USB parts.
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// ANT Extended Data Message Bifield Definitions
|
||||
//////////////////////////////////////////////
|
||||
public static final byte ANT_EXT_MESG_BITFIELD_DEVICE_ID =((byte)0x80); // first field after bitfield
|
||||
public static final byte ANT_EXT_MESG_BITFIELD_RSSI =((byte)0x40); // next field after ID, if there is one
|
||||
public static final byte ANT_EXT_MESG_BITFIELD_TIME_STAMP =((byte)0x20); // next field after RSSI, if there is one
|
||||
|
||||
// 4 bits free reserved set to 0
|
||||
public static final byte ANT_EXT_MESG_BIFIELD_EXTENSION =((byte)0x01);
|
||||
|
||||
// extended message input bitfield defines
|
||||
public static final byte ANT_EXT_MESG_BITFIELD_OVERWRITE_SHARED_ADR =((byte)0x10);
|
||||
public static final byte ANT_EXT_MESG_BITFIELD_TRANSMISSION_TYPE =((byte)0x08);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// ID Definitions
|
||||
//////////////////////////////////////////////
|
||||
public static final byte ANT_ID_SIZE =((byte)4);
|
||||
public static final byte ANT_ID_TRANS_TYPE_OFFSET =((byte)3);
|
||||
public static final byte ANT_ID_DEVICE_TYPE_OFFSET =((byte)2);
|
||||
public static final byte ANT_ID_DEVICE_NUMBER_HIGH_OFFSET =((byte)1);
|
||||
public static final byte ANT_ID_DEVICE_NUMBER_LOW_OFFSET =((byte)0);
|
||||
public static final byte ANT_ID_DEVICE_TYPE_PAIRING_FLAG =((byte)0x80);
|
||||
|
||||
public static final byte ANT_TRANS_TYPE_SHARED_ADDR_MASK =((byte)0x03);
|
||||
public static final byte ANT_TRANS_TYPE_1_BYTE_SHARED_ADDRESS =((byte)0x02);
|
||||
public static final byte ANT_TRANS_TYPE_2_BYTE_SHARED_ADDRESS =((byte)0x03);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Assign Channel Parameters
|
||||
//////////////////////////////////////////////
|
||||
public static final byte PARAMETER_RX_NOT_TX =((byte)0x00);
|
||||
public static final byte PARAMETER_TX_NOT_RX =((byte)0x10);
|
||||
public static final byte PARAMETER_SHARED_CHANNEL =((byte)0x20);
|
||||
public static final byte PARAMETER_NO_TX_GUARD_BAND =((byte)0x40);
|
||||
public static final byte PARAMETER_ALWAYS_RX_WILD_CARD_SEARCH_ID =((byte)0x40); //Pre-AP2
|
||||
public static final byte PARAMETER_RX_ONLY =((byte)0x40);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Ext. Assign Channel Parameters
|
||||
//////////////////////////////////////////////
|
||||
public static final byte EXT_PARAM_ALWAYS_SEARCH =((byte)0x01);
|
||||
public static final byte EXT_PARAM_FREQUENCY_AGILITY =((byte)0x04);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Radio TX Power Definitions
|
||||
//////////////////////////////////////////////
|
||||
public static final byte RADIO_TX_POWER_LVL_MASK =((byte)0x03);
|
||||
|
||||
public static final byte RADIO_TX_POWER_LVL_0 =((byte)0x00); //(formerly: RADIO_TX_POWER_MINUS20DB); lowest
|
||||
public static final byte RADIO_TX_POWER_LVL_1 =((byte)0x01); //(formerly: RADIO_TX_POWER_MINUS10DB);
|
||||
public static final byte RADIO_TX_POWER_LVL_2 =((byte)0x02); //(formerly: RADIO_TX_POWER_MINUS5DB);
|
||||
public static final byte RADIO_TX_POWER_LVL_3 =((byte)0x03); //(formerly: RADIO_TX_POWER_0DB); highest
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Channel Status
|
||||
//////////////////////////////////////////////
|
||||
public static final byte STATUS_CHANNEL_STATE_MASK =((byte)0x03);
|
||||
public static final byte STATUS_UNASSIGNED_CHANNEL =((byte)0x00);
|
||||
public static final byte STATUS_ASSIGNED_CHANNEL =((byte)0x01);
|
||||
public static final byte STATUS_SEARCHING_CHANNEL =((byte)0x02);
|
||||
public static final byte STATUS_TRACKING_CHANNEL =((byte)0x03);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Standard capabilities defines
|
||||
//////////////////////////////////////////////
|
||||
public static final byte CAPABILITIES_NO_RX_CHANNELS =((byte)0x01);
|
||||
public static final byte CAPABILITIES_NO_TX_CHANNELS =((byte)0x02);
|
||||
public static final byte CAPABILITIES_NO_RX_MESSAGES =((byte)0x04);
|
||||
public static final byte CAPABILITIES_NO_TX_MESSAGES =((byte)0x08);
|
||||
public static final byte CAPABILITIES_NO_ACKD_MESSAGES =((byte)0x10);
|
||||
public static final byte CAPABILITIES_NO_BURST_TRANSFER =((byte)0x20);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Advanced capabilities defines
|
||||
//////////////////////////////////////////////
|
||||
public static final byte CAPABILITIES_OVERUN_UNDERRUN =((byte)0x01); // Support for this functionality has been dropped
|
||||
public static final byte CAPABILITIES_NETWORK_ENABLED =((byte)0x02);
|
||||
public static final byte CAPABILITIES_AP1_VERSION_2 =((byte)0x04); // This Version of the AP1 does not support transmit and only had a limited release
|
||||
public static final byte CAPABILITIES_SERIAL_NUMBER_ENABLED =((byte)0x08);
|
||||
public static final byte CAPABILITIES_PER_CHANNEL_TX_POWER_ENABLED =((byte)0x10);
|
||||
public static final byte CAPABILITIES_LOW_PRIORITY_SEARCH_ENABLED =((byte)0x20);
|
||||
public static final byte CAPABILITIES_SCRIPT_ENABLED =((byte)0x40);
|
||||
public static final byte CAPABILITIES_SEARCH_LIST_ENABLED =((byte)0x80);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Advanced capabilities 2 defines
|
||||
//////////////////////////////////////////////
|
||||
public static final byte CAPABILITIES_LED_ENABLED =((byte)0x01);
|
||||
public static final byte CAPABILITIES_EXT_MESSAGE_ENABLED =((byte)0x02);
|
||||
public static final byte CAPABILITIES_SCAN_MODE_ENABLED =((byte)0x04);
|
||||
public static final byte CAPABILITIES_RESERVED =((byte)0x08);
|
||||
public static final byte CAPABILITIES_PROX_SEARCH_ENABLED =((byte)0x10);
|
||||
public static final byte CAPABILITIES_EXT_ASSIGN_ENABLED =((byte)0x20);
|
||||
public static final byte CAPABILITIES_FREE_1 =((byte)0x40);
|
||||
public static final byte CAPABILITIES_FIT1_ENABLED =((byte)0x80);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Advanced capabilities 3 defines
|
||||
//////////////////////////////////////////////
|
||||
public static final byte CAPABILITIES_SENSRCORE_ENABLED =((byte)0x01);
|
||||
public static final byte CAPABILITIES_RESERVED_1 =((byte)0x02);
|
||||
public static final byte CAPABILITIES_RESERVED_2 =((byte)0x04);
|
||||
public static final byte CAPABILITIES_RESERVED_3 =((byte)0x08);
|
||||
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Burst Message Sequence
|
||||
//////////////////////////////////////////////
|
||||
public static final byte CHANNEL_NUMBER_MASK =((byte)0x1F);
|
||||
public static final byte SEQUENCE_NUMBER_MASK =((byte)0xE0);
|
||||
public static final byte SEQUENCE_NUMBER_ROLLOVER =((byte)0x60);
|
||||
public static final byte SEQUENCE_FIRST_MESSAGE =((byte)0x00);
|
||||
public static final byte SEQUENCE_LAST_MESSAGE =((byte)0x80);
|
||||
public static final byte SEQUENCE_NUMBER_INC =((byte)0x20);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Control Message Flags
|
||||
//////////////////////////////////////////////
|
||||
public static final byte BROADCAST_CONTROL_BYTE =((byte)0x00);
|
||||
public static final byte ACKNOWLEDGED_CONTROL_BYTE =((byte)0xA0);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Response / Event Codes
|
||||
//////////////////////////////////////////////
|
||||
public static final byte RESPONSE_NO_ERROR =((byte)0x00);
|
||||
public static final byte NO_EVENT =((byte)0x00);
|
||||
|
||||
public static final byte EVENT_RX_SEARCH_TIMEOUT =((byte)0x01);
|
||||
public static final byte EVENT_RX_FAIL =((byte)0x02);
|
||||
public static final byte EVENT_TX =((byte)0x03);
|
||||
public static final byte EVENT_TRANSFER_RX_FAILED =((byte)0x04);
|
||||
public static final byte EVENT_TRANSFER_TX_COMPLETED =((byte)0x05);
|
||||
public static final byte EVENT_TRANSFER_TX_FAILED =((byte)0x06);
|
||||
public static final byte EVENT_CHANNEL_CLOSED =((byte)0x07);
|
||||
public static final byte EVENT_RX_FAIL_GO_TO_SEARCH =((byte)0x08);
|
||||
public static final byte EVENT_CHANNEL_COLLISION =((byte)0x09);
|
||||
public static final byte EVENT_TRANSFER_TX_START =((byte)0x0A); // a pending transmit transfer has begun
|
||||
|
||||
public static final byte EVENT_CHANNEL_ACTIVE =((byte)0x0F);
|
||||
|
||||
public static final byte EVENT_TRANSFER_TX_NEXT_MESSAGE =((byte)0x11); // only enabled in FIT1
|
||||
|
||||
public static final byte CHANNEL_IN_WRONG_STATE =((byte)0x15); // returned on attempt to perform an action from the wrong channel state
|
||||
public static final byte CHANNEL_NOT_OPENED =((byte)0x16); // returned on attempt to communicate on a channel that is not open
|
||||
public static final byte CHANNEL_ID_NOT_SET =((byte)0x18); // returned on attempt to open a channel without setting the channel ID
|
||||
public static final byte CLOSE_ALL_CHANNELS =((byte)0x19); // returned when attempting to start scanning mode, when channels are still open
|
||||
|
||||
public static final byte TRANSFER_IN_PROGRESS =((byte)0x1F); // returned on attempt to communicate on a channel with a TX transfer in progress
|
||||
public static final byte TRANSFER_SEQUENCE_NUMBER_ERROR =((byte)0x20); // returned when sequence number is out of order on a Burst transfer
|
||||
public static final byte TRANSFER_IN_ERROR =((byte)0x21);
|
||||
public static final byte TRANSFER_BUSY =((byte)0x22);
|
||||
|
||||
public static final byte INVALID_MESSAGE_CRC =((byte)0x26); // returned if there is a framing error on an incomming message
|
||||
public static final byte MESSAGE_SIZE_EXCEEDS_LIMIT =((byte)0x27); // returned if a data message is provided that is too large
|
||||
public static final byte INVALID_MESSAGE =((byte)0x28); // returned when the message has an invalid parameter
|
||||
public static final byte INVALID_NETWORK_NUMBER =((byte)0x29); // returned when an invalid network number is provided
|
||||
public static final byte INVALID_LIST_ID =((byte)0x30); // returned when the provided list ID or size exceeds the limit
|
||||
public static final byte INVALID_SCAN_TX_CHANNEL =((byte)0x31); // returned when attempting to transmit on channel 0 when in scan mode
|
||||
|
||||
public static final byte INVALID_PARAMETER_PROVIDED =((byte)0x33); // returned when an invalid parameter is specified in a configuration message
|
||||
|
||||
public static final byte EVENT_SERIAL_QUE_OVERFLOW =((byte)0x34);
|
||||
public static final byte EVENT_QUE_OVERFLOW =((byte)0x35); // ANT event que has overflowed and lost 1 or more events
|
||||
|
||||
public static final byte EVENT_CLK_ERROR =((byte)0x36); // debug event for XOSC16M on LE1
|
||||
|
||||
public static final byte SCRIPT_FULL_ERROR =((byte)0x40); // error writing to script, memory is full
|
||||
public static final byte SCRIPT_WRITE_ERROR =((byte)0x41); // error writing to script, bytes not written correctly
|
||||
public static final byte SCRIPT_INVALID_PAGE_ERROR =((byte)0x42); // error accessing script page
|
||||
public static final byte SCRIPT_LOCKED_ERROR =((byte)0x43); // the scripts are locked and can't be dumped
|
||||
|
||||
public static final byte NO_RESPONSE_MESSAGE =((byte)0x50); // returned to the Command_SerialMessageProcess function, so no reply message is generated
|
||||
public static final byte RETURN_TO_MFG =((byte)0x51); // default return to any mesg when the module determines that the mfg procedure has not been fully completed
|
||||
|
||||
public static final byte FIT_ACTIVE_SEARCH_TIMEOUT =((byte)0x60); // Fit1 only event added for timeout of the pairing state after the Fit module becomes active
|
||||
public static final byte FIT_WATCH_PAIR =((byte)0x61); // Fit1 only
|
||||
public static final byte FIT_WATCH_UNPAIR =((byte)0x62); // Fit1 only
|
||||
|
||||
public static final byte USB_STRING_WRITE_FAIL =((byte)0x70);
|
||||
|
||||
// Internal only events below this point
|
||||
public static final byte INTERNAL_ONLY_EVENTS =((byte)0x80);
|
||||
public static final byte EVENT_RX =((byte)0x80); // INTERNAL: Event for a receive message
|
||||
public static final byte EVENT_NEW_CHANNEL =((byte)0x81); // INTERNAL: EVENT for a new active channel
|
||||
public static final byte EVENT_PASS_THRU =((byte)0x82); // INTERNAL: Event to allow an upper stack events to pass through lower stacks
|
||||
|
||||
public static final byte EVENT_BLOCKED =((byte)0xFF); // INTERNAL: Event to replace any event we do not wish to go out, will also zero the size of the Tx message
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// Script Command Codes
|
||||
///////////////////////////////////////////////////////
|
||||
public static final byte SCRIPT_CMD_FORMAT =((byte)0x00);
|
||||
public static final byte SCRIPT_CMD_DUMP =((byte)0x01);
|
||||
public static final byte SCRIPT_CMD_SET_DEFAULT_SECTOR =((byte)0x02);
|
||||
public static final byte SCRIPT_CMD_END_SECTOR =((byte)0x03);
|
||||
public static final byte SCRIPT_CMD_END_DUMP =((byte)0x04);
|
||||
public static final byte SCRIPT_CMD_LOCK =((byte)0x05);
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// Reset Mesg Codes
|
||||
///////////////////////////////////////////////////////
|
||||
public static final byte RESET_FLAGS_MASK =((byte)0xE0);
|
||||
public static final byte RESET_SUSPEND =((byte)0x80); // this must follow bitfield def
|
||||
public static final byte RESET_SYNC =((byte)0x40); // this must follow bitfield def
|
||||
public static final byte RESET_CMD =((byte)0x20); // this must follow bitfield def
|
||||
public static final byte RESET_WDT =((byte)0x02);
|
||||
public static final byte RESET_RST =((byte)0x01);
|
||||
public static final byte RESET_POR =((byte)0x00);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2010 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
/**
|
||||
* Manages the ANT Interface
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public interface AntInterfaceIntent {
|
||||
|
||||
public static final String STATUS = "com.dsi.ant.rx.intent.STATUS";
|
||||
public static final String ANT_MESSAGE = "com.dsi.ant.intent.ANT_MESSAGE";
|
||||
public static final String ANT_INTERFACE_CLAIMED_PID = "com.dsi.ant.intent.ANT_INTERFACE_CLAIMED_PID";
|
||||
|
||||
public static final String ANT_ENABLED_ACTION = "com.dsi.ant.intent.action.ANT_ENABLED";
|
||||
public static final String ANT_DISABLED_ACTION = "com.dsi.ant.intent.action.ANT_DISABLED";
|
||||
public static final String ANT_RESET_ACTION = "com.dsi.ant.intent.action.ANT_RESET";
|
||||
|
||||
public static final String ANT_INTERFACE_CLAIMED_ACTION = "com.dsi.ant.intent.action.ANT_INTERFACE_CLAIMED_ACTION";
|
||||
|
||||
public static final String ANT_RX_MESSAGE_ACTION = "com.dsi.ant.intent.action.ANT_RX_MESSAGE_ACTION";
|
||||
|
||||
}
|
||||
@@ -0,0 +1,279 @@
|
||||
/*
|
||||
* Copyright 2010 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
/**
|
||||
* Public API for controlling the Ant Service.
|
||||
* AntMesg contains definitions for ANT message IDs
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class AntMesg {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// HCI VS Message Format
|
||||
// Messages are in the format:
|
||||
//
|
||||
// Outgoing ANT messages (host -> ANT chip)
|
||||
// 01 D1 FD XX YY YY II JJ ------
|
||||
// ^ ^ ^ ^
|
||||
// | HCI framing | | ANT Mesg |
|
||||
//
|
||||
// where: 01 is the 1 byte HCI packet Identifier (HCI Command packet)
|
||||
// D1 FD is the 2 byte HCI op code (0xFDD1 stored in little endian)
|
||||
// XX is the 1 byte Length of all parameters in bytes (number of bytes in the HCI packet after this byte)
|
||||
// YY YY is the 2 byte Parameter describing the length of the entire ANT message (II JJ ------) stored in little endian
|
||||
// II is the 1 byte size of the ANT message (0-249)
|
||||
// JJ is the 1 byte ID of the ANT message (1-255, 0 is invalid)
|
||||
// ------ is the data of the ANT message (0-249 bytes of data)
|
||||
//
|
||||
// Incoming HCI Command Complete for ANT message command (host <- ANT chip)
|
||||
// 04 0E 04 01 D1 FD ZZ
|
||||
//
|
||||
// where: 04 is the 1 byte HCI packet Identifier (HCI Event packet)
|
||||
// 0E is the 1 byte HCI event (Command Complete)
|
||||
// 04 is the 1 byte Length of all parameters in bytes (there are 4 bytes)
|
||||
// 01 is the 1 byte Number of parameters in the packet (there is 1 parameter)
|
||||
// D1 FD is the 2 byte HCI Op code of the command (0xFDD1 stored in little endian)
|
||||
// ZZ is the 1 byte response to the command (0x00 - Command Successful
|
||||
// 0x1F - Returned if the receive message queue of the ANT chip is full, the command should be retried
|
||||
// Other - Any other non-zero response code indicates an error)
|
||||
//
|
||||
// Incoming ANT messages (host <- ANT chip)
|
||||
// 04 FF XX 00 05 YY YY II JJ ------
|
||||
// ^ ^ ^ ^
|
||||
// | HCI framing | | ANT Mesg |
|
||||
//
|
||||
// where: 04 is the 1 byte HCI packet Identifier (HCI Event packet)
|
||||
// FF is the 1 byte HCI event code (0xFF Vendor Specific event)
|
||||
// XX is the 1 byte Length of all parameters in bytes (number of bytes in the HCI packet after this byte)
|
||||
// 00 05 is the 2 byte vendor specific event code for ANT messages (0x0500 stored in little endian)
|
||||
// YY YY is the 2 byte Parameter describing the length of the entire ANT message (II JJ ------) stored in little endian
|
||||
// II is the 1 byte size of the ANT message (0-249)
|
||||
// JJ is the 1 byte ID of the ANT message (1-255, 0 is invalid)
|
||||
// ------ is the data of the ANT message (0-249 bytes of data)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public static final byte MESG_SYNC_SIZE =((byte)0); // Ant messages are embedded in HCI messages we do not include a sync byte
|
||||
public static final byte MESG_SIZE_SIZE =((byte)1);
|
||||
public static final byte MESG_ID_SIZE =((byte)1);
|
||||
public static final byte MESG_CHANNEL_NUM_SIZE =((byte)1);
|
||||
public static final byte MESG_EXT_MESG_BF_SIZE =((byte)1); // NOTE: this could increase in the future
|
||||
public static final byte MESG_CHECKSUM_SIZE =((byte)0); // Ant messages are embedded in HCI messages we do not include a checksum
|
||||
public static final byte MESG_DATA_SIZE =((byte)9);
|
||||
|
||||
// The largest serial message is an ANT data message with all of the extended fields
|
||||
public static final byte MESG_ANT_MAX_PAYLOAD_SIZE =AntDefine.ANT_STANDARD_DATA_PAYLOAD_SIZE;
|
||||
|
||||
public static final byte MESG_MAX_EXT_DATA_SIZE =(AntDefine.ANT_EXT_MESG_DEVICE_ID_FIELD_SIZE + AntDefine.ANT_EXT_STRING_SIZE); // ANT device ID (4 bytes) + Padding for ANT EXT string size(19 bytes)
|
||||
|
||||
public static final byte MESG_MAX_DATA_SIZE =(MESG_ANT_MAX_PAYLOAD_SIZE + MESG_EXT_MESG_BF_SIZE + MESG_MAX_EXT_DATA_SIZE); // ANT data payload (8 bytes) + extended bitfield (1 byte) + extended data (10 bytes)
|
||||
public static final byte MESG_MAX_SIZE_VALUE =(MESG_MAX_DATA_SIZE + MESG_CHANNEL_NUM_SIZE); // this is the maximum value that the serial message size value is allowed to be
|
||||
public static final byte MESG_BUFFER_SIZE =(MESG_SIZE_SIZE + MESG_ID_SIZE + MESG_CHANNEL_NUM_SIZE + MESG_MAX_DATA_SIZE + MESG_CHECKSUM_SIZE);
|
||||
public static final byte MESG_FRAMED_SIZE =(MESG_ID_SIZE + MESG_CHANNEL_NUM_SIZE + MESG_MAX_DATA_SIZE);
|
||||
public static final byte MESG_HEADER_SIZE =(MESG_SYNC_SIZE + MESG_SIZE_SIZE + MESG_ID_SIZE);
|
||||
public static final byte MESG_FRAME_SIZE =(MESG_HEADER_SIZE + MESG_CHECKSUM_SIZE);
|
||||
public static final byte MESG_MAX_SIZE =(MESG_MAX_DATA_SIZE + MESG_FRAME_SIZE);
|
||||
|
||||
public static final byte MESG_SIZE_OFFSET =(MESG_SYNC_SIZE);
|
||||
public static final byte MESG_ID_OFFSET =(MESG_SYNC_SIZE + MESG_SIZE_SIZE);
|
||||
public static final byte MESG_DATA_OFFSET =(MESG_HEADER_SIZE);
|
||||
public static final byte MESG_RECOMMENDED_BUFFER_SIZE =((byte) 64); // This is the recommended size for serial message buffers if there are no RAM restrictions on the system
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Message ID's
|
||||
//////////////////////////////////////////////
|
||||
public static final byte MESG_INVALID_ID =((byte)0x00);
|
||||
public static final byte MESG_EVENT_ID =((byte)0x01);
|
||||
|
||||
public static final byte MESG_VERSION_ID =((byte)0x3E);
|
||||
public static final byte MESG_RESPONSE_EVENT_ID =((byte)0x40);
|
||||
|
||||
public static final byte MESG_UNASSIGN_CHANNEL_ID =((byte)0x41);
|
||||
public static final byte MESG_ASSIGN_CHANNEL_ID =((byte)0x42);
|
||||
public static final byte MESG_CHANNEL_MESG_PERIOD_ID =((byte)0x43);
|
||||
public static final byte MESG_CHANNEL_SEARCH_TIMEOUT_ID =((byte)0x44);
|
||||
public static final byte MESG_CHANNEL_RADIO_FREQ_ID =((byte)0x45);
|
||||
public static final byte MESG_NETWORK_KEY_ID =((byte)0x46);
|
||||
public static final byte MESG_RADIO_TX_POWER_ID =((byte)0x47);
|
||||
public static final byte MESG_RADIO_CW_MODE_ID =((byte)0x48);
|
||||
|
||||
public static final byte MESG_SYSTEM_RESET_ID =((byte)0x4A);
|
||||
public static final byte MESG_OPEN_CHANNEL_ID =((byte)0x4B);
|
||||
public static final byte MESG_CLOSE_CHANNEL_ID =((byte)0x4C);
|
||||
public static final byte MESG_REQUEST_ID =((byte)0x4D);
|
||||
|
||||
public static final byte MESG_BROADCAST_DATA_ID =((byte)0x4E);
|
||||
public static final byte MESG_ACKNOWLEDGED_DATA_ID =((byte)0x4F);
|
||||
public static final byte MESG_BURST_DATA_ID =((byte)0x50);
|
||||
|
||||
public static final byte MESG_CHANNEL_ID_ID =((byte)0x51);
|
||||
public static final byte MESG_CHANNEL_STATUS_ID =((byte)0x52);
|
||||
public static final byte MESG_RADIO_CW_INIT_ID =((byte)0x53);
|
||||
public static final byte MESG_CAPABILITIES_ID =((byte)0x54);
|
||||
|
||||
public static final byte MESG_STACKLIMIT_ID =((byte)0x55);
|
||||
|
||||
public static final byte MESG_SCRIPT_DATA_ID =((byte)0x56);
|
||||
public static final byte MESG_SCRIPT_CMD_ID =((byte)0x57);
|
||||
|
||||
public static final byte MESG_ID_LIST_ADD_ID =((byte)0x59);
|
||||
public static final byte MESG_ID_LIST_CONFIG_ID =((byte)0x5A);
|
||||
public static final byte MESG_OPEN_RX_SCAN_ID =((byte)0x5B);
|
||||
|
||||
public static final byte MESG_EXT_CHANNEL_RADIO_FREQ_ID =((byte)0x5C); // OBSOLETE: (for 905 radio)
|
||||
public static final byte MESG_EXT_BROADCAST_DATA_ID =((byte)0x5D);
|
||||
public static final byte MESG_EXT_ACKNOWLEDGED_DATA_ID =((byte)0x5E);
|
||||
public static final byte MESG_EXT_BURST_DATA_ID =((byte)0x5F);
|
||||
|
||||
public static final byte MESG_CHANNEL_RADIO_TX_POWER_ID =((byte)0x60);
|
||||
public static final byte MESG_GET_SERIAL_NUM_ID =((byte)0x61);
|
||||
public static final byte MESG_GET_TEMP_CAL_ID =((byte)0x62);
|
||||
public static final byte MESG_SET_LP_SEARCH_TIMEOUT_ID =((byte)0x63);
|
||||
public static final byte MESG_SET_TX_SEARCH_ON_NEXT_ID =((byte)0x64);
|
||||
public static final byte MESG_SERIAL_NUM_SET_CHANNEL_ID_ID =((byte)0x65);
|
||||
public static final byte MESG_RX_EXT_MESGS_ENABLE_ID =((byte)0x66);
|
||||
public static final byte MESG_RADIO_CONFIG_ALWAYS_ID =((byte)0x67);
|
||||
public static final byte MESG_ENABLE_LED_FLASH_ID =((byte)0x68);
|
||||
|
||||
public static final byte MESG_XTAL_ENABLE_ID =((byte)0x6D);
|
||||
|
||||
public static final byte MESG_STARTUP_MESG_ID =((byte)0x6F);
|
||||
public static final byte MESG_AUTO_FREQ_CONFIG_ID =((byte)0x70);
|
||||
public static final byte MESG_PROX_SEARCH_CONFIG_ID =((byte)0x71);
|
||||
public static final byte MESG_EVENT_BUFFERING_CONFIG_ID =((byte)0x74);
|
||||
|
||||
|
||||
public static final byte MESG_CUBE_CMD_ID =((byte)0x80);
|
||||
|
||||
public static final byte MESG_GET_PIN_DIODE_CONTROL_ID =((byte)0x8D);
|
||||
public static final byte MESG_PIN_DIODE_CONTROL_ID =((byte)0x8E);
|
||||
public static final byte MESG_FIT1_SET_AGC_ID =((byte)0x8F);
|
||||
|
||||
public static final byte MESG_FIT1_SET_EQUIP_STATE_ID =((byte)0x91); // *** CONFLICT: w/ Sensrcore, Fit1 will never have sensrcore enabled
|
||||
|
||||
// Sensrcore Messages
|
||||
public static final byte MESG_SET_CHANNEL_INPUT_MASK_ID =((byte)0x90);
|
||||
public static final byte MESG_SET_CHANNEL_DATA_TYPE_ID =((byte)0x91);
|
||||
public static final byte MESG_READ_PINS_FOR_SECT_ID =((byte)0x92);
|
||||
public static final byte MESG_TIMER_SELECT_ID =((byte)0x93);
|
||||
public static final byte MESG_ATOD_SETTINGS_ID =((byte)0x94);
|
||||
public static final byte MESG_SET_SHARED_ADDRESS_ID =((byte)0x95);
|
||||
public static final byte MESG_ATOD_EXTERNAL_ENABLE_ID =((byte)0x96);
|
||||
public static final byte MESG_ATOD_PIN_SETUP_ID =((byte)0x97);
|
||||
public static final byte MESG_SETUP_ALARM_ID =((byte)0x98);
|
||||
public static final byte MESG_ALARM_VARIABLE_MODIFY_TEST_ID =((byte)0x99);
|
||||
public static final byte MESG_PARTIAL_RESET_ID =((byte)0x9A);
|
||||
public static final byte MESG_OVERWRITE_TEMP_CAL_ID =((byte)0x9B);
|
||||
public static final byte MESG_SERIAL_PASSTHRU_SETTINGS_ID =((byte)0x9C);
|
||||
|
||||
public static final byte MESG_BIST_ID =((byte)0xAA);
|
||||
|
||||
public static final byte MESG_UNLOCK_INTERFACE_ID =((byte)0xAD);
|
||||
public static final byte MESG_SERIAL_ERROR_ID =((byte)0xAE);
|
||||
public static final byte MESG_SET_ID_STRING_ID =((byte)0xAF);
|
||||
|
||||
public static final byte MESG_PORT_GET_IO_STATE_ID =((byte)0xB4);
|
||||
public static final byte MESG_PORT_SET_IO_STATE_ID =((byte)0xB5);
|
||||
|
||||
public static final byte MESG_SLEEP_ID =((byte)0xC5);
|
||||
public static final byte MESG_GET_GRMN_ESN_ID =((byte)0xC6);
|
||||
public static final byte MESG_SET_USB_INFO_ID =((byte)0xC7);
|
||||
|
||||
public static final byte MESG_COMMAND_COMPLETE_RESPONSE_ID =((byte)0xC8);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Command complete results
|
||||
//////////////////////////////////////////////
|
||||
public static final byte MESG_COMMAND_COMPLETE_SUCCESS =((byte)0x00);
|
||||
public static final byte MESG_COMMAND_COMPLETE_RETRY =((byte)0x1F);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Message Sizes
|
||||
//////////////////////////////////////////////
|
||||
public static final byte MESG_INVALID_SIZE =((byte)0);
|
||||
|
||||
public static final byte MESG_VERSION_SIZE =((byte)13);
|
||||
public static final byte MESG_RESPONSE_EVENT_SIZE =((byte)3);
|
||||
public static final byte MESG_CHANNEL_STATUS_SIZE =((byte)2);
|
||||
|
||||
public static final byte MESG_UNASSIGN_CHANNEL_SIZE =((byte)1);
|
||||
public static final byte MESG_ASSIGN_CHANNEL_SIZE =((byte)3);
|
||||
public static final byte MESG_CHANNEL_ID_SIZE =((byte)5);
|
||||
public static final byte MESG_CHANNEL_MESG_PERIOD_SIZE =((byte)3);
|
||||
public static final byte MESG_CHANNEL_SEARCH_TIMEOUT_SIZE =((byte)2);
|
||||
public static final byte MESG_CHANNEL_RADIO_FREQ_SIZE =((byte)2);
|
||||
public static final byte MESG_CHANNEL_RADIO_TX_POWER_SIZE =((byte)2);
|
||||
public static final byte MESG_NETWORK_KEY_SIZE =((byte)9);
|
||||
public static final byte MESG_RADIO_TX_POWER_SIZE =((byte)2);
|
||||
public static final byte MESG_RADIO_CW_MODE_SIZE =((byte)3);
|
||||
public static final byte MESG_RADIO_CW_INIT_SIZE =((byte)1);
|
||||
|
||||
public static final byte MESG_SYSTEM_RESET_SIZE =((byte)1);
|
||||
public static final byte MESG_OPEN_CHANNEL_SIZE =((byte)1);
|
||||
public static final byte MESG_CLOSE_CHANNEL_SIZE =((byte)1);
|
||||
public static final byte MESG_REQUEST_SIZE =((byte)2);
|
||||
|
||||
public static final byte MESG_CAPABILITIES_SIZE =((byte)6);
|
||||
public static final byte MESG_STACKLIMIT_SIZE =((byte)2);
|
||||
|
||||
public static final byte MESG_SCRIPT_DATA_SIZE =((byte)10);
|
||||
public static final byte MESG_SCRIPT_CMD_SIZE =((byte)3);
|
||||
|
||||
public static final byte MESG_ID_LIST_ADD_SIZE =((byte)6);
|
||||
public static final byte MESG_ID_LIST_CONFIG_SIZE =((byte)3);
|
||||
public static final byte MESG_OPEN_RX_SCAN_SIZE =((byte)1);
|
||||
public static final byte MESG_EXT_CHANNEL_RADIO_FREQ_SIZE =((byte)3);
|
||||
|
||||
public static final byte MESG_RADIO_CONFIG_ALWAYS_SIZE =((byte)2);
|
||||
public static final byte MESG_RX_EXT_MESGS_ENABLE_SIZE =((byte)2);
|
||||
public static final byte MESG_SET_TX_SEARCH_ON_NEXT_SIZE =((byte)2);
|
||||
public static final byte MESG_SET_LP_SEARCH_TIMEOUT_SIZE =((byte)2);
|
||||
|
||||
public static final byte MESG_SERIAL_NUM_SET_CHANNEL_ID_SIZE =((byte)3);
|
||||
public static final byte MESG_ENABLE_LED_FLASH_SIZE =((byte)2);
|
||||
public static final byte MESG_GET_SERIAL_NUM_SIZE =((byte)4);
|
||||
public static final byte MESG_GET_TEMP_CAL_SIZE =((byte)4);
|
||||
|
||||
public static final byte MESG_XTAL_ENABLE_SIZE =((byte)1);
|
||||
public static final byte MESG_STARTUP_MESG_SIZE =((byte)1);
|
||||
public static final byte MESG_AUTO_FREQ_CONFIG_SIZE =((byte)4);
|
||||
public static final byte MESG_PROX_SEARCH_CONFIG_SIZE =((byte)2);
|
||||
|
||||
public static final byte MESG_GET_PIN_DIODE_CONTROL_SIZE =((byte)1);
|
||||
public static final byte MESG_PIN_DIODE_CONTROL_ID_SIZE =((byte)2);
|
||||
public static final byte MESG_FIT1_SET_EQUIP_STATE_SIZE =((byte)2);
|
||||
public static final byte MESG_FIT1_SET_AGC_SIZE =((byte)3);
|
||||
|
||||
public static final byte MESG_BIST_SIZE =((byte)6);
|
||||
public static final byte MESG_UNLOCK_INTERFACE_SIZE =((byte)1);
|
||||
public static final byte MESG_SET_SHARED_ADDRESS_SIZE =((byte)3);
|
||||
|
||||
public static final byte MESG_GET_GRMN_ESN_SIZE =((byte)5);
|
||||
|
||||
public static final byte MESG_PORT_SET_IO_STATE_SIZE =((byte)5);
|
||||
|
||||
public static final byte MESG_EVENT_BUFFERING_CONFIG_SIZE =((byte)6);
|
||||
|
||||
public static final byte MESG_SLEEP_SIZE =((byte)1);
|
||||
|
||||
|
||||
public static final byte MESG_EXT_DATA_SIZE =((byte)13);
|
||||
|
||||
protected AntMesg()
|
||||
{ }
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright 2010 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
/**
|
||||
* The Android Ant API is not finalized, and *will* be updated and expanded.
|
||||
* This is the base level ANT messaging API and gives any application full
|
||||
* control over the ANT radio HW. Caution should be exercised when using
|
||||
* this interface.
|
||||
*
|
||||
* Public API for controlling the Ant Service.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
interface IAnt {
|
||||
// Since version 1 (1.0):
|
||||
boolean enable();
|
||||
boolean disable();
|
||||
boolean isEnabled();
|
||||
|
||||
boolean ANTTxMessage(in byte[] message);
|
||||
|
||||
boolean ANTResetSystem();
|
||||
boolean ANTUnassignChannel(byte channelNumber);
|
||||
boolean ANTAssignChannel(byte channelNumber, byte channelType, byte networkNumber);
|
||||
boolean ANTSetChannelId(byte channelNumber, int deviceNumber, byte deviceType, byte txType);
|
||||
boolean ANTSetChannelPeriod(byte channelNumber, int channelPeriod);
|
||||
boolean ANTSetChannelRFFreq(byte channelNumber, byte radioFrequency);
|
||||
boolean ANTSetChannelSearchTimeout(byte channelNumber, byte searchTimeout);
|
||||
boolean ANTSetLowPriorityChannelSearchTimeout(byte channelNumber, byte searchTimeout);
|
||||
boolean ANTSetProximitySearch(byte channelNumber, byte searchThreshold);
|
||||
boolean ANTSetChannelTxPower(byte channelNumber, byte txPower);
|
||||
boolean ANTAddChannelId(byte channelNumber, int deviceNumber, byte deviceType, byte txType, byte listIndex);
|
||||
boolean ANTConfigList(byte channelNumber, byte listSize, byte exclude);
|
||||
|
||||
boolean ANTOpenChannel(byte channelNumber);
|
||||
boolean ANTCloseChannel(byte channelNumber);
|
||||
|
||||
boolean ANTRequestMessage(byte channelNumber, byte messageID);
|
||||
boolean ANTSendBroadcastData(byte channelNumber, in byte[] txBuffer);
|
||||
boolean ANTSendAcknowledgedData(byte channelNumber, in byte[] txBuffer);
|
||||
|
||||
boolean ANTSendBurstTransferPacket(byte control, in byte[] txBuffer);
|
||||
|
||||
int ANTSendBurstTransfer(byte channelNumber, in byte[] txBuffer);
|
||||
int ANTTransmitBurst(byte channelNumber, in byte[] txBuffer, int initialPacket, boolean containsEndOfBurst);
|
||||
|
||||
// Since version 4 (1.3):
|
||||
boolean ANTConfigEventBuffering(int screenOnFlushTimerInterval, int screenOnFlushBufferThreshold, int screenOffFlushTimerInterval, int screenOffFlushBufferThreshold);
|
||||
|
||||
// Since version 2 (1.1):
|
||||
boolean ANTDisableEventBuffering();
|
||||
|
||||
// Since version 3 (1.2):
|
||||
int getServiceLibraryVersionCode();
|
||||
String getServiceLibraryVersionName();
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright 2011 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
/**
|
||||
* The Android Ant API is not finalized, and *will* be updated and expanded.
|
||||
* This is the base level ANT messaging API and gives any application full
|
||||
* control over the ANT radio HW. Caution should be exercised when using
|
||||
* this interface.
|
||||
*
|
||||
* Public API for controlling the Ant Service.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
interface IAnt_6 {
|
||||
// Since version 1 (1.0):
|
||||
boolean enable();
|
||||
boolean disable();
|
||||
boolean isEnabled();
|
||||
|
||||
boolean ANTTxMessage(in byte[] message);
|
||||
|
||||
boolean ANTResetSystem();
|
||||
boolean ANTUnassignChannel(byte channelNumber);
|
||||
boolean ANTAssignChannel(byte channelNumber, byte channelType, byte networkNumber);
|
||||
boolean ANTSetChannelId(byte channelNumber, int deviceNumber, byte deviceType, byte txType);
|
||||
boolean ANTSetChannelPeriod(byte channelNumber, int channelPeriod);
|
||||
boolean ANTSetChannelRFFreq(byte channelNumber, byte radioFrequency);
|
||||
boolean ANTSetChannelSearchTimeout(byte channelNumber, byte searchTimeout);
|
||||
boolean ANTSetLowPriorityChannelSearchTimeout(byte channelNumber, byte searchTimeout);
|
||||
boolean ANTSetProximitySearch(byte channelNumber, byte searchThreshold);
|
||||
boolean ANTSetChannelTxPower(byte channelNumber, byte txPower);
|
||||
boolean ANTAddChannelId(byte channelNumber, int deviceNumber, byte deviceType, byte txType, byte listIndex);
|
||||
boolean ANTConfigList(byte channelNumber, byte listSize, byte exclude);
|
||||
|
||||
boolean ANTOpenChannel(byte channelNumber);
|
||||
boolean ANTCloseChannel(byte channelNumber);
|
||||
|
||||
boolean ANTRequestMessage(byte channelNumber, byte messageID);
|
||||
boolean ANTSendBroadcastData(byte channelNumber, in byte[] txBuffer);
|
||||
boolean ANTSendAcknowledgedData(byte channelNumber, in byte[] txBuffer);
|
||||
|
||||
boolean ANTSendBurstTransferPacket(byte control, in byte[] txBuffer);
|
||||
|
||||
int ANTSendBurstTransfer(byte channelNumber, in byte[] txBuffer);
|
||||
int ANTTransmitBurst(byte channelNumber, in byte[] txBuffer, int initialPacket, boolean containsEndOfBurst);
|
||||
|
||||
// Since version 4 (1.3):
|
||||
boolean ANTConfigEventBuffering(int screenOnFlushTimerInterval, int screenOnFlushBufferThreshold, int screenOffFlushTimerInterval, int screenOffFlushBufferThreshold);
|
||||
|
||||
// Since version 2 (1.1):
|
||||
boolean ANTDisableEventBuffering();
|
||||
|
||||
// Since version 3 (1.2):
|
||||
int getServiceLibraryVersionCode();
|
||||
String getServiceLibraryVersionName();
|
||||
|
||||
// Since version 6 (1.5):
|
||||
boolean claimInterface();
|
||||
boolean requestForceClaimInterface(String appName);
|
||||
boolean stopRequestForceClaimInterface();
|
||||
boolean releaseInterface();
|
||||
boolean hasClaimedInterface();
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2010 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
/**
|
||||
*
|
||||
* API for configuring the non-ANT components of the ANT Service.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
interface IServiceSettings {
|
||||
void debugLogging(boolean debug);
|
||||
|
||||
boolean setNumCombinedBurstPackets(int numPackets);
|
||||
int getNumCombinedBurstPackets();
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2011 Dynastream Innovations 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.
|
||||
*/
|
||||
package com.dsi.ant;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Defines version numbers
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class Version {
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// Library Version Information
|
||||
//////////////////////////////////////////////
|
||||
public static final int ANT_LIBRARY_VERSION_CODE = 6;
|
||||
public static final int ANT_LIBRARY_VERSION_MAJOR = 2;
|
||||
public static final int ANT_LIBRARY_VERSION_MINOR = 0;
|
||||
public static final String ANT_LIBRARY_VERSION_NAME = String.valueOf(ANT_LIBRARY_VERSION_MAJOR) + "." + String.valueOf(ANT_LIBRARY_VERSION_MINOR);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.dsi.ant.exception;
|
||||
|
||||
public class AntInterfaceException extends Exception
|
||||
{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7278855366167722274L;
|
||||
|
||||
public AntInterfaceException()
|
||||
{
|
||||
this("Unknown ANT Interface error");
|
||||
}
|
||||
|
||||
public AntInterfaceException(String string)
|
||||
{
|
||||
super(string);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.dsi.ant.exception;
|
||||
|
||||
import android.os.RemoteException;
|
||||
|
||||
public class AntRemoteException extends AntInterfaceException
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 8950974759973459561L;
|
||||
|
||||
public AntRemoteException(RemoteException e)
|
||||
{
|
||||
this("ANT Interface error, ANT Radio Service remote error: "+e.toString(), e);
|
||||
}
|
||||
|
||||
public AntRemoteException(String string, RemoteException e)
|
||||
{
|
||||
super(string);
|
||||
|
||||
this.initCause(e);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.dsi.ant.exception;
|
||||
|
||||
public class AntServiceNotConnectedException extends AntInterfaceException
|
||||
{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -2085081032170129309L;
|
||||
|
||||
public AntServiceNotConnectedException()
|
||||
{
|
||||
this("ANT Interface error, ANT Radio Service not connected.");
|
||||
}
|
||||
|
||||
public AntServiceNotConnectedException(String string)
|
||||
{
|
||||
super(string);
|
||||
}
|
||||
}
|
||||
@@ -1,247 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 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.
|
||||
*/
|
||||
package com.google.android.apps.mymaps;
|
||||
|
||||
import com.google.android.maps.GeoPoint;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* MyMapsFeature contains all of the data associated with a feature in My Maps,
|
||||
* where a feature is a marker, line, or shape. Some of the data is stored in a
|
||||
* {@link MyMapsFeatureMetadata} object so that it can be more efficiently
|
||||
* transmitted to other activities.
|
||||
*/
|
||||
public class MyMapsFeature implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 8439035544430497236L;
|
||||
|
||||
/** A marker feature displays an icon at a single point on the map. */
|
||||
public static final int MARKER = 0;
|
||||
|
||||
/**
|
||||
* A line feature displays a line connecting a set of points on the map.
|
||||
*/
|
||||
public static final int LINE = 1;
|
||||
|
||||
/**
|
||||
* A shape feature displays a border defined by connecting a set of points,
|
||||
* including connecting the last to the first, and displays the area
|
||||
* confined by this border.
|
||||
*/
|
||||
public static final int SHAPE = 2;
|
||||
|
||||
/** The local feature id for this feature, if needed. */
|
||||
private String androidId;
|
||||
|
||||
/**
|
||||
* The latitudes of the points of this feature in order, specified in
|
||||
* millionths of a degree north.
|
||||
*/
|
||||
private final Vector<Integer> latitudeE6 = new Vector<Integer>();
|
||||
|
||||
/**
|
||||
* The longitudes of the points of this feature in order, specified in
|
||||
* millionths of a degree east.
|
||||
*/
|
||||
private final Vector<Integer> longitudeE6 = new Vector<Integer>();
|
||||
|
||||
/** The metadata of this feature in a format efficient for transmission. */
|
||||
private MyMapsFeatureMetadata featureInfo = new MyMapsFeatureMetadata();
|
||||
|
||||
/**
|
||||
* Initializes a valid but empty feature. It will default to a
|
||||
* {@link #MARKER} with a blue placemark with a dot as an icon at the
|
||||
* location (0, 0).
|
||||
*/
|
||||
public MyMapsFeature() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new point to the end of this feature.
|
||||
*
|
||||
* @param point The new point to add
|
||||
*/
|
||||
public synchronized void addPoint(GeoPoint point) {
|
||||
latitudeE6.add(point.getLatitudeE6());
|
||||
longitudeE6.add(point.getLongitudeE6());
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a new local id for this feature based on the current time and
|
||||
* a random number.
|
||||
*/
|
||||
public synchronized void generateAndroidId() {
|
||||
Long time = System.currentTimeMillis();
|
||||
Integer random = (int) (Math.random() * 10000);
|
||||
androidId = time.toString() + "." + random.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current local id for this feature if one is available.
|
||||
*
|
||||
* @return The local id for this feature
|
||||
*/
|
||||
public String getAndroidId() {
|
||||
return androidId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current (html) description of this feature. The description
|
||||
* is stored in the feature metadata.
|
||||
*
|
||||
* @return The description of this feature
|
||||
*/
|
||||
public String getDescription() {
|
||||
return featureInfo.getDescription();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the description of this feature. That description is stored in the
|
||||
* feature metadata.
|
||||
*
|
||||
* @param description The new description of this feature
|
||||
*/
|
||||
public synchronized void setDescription(String description) {
|
||||
featureInfo.setDescription(description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the point at the given index for this feature.
|
||||
*
|
||||
* @param index The index of the point desired
|
||||
* @return A {@link GeoPoint} representing the point or null if that point
|
||||
* doesn't exist
|
||||
*/
|
||||
public GeoPoint getPoint(int index) {
|
||||
if (latitudeE6.size() <= index) {
|
||||
return null;
|
||||
}
|
||||
return new GeoPoint(latitudeE6.get(index), longitudeE6.get(index));
|
||||
}
|
||||
|
||||
/**
|
||||
* Counts the number of points in this feature and return that count.
|
||||
*
|
||||
* @return The number of points in this feature
|
||||
*/
|
||||
public int getPointCount() {
|
||||
return latitudeE6.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the title of this feature. That title is stored in the feature
|
||||
* metadata.
|
||||
*
|
||||
* @return the current title of this feature
|
||||
*/
|
||||
public String getTitle() {
|
||||
return featureInfo.getTitle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the type of this feature. That type is stored in the feature
|
||||
* metadata.
|
||||
*
|
||||
* @return One of {@link #MARKER}, {@link #LINE}, or {@link #SHAPE}
|
||||
* identifying the type of this feature
|
||||
*/
|
||||
public int getType() {
|
||||
return featureInfo.getType();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current color of this feature as an ARGB color integer.
|
||||
* That color is stored in the feature metadata.
|
||||
*
|
||||
* @return The ARGB color of this feature
|
||||
*/
|
||||
public int getColor() {
|
||||
return featureInfo.getColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current line width of this feature. That line width is
|
||||
* stored in the feature metadata.
|
||||
*
|
||||
* @return The line width of this feature
|
||||
*/
|
||||
public int getLineWidth() {
|
||||
return featureInfo.getLineWidth();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current fill color of this feature as an ARGB color
|
||||
* integer. That color is stored in the feature metadata.
|
||||
*
|
||||
* @return The ARGB fill color of this feature
|
||||
*/
|
||||
public int getFillColor() {
|
||||
return featureInfo.getFillColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current icon url of this feature. That icon url is stored
|
||||
* in the feature metadata.
|
||||
*
|
||||
* @return The icon url for this feature
|
||||
*/
|
||||
public String getIconUrl() {
|
||||
return featureInfo.getIconUrl();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the title of this feature. That title is stored in the feature
|
||||
* metadata.
|
||||
*
|
||||
* @param title The new title of this feature
|
||||
*/
|
||||
public synchronized void setTitle(String title) {
|
||||
featureInfo.setTitle(title);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the type of this feature. That type is stored in the feature
|
||||
* metadata.
|
||||
*
|
||||
* @param type The new type of the feature. That type must be one of
|
||||
* {@link #MARKER}, {@link #LINE}, or {@link #SHAPE}
|
||||
*/
|
||||
public synchronized void setType(int type) {
|
||||
featureInfo.setType(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the ARGB color of this feature. That color is stored in the feature
|
||||
* metadata.
|
||||
*
|
||||
* @param color The new ARGB color of this feature
|
||||
*/
|
||||
public synchronized void setColor(int color) {
|
||||
featureInfo.setColor(color);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the icon url of this feature. That icon url is stored in the feature
|
||||
* metadata.
|
||||
*
|
||||
* @param url The new icon url of the feature
|
||||
*/
|
||||
public synchronized void setIconUrl(String url) {
|
||||
featureInfo.setIconUrl(url);
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 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.
|
||||
*/
|
||||
package com.google.android.apps.mymaps;
|
||||
|
||||
/**
|
||||
* Metadata about a maps feature.
|
||||
*/
|
||||
public class MyMapsFeatureMetadata {
|
||||
|
||||
private static final String BLUE_DOT_URL =
|
||||
"http://maps.google.com/mapfiles/ms/micons/blue-dot.png";
|
||||
private static final int DEFAULT_COLOR = 0x800000FF;
|
||||
private static final int DEFAULT_FILL_COLOR = 0xC00000FF;
|
||||
|
||||
private String title;
|
||||
private String description;
|
||||
private int type;
|
||||
private int color;
|
||||
private int lineWidth;
|
||||
private int fillColor;
|
||||
private String iconUrl;
|
||||
|
||||
public MyMapsFeatureMetadata() {
|
||||
title = "";
|
||||
description = "";
|
||||
type = MyMapsFeature.MARKER;
|
||||
color = DEFAULT_COLOR;
|
||||
lineWidth = 5;
|
||||
fillColor = DEFAULT_FILL_COLOR;
|
||||
iconUrl = BLUE_DOT_URL;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public void setColor(int color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public int getLineWidth() {
|
||||
return lineWidth;
|
||||
}
|
||||
|
||||
public void setLineWidth(int width) {
|
||||
lineWidth = width;
|
||||
}
|
||||
|
||||
public int getFillColor() {
|
||||
return fillColor;
|
||||
}
|
||||
|
||||
public void setFillColor(int color) {
|
||||
fillColor = color;
|
||||
}
|
||||
|
||||
public String getIconUrl() {
|
||||
return iconUrl;
|
||||
}
|
||||
|
||||
public void setIconUrl(String url) {
|
||||
iconUrl = new String(url);
|
||||
}
|
||||
}
|
||||
@@ -1,195 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 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.
|
||||
*/
|
||||
package com.google.android.apps.mymaps;
|
||||
|
||||
import com.google.wireless.gdata.data.Entry;
|
||||
import com.google.wireless.gdata.data.StringUtils;
|
||||
import com.google.wireless.gdata.maps.MapFeatureEntry;
|
||||
import com.google.wireless.gdata.maps.MapsClient;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.util.Log;
|
||||
|
||||
import org.xmlpull.v1.XmlPullParserException;
|
||||
import org.xmlpull.v1.XmlPullParserFactory;
|
||||
import org.xmlpull.v1.XmlSerializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
|
||||
/**
|
||||
* Converter from GData objects to MyMaps objects.
|
||||
*/
|
||||
public class MyMapsGDataConverter {
|
||||
|
||||
private final XmlSerializer xmlSerializer;
|
||||
|
||||
public MyMapsGDataConverter() throws XmlPullParserException {
|
||||
xmlSerializer = XmlPullParserFactory.newInstance().newSerializer();
|
||||
}
|
||||
|
||||
public static MyMapsMapMetadata getMapMetadataForEntry(
|
||||
MapFeatureEntry entry) {
|
||||
MyMapsMapMetadata metadata = new MyMapsMapMetadata();
|
||||
if ("public".equals(entry.getPrivacy())) {
|
||||
metadata.setSearchable(true);
|
||||
} else {
|
||||
metadata.setSearchable(false);
|
||||
}
|
||||
metadata.setTitle(entry.getTitle());
|
||||
|
||||
String desc = entry.getContent();
|
||||
if (desc.length() > 12) {
|
||||
metadata.setDescription(desc.substring(9, desc.length() - 3));
|
||||
}
|
||||
metadata.setGDataEditUri(entry.getEditUri());
|
||||
|
||||
return metadata;
|
||||
}
|
||||
|
||||
public static String getMapidForEntry(Entry entry) {
|
||||
return MapsClient.getMapIdFromMapEntryId(entry.getId());
|
||||
}
|
||||
|
||||
public static Entry getMapEntryForMetadata(MyMapsMapMetadata metadata) {
|
||||
MapFeatureEntry entry = new MapFeatureEntry();
|
||||
entry.setEditUri(metadata.getGDataEditUri());
|
||||
entry.setTitle(metadata.getTitle());
|
||||
entry.setContent(metadata.getDescription());
|
||||
entry.setPrivacy(metadata.getSearchable() ? "public" : "unlisted");
|
||||
entry.setAuthor("android");
|
||||
entry.setEmail("nobody@google.com");
|
||||
return entry;
|
||||
}
|
||||
|
||||
public MapFeatureEntry getEntryForFeature(MyMapsFeature feature) {
|
||||
MapFeatureEntry entry = new MapFeatureEntry();
|
||||
entry.setTitle(feature.getTitle());
|
||||
entry.setAuthor("android");
|
||||
entry.setEmail("nobody@google.com");
|
||||
entry.setCategoryScheme("http://schemas.google.com/g/2005#kind");
|
||||
entry.setCategory("http://schemas.google.com/g/2008#mapfeature");
|
||||
entry.setEditUri("");
|
||||
if (!StringUtils.isEmpty(feature.getAndroidId())) {
|
||||
entry.setAttribute("_androidId", feature.getAndroidId());
|
||||
}
|
||||
try {
|
||||
StringWriter writer = new StringWriter();
|
||||
xmlSerializer.setOutput(writer);
|
||||
xmlSerializer.startTag(null, "Placemark");
|
||||
xmlSerializer.attribute(null, "xmlns", "http://earth.google.com/kml/2.2");
|
||||
xmlSerializer.startTag(null, "Style");
|
||||
if (feature.getType() == MyMapsFeature.MARKER) {
|
||||
xmlSerializer.startTag(null, "IconStyle");
|
||||
xmlSerializer.startTag(null, "Icon");
|
||||
xmlSerializer.startTag(null, "href");
|
||||
xmlSerializer.text(feature.getIconUrl());
|
||||
xmlSerializer.endTag(null, "href");
|
||||
xmlSerializer.endTag(null, "Icon");
|
||||
xmlSerializer.endTag(null, "IconStyle");
|
||||
} else {
|
||||
xmlSerializer.startTag(null, "LineStyle");
|
||||
xmlSerializer.startTag(null, "color");
|
||||
int color = feature.getColor();
|
||||
// Reverse the color because KML is ABGR and Android is ARGB
|
||||
xmlSerializer.text(Integer.toHexString(
|
||||
Color.argb(Color.alpha(color), Color.blue(color),
|
||||
Color.green(color), Color.red(color))));
|
||||
xmlSerializer.endTag(null, "color");
|
||||
xmlSerializer.startTag(null, "width");
|
||||
xmlSerializer.text(Integer.toString(feature.getLineWidth()));
|
||||
xmlSerializer.endTag(null, "width");
|
||||
xmlSerializer.endTag(null, "LineStyle");
|
||||
|
||||
if (feature.getType() == MyMapsFeature.SHAPE) {
|
||||
xmlSerializer.startTag(null, "PolyStyle");
|
||||
xmlSerializer.startTag(null, "color");
|
||||
int fcolor = feature.getFillColor();
|
||||
// Reverse the color because KML is ABGR and Android is ARGB
|
||||
xmlSerializer.text(Integer.toHexString(Color.argb(Color.alpha(fcolor),
|
||||
Color.blue(fcolor), Color.green(fcolor), Color.red(fcolor))));
|
||||
xmlSerializer.endTag(null, "color");
|
||||
xmlSerializer.startTag(null, "fill");
|
||||
xmlSerializer.text("1");
|
||||
xmlSerializer.endTag(null, "fill");
|
||||
xmlSerializer.startTag(null, "outline");
|
||||
xmlSerializer.text("1");
|
||||
xmlSerializer.endTag(null, "outline");
|
||||
xmlSerializer.endTag(null, "PolyStyle");
|
||||
}
|
||||
}
|
||||
xmlSerializer.endTag(null, "Style");
|
||||
xmlSerializer.startTag(null, "name");
|
||||
xmlSerializer.text(feature.getTitle());
|
||||
xmlSerializer.endTag(null, "name");
|
||||
xmlSerializer.startTag(null, "description");
|
||||
xmlSerializer.cdsect(feature.getDescription());
|
||||
xmlSerializer.endTag(null, "description");
|
||||
StringBuilder pointBuilder = new StringBuilder();
|
||||
for (int i = 0; i < feature.getPointCount(); ++i) {
|
||||
if (i > 0) {
|
||||
pointBuilder.append('\n');
|
||||
}
|
||||
pointBuilder.append(feature.getPoint(i).getLongitudeE6() / 1e6);
|
||||
pointBuilder.append(',');
|
||||
pointBuilder.append(feature.getPoint(i).getLatitudeE6() / 1e6);
|
||||
pointBuilder.append(",0.000000");
|
||||
}
|
||||
String pointString = pointBuilder.toString();
|
||||
if (feature.getType() == MyMapsFeature.MARKER) {
|
||||
xmlSerializer.startTag(null, "Point");
|
||||
xmlSerializer.startTag(null, "coordinates");
|
||||
xmlSerializer.text(pointString);
|
||||
xmlSerializer.endTag(null, "coordinates");
|
||||
xmlSerializer.endTag(null, "Point");
|
||||
} else if (feature.getType() == MyMapsFeature.LINE) {
|
||||
xmlSerializer.startTag(null, "LineString");
|
||||
xmlSerializer.startTag(null, "tessellate");
|
||||
xmlSerializer.text("1");
|
||||
xmlSerializer.endTag(null, "tessellate");
|
||||
xmlSerializer.startTag(null, "coordinates");
|
||||
xmlSerializer.text(pointString);
|
||||
xmlSerializer.endTag(null, "coordinates");
|
||||
xmlSerializer.endTag(null, "LineString");
|
||||
} else {
|
||||
xmlSerializer.startTag(null, "Polygon");
|
||||
xmlSerializer.startTag(null, "outerBoundaryIs");
|
||||
xmlSerializer.startTag(null, "LinearRing");
|
||||
xmlSerializer.startTag(null, "tessellate");
|
||||
xmlSerializer.text("1");
|
||||
xmlSerializer.endTag(null, "tessellate");
|
||||
xmlSerializer.startTag(null, "coordinates");
|
||||
xmlSerializer.text(pointString + "\n"
|
||||
+ Double.toString(feature.getPoint(0).getLongitudeE6() / 1e6)
|
||||
+ ","
|
||||
+ Double.toString(feature.getPoint(0).getLatitudeE6() / 1e6)
|
||||
+ ",0.000000");
|
||||
xmlSerializer.endTag(null, "coordinates");
|
||||
xmlSerializer.endTag(null, "LinearRing");
|
||||
xmlSerializer.endTag(null, "outerBoundaryIs");
|
||||
xmlSerializer.endTag(null, "Polygon");
|
||||
}
|
||||
xmlSerializer.endTag(null, "Placemark");
|
||||
xmlSerializer.flush();
|
||||
entry.setContent(writer.toString());
|
||||
Log.d("My Google Maps", "Generated kml:\n" + entry.getContent());
|
||||
Log.d("My Google Maps", "Edit URI: " + entry.getEditUri());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
@@ -1,190 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
package com.google.android.apps.mymaps;
|
||||
|
||||
import com.google.android.apps.mytracks.MyTracksConstants;
|
||||
import com.google.android.apps.mytracks.io.AuthManager;
|
||||
import com.google.android.apps.mytracks.io.gdata.GDataClientFactory;
|
||||
import com.google.android.common.gdata.AndroidXmlParserFactory;
|
||||
import com.google.wireless.gdata.client.GDataClient;
|
||||
import com.google.wireless.gdata.client.HttpException;
|
||||
import com.google.wireless.gdata.maps.MapsClient;
|
||||
import com.google.wireless.gdata.maps.xml.XmlMapsGDataParserFactory;
|
||||
import com.google.wireless.gdata.parser.xml.SimplePullParser.ParseException;
|
||||
import com.google.wireless.gdata2.ConflictDetectedException;
|
||||
import com.google.wireless.gdata2.client.AuthenticationException;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* MyMapsGDataWrapper provides a wrapper around GData operations that maintains
|
||||
* the GData client, and provides a method to run gdata queries with proper
|
||||
* error handling. After a query is run, the wrapper can be queried about the
|
||||
* error that occurred.
|
||||
*/
|
||||
public class MyMapsGDataWrapper {
|
||||
/**
|
||||
* A QueryFunction is passed in when executing a query. The query function
|
||||
* of the class is called with the GData client as a parameter. The
|
||||
* function should execute whatever operations it desires on the client
|
||||
* without concern for whether the client will throw an error.
|
||||
*/
|
||||
public interface QueryFunction {
|
||||
public abstract void query(MapsClient client)
|
||||
throws AuthenticationException, IOException, ParseException,
|
||||
ConflictDetectedException, Exception;
|
||||
}
|
||||
|
||||
// The types of error that may be encountered
|
||||
/** No error occurred. */
|
||||
public static final int ERROR_NO_ERROR = 0;
|
||||
/** There was an authentication error, the auth token may be invalid. */
|
||||
public static final int ERROR_AUTH = 1;
|
||||
/** There was an internal error on the server side. */
|
||||
public static final int ERROR_INTERNAL = 2;
|
||||
/** There was an error connecting to the server. */
|
||||
public static final int ERROR_CONNECTION = 3;
|
||||
/** The item queried did not exit. */
|
||||
public static final int ERROR_NOT_FOUND = 4;
|
||||
/** There was an error parsing or serializing locally. */
|
||||
public static final int ERROR_LOCAL = 5;
|
||||
/** There was a conflict, update the entry and try again. */
|
||||
public static final int ERROR_CONFLICT = 6;
|
||||
/**
|
||||
* A query was run after cleaning up the wrapper, so the client was invalid.
|
||||
*/
|
||||
public static final int ERROR_CLEANED_UP = 7;
|
||||
/** An unknown error occurred. */
|
||||
public static final int ERROR_UNKNOWN = 100;
|
||||
|
||||
private final GDataClient androidGdataClient;
|
||||
private final MapsClient client;
|
||||
|
||||
private String errorMessage;
|
||||
private int errorType;
|
||||
private AuthManager auth;
|
||||
private boolean retryOnAuthFailure;
|
||||
private int retriesPending;
|
||||
private boolean cleanupCalled;
|
||||
|
||||
public MyMapsGDataWrapper(Context context) {
|
||||
androidGdataClient = GDataClientFactory.getGDataClient(context);
|
||||
client =
|
||||
new MapsClient(androidGdataClient, new XmlMapsGDataParserFactory(
|
||||
new AndroidXmlParserFactory()));
|
||||
errorType = ERROR_NO_ERROR;
|
||||
errorMessage = null;
|
||||
auth = null;
|
||||
retryOnAuthFailure = false;
|
||||
retriesPending = 0;
|
||||
cleanupCalled = false;
|
||||
}
|
||||
|
||||
public boolean runQuery(final QueryFunction query) {
|
||||
if (client == null) {
|
||||
errorType = ERROR_CLEANED_UP;
|
||||
errorMessage = "GData Wrapper has already been cleaned up!";
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
query.query(client);
|
||||
errorType = ERROR_NO_ERROR;
|
||||
errorMessage = null;
|
||||
return true;
|
||||
} catch (AuthenticationException e) {
|
||||
Log.e(MyTracksConstants.TAG, "Exception", e);
|
||||
errorType = ERROR_AUTH;
|
||||
errorMessage = e.getMessage();
|
||||
} catch (HttpException e) {
|
||||
Log.e(MyTracksConstants.TAG, "HttpException", e);
|
||||
errorMessage = e.getMessage();
|
||||
if (errorMessage != null && errorMessage.contains("401")) {
|
||||
errorType = ERROR_AUTH;
|
||||
} else {
|
||||
errorType = ERROR_CONNECTION;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Log.e(MyTracksConstants.TAG, "Exception", e);
|
||||
errorMessage = e.getMessage();
|
||||
if (errorMessage != null && errorMessage.contains("503")) {
|
||||
errorType = ERROR_INTERNAL;
|
||||
} else {
|
||||
errorType = ERROR_CONNECTION;
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
Log.e(MyTracksConstants.TAG, "Exception", e);
|
||||
errorType = ERROR_LOCAL;
|
||||
errorMessage = e.getMessage();
|
||||
} catch (ConflictDetectedException e) {
|
||||
Log.e(MyTracksConstants.TAG, "Exception", e);
|
||||
errorType = ERROR_CONFLICT;
|
||||
errorMessage = e.getMessage();
|
||||
} catch (Exception e) {
|
||||
Log.e(MyTracksConstants.TAG, "Exception", e);
|
||||
errorType = ERROR_UNKNOWN;
|
||||
errorMessage = e.getMessage();
|
||||
e.printStackTrace();
|
||||
}
|
||||
Log.d(MyTracksConstants.TAG, "GData error encountered: " + errorMessage);
|
||||
if (errorType == ERROR_AUTH && auth != null) {
|
||||
Runnable whenFinished = null;
|
||||
if (retryOnAuthFailure) {
|
||||
retriesPending++;
|
||||
whenFinished = new Runnable() {
|
||||
public void run() {
|
||||
retriesPending--;
|
||||
retryOnAuthFailure = false;
|
||||
runQuery(query);
|
||||
if (cleanupCalled && retriesPending == 0) {
|
||||
cleanUp();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
auth.invalidateAndRefresh(whenFinished);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getErrorType() {
|
||||
return errorType;
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
// cleanUp must be called when done using this wrapper to close the client.
|
||||
// Note that the cleanup will be delayed if auth failure retries were
|
||||
// requested and there is a pending retry.
|
||||
public void cleanUp() {
|
||||
if (retriesPending == 0 && !cleanupCalled) {
|
||||
androidGdataClient.close();
|
||||
}
|
||||
cleanupCalled = true;
|
||||
}
|
||||
|
||||
public void setAuthManager(AuthManager newAuth) {
|
||||
this.auth = newAuth;
|
||||
}
|
||||
|
||||
public void setRetryOnAuthFailure(boolean retry) {
|
||||
retryOnAuthFailure = retry;
|
||||
}
|
||||
}
|
||||
@@ -1,350 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 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.
|
||||
*/
|
||||
package com.google.android.apps.mymaps;
|
||||
|
||||
import com.google.android.accounts.Account;
|
||||
import com.google.android.apps.mymaps.MyMapsGDataWrapper.QueryFunction;
|
||||
import com.google.android.apps.mytracks.AccountChooser;
|
||||
import com.google.android.apps.mytracks.MyTracks;
|
||||
import com.google.android.apps.mytracks.io.AuthManager;
|
||||
import com.google.android.apps.mytracks.io.AuthManagerFactory;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
import com.google.wireless.gdata.maps.MapFeatureEntry;
|
||||
import com.google.wireless.gdata.maps.MapsClient;
|
||||
import com.google.wireless.gdata.parser.GDataParser;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.database.DataSetObserver;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnCreateContextMenuListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* Activity which displays the list of "my maps" maps.
|
||||
*/
|
||||
public class MyMapsList extends Activity implements ListAdapter {
|
||||
|
||||
private static final int MENU_OPEN = 0;
|
||||
private static final int MENU_SHARE = 2;
|
||||
private static final int GET_LOGIN = 1;
|
||||
|
||||
private LookupThread listLookup;
|
||||
private Vector<String[]> mapsList;
|
||||
private Vector<Boolean> publicList;
|
||||
private Set<DataSetObserver> observerSet;
|
||||
private Handler loadHandler;
|
||||
private int contextPosition;
|
||||
private AuthManager auth;
|
||||
|
||||
/**
|
||||
* Thread which looks up the maps list.
|
||||
*/
|
||||
private class LookupThread extends Thread {
|
||||
private boolean finished = false;
|
||||
private boolean success = true;
|
||||
|
||||
private GDataParser listParser;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
finished = false;
|
||||
listParser = null;
|
||||
MyMapsGDataWrapper wrapper = new MyMapsGDataWrapper(MyMapsList.this);
|
||||
wrapper.setAuthManager(auth);
|
||||
wrapper.setRetryOnAuthFailure(true);
|
||||
|
||||
success = wrapper.runQuery(new QueryFunction() {
|
||||
public void query(MapsClient client) throws IOException, Exception {
|
||||
listParser = client.getParserForFeed(
|
||||
MapFeatureEntry.class, MapsClient.getMapsFeed(),
|
||||
auth.getAuthToken());
|
||||
listParser.init();
|
||||
while (listParser.hasMoreData()) {
|
||||
MapFeatureEntry entry =
|
||||
(MapFeatureEntry) listParser.readNextEntry(null);
|
||||
MyMapsMapMetadata metadata =
|
||||
MyMapsGDataConverter.getMapMetadataForEntry(entry);
|
||||
String mapid = MyMapsGDataConverter.getMapidForEntry(entry);
|
||||
synchronized (mapsList) {
|
||||
// Search through the maps list to see if it has the mapid and
|
||||
// remove it if so, so that we can replace it with updated info
|
||||
for (int i = 0; i < mapsList.size(); ++i) {
|
||||
if (mapid.equals(mapsList.get(i)[0])) {
|
||||
mapsList.remove(i);
|
||||
publicList.remove(i);
|
||||
--i;
|
||||
}
|
||||
}
|
||||
mapsList.add(new String[] {
|
||||
mapid, metadata.getTitle(), metadata.getDescription() });
|
||||
publicList.add(metadata.getSearchable());
|
||||
}
|
||||
}
|
||||
listParser.close();
|
||||
listParser = null;
|
||||
success = true;
|
||||
finished = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (listParser != null) {
|
||||
listParser.close();
|
||||
}
|
||||
wrapper.cleanUp();
|
||||
if (success || wrapper.getErrorType() != MyMapsGDataWrapper.ERROR_AUTH) {
|
||||
finished = true;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isFinished() {
|
||||
return finished;
|
||||
}
|
||||
|
||||
public boolean succeeded() {
|
||||
return success;
|
||||
}
|
||||
}
|
||||
|
||||
private final Runnable checkLoaded = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (listLookup.isFinished()) {
|
||||
findViewById(R.id.loading).setVisibility(View.GONE);
|
||||
if (!listLookup.succeeded()) {
|
||||
findViewById(R.id.failed).setVisibility(View.VISIBLE);
|
||||
}
|
||||
TextView emptyView = (TextView) findViewById(R.id.mapslist_empty);
|
||||
ListView list = (ListView) findViewById(R.id.maplist);
|
||||
list.setEmptyView(emptyView);
|
||||
} else {
|
||||
loadHandler.postDelayed(checkLoaded, 500);
|
||||
}
|
||||
Iterator<DataSetObserver> iter = observerSet.iterator();
|
||||
while (iter.hasNext()) {
|
||||
iter.next().onChanged();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final OnItemClickListener clickListener = new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View v, int position,
|
||||
long id) {
|
||||
Intent result = new Intent();
|
||||
result.putExtra("mapid", (String) getItem(position));
|
||||
MyMapsList.this.setResult(RESULT_OK, result);
|
||||
finish();
|
||||
}
|
||||
};
|
||||
|
||||
private final OnCreateContextMenuListener contextMenuListener =
|
||||
new OnCreateContextMenuListener() {
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v,
|
||||
ContextMenuInfo menuInfo) {
|
||||
AdapterView.AdapterContextMenuInfo info =
|
||||
(AdapterView.AdapterContextMenuInfo) menuInfo;
|
||||
contextPosition = info.position;
|
||||
menu.add(0, MENU_OPEN, 0, R.string.open_map);
|
||||
menu.add(0, MENU_SHARE, 0, R.string.share_map);
|
||||
}
|
||||
};
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
|
||||
auth = AuthManagerFactory.getAuthManager(this, GET_LOGIN, null, true,
|
||||
MapsClient.SERVICE);
|
||||
|
||||
setContentView(R.layout.list);
|
||||
|
||||
ListView list = (ListView) findViewById(R.id.maplist);
|
||||
list.setOnItemClickListener(clickListener);
|
||||
list.setOnCreateContextMenuListener(contextMenuListener);
|
||||
|
||||
mapsList = new Vector<String[]>();
|
||||
publicList = new Vector<Boolean>();
|
||||
|
||||
listLookup = new LookupThread();
|
||||
// TODO fix this for non-froyo devices.
|
||||
if (AuthManagerFactory.useModernAuthManager()) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MyTracks.getInstance().getAccountChooser().chooseAccount(
|
||||
MyMapsList.this,
|
||||
new AccountChooser.AccountHandler() {
|
||||
@Override
|
||||
public void handleAccountSelected(Account account) {
|
||||
if (account != null) {
|
||||
// The user did not quit and there was a valid google
|
||||
// account.
|
||||
doLogin(account);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
doLogin(null);
|
||||
}
|
||||
|
||||
observerSet = new HashSet<DataSetObserver>();
|
||||
|
||||
list.setAdapter(this);
|
||||
|
||||
loadHandler = new Handler();
|
||||
loadHandler.postDelayed(checkLoaded, 500);
|
||||
}
|
||||
|
||||
private void doLogin(final Account account) {
|
||||
auth.doLogin(new Runnable() {
|
||||
public void run() {
|
||||
listLookup.start();
|
||||
}
|
||||
}, account);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode,
|
||||
Intent data) {
|
||||
if (requestCode == GET_LOGIN) {
|
||||
auth.authResult(resultCode, data);
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case MENU_OPEN:
|
||||
clickListener.onItemClick(null, null, contextPosition, 0);
|
||||
return true;
|
||||
case MENU_SHARE:
|
||||
Intent shareIntent = new Intent(Intent.ACTION_SEND);
|
||||
shareIntent.setType("text/plain");
|
||||
shareIntent.putExtra(Intent.EXTRA_SUBJECT,
|
||||
getText(R.string.share_map_subject));
|
||||
shareIntent.putExtra(Intent.EXTRA_TEXT, String.format(
|
||||
getText(R.string.share_map_body_format).toString(),
|
||||
mapsList.get(contextPosition)[1],
|
||||
MyMapsConstants.MAPSHOP_BASE_URL + "?msa=0&msid="
|
||||
+ mapsList.get(contextPosition)[0]));
|
||||
startActivity(Intent.createChooser(shareIntent,
|
||||
getText(R.string.share_map).toString()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areAllItemsEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled(int position) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mapsList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int position) {
|
||||
return mapsList.get(position)[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
if (convertView == null) {
|
||||
convertView =
|
||||
getLayoutInflater().inflate(R.layout.listitem, parent, false);
|
||||
}
|
||||
|
||||
String[] map = mapsList.get(position);
|
||||
((TextView) convertView.findViewById(R.id.maplistitem)).setText(map[1]);
|
||||
((TextView) convertView.findViewById(R.id.maplistdesc)).setText(map[2]);
|
||||
TextView publicUnlisted =
|
||||
(TextView) convertView.findViewById(R.id.maplistpublic);
|
||||
if (publicList.get(position)) {
|
||||
publicUnlisted.setTextColor(Color.RED);
|
||||
publicUnlisted.setText(R.string.public_map);
|
||||
} else {
|
||||
publicUnlisted.setTextColor(Color.GREEN);
|
||||
publicUnlisted.setText(R.string.unlisted_map);
|
||||
}
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewTypeCount() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasStableIds() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return mapsList.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerDataSetObserver(DataSetObserver observer) {
|
||||
observerSet.add(observer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterDataSetObserver(DataSetObserver observer) {
|
||||
observerSet.remove(observer);
|
||||
}
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 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.
|
||||
*/
|
||||
package com.google.android.apps.mymaps;
|
||||
|
||||
/**
|
||||
* Metadata about a "my maps" map.
|
||||
*/
|
||||
public class MyMapsMapMetadata {
|
||||
|
||||
private String title;
|
||||
private String description;
|
||||
private String gdataEditUri;
|
||||
private boolean searchable;
|
||||
|
||||
public MyMapsMapMetadata() {
|
||||
title = "";
|
||||
description = "";
|
||||
gdataEditUri = "";
|
||||
searchable = false;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = new String(title);
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = new String(description);
|
||||
}
|
||||
|
||||
public boolean getSearchable() {
|
||||
return searchable;
|
||||
}
|
||||
|
||||
public void setSearchable(boolean searchable) {
|
||||
this.searchable = searchable;
|
||||
}
|
||||
|
||||
public String getGDataEditUri() {
|
||||
return gdataEditUri;
|
||||
}
|
||||
|
||||
public void setGDataEditUri(String editUri) {
|
||||
this.gdataEditUri = new String(editUri);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.Preference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
/**
|
||||
* A preference for an ANT device pairing.
|
||||
* Currently this shows the ID and lets the user clear that ID for future pairing.
|
||||
* TODO: Support pairing from this preference.
|
||||
*
|
||||
* @author Sandor Dornbush
|
||||
*/
|
||||
public class AntPreference extends Preference {
|
||||
|
||||
public AntPreference(Context context) {
|
||||
super(context);
|
||||
init();
|
||||
}
|
||||
|
||||
public AntPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
int sensorId = getPersistedInt(0);
|
||||
if (sensorId == 0) {
|
||||
setSummary(R.string.settings_ant_not_paired);
|
||||
} else {
|
||||
setSummary(String.format(getContext().getString(R.string.settings_ant_paired), sensorId));
|
||||
}
|
||||
|
||||
// Add actions to allow repairing.
|
||||
setOnPreferenceClickListener(
|
||||
new OnPreferenceClickListener() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
AntPreference.this.persistInt(0);
|
||||
setSummary(R.string.settings_ant_not_paired);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -16,11 +16,14 @@
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.apps.mytracks.ChartView.Mode;
|
||||
import com.google.android.apps.mytracks.content.MyTracksLocation;
|
||||
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
|
||||
import com.google.android.apps.mytracks.content.Sensor;
|
||||
import com.google.android.apps.mytracks.content.Track;
|
||||
import com.google.android.apps.mytracks.content.TrackPointsColumns;
|
||||
import com.google.android.apps.mytracks.content.Waypoint;
|
||||
import com.google.android.apps.mytracks.content.WaypointsColumns;
|
||||
import com.google.android.apps.mytracks.content.Sensor.SensorDataSet;
|
||||
import com.google.android.apps.mytracks.services.StatusAnnouncerFactory;
|
||||
import com.google.android.apps.mytracks.stats.DoubleBuffer;
|
||||
import com.google.android.apps.mytracks.stats.TripStatisticsBuilder;
|
||||
@@ -57,6 +60,7 @@ import java.util.ArrayList;
|
||||
public class ChartActivity extends Activity implements
|
||||
SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
private final static int BUFFER_SIZE = 1024;
|
||||
private double profileLength = 0;
|
||||
|
||||
private boolean metricUnits = true;
|
||||
@@ -98,7 +102,7 @@ public class ChartActivity extends Activity implements
|
||||
/*
|
||||
* UI elements:
|
||||
*/
|
||||
private ChartView cv;
|
||||
private ChartView chartView;
|
||||
private MenuItem chartSettingsMenuItem;
|
||||
private LinearLayout busyPane;
|
||||
private ZoomControls zoomControls;
|
||||
@@ -115,10 +119,10 @@ public class ChartActivity extends Activity implements
|
||||
@Override
|
||||
public void run() {
|
||||
busyPane.setVisibility(View.GONE);
|
||||
zoomControls.setIsZoomInEnabled(cv.canZoomIn());
|
||||
zoomControls.setIsZoomOutEnabled(cv.canZoomOut());
|
||||
cv.setShowPointer(selectedTrackIsRecording());
|
||||
cv.invalidate();
|
||||
zoomControls.setIsZoomInEnabled(chartView.canZoomIn());
|
||||
zoomControls.setIsZoomOutEnabled(chartView.canZoomOut());
|
||||
chartView.setShowPointer(selectedTrackIsRecording());
|
||||
chartView.invalidate();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -155,54 +159,12 @@ public class ChartActivity extends Activity implements
|
||||
private Handler updateTrackHandler;
|
||||
|
||||
/**
|
||||
* A runnable that update the profile from the provider.
|
||||
* A runnable that updates the profile from the provider.
|
||||
*/
|
||||
private final Runnable updateTrackRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.d(MyTracksConstants.TAG, "MyTracks: Updating chart.");
|
||||
Track track = providerUtils.getTrack(recordingTrackId);
|
||||
if (track == null) {
|
||||
Log.w(MyTracksConstants.TAG, "MyTracks: track not found");
|
||||
return;
|
||||
}
|
||||
Cursor cursor = null;
|
||||
try {
|
||||
cursor = providerUtils.getLocationsCursor(recordingTrackId,
|
||||
lastSeenLocationId + 1,
|
||||
MyTracksConstants.MAX_DISPLAYED_TRACK_POINTS - cv.getData().size(),
|
||||
true);
|
||||
if (cursor != null) {
|
||||
if (cursor.moveToLast()) {
|
||||
final int idColumnIdx =
|
||||
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
|
||||
ArrayList<double[]> data = new ArrayList<double[]>();
|
||||
// Need two locations so we can keep track of the last location.
|
||||
Location location = new Location("");
|
||||
do {
|
||||
lastSeenLocationId = cursor.getLong(idColumnIdx);
|
||||
providerUtils.fillLocation(cursor, location);
|
||||
if (MyTracksUtils.isValidLocation(location)) {
|
||||
double[] point = new double[3];
|
||||
location = getDataPoint(location, track, point);
|
||||
data.add(point);
|
||||
}
|
||||
} while (cursor.moveToPrevious());
|
||||
cv.addDataPoints(data);
|
||||
}
|
||||
}
|
||||
} catch (RuntimeException e) {
|
||||
Log.w(MyTracksConstants.TAG, "Caught an unexpected exception.", e);
|
||||
} finally {
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
}
|
||||
uiHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
cv.invalidate();
|
||||
}
|
||||
});
|
||||
}
|
||||
readNewTrackPoints();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -219,13 +181,13 @@ public class ChartActivity extends Activity implements
|
||||
metricUnits =
|
||||
sharedPreferences.getBoolean(getString(R.string.metric_units_key),
|
||||
true);
|
||||
cv.setMetricUnits(metricUnits);
|
||||
chartView.setMetricUnits(metricUnits);
|
||||
readProfileAsync();
|
||||
} else if (key.equals(getString(R.string.report_speed_key))) {
|
||||
reportSpeed =
|
||||
sharedPreferences.getBoolean(getString(R.string.report_speed_key),
|
||||
true);
|
||||
cv.setReportSpeed(reportSpeed, this);
|
||||
chartView.setReportSpeed(reportSpeed, this);
|
||||
readProfileAsync();
|
||||
} else if (key.equals(getString(R.string.recording_track_key))) {
|
||||
recordingTrackId =
|
||||
@@ -249,13 +211,13 @@ public class ChartActivity extends Activity implements
|
||||
setVolumeControlStream(volumeStream);
|
||||
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
setContentView(R.layout.mytracks_elevation);
|
||||
setContentView(R.layout.mytracks_charts);
|
||||
ViewGroup layout = (ViewGroup) findViewById(R.id.elevation_chart);
|
||||
cv = new ChartView(this);
|
||||
cv.setMode(this.mode);
|
||||
chartView = new ChartView(this);
|
||||
chartView.setMode(this.mode);
|
||||
LayoutParams params =
|
||||
new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
|
||||
layout.addView(cv, params);
|
||||
layout.addView(chartView, params);
|
||||
|
||||
SharedPreferences preferences =
|
||||
getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0);
|
||||
@@ -266,10 +228,10 @@ public class ChartActivity extends Activity implements
|
||||
preferences.getLong(getString(R.string.recording_track_key), -1);
|
||||
metricUnits = preferences.getBoolean(getString(R.string.metric_units_key),
|
||||
true);
|
||||
cv.setMetricUnits(metricUnits);
|
||||
chartView.setMetricUnits(metricUnits);
|
||||
reportSpeed = preferences.getBoolean(getString(R.string.report_speed_key),
|
||||
true);
|
||||
cv.setReportSpeed(reportSpeed, this);
|
||||
chartView.setReportSpeed(reportSpeed, this);
|
||||
preferences.registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@@ -329,7 +291,7 @@ public class ChartActivity extends Activity implements
|
||||
ChartActivity.this.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
cv.invalidate();
|
||||
chartView.invalidate();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -381,21 +343,21 @@ public class ChartActivity extends Activity implements
|
||||
}
|
||||
|
||||
private void zoomIn() {
|
||||
cv.zoomIn();
|
||||
zoomControls.setIsZoomInEnabled(cv.canZoomIn());
|
||||
zoomControls.setIsZoomOutEnabled(cv.canZoomOut());
|
||||
chartView.zoomIn();
|
||||
zoomControls.setIsZoomInEnabled(chartView.canZoomIn());
|
||||
zoomControls.setIsZoomOutEnabled(chartView.canZoomOut());
|
||||
}
|
||||
|
||||
private void zoomOut() {
|
||||
cv.zoomOut();
|
||||
zoomControls.setIsZoomInEnabled(cv.canZoomIn());
|
||||
zoomControls.setIsZoomOutEnabled(cv.canZoomOut());
|
||||
chartView.zoomOut();
|
||||
zoomControls.setIsZoomInEnabled(chartView.canZoomIn());
|
||||
zoomControls.setIsZoomOutEnabled(chartView.canZoomOut());
|
||||
}
|
||||
|
||||
public void setMode(Mode newMode) {
|
||||
if (this.mode != newMode) {
|
||||
this.mode = newMode;
|
||||
cv.setMode(this.mode);
|
||||
chartView.setMode(this.mode);
|
||||
readProfileAsync();
|
||||
}
|
||||
}
|
||||
@@ -405,12 +367,12 @@ public class ChartActivity extends Activity implements
|
||||
}
|
||||
|
||||
public void setSeriesEnabled(int index, boolean enabled) {
|
||||
cv.getChartValueSeries(index).setEnabled(enabled);
|
||||
chartView.getChartValueSeries(index).setEnabled(enabled);
|
||||
runOnUiThread(updateChart);
|
||||
}
|
||||
|
||||
public boolean isSeriesEnabled(int index) {
|
||||
return cv.getChartValueSeries(index).isEnabled();
|
||||
return chartView.getChartValueSeries(index).isEnabled();
|
||||
}
|
||||
|
||||
private void readWaypoints() {
|
||||
@@ -418,7 +380,7 @@ public class ChartActivity extends Activity implements
|
||||
return;
|
||||
}
|
||||
Cursor cursor = null;
|
||||
cv.clearWaypoints();
|
||||
chartView.clearWaypoints();
|
||||
try {
|
||||
// We will silently drop extra waypoints to make the app responsive.
|
||||
cursor =
|
||||
@@ -428,7 +390,7 @@ public class ChartActivity extends Activity implements
|
||||
if (cursor.moveToFirst()) {
|
||||
do {
|
||||
Waypoint wpt = providerUtils.createWaypoint(cursor);
|
||||
cv.addWaypoint(wpt);
|
||||
chartView.addWaypoint(wpt);
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
}
|
||||
@@ -464,10 +426,14 @@ public class ChartActivity extends Activity implements
|
||||
|
||||
/**
|
||||
* Given a location, creates a new data point for the chart. A data point is
|
||||
* an array double[2], where:
|
||||
* an array double[3 or 6], where:
|
||||
* data[0] = the time or distance
|
||||
* data[1] = the elevation
|
||||
* data[2] = the speed
|
||||
* and possibly:
|
||||
* data[3] = power
|
||||
* data[4] = cadence
|
||||
* data[5] = heart rate
|
||||
*
|
||||
* This must be called in order for each point.
|
||||
*
|
||||
@@ -477,6 +443,35 @@ public class ChartActivity extends Activity implements
|
||||
* @return the previous location, now available for reuse
|
||||
*/
|
||||
private Location getDataPoint(Location location, Track track, double[] result) {
|
||||
if (location instanceof MyTracksLocation &&
|
||||
((MyTracksLocation) location).getSensorDataSet() != null) {
|
||||
SensorDataSet sensorData = ((MyTracksLocation) location).getSensorDataSet();
|
||||
if (sensorData.hasPower()
|
||||
&& sensorData.getPower().getState() == Sensor.SensorState.SENDING
|
||||
&& sensorData.getPower().hasValue()) {
|
||||
result[3] = sensorData.getPower().getValue();
|
||||
} else {
|
||||
result[3] = Double.NaN;
|
||||
}
|
||||
if (sensorData.hasCadence()
|
||||
&& sensorData.getCadence().getState() == Sensor.SensorState.SENDING
|
||||
&& sensorData.getCadence().hasValue()) {
|
||||
result[4] = sensorData.getCadence().getValue();
|
||||
} else {
|
||||
result[4] = Double.NaN;
|
||||
}
|
||||
if (sensorData.hasHeartRate()
|
||||
&& sensorData.getHeartRate().getState() == Sensor.SensorState.SENDING
|
||||
&& sensorData.getHeartRate().hasValue()) {
|
||||
result[5] = sensorData.getHeartRate().getValue();
|
||||
} else {
|
||||
result[5] = Double.NaN;
|
||||
}
|
||||
} else {
|
||||
result[3] = Double.NaN;
|
||||
result[4] = Double.NaN;
|
||||
result[5] = Double.NaN;
|
||||
}
|
||||
switch (mode) {
|
||||
case BY_DISTANCE:
|
||||
result[0] = profileLength;
|
||||
@@ -529,7 +524,7 @@ public class ChartActivity extends Activity implements
|
||||
|
||||
if (oldLastLocation == null) {
|
||||
// No previous location, but return a blank one for reuse
|
||||
return new Location("");
|
||||
return new MyTracksLocation("");
|
||||
}
|
||||
|
||||
return oldLastLocation;
|
||||
@@ -539,7 +534,7 @@ public class ChartActivity extends Activity implements
|
||||
* Sets the chart data points reading from the provider. This is non-blocking.
|
||||
*/
|
||||
private void readProfileAsync() {
|
||||
cv.reset();
|
||||
chartView.reset();
|
||||
updateTrackHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
runOnUiThread(showSpinner);
|
||||
@@ -558,7 +553,6 @@ public class ChartActivity extends Activity implements
|
||||
profileLength = 0;
|
||||
lastLocation = null;
|
||||
startTime = -1;
|
||||
Cursor cursor = null;
|
||||
if (selectedTrackId < 0) {
|
||||
return;
|
||||
}
|
||||
@@ -566,55 +560,94 @@ public class ChartActivity extends Activity implements
|
||||
if (track == null) {
|
||||
return;
|
||||
}
|
||||
long lastLocationRead = track.getStartId();
|
||||
long totalLocations = track.getStopId() - track.getStartId();
|
||||
lastSeenLocationId = track.getStartId();
|
||||
final ArrayList<double[]> theData = readPointsToList(track);
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
chartView.setDataPoints(theData);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Limit the number of chart readings. Ideally we would want around 1024.
|
||||
int chartSamplingFrequency = Math.max(1, (int) (totalLocations / 1024.0));
|
||||
int bufferSize = 1024;
|
||||
/**
|
||||
* Read all new track points.
|
||||
*/
|
||||
private void readNewTrackPoints() {
|
||||
Log.i(MyTracksConstants.TAG, "MyTracks: Updating chart last seen: " + lastSeenLocationId);
|
||||
Track track = providerUtils.getTrack(recordingTrackId);
|
||||
if (track == null) {
|
||||
Log.w(MyTracksConstants.TAG, "MyTracks: track not found");
|
||||
return;
|
||||
}
|
||||
chartView.addDataPoints(readPointsToList(track));
|
||||
uiHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
chartView.invalidate();
|
||||
}
|
||||
});
|
||||
Log.i(MyTracksConstants.TAG, "MyTracks: Updated chart last seen: " + lastSeenLocationId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the frequency at which points should be displayed.
|
||||
* Limit the number of chart readings. Ideally we would want around 1024.
|
||||
* @param track The track which will be displayed.
|
||||
* @return The inverse of the frequency of points to be displayed.
|
||||
*/
|
||||
private int getSamplingFrequency(Track track) {
|
||||
long totalLocations = track.getStopId() - track.getStartId();
|
||||
return Math.max(1, (int) (totalLocations / 1024.0));
|
||||
}
|
||||
|
||||
private Cursor getLocationsCursor(long lastLocationRead) {
|
||||
return providerUtils.getLocationsCursor(selectedTrackId, lastLocationRead, BUFFER_SIZE, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read all of the points to a list.
|
||||
* @param track The track which will be displayed.
|
||||
* @return
|
||||
*/
|
||||
private ArrayList<double[]> readPointsToList(Track track) {
|
||||
Cursor cursor = null;
|
||||
long lastLocationRead = lastSeenLocationId;
|
||||
int points = 0;
|
||||
int chartSamplingFrequency = getSamplingFrequency(track);
|
||||
ArrayList<double[]> result = new ArrayList<double[]>();
|
||||
// Need two locations so we can keep track of the last location.
|
||||
Location location = new MyTracksLocation("");
|
||||
try {
|
||||
final ArrayList<double[]> theData = new ArrayList<double[]>();
|
||||
int points = 0;
|
||||
// Need two locations so we can keep track of the last location.
|
||||
Location location = new Location("");
|
||||
while (lastLocationRead < track.getStopId()) {
|
||||
cursor = providerUtils.getLocationsCursor(
|
||||
selectedTrackId, lastLocationRead, bufferSize, false);
|
||||
while (lastSeenLocationId < track.getStopId()) {
|
||||
cursor = getLocationsCursor(lastLocationRead);
|
||||
if (cursor != null) {
|
||||
elevationBuffer.reset();
|
||||
speedBuffer.reset();
|
||||
if (cursor.moveToFirst()) {
|
||||
final int idColumnIdx =
|
||||
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
|
||||
final int idColumnIdx = cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
|
||||
while (cursor.moveToNext()) {
|
||||
points++;
|
||||
providerUtils.fillLocation(cursor, location);
|
||||
if (MyTracksUtils.isValidLocation(location)) {
|
||||
lastLocationRead = lastSeenLocationId =
|
||||
cursor.getLong(idColumnIdx);
|
||||
double[] point = new double[3];
|
||||
// TODO Can we be smarter about choosing 3 or 6 entries?
|
||||
double[] point = new double[6];
|
||||
location = getDataPoint(location, track, point);
|
||||
if (points % chartSamplingFrequency == 0) {
|
||||
theData.add(point);
|
||||
result.add(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
lastLocationRead += bufferSize;
|
||||
lastLocationRead += BUFFER_SIZE;
|
||||
}
|
||||
} else {
|
||||
lastLocationRead += bufferSize;
|
||||
lastLocationRead += BUFFER_SIZE;
|
||||
}
|
||||
cursor.close();
|
||||
cursor = null;
|
||||
}
|
||||
runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
cv.setDataPoints(theData);
|
||||
}
|
||||
});
|
||||
} catch (RuntimeException e) {
|
||||
Log.w(MyTracksConstants.TAG, "Caught unexpected exception.", e);
|
||||
return result;
|
||||
} finally {
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
|
||||
@@ -35,8 +35,7 @@ import android.widget.RadioGroup;
|
||||
*/
|
||||
public class ChartSettingsDialog extends Dialog {
|
||||
private RadioButton distance;
|
||||
private CheckBox elevation;
|
||||
private CheckBox speed;
|
||||
private CheckBox[] series;
|
||||
|
||||
public ChartSettingsDialog(Context context) {
|
||||
super(context);
|
||||
@@ -61,8 +60,18 @@ public class ChartSettingsDialog extends Dialog {
|
||||
});
|
||||
|
||||
distance = (RadioButton) findViewById(R.id.chart_settings_by_distance);
|
||||
elevation = (CheckBox) findViewById(R.id.chart_settings_elevation);
|
||||
speed = (CheckBox) findViewById(R.id.chart_settings_speed);
|
||||
|
||||
series = new CheckBox[ChartView.NUM_SERIES];
|
||||
series[ChartView.ELEVATION_SERIES] =
|
||||
(CheckBox) findViewById(R.id.chart_settings_elevation);
|
||||
series[ChartView.SPEED_SERIES] =
|
||||
(CheckBox) findViewById(R.id.chart_settings_speed);
|
||||
series[ChartView.POWER_SERIES] =
|
||||
(CheckBox) findViewById(R.id.chart_settings_power);
|
||||
series[ChartView.CADENCE_SERIES] =
|
||||
(CheckBox) findViewById(R.id.chart_settings_cadence);
|
||||
series[ChartView.HEART_RATE_SERIES] =
|
||||
(CheckBox) findViewById(R.id.chart_settings_heart_rate);
|
||||
}
|
||||
|
||||
public void setup(ChartActivity chart) {
|
||||
@@ -74,8 +83,9 @@ public class ChartSettingsDialog extends Dialog {
|
||||
rd.check(chart.getMode() == Mode.BY_DISTANCE
|
||||
? R.id.chart_settings_by_distance
|
||||
: R.id.chart_settings_by_time);
|
||||
elevation.setChecked(chart.isSeriesEnabled(ChartView.ELEVATION_SERIES));
|
||||
speed.setChecked(chart.isSeriesEnabled(ChartView.SPEED_SERIES));
|
||||
for (int i = 0; i < ChartView.NUM_SERIES; i++) {
|
||||
series[i].setChecked(chart.isSeriesEnabled(i));
|
||||
}
|
||||
}
|
||||
|
||||
private void handleOk() {
|
||||
@@ -83,8 +93,9 @@ public class ChartSettingsDialog extends Dialog {
|
||||
chart.setMode(distance.isChecked() ? Mode.BY_DISTANCE : Mode.BY_TIME);
|
||||
|
||||
// TODO: check that something is visible.
|
||||
chart.setSeriesEnabled(ChartView.ELEVATION_SERIES, elevation.isChecked());
|
||||
chart.setSeriesEnabled(ChartView.SPEED_SERIES, speed.isChecked());
|
||||
for (int i = 0; i < ChartView.NUM_SERIES; i++) {
|
||||
chart.setSeriesEnabled(i, series[i].isChecked());
|
||||
}
|
||||
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.Paint.Style;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
@@ -36,15 +37,96 @@ public class ChartValueSeries {
|
||||
private final Path path = new Path();
|
||||
private final Paint fillPaint;
|
||||
private final Paint strokePaint;
|
||||
private final int rounding;
|
||||
private final Paint labelPaint;
|
||||
private final ZoomSettings zoomSettings;
|
||||
|
||||
private String title;
|
||||
private double min = 0;
|
||||
private double max = 1;
|
||||
private int effectiveMax = 0;
|
||||
private int effectiveMin = 0;
|
||||
private double spread = 0;
|
||||
private double min;
|
||||
private double max = 1.0;
|
||||
private int effectiveMax;
|
||||
private int effectiveMin;
|
||||
private double spread;
|
||||
private int interval;
|
||||
private boolean enabled = true;
|
||||
|
||||
/**
|
||||
* This class controls how effective min/max values of a {@link ChartValueSeries} are calculated.
|
||||
*/
|
||||
public static class ZoomSettings {
|
||||
private int intervals;
|
||||
private final int absoluteMin;
|
||||
private final int absoluteMax;
|
||||
private final int[] zoomLevels;
|
||||
|
||||
public ZoomSettings(int intervals, int[] zoomLevels) {
|
||||
this.intervals = intervals;
|
||||
this.absoluteMin = Integer.MAX_VALUE;
|
||||
this.absoluteMax = Integer.MIN_VALUE;
|
||||
this.zoomLevels = zoomLevels;
|
||||
checkArgs();
|
||||
}
|
||||
|
||||
public ZoomSettings(int intervals, int absoluteMin, int absoluteMax, int[] zoomLevels) {
|
||||
this.intervals = intervals;
|
||||
this.absoluteMin = absoluteMin;
|
||||
this.absoluteMax = absoluteMax;
|
||||
this.zoomLevels = zoomLevels;
|
||||
checkArgs();
|
||||
}
|
||||
|
||||
private void checkArgs() {
|
||||
if (intervals <= 0 || zoomLevels == null || zoomLevels.length == 0) {
|
||||
throw new IllegalArgumentException("Expecing positive intervals and non-empty zoom levels");
|
||||
}
|
||||
for (int i = 1; i < zoomLevels.length; ++i) {
|
||||
if (zoomLevels[i] <= zoomLevels[i - 1]) {
|
||||
throw new IllegalArgumentException("Expecting zoom levels in ascending order");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getIntervals() {
|
||||
return intervals;
|
||||
}
|
||||
|
||||
public int getAbsoluteMin() {
|
||||
return absoluteMin;
|
||||
}
|
||||
|
||||
public int getAbsoluteMax() {
|
||||
return absoluteMax;
|
||||
}
|
||||
|
||||
public int[] getZoomLevels() {
|
||||
return zoomLevels;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the interval between markings given the min and max values.
|
||||
* This function attempts to find the smallest zoom level that fits [min,max] after rounding
|
||||
* it to the current zoom level.
|
||||
*
|
||||
* @param min the minimum value in the series
|
||||
* @param max the maximum value in the series
|
||||
* @return the calculated interval for the given range
|
||||
*/
|
||||
public int calculateInterval(double min, double max) {
|
||||
min = Math.min(min, absoluteMin);
|
||||
max = Math.max(max, absoluteMax);
|
||||
for (int i = 0; i < zoomLevels.length; ++i) {
|
||||
int zoomLevel = zoomLevels[i];
|
||||
int roundedMin = (int)(min / zoomLevel) * zoomLevel;
|
||||
if (roundedMin > min) {
|
||||
roundedMin -= zoomLevel;
|
||||
}
|
||||
double interval = (max - roundedMin) / intervals;
|
||||
if (zoomLevel >= interval) {
|
||||
return zoomLevel;
|
||||
}
|
||||
}
|
||||
return zoomLevels[zoomLevels.length - 1];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new chart value series.
|
||||
@@ -53,18 +135,30 @@ public class ChartValueSeries {
|
||||
* @param formatString The format of the decimal format for this series
|
||||
* @param fill The paint for filling the chart
|
||||
* @param stroke The paint for stroking the outside the chart, optional
|
||||
* @param rounding The factor to round the values by
|
||||
* @param zoomSettings The settings related to zooming
|
||||
*
|
||||
* TODO: Get rid of Context and inject appropriate values instead.
|
||||
*/
|
||||
public ChartValueSeries(Context context,
|
||||
String formatString,
|
||||
Paint fill,
|
||||
Paint stroke,
|
||||
int rounding,
|
||||
int titleId) {
|
||||
public ChartValueSeries(Context context, String formatString, int fillColor, int strokeColor,
|
||||
ZoomSettings zoomSettings, int titleId) {
|
||||
this.format = new DecimalFormat(formatString);
|
||||
this.fillPaint = fill;
|
||||
this.strokePaint = stroke;
|
||||
this.rounding = rounding;
|
||||
fillPaint = new Paint();
|
||||
fillPaint.setStyle(Style.FILL);
|
||||
fillPaint.setColor(context.getResources().getColor(fillColor));
|
||||
fillPaint.setAntiAlias(true);
|
||||
if (strokeColor != -1) {
|
||||
strokePaint = new Paint();
|
||||
strokePaint.setStyle(Style.STROKE);
|
||||
strokePaint.setColor(context.getResources().getColor(strokeColor));
|
||||
strokePaint.setAntiAlias(true);
|
||||
// Make a copy of the stroke paint with the default thickness.
|
||||
labelPaint = new Paint(strokePaint);
|
||||
strokePaint.setStrokeWidth(2f);
|
||||
} else {
|
||||
strokePaint = null;
|
||||
labelPaint = fillPaint;
|
||||
}
|
||||
this.zoomSettings = zoomSettings;
|
||||
this.title = context.getString(titleId);
|
||||
}
|
||||
|
||||
@@ -96,20 +190,7 @@ public class ChartValueSeries {
|
||||
* @return The interval between markers
|
||||
*/
|
||||
public int getInterval() {
|
||||
// Try to find 5 even looking intervals.
|
||||
int interval = (int) (spread / 5);
|
||||
int minInterval = rounding / 4;
|
||||
if (interval < minInterval) {
|
||||
// We won't be able to find 5 even intervals.
|
||||
return minInterval;
|
||||
} else if (interval < rounding) {
|
||||
// The desired interval is less than the rounding value.
|
||||
// We will have less than 5 intervals.
|
||||
return rounding;
|
||||
} else {
|
||||
// Round the interval.
|
||||
return (interval / rounding) * rounding;
|
||||
}
|
||||
return interval;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,12 +205,16 @@ public class ChartValueSeries {
|
||||
min = monitor.getMin();
|
||||
max = monitor.getMax();
|
||||
}
|
||||
min = Math.min(min, zoomSettings.getAbsoluteMin());
|
||||
max = Math.max(max, zoomSettings.getAbsoluteMax());
|
||||
|
||||
this.interval = zoomSettings.calculateInterval(min, max);
|
||||
// Round it up.
|
||||
effectiveMax = ((int) (max / rounding)) * rounding + rounding;
|
||||
effectiveMax = ((int) (max / interval)) * interval + interval;
|
||||
// Round it down.
|
||||
effectiveMin = ((int) (min / rounding)) * rounding;
|
||||
effectiveMin = ((int) (min / interval)) * interval;
|
||||
if (min < 0) {
|
||||
effectiveMin -= rounding;
|
||||
effectiveMin -= interval;
|
||||
}
|
||||
spread = effectiveMax - effectiveMin;
|
||||
}
|
||||
@@ -139,7 +224,7 @@ public class ChartValueSeries {
|
||||
*/
|
||||
public int getMaxLabelLength() {
|
||||
String minS = format.format(effectiveMin);
|
||||
String maxS = format.format(effectiveMax);
|
||||
String maxS = format.format(getMax());
|
||||
return Math.max(minS.length(), maxS.length());
|
||||
}
|
||||
|
||||
@@ -182,9 +267,11 @@ public class ChartValueSeries {
|
||||
* @return The paint for this series
|
||||
*/
|
||||
Paint getPaint() {
|
||||
return (strokePaint == null)
|
||||
? fillPaint
|
||||
: strokePaint;
|
||||
return strokePaint == null ? fillPaint : strokePaint;
|
||||
}
|
||||
|
||||
public Paint getLabelPaint() {
|
||||
return labelPaint;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -211,4 +298,8 @@ public class ChartValueSeries {
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
public boolean hasData() {
|
||||
return monitor.hasData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.apps.mytracks.ChartValueSeries.ZoomSettings;
|
||||
import com.google.android.apps.mytracks.content.Waypoint;
|
||||
import com.google.android.apps.mytracks.stats.ExtremityMonitor;
|
||||
import com.google.android.apps.mytracks.util.StringUtils;
|
||||
@@ -25,9 +26,11 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.DashPathEffect;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Paint.Style;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.Paint.Align;
|
||||
import android.graphics.Paint.Style;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.VelocityTracker;
|
||||
@@ -60,14 +63,35 @@ public class ChartView extends View {
|
||||
*/
|
||||
private int zoomLevel = 1;
|
||||
private final int minZoomLevel = 1;
|
||||
private int maxZoomLevel = 5;
|
||||
private int maxZoomLevel = 10;
|
||||
|
||||
private static final int MAX_INTERVALS = 5;
|
||||
|
||||
/*
|
||||
* Borders, margins, dimensions (in pixels):
|
||||
*/
|
||||
private int leftBorder = -1;
|
||||
|
||||
/**
|
||||
* Unscaled top border of the chart.
|
||||
*/
|
||||
private static final int TOP_BORDER = 15;
|
||||
private static final int BOTTOM_BORDER = 135;
|
||||
|
||||
/**
|
||||
* Device scaled top border of the chart.
|
||||
*/
|
||||
private int topBorder;
|
||||
|
||||
/**
|
||||
* Unscaled bottom border of the chart.
|
||||
*/
|
||||
private static final float BOTTOM_BORDER = 40;
|
||||
|
||||
/**
|
||||
* Device scaled bottom border of the chart.
|
||||
*/
|
||||
private int bottomBorder;
|
||||
|
||||
private static final int RIGHT_BORDER = 17;
|
||||
/** Space to leave for drawing the unit labels */
|
||||
private static final int UNIT_BORDER = 15;
|
||||
@@ -87,7 +111,10 @@ public class ChartView extends View {
|
||||
*/
|
||||
public static final int ELEVATION_SERIES = 0;
|
||||
public static final int SPEED_SERIES = 1;
|
||||
public static final int NUM_SERIES = 2;
|
||||
public static final int POWER_SERIES = 2;
|
||||
public static final int CADENCE_SERIES = 3;
|
||||
public static final int HEART_RATE_SERIES = 4;
|
||||
public static final int NUM_SERIES = 5;
|
||||
private ChartValueSeries[] series;
|
||||
|
||||
private final ExtremityMonitor xMonitor = new ExtremityMonitor();
|
||||
@@ -100,6 +127,7 @@ public class ChartView extends View {
|
||||
private final Paint borderPaint = new Paint();
|
||||
private final Paint labelPaint = new Paint();
|
||||
private final Paint gridPaint = new Paint();
|
||||
private final Paint gridBarPaint = new Paint();
|
||||
private final Paint clearPaint = new Paint();
|
||||
private final Drawable pointer;
|
||||
private final Drawable statsMarker;
|
||||
@@ -120,8 +148,6 @@ public class ChartView extends View {
|
||||
private boolean metricUnits = true;
|
||||
private boolean showPointer = false;
|
||||
|
||||
private boolean yLabelMask[] = null;
|
||||
|
||||
/** Display chart versus distance or time */
|
||||
public enum Mode {
|
||||
BY_DISTANCE, BY_TIME
|
||||
@@ -146,6 +172,9 @@ public class ChartView extends View {
|
||||
gridPaint.setColor(context.getResources().getColor(R.color.gray));
|
||||
gridPaint.setAntiAlias(false);
|
||||
|
||||
gridBarPaint.set(gridPaint);
|
||||
gridBarPaint.setPathEffect(new DashPathEffect(new float[] {3, 2}, 0));
|
||||
|
||||
clearPaint.setStyle(Style.FILL);
|
||||
clearPaint.setColor(context.getResources().getColor(R.color.white));
|
||||
clearPaint.setAntiAlias(false);
|
||||
@@ -171,39 +200,47 @@ public class ChartView extends View {
|
||||
public void setUpChartValueSeries(Context context) {
|
||||
series = new ChartValueSeries[NUM_SERIES];
|
||||
|
||||
// Create the paints
|
||||
Paint fillPaint1 = new Paint();
|
||||
fillPaint1.setStyle(Style.FILL);
|
||||
fillPaint1.setColor(context.getResources().getColor(R.color.green));
|
||||
fillPaint1.setAntiAlias(true);
|
||||
|
||||
Paint fillPaint2 = new Paint();
|
||||
fillPaint2.setStyle(Style.FILL);
|
||||
fillPaint2.setColor(
|
||||
context.getResources().getColor(R.color.blue_transparent));
|
||||
fillPaint2.setAntiAlias(true);
|
||||
|
||||
Paint strokePaint = new Paint();
|
||||
strokePaint.setStyle(Style.STROKE);
|
||||
strokePaint.setColor(context.getResources().getColor(R.color.blue));
|
||||
strokePaint.setAntiAlias(true);
|
||||
|
||||
// Create the value series
|
||||
// Create the value series.
|
||||
series[ELEVATION_SERIES] =
|
||||
new ChartValueSeries(context,
|
||||
"###,###",
|
||||
fillPaint1,
|
||||
null,
|
||||
100,
|
||||
R.color.elevation_fill,
|
||||
R.color.elevation_border,
|
||||
new ZoomSettings(MAX_INTERVALS,
|
||||
new int[] {5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000}),
|
||||
R.string.elevation);
|
||||
|
||||
series[SPEED_SERIES] =
|
||||
new ChartValueSeries(context,
|
||||
"###,###.0",
|
||||
fillPaint2,
|
||||
strokePaint,
|
||||
5,
|
||||
"###,###",
|
||||
R.color.speed_fill,
|
||||
R.color.speed_border,
|
||||
new ZoomSettings(MAX_INTERVALS, 0, Integer.MIN_VALUE,
|
||||
new int[] {1, 5, 10, 20, 50}),
|
||||
R.string.speed);
|
||||
series[POWER_SERIES] =
|
||||
new ChartValueSeries(context,
|
||||
"###,###",
|
||||
R.color.power_fill,
|
||||
R.color.power_border,
|
||||
new ZoomSettings(MAX_INTERVALS, 0, 1000, new int[] {5, 50, 100, 200}),
|
||||
R.string.power);
|
||||
series[CADENCE_SERIES] =
|
||||
new ChartValueSeries(context,
|
||||
"###,###",
|
||||
R.color.cadence_fill,
|
||||
R.color.cadence_border,
|
||||
new ZoomSettings(MAX_INTERVALS, 0, Integer.MIN_VALUE,
|
||||
new int[] {5, 10, 25, 50}),
|
||||
R.string.cadence);
|
||||
series[HEART_RATE_SERIES] =
|
||||
new ChartValueSeries(context,
|
||||
"###,###",
|
||||
R.color.heartrate_fill,
|
||||
R.color.heartrate_border,
|
||||
new ZoomSettings(MAX_INTERVALS, 0, Integer.MIN_VALUE,
|
||||
new int[] {25, 50}),
|
||||
R.string.heart_rate);
|
||||
}
|
||||
|
||||
public void clearWaypoints() {
|
||||
@@ -266,13 +303,25 @@ public class ChartView extends View {
|
||||
*/
|
||||
public synchronized void addDataPoint(double[] theData) {
|
||||
data.add(theData);
|
||||
addDataPointInternal(theData);
|
||||
updateDimensions();
|
||||
setUpPath();
|
||||
}
|
||||
|
||||
private void addDataPointInternal(double[] theData) {
|
||||
xMonitor.update(theData[0]);
|
||||
int min = Math.min(series.length, theData.length - 1);
|
||||
for (int i = 0; i < min; i++) {
|
||||
series[i].update(theData[i + 1]);
|
||||
if (!Double.isNaN(theData[i + 1])) {
|
||||
series[i].update(theData[i + 1]);
|
||||
}
|
||||
}
|
||||
// Fill in the extra's if needed.
|
||||
for (int i = theData.length; i < series.length; i++) {
|
||||
if (series[i].hasData()) {
|
||||
series[i].update(0);
|
||||
}
|
||||
}
|
||||
updateDimensions();
|
||||
setupPath();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -284,14 +333,10 @@ public class ChartView extends View {
|
||||
data.addAll(theData);
|
||||
for (int i = 0; i < theData.size(); i++) {
|
||||
double d[] = theData.get(i);
|
||||
xMonitor.update(d[0]);
|
||||
int min = Math.min(series.length, d.length - 1);
|
||||
for (int j = 0; j < min; j++) {
|
||||
series[j].update(d[j + 1]);
|
||||
}
|
||||
addDataPointInternal(d);
|
||||
}
|
||||
updateDimensions();
|
||||
setupPath();
|
||||
setUpPath();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -325,7 +370,7 @@ public class ChartView extends View {
|
||||
public void zoomIn() {
|
||||
if (canZoomIn()) {
|
||||
zoomLevel++;
|
||||
setupPath();
|
||||
setUpPath();
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
@@ -342,7 +387,7 @@ public class ChartView extends View {
|
||||
scrollX = effectiveWidth * (zoomLevel - 1);
|
||||
scrollTo(scrollX, 0);
|
||||
}
|
||||
setupPath();
|
||||
setUpPath();
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
@@ -508,12 +553,12 @@ public class ChartView extends View {
|
||||
@Override
|
||||
protected synchronized void onDraw(Canvas c) {
|
||||
if (w != c.getWidth() || h != c.getHeight()) {
|
||||
// Dimensions have changed (for example due to orientation change):
|
||||
// Dimensions have changed (for example due to orientation change).
|
||||
w = c.getWidth();
|
||||
h = c.getHeight();
|
||||
effectiveWidth = Math.max(0, w - leftBorder - RIGHT_BORDER);
|
||||
effectiveHeight = Math.max(0, h - TOP_BORDER - BOTTOM_BORDER);
|
||||
setupPath();
|
||||
effectiveHeight = Math.max(0, h - topBorder - bottomBorder);
|
||||
setUpPath();
|
||||
}
|
||||
c.save();
|
||||
c.drawColor(Color.WHITE);
|
||||
@@ -523,16 +568,21 @@ public class ChartView extends View {
|
||||
c.restore();
|
||||
return;
|
||||
}
|
||||
|
||||
c.save();
|
||||
c.clipRect(leftBorder + 1 + getScrollX(), topBorder + 1,
|
||||
w - RIGHT_BORDER + getScrollX() - 1, h - bottomBorder - 1);
|
||||
|
||||
// Draw the data series
|
||||
drawGrid(c);
|
||||
|
||||
// Draw the data series.
|
||||
for (ChartValueSeries cvs : series) {
|
||||
if (cvs.isEnabled()) {
|
||||
if (cvs.isEnabled() && cvs.hasData()) {
|
||||
cvs.drawPath(c);
|
||||
}
|
||||
}
|
||||
drawGrid(c);
|
||||
|
||||
// Draw the waypoints:
|
||||
|
||||
// Draw the waypoints.
|
||||
for (int i = 1; i < waypoints.size(); i++) {
|
||||
final Waypoint waypoint = waypoints.get(i);
|
||||
if (waypoint.getLocation() == null) {
|
||||
@@ -541,8 +591,8 @@ public class ChartView extends View {
|
||||
c.save();
|
||||
|
||||
final float x = getWaypointX(waypoint);
|
||||
c.drawLine(x, h - BOTTOM_BORDER, x, TOP_BORDER, gridPaint);
|
||||
c.translate(x - (markerWidth / 2), markerHeight);
|
||||
c.drawLine(x, h - bottomBorder, x, topBorder, gridPaint);
|
||||
c.translate(x - markerWidth / 2, markerHeight);
|
||||
if (waypoints.get(i).getType() == Waypoint.TYPE_STATISTICS) {
|
||||
statsMarker.draw(c);
|
||||
} else {
|
||||
@@ -551,24 +601,28 @@ public class ChartView extends View {
|
||||
c.restore();
|
||||
}
|
||||
|
||||
// Draw the axis and labels:
|
||||
c.restore();
|
||||
|
||||
// Draw the axis and labels.
|
||||
drawXLabels(c);
|
||||
drawXAxis(c);
|
||||
drawSeriesTitles(c);
|
||||
|
||||
yLabelMask = new boolean[effectiveHeight / FONT_HEIGHT + 1];
|
||||
|
||||
c.translate(getScrollX(), 0);
|
||||
drawYAxis(c);
|
||||
float density = getContext().getResources().getDisplayMetrics().density;
|
||||
final int spacer = (int) (5 * density);
|
||||
int x = leftBorder - spacer;
|
||||
for (ChartValueSeries cvs : series) {
|
||||
if (cvs.isEnabled()) {
|
||||
drawYLabels(cvs, c);
|
||||
if (cvs.isEnabled() && cvs.hasData()) {
|
||||
x -= drawYLabels(cvs, c, x) + spacer;
|
||||
}
|
||||
}
|
||||
c.restore();
|
||||
if (showPointer && data.size() > 0) {
|
||||
if (showPointer && !data.isEmpty()) {
|
||||
c.translate(getX(maxX) - pointer.getIntrinsicWidth() / 2,
|
||||
(getY(series[0], data.get(data.size() - 1)[1])
|
||||
- pointer.getIntrinsicHeight() / 2 - 12));
|
||||
getY(series[0], data.get(data.size() - 1)[1])
|
||||
- pointer.getIntrinsicHeight() / 2 - 12);
|
||||
pointer.draw(c);
|
||||
}
|
||||
}
|
||||
@@ -576,15 +630,15 @@ public class ChartView extends View {
|
||||
private void drawSeriesTitles(Canvas c) {
|
||||
int sections = 1;
|
||||
for (ChartValueSeries cvs : series) {
|
||||
if (cvs.isEnabled()) {
|
||||
if (cvs.isEnabled() && cvs.hasData()) {
|
||||
sections++;
|
||||
}
|
||||
}
|
||||
int j = 0;
|
||||
for (ChartValueSeries cvs : series) {
|
||||
if (cvs.isEnabled()) {
|
||||
int y = (int) (w * zoomLevel * ((double) (++j) / sections));
|
||||
c.drawText(cvs.getTitle(), y, TOP_BORDER, cvs.getPaint());
|
||||
if (cvs.isEnabled() && cvs.hasData()) {
|
||||
int x = (int) (w * (double) ++j / sections) + getScrollX();
|
||||
c.drawText(cvs.getTitle(), x, topBorder, cvs.getLabelPaint());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -593,40 +647,66 @@ public class ChartView extends View {
|
||||
* Sets up the path that is used to draw the histogram in onDraw(). The path
|
||||
* needs to be updated any time after the data or histogram dimensions change.
|
||||
*/
|
||||
private synchronized void setupPath() {
|
||||
private synchronized void setUpPath() {
|
||||
for (ChartValueSeries cvs : series) {
|
||||
cvs.getPath().reset();
|
||||
}
|
||||
if (data.size() < 1) {
|
||||
if (data.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
int min = Math.min(series.length, data.get(0).length - 1);
|
||||
|
||||
// All of the data points to the respective series.
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
// TODO: Come up with a better sampling than Math.max(1, (maxZoomLevel - zoomLevel + 1) / 2);
|
||||
int sampling = 1;
|
||||
for (int i = 0; i < data.size(); i += sampling) {
|
||||
double[] d = data.get(i);
|
||||
for (int j = 0; j < min; j++) {
|
||||
int min = Math.min(series.length, d.length - 1);
|
||||
for (int j = 0; j < min; ++j) {
|
||||
ChartValueSeries cvs = series[j];
|
||||
Path path = cvs.getPath();
|
||||
path.lineTo(getX(d[0]), getY(cvs, d[j + 1]));
|
||||
int x = getX(d[0]);
|
||||
int y = getY(cvs, d[j + 1]);
|
||||
if (i == 0) {
|
||||
path.moveTo(x, y);
|
||||
} else {
|
||||
path.lineTo(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Close the path.
|
||||
int yCorner = TOP_BORDER + effectiveHeight;
|
||||
int yCorner = topBorder + effectiveHeight;
|
||||
int xCorner = getX(data.get(0)[0]);
|
||||
int min = series.length;
|
||||
for (int j = 0; j < min; j++) {
|
||||
ChartValueSeries cvs = series[j];
|
||||
Path path = cvs.getPath();
|
||||
// Bottom right corner
|
||||
path.lineTo(getX(data.get(data.size() - 1)[0]), yCorner);
|
||||
// Bottom left corner
|
||||
path.lineTo(xCorner, yCorner);
|
||||
// Top right corner
|
||||
path.lineTo(xCorner, getY(cvs, data.get(0)[j + 1]));
|
||||
int first = getFirstPointPopulatedIndex(j + 1);
|
||||
if (first != -1) {
|
||||
// Bottom right corner
|
||||
path.lineTo(getX(data.get(data.size() - 1)[0]), yCorner);
|
||||
// Bottom left corner
|
||||
path.lineTo(xCorner, yCorner);
|
||||
// Top right corner
|
||||
path.lineTo(xCorner, getY(cvs, data.get(first)[j + 1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the index of the first point which has a series populated.
|
||||
* @param seriesIndex The index of the value series to search for.
|
||||
* @return The index in the first data for the point in the series that has series
|
||||
* index value populated or -1 if none is found.
|
||||
*/
|
||||
private int getFirstPointPopulatedIndex(int seriesIndex) {
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
if (data.get(i).length > seriesIndex) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the histogram dimensions.
|
||||
@@ -639,14 +719,21 @@ public class ChartView extends View {
|
||||
for (ChartValueSeries cvs : series) {
|
||||
cvs.updateDimension();
|
||||
}
|
||||
// TODO: This is totally broken. Make sure that we calculate based on measureText for each
|
||||
// grid line, as the labels may vary across intervals.
|
||||
int maxLength = 0;
|
||||
for (ChartValueSeries cvs : series) {
|
||||
maxLength = Math.max(maxLength,
|
||||
cvs.getMaxLabelLength());
|
||||
if (cvs.isEnabled() && cvs.hasData()) {
|
||||
maxLength += cvs.getMaxLabelLength();
|
||||
}
|
||||
}
|
||||
leftBorder = 4 + 7 * maxLength;
|
||||
float density = getContext().getResources().getDisplayMetrics().density;
|
||||
// TODO: This should be function of the number of variables displayed.
|
||||
leftBorder = (int) (density * (4 + 8 * maxLength));
|
||||
effectiveWidth = w - leftBorder - RIGHT_BORDER;
|
||||
effectiveHeight = h - TOP_BORDER - BOTTOM_BORDER;
|
||||
bottomBorder = (int) (density * BOTTOM_BORDER);
|
||||
topBorder = (int) (density * TOP_BORDER);
|
||||
effectiveHeight = h - topBorder - bottomBorder;
|
||||
}
|
||||
|
||||
private int getX(double distance) {
|
||||
@@ -654,28 +741,26 @@ public class ChartView extends View {
|
||||
}
|
||||
|
||||
private int getY(ChartValueSeries cvs, double y) {
|
||||
return TOP_BORDER + effectiveHeight
|
||||
- (int) ((y - cvs.getMin()) * effectiveHeight / cvs.getSpread());
|
||||
int effectiveSpread = cvs.getInterval() * MAX_INTERVALS;
|
||||
return topBorder + effectiveHeight
|
||||
- (int) ((y - cvs.getMin()) * effectiveHeight / effectiveSpread);
|
||||
}
|
||||
|
||||
private void drawXLabels(Canvas c) {
|
||||
int numLabels = 0;
|
||||
double interval = (int) (maxX / zoomLevel / 4);
|
||||
boolean shortFormat = false;
|
||||
if (interval < 1) {
|
||||
interval = .5;
|
||||
shortFormat = true;
|
||||
} else if (interval < 5) {
|
||||
interval = 2;
|
||||
} else if (interval < 10) {
|
||||
interval = 5;
|
||||
} else {
|
||||
if (interval < 5) {
|
||||
interval = 2;
|
||||
} else if (interval < 10) {
|
||||
interval = 5;
|
||||
} else {
|
||||
interval = (interval / 10) * 10;
|
||||
}
|
||||
interval = (interval / 10) * 10;
|
||||
}
|
||||
drawXLabel(c, 0, shortFormat);
|
||||
numLabels++;
|
||||
int numLabels = 1;
|
||||
for (int i = 1; i * interval < maxX; i++) {
|
||||
drawXLabel(c, i * interval, shortFormat);
|
||||
numLabels++;
|
||||
@@ -685,102 +770,78 @@ public class ChartView extends View {
|
||||
}
|
||||
}
|
||||
|
||||
private void drawYLabels(ChartValueSeries cvs, Canvas c) {
|
||||
int numLabels = 0;
|
||||
drawYLabel(cvs, c, 0);
|
||||
final int y0 = getY(cvs, 0);
|
||||
numLabels++;
|
||||
private float drawYLabels(ChartValueSeries cvs, Canvas c, int x) {
|
||||
int interval = cvs.getInterval();
|
||||
for (int i = 0; i * interval < cvs.getSpread(); i++) {
|
||||
final int y = i * interval + cvs.getMin();
|
||||
final int yi = getY(cvs, y);
|
||||
if (Math.abs(y0 - yi) > 15) {
|
||||
drawYLabel(cvs, c, y);
|
||||
numLabels++;
|
||||
}
|
||||
}
|
||||
if (numLabels < 3) {
|
||||
drawYLabel(cvs, c, cvs.getMax());
|
||||
float maxTextWidth = 0;
|
||||
for (int i = 0; i < MAX_INTERVALS; ++i) {
|
||||
maxTextWidth = Math.max(maxTextWidth, drawYLabel(cvs, c, x, i * interval + cvs.getMin()));
|
||||
}
|
||||
return maxTextWidth;
|
||||
}
|
||||
|
||||
private void drawXLabel(Canvas c, double x, boolean shortFormat) {
|
||||
if (x < 0) {
|
||||
return;
|
||||
}
|
||||
String s =
|
||||
(mode == Mode.BY_DISTANCE)
|
||||
? (shortFormat ? xShortFormat.format(x) : xFormat.format(x))
|
||||
: StringUtils.formatTime((long) x);
|
||||
c.drawText(s,
|
||||
getX(x),
|
||||
effectiveHeight + UNIT_BORDER + TOP_BORDER,
|
||||
effectiveHeight + UNIT_BORDER + topBorder,
|
||||
labelPaint);
|
||||
}
|
||||
|
||||
private void drawYLabel(ChartValueSeries cvs, Canvas c, int y) {
|
||||
int desiredY =
|
||||
(int) ((y - cvs.getMin()) * effectiveHeight / cvs.getSpread());
|
||||
|
||||
// Make sure we don't write one label on top of another.
|
||||
int slot = desiredY / FONT_HEIGHT;
|
||||
if (slot < 0) {
|
||||
return;
|
||||
}
|
||||
if (yLabelMask[slot]) {
|
||||
desiredY = ++slot * FONT_HEIGHT;
|
||||
}
|
||||
desiredY = TOP_BORDER + effectiveHeight + 5 - desiredY;
|
||||
if (slot < yLabelMask.length) {
|
||||
yLabelMask[slot] = true;
|
||||
}
|
||||
c.drawText(cvs.getFormat().format(y),
|
||||
2, desiredY,
|
||||
cvs.getPaint());
|
||||
private float drawYLabel(ChartValueSeries cvs, Canvas c, int x, int y) {
|
||||
int desiredY = (int) ((y - cvs.getMin()) * effectiveHeight /
|
||||
(cvs.getInterval() * MAX_INTERVALS));
|
||||
desiredY = topBorder + effectiveHeight + FONT_HEIGHT / 2 - desiredY - 1;
|
||||
Paint p = new Paint(cvs.getLabelPaint());
|
||||
p.setTextAlign(Align.RIGHT);
|
||||
String text = cvs.getFormat().format(y);
|
||||
c.drawText(text, x, desiredY, p);
|
||||
return p.measureText(text);
|
||||
}
|
||||
|
||||
private void drawXAxis(Canvas canvas) {
|
||||
float rightEdge = getX(maxX);
|
||||
canvas.drawLine(leftBorder, effectiveHeight + TOP_BORDER, rightEdge,
|
||||
effectiveHeight + TOP_BORDER, borderPaint);
|
||||
final int y = effectiveHeight + topBorder;
|
||||
canvas.drawLine(leftBorder, y, rightEdge, y, borderPaint);
|
||||
Context c = getContext();
|
||||
String s =
|
||||
(mode == Mode.BY_DISTANCE)
|
||||
? (metricUnits ? c.getString(R.string.kilometer)
|
||||
: c.getString(R.string.mile)) : (c.getString(R.string.min));
|
||||
canvas.drawText(s,
|
||||
rightEdge,
|
||||
effectiveHeight + .2f * UNIT_BORDER + TOP_BORDER,
|
||||
labelPaint);
|
||||
String s = mode == Mode.BY_DISTANCE
|
||||
? (metricUnits ? c.getString(R.string.kilometer) : c.getString(R.string.mile))
|
||||
: c.getString(R.string.min);
|
||||
canvas.drawText(s, rightEdge, effectiveHeight + .2f * UNIT_BORDER + topBorder, labelPaint);
|
||||
}
|
||||
|
||||
private void drawYAxis(Canvas canvas) {
|
||||
canvas.drawLine(leftBorder, UNIT_BORDER + TOP_BORDER,
|
||||
leftBorder, effectiveHeight + TOP_BORDER,
|
||||
borderPaint);
|
||||
canvas.drawRect(0, 0,
|
||||
leftBorder - 1, effectiveHeight + TOP_BORDER + 1,
|
||||
clearPaint);
|
||||
leftBorder - 1, effectiveHeight + topBorder + UNIT_BORDER + 1,
|
||||
clearPaint);
|
||||
canvas.drawLine(leftBorder, UNIT_BORDER + topBorder,
|
||||
leftBorder, effectiveHeight + topBorder,
|
||||
borderPaint);
|
||||
for (int i = 1; i < MAX_INTERVALS; ++i) {
|
||||
int y = i * effectiveHeight / MAX_INTERVALS + topBorder;
|
||||
canvas.drawLine(leftBorder - 5, y, leftBorder, y, gridPaint);
|
||||
}
|
||||
|
||||
Context c = getContext();
|
||||
// TODO: This should really show units for all series.
|
||||
String s = metricUnits
|
||||
? c.getString(R.string.meter)
|
||||
: c.getString(R.string.feet);
|
||||
canvas.drawText(s, leftBorder - UNIT_BORDER * .2f,
|
||||
UNIT_BORDER * .8f + TOP_BORDER, labelPaint);
|
||||
String s = metricUnits ? c.getString(R.string.meter) : c.getString(R.string.feet);
|
||||
canvas.drawText(s, leftBorder - UNIT_BORDER * .2f, UNIT_BORDER * .8f + topBorder, labelPaint);
|
||||
}
|
||||
|
||||
|
||||
private synchronized void drawGrid(Canvas c) {
|
||||
if (data.size() < 1) {
|
||||
if (data.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
for (ChartValueSeries cvs : series) {
|
||||
if (cvs.isEnabled()) {
|
||||
int interval = cvs.getInterval();
|
||||
for (int i = 1; i * interval < cvs.getSpread(); i++) {
|
||||
int y = getY(cvs, i * interval + cvs.getMin());
|
||||
c.drawLine(getX(data.get(0)[0]), y,
|
||||
getX(data.get(data.size() - 1)[0]), y,
|
||||
cvs.getPaint());
|
||||
}
|
||||
}
|
||||
|
||||
float rightEdge = getX(maxX);
|
||||
for (int i = 1; i < MAX_INTERVALS; ++i) {
|
||||
int y = i * effectiveHeight / MAX_INTERVALS + topBorder;
|
||||
c.drawLine(leftBorder, y, rightEdge, y, gridBarPaint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -82,7 +83,8 @@ class CheckUnits {
|
||||
}
|
||||
|
||||
private static void recordCheckPerformed(SharedPreferences preferences) {
|
||||
preferences.edit().putBoolean(PREFERENCE_UNITS_CHECKED, true).commit();
|
||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(
|
||||
preferences.edit().putBoolean(PREFERENCE_UNITS_CHECKED, true));
|
||||
}
|
||||
|
||||
private CheckUnits() {
|
||||
|
||||
@@ -85,13 +85,16 @@ public class DialogManager {
|
||||
builder.setTitle("Title");
|
||||
builder.setMessage("Message");
|
||||
builder.setPositiveButton(activity.getString(R.string.ok), null);
|
||||
builder.setNeutralButton(activity.getString(R.string.share_map),
|
||||
builder.setNeutralButton(activity.getString(R.string.share_track),
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
activity.shareLinkToMyMap(activity.getSendToMyMapsMapId());
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
SendToGoogleDialog sendToGoogleDialog = getSendToGoogleDialog();
|
||||
final boolean sentToMyMaps = sendToGoogleDialog.getSendToMyMaps();
|
||||
final boolean sentToFusionTables = sendToGoogleDialog.getSendToFusionTables();
|
||||
activity.shareLinkToMap(sentToMyMaps, sentToFusionTables);
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
sendToGoogleResultDialog = builder.create();
|
||||
return sendToGoogleResultDialog;
|
||||
case DIALOG_WRITE_PROGRESS:
|
||||
@@ -119,9 +122,11 @@ public class DialogManager {
|
||||
sendToGoogleResultDialog.setIcon(success
|
||||
? android.R.drawable.ic_dialog_info
|
||||
: android.R.drawable.ic_dialog_alert);
|
||||
sendToGoogleResultDialog.setMessage(activity.getMapsResultMessage());
|
||||
sendToGoogleResultDialog.setMessage(activity.getSendToGoogleResultMessage());
|
||||
|
||||
boolean canShare = activity.getSendToMyMapsMapId() != null;
|
||||
boolean canShare =
|
||||
activity.getSendToFusionTablesTableId() != null &&
|
||||
activity.getSendToMyMapsMapId() != null;
|
||||
View share =
|
||||
sendToGoogleResultDialog.findViewById(android.R.id.button3);
|
||||
if (share != null) {
|
||||
|
||||
@@ -15,43 +15,43 @@
|
||||
*/
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||
import com.google.android.apps.mytracks.util.ResourceUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
/**
|
||||
* Displays an EULA ("End User License Agreement") that the user has to accept
|
||||
* before using the application. Your application should call
|
||||
* {@link Eula#showEula(android.app.Activity)} in the onCreate() method of the
|
||||
* first activity. If the user accepts the EULA, it will never be shown again.
|
||||
* If the user refuses, {@link android.app.Activity#finish()} is invoked on your
|
||||
* activity.
|
||||
* This class handles display of EULAs ("End User License Agreements") to the
|
||||
* user.
|
||||
*/
|
||||
class Eula {
|
||||
private static final String PREFERENCE_EULA_ACCEPTED = "eula.accepted";
|
||||
private static final String PREFERENCES_EULA = "eula";
|
||||
|
||||
private Eula() {}
|
||||
|
||||
/**
|
||||
* Displays the EULA if necessary. This method should be called from the
|
||||
* onCreate() method of your main Activity.
|
||||
* onCreate() method of your main Activity. If the user accepts, the EULA
|
||||
* will never be displayed again. If the user refuses, the activity will
|
||||
* finish (exit).
|
||||
*
|
||||
* @param activity The Activity to finish if the user rejects the EULA
|
||||
*/
|
||||
static void showEula(final Activity activity) {
|
||||
static void showEulaRequireAcceptance(final Activity activity) {
|
||||
final SharedPreferences preferences =
|
||||
activity.getSharedPreferences(PREFERENCES_EULA, Activity.MODE_PRIVATE);
|
||||
if (preferences.getBoolean(PREFERENCE_EULA_ACCEPTED, false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setTitle(R.string.eula_title);
|
||||
builder.setCancelable(true);
|
||||
final AlertDialog.Builder builder = initDialog(activity);
|
||||
builder.setPositiveButton(R.string.accept,
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@@ -72,12 +72,31 @@ class Eula {
|
||||
refuse(activity);
|
||||
}
|
||||
});
|
||||
builder.setMessage(ResourceUtils.readFile(activity, R.raw.eula));
|
||||
builder.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the EULA to the user in an informational context. They won't be
|
||||
* given the choice of accepting or declining the EULA -- we're simply
|
||||
* displaying it for them to read.
|
||||
*/
|
||||
static void showEula(Context context) {
|
||||
AlertDialog.Builder builder = initDialog(context);
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.show();
|
||||
}
|
||||
|
||||
private static AlertDialog.Builder initDialog(Context context) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setCancelable(true);
|
||||
builder.setTitle(R.string.eula_title);
|
||||
builder.setMessage(ResourceUtils.readFile(context, R.raw.eula));
|
||||
return builder;
|
||||
}
|
||||
|
||||
private static void accept(Activity activity, SharedPreferences preferences) {
|
||||
preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true).commit();
|
||||
ApiFeatures.getInstance().getApiPlatformAdapter().applyPreferenceChanges(
|
||||
preferences.edit().putBoolean(PREFERENCE_EULA_ACCEPTED, true));
|
||||
Intent startIntent = new Intent(activity, WelcomeActivity.class);
|
||||
activity.startActivityForResult(startIntent, MyTracksConstants.WELCOME);
|
||||
}
|
||||
@@ -85,7 +104,4 @@ class Eula {
|
||||
private static void refuse(Activity activity) {
|
||||
activity.finish();
|
||||
}
|
||||
|
||||
private Eula() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,18 +20,17 @@ import com.google.android.apps.mytracks.content.TracksColumns;
|
||||
import com.google.android.apps.mytracks.io.TrackWriter;
|
||||
import com.google.android.apps.mytracks.io.TrackWriterFactory;
|
||||
import com.google.android.apps.mytracks.io.TrackWriterFactory.TrackFileFormat;
|
||||
import com.google.android.apps.mytracks.util.MyTracksUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.Cursor;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.PowerManager;
|
||||
import android.os.PowerManager.WakeLock;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
@@ -46,6 +45,7 @@ public class ExportAllTracks {
|
||||
public static final int GPX_OPTION_INDEX = 0;
|
||||
public static final int KML_OPTION_INDEX = 1;
|
||||
public static final int CSV_OPTION_INDEX = 2;
|
||||
public static final int TCX_OPTION_INDEX = 3;
|
||||
|
||||
private final Activity activity;
|
||||
private WakeLock wakeLock;
|
||||
@@ -67,6 +67,11 @@ public class ExportAllTracks {
|
||||
case CSV_OPTION_INDEX:
|
||||
format = TrackFileFormat.CSV;
|
||||
break;
|
||||
case TCX_OPTION_INDEX:
|
||||
format = TrackFileFormat.TCX;
|
||||
break;
|
||||
default:
|
||||
Log.w(MyTracksConstants.TAG, "Unknown export format: " + which);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -115,7 +120,7 @@ public class ExportAllTracks {
|
||||
prefs.getLong(activity.getString(R.string.recording_track_key), -1);
|
||||
}
|
||||
if (recordingTrackId != -1) {
|
||||
acquireWakeLock();
|
||||
wakeLock = MyTracksUtils.acquireWakeLock(activity, wakeLock);
|
||||
}
|
||||
|
||||
// Now we can safely export everything.
|
||||
@@ -205,40 +210,4 @@ public class ExportAllTracks {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to acquire a partial wake lock if not already acquired. Logs errors
|
||||
* and gives up trying in case the wake lock cannot be acquired.
|
||||
*/
|
||||
private void acquireWakeLock() {
|
||||
Log.i(MyTracksConstants.TAG, "ExportAllTracks: Aquiring wake lock.");
|
||||
try {
|
||||
PowerManager pm =
|
||||
(PowerManager) activity.getSystemService(Context.POWER_SERVICE);
|
||||
if (pm == null) {
|
||||
Log.e(MyTracksConstants.TAG,
|
||||
"ExportAllTracks: Power manager not found!");
|
||||
return;
|
||||
}
|
||||
if (wakeLock == null) {
|
||||
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
|
||||
MyTracksConstants.TAG);
|
||||
if (wakeLock == null) {
|
||||
Log.e(MyTracksConstants.TAG,
|
||||
"ExportAllTracks: Could not create wake lock (null).");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!wakeLock.isHeld()) {
|
||||
wakeLock.acquire();
|
||||
if (!wakeLock.isHeld()) {
|
||||
Log.e(MyTracksConstants.TAG,
|
||||
"ExportAllTracks: Could not acquire wake lock.");
|
||||
}
|
||||
}
|
||||
} catch (RuntimeException e) {
|
||||
Log.e(MyTracksConstants.TAG,
|
||||
"ExportAllTracks: Caught unexpected exception: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
/*
|
||||
* Copyright 2011 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.
|
||||
*/
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
|
||||
import com.google.android.apps.mytracks.io.GpxImporter;
|
||||
import com.google.android.apps.mytracks.util.FileUtils;
|
||||
import com.google.android.apps.mytracks.util.MyTracksUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.PowerManager.WakeLock;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* A class that will import all GPX tracks in /sdcard/MyTracks/gpx/
|
||||
*
|
||||
* @author David Piggott
|
||||
*/
|
||||
public class ImportAllTracks {
|
||||
|
||||
private final Activity activity;
|
||||
private WakeLock wakeLock;
|
||||
private ProgressDialog progress;
|
||||
private FileUtils fileUtils;
|
||||
private String gpxPath;
|
||||
private int gpxFileCount;
|
||||
private int importSuccessCount;
|
||||
|
||||
public ImportAllTracks(Activity activity) {
|
||||
this.activity = activity;
|
||||
Log.i(MyTracksConstants.TAG, "ImportAllTracks: Starting");
|
||||
fileUtils = new FileUtils();
|
||||
gpxPath = fileUtils.buildExternalDirectoryPath("gpx");
|
||||
HandlerThread handlerThread;
|
||||
Handler handler;
|
||||
handlerThread = new HandlerThread("ImportAllTracks");
|
||||
handlerThread.start();
|
||||
handler = new Handler(handlerThread.getLooper());
|
||||
handler.post(runner);
|
||||
}
|
||||
|
||||
private final Runnable runner = new Runnable() {
|
||||
public void run() {
|
||||
aquireLocksAndImport();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Makes sure that we keep the phone from sleeping. See if there is a current
|
||||
* track. Acquire a wake lock if there is no current track.
|
||||
*/
|
||||
private void aquireLocksAndImport() {
|
||||
SharedPreferences prefs = activity.getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0);
|
||||
long recordingTrackId = -1;
|
||||
if (prefs != null) {
|
||||
recordingTrackId = prefs.getLong(activity.getString(R.string.recording_track_key), -1);
|
||||
}
|
||||
if (recordingTrackId != -1) {
|
||||
wakeLock = MyTracksUtils.acquireWakeLock(activity, wakeLock);
|
||||
}
|
||||
|
||||
// Now we can safely import everything.
|
||||
importAll();
|
||||
|
||||
// Release the wake lock if we acquired one.
|
||||
// TODO check what happens if we started recording after getting this lock.
|
||||
if (wakeLock != null && wakeLock.isHeld()) {
|
||||
wakeLock.release();
|
||||
Log.i(MyTracksConstants.TAG, "ImportAllTracks: Releasing wake lock.");
|
||||
}
|
||||
|
||||
Log.i(MyTracksConstants.TAG, "ImportAllTracks: Done");
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
if (gpxFileCount == 0) {
|
||||
builder.setMessage(activity.getString(R.string.import_empty, gpxPath + "/"));
|
||||
} else {
|
||||
builder.setMessage(activity.getString(R.string.import_done, importSuccessCount, gpxFileCount,
|
||||
gpxPath + "/"));
|
||||
}
|
||||
builder.setPositiveButton(R.string.ok, null);
|
||||
builder.show();
|
||||
}
|
||||
|
||||
private void makeProgressDialog(final int trackCount) {
|
||||
String importMsg = activity.getString(R.string.tracklist_btn_import_all);
|
||||
progress = new ProgressDialog(activity);
|
||||
progress.setIcon(android.R.drawable.ic_dialog_info);
|
||||
progress.setTitle(importMsg);
|
||||
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
||||
progress.setMax(trackCount);
|
||||
progress.setProgress(0);
|
||||
progress.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Actually import the tracks. This should be called after the wake locks have
|
||||
* been acquired.
|
||||
*/
|
||||
private void importAll() {
|
||||
MyTracksProviderUtils providerUtils = MyTracksProviderUtils.Factory.get(activity);
|
||||
|
||||
if (!fileUtils.isSdCardAvailable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<File> gpxFiles = getGpxFiles();
|
||||
gpxFileCount = gpxFiles.size();
|
||||
if (gpxFileCount == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Log.i(MyTracksConstants.TAG, "ImportAllTracks: Importing: " + gpxFileCount + " tracks.");
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
makeProgressDialog(gpxFileCount);
|
||||
}
|
||||
});
|
||||
|
||||
Iterator<File> gpxFilesIterator = gpxFiles.iterator();
|
||||
for (int currentFileNumber = 0; gpxFilesIterator.hasNext(); currentFileNumber++) {
|
||||
File currentFile = gpxFilesIterator.next();
|
||||
final int status = currentFileNumber;
|
||||
activity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
synchronized (this) {
|
||||
if (progress == null) {
|
||||
return;
|
||||
}
|
||||
progress.setProgress(status);
|
||||
}
|
||||
}
|
||||
});
|
||||
if (importFile(currentFile, providerUtils)) {
|
||||
importSuccessCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (progress != null) {
|
||||
synchronized (this) {
|
||||
progress.dismiss();
|
||||
progress = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to import a GPX file. Returns true on success, issues error
|
||||
* notifications and returns false on failure.
|
||||
*/
|
||||
private boolean importFile(File gpxFile, MyTracksProviderUtils providerUtils) {
|
||||
Log.i(MyTracksConstants.TAG, "ImportAllTracks: importing: " + gpxFile.getName());
|
||||
try {
|
||||
GpxImporter.importGPXFile(new FileInputStream(gpxFile), providerUtils);
|
||||
return true;
|
||||
} catch (FileNotFoundException e) {
|
||||
Log.w(MyTracksConstants.TAG, "GPX file wasn't found/went missing: "
|
||||
+ gpxFile.getAbsolutePath(), e);
|
||||
} catch (ParserConfigurationException e) {
|
||||
Log.w(MyTracksConstants.TAG, "Error parsing file: " + gpxFile.getAbsolutePath(), e);
|
||||
} catch (SAXException e) {
|
||||
Log.w(MyTracksConstants.TAG, "Error parsing file: " + gpxFile.getAbsolutePath(), e);
|
||||
} catch (IOException e) {
|
||||
Log.w(MyTracksConstants.TAG, "Error reading file: " + gpxFile.getAbsolutePath(), e);
|
||||
}
|
||||
Toast.makeText(activity, activity.getString(R.string.import_error, gpxFile.getName()),
|
||||
Toast.LENGTH_LONG).show();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of the GPX Files found in the GPX directory.
|
||||
*/
|
||||
private List<File> getGpxFiles() {
|
||||
List<File> gpxFiles = new LinkedList<File>();
|
||||
File[] gpxFileCandidates = new File(gpxPath).listFiles();
|
||||
if (gpxFileCandidates != null) {
|
||||
for (File file : gpxFileCandidates) {
|
||||
if (!file.isDirectory() && file.getName().endsWith(".gpx")) {
|
||||
gpxFiles.add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return gpxFiles;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@@ -41,7 +42,7 @@ class MenuManager {
|
||||
|
||||
public void onPrepareOptionsMenu(Menu menu, boolean hasRecorded,
|
||||
boolean isRecording, boolean hasSelectedTrack) {
|
||||
menu.findItem(R.id.menu_list_tracks).setEnabled(hasRecorded);
|
||||
menu.findItem(R.id.menu_list_tracks);
|
||||
menu.findItem(R.id.menu_list_markers)
|
||||
.setEnabled(hasRecorded && hasSelectedTrack);
|
||||
menu.findItem(R.id.menu_start_recording)
|
||||
@@ -63,8 +64,8 @@ class MenuManager {
|
||||
return true;
|
||||
}
|
||||
case R.id.menu_list_tracks: {
|
||||
Intent startIntent = new Intent(activity, MyTracksList.class);
|
||||
activity.startActivityForResult(startIntent, MyTracksConstants.SHOW_TRACK);
|
||||
activity.startActivityForResult(new Intent(activity, MyTracksList.class),
|
||||
MyTracksConstants.SHOW_TRACK);
|
||||
return true;
|
||||
}
|
||||
case R.id.menu_list_markers: {
|
||||
@@ -73,20 +74,17 @@ class MenuManager {
|
||||
activity.startActivityForResult(startIntent, MyTracksConstants.SHOW_WAYPOINT);
|
||||
return true;
|
||||
}
|
||||
case R.id.menu_sensor_state: {
|
||||
return startActivity(SensorStateActivity.class);
|
||||
}
|
||||
case R.id.menu_settings: {
|
||||
Intent startIntent = new Intent(activity, MyTracksSettings.class);
|
||||
activity.startActivity(startIntent);
|
||||
return true;
|
||||
return startActivity(MyTracksSettings.class);
|
||||
}
|
||||
case R.id.menu_aggregated_stats: {
|
||||
Intent startIntent = new Intent(activity, AggregatedStatsActivity.class);
|
||||
activity.startActivity(startIntent);
|
||||
return true;
|
||||
return startActivity(AggregatedStatsActivity.class);
|
||||
}
|
||||
case R.id.menu_help: {
|
||||
Intent startIntent = new Intent(activity, WelcomeActivity.class);
|
||||
activity.startActivity(startIntent);
|
||||
return true;
|
||||
return startActivity(WelcomeActivity.class);
|
||||
}
|
||||
case MyTracksConstants.MENU_CLEAR_MAP: {
|
||||
activity.setSelectedTrackId(-1);
|
||||
@@ -95,4 +93,9 @@ class MenuManager {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean startActivity(Class<? extends Activity> activityClass) {
|
||||
activity.startActivity(new Intent(activity, activityClass));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* Copyright 2011 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.
|
||||
*/
|
||||
package com.google.android.apps.mytracks;
|
||||
|
||||
import com.google.android.accounts.Account;
|
||||
import com.google.android.apps.mytracks.io.AuthManager;
|
||||
import com.google.android.apps.mytracks.io.AuthManagerFactory;
|
||||
import com.google.android.apps.mytracks.io.MyMapsFactory;
|
||||
import com.google.android.apps.mytracks.io.mymaps.MapsFacade;
|
||||
import com.google.android.apps.mytracks.io.mymaps.MapsService;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnCreateContextMenuListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* Activity which displays the list of current My Maps tracks for the user.
|
||||
* Returns RESULT_OK if the user picked a map, and returns "mapid" as an extra.
|
||||
*
|
||||
* @author Rodrigo Damazio
|
||||
*/
|
||||
public class MyMapsList extends Activity implements MapsFacade.MapsListCallback {
|
||||
private static final int MENU_OPEN = 0;
|
||||
private static final int MENU_SHARE = 2;
|
||||
private static final int GET_LOGIN = 1;
|
||||
|
||||
private MapsFacade mapsClient;
|
||||
private AuthManager auth;
|
||||
private MyMapsListAdapter listAdapter;
|
||||
|
||||
private int contextPosition;
|
||||
|
||||
private final OnCreateContextMenuListener contextMenuListener =
|
||||
new OnCreateContextMenuListener() {
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v,
|
||||
ContextMenuInfo menuInfo) {
|
||||
AdapterView.AdapterContextMenuInfo info =
|
||||
(AdapterView.AdapterContextMenuInfo) menuInfo;
|
||||
contextPosition = info.position;
|
||||
menu.add(0, MENU_OPEN, 0, R.string.open_map);
|
||||
menu.add(0, MENU_SHARE, 0, R.string.share_map);
|
||||
}
|
||||
};
|
||||
|
||||
private final OnItemClickListener clickListener =
|
||||
new OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View v, int position,
|
||||
long id) {
|
||||
Intent result = new Intent();
|
||||
result.putExtra("mapid", (String) listAdapter.getItem(position));
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
}
|
||||
};
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
|
||||
auth = AuthManagerFactory.getAuthManager(this, GET_LOGIN, null, true,
|
||||
MapsService.getServiceName());
|
||||
|
||||
setContentView(R.layout.list);
|
||||
|
||||
listAdapter = new MyMapsListAdapter(this);
|
||||
|
||||
ListView list = (ListView) findViewById(R.id.maplist);
|
||||
list.setOnItemClickListener(clickListener);
|
||||
list.setOnCreateContextMenuListener(contextMenuListener);
|
||||
list.setAdapter(listAdapter);
|
||||
|
||||
startLogin();
|
||||
}
|
||||
|
||||
private void startLogin() {
|
||||
// Starts in the UI thread.
|
||||
// TODO fix this for non-froyo devices.
|
||||
if (AuthManagerFactory.useModernAuthManager()) {
|
||||
MyTracks.getInstance().getAccountChooser().chooseAccount(
|
||||
MyMapsList.this,
|
||||
new AccountChooser.AccountHandler() {
|
||||
@Override
|
||||
public void handleAccountSelected(Account account) {
|
||||
// Account selection happens in the UI thread.
|
||||
if (account != null) {
|
||||
// The user did not quit and there was a valid google
|
||||
// account.
|
||||
doLogin(account);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
doLogin(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void doLogin(final Account account) {
|
||||
// Starts in the UI thread.
|
||||
auth.doLogin(new Runnable() {
|
||||
public void run() {
|
||||
// Runs in UI thread.
|
||||
mapsClient = MyMapsFactory.newMapsClient(MyMapsList.this, auth);
|
||||
|
||||
startLookup();
|
||||
}
|
||||
}, account);
|
||||
}
|
||||
|
||||
private void startLookup() {
|
||||
// Starts in the UI thread.
|
||||
new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Communication with Maps happens in its own thread.
|
||||
// This will call onReceivedMapListing below.
|
||||
final boolean success = mapsClient.getMapsList(MyMapsList.this);
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Updating the UI when done happens in the UI thread.
|
||||
onLookupDone(success);
|
||||
}
|
||||
});
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceivedMapListing(final String mapId, final String title,
|
||||
final String description, final boolean isPublic) {
|
||||
// Starts in the communication thread.
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// Updating the list with new contents happens in the UI thread.
|
||||
listAdapter.addMapListing(mapId, title, description, isPublic);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void onLookupDone(boolean success) {
|
||||
// Starts in the UI thread.
|
||||
findViewById(R.id.loading).setVisibility(View.GONE);
|
||||
if (!success) {
|
||||
findViewById(R.id.failed).setVisibility(View.VISIBLE);
|
||||
}
|
||||
TextView emptyView = (TextView) findViewById(R.id.mapslist_empty);
|
||||
ListView list = (ListView) findViewById(R.id.maplist);
|
||||
list.setEmptyView(emptyView);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode,
|
||||
Intent data) {
|
||||
if (requestCode == GET_LOGIN) {
|
||||
auth.authResult(resultCode, data);
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemSelected(int featureId, MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case MENU_OPEN:
|
||||
clickListener.onItemClick(null, null, contextPosition, 0);
|
||||
return true;
|
||||
case MENU_SHARE:
|
||||
Intent shareIntent = new Intent(Intent.ACTION_SEND);
|
||||
shareIntent.setType("text/plain");
|
||||
shareIntent.putExtra(Intent.EXTRA_SUBJECT,
|
||||
getText(R.string.share_map_subject));
|
||||
String[] listItem = (String[]) listAdapter.getMapListingArray(contextPosition);
|
||||
shareIntent.putExtra(Intent.EXTRA_TEXT, String.format(
|
||||
getText(R.string.share_map_body_format).toString(),
|
||||
listItem[1],
|
||||
MapsService.buildMapUrl(listItem[0])));
|
||||
startActivity(Intent.createChooser(shareIntent,
|
||||
getText(R.string.share_map).toString()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||