Add a missing string for "Elevation" to the French strings.xml file.

This commit is contained in:
ob
2010-05-24 18:23:39 +01:00
commit 2b1c1cd052
191 changed files with 29192 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
syntax:glob
*/bin
*/gen/**
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<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="output" path="bin"/>
</classpath>
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyTracks</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
+99
View File
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.maps.mytracks"
android:versionCode="15"
android:versionName="1.0.14">
<application android:icon="@drawable/arrow_icon"
android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<provider android:name="com.google.android.apps.mytracks.content.MyTracksProvider"
android:multiprocess="true"
android:authorities="com.google.android.maps.mytracks" />
<activity android:name="com.google.android.apps.mytracks.MyTracks"
android:label="My Tracks"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:mimeType="application/gpx+xml" />
<data android:mimeType="application/gpx" />
<data android:mimeType="application/vnd.google-earth.gpx" />
<data android:mimeType="application/vnd.google-earth.gpx+xml" />
</intent-filter>
</activity>
<activity android:name="com.google.android.apps.mytracks.MyTracksMap"
android:label="MyTracks" />
<activity android:name="com.google.android.apps.mymaps.MyMapsList"
android:label="@string/map_list_title"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale">
</activity>
<activity android:name="com.google.android.apps.mytracks.MyTracksList"
android:label="Recorded Tracks">
</activity>
<activity android:name="com.google.android.apps.mytracks.MyTracksWaypointsList"
android:label="Recorded Waypoints">
</activity>
<activity android:name="com.google.android.apps.mytracks.MyTracksDetails"
android:label="@string/trackdetails_title" />
<activity android:name="com.google.android.apps.mytracks.MyTracksWaypointDetails"
android:label="@string/waypointdetails_title" />
<activity android:name="com.google.android.apps.mytracks.MyTracksSettings"
android:label="@string/mytracks_settings" />
<activity android:name="com.google.android.apps.mytracks.StatsActivity"
android:label="@string/statistics"/>
<activity android:name="com.google.android.apps.mytracks.ChartActivity"
android:label="@string/elevation_label"/>
<activity android:name="com.google.android.apps.mytracks.WelcomeActivity"
android:label="@string/welcome"/>
<service android:name="com.google.android.apps.mytracks.services.TrackRecordingService"
android:process=":trackrecord"
android:label="Track Recording Service"
android:icon="@drawable/arrow_320"
android:enabled="true" />
</application>
<!-- Permissions for recording tracks and showing maps -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 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.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" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-sdk android:minSdkVersion="3"/>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
</manifest>
+22
View File
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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=""/>
<intAttribute key="com.android.ide.eclipse.adt.delay" value="0"/>
<booleanAttribute key="com.android.ide.eclipse.adt.nobootanim" value="false"/>
<intAttribute key="com.android.ide.eclipse.adt.speed" value="0"/>
<booleanAttribute key="com.android.ide.eclipse.adt.target" value="false"/>
<booleanAttribute key="com.android.ide.eclipse.adt.wipedata" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/MyTracks"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="MyTracks"/>
</launchConfiguration>
+62
View File
@@ -0,0 +1,62 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Tracks Welcome</title>
</head>
<body>
<div>
<img src="file:///android_asset/welcome.png" />
<p>
<b>What is My Tracks?</b><br>
<i>My Tracks</i> is an application for your Android powered phone. With <i>My Tracks</i> you can record GPS tracks and visualize your hiking, running, biking or any other activity while watching live performance statistics. <i>My Tracks</i> makes it easy to archive your training history with <i>Google Docs</i> and <i>Google My Maps</i>, and share your activities with friends and the world.<br><br>
<b>How do I see the map, statistics and elevation profile?</b><br>
Touch the map. Left and right arrows will appear. Tap on these arrows to cycle between the map view, the track statistics view, and the elevation profile.<br> <br>
<b>Why does the application sometimes display <i>Waiting for a better GPS fix. Make sure the sky is visible</i>?</b><br>
For <i>My Tracks</i> to work, your phone needs to be in line-of-sight contact with the GPS satellites orbiting the earth. If line-of-sight is obstructed by trees, buildings or canyon walls, you may not get an accurate fix. If you see the message Waiting for a better GPS fix, wait a minute or two. If your device does not achieve a fix, move to an area clear of obstructions and try again.
<br> <br>
<b>How do I send my tracks to <i>Google My Maps</i> and <i>Google Docs</i>?</b><br>
Tap the <i>Options</i> button located at the bottom right corner of the map and select <i>Send to Google...</i> Then choose to send the track to <i>Google My Maps</i> and/or <i>Google Docs</i>. The first time you do this, you may be prompted to log into your Google account. By default your track will be uploaded to a new <i>My Map</i> that will be created in your account. You can opt to add your track to an existing <i>My Map</i> if you prefer. In that case you will be asked to choose a <i>My Map</i> from your account. You can view and edit all of your <i>My Maps</i> by going to maps.google.com, signing in, and clicking on the <i>My Maps</i> tab.<br> <br>
<b>How do I share tracks with friends and the rest of the world? </b><br>
After recording a track, press the <i>Options</i> button on the bottom right of the map and then select <i>Share with friends...</i> Select how you want to share the track: a) as a link to a <i>Google My Map</i> (you will be prompted to upload the track to <i>Google My Maps</i> if you have not already done so), b) as a GPX file in an e-mail attachment, or c) as a KML file in an e-mail attachment. You can also send an e-mail with a link to your <i>My Map</i> by going to maps.google.com on your computer. Select the map and then click <i>Link</i> on the right side of the Google Maps web site.<br> <br>
<b>Can I view other people's tracks on my Android phone?</b><br>
Yes. Use the <i>Google My Maps Editor</i> application, available from the <i>Android Market</i>, to view tracks that have been uploaded to <a href="http://www.google.com/url?sa=D&amp;q=http%3A%2F%2Fmaps.google.com">maps.google.com</a> by you or your friends. If you have received an e-mail invitation to view a map, you can click on the link contained in the e-mail to view the map on your Android phone, assuming that <i>Google My Maps Editor</i> is installed on the phone.<br> <br>
<b>What are way point markers?</b><br>
Way point markers are used to annotate a place. For example if you are recording a track and you are close to an interesting place, let's say a mountain top, press <i>MENU | Markers | Insert Way point</i> to insert a way point marker at that location. Type a name and description for the place. Once you send your track to Google a place marker will show up on your map. People who view your maps can read your description and learn about this place.<br> <br>
<b>What are statistics markers?</b><br>
Let's say you are recording a bike ride up a hill. You will be able to see the total time and distance for the trip, but wouldn't it be good to know how long the climbing part took and how much altitude has been gained? That's what statistics marker are for. Insert a statistics marker once at the bottom of the hill, and once at the top. Now you will be able to view track statistics for each segment of your ride. Each marker has the statistic for the segment up to the marker. Note: To insert a statistics marker simply press the track ball (while the <i>My Tracks</i> application is in the foreground), or use <i>MENU | Markers | Insert Statistics</i>.<br> <br>
<b>Do I need a cell signal and data connection to use <i>My Tracks</i>?</b><br>
A cell signal or data connection is not required to record GPS tracks. However, if there is no data connection, you will not be able to see satellite imagery or a map. Instead, you will see a grey screen or partial map. Tracks, represented as simple lines, can still be recorded even if there is no data connection.<br> <br>
<b>How long does the battery last when recording tracks?</b><br>
The GPS receiver draws a relatively high amount of power, so a fully charged battery typically survives less than 5 hours. Battery life depends on many factors, including signal strength, battery freshness, and tasks running in parallel. Switching off some or all of the phone's radios will lengthen battery life. Putting the phone into Airplane mode will yield the best results.<br> <br>
<b>What can I do with tracks after saving them as GPX or KML files to the SD card or sharing such files with friends?</b><br> GPX and KML are standard file formats for storing data from GPS receivers. You can use Google Earth or similar applications to visualize and edit GPS tracks. Go to http://earth.google.com to download the latest version of Google Earth for free.<br> <br>
<b>How precise are the recorded tracks?</b><br>
Under optimal conditions the location error can be +/- 20 feet (6 meters). However, precision depends on the quality of the GPS signal. Your phone needs to be in line-of-sight contact with the GPS satellites orbiting the earth. The signal will be best in open areas free of trees, buildings, canyon walls and other obstructions. The blue circle around the orange location arrow indicates estimated precision. (You may need to zoom in or out to see the circle.) If the precision is too low, a message at the top of the screen will alert you and tracks will not be recorded. You can change the minimum required precision in the <i>My Tracks</i> Settings (See: <i>MENU | Settings | Pause recording if accuracy drops below</i>).<br> <br>
<b> How precise is the elevation measurement?</b><br>
GPS receivers measure elevations much less precisely than latitude and longitude. Elevations can sometimes be off by a few hundred feet, though relative changes are tracked more precisely. To get a good elevation measurement make sure that you have a strong GPS signal (good sky visibility) and wait a few minutes for the elevation to settle to a stable value.<br> <br>
<b>Can I edit the tracks and correct them for inaccuracies?</b><br>
Once you upload tracks to <i>Google My Maps</i>, you can move, delete or insert individual track points as desired.<br> <br>
<b>Why do very long tracks split into multiple segments upon sending them to <i>Google My Maps</i>? </b><br>
Tracks on maps.google.com are limited to 500 points or less. As a result, long tracks are split into multiple pieces upon upload to <i>Google My Maps</i>.<br><br>
<b>How do I delete all tracks from my phone?</b><br> Press the MENU button and select List tracks. Tap the Delete all tracks button. This permanently deletes the recorded GPS tracks from memory. If you have saved tracks to the SD card, you must delete them separately. Tracks uploaded to <i>Google My Maps</i> and <i>Google Docs</i> must also be deleted separately.<br> <br>
<b>Who can see maps I send to maps.google.com?</b><br> By default new maps that you send to maps.google.com will be publicly visible. To prevent newly created maps from being public, go to the <i>My Tracks</i> settings screen and deselect the check box labeled <i>Make maps public on maps.google.com</i>. You can change the visibility of existing maps through the maps.google.com web site or using the <i>Google My Maps Editor</i> application from your Android phone.<br> <br> <br><br>
</div>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

+13
View File
@@ -0,0 +1,13 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=Google Inc.:Google APIs:7
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 783 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 743 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+27
View File
@@ -0,0 +1,27 @@
<?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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false"
android:drawable="@drawable/btn_arrow_left_default" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_arrow_left_press" />
<item android:drawable="@drawable/btn_arrow_left_default" />
</selector>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

+27
View File
@@ -0,0 +1,27 @@
<?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.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false"
android:drawable="@drawable/btn_arrow_right_default" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_arrow_right_press" />
<item android:drawable="@drawable/btn_arrow_right_default" />
</selector>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

+19
View File
@@ -0,0 +1,19 @@
<?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.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#ff999999" android:endColor="#ff777777" android:angle="270"/>
</shape>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

+126
View File
@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2008 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.
-->
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:stretchColumns="2">
<TableRow>
<ImageView
android:layout_column="1"
android:src="@drawable/arrow_icon" />
<LinearLayout
android:layout_column="2"
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/app_name"
android:textSize="30sp" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_copyright_message"
android:textSize="15sp" />
</LinearLayout>
</TableRow>
<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_team"
android:textSize="20sp" />
<LinearLayout
android:layout_column="2"
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_dylan"
android:textSize="20sp" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_leif"
android:textSize="20sp" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_rdamazio"
android:textSize="20sp" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_sandor"
android:textSize="20sp" />
</LinearLayout>
</TableRow>
<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_version"
android:textSize="20sp" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/version"
android:textSize="20sp" />
</TableRow>
<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_support"
android:textSize="20sp" />
<TextView
android:autoLink="web"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/about_weburl"
android:textSize="18sp" />
</TableRow>
<View
android:layout_height="4dip" />
</TableLayout>
+133
View File
@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/screen"
android:layout_width="200dip"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/chart_settings"
android:textSize="20dip"
android:textColor="#fff"
android:layout_marginLeft="10dip"/>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:layout_marginTop="5dip"
android:layout_marginLeft="5dip">
<TableRow>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dip">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:src="@drawable/x_axis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/x_axis"
android:textSize="20dip" />
</LinearLayout>
<RadioGroup android:id="@+id/chart_settings_x"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/chart_settings_by_distance"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/by_distance"/>
<RadioButton android:id="@+id/chart_settings_by_time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/by_time"/>
</RadioGroup>
</LinearLayout>
</TableRow>
<TableRow>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="10dip">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:src="@drawable/y_axis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/y_axis"
android:textSize="20dip" />
</LinearLayout>
<CheckBox android:id="@+id/chart_settings_elevation"
android:checked="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/elevation"/>
<CheckBox android:id="@+id/chart_settings_speed"
android:checked="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/speed"/>
</LinearLayout>
</TableRow>
</TableLayout>
</ScrollView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:padding="3dip">
<Button android:id="@+id/chart_settings_cancel"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/cancel"
android:textSize="14dip"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/chart_settings_ok"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/ok"
android:textSize="14dip"/>
</LinearLayout>
</LinearLayout>
+103
View File
@@ -0,0 +1,103 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apl/res/com.google.android.maps"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip">
<TextView android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#fff"
android:text="@string/select_map_message"
android:layout_weight="0"/>
</LinearLayout>
<ListView android:id="@+id/maplist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView android:id="@+id/mapslist_empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center"
android:padding="3dip"
android:textSize="16dip"
android:textColor="#c00"
android:textStyle="bold"
android:text="@string/mapslist_no_maps_available"
android:visibility="gone"/>
<TextView android:id="@+id/failed"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:padding="3dip"
android:textSize="16dip"
android:textColor="#c00"
android:textStyle="bold"
android:text="@string/maps_list_failed"
android:visibility="gone"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip">
<LinearLayout android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="3dip"
android:layout_gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<ProgressBar
android:layout_height="20dip"
android:layout_width="20dip"
android:layout_gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="3dip"
android:textSize="16dip"
android:textColor="#fff"
android:textStyle="bold"
android:text="@string/maps_list_loading"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
+40
View File
@@ -0,0 +1,40 @@
<?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.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:orientation="vertical">
<TextView android:id="@+id/maplistitem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="9pt"
android:textStyle="bold"
android:textColor="#fff"
android:singleLine="true"/>
<TextView android:id="@+id/maplistdesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="8pt"
android:singleLine="true"/>
<TextView android:id="@+id/maplistpublic"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="7pt"
android:singleLine="true"/>
</LinearLayout>
+88
View File
@@ -0,0 +1,88 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="10dip"
android:background="#c000">
<TextView android:text="@string/trackdetails_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:id="@+id/trackdetails_icon"
android:src="@drawable/track"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="4dip"
android:paddingRight="4dip"/>
<EditText android:id="@+id/trackdetails_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:autoText="true"
android:capitalize="words"
android:selectAllOnFocus="true"/>
</LinearLayout>
<TextView android:text="@string/trackdetails_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<AutoCompleteTextView android:id="@+id/trackdetails_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
<TextView android:text="@string/trackdetails_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<EditText android:id="@+id/trackdetails_description"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:singleLine="false"
android:autoText="true"
android:capitalize="sentences"
android:selectAllOnFocus="true"
android:maxLines="50"
android:gravity="top"
android:layout_weight="1"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:padding="3dip">
<Button android:id="@+id/trackdetails_cancel"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/cancel"
android:textSize="14dip"/>
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/trackdetails_save"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/save"
android:textSize="14dip"/>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,58 @@
<?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:id="@+id/elevation_root"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<LinearLayout android:id="@+id/elevation_chart"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
<RelativeLayout android:id="@+id/elevation_zoom_layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
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"/>
</RelativeLayout>
<LinearLayout android:id="@+id/elevation_busypane"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0"
android:padding="3dip"
android:visibility="gone">
<ProgressBar
android:layout_weight="1"
android:layout_height="0dip"
android:layout_width="wrap_content"
android:maxWidth="80dip"
android:maxHeight="80dip"
android:minWidth="80dip"
android:minHeight="80dip"
android:layout_gravity="center"/>
</LinearLayout>
</RelativeLayout>
+83
View File
@@ -0,0 +1,83 @@
<?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:id="@+id/screen"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:apiKey="0TXoRmxTinrZKQ9JSazj-9A34XX6_lXsRvTpXWA"/>
<!-- corresponding certificate md5: 81:DF:A2:63:53:C7:6B:1E:6C:24:62:D4:91:1C:36:3A -->
<LinearLayout android:id="@+id/messagepane"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip"
android:visibility="gone">
<TextView android:id="@+id/messagetext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#fff"
android:text="@string/wait_for_fix"
android:layout_weight="0"/>
</LinearLayout>
<LinearLayout android:id="@+id/busypane"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0"
android:padding="3dip"
android:visibility="gone">
<ProgressBar
android:layout_weight="1"
android:layout_height="0dip"
android:layout_width="wrap_content"
android:maxWidth="80dip"
android:maxHeight="80dip"
android:minWidth="80dip"
android:minHeight="80dip"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:paddingTop="10dip">
<LinearLayout
android:layout_width = "wrap_content"
android:layout_height= "wrap_content"
android:layout_weight="1"/>
<ImageButton
android:id="@+id/showOptions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:visibility="visible"
android:src="@android:drawable/ic_menu_more"/>
</LinearLayout>
</RelativeLayout>
+66
View File
@@ -0,0 +1,66 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apl/res/com.google.android.apps.mytracks"
android:id="@+id/tracklist_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip">
<TextView android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#fff"
android:text="@string/tracklist_pick_one"
android:layout_weight="0"/>
</LinearLayout>
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/tracklist_btn_export_all"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="left|top"
android:text="@string/tracklist_btn_export_all"
android:textSize="14dip"/>
<Button android:id="@+id/tracklist_btn_delete_all"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="left|top"
android:text="@string/tracklist_btn_delete_all"
android:textSize="14dip"/>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,83 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="2dip"
android:paddingBottom="2dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView android:id="@+id/trackdetails_item_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="4dip"
android:paddingRight="2dip"
android:paddingTop="5dip"
android:src="@drawable/track"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/trackdetails_item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:singleLine="true"
android:text="Track name"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView android:id="@+id/trackdetails_item_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:singleLine = "true"
android:text="Activity type"
android:textAppearance="?android:attr/textAppearanceSmall"/>
</LinearLayout>
</LinearLayout>
<TextView android:id="@+id/trackdetails_item_time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:singleLine="true"
android:textColor="#fff"
android:text="Start time"
android:textAppearance="?android:attr/textAppearanceSmall"/>
<TextView android:id="@+id/trackdetails_item_stats"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:singleLine="true"
android:textColor="#0f0"
android:text="Distance and total time"
android:textAppearance="?android:attr/textAppearanceSmall"/>
<TextView android:id="@+id/trackdetails_item_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft = "6dip"
android:singleLine = "false"
android:text="Description"
android:textAppearance="?android:attr/textAppearanceSmall"/>
</LinearLayout>
@@ -0,0 +1,70 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="2dip"
android:paddingBottom="2dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView android:id="@+id/waypointslist_item_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:src="@drawable/ylw_pushpin"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/waypointslist_item_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:singleLine = "true"
android:text="Name"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView android:id="@+id/waypointslist_item_time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft = "6dip"
android:singleLine = "true"
android:textColor = "#fff"
android:text="date and time"
android:textAppearance="?android:attr/textAppearanceSmall"/>
<TextView android:id="@+id/waypointslist_item_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft = "6dip"
android:singleLine = "true"
android:textColor="#0f0"
android:text="category"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,129 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/screen"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_title"
android:textSize="20dip"
android:textColor="#fff"
android:layout_marginLeft="10dip"/>
</LinearLayout>
<ScrollView android:id="@+id/sendtogoogle_scrollview"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:layout_marginTop="5dip"
android:layout_marginLeft="5dip">
<TableRow>
<ImageView android:src="@drawable/mymaps_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_mymaps"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_google_mymaps"
android:textSize="20dip"
android:checked="true"/>
<RadioGroup android:id="@+id/sendtogoogle_group_mymaps"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/sendtogoogle_create_new_map"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_create_new_map"/>
<RadioButton android:id="@+id/sendtogoogle_pick_existing_map"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_pick_existing_map"/>
</RadioGroup>
</LinearLayout>
</TableRow>
<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_docs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_google_docs"
android:textSize="20dip"
android:checked="true"/>
<RadioGroup android:id="@+id/sendtogoogle_group_docs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone">
<RadioButton android:id="@+id/sendtogoogle_send_stats"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_send_stats"/>
<RadioButton android:id="@+id/sendtogoogle_send_stats_and_points"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/sendtogoogle_send_stats_and_points"
android:enabled="false"/>
</RadioGroup>
</LinearLayout>
</TableRow>
</TableLayout>
</ScrollView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:padding="3dip">
<Button android:id="@+id/sendtogoogle_cancel"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/cancel"
android:textSize="14dip"/>
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/sendtogoogle_send_now"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/sendtogoogle_send_now"
android:textSize="14dip"/>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,509 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#c000">
<ScrollView
android:id="@+id/scrolly"
android:layout_height="0dip"
android:layout_weight="1"
android:layout_width="fill_parent"
android:scrollbarStyle="insideInset">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView android:text="@string/waypointdetails_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:id="@+id/waypointdetails_icon"
android:src="@drawable/ylw_pushpin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="4dip"
android:paddingRight="2dip"/>
<EditText android:id="@+id/waypointdetails_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:autoText="true"
android:capitalize="words"
android:selectAllOnFocus="true"/>
</LinearLayout>
<LinearLayout android:id="@+id/waypointdetails_description_layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:visibility="visible"
android:layout_weight="1">
<TextView android:id="@+id/waypointdetails_category_label"
android:text="@string/waypointdetails_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<AutoCompleteTextView android:id="@+id/waypointdetails_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"/>
<TextView android:text="@string/waypointdetails_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<EditText android:id="@+id/waypointdetails_description"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:singleLine="false"
android:autoText="true"
android:capitalize="sentences"
android:selectAllOnFocus="true"
android:minLines="5"
android:maxLines="50"
android:gravity="top"
android:layout_weight="1"/>
</LinearLayout>
<TableLayout android:id="@+id/waypoint_stats"
android:visibility="gone"
android:padding="2dip"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:stretchColumns="1,4">
<!-- Total distance and max speed -->
<TableRow
android:padding="1dip">
<TextView
android:id="@+id/total_distance_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/total_distance_label" />
<TextView
android:id="@+id/max_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/max_speed_label" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:gravity="right"
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" />
<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" />
<!-- 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" />
<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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
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" />
<TextView
android:background="@color/black"
android:layout_height="3dip"
android:layout_width="fill_parent" />
<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" />
</LinearLayout>
</TableRow>
<!-- Total time and average speed -->
<TableRow>
<TextView
android:id="@+id/track_time_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/total_time_label" />
<TextView
android:id="@+id/average_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/average_speed_label" />
</TableRow>
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
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" />
<TextView
android:background="@color/black"
android:layout_height="3dip"
android:layout_width="fill_parent" />
<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" />
</LinearLayout>
</TableRow>
<!-- Moving time and average moving speed -->
<TableRow>
<TextView
android:id="@+id/moving_time_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/moving_time_label" />
<TextView
android:id="@+id/average_moving_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/average_moving_speed_label" />
</TableRow>
<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_width="fill_parent"
android:layout_span="2"
android:text="@string/unknown"
android:textColor="@color/stat_label_text"
android:textSize="40sp" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
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" />
<TextView
android:background="@color/black"
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" />
</LinearLayout>
</TableRow>
<!-- Elevation and elevation gain -->
<TableRow>
<TextView
android:id="@+id/elevation_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/elevation_label" />
<TextView
android:id="@+id/elevation_gain_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/elevation_gain_label" />
</TableRow>
<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" />
<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"/>
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<TextView
android:gravity="left"
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" />
</TableRow>
<!-- Min and max elevation -->
<TableRow>
<TextView
android:id="@+id/min_elevation_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/min_elevation_label" />
<TextView
android:id="@+id/max_elevation_label"
android:layout_column="4"
android:layout_span="3"
android:text="@string/max_elevation_label" />
</TableRow>
<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" />
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<TextView
android:id="@+id/max_elevation_unit_label"
android:gravity="left"
android:layout_column="5"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:text="@string/feet"
android:textColor="@color/stat_label_text" />
</TableRow>
<!-- Min and max grade -->
<TableRow>
<TextView
android:id="@+id/min_grade_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/min_grade_label" />
<TextView
android:id="@+id/max_grade_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/max_grade_label" />
</TableRow>
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:padding="3dip">
<Button android:id="@+id/waypointdetails_cancel"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/cancel"
android:textSize="14dip"/>
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/waypointdetails_save"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/save"
android:textSize="14dip"/>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,67 @@
<?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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apl/res/com.google.android.apps.mytracks"
android:id="@+id/waypointslist_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip">
<TextView android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="#fff"
android:text="@string/waypointslist_pick_one"
android:layout_weight="0"/>
</LinearLayout>
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bar"
android:layout_weight="0"
android:padding="3dip">
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/waypointslist_btn_insert_statistics"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="left|top"
android:text="@string/waypointslist_btn_insert_statistics"
android:textSize="14dip"/>
<Button android:id="@+id/waypointslist_btn_insert_waypoint"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="left|top"
android:text="@string/waypointslist_btn_insert_waypoint"
android:textSize="14dip"/>
</LinearLayout>
</LinearLayout>
+542
View File
@@ -0,0 +1,542 @@
<?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:id="@+id/stats_root"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="fill_parent">
<ScrollView
android:id="@+id/scrolly"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<TableLayout
android:id="@+id/stats_table"
android:layout_height="wrap_content"
android:stretchColumns="1,4"
android:layout_width="fill_parent">
<!-- Layout the speed large on it's own line. -->
<TableRow>
<TextView
android:id="@+id/speed_label"
android:layout_span="5"
android:text="@string/speed" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:gravity="right"
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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
android:orientation="vertical">
<TextView
android:layout_height="fill_parent"
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" />
<TextView
android:background="@color/black"
android:layout_height="3dip"
android:layout_width="fill_parent" />
<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" />
</LinearLayout>
</TableRow>
<!-- Total distance and max speed -->
<TableRow
android:padding="1dip">
<TextView
android:id="@+id/total_distance_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/total_distance_label" />
<TextView
android:id="@+id/max_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/max_speed_label" />
</TableRow>
<TableRow
android:background="@color/stat_label_background">
<TextView
android:gravity="right"
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" />
<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" />
<!-- 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" />
<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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
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" />
<TextView
android:background="@color/black"
android:layout_height="3dip"
android:layout_width="fill_parent" />
<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" />
</LinearLayout>
</TableRow>
<!-- Total time and average speed -->
<TableRow>
<TextView
android:id="@+id/track_time_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/total_time_label" />
<TextView
android:id="@+id/average_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/average_speed_label" />
</TableRow>
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
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" />
<TextView
android:background="@color/black"
android:layout_height="3dip"
android:layout_width="fill_parent" />
<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" />
</LinearLayout>
</TableRow>
<!-- Moving time and average moving speed -->
<TableRow>
<TextView
android:id="@+id/moving_time_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/moving_time_label" />
<TextView
android:id="@+id/average_moving_speed_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/average_moving_speed_label" />
</TableRow>
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<LinearLayout
android:gravity="bottom"
android:layout_column="5"
android:layout_width="wrap_content"
android:lines="1"
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" />
<TextView
android:background="@color/black"
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" />
</LinearLayout>
</TableRow>
<!-- Elevation and elevation gain -->
<TableRow>
<TextView
android:id="@+id/elevation_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/elevation_label" />
<TextView
android:id="@+id/elevation_gain_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/elevation_gain_label" />
</TableRow>
<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" />
<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"/>
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<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" />
</TableRow>
<!-- Min and max elevation -->
<TableRow>
<TextView
android:id="@+id/min_elevation_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/min_elevation_label" />
<TextView
android:id="@+id/max_elevation_label"
android:layout_column="4"
android:layout_span="3"
android:text="@string/max_elevation_label" />
</TableRow>
<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" />
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
<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" />
</TableRow>
<!-- Min and max grade -->
<TableRow>
<TextView
android:id="@+id/min_grade_label"
android:layout_column="1"
android:layout_span="3"
android:text="@string/min_grade_label" />
<TextView
android:id="@+id/max_grade_label"
android:layout_column="4"
android:layout_span="2"
android:text="@string/max_grade_label" />
</TableRow>
<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" />
<TextView
android:background="@color/black"
android:layout_column="3"
android:layout_marginBottom="-9dip"
android:layout_marginTop="-9dip"
android:layout_width="5dip"
android:textSize="40sp" />
<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" />
</TableRow>
<!-- Latitude and Longitude -->
<TableRow>
<TextView
android:layout_column="1"
android:layout_span="3"
android:text="@string/latitude_label" />
<TextView
android:layout_column="4"
android:layout_span="2"
android:text="@string/longitude_label" />
</TableRow>
<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" />
<TextView
android:background="@color/black"
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" />
</TableRow>
</TableLayout>
</ScrollView>
<LinearLayout android:id="@+id/stats_busypane"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0"
android:padding="3dip"
android:visibility="gone">
<ProgressBar
android:layout_weight="1"
android:layout_height="0dip"
android:layout_width="wrap_content"
android:maxWidth="80dip"
android:maxHeight="80dip"
android:minWidth="80dip"
android:minHeight="80dip"
android:layout_gravity="center"/>
</LinearLayout>
</RelativeLayout>
+53
View File
@@ -0,0 +1,53 @@
<?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.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<WebView
android:id="@+id/welcome_web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@drawable/list_bar"
android:padding="3dip">
<Button
android:id="@+id/welcome_about"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="left"
android:text="@string/welcome_about"
android:textSize="14dip" />
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/welcome_read_later"
android:layout_width="wrap_content"
android:layout_height="48dip"
android:layout_gravity="right"
android:text="@string/welcome_read_later"
android:textSize="14dip" />
</LinearLayout>
</LinearLayout>
+43
View File
@@ -0,0 +1,43 @@
End User License Agreement
By downloading, installing or using this application or any portion thereof ("Application"), you agree to the following terms and conditions (the "Terms and Conditions").
1. USE OF APPLICATION
a. Google grants you the non-exclusive, non-transferable, limited right and license to install and use this Application solely and exclusively for your personal use.
b. You may not use the Application in any manner that could damage, disable, overburden, or impair the Application (or servers or networks connected to the Application), nor may you use the Application in any manner that could interfere with any other party's use and enjoyment of the Application (or servers or networks connected to the Application).
c. You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) your use of the Application, any breach of your obligations under the Terms and Conditions, and for the consequences (including any loss or damage which Google may suffer) of any such breach.
2. PROPRIETARY RIGHTS
You acknowledge that (a) the Application contains proprietary and confidential information that is protected by applicable intellectual property and other laws, and (b) Google and/or third parties own all right, title and interest in and to the Application and content, excluding content provided by you, that may be presented or accessed through the Application, including without limitation all Intellectual Property Rights therein and thereto. "Intellectual Property Rights" means any and all rights existing from time to time under patent law, copyright law, trade secret law, trademark law, unfair competition law, and any and all other proprietary rights, and any and all applications, renewals, extensions and restorations thereof, now or hereafter in force and effect worldwide. You agree that you will not, and will not allow any third party to, (i) copy, sell, license, distribute, transfer, modify, adapt, translate, prepare derivative works from, decompile, reverse engineer, disassemble or otherwise attempt to derive source code from the Application or content that may be presented or accessed through the Application for any purpose, unless otherwise permitted, (ii) take any action to circumvent or defeat the security or content usage rules provided, deployed or enforced by any functionality (including without limitation digital rights management functionality) contained in the Application, (iii) use the Application to access, copy, transfer, transcode or retransmit content in violation of any law or third party rights, or (iv) remove, obscure, or alter Google's or any third party's copyright notices, trademarks, or other proprietary rights notices affixed to or contained within or accessed in conjunction with or through the Application.
3. GOOGLE TERMS OF SERVICE AND PRIVACY POLICY
a. Google’s Privacy Policy (located at http://www.google.com/privacypolicy.html) explains how Google treats your information and protects your privacy when you use the Application. You agree to the use of your data in accordance with Google’s privacy policies.
b. The Application may contain features that are used in conjunction with Google’s search and other services. Accordingly, your use of such features of the Application is also governed by Google’s Terms of Service located at http://www.google.com/terms_of_service.html, Google’s Privacy Policy located at http://www.google.com/privacypolicy.html, as well as any applicable Google Service-specific Terms of Service and Privacy Policy, which may be updated from time to time and without notice.
4. U.S. GOVERNMENT RESTRICTED RIGHTS
This Application, related materials and documentation have been developed entirely with private funds. If the user of the Application is an agency, department, employee, or other entity of the United States Government, the use, duplication, reproduction, release, modification, disclosure, or transfer of the Application, including technical data or manuals, is restricted by the terms, conditions and covenants contained in these Terms and Conditions. In accordance with Federal Acquisition Regulation 12.212 for civilian agencies and Defense Federal Acquisition Regulation Supplement 227.7202 for military agencies, use of the Application is further restricted by these Terms and Conditions.
5. EXPORT RESTRICTIONS
The Application may be subject to export controls or restrictions by the United States or other countries or territories. You agree to comply with all applicable U.S. and international export laws and regulations. These laws include restrictions on destinations, end users, and end use.
6. TERMINATION
These Terms and Conditions will continue to apply until terminated by either you or Google as set forth below. You may terminate these Terms and Conditions at any time by permanently deleting the Application from your mobile device in its entirety. Your rights automatically and immediately terminate without notice from Google or any Third Party if you fail to comply with any provision of these Terms and Conditions. In such event, you must immediately delete the Application.
7. INDEMNITY
To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from your use of the Application, including your downloading, installation, or use of the Application, or your violation of these Terms and Conditions.
8. DISCLAIMER OF WARRANTIES
A. You expressly understand and agree that your use of the application is at your sole discretion and risk and that the application is provided “as is” and “as available” without warranty of any kind.
B. You are solely responsible for any damage to your mobile device, or other device, or loss of data that results from such use.
C. Google further expressly disclaims all warranties and conditions of any kind, whether express or implied, including, but not limited to the implied warranties and conditions of merchantability, fitness for a particular purpose and non-infringement, with respect to the application.
D. The application is not intended for use in the operation of nuclear facilities, life support systems, emergency communications, aircraft navigation or communication systems, air traffic control systems, or any other activities in which the failure of the application could lead to death, personal injury, or severe physical or environmental damage.
9. LIMITATION OF LIABILITY
You expressly understand and agree that google, its subsidiaries and affiliates, and its licensors are not liable to you under any theory of liability for any direct, indirect, incidental, special consequential or exemplary damages that may be incurred by you through your use of the application, including any loss of data or damage to your mobile device, whether or not google or its representatives have been advised of or should have been aware of the possibility of any such losses arising.
10. MISCELLANEOUS
a. These Terms and Conditions constitute the entire Agreement between you and Google relating to the Application and govern your use of the Application, and completely replace any prior or contemporaneous agreements between you and Google regarding the Application.
b. The failure of Google to exercise or enforce any right or provision of these Terms and Conditions does not constitute a waiver of such right or provision, which will still be available to Google.
c. If any court of law, having the jurisdiction to decide on this matter, rules that any provision of these Terms and Conditions is invalid, then that provision will be removed from the Terms and Conditions without affecting the rest of the Terms and Conditions. The remaining provisions of these Terms and Conditions will continue to be valid and enforceable.
d. The rights granted in these Terms and Conditions may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google are permitted to delegate their responsibilities or obligations under these Terms and Conditions without the prior written approval of the other party.
e. These Terms and Conditions and your relationship with Google under these Terms and Conditions will be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from these Terms and Conditions. Notwithstanding this, you agree that Google will still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
Binary file not shown.
+284
View File
@@ -0,0 +1,284 @@
<?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>Off</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 (empfohlen)</item>
<item>10 m</item>
<item>100 m</item>
</string-array>
<string-array name="min_recording_distance_options_ft">
<item>3 Fuß</item>
<item>6 Fuß</item>
<item>10 Fuß</item>
<item>13 Fuß</item>
<item>16 Fuß (empfohlen)</item>
<item>33 Fuß</item>
<item>328 Fuß</item>
</string-array>
<!-- Maximum recording distance -->
<string-array name="max_recording_distance_options">
<item>50 m</item>
<item>100 m</item>
<item>200 m (empfohlen)</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 Fuß</item>
<item>328 Fuß</item>
<item>656 Fuß (empfohlen)</item>
<item>1640 Fuß</item>
<item>0,6 Meilen</item>
<item>3,1 Meilen</item>
</string-array>
<!-- Minimum recording interval -->
<string-array name="min_recording_interval_options">
<item>batterie sparend (adaptiv)</item>
<item>hohe genauigkeit (adaptiv)</item>
<item>maximal (empfohlen)</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 (sehr gutes GPS-Signal)</item>
<item>20 m</item>
<item>50 m</item>
<item>100 m</item>
<item>200 m (empfohlen)</item>
<item>500 m</item>
<item>1000 m</item>
<item>2000 m</item>
<item>5000 m (sehr schlechtes GPS-Signal)</item>
</string-array>
<string-array name="min_required_accuracy_options_ft">
<item>33 Fuß (sehr gutes GPS-Signal)</item>
<item>66 Fuß</item>
<item>165 Fuß</item>
<item>328 Fuß</item>
<item>656 Fuß (empfohlen)</item>
<item>1640 Fuß</item>
<item>0,6 Meilen</item>
<item>1,2 Meilen</item>
<item>3,1 Meilen (sehr schlechtes GPS-Signal)</item>
</string-array>
<!-- Split frequency -->
<string-array name="split_frequency_options">
<item>Nicht zerteilen</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>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>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>
<!-- Other non-preference arrays -->
<array name="activity_types">
<item>unbekannt</item>
<item>gemischt</item>
<item>andere</item>
<item>Jogging</item>
<item>Straßenlauf</item>
<item>Laufbahn</item>
<item>Geländelauf</item>
<item>Gehen</item>
<item>Schnelles Gehen</item>
<item>Wandern</item>
<item>Bergwandern</item>
<item>Bergsteigen</item>
<item>Trekking</item>
<item>Radfahren</item>
<item>Rennradfahren</item>
<item>Mountainbiking</item>
<item>Radwandern</item>
<item>Eislaufen</item>
<item>Inlineskaten</item>
<item>Skateboarden</item>
<item>Schneeschuhwandern</item>
<item>Skifahren</item>
<item>Snowboarden</item>
<item>Schlittenfahren</item>
<item>Eissegeln</item>
<item>Segeln</item>
<item>Kanadierfahren</item>
<item>Kajakfahren</item>
<item>Kanuwandern</item>
<item>Rudern</item>
<item>Motorbootfahren</item>
<item>Fähre</item>
<item>Ferngesteuertes Boot</item>
<item>Surfen</item>
<item>Windsurfen</item>
<item>Kitesurfen</item>
<item>Wasserski</item>
<item>Wakeboarden</item>
<item>Flugzeug</item>
<item>Segelflugzeug</item>
<item>Wasserflugzeug</item>
<item>Linienflugzeug</item>
<item>Hubschrauber</item>
<item>Heißluftballon</item>
<item>Luftschiff</item>
<item>Modellflugzeug</item>
<item>Modellhubschrauber</item>
<item>Fallschirmspringen</item>
<item>Gleitschirmfliegen</item>
<item>Hängegleiten</item>
<item>Reiten</item>
<item>Pferdewanderung</item>
<item>Eselreiten</item>
<item>Auto</item>
<item>Bus</item>
<item>Zug</item>
<item>Motorrad</item>
<item>Motorroller</item>
<item>Motocross</item>
<item>Quad</item>
<item>Strandsegeln</item>
<item>Frisbee</item>
<item>Ultimate Frisbee</item>
</array>
<array name="waypoint_types">
<item>Geldautomat</item>
<item>Bank</item>
<item>Kneipe</item>
<item>Grill</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>Campingplatz</item>
<item>Zeltplatz</item>
<item>Kirche</item>
<item>Gasthaus</item>
<item>Kiosk</item>
<item>Trinkwasser</item>
<item>Geröll</item>
<item>Fähre</item>
<item>Feuerstelle</item>
<item>Feuerwache</item>
<item>Angelplatz</item>
<item>Tankstelle</item>
<item>Golfplatz</item>
<item>Lebensmittelgeschäft</item>
<item>Friseur</item>
<item>Hafen</item>
<item>Wanderweg</item>
<item>Hotel</item>
<item>Haus</item>
<item>Information</item>
<item>Kreuzung</item>
<item>Briefkasten</item>
<item>Marktplatz</item>
<item>Treffpunkt</item>
<item>Oper</item>
<item>Parkplatz</item>
<item>Post</item>
<item>Schlagloch</item>
<item>Polizeiwache</item>
<item>Bahnübergang</item>
<item>Restaurant</item>
<item>Shopping</item>
<item>Sehenswürdigkeit</item>
<item>Laden</item>
<item>Schwimmbad</item>
<item>Telefon</item>
<item>Theater</item>
<item>Toilette</item>
<item>Touristeninformation</item>
<item>Tunnel</item>
<item>Baum</item>
<item>Wasserfall</item>
<item>Wegpunkt</item>
</array>
</resources>
+355
View File
@@ -0,0 +1,355 @@
<?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>
<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_announcement_not_available_summary">Gesprochene Ansagen sind mit Ihrer Version von Android nicht verfügbar.</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="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>
<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>
<string name="send_track_body_format">Vielleicht interessierst Du Dich für diese Track:
%s.</string>
<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>
<string name="kilometers_long">Kilometer</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="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>
<!-- 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>
<!-- 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 in %4$s mit %5$s %6$s</string>
</resources>
+278
View File
@@ -0,0 +1,278 @@
<?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>Apagado</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 (recomendada)</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 (recomendada)</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 (recomendada)</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 (recomendada)</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>optimizar duración de la batería (adaptable)</item>
<item>alta precisión (adaptable)</item>
<item>más alta posible (recomendada)</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 (señal GPS excelente)</item>
<item>20 m</item>
<item>50 m</item>
<item>100 m</item>
<item>200 m (recomendada)</item>
<item>500 m</item>
<item>1000 m</item>
<item>2000 m</item>
<item>5000 m (señal GPS débil)</item>
</string-array>
<string-array name="min_required_accuracy_options_ft">
<item>33 ft (señal GPS excelente)</item>
<item>66 ft</item>
<item>165 ft</item>
<item>328 ft</item>
<item>656 ft (recomendada)</item>
<item>1640 ft</item>
<item>0.6 miles</item>
<item>1.2 miles</item>
<item>3.1 miles (señal GPS débil)</item>
</string-array>
<!-- Split frequency -->
<string-array name="split_frequency_options">
<item>No dividir</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 dividir</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>
<!-- 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 a campo traviesa</item>
<item>escalando</item>
<item>bicicleta</item>
<item>bicicleta de carrera</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>veleando sobre hielo</item>
<item>veleando</item>
<item>canotaje</item>
<item>kayaking</item>
<item>remo</item>
<item>bote de motor</item>
<item>tansbordador</item>
<item>bote RC</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>hidroavion</item>
<item>avión comercial</item>
<item>helicóptero</item>
<item>glbo aerostático</item>
<item>dirigible</item>
<item>aeroplane RC</item>
<item>helicóptero RC</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>manejeando auto</item>
<item>manejando camión</item>
<item>tren</item>
<item>moto bici</item>
<item>moto cross</item>
<item>ATV</item>
<item>veleando 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>parrillada</item>
<item>edificio</item>
<item>parada de camión</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>deslave</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 correo</item>
<item>mercado</item>
<item>punto de encuentro</item>
<item>ópera</item>
<item>estacionamiento</item>
<item>oficina de correos</item>
<item>bache</item>
<item>estación 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>alberca</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>
</resources>
+357
View File
@@ -0,0 +1,357 @@
<?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">Grabar recorrido</string>
<string name="stop_recording">Dejar de grabar recorrido</string>
<string name="switch_to_sat">Modo satelital</string>
<string name="switch_to_map">Modo mapa</string>
<string name="mylocation">Mi ubicación</string>
<string name="list_markers">Señal</string>
<string name="delete_all_tracks">Borrar todos los recorridos</string>
<string name="settings">Configuraciones</string>
<string name="elevation">Elevación</string>
<string name="choose_track_message">Por favor seleccione el recorrido que desea ver</string>
<string name="current_track">Recorrido actual</string>
<string name="current_segment">Último segmento</string>
<!-- 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_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>
<string name="error_unable_to_read_file">No pude leer del archivo.</string>
<string name="error_invalid_gpx_format">El archivo no tiene un format GPX válido.</string>
<string name="error_generic">Error. Por favor inténtelo de nuevo.</string>
<string name="error_track_does_not_exist">El recorrido no existe.</string>
<string name="error_out_of_memory">El archivo es demasiado grande (tiene que ser menor a 500 KB). Abortando.</string>
<string name="error_unable_to_insert_marker">No pude insertar la señal. La ubicación no esta disponible.</string>
<!-- Status messages -->
<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_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>
<string name="status_waypoint_inserted">Una señal de recorrido fue insertada.</string>
<string name="status_statistics_inserted">Una señal con estadísticas fue insertada.</string>
<!-- Progress dialog -->
<string name="progress_title">Por favor espere...</string>
<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_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="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>
<!-- Used by DeleteAllDataHandler -->
<string name="are_you_sure_question">¿Está usted seguro?</string>
<string name="all_data_will_be_permanently_deleted">Todos los recorridos y señales serán borradas de este teléfono.</string>
<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 &lt;a href='http://mytracks.appspot.com'&gt;My Tracks&lt;/a&gt; en Android."</string>
<string name="new_map_title">Nuevo mapa</string>
<!-- Formatting of track and marker descriptions -->
<string name="points">Puntos</string>
<string name="recorded_date">Grabado</string>
<string name="category">Tipo de actividad</string>
<string name="waypoint_category">Tipo de señal</string>
<string name="part">"(Parte %d)"</string>
<!-- Used by the track recording service -->
<string name="recording_your_track">Grabando su recorrido...</string>
<string name="new_track">Recorrido %d</string>
<!-- Common -->
<string name="yes">Sí</string>
<string name="success">Éxito</string>
<string name="waypoint">Señal de recorrido</string>
<!-- Placemark labels for start and end of track -->
<string name="start">(Inicio)</string>
<string name="end">(Fin)</string>
<!-- 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_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>
<string name="tracklist_edit_track">Editar detalles</string>
<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_delete_all">Borrar todos los recorridos</string>
<!-- Export All -->
<string name="tracklist_btn_export_all">Exportar todos los recorridos</string>
<string name="export_done">Exportación concluída</string>
<string name="tracklist_pick_one">Escoja un recorrido. Presione&amp;mantenga presionado para ver más opciones.</string>
<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>
<!-- Waypoints list -->
<string name="waypointslist_btn_delete_all">Borrar todas las señales</string>
<string name="waypointslist_this_waypoint">Esta señal</string>
<string name="waypointslist_delete_waypoint">Borrar</string>
<string name="waypointslist_edit_waypoint">Editar detalles"</string>
<string name="waypointslist_show_waypoint">Mostrar en el mapa"</string>
<string name="waypointslist_btn_insert_waypoint">Insertar señal de recorrido"</string>
<string name="waypointslist_btn_insert_statistics">Insertar estadísticas"</string>
<string name="waypointslist_pick_one">Escoja una señal. Presione&amp; mantenga presionado para ver más opciones.</string>
<!-- MyTracks Details -->
<string name="trackdetails_title">Detalles del recorrido</string>
<string name="trackdetails_name">Nombre del recorrido</string>
<string name="trackdetails_description">Descripción del recorrido</string>
<string name="trackdetails_category">Tipo de actividad (por ejemplo, ciclismo, alpinismo...)</string>
<!-- MyTracks Waypoint Details -->
<string name="waypointdetails_title">Detalles de señal</string>
<string name="waypointdetails_name">Nombre de señal</string>
<string name="waypointdetails_description">Descripción de señal</string>
<string name="waypointdetails_category">Tipo de señal (por ejemplo, edificio, bache, atracción...)</string>
<!-- MyTracks Settings -->
<string name="mytracks_settings">Configuraciones de My Tracks</string>
<string name="settings_display">Visualizador</string>
<string name="settings_recording">Grabando</string>
<string name="settings_sharing">Compartiendo</string>
<string name="settings_announcement_frequency">Tiempo entre anuncios</string>
<string name="settings_announcement_frequency_summary">Tiempo mínimo entre dos anuncios de voz</string>
<string name="settings_announcement_not_available_summary">Conversión de anuncios de texto a voz no esta disponible en su versión de Android</string>
<string name="settings_min_recording_distance">Distancia mínima entre puntos consecutivos</string>
<string name="settings_min_recording_distance_summary">Distancia mínima entre dos grabaciones de posición</string>
<string name="settings_max_recording_distance">Crear nuevo segmento si distancia es mayor que</string>
<string name="settings_max_recording_distance_summary">Empezar un nuevo segmento si los puntos están a una distancia mayor a</string>
<string name="settings_min_recording_interval">Grabando frecuencia</string>
<string name="settings_min_recording_interval_summary">Diferencia mínima de tiempo entre dos grabaciones de posición</string>
<string name="settings_min_required_accuracy">Detener la grabación si la precisión es menor a</string>
<string name="settings_min_required_accuracy_summary">Precisión mínima de ubicación necesaria para continuar grabando pista</string>
<string name="settings_metric_units">Usar unidades métricas</string>
<string name="settings_metric_units_summary_on">Todas las distancias serán mostradas en unidades métricas</string>
<string name="settings_metric_units_summary_off">Todas las distancias serán mostradas en unidades británicas</string>
<string name="settings_map_public">Hacer mapas en maps.google.com públicos</string>
<string name="settings_map_public_summary_on">Mapas subidos serán visibles a cualquier persona en maps.google.com</string>
<string name="settings_map_public_summary_off">Mapas subidos no serán públicos en maps.google.com</string>
<string name="settings_report_speed_or_pace">Mostrar</string>
<string name="settings_report_speed_or_pace_summary_on">La velocidad será mostrada</string>
<string name="settings_report_speed_or_pace_summary_off">El paso será mostrado</string>
<string name="settings_share_url_only">Mandar sólo URL como mensaje al compartir</string>
<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>
<!-- 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_subject">Me gustaría compartir un mapa contigo</string>
<string name="share_map_body_format">Creo que este mapa pudiera interesarte:
%s</string>
<string name="send_track_subject">Me gustaría compartir un recorrido contigo</string>
<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>
<!-- Visibility -->
<string name="public_map">Público</string>
<string name="unlisted_map">No listado</string>
<string name="mapslist_no_maps_available">Aún no tienes ningún mapa.</string>
<!-- Statistics View -->
<!-- Average Moving -->
<string name="average_moving_speed_label">Velocidad promedio en movimiento</string>
<string name="average_moving_pace_label">Paso promedio en movimiento</string>
<!-- Average -->
<string name="average_speed_label">Velocidad promedio</string>
<string name="average_pace_label">Paso promedio</string>
<string name="elevation_chart_name">Gráfica de elevación</string>
<string name="elevation_gain_label">Aumento de elevación</string>
<string name="elevation_label">Elevación</string>
<string name="latitude_label">Latitud</string>
<string name="longitude_label">Longitud</string>
<!-- Min -->
<string name="min_elevation_label">Elevación mínima</string>
<string name="min_grade_label">Pendiente mínima</string>
<string name="min_pace_label">Paso mínimo</string>
<!-- Max -->
<string name="max_elevation_label">Elevación máxima</string>
<string name="max_grade_label">Pendiente máxima</string>
<string name="max_speed_label">Velocidad máxima</string>
<string name="loading_track">Cargando recorrido...</string>
<!-- Chart Settings -->
<string name="chart_settings">Configuración de gráficas</string>
<!-- X Axis -->
<string name="x_axis">Eje X</string>
<string name="by_distance">Como función de distancia</string>
<string name="by_time">Como función de tiempo</string>
<!-- Y Axis -->
<string name="y_axis">Eje Y</string>
<!-- Units -->
<!-- Time -->
<string name="hour">hora</string>
<string name="hours">horas</string>
<string name="minute">minuto</string>
<string name="minutes">minutos</string>
<string name="second">segundo</string>
<string name="seconds">segundos</string>
<!-- Distance -->
<string name="kilometers_long">kilómetros</string>
<string name="miles_long">millas</string>
<!-- Speed and Pace -->
<string name="kilometer_per_hour_long">kilómetros por hora</string>
<string name="per_kilometer">por kilómetro</string>
<string name="mile_per_hour_long">millas por hora</string>
<string name="per_mile">por milla</string>
<!-- Stats Labels -->
<string name="moving_time_label">Tiempo en movimiento</string>
<string name="total_time_label">Tiempo total</string>
<string name="time_label">Tiempo</string>
<string name="sd_unavail">SD no disponible</string>
<string name="speed">Velocidad</string>
<string name="start_trip">Debes comenzar un viaje.</string>
<string name="statistics">Estadísticas</string>
<string name="total_distance_label">Distancia total</string>
<string name="distance_label">Distancia</string>
<string name="waiting">Esperando...</string>
<!-- End User License Agreement -->
<string name="eula_title">Contrato de Licencia de Usuario Final</string>
<string name="accept">Aceptar</string>
<string name="decline">Declinar</string>
<!-- 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>
<!-- SD card -->
<string name="io_no_external_storage_found">Ningún almacenamiento externo fue encontrado. Asegúrese que la tarjeta SD se encuentre insertada y que su teléfono no este conectado a una computadora.</string>
<string name="io_write_failed">No es posible escribir al archivo.</string>
<string name="io_create_dir_failed">No es posible crear un directorio en su tarjeta SD.</string>
<string name="io_write_finished">Grabación a tarjeta SD concluída.</string>
<!-- VersionChecker -->
<string name="version_check_title">Checar actualizaciones</string>
<string name="version_check_upgrade_button">Actualizar ahora</string>
<string name="version_check_continue_button">Continuar sin actualizar</string>
<string name="upgrade_required">Su versión de %1$s puede no funcionar bien, y no contar ya con soporte técnico. Por favor actualice para poder continuar usando %1$s.</string>
<string name="upgrade_recommended">Su versión de %1$s puede no funcionar bien. Puede actualizar ahora, o continuar usándola bajo su propio riesgo. Algunos procesos como la sincronización con los servidores pueden no funcionar hasta que actualice su versión.</string>
<string name="upgrade_available">Una nueva versión de %1$s ya está disponible. Puede continuar usando su versión actual sin ninún problema, pero no tendrá las nueva funcionalidad hasta que actualice su versión.</string>
<!-- Welcome -->
<string name="welcome">Bienvenido</string>
<string name="welcome_about">Sobre My Tracks</string>
<!-- Announcement -->
<string name="announce_no_distance">My Tracks sin distancia</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 a %5$s %6$s</string>
</resources>
+307
View File
@@ -0,0 +1,307 @@
<?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>Absent</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 (recommandé)</item>
<item>10 m</item>
<item>100 m</item>
</string-array>
<string-array name="min_recording_distance_options_ft">
<item>3 pieds</item>
<item>6 pieds</item>
<item>10 pieds</item>
<item>13 pieds</item>
<item>16 pieds (recommandé)</item>
<item>33 pieds</item>
<item>328 pieds</item>
</string-array>
<!-- Maximum recording distance -->
<string-array name="max_recording_distance_options">
<item>50 m</item>
<item>100 m</item>
<item>200 m (recommandé)</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 pieds</item>
<item>328 pieds</item>
<item>656 pieds (recommandé)</item>
<item>1640 pieds</item>
<item>0.6 miles</item>
<item>3.1 miles</item>
</string-array>
<!-- Minimum recording interval -->
<string-array name="min_recording_interval_options">
<item>économiseur de batterie (adaptatif)</item>
<item>haute résolution (adaptatif)</item>
<item>haute résolution (recommandé)</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 (excellent signal GPS)</item>
<item>20 m</item>
<item>50 m</item>
<item>100 m</item>
<item>200 m (recommandé)</item>
<item>500 m</item>
<item>1000 m</item>
<item>2000 m</item>
<item>5000 m (Mauvais signal GPS)</item>
</string-array>
<string-array name="min_required_accuracy_options_ft">
<item>33 pieds (excellent signal GPS)</item>
<item>66 pieds</item>
<item>165 pieds</item>
<item>328 pieds</item>
<item>656 pieds (recommandé)</item>
<item>1640 pieds</item>
<item>0.6 miles</item>
<item>1.2 miles</item>
<item>3.1 miles (mauvais signal GPS)</item>
</string-array>
<!-- Split frequency -->
<string-array name="split_frequency_options">
<item>Pas de séparation</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>Pas de séparation</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>
<!-- Other non-preference arrays -->
<array name="activity_types">
<item>inconnue</item>
<item>activité mixte</item>
<item>autre</item>
<item>jogging</item>
<item>course à pied</item>
<item>jogging urbain</item>
<item>athlétisme</item>
<item>course sur piste</item>
<item>cross</item>
<item>marche à pied</item>
<item>balade</item>
<item>marche sportive</item>
<item>randonnée</item>
<item>trekking</item>
<item>alpinisme</item>
<item>marche à pied hors sentier</item>
<item>escalade</item>
<item>cyclisme</item>
<item>vélo</item>
<item>cyclisme sur route</item>
<item>vélo sur route</item>
<item>VTT</item>
<item>Vélo Tout Terrain</item>
<item>cyclisme sur piste</item>
<item>vélo de piste</item>
<item>patin à roulette</item>
<item>skate board</item>
<item>randonnée en raquette</item>
<item>ski</item>
<item>ski de fond</item>
<item>ski de piste</item>
<item>ski de randonnée</item>
<item>ski hors piste</item>
<item>snow board</item>
<item>luge</item>
<item>voilier sur glace</item>
<item>navigation</item>
<item>bateau à voile</item>
<item>voilier</item>
<item>aviron</item>
<item>kayak</item>
<item>bateau à moteur</item>
<item>ferry</item>
<item>boat télécommandé</item>
<item>surf</item>
<item>planche à voile</item>
<item>kite surf</item>
<item>ski nautique</item>
<item>avion</item>
<item>avion à moteur</item>
<item>planneur</item>
<item>planneur à moteur</item>
<item>motoplanneur</item>
<item>avion commercial</item>
<item>helicoptère</item>
<item>ballon</item>
<item>dirigeable</item>
<item>avion télécommandé</item>
<item>hélicoptère télécommandé</item>
<item>saut en parachute</item>
<item>base jump</item>
<item>base jumping</item>
<item>parapente</item>
<item>deltaplane</item>
<item>équitation</item>
<item>balade à cheval</item>
<item>conduite</item>
<item>conduite de voiture</item>
<item>conduite de bus</item>
<item>voiture</item>
<item>bus</item>
<item>camion</item>
<item>fourgon</item>
<item>fourgonnette</item>
<item>utilitaire</item>
<item>train</item>
<item>moto</item>
<item>motocyclette</item>
<item>motocross</item>
<item>char à voile</item>
<item>frisbee</item>
<item>ultimate frisbee</item>
</array>
<array name="waypoint_types">
<item>distributeur de billets</item>
<item>banque</item>
<item>bar</item>
<item>barbecue</item>
<item>immeuble</item>
<item>arrêt de bus</item>
<item>café</item>
<item>feu de camp</item>
<item>camping</item>
<item>église</item>
<item>coffee house</item>
<item>supérette</item>
<item>eau potable</item>
<item>chute de pierre</item>
<item>ferry</item>
<item>feu de camp</item>
<item>caserne de pompiers</item>
<item>lieu de pêche</item>
<item>station service</item>
<item>golf</item>
<item>magasin d\'alimentation</item>
<item>coiffeur</item>
<item>port</item>
<item>sentier</item>
<item>hôtel</item>
<item>maison</item>
<item>information</item>
<item>intersection</item>
<item>boite aux lettres</item>
<item>marché</item>
<item>lieu de rendez-vous</item>
<item>point de rendez-vous</item>
<item>opéra</item>
<item>parking</item>
<item>poste</item>
<item>caverne</item>
<item>commissariat</item>
<item>passage à niveaux</item>
<item>restaurant</item>
<item>boutiques</item>
<item>vue</item>
<item>point de vue</item>
<item>boutique</item>
<item>magasin</item>
<item>piscine</item>
<item>téléphone</item>
<item>théâtre</item>
<item>toilettes</item>
<item>office du tourisme</item>
<item>tunnel</item>
<item>arbre</item>
<item>cascade</item>
<item>fontaine</item>
<item>way point</item>
<item>point de passage</item>
</array>
</resources>
+357
View File
@@ -0,0 +1,357 @@
<?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">Enregistrer parcours</string>
<string name="stop_recording">Arrêter enregistrement</string>
<string name="switch_to_sat">Mode satellite</string>
<string name="switch_to_map">Mode plan</string>
<string name="mylocation">Ma position</string>
<string name="list_tracks">Parcours</string>
<string name="list_markers">Marqueurs</string>
<string name="delete_all_tracks">Supprimer tous les parcours</string>
<string name="settings">Paramètres</string>
<string name="elevation">Altitude</string>
<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>
<!-- 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_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>
<string name="error_unable_to_read_file">Impossible de lire le fichier.</string>
<string name="error_invalid_gpx_format">Le fichier n\'a pas un format GPX valide.</string>
<string name="error_generic">Une erreur a eu lieu. Essayez de nouveau s\'il vous plaît.</string>
<string name="error_track_does_not_exist">Le parcours n\'existe pas.</string>
<string name="error_out_of_memory">Ce fichier est trop gros (sa taille doit être inférieure à 500ko). Abandon.</string>
<string name="error_unable_to_insert_marker">Impossible d\'insérer une balise. Position inconnue.</string>
<!-- Status messages -->
<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_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>
<string name="status_waypoint_inserted">Un point de passage a été inséré.</string>
<string name="status_statistics_inserted">Une balise de statistiques a été insérée.</string>
<!-- Progress dialog -->
<string name="progress_title">Patientez SVP...</string>
<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_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="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>
<!-- Used by DeleteAllDataHandler -->
<string name="are_you_sure_question">Êtes-vous sûr?</string>
<string name="all_data_will_be_permanently_deleted">Tous les parcours et balises vont être supprimés de ce téléphone.</string>
<string name="track_will_be_permanently_deleted">Le parcours et ses balises vont être supprimés de manière permanente de ce téléphone.</string>
<string name="marker_will_be_permanently_deleted">Les balises vont être supprimées de manière permanente de ce téléphone.</string>
<!-- 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 &lt;a href=\'http://mytracks.appspot.com\'&gt;My Tracks&lt;/a&gt; sous Android.</string>
<string name="new_map_title">Nouvelle carte</string>
<!-- Formatting of track and marker descriptions -->
<string name="recorded_date">Enregistré</string>
<string name="category">Type d\'activité</string>
<string name="waypoint_category">Type de balise</string>
<string name="part">(Portion %d)</string>
<!-- Used by the track recording service -->
<string name="recording_your_track">Enregistrement de votre parcours...</string>
<string name="new_track">Parcours %d</string>
<!-- Common -->
<string name="no">Non</string>
<string name="yes">Oui</string>
<string name="error">Erreur</string>
<string name="waypoint">Point de passage</string>
<!-- Placemark labels for start and end of track -->
<string name="start">(Début)</string>
<string name="end">(Fin)</string>
<!-- 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_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>
<string name="tracklist_edit_track">Consulter les détails</string>
<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_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>
<!-- Waypoints list -->
<string name="waypointslist_btn_delete_all">Supprimer toutes les balises</string>
<string name="waypointslist_this_waypoint">Ce marqueur</string>
<string name="waypointslist_delete_waypoint">Supprimer</string>
<string name="waypointslist_edit_waypoint">Consulter les détails</string>
<string name="waypointslist_show_waypoint">Indiquer sur la carte</string>
<string name="waypointslist_btn_insert_waypoint">Ajout point de passage</string>
<string name="waypointslist_btn_insert_statistics">Ajout de statistiques</string>
<string name="waypointslist_pick_one">Choisissez une balise. Faites un appui prolongé pour plus d\'options.</string>
<!-- MyTracks Details -->
<string name="trackdetails_title">Détails parcours</string>
<string name="trackdetails_name">Nom du parcours</string>
<string name="trackdetails_description">Description du parcours</string>
<string name="trackdetails_category">Type d\'activité (randonnée, cyclisme, jogging, escalade...)</string>
<!-- MyTracks Waypoint Details -->
<string name="waypointdetails_title">Details balise</string>
<string name="waypointdetails_name">Nom de la balise</string>
<string name="waypointdetails_description">Description balise</string>
<string name="waypointdetails_category">Nom de balise (par ex.: immeuble, boutique, point de vue...)</string>
<!-- MyTracks Settings -->
<string name="mytracks_settings">Paramètres My Tracks</string>
<string name="settings_display">Affichage</string>
<string name="settings_recording">Enregistrement</string>
<string name="settings_sharing">Partage</string>
<string name="settings_announcement_frequency">Fréquence des annonces</string>
<string name="settings_announcement_frequency_summary">Temps minimum entre eux annonces vocales</string>
<string name="settings_announcement_not_available_summary">La synthèse vocale n\'est pas disponible pour cette version d\'Android</string>
<string name="settings_min_recording_distance">Distance min. entre 2 points</string>
<string name="settings_min_recording_distance_summary">Plus petite distance entre deux enregistrements de votre position</string>
<string name="settings_max_recording_distance">Distance max. entre 2 points</string>
<string name="settings_max_recording_distance_summary">Si deux points successifs sont plus éloignés, un nouveau parcours sera créé</string>
<string name="settings_min_recording_interval">Fréquence d\'enregistrement</string>
<string name="settings_min_recording_interval_summary">Plus petit intervalle de temps entre deux enregistrements de votre position</string>
<string name="settings_min_required_accuracy">Précision minimum</string>
<string name="settings_min_required_accuracy_summary">L\'enregistrement sera suspendu si la géolocalisation est moins précise</string>
<string name="settings_metric_units">Système métrique</string>
<string name="settings_metric_units_summary_on">Le système métrique sera utilisé pour l\'affichage des distances</string>
<string name="settings_metric_units_summary_off">Le système impérial sera utilisé pour l\'affichage des distances</string>
<string name="settings_map_public">Cartes publiques</string>
<string name="settings_map_public_summary_on">Les cartes partagées seront visibles par tout le monde sur maps.google.com</string>
<string name="settings_map_public_summary_off">Les cartes ne seront pas partagées publiquement sur maps.google.com</string>
<string name="settings_report_speed_or_pace">Afficher vitesse/rythme</string>
<string name="settings_report_speed_or_pace_summary_on">Afficher la vitesse</string>
<string name="settings_report_speed_or_pace_summary_off">Afficher le rythme</string>
<string name="settings_share_url_only">Partager URL/parcours</string>
<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>
<!-- 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_subject">Je voudrais partager ma carte avec vous</string>
<string name="share_map_body_format">Je pense que cette carte vous intéressera :
%s</string>
<string name="send_track_subject">Je voudrais partager un parcours avec vous</string>
<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>
<!-- Visibility -->
<string name="unlisted_map">Carte non listée</string>
<string name="mapslist_no_maps_available">Vous n\'avez par encore de carte personnalisée.</string>
<!-- Statistics View -->
<!-- Average Moving -->
<string name="average_moving_speed_label">Vitesse moyenne (déplacement)</string>
<string name="average_moving_pace_label">Rythme moyen (dépl.)</string>
<!-- Average -->
<string name="average_speed_label">Vitesse moyenne</string>
<string name="average_pace_label">Rythme moyen</string>
<string name="elevation_chart_name">Altitude maximale</string>
<string name="elevation_gain_label">Dénivelé cumulé</string>
<string name="elevation_label">Altitude</string>
<!-- Min -->
<string name="min_elevation_label">Altitude min</string>
<string name="min_grade_label">Pente min</string>
<string name="min_pace_label">Rythme min</string>
<!-- Max -->
<string name="max_elevation_label">Altitude max</string>
<string name="max_grade_label">Pente max</string>
<string name="max_speed_label">Vitesse max</string>
<string name="loading_track">Chargement du parcours...</string>
<!-- Chart Settings -->
<string name="chart_settings">Paramètres Graphique</string>
<!-- X Axis -->
<string name="x_axis">Abscisse (X)</string>
<string name="by_distance">Par distance</string>
<string name="by_time">Par durée</string>
<!-- Y Axis -->
<string name="y_axis">Ordonnée (Y)</string>
<!-- Units -->
<!-- Time -->
<string name="hour">heure</string>
<string name="hours">heures</string>
<string name="second">seconde</string>
<string name="seconds">secondes</string>
<!-- Distance -->
<string name="feet">pied</string>
<string name="kilometers_long">kilomètres</string>
<string name="miles_long">milles</string>
<!-- Speed and Pace -->
<string name="kilometer_per_hour">km/h</string>
<string name="kilometer_per_hour_long">kilomètres/heure</string>
<string name="per_kilometer">par kilomètre</string>
<string name="mile_per_hour">mi/h</string>
<string name="mile_per_hour_long">miles/heure</string>
<string name="per_mile">per mile</string>
<!-- Stats Labels -->
<string name="moving_time_label">Durée (déplacement)</string>
<string name="total_time_label">Durée totale</string>
<string name="time_label">Durée</string>
<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="statistics">Statistiques</string>
<string name="total_distance_label">Distance totale</string>
<string name="waiting">Patientez</string>
<!-- End User License Agreement -->
<string name="eula_title">Accord de licence utilisateur</string>
<string name="accept">Accepter</string>
<string name="decline">Décliner</string>
<!-- About -->
<string name="about">À propos</string>
<string name="help">Aide</string>
<string name="about_team">Équipe :</string>
<!-- 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>
<!-- Getting the account to upload to. -->
<string name="no_account_found_title">Pas de compte Google</string>
<string name="no_account_found">Un compte Google est nécessaire pour télécharger le parcours.</string>
<string name="choose_account_title">Choisissez un compte</string>
<!-- SD card -->
<string name="io_no_external_storage_found">Aucun emplacement externe de sauvegarde n\'a été trouvé. Assurez-vous qu\'une carte SD est insérée et que votre téléphone n\'est pas relié à un ordinateur.</string>
<string name="io_write_failed">Impossible d\'écrire dans le fichier.</string>
<string name="io_create_dir_failed">Impossible de créer un dossier dans la carte SD.</string>
<string name="io_write_finished">Parcours enregistré sur la carte SD.</string>
<!-- VersionChecker -->
<string name="version_check_title">Recherche mise à jour</string>
<string name="version_check_upgrade_button">Installer mise à jour</string>
<string name="version_check_continue_button">Continuer sans installer mise à jour</string>
<string name="upgrade_required">Votre version %1$s est obsolète et n\'est plus supportée. Installer les mises à jour afin de pouvoir continuer à utiliser %1$s.</string>
<string name="upgrade_recommended">Votre version %1$s est obsolète et n\'est plus supportée. Vous pouvez installer les mises à jour ou continuer à l\'utiliser à vos propres risques. Certaines fonctionalités comme la synchronisation avec le serveur risquent de ne pas fonctionner tant que vous n\'installerez pas la mise à jour.</string>
<string name="upgrade_available">Une nouvelle version %1$s est disponible. Vous pouvez continuer à utiliser la version actuelle sans rencontrer de problèmes mais vous de disposerez pas des dernières fonctionnalités tant que vous n\'aurez pas installé les mises à jour.</string>
<!-- Welcome -->
<string name="welcome">Bienvenue</string>
<string name="welcome_about">À propos de My Tracks</string>
<!-- Announcement -->
<string name="announce_no_distance">My Tracks pas de distance disponible</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>
</resources>
+278
View File
@@ -0,0 +1,278 @@
<?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>Disattivato</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 (raccomandato)</item>
<item>10 m</item>
<item>100 m</item>
</string-array>
<string-array name="min_recording_distance_options_ft">
<item>3 pd</item>
<item>6 pd</item>
<item>10 pd</item>
<item>13 pd</item>
<item>16 pd (raccomandato)</item>
<item>33 pd</item>
<item>328 pd</item>
</string-array>
<!-- Maximum recording distance -->
<string-array name="max_recording_distance_options">
<item>50 m</item>
<item>100 m</item>
<item>200 m (raccomandato)</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 pd</item>
<item>328 pd</item>
<item>656 pd (raccomandato)</item>
<item>1640 pd</item>
<item>0,6 mi</item>
<item>3,1 mi</item>
</string-array>
<!-- Minimum recording interval -->
<string-array name="min_recording_interval_options">
<item>risparmio batteria (adattativo)</item>
<item>alta (adattativo)</item>
<item>massima (raccomandato)</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 (segnale GPS ottimo)</item>
<item>20 m</item>
<item>50 m</item>
<item>100 m</item>
<item>200 m (raccomandato)</item>
<item>500 m</item>
<item>1000 m</item>
<item>2000 m</item>
<item>5000 m (segnale GPS debole)</item>
</string-array>
<string-array name="min_required_accuracy_options_ft">
<item>33 pd (segnale GPS ottimo)</item>
<item>66 pd</item>
<item>165 pd</item>
<item>328 pd</item>
<item>656 pd (raccomandato)</item>
<item>1640 pd</item>
<item>0.6 mi</item>
<item>1.2 mi</item>
<item>3.1 mi (segnale GPS debole)</item>
</string-array>
<!-- Split frequency -->
<string-array name="split_frequency_options">
<item>Non dividere</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>Non dividere</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>
<!-- Other non-preference arrays -->
<array name="activity_types">
<item>ignoto</item>
<item>misto</item>
<item>altro</item>
<item>corsa</item>
<item>corsa su strada</item>
<item>corsa su pista</item>
<item>costa campestre</item>
<item>passeggiata</item>
<item>marcia</item>
<item>escursionismo</item>
<item>camminata su sentiero</item>
<item>camminata fuori sentiero</item>
<item>arrampicata</item>
<item>ciclismo</item>
<item>ciclismo su strada</item>
<item>mountain biking</item>
<item>ciclismo su pista</item>
<item>pattinaggio</item>
<item>pattinaggio in-line</item>
<item>skateboarding</item>
<item>escursione con racchette da neve</item>
<item>sci</item>
<item>snowboard</item>
<item>slitta</item>
<item>pattinaggio su ghiaccio</item>
<item>vela</item>
<item>barca a remi</item>
<item>kayak</item>
<item>cannottaggio</item>
<item>motoscafo</item>
<item>traghetto</item>
<item>barca radiocomandata</item>
<item>surf</item>
<item>windsurf</item>
<item>kitesurf</item>
<item>sci acquatico</item>
<item>wakeboard</item>
<item>aeroplano</item>
<item>idrovolante</item>
<item>aereo commerciale</item>
<item>elicottero</item>
<item>mongolfiera</item>
<item>dirigibile</item>
<item>aereo radiocomandato</item>
<item>elicottero radiocomandato</item>
<item>paracadutismo</item>
<item>aliante</item>
<item>deltaplano</item>
<item>parapendio</item>
<item>equitazione</item>
<item>equitazione (cavallo)</item>
<item>equitazione (mulo)</item>
<item>automobile</item>
<item>autobus</item>
<item>treno</item>
<item>motocicletta</item>
<item>enduro</item>
<item>ATV</item>
<item>landsailing</item>
<item>frisbee</item>
<item>ultimate frisbee</item>
</array>
<array name="waypoint_types">
<item>bancomat</item>
<item>banca</item>
<item>bar</item>
<item>barbeque</item>
<item>edificio</item>
<item>fermata bus</item>
<item>caffè</item>
<item>fuoco da campocampfire</item>
<item>campeggio</item>
<item>chiesa</item>
<item>caffè bar</item>
<item>bottega</item>
<item>acqua potabile</item>
<item>caduta sassi</item>
<item>traghetto</item>
<item>fuoco</item>
<item>stazione pompieri</item>
<item>pesca</item>
<item>stazione di benzina</item>
<item>campo da golf</item>
<item>negozio alimentari</item>
<item>parrucchiere</item>
<item>porto</item>
<item>sentiero</item>
<item>hotel</item>
<item>casa</item>
<item>informazioni</item>
<item>incrocio</item>
<item>casella per le lettere</item>
<item>mercato</item>
<item>luogo d\'incontro</item>
<item>opera</item>
<item>parcheggio</item>
<item>ufficio postale</item>
<item>buca in strada</item>
<item>stazione di polizia</item>
<item>incrocio ferroviario</item>
<item>ristorante</item>
<item>shopping</item>
<item>panorama</item>
<item>negozio</item>
<item>piscina</item>
<item>telefono</item>
<item>teatro</item>
<item>WC</item>
<item>informazioni turistiche</item>
<item>tunnel</item>
<item>albero</item>
<item>cascata</item>
<item>fontana</item>
<item>punto di passaggio</item>
</array>
</resources>
+382
View File
@@ -0,0 +1,382 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2010 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<string name="app_name">My Tracks</string>
<!-- Used by the Menu -->
<string name="start_recording">Registra percorso</string>
<string name="stop_recording">Fine registrazione</string>
<string name="switch_to_sat">Satellite</string>
<string name="switch_to_map">Mappa</string>
<string name="mylocation">Posizione corrente</string>
<string name="list_tracks">Percorsi</string>
<string name="list_markers">Segnaposti</string>
<string name="delete_all_tracks">Elimina tutti i percorsi</string>
<string name="settings">Impostazioni</string>
<string name="elevation">Altitudine</string>
<string name="choose_track_message">Scegli il percorso da visualizzare</string>
<string name="current_track">Percorso corrente</string>
<string name="current_segment">Ultimo segmento</string>
<!-- 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_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>
<string name="error_unable_to_read_file">Impossibile leggere da un file.</string>
<string name="error_invalid_gpx_format">Il file non contiene dati validi in formato GPX.</string>
<string name="error_generic">Si è verificato un errore. Per favore riprova.</string>
<string name="error_track_does_not_exist">Il percorso non esiste.</string>
<string name="error_out_of_memory">Il file è troppo grande (dev\'essere meno di 500 KB). Azione abbandonata.</string>
<string name="error_unable_to_insert_marker">Impossibile inserire il segnaposto. La posizione corrente non è disponibile.</string>
<!-- Status messages -->
<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_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>
<string name="status_waypoint_inserted">Inserito un punto di passaggio.</string>
<string name="status_statistics_inserted">Inserito un segnaposto con statistiche.</string>
<!-- Progress dialog -->
<string name="progress_title">Attendi per favore...</string>
<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_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="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>
<!-- Used by DeleteAllDataHandler -->
<string name="are_you_sure_question">Sei sicuro?</string>
<string name="all_data_will_be_permanently_deleted">Tutti i percorsi e segnaposti saranno eliminati definitivamente da questo telefono.</string>
<string name="track_will_be_permanently_deleted">Il percorso e i suoi segnaposti saranno eliminati definitivamente da questo telefono.</string>
<string name="marker_will_be_permanently_deleted">Il segnaposto sarà eliminato definitivamente da questo telefono.</string>
<!-- 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 &lt;a href=\'http://mytracks.appspot.com\'&gt;My Tracks&lt;/a&gt; su Android.</string>
<string name="new_map_title">Nuova mappa</string>
<!-- Formatting of track and marker descriptions -->
<string name="points">Punti</string>
<string name="recorded_date">Registrato</string>
<string name="category">Tipo di attività</string>
<string name="waypoint_category">Tipo di segnaposto</string>
<string name="part">(Parte %d)</string>
<!-- Used by the track recording service -->
<string name="recording_your_track">Registrazione del percorso in corso...</string>
<string name="new_track">Percorso %d</string>
<!-- Common -->
<string name="no">No</string>
<string name="yes">Sì</string>
<string name="ok">OK</string>
<string name="error">Errore</string>
<string name="success">Successo</string>
<string name="waypoint">Punto di passaggio</string>
<!-- Placemark labels for start and end of track -->
<string name="start">(Inizio)</string>
<string name="end">(Fine)</string>
<!-- 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_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>
<string name="tracklist_edit_track">Modifica dettagli</string>
<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_delete_all">Elimina tutti i percorsi</string>
<!-- Export All -->
<string name="tracklist_btn_export_all">Esporta tutti i percorsi</string>
<string name="export_done">Esportazione terminata.</string>
<string name="tracklist_pick_one">Scegli un percorso. Tieni premuto per più opzioni.</string>
<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_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>
<!-- Waypoints list -->
<string name="waypointslist_btn_delete_all">Elimina tutti i segnaposti</string>
<string name="waypointslist_this_waypoint">Questo segnaposto</string>
<string name="waypointslist_delete_waypoint">Elimina</string>
<string name="waypointslist_edit_waypoint">Modifica dettagli</string>
<string name="waypointslist_show_waypoint">Mostra sulla mappa</string>
<string name="waypointslist_btn_insert_waypoint">Inserisci punto di passaggio</string>
<string name="waypointslist_btn_insert_statistics">Inserisci statistiche</string>
<string name="waypointslist_pick_one">Scegli un segnaposto. Tieni premuto per più opzioni.</string>
<!-- MyTracks Details -->
<string name="trackdetails_title">Dettagli del percorso</string>
<string name="trackdetails_name">Nome del percorso</string>
<string name="trackdetails_description">Descrizione del percorso</string>
<string name="trackdetails_category">Tipo di attività (ad es. escursionismo, ciclismo, corsa, arrampicata...)</string>
<!-- MyTracks Waypoint Details -->
<string name="waypointdetails_title">Dettagli sul segnaposto</string>
<string name="waypointdetails_name">Nome del segnaposto</string>
<string name="waypointdetails_description">Descrizione del segnaposto</string>
<string name="waypointdetails_category">Tipo di segnaposto (ad es. edificio, buca, vista...)</string>
<!-- MyTracks Settings -->
<string name="mytracks_settings">Impostazioni di My Tracks</string>
<string name="settings_display">Visualizzazione</string>
<string name="settings_recording">Registrazione</string>
<string name="settings_sharing">Condivisione</string>
<string name="settings_announcement_frequency">Intervallo fra due annunci:</string>
<string name="settings_announcement_frequency_summary">Tempo minimo fra due annunci audio</string>
<string name="settings_announcement_not_available_summary">Gli annunci audio non sono disponibili in questa varsione di Android</string>
<string name="settings_min_recording_distance">Distanza minima fra due punti successivi:</string>
<string name="settings_min_recording_distance_summary">Distanza minima fra due successive registrazioni della posizione</string>
<string name="settings_max_recording_distance">Inizia un nuovo segmento se i punti sono più distanti di:</string>
<string name="settings_max_recording_distance_summary">Se due punti sono più lontani di così, il percorso sarà diviso percorsi più brevi</string>
<string name="settings_min_recording_interval">Frequenza di registrazione:</string>
<string name="settings_min_recording_interval_summary">Tempo minimo fra due successive registrazioni della posizione</string>
<string name="settings_min_required_accuracy">Fai una pausa nella registrazione se l\'accuratezza scende al disotto di:</string>
<string name="settings_min_required_accuracy_summary">La registrazione verrà temporaneamente interrotta se l\'accuratezza della posizione è meno di questo valore</string>
<string name="settings_metric_units">Mostra le distanze nel sistema metrico decimale</string>
<string name="settings_metric_units_summary_on">Tutte le distanze verranno mostrate nel sistema metrico decimale</string>
<string name="settings_metric_units_summary_off">Tutte le distanze saranno mostrate nel sistema imperiale</string>
<string name="settings_map_public">Rendi pubbliche le mappe su maps.google.com</string>
<string name="settings_map_public_summary_on">Le mappe inviate a maps.google.com saranno visibili a chiunque</string>
<string name="settings_map_public_summary_off">Le mappe inviate a maps.google.com non saranno rese pubbliche</string>
<string name="settings_report_speed_or_pace">Mostra:</string>
<string name="settings_report_speed_or_pace_summary_on">Mostrerà la velocità</string>
<string name="settings_report_speed_or_pace_summary_off">Mostrerà l\'andatura</string>
<string name="settings_share_url_only">Invia solo l\'URL nei messaggi di condivisione</string>
<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>
<!-- 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:
%s</string>
<string name="send_track_subject">Vorrei condividere un percorso con te</string>
<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>
<!-- Visibility -->
<string name="public_map">Pubblica</string>
<string name="unlisted_map">Privata</string>
<string name="mapslist_no_maps_available">Non hai ancora alcuna mappa.</string>
<!-- Statistics View -->
<!-- Average Moving -->
<string name="average_moving_speed_label">Velocità media in moto</string>
<string name="average_moving_pace_label">Andatura media in moto</string>
<!-- Average -->
<string name="average_speed_label">Velocità media</string>
<string name="average_pace_label">Andatura media</string>
<string name="elevation_chart_name">Grafico dell\'Altitudine</string>
<string name="elevation_gain_label">Dislivello</string>
<string name="elevation_label">Altitudine</string>
<string name="latitude_label">Latitudine</string>
<string name="longitude_label">Longitudine</string>
<!-- Min -->
<string name="min_elevation_label">Altitudine min</string>
<string name="min_grade_label">Inclinazione min</string>
<string name="min_pace_label">Andatura min</string>
<!-- Max -->
<string name="max_elevation_label">Altitudine max</string>
<string name="max_grade_label">Inclinazione max</string>
<string name="max_speed_label">Velocità max</string>
<string name="loading_track">Caricamento percorso in corso...</string>
<!-- Chart Settings -->
<string name="chart_settings">Impostazioni grafico</string>
<!-- X Axis -->
<string name="x_axis">Asse X</string>
<string name="by_distance">Distanza</string>
<string name="by_time">Tempo</string>
<!-- Y Axis -->
<string name="y_axis">Asse Y</string>
<!-- Units -->
<!-- Time -->
<string name="hour">ora</string>
<string name="hours">ore</string>
<string name="hr">h</string>
<string name="min">min</string>
<string name="minute">minuto</string>
<string name="minutes">minuti</string>
<string name="second">secondo</string>
<string name="seconds">secondi</string>
<!-- Distance -->
<string name="meter">m</string>
<string name="kilometer">km</string>
<string name="kilometers_long">chilometri</string>
<string name="feet">pd</string>
<string name="mile">mi</string>
<string name="miles_long">miglia</string>
<!-- Speed and Pace -->
<string name="kilometer_per_hour">km/h</string>
<string name="kilometer_per_hour_long">chilometri orari</string>
<string name="min_per_kilometer">min/km</string>
<string name="per_kilometer">per chilometro</string>
<string name="mile_per_hour">mi/h</string>
<string name="mile_per_hour_long">miglia orarie</string>
<string name="min_per_mile">min/mi</string>
<string name="per_mile">per miglio</string>
<!-- Stats Labels -->
<string name="moving_time_label">Durata in moto</string>
<string name="total_time_label">Durata totale</string>
<string name="time_label">Durata</string>
<string name="sd_unavail">Scheda SD non disponibile</string>
<string name="speed">Velocità</string>
<string name="start_trip">Devi prima iniziare un percorso.</string>
<string name="statistics">Statistiche</string>
<string name="total_distance_label">Distanza totale</string>
<string name="distance_label">Distanza</string>
<string name="unknown">-</string>
<string name="waiting">Attendere...</string>
<!-- End User License Agreement -->
<string name="eula_title">Termini di servizio</string>
<string name="accept">Accetto</string>
<string name="decline">Non accetto</string>
<!-- 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_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>
<!-- Getting the account to upload to. -->
<string name="no_account_found_title">Account non trovato</string>
<string name="no_account_found">Non ho trovato un account a cui inviare i percorsi.</string>
<string name="choose_account_title">Scegli un account</string>
<!-- SD card -->
<string name="io_no_external_storage_found">Nessuna memoria esterna trovata. Assicurati che la scheda SD sia inserita e che il telefono no sia montato su un computer.</string>
<string name="io_write_failed">Impossibile scrivere su file.</string>
<string name="io_create_dir_failed">Impossibile creare directory sulla scheda SD.</string>
<string name="io_write_finished">Finito di salvare il percorso sulla scheda SD.</string>
<!-- VersionChecker -->
<string name="version_check_title">Controlla aggiornamenti</string>
<string name="version_check_upgrade_button">Aggiorna adesso</string>
<string name="version_check_continue_button">Continua senza aggiornare</string>
<string name="upgrade_required">La tua versione di %1$s potrebbe non funzionare più correttamente e non è più supportata. Per favore installa l\'aggiornamento in modo da poter continuare a usare %1$s.</string>
<string name="upgrade_recommended">La tua versione di %1$s potrebbe non funzionare più correttamente e non è più supportata. Puoi installare l\'aggiornamento adesso oppure continuare a usare %1$s a tuo rischio. Alcune funzionalità, ad es. la sincronizzazione con i server, potrebbero non funzionare senza l\'aggiornamento.</string>
<string name="upgrade_available">Una nuova versione di %1$s è disponibile. Puoi continuare a usare la versione corrente senza problemi, ma non avrai le ultime funzionalità finché non installi l\'aggiornamento.</string>
<!-- Welcome -->
<string name="welcome">Benvenuto</string>
<string name="welcome_read_later">OK</string>
<string name="welcome_about">Informazioni su My Tracks</string>
<!-- Announcement -->
<string name="announce_no_distance">Mai Tracks Distanza non disponibile</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">Mai Tracks %1$s %2$.2f %3$s in %4$s a %5$s %6$s</string>
</resources>
+284
View File
@@ -0,0 +1,284 @@
<?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 -->
<array name="task_frequency_options">
<item>Desligado</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>
</array>
<!-- Minimum recording distance -->
<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 (recomendada)</item>
<item>10 m</item>
<item>100 m</item>
</array>
<array name="min_recording_distance_options_ft">
<item>3 pés</item>
<item>6 pés</item>
<item>10 pés</item>
<item>13 pés</item>
<item>16 pés (recomendado)</item>
<item>33 pés</item>
<item>328 pés</item>
</array>
<!-- Maximum recording distance -->
<array name="max_recording_distance_options">
<item>50 m</item>
<item>100 m</item>
<item>200 m (recomendado)</item>
<item>500 m</item>
<item>1000 m</item>
<item>5000 m</item>
</array>
<array name="max_recording_distance_options_ft">
<item>164 pés</item>
<item>328 pés</item>
<item>656 pés (recomendado)</item>
<item>1640 pés</item>
<item>0.6 milhas</item>
<item>3.1 milhas</item>
</array>
<!-- Minimum recording interval -->
<array name="min_recording_interval_options">
<item>economia de bateria (adaptativo)</item>
<item>alta precisão (adaptativo)</item>
<item>máxima (recomendada)</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>
</array>
<!-- Minimum required accuracy -->
<array name="min_required_accuracy_options">
<item>10 m (sinal de GPS excelente)</item>
<item>20 m</item>
<item>50 m</item>
<item>100 m</item>
<item>200 m (recomendada)</item>
<item>500 m</item>
<item>1000 m</item>
<item>2000 m</item>
<item>5000 m (sinal de GPS ruim)</item>
</array>
<array name="min_required_accuracy_options_ft">
<item>33 pés (sinal de GPS excelente)</item>
<item>66 pés</item>
<item>165 pés</item>
<item>328 pés</item>
<item>656 pés (recomendado)</item>
<item>1640 pés</item>
<item>0.6 milhas</item>
<item>1.2 milhas</item>
<item>3.1 milhas (sinal de GPS ruim)</item>
</array>
<!-- Split frequency -->
<string-array name="split_frequency_options">
<item>Sem divisões</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>Sem divisões</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>
<!-- Other non-preference arrays -->
<array name="activity_types">
<item>desconhecido</item>
<item>tipo misto</item>
<item>outros</item>
<item>corrida</item>
<item>corrida na rua</item>
<item>corrida em pista</item>
<item>corrida em trilha</item>
<item>andar</item>
<item>andar rápido</item>
<item>caminhada</item>
<item>caminhada em trilhada</item>
<item>caminhada fora de trilha</item>
<item>escalada</item>
<item>ciclismo</item>
<item>ciclismo em estrada</item>
<item>mountain biking</item>
<item>ciclismo em pista</item>
<item>patinação</item>
<item>patinação inline</item>
<item>skate</item>
<item>andar na neve</item>
<item>esquiar</item>
<item>snow boarding</item>
<item>trenó</item>
<item>velejar no gelo</item>
<item>velejar</item>
<item>canoa</item>
<item>caiaque</item>
<item>remo</item>
<item>barco a motor</item>
<item>balsa</item>
<item>barco de controle remoto</item>
<item>surfe</item>
<item>wind surfing</item>
<item>kite surfing</item>
<item>esquii aquático</item>
<item>wake boarding</item>
<item>avião</item>
<item>hidroavião</item>
<item>avião comercial</item>
<item>helicóptero</item>
<item>balão de ar quente</item>
<item>blimp</item>
<item>avião de controle remoto</item>
<item>helicóptero de controle remoto</item>
<item>paraquedismo</item>
<item>planar</item>
<item>asa delta</item>
<item>parapente</item>
<item>conduzir</item>
<item>andar a cavalo</item>
<item>andar de mula</item>
<item>dirigir carro</item>
<item>dirigir ônibus</item>
<item>trem</item>
<item>motocicleta</item>
<item>motocross</item>
<item>quadriciclo</item>
<item>velejar em terra</item>
<item>frisbee</item>
<item>ultimate frisbee</item>
</array>
<array name="waypoint_types">
<item>caixa eletrônico</item>
<item>banco</item>
<item>bar</item>
<item>churrasco</item>
<item>prédio</item>
<item>ponto de ônibus</item>
<item>café</item>
<item>fogueira</item>
<item>acampamento</item>
<item>igreja</item>
<item>casa de café</item>
<item>loja de conveniência</item>
<item>água potável</item>
<item>deslizamento de rochas</item>
<item>balsa</item>
<item>fogueira</item>
<item>bombeiros</item>
<item>fishing</item>
<item>posto de gasolina</item>
<item>campo de golfe</item>
<item>supermercado</item>
<item>cabelereiro</item>
<item>cais</item>
<item>trilha</item>
<item>hotel</item>
<item>casa</item>
<item>informações</item>
<item>intersecção</item>
<item>caixa de correio</item>
<item>mercado</item>
<item>ponto de encontro</item>
<item>ópera</item>
<item>estacionamento</item>
<item>correio</item>
<item>buraco</item>
<item>delegacia de polícia</item>
<item>cruzamento com ferrovia</item>
<item>restaurante</item>
<item>shopping center</item>
<item>mirante</item>
<item>loja</item>
<item>piscina</item>
<item>telefone</item>
<item>teatro</item>
<item>banheiro</item>
<item>informações turísticas</item>
<item>túnel</item>
<item>árvore</item>
<item>cachoeira</item>
<item>bebedouro</item>
<item>ponto de passagem</item>
</array>
</resources>
+353
View File
@@ -0,0 +1,353 @@
<?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">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="list_tracks">Caminhos</string>
<string name="list_markers">Marcadores</string>
<string name="delete_all_tracks">Apagar todos os caminhos</string>
<string name="settings">Configurações</string>
<string name="elevation">Elevação</string>
<string name="choose_track_message">Por favor selecione o caminho a ser visto</string>
<string name="current_track">Caminho atual</string>
<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_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>
<string name="error_invalid_gpx_format">O arquivo não tem um formato GPX válido.</string>
<string name="error_generic">Ocorreu um erro. Por favor tente novamente.</string>
<string name="error_track_does_not_exist">Caminho não existe.</string>
<string name="error_out_of_memory">O arquivo é grande demais (deve ser menos de 500KB). Abortando.</string>
<string name="error_unable_to_insert_marker">Impossível inserir marcador - posição indisponível.</string>
<!-- Status messages -->
<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_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_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>
<string name="status_statistics_inserted">Um marcador de estatísticas foi inserido..</string>
<!-- Progress dialog -->
<string name="progress_title">Por favor aguarde...</string>
<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_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="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>
<!-- Used by DeleteAllDataHandler -->
<string name="are_you_sure_question">Você tem certeza?</string>
<string name="all_data_will_be_permanently_deleted">Todos os seus caminhos e marcadores serão apagados deste telefone.</string>
<string name="track_will_be_permanently_deleted">O caminho e todos os seus marcadores serão permanentemente apagados deste telefone.</string>
<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 &lt;a href='http://mytracks.appspot.com'&gt;My Tracks&lt;/a&gt; no Android."</string>
<string name="new_map_title">Novo mapa</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>
<!-- Used by the track recording service -->
<string name="recording_your_track">"Gravando seu caminho..."</string>
<string name="new_track">"Caminho %d"</string>
<!-- Common -->
<string name="no">Não</string>
<string name="yes">Sim</string>
<string name="error">Erro</string>
<string name="success">Successo</string>
<string name="waypoint">Ponto de passagem</string>
<!-- Placemark labels for start and end of track -->
<string name="start">(Início)</string>
<string name="end">(Fim)</string>
<!-- 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_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>
<string name="tracklist_edit_track">Editar detalhes</string>
<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_delete_all">Apagar todos os caminhos</string>
<string name="tracklist_pick_one">Escolha um caminho. Pressione&amp;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>
<!-- 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_pick_one">Escolha um marcador. Pressione&amp;segure para mais opções.</string>
<!-- MyTracks Details -->
<string name="trackdetails_title">Detalhes do Caminho</string>
<string name="trackdetails_name">Nome do Caminho</string>
<string name="trackdetails_description">Descrição do Caminho</string>
<string name="trackdetails_category">Tipo de Atividade (por ex. caminhada, ciclismo, escalada...)</string>
<!-- MyTracks Waypoint Details -->
<string name="waypointdetails_title">Detalhes do Marcador</string>
<string name="waypointdetails_name">Nome do Marcador</string>
<string name="waypointdetails_description">Descrição do Marcador</string>
<string name="waypointdetails_category">Tipo do Marcador (por ex. Prédio, Mirante, Cachoeira...)</string>
<!-- MyTracks Settings -->
<string name="mytracks_settings">Configurações do My Tracks</string>
<string name="settings_display">Exibição</string>
<string name="settings_recording">Gravação</string>
<string name="settings_sharing">Compartilhamento</string>
<string name="settings_announcement_frequency">Tempo entre anúncios</string>
<string name="settings_announcement_frequency_summary">Tempo mínimo entre dois anúncios de voz</string>
<string name="settings_announcement_not_available_summary">Anúncios de voz não estão disponíveis em sua versão do Android</string>
<string name="settings_min_recording_distance">Dist. mín. entre pontos</string>
<string name="settings_min_recording_distance_summary">Menor distância entre duas gravações da sua posição</string>
<string name="settings_max_recording_distance">Dist. máx. entre pontos</string>
<string name="settings_max_recording_distance_summary">Se dois pontos forem mais distantes do que isto, a trilha será dividida</string>
<string name="settings_min_recording_interval">Tempo mín. entre pontos</string>
<string name="settings_min_recording_interval_summary">Menor intervalo de tempo entre a gravação de dois pontos</string>
<string name="settings_min_required_accuracy">Precisão mínima</string>
<string name="settings_min_required_accuracy_summary">A gravação será interrompida enquanto a precisão da sua posição for menor que esta</string>
<string name="settings_metric_units">Unidades métricas</string>
<string name="settings_metric_units_summary_on">Todas as distâncias serão exibidas em unidades métricas</string>
<string name="settings_metric_units_summary_off">Todas as distâncias serão exibidas em unidades imperiais</string>
<string name="settings_map_public">Tornar mapas públicos</string>
<string name="settings_map_public_summary_on">Os mapas enviados ao maps.google.com serão visíveis por qualquer pessoa</string>
<string name="settings_map_public_summary_off">Os mapas enviados ao maps.google.com não serão listados publicamente</string>
<string name="settings_report_speed_or_pace">Exibir velocidade</string>
<string name="settings_report_speed_or_pace_summary_on">A velocidade será exibida</string>
<string name="settings_report_speed_or_pace_summary_off">O passo será exibido</string>
<string name="settings_share_url_only">Compartilhar apenas URL</string>
<string name="settings_share_url_only_summary_on">Apenas a URL do mapa será enviada ao compartilhar</string>
<string name="settings_share_url_only_summary_off">O conteúdo do mapa também será incluído ao compartilhar</string>
<string name="settings_split_frequency">Freqüência de divisão</string>
<string name="settings_split_frequency_summary">Maior tempo ou distância de uma gravação antes que ela seja dividida em duas</string>
<string name="pace_label">Passo</string>
<!-- 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:
%s</string>
<string name="send_track_subject">Eu gostaria de compartilhar um caminho com você</string>
<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>
<!-- Visibility -->
<string name="public_map">Público</string>
<string name="unlisted_map">Não listado</string>
<string name="mapslist_no_maps_available">Você ainda não tem nenhum mapa.</string>
<!-- Statistics View -->
<!-- Average Moving -->
<string name="average_moving_speed_label">Velocidade Méd. em Movimento</string>
<string name="average_moving_pace_label">Passo Médio em Movimento</string>
<!-- Average -->
<string name="average_speed_label">Velocidade Média</string>
<string name="average_pace_label">Passo Médio</string>
<!-- Min -->
<string name="elevation_chart_name">Carta de elevação</string>
<string name="elevation_gain_label">Ganho de elevação</string>
<string name="elevation_label">Elevação</string>
<!-- Max -->
<string name="min_elevation_label">Elevação Mínima</string>
<string name="min_grade_label">Subida mínima</string>
<string name="min_pace_label">Passo Mínimo</string>
<string name="max_elevation_label">Elevação Máxima</string>
<string name="max_grade_label">Subida máxima</string>
<string name="max_speed_label">Velocidade Máxima</string>
<string name="loading_track">Carregando caminho...</string>
<!-- Chart Settings -->
<string name="chart_settings">Configurações do gráfico</string>
<!-- X Axis -->
<string name="x_axis">Eixo X</string>
<string name="by_distance">Por Distância</string>
<string name="by_time">Por Tempo</string>
<!-- Y Axis -->
<string name="y_axis">Eixo Y</string>
<!-- Units -->
<!-- Time -->
<string name="hour">hora</string>
<string name="hours">horas</string>
<string name="hr">h</string>
<string name="minute">minuto</string>
<string name="minutes">minutos</string>
<string name="second">segundo</string>
<string name="seconds">segundos</string>
<!-- Distance -->
<string name="feet">pés</string>
<string name="kilometers_long">kilômetros</string>
<string name="miles_long">milhas</string>
<!-- Speed and Pace -->
<string name="kilometer_per_hour_long">kilômetros por hora</string>
<string name="per_kilometer">por kilômetro</string>
<string name="mile_per_hour_long">milhas por hora</string>
<string name="per_mile">por milha</string>
<!-- Stats Labels -->
<string name="moving_time_label">Tempo em Movimento</string>
<string name="total_time_label">Tempo Total</string>
<string name="time_label">Tempo</string>
<string name="sd_unavail">SD não disponível</string>
<string name="speed">Velocidade</string>
<string name="start_trip">Você deve começar uma viagem.</string>
<string name="statistics">Estatísticas</string>
<string name="total_distance_label">Distância Total</string>
<string name="distance_label">Distância</string>
<string name="unknown">-</string>
<string name="waiting">Aguardando...</string>
<!-- End User License Agreement -->
<string name="eula_title">Contrato de Licença de Usuário Final</string>
<string name="accept">Aceitar</string>
<string name="decline">Recusar</string>
<!-- 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>
<!-- Getting the account to upload to. -->
<string name="no_account_found_title">Nenhuma conta encontrada</string>
<string name="no_account_found">Não foi encontrada nenhuma conta para a qual trilhas possam ser enviadas.</string>
<string name="choose_account_title">Escolher conta</string>
<!-- SD card -->
<string name="io_no_external_storage_found">Nenhum armazenamento externo foi encontrado. Assegure-se de que um cartão SD esteja inserido e que seu telefone não esteja montado em um computador.</string>
<string name="io_write_failed">Impossível gravar arquivo.</string>
<string name="io_create_dir_failed">Impossível criar diretório no cartão SD.</string>
<string name="io_write_finished">Gravação no cartão SD concluída.</string>
<!-- VersionChecker -->
<string name="version_check_title">Checar Atualizações</string>
<string name="version_check_upgrade_button">Atualizar Agora</string>
<string name="version_check_continue_button">Continuar sem Atualizar</string>
<string name="upgrade_required">Sua versão do %1$s pode não funcionar mais corretamente, e não é mais suportada. Por favor atualize para continuar usando %1$s.</string>
<string name="upgrade_recommended">Sua versão do %1pode não funcionar mais corretamente. Você pode atualizar agora, ou continuar usando-a por seu próprio risco. Algumas funcionalidades como sincronização com servidores podem não funcionar até que atualize.</string>
<string name="upgrade_available">Uma nova versão do %1$s está disponível. Você pode continuar a usar sua versão atual sem problemas, porém não terá acesso aos novos recursos até que atualize.</string>
<!-- Welcome -->
<string name="welcome">Bem-vindo</string>
<string name="welcome_about">Sobre My Tracks</string>
<!-- Announcement -->
<string name="announce_no_distance">My Tracks sem distância</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 em %4$s a %5$s %6$s</string>
</resources>
+374
View File
@@ -0,0 +1,374 @@
<?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>Off</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>
<!-- DO NOT TRANSLATE -->
<string-array name="task_frequency_values">
<item>-1</item>
<item>1</item>
<item>2</item>
<item>5</item>
<item>10</item>
<item>15</item>
<item>30</item>
<item>60</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 (recommended)</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 (recommended)</item>
<item>33 ft</item>
<item>328 ft</item>
</string-array>
<!-- DO NOT TRANSLATE -->
<string-array name="min_recording_distance_values">
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>10</item>
<item>100</item>
</string-array>
<!-- Maximum recording distance -->
<string-array name="max_recording_distance_options">
<item>50 m</item>
<item>100 m</item>
<item>200 m (recommended)</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 (recommended)</item>
<item>1640 ft</item>
<item>0.6 miles</item>
<item>3.1 miles</item>
</string-array>
<!-- DO NOT TRANSLATE -->
<string-array name="max_recording_distance_values">
<item>50</item>
<item>100</item>
<item>200</item>
<item>500</item>
<item>1000</item>
<item>5000</item>
</string-array>
<!-- Minimum recording interval -->
<string-array name="min_recording_interval_options">
<item>battery miser (adaptive)</item>
<item>high accuracy (adaptive)</item>
<item>highest (recommended)</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>
<!-- DO NOT TRANSLATE -->
<string-array name="min_recording_interval_values">
<item>-2</item>
<item>-1</item>
<item>0</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>10</item>
<item>20</item>
<item>30</item>
<item>60</item>
<item>120</item>
<item>300</item>
<item>480</item>
<item>900</item>
<item>1800</item>
</string-array>
<!-- Minimum required accuracy -->
<string-array name="min_required_accuracy_options">
<item>10 m (excellent GPS signal)</item>
<item>20 m</item>
<item>50 m</item>
<item>100 m</item>
<item>200 m (recommended)</item>
<item>500 m</item>
<item>1000 m</item>
<item>2000 m</item>
<item>5000 m (poor GPS signal)</item>
</string-array>
<string-array name="min_required_accuracy_options_ft">
<item>33 ft (excellent GPS signal)</item>
<item>66 ft</item>
<item>165 ft</item>
<item>328 ft</item>
<item>656 ft (recommended)</item>
<item>1640 ft</item>
<item>0.6 miles</item>
<item>1.2 miles</item>
<item>3.1 miles (poor GPS signal)</item>
</string-array>
<!-- DO NOT TRANSLATE -->
<string-array name="min_required_accuracy_values">
<item>10</item>
<item>20</item>
<item>50</item>
<item>100</item>
<item>200</item>
<item>500</item>
<item>1000</item>
<item>2000</item>
<item>5000</item>
</string-array>
<!-- Split frequency -->
<string-array name="split_frequency_options">
<item>No splitting</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>
<!-- DO NOT TRANSLATE -->
<string-array name="split_frequency_values">
<item>0</item>
<item>-100</item>
<item>-50</item>
<item>-25</item>
<item>-10</item>
<item>-5</item>
<item>-1</item>
<item>60</item>
<item>30</item>
<item>15</item>
<item>10</item>
<item>5</item>
<item>2</item>
<item>1</item>
</string-array>
<!-- Other non-preference arrays -->
<array name="activity_types">
<item>unknown</item>
<item>mixed type</item>
<item>other</item>
<item>running</item>
<item>street running</item>
<item>track running</item>
<item>trail running</item>
<item>walking</item>
<item>speed walking</item>
<item>hiking</item>
<item>trail hiking</item>
<item>off trail hiking</item>
<item>climbing</item>
<item>cycling</item>
<item>road biking</item>
<item>mountain biking</item>
<item>track cycling</item>
<item>skating</item>
<item>inline skating</item>
<item>skate boarding</item>
<item>snow shoeing</item>
<item>skiing</item>
<item>snow boarding</item>
<item>sled</item>
<item>ice sailing</item>
<item>sailing</item>
<item>paddling</item>
<item>kayaking</item>
<item>rowing</item>
<item>motor boating</item>
<item>ferry</item>
<item>RC boat</item>
<item>surfing</item>
<item>wind surfing</item>
<item>kite surfing</item>
<item>water skiing</item>
<item>wake boarding</item>
<item>airplane</item>
<item>seaplane</item>
<item>commercial airplane</item>
<item>helicopter</item>
<item>hot air balloon</item>
<item>blimp</item>
<item>RC airplane</item>
<item>RC helicopter</item>
<item>sky jumping</item>
<item>gliding</item>
<item>hang gliding</item>
<item>para gliding</item>
<item>riding</item>
<item>horse back riding</item>
<item>donkey back riding</item>
<item>driving car</item>
<item>driving bus</item>
<item>train</item>
<item>motor bike</item>
<item>dirt bike</item>
<item>ATV</item>
<item>land sailing</item>
<item>frisbee</item>
<item>ultimate frisbee</item>
</array>
<array name="waypoint_types">
<item>ATM</item>
<item>bank</item>
<item>bar</item>
<item>barbeque</item>
<item>building</item>
<item>bus stop</item>
<item>cafe</item>
<item>campfire</item>
<item>campground</item>
<item>church</item>
<item>coffee house</item>
<item>convenience store</item>
<item>drinking water</item>
<item>falling rocks</item>
<item>ferry</item>
<item>fire place</item>
<item>fire station</item>
<item>fishing</item>
<item>gas station</item>
<item>golf course</item>
<item>grocery store</item>
<item>hair dresser</item>
<item>harbor</item>
<item>hiking path</item>
<item>hotel</item>
<item>house</item>
<item>information</item>
<item>intersection</item>
<item>mail box</item>
<item>market</item>
<item>meeting point</item>
<item>opera</item>
<item>parking</item>
<item>post office</item>
<item>pothole</item>
<item>police station</item>
<item>railway crossing</item>
<item>restaurant</item>
<item>shopping</item>
<item>sight</item>
<item>store</item>
<item>swimming pool</item>
<item>telephone</item>
<item>theater</item>
<item>toilet</item>
<item>tourist information</item>
<item>tunnel</item>
<item>tree</item>
<item>waterfall</item>
<item>water fountain</item>
<item>way point</item>
</array>
<!-- DO NOT TRANSLATE -->
<array name="export_formats">
<item>GPX</item>
<item>KML</item>
<item>CSV</item>
</array>
</resources>
+31
View File
@@ -0,0 +1,31 @@
<?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>
<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="opaque_shadow">#70000000</color>
<color name="stat_label_background">#FFF0F0F0</color>
<color name="stat_label_text">#FF0F0F0F</color>
</resources>
+406
View File
@@ -0,0 +1,406 @@
<?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="app_name">My Tracks</string>
<!-- Used by the Menu -->
<string name="start_recording">Record track</string>
<string name="stop_recording">Stop recording</string>
<string name="switch_to_sat">Satellite Mode</string>
<string name="switch_to_map">Map Mode</string>
<string name="mylocation">My Location</string>
<string name="list_tracks">Tracks</string>
<string name="list_markers">Markers</string>
<string name="delete_all_tracks">Delete all tracks</string>
<string name="settings">Settings</string>
<string name="elevation">Elevation</string>
<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>
<!-- 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_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>
<string name="error_unable_to_read_file">Unable to read from file.</string>
<string name="error_invalid_gpx_format">File does not have a valid GPX format.</string>
<string name="error_generic">An error occurred. Please try again.</string>
<string name="error_track_does_not_exist">Track does not exist.</string>
<string name="error_out_of_memory">This file is too big (must be less than 500 KB). Aborting.</string>
<string name="error_unable_to_insert_marker">Unable to insert marker. No location fix available.</string>
<!-- Status messages -->
<string name="wait_for_fix">Waiting for a better GPS fix. Make sure the sky is visible.</string>
<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_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>
<string name="status_mymap_info">It may sometimes take a few minutes before new tracks appear.</string>
<string name="status_enable_gps">Please tap here to go to Security and Location Settings and check \'enable GPS satellites\'. Press back button to return.</string>
<string name="status_approximate_location">Note: An approximate location as determined from cell towers and WIFI networks is shown.</string>
<string name="status_no_location">A location can currently not be determined. Enable more location sources (see Security and Location Settings) and make sure the sky is visible. Try again later.</string>
<string name="status_waypoint_inserted">A way point marker was inserted.</string>
<string name="status_statistics_inserted">A statistics marker was inserted.</string>
<!-- Progress dialog -->
<string name="progress_title">Please wait...</string>
<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_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="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>
<!-- Used by DeleteAllDataHandler -->
<string name="are_you_sure_question">Are you sure?</string>
<string name="all_data_will_be_permanently_deleted">All tracks and markers will be deleted from this phone.</string>
<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 -->
<string name="new_map_description">Created by My Tracks on Android.</string>
<string name="my_map_link">Created by &lt;a href=\'http://mytracks.appspot.com\'&gt;My Tracks&lt;/a&gt; on Android.</string>
<string name="new_map_title">New map</string>
<!-- Formatting of track and marker descriptions -->
<string name="points">Points</string>
<string name="recorded_date">Recorded</string>
<string name="category">Activity type</string>
<string name="waypoint_category">Marker type</string>
<string name="part">(Part %d)</string>
<!-- Used by the track recording service -->
<string name="recording_your_track">Recording your track...</string>
<string name="new_track">Track %d</string>
<!-- Common -->
<string name="no">No</string>
<string name="yes">Yes</string>
<string name="ok">OK</string>
<string name="error">Error</string>
<string name="success">Success</string>
<string name="waypoint">Waypoint</string>
<!-- Placemark labels for start and end of track -->
<string name="start">(Start)</string>
<string name="end">(End)</string>
<!-- TrackList -->
<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_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>
<string name="tracklist_edit_track">Edit details</string>
<string name="tracklist_write_to_sd">Write to SD card...</string>
<string name="tracklist_save_as_gpx">Save a GPX file</string>
<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_btn_send_all_to_mymaps">Send to Google My Maps</string>
<string name="tracklist_btn_delete_all">Delete all tracks</string>
<!-- Export All -->
<string name="tracklist_btn_export_all">Export all tracks</string>
<string name="export_done">Export finished</string>
<string name="tracklist_pick_one">Pick a track. Press&amp;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_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_clear_map">Clear map</string>
<!-- Waypoints list -->
<string name="waypointslist_btn_delete_all">Delete all markers</string>
<string name="waypointslist_this_waypoint">This Marker</string>
<string name="waypointslist_delete_waypoint">Delete</string>
<string name="waypointslist_edit_waypoint">Edit details</string>
<string name="waypointslist_show_waypoint">Show on map</string>
<string name="waypointslist_btn_insert_waypoint">Insert waypoint</string>
<string name="waypointslist_btn_insert_statistics">Insert statistics</string>
<string name="waypointslist_pick_one">Pick a marker. Press&amp;hold for more options.</string>
<!-- MyTracks Details -->
<string name="trackdetails_title">Track Details</string>
<string name="trackdetails_name">Track Name</string>
<string name="trackdetails_description">Track Description</string>
<string name="trackdetails_category">Activity Type (e.g. hiking, cycling, running, climbing...)</string>
<!-- MyTracks Waypoint Details -->
<string name="waypointdetails_title">Marker Details</string>
<string name="waypointdetails_name">Marker Name</string>
<string name="waypointdetails_description">Marker Description</string>
<string name="waypointdetails_category">Marker Type (e.g. Building, Pothole, Sight...)</string>
<!-- MyTracks Settings -->
<string name="mytracks_settings">My Tracks Settings</string>
<string name="settings_display">Display</string>
<string name="settings_recording">Recording</string>
<string name="settings_sharing">Sharing</string>
<string name="settings_announcement_frequency">Announcement frequency</string>
<string name="settings_announcement_frequency_summary">Minimum time between two voice announcements</string>
<string name="settings_announcement_not_available_summary">Text-to-speech announcements are not available in your version of Android</string>
<string name="settings_min_recording_distance">Min distance between points</string>
<string name="settings_min_recording_distance_summary">Smallest distance between two recordings of your position</string>
<string name="settings_max_recording_distance">Max distance between points</string>
<string name="settings_max_recording_distance_summary">If two points are further than this, the track will be split</string>
<string name="settings_min_recording_interval">Min time between points</string>
<string name="settings_min_recording_interval_summary">Smallest time interval between two recordings of your position</string>
<string name="settings_min_required_accuracy">Minimum accuracy</string>
<string name="settings_min_required_accuracy_summary">Recording will be paused if your position is not at least this accurate</string>
<string name="settings_metric_units">Use metric units</string>
<string name="settings_metric_units_summary_on">All distances will be displayed in metric units</string>
<string name="settings_metric_units_summary_off">All distances will be displayed in imperial units</string>
<string name="settings_map_public">Make maps public</string>
<string name="settings_map_public_summary_on">Uploaded maps will be visible to anyone on maps.google.com</string>
<string name="settings_map_public_summary_off">Uploaded maps will not be listed publicly on maps.google.com</string>
<string name="settings_report_speed_or_pace">Display speed</string>
<string name="settings_report_speed_or_pace_summary_on">Speed will be displayed</string>
<string name="settings_report_speed_or_pace_summary_off">Pace will be displayed</string>
<string name="settings_share_url_only">Share only URL</string>
<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>
<string name="pace_label">Pace</string>
<!-- MyTracksSky -->
<string name="mytracks_sky">GPS Satellites</string>
<!-- My Maps -->
<string name="select_map_message">Pick a map from your account:</string>
<string name="create_new_map">Create new map...</string>
<string name="map_list_title">Send to Google My Maps</string>
<string name="maps_list_loading">Loading maps...</string>
<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>
<string name="map_description">Map Description:</string>
<string name="map_searchable_edit">Make this map and its contents show up in search results</string>
<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:
%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>
<!-- Visibility -->
<string name="public_map">Public</string>
<string name="unlisted_map">Unlisted</string>
<string name="mapslist_no_maps_available">You don\'t have any maps, yet.</string>
<!-- Statistics View -->
<!-- Average Moving -->
<string name="average_moving_speed_label">Average Moving Speed</string>
<string name="average_moving_pace_label">Average Moving Pace</string>
<!-- Average -->
<string name="average_speed_label">Average Speed</string>
<string name="average_pace_label">Average Pace</string>
<string name="elevation_chart_name">Elevation Chart</string>
<string name="elevation_gain_label">Elevation Gain</string>
<string name="elevation_label">Elevation</string>
<string name="latitude_label">Latitude</string>
<string name="longitude_label">Longitude</string>
<!-- Min -->
<string name="min_elevation_label">Min Elevation</string>
<string name="min_grade_label">Min Grade</string>
<string name="min_pace_label">Min Pace</string>
<!-- Max -->
<string name="max_elevation_label">Max Elevation</string>
<string name="max_grade_label">Max Grade</string>
<string name="max_speed_label">Max Speed</string>
<string name="loading_track">Loading track...</string>
<!-- Chart Settings -->
<string name="chart_settings">Chart Settings</string>
<!-- X Axis -->
<string name="x_axis">X Axis</string>
<string name="by_distance">By Distance</string>
<string name="by_time">By Time</string>
<!-- Y Axis -->
<string name="y_axis">Y Axis</string>
<!-- Units -->
<!-- Time -->
<string name="hour">hour</string>
<string name="hours">hours</string>
<string name="hr">hr</string>
<string name="min">min</string>
<string name="minute">minute</string>
<string name="minutes">minutes</string>
<string name="second">second</string>
<string name="seconds">seconds</string>
<!-- Distance -->
<string name="meter">m</string>
<string name="kilometer">km</string>
<string name="kilometers_long">kilometers</string>
<string name="feet">ft</string>
<string name="mile">mi</string>
<string name="miles_long">miles</string>
<!-- Speed and Pace -->
<string name="kilometer_per_hour">km/h</string>
<string name="kilometer_per_hour_long">kilometers per hour</string>
<string name="min_per_kilometer">min/km</string>
<string name="per_kilometer">per kilometer</string>
<string name="mile_per_hour">mi/h</string>
<string name="mile_per_hour_long">miles per hour</string>
<string name="min_per_mile">min/mi</string>
<string name="per_mile">per mile</string>
<!-- Stats Labels -->
<string name="moving_time_label">Moving Time</string>
<string name="total_time_label">Total Time</string>
<string name="time_label">Time</string>
<string name="sd_unavail">SD Unavailable</string>
<string name="speed">Speed</string>
<string name="start_trip">You must start a trip.</string>
<string name="statistics">Statistics</string>
<string name="total_distance_label">Total Distance</string>
<string name="distance_label">Distance</string>
<string name="unknown">-</string>
<string name="waiting">Waiting...</string>
<!-- End User License Agreement -->
<string name="eula_title">End User License Agreement</string>
<string name="accept">Accept</string>
<string name="decline">Decline</string>
<!-- About -->
<string name="about">About</string>
<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="version">1.0.14</string>
<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>
<!-- Send to Google -->
<string name="sendtogoogle_title">Send to...</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>
<string name="sendtogoogle_create_new_map">Create a new map</string>
<string name="sendtogoogle_pick_existing_map">Pick an existing map</string>
<string name="sendtogoogle_send_stats">Send track statistics</string>
<string name="sendtogoogle_send_stats_and_points">Send statistics and points</string>
<!-- Getting the account to upload to. -->
<string name="no_account_found_title">No Account Found</string>
<string name="no_account_found">No account found to upload tracks to.</string>
<string name="choose_account_title">Choose Account</string>
<!-- SD card -->
<string name="io_no_external_storage_found">No external storage was found. Make sure that a SD card is inserted and that your phone is not mounted to a computer.</string>
<string name="io_write_failed">Unable to write to file.</string>
<string name="io_create_dir_failed">Unable to create directory on SD card.</string>
<string name="io_write_finished">Finished writing the track to SD card.</string>
<!-- VersionChecker -->
<string name="version_check_title">Upgrade Check</string>
<string name="version_check_upgrade_button">Upgrade Now</string>
<string name="version_check_continue_button">Continue Without Upgrading</string>
<string name="upgrade_required">Your version of %1$s may no longer work properly, and is no longer supported. Please upgrade in order to continue using %1$s.</string>
<string name="upgrade_recommended">Your version of %1$s may no longer work properly. You may upgrade it now, or continue to use it at your own risk. Some functionality such as server synchronization may not function until you upgrade.</string>
<string name="upgrade_available">A new version of %1$s is available. You may continue to use your current version without problems, but you won\'t get the latest features until you upgrade.</string>
<!-- Welcome -->
<string name="welcome">Welcome</string>
<string name="welcome_read_later">Ok</string>
<string name="welcome_about">About My Tracks</string>
<!-- Announcement -->
<string name="announce_no_distance">My Tracks no distance</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 in %4$s at %5$s %6$s</string>
<!-- Check Units -->
<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>
</resources>
+112
View File
@@ -0,0 +1,112 @@
<?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.
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Display settings -->
<PreferenceCategory android:title="@string/settings_display">
<CheckBoxPreference
android:key="metricUnits"
android:title="@string/settings_metric_units"
android:summaryOn="@string/settings_metric_units_summary_on"
android:summaryOff="@string/settings_metric_units_summary_off"
android:defaultValue="true" />
<CheckBoxPreference
android:key="reportSpeed"
android:title="@string/settings_report_speed_or_pace"
android:summaryOn="@string/settings_report_speed_or_pace_summary_on"
android:summaryOff="@string/settings_report_speed_or_pace_summary_off"
android:defaultValue="true" />
</PreferenceCategory>
<!-- Recording settings -->
<PreferenceCategory android:title="@string/settings_recording">
<com.google.android.apps.mytracks.IntegerListPreference
android:key="announcementFrequency"
android:title="@string/settings_announcement_frequency"
android:summary="@string/settings_announcement_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="splitFrequency"
android:title="@string/settings_split_frequency"
android:summary="@string/settings_split_frequency_summary"
android:entries="@array/split_frequency_options"
android:entryValues="@array/split_frequency_values"
android:defaultValue="0" />
<com.google.android.apps.mytracks.IntegerListPreference
android:key="minRecordingInterval"
android:title="@string/settings_min_recording_interval"
android:summary="@string/settings_min_recording_interval_summary"
android:entries="@array/min_recording_interval_options"
android:entryValues="@array/min_recording_interval_values"
android:defaultValue="0" />
<com.google.android.apps.mytracks.IntegerListPreference
android:key="minRecordingDistance"
android:title="@string/settings_min_recording_distance"
android:summary="@string/settings_min_recording_distance_summary"
android:entries="@array/min_recording_distance_options"
android:entryValues="@array/min_recording_distance_values"
android:defaultValue="5" />
<com.google.android.apps.mytracks.IntegerListPreference
android:key="maxRecordingDistance"
android:title="@string/settings_max_recording_distance"
android:summary="@string/settings_max_recording_distance_summary"
android:entries="@array/max_recording_distance_options"
android:entryValues="@array/max_recording_distance_values"
android:defaultValue="200" />
<com.google.android.apps.mytracks.IntegerListPreference
android:key="minRequiredAccuracy"
android:title="@string/settings_min_required_accuracy"
android:summary="@string/settings_min_required_accuracy_summary"
android:entries="@array/min_required_accuracy_options"
android:entryValues="@array/min_required_accuracy_values"
android:defaultValue="200" />
<com.google.android.apps.mytracks.IntegerListPreference
android:key="signalSamplingFrequency"
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" />
</PreferenceCategory>
<!-- Sharing settings -->
<PreferenceCategory android:title="@string/settings_sharing">
<CheckBoxPreference
android:key="defaultMapPublic"
android:title="@string/settings_map_public"
android:summaryOn="@string/settings_map_public_summary_on"
android:summaryOff="@string/settings_map_public_summary_off"
android:defaultValue="true" />
<CheckBoxPreference
android:key="shareUrlOnly"
android:title="@string/settings_share_url_only"
android:summaryOn="@string/settings_share_url_only_summary_on"
android:summaryOff="@string/settings_share_url_only_summary_off"
android:defaultValue="false" />
</PreferenceCategory>
</PreferenceScreen>
@@ -0,0 +1,64 @@
/*
* 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;
/**
* A rectangle in geographical space.
*/
public class GeoRect {
public int top;
public int left;
public int bottom;
public int right;
public GeoRect() {
top = 0;
left = 0;
bottom = 0;
right = 0;
}
public GeoRect(GeoPoint center, int latSpan, int longSpan) {
top = center.getLatitudeE6() - latSpan / 2;
left = center.getLongitudeE6() - longSpan / 2;
bottom = center.getLatitudeE6() + latSpan / 2;
right = center.getLongitudeE6() + longSpan / 2;
}
public GeoPoint getCenter() {
return new GeoPoint(top / 2 + bottom / 2, left / 2 + right / 2);
}
public int getLatSpan() {
return bottom - top;
}
public int getLongSpan() {
return right - left;
}
public boolean contains(GeoPoint geoPoint) {
if (geoPoint.getLatitudeE6() >= top
&& geoPoint.getLatitudeE6() <= bottom
&& geoPoint.getLongitudeE6() >= left
&& geoPoint.getLongitudeE6() <= right) {
return true;
}
return false;
}
}
@@ -0,0 +1,29 @@
/*
* 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.maps.MapsClient;
/**
* Constants for My Maps.
*/
public class MyMapsConstants {
public static final String MAPSHOP_BASE_URL =
"http://maps.google.com/maps/ms";
public static final String MAPSHOP_SERVICE = MapsClient.SERVICE;
private MyMapsConstants() { }
}
@@ -0,0 +1,247 @@
/*
* 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);
}
}
@@ -0,0 +1,101 @@
/*
* 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);
}
}
@@ -0,0 +1,195 @@
/*
* 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;
}
}
@@ -0,0 +1,190 @@
/*
* 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.contains("401")) {
errorType = ERROR_AUTH;
} else {
errorType = ERROR_CONNECTION;
}
} catch (IOException e) {
Log.e(MyTracksConstants.TAG, "Exception", e);
errorMessage = e.getMessage();
if (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;
}
}
@@ -0,0 +1,350 @@
/*
* 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);
}
}
@@ -0,0 +1,66 @@
/*
* 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,184 @@
/*
* 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.apps.mymaps.MyMapsGDataWrapper.QueryFunction;
import com.google.android.apps.mytracks.MyTracksConstants;
import com.google.android.maps.mytracks.R;
import com.google.wireless.gdata.GDataException;
import com.google.wireless.gdata.client.HttpException;
import com.google.wireless.gdata.data.Entry;
import com.google.wireless.gdata.maps.MapsClient;
import com.google.wireless.gdata.parser.GDataParser;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import java.io.IOException;
public class VersionChecker {
/** The User id for the account storing MyTracks versions. */
private static final String VERSION_USER_ID = "116927647071651051525";
private static final String VERSION_CLIENT = "AndroidMyTracks";
private static final String VERSION_STATUS_LATEST = "latest";
private static final String VERSION_STATUS_OKAY = "okay";
private static final String VERSION_STATUS_OLD = "old";
private static final String VERSION_STATUS_BAD = "bad";
private final TabActivity parentActivity;
private Dialog dialog;
private boolean canceledAvailable;
private boolean canceledRecommended;
public VersionChecker(TabActivity parent) {
parentActivity = parent;
canceledAvailable = false;
canceledRecommended = false;
startMapsQueryThread();
}
private void startMapsQueryThread() {
new Thread() {
@Override
public void run() {
MyMapsGDataWrapper mapsGDataWrapper =
new MyMapsGDataWrapper(parentActivity);
mapsGDataWrapper.runQuery(new QueryFunction() {
@Override
public void query(MapsClient client) throws IOException, Exception {
doMapsQuery(client);
}
});
mapsGDataWrapper.cleanUp();
}
}.start();
}
private void doMapsQuery(MapsClient client)
throws GDataException, IOException, HttpException {
final boolean newVersion; // Returned new version available
final boolean newVersionRecommended; // Returned new version recommended
final boolean newVersionRequired; // Returned new version required
String currentVersion = parentActivity.getString(R.string.version);
GDataParser parser = client.getParserForFeed(
Entry.class,
MapsClient.getVersionFeed(
VERSION_USER_ID,
VERSION_CLIENT,
currentVersion),
"");
Entry en = parser.parseStandaloneEntry();
if (currentVersion.equals(en.getTitle())) {
if (VERSION_STATUS_LATEST.equals(en.getContent())) {
newVersion = false;
newVersionRecommended = false;
newVersionRequired = false;
} else if (VERSION_STATUS_OKAY.equals(en.getContent())) {
newVersion = true;
newVersionRecommended = false;
newVersionRequired = false;
} else if (VERSION_STATUS_OLD.equals(en.getContent())) {
newVersion = true;
newVersionRecommended = true;
newVersionRequired = false;
} else if (VERSION_STATUS_BAD.equals(en.getContent())) {
newVersion = true;
newVersionRecommended = true;
newVersionRequired = true;
} else {
Log.e(MyTracksConstants.TAG,
"Got unknown version status: " + en.getContent());
return;
}
} else {
Log.e(MyTracksConstants.TAG,
"Current version '" + currentVersion + "' doesn't match entry: "
+ en.getTitle());
return;
}
if (!newVersion) {
Log.d(MyTracksConstants.TAG, "No new version available.");
return;
}
final AlertDialog.Builder dialogBuilder =
new AlertDialog.Builder(parentActivity);
dialogBuilder.setTitle(R.string.version_check_title);
dialogBuilder.setPositiveButton(R.string.version_check_upgrade_button,
new OnClickListener() {
public void onClick(DialogInterface di, int number) {
Intent upgradeIntent = new Intent();
upgradeIntent.setAction(Intent.ACTION_VIEW);
upgradeIntent.setData(Uri.parse(String.format("market://search?q=%s",
parentActivity.getResources().getString(
R.string.app_name).toString())));
parentActivity.startActivity(upgradeIntent);
parentActivity.finish();
}
});
if (newVersionRequired) {
dialogBuilder.setCancelable(false);
} else {
final boolean recommended = newVersionRecommended;
dialogBuilder.setNegativeButton(R.string.version_check_continue_button,
new OnClickListener() {
public void onClick(DialogInterface di, int number) {
dialog.dismiss();
canceledAvailable = true;
if (recommended) {
canceledRecommended = true;
}
}
});
}
int messageResource;
if (newVersionRequired) {
messageResource = R.string.upgrade_required;
} else if (newVersionRecommended) {
messageResource = R.string.upgrade_recommended;
if (canceledRecommended) {
return;
}
} else {
messageResource = R.string.upgrade_available;
if (canceledAvailable) {
return;
}
}
String message = parentActivity.getResources().getString(messageResource);
dialogBuilder.setMessage(String.format(message,
parentActivity.getResources().getString(R.string.app_name)));
parentActivity.getTabHost().post(new Runnable() {
public void run() {
dialog = dialogBuilder.create();
dialog.show();
}
});
}
}
@@ -0,0 +1,128 @@
/*
* 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.accounts.Account;
import com.google.android.accounts.AccountManager;
import com.google.android.maps.mytracks.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.util.Log;
/**
* Choose which account to upload track information to.
* @author Sandor Dornbush
*/
public class AccountChooser {
/**
* The last selected account.
*/
private int selectedAccountIndex = -1;
private Account selectedAccount = null;
/**
* An interface for receiving updates once the user has selected the account.
*/
public interface AccountHandler {
/**
* Handle the account being selected.
* @param account The selected account or null if none could be found
*/
public void handleAccountSelected(Account account);
}
/**
* Chooses the best account to upload to.
* If no account is found the user will be alerted.
* If only one account is found that will be used.
* If multiple accounts are found the user will be allowed to choose.
*
* @param activity The parent activity
* @param handler The handler to be notified when an account has been selected
*/
public void chooseAccount(final Activity activity,
final AccountHandler handler) {
final Account[] accounts = AccountManager.get(activity)
.getAccountsByType(MyTracksConstants.ACCOUNT_TYPE);
if (accounts.length < 1) {
alertNoAccounts(activity, handler);
return;
}
if (accounts.length == 1) {
handler.handleAccountSelected(accounts[0]);
return;
}
// TODO This should be read out of a preference.
if (selectedAccount != null) {
handler.handleAccountSelected(selectedAccount);
return;
}
// Let the user choose.
Log.e(MyTracksConstants.TAG, "Multiple matching accounts found.");
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.choose_account_title);
builder.setCancelable(false);
builder.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
selectedAccount = accounts[selectedAccountIndex];
handler.handleAccountSelected(selectedAccount);
}
});
builder.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
handler.handleAccountSelected(null);
}
});
String[] choices = new String[accounts.length];
for (int i = 0; i < accounts.length; i++) {
choices[i] = accounts[i].name;
}
builder.setSingleChoiceItems(choices, selectedAccountIndex,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectedAccountIndex = which;
}
});
builder.show();
}
/**
* Puts up a dialog alerting the user that no suitable account was found.
*/
private void alertNoAccounts(final Activity activity,
final AccountHandler handler) {
Log.e(MyTracksConstants.TAG, "No matching accounts found.");
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(R.string.no_account_found_title);
builder.setMessage(R.string.no_account_found);
builder.setCancelable(true);
builder.setNegativeButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
handler.handleAccountSelected(null);
}
});
builder.show();
}
}
@@ -0,0 +1,592 @@
/*
* 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.mytracks;
import com.google.android.apps.mytracks.ChartView.Mode;
import com.google.android.apps.mytracks.content.MyTracksProviderUtils;
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.stats.DoubleBuffer;
import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.apps.mytracks.util.MyTracksUtils;
import com.google.android.apps.mytracks.util.UnitConversions;
import com.google.android.maps.mytracks.R;
import android.app.Activity;
import android.content.SharedPreferences;
import android.database.ContentObserver;
import android.database.Cursor;
import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.ZoomControls;
import java.util.ArrayList;
/**
* An activity that displays a chart from the track point provider.
*
* @author Sandor Dornbush
*/
public class ChartActivity extends Activity implements
SharedPreferences.OnSharedPreferenceChangeListener {
private double profileLength = 0;
private boolean metricUnits = true;
private boolean reportSpeed = true;
/**
* The track id that is displayed.
*/
private long selectedTrackId = -1;
/**
* Id of the last location that was seen when reading tracks from the
* provider. This is used to determine which locations are new compared to the
* last time the chart was updated.
*/
private long lastSeenLocationId = -1;
private long startTime = -1;
private Location lastLocation;
/**
* The id of the track currently being recorded.
*/
private long recordingTrackId = -1;
private final DoubleBuffer elevationBuffer =
new DoubleBuffer(MyTracksConstants.ELEVATION_SMOOTHING_FACTOR);
private final DoubleBuffer speedBuffer =
new DoubleBuffer(MyTracksConstants.SPEED_SMOOTHING_FACTOR);
private Mode mode = Mode.BY_DISTANCE;
/**
* Utilities to deal with the database.
*/
private MyTracksProviderUtils providerUtils;
/*
* UI elements:
*/
private ChartView cv;
private MenuItem chartSettingsMenuItem;
private LinearLayout busyPane;
private ZoomControls zoomControls;
/** Handler for callbacks to the UI thread */
private final Handler uiHandler = new Handler();
/**
* A runnable that can be posted to the UI thread. It will remove the spinner
* (if any), enable/disable zoom controls and orange pointer as appropriate
* and redraw.
*/
private final Runnable updateChart = new Runnable() {
@Override
public void run() {
busyPane.setVisibility(View.GONE);
zoomControls.setIsZoomInEnabled(cv.canZoomIn());
zoomControls.setIsZoomOutEnabled(cv.canZoomOut());
cv.setShowPointer(selectedTrackIsRecording());
cv.invalidate();
}
};
/**
* A runnable that can be posted to the UI thread. It will show the spinner.
*/
private final Runnable showSpinner = new Runnable() {
@Override
public void run() {
busyPane.setVisibility(View.VISIBLE);
}
};
/**
* An observer for the tracks provider. Will listen to new track points being
* added and update the chart if necessary.
*/
private ContentObserver observer;
/**
* An observer for the waypoints provider. Will listen to new way points being
* added and update the chart if necessary.
*/
private ContentObserver waypointObserver;
/**
* A thread with a looper. Post to updateTrackHandler to execute Runnables on
* this thread.
*/
private final HandlerThread updateTrackThread =
new HandlerThread("updateTrackThread");
/** Handler for updateTrackThread */
private Handler updateTrackHandler;
/**
* A runnable that update 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[]>();
do {
lastSeenLocationId = cursor.getLong(idColumnIdx);
Location location = providerUtils.createLocation(cursor);
if (location != null && MyTracksUtils.isValidLocation(location)) {
data.add(getDataPoint(location, track));
}
} 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();
}
});
}
}
};
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key != null) {
if (key.equals(MyTracksSettings.SELECTED_TRACK)) {
selectedTrackId =
sharedPreferences.getLong(MyTracksSettings.SELECTED_TRACK, -1);
readProfileAsync();
} else if (key.equals(MyTracksSettings.METRIC_UNITS)) {
metricUnits =
sharedPreferences.getBoolean(MyTracksSettings.METRIC_UNITS, true);
cv.setMetricUnits(metricUnits);
readProfileAsync();
} else if (key.equals(MyTracksSettings.REPORT_SPEED)) {
reportSpeed =
sharedPreferences.getBoolean(MyTracksSettings.REPORT_SPEED, true);
cv.setReportSpeed(reportSpeed, this);
readProfileAsync();
} else if (key.equals(MyTracksSettings.RECORDING_TRACK)) {
recordingTrackId =
sharedPreferences.getLong(MyTracksSettings.RECORDING_TRACK, -1);
runOnUiThread(updateChart);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.w(MyTracksConstants.TAG, "ChartActivity.onCreate");
super.onCreate(savedInstanceState);
MyTracks.getInstance().setChartActivity(this);
providerUtils = MyTracksProviderUtils.Factory.get(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mytracks_elevation);
ViewGroup layout = (ViewGroup) findViewById(R.id.elevation_chart);
cv = new ChartView(this);
cv.setMode(this.mode);
LayoutParams params =
new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
layout.addView(cv, params);
SharedPreferences preferences =
getSharedPreferences(MyTracksSettings.SETTINGS_NAME, 0);
if (preferences != null) {
selectedTrackId =
preferences.getLong(MyTracksSettings.SELECTED_TRACK, -1);
recordingTrackId =
preferences.getLong(MyTracksSettings.RECORDING_TRACK, -1);
metricUnits = preferences.getBoolean(MyTracksSettings.METRIC_UNITS, true);
cv.setMetricUnits(metricUnits);
reportSpeed = preferences.getBoolean(MyTracksSettings.REPORT_SPEED, true);
cv.setReportSpeed(reportSpeed, this);
preferences.registerOnSharedPreferenceChangeListener(this);
}
busyPane = (LinearLayout) findViewById(R.id.elevation_busypane);
zoomControls = (ZoomControls) findViewById(R.id.elevation_zoom);
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomIn();
}
});
zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
zoomOut();
}
});
updateTrackThread.start();
updateTrackHandler = new Handler(updateTrackThread.getLooper());
// Register observer for the track point provider:
Handler contentHandler = new Handler();
observer = new ContentObserver(contentHandler) {
@Override
public void onChange(boolean selfChange) {
Log.d(MyTracksConstants.TAG, "ChartActivity: ContentObserver.onChange");
// Check for any new locations and append them to the currently
// recording track:
if (!MyTracks.getInstance().isRecording()) {
// No track is being recorded. We should not be here.
return;
}
if (selectedTrackId != recordingTrackId) {
// no track, or one other than the recording track is selected, don't
// bother.
return;
}
// Update can potentially be lengthy, put it in its own thread:
updateTrackHandler.post(updateTrackRunnable);
super.onChange(selfChange);
}
};
waypointObserver = new ContentObserver(contentHandler) {
@Override
public void onChange(boolean selfChange) {
Log.d(MyTracksConstants.TAG,
"MyTracksMap: ContentObserver.onChange waypoints");
if (selectedTrackId < 0) {
return;
}
Thread t = new Thread() {
@Override
public void run() {
readWaypoints();
ChartActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
cv.invalidate();
}
});
}
};
t.start();
super.onChange(selfChange);
}
};
readProfileAsync();
}
@Override
protected void onPause() {
super.onPause();
unregisterContentObservers();
}
@Override
protected void onResume() {
super.onResume();
// Make sure any updates that might have happened are propagated to this
// activity:
observer.onChange(false);
waypointObserver.onChange(false);
registerContentObservers();
}
/**
* Register the content observer for the map overlay.
*/
private void registerContentObservers() {
getContentResolver().registerContentObserver(TrackPointsColumns.CONTENT_URI,
false/* notifyForDescendents */, observer);
getContentResolver().registerContentObserver(WaypointsColumns.CONTENT_URI,
false/* notifyForDescendents */, waypointObserver);
}
/**
* Unregister the content observer for the map overlay.
*/
private void unregisterContentObservers() {
getContentResolver().unregisterContentObserver(observer);
getContentResolver().unregisterContentObserver(waypointObserver);
}
private boolean selectedTrackIsRecording() {
return selectedTrackId == recordingTrackId;
}
private void zoomIn() {
cv.zoomIn();
zoomControls.setIsZoomInEnabled(cv.canZoomIn());
zoomControls.setIsZoomOutEnabled(cv.canZoomOut());
}
private void zoomOut() {
cv.zoomOut();
zoomControls.setIsZoomInEnabled(cv.canZoomIn());
zoomControls.setIsZoomOutEnabled(cv.canZoomOut());
}
public void setMode(Mode newMode) {
if (this.mode != newMode) {
this.mode = newMode;
cv.setMode(this.mode);
readProfileAsync();
}
}
public Mode getMode() {
return mode;
}
public void setSeriesEnabled(int index, boolean enabled) {
cv.getChartValueSeries(index).setEnabled(enabled);
runOnUiThread(updateChart);
}
public boolean isSeriesEnabled(int index) {
return cv.getChartValueSeries(index).isEnabled();
}
private void readWaypoints() {
if (selectedTrackId < 0) {
return;
}
Cursor cursor = null;
cv.clearWaypoints();
try {
// We will silently drop extra waypoints to make the app responsive.
cursor =
providerUtils.getWaypointsCursor(selectedTrackId, 0,
MyTracksConstants.MAX_DISPLAYED_TRACK_POINTS);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
Waypoint wpt = providerUtils.createWaypoint(cursor);
cv.addWaypoint(wpt);
} while (cursor.moveToNext());
}
}
} catch (RuntimeException e) {
Log.w(MyTracksConstants.TAG, "Caught an unexpected exception.", e);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
chartSettingsMenuItem =
menu.add(0, MyTracksConstants.MENU_CHART_SETTINGS, 0,
R.string.chart_settings);
chartSettingsMenuItem.setIcon(R.drawable.chart_settings);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MyTracksConstants.MENU_CHART_SETTINGS:
MyTracks.getInstance().showDialogSafely(MyTracks.DIALOG_CHART_SETTINGS);
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* Given a location, creates a new data point for the chart. A data point is
* an array double[2], where:
* data[0] = the time or distance
* data[1] = the elevation
* data[2] = the speed
*
* @param location a location
* @return the data point
*/
public double[] getDataPoint(Location location, Track track) {
double[] result = new double[3];
switch (mode) {
case BY_DISTANCE:
result[0] = profileLength;
if (lastLocation != null) {
double d = lastLocation.distanceTo(location);
if (metricUnits) {
profileLength += d / 1000.0;
} else {
profileLength += d * UnitConversions.KM_TO_MI / 1000.0;
}
}
break;
case BY_TIME:
if (startTime == -1) {
// Base case
startTime = location.getTime();
}
result[0] = (location.getTime() - startTime);
break;
default:
Log.w(MyTracksConstants.TAG, "ChartActivity unknown mode: " + mode);
}
elevationBuffer.setNext(metricUnits
? location.getAltitude()
: location.getAltitude() * UnitConversions.M_TO_FT);
result[1] = elevationBuffer.getAverage();
if (lastLocation == null) {
if (Math.abs(location.getSpeed() - 128) > 1) {
speedBuffer.setNext(location.getSpeed());
}
} else if (TripStatistics.isValidSpeed(
location.getTime(), location.getSpeed(), lastLocation.getTime(),
lastLocation.getSpeed(), speedBuffer)
&& (location.getSpeed() <= track.getMaxSpeed())) {
speedBuffer.setNext(location.getSpeed());
}
result[2] = speedBuffer.getAverage() * 3.6;
if (!metricUnits) {
result[2] *= UnitConversions.KM_TO_MI;
}
if (!reportSpeed && (result[2] != 0)) {
// Format as hours per unit
result[2] = (60.0 / result[2]);
}
lastLocation = location;
return result;
}
/**
* Sets the chart data points reading from the provider. This is non-blocking.
*/
private void readProfileAsync() {
cv.reset();
updateTrackHandler.post(new Runnable() {
public void run() {
runOnUiThread(showSpinner);
readProfile();
readWaypoints();
runOnUiThread(updateChart);
}
});
}
/**
* Reads the track profile from the provider. This is a blocking function and
* should not be run from the UI thread.
*/
private void readProfile() {
profileLength = 0;
lastLocation = null;
startTime = -1;
Cursor cursor = null;
if (selectedTrackId < 0) {
return;
}
Track track = providerUtils.getTrack(selectedTrackId);
if (track == null) {
return;
}
long lastLocationRead = track.getStartId();
long totalLocations = track.getStopId() - track.getStartId();
// Limit the number of chart readings. Ideally we would want around 1024.
int chartSamplingFrequency = Math.max(1, (int) (totalLocations / 1024.0));
int bufferSize = 1024;
try {
final ArrayList<double[]> theData = new ArrayList<double[]>();
int points = 0;
while (lastLocationRead < track.getStopId()) {
cursor = providerUtils.getLocationsCursor(
selectedTrackId, lastLocationRead, bufferSize, false);
if (cursor != null) {
elevationBuffer.reset();
speedBuffer.reset();
if (cursor.moveToFirst()) {
final int idColumnIdx =
cursor.getColumnIndexOrThrow(TrackPointsColumns._ID);
while (cursor.moveToNext()) {
points++;
Location location = providerUtils.createLocation(cursor);
if (MyTracksUtils.isValidLocation(location)) {
lastLocationRead = lastSeenLocationId =
cursor.getLong(idColumnIdx);
double[] point = getDataPoint(location, track);
if (points % chartSamplingFrequency == 0) {
theData.add(point);
}
}
}
} else {
lastLocationRead += bufferSize;
}
} else {
lastLocationRead += bufferSize;
}
cursor.close();
cursor = null;
}
runOnUiThread(new Runnable() {
public void run() {
cv.setDataPoints(theData);
}
});
} catch (RuntimeException e) {
Log.w(MyTracksConstants.TAG, "Caught unexpected exception.", e);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
}
@@ -0,0 +1,87 @@
/*
* 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.mytracks;
import com.google.android.apps.mytracks.ChartView.Mode;
import com.google.android.maps.mytracks.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.RadioGroup;
/**
* An activity that allows the user to set the chart settings.
*
* @author Sandor Dornbush
*/
public class ChartSettingsDialog extends Dialog {
private RadioButton distance;
private CheckBox elevation;
private CheckBox speed;
public ChartSettingsDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.chart_settings);
Button cancel = (Button) findViewById(R.id.chart_settings_cancel);
cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
Button ok = (Button) findViewById(R.id.chart_settings_ok);
ok.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
handleOk();
}
});
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);
}
public void setup(ChartActivity chart) {
RadioGroup rd = (RadioGroup) findViewById(R.id.chart_settings_x);
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));
}
private void handleOk() {
ChartActivity chart = MyTracks.getInstance().getChartActivity();
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());
dismiss();
}
}
@@ -0,0 +1,214 @@
/*
* 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.mytracks;
import com.google.android.apps.mytracks.stats.ExtremityMonitor;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import java.text.DecimalFormat;
/**
* This class encasulates meta data about one series of values for a chart.
*
* @author Sandor Dornbush
*/
public class ChartValueSeries {
private final ExtremityMonitor monitor = new ExtremityMonitor();
private final DecimalFormat format;
private final Path path = new Path();
private final Paint fillPaint;
private final Paint strokePaint;
private final int rounding;
private String title;
private double min = 0;
private double max = 1;
private int effectiveMax = 0;
private int effectiveMin = 0;
private double spread = 0;
private boolean enabled = true;
/**
* Constructs a new chart value series.
*
* @param context The context for the chart
* @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
*/
public ChartValueSeries(Context context,
String formatString,
Paint fill,
Paint stroke,
int rounding,
int titleId) {
this.format = new DecimalFormat(formatString);
this.fillPaint = fill;
this.strokePaint = stroke;
this.rounding = rounding;
this.title = context.getString(titleId);
}
/**
* Draws the path of the chart
*/
public void drawPath(Canvas c) {
c.drawPath(path, fillPaint);
if (strokePaint != null) {
c.drawPath(path, strokePaint);
}
}
/**
* Resets this series
*/
public void reset() {
monitor.reset();
}
/**
* Updates this series with a new value
*/
public void update(double d) {
monitor.update(d);
}
/**
* @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;
}
}
/**
* Determines what the min and max of the chart will be.
* This will round down and up the min and max respectively.
*/
public void updateDimension() {
if (monitor.getMax() == Double.NEGATIVE_INFINITY) {
min = 0;
max = 1;
} else {
min = monitor.getMin();
max = monitor.getMax();
}
// Round it up.
effectiveMax = ((int) (max / rounding)) * rounding + rounding;
// Round it down.
effectiveMin = ((int) (min / rounding)) * rounding;
if (min < 0) {
effectiveMin -= rounding;
}
spread = effectiveMax - effectiveMin;
}
/**
* @return The length of the longest string from the series
*/
public int getMaxLabelLength() {
String minS = format.format(effectiveMin);
String maxS = format.format(effectiveMax);
return Math.max(minS.length(), maxS.length());
}
/**
* @return The rounded down minimum value
*/
public int getMin() {
return effectiveMin;
}
/**
* @return The rounded up maximum value
*/
public int getMax() {
return effectiveMax;
}
/**
* @return The difference between the min and max values in the series
*/
public double getSpread() {
return spread;
}
/**
* @return The format for the decimal format for this series
*/
DecimalFormat getFormat() {
return format;
}
/**
* @return The path for this series
*/
Path getPath() {
return path;
}
/**
* @return The paint for this series
*/
Paint getPaint() {
return (strokePaint == null)
? fillPaint
: strokePaint;
}
/**
* @return The title of the series
*/
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
/**
* @return is this series enabled
*/
public boolean isEnabled() {
return enabled;
}
/**
* Sets the series enabled flag.
*/
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
}

Some files were not shown because too many files have changed in this diff Show More