Merge heads
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
@@ -19,120 +19,10 @@ limitations under the License.
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical" >
|
||||
<ScrollView style="@style/ScrollView.WithBottomButtons" >
|
||||
<LinearLayout
|
||||
<WebView
|
||||
android:id="@+id/help_webview"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="8dp" >
|
||||
<ImageView
|
||||
android:contentDescription="@string/my_tracks_app_name"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:scaleType="fitStart"
|
||||
android:src="@drawable/my_tracks_icon" />
|
||||
<TextView
|
||||
android:text="@string/help_my_tracks_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_my_tracks_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_location_precision_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_location_precision_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_gps_signal_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_gps_signal_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_data_connection_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_data_connection_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_elevation_precision_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_elevation_precision_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_battery_life_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_battery_life_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_share_friends_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_share_friends_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_send_track_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:id="@+id/help_send_track_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_maps_public_unlisted_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:id="@+id/help_maps_public_unlisted_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_share_visibility_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_share_visibility_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_split_track_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_split_track_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_saved_files_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_saved_files_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_external_storage_access_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_external_storage_access_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_marker_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_marker_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_split_marker_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_split_marker_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_delete_tracks_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_delete_tracks_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
<TextView
|
||||
android:text="@string/help_edit_tracks_question"
|
||||
style="@style/HelpQuestion" />
|
||||
<TextView
|
||||
android:text="@string/help_edit_tracks_answer"
|
||||
style="@style/HelpAnswer" />
|
||||
</LinearLayout>
|
||||
android:layout_width="match_parent" />
|
||||
</ScrollView>
|
||||
<LinearLayout style="@style/BottomButtonBar" >
|
||||
<include layout="@layout/help_buttons" />
|
||||
|
||||
@@ -14,81 +14,73 @@ 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:gravity="top"
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="12dp"
|
||||
android:paddingRight="12dp"
|
||||
android:paddingTop="8dp" >
|
||||
<ImageView
|
||||
android:contentDescription="@string/icon_track"
|
||||
android:id="@+id/list_item_icon"
|
||||
android:paddingTop="8dp"
|
||||
android:shrinkColumns="1"
|
||||
android:stretchColumns="1" >
|
||||
<TableRow
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:paddingTop="4dp" />
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="vertical" >
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent" >
|
||||
<ImageView
|
||||
android:contentDescription="@string/icon_track"
|
||||
android:id="@+id/list_item_icon"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_width="wrap_content" />
|
||||
<TableLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="horizontal" >
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:orientation="vertical" >
|
||||
android:shrinkColumns="0"
|
||||
android:stretchColumns="0" >
|
||||
<TableRow>
|
||||
<TextView
|
||||
android:id="@+id/list_item_name"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_width="fill_parent"
|
||||
android:singleLine="true"
|
||||
style="@style/TextLarge" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/list_item_date"
|
||||
android:layout_gravity="bottom"
|
||||
android:paddingLeft="8dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@android:color/secondary_text_dark"
|
||||
style="@style/TextSmall" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="horizontal" >
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:orientation="vertical" >
|
||||
<TextView
|
||||
android:id="@+id/list_item_date"
|
||||
style="@style/ListItemDate" />
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TextView
|
||||
android:id="@+id/list_item_time_distance"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_width="fill_parent"
|
||||
android:singleLine="true"
|
||||
android:textColor="@android:color/primary_text_dark"
|
||||
style="@style/TextSmall" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/list_item_time"
|
||||
android:layout_gravity="bottom"
|
||||
android:paddingLeft="8dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@android:color/secondary_text_dark"
|
||||
style="@style/TextSmall" />
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:id="@+id/list_item_time"
|
||||
style="@style/ListItemDate" />
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent" >
|
||||
<TextView
|
||||
android:id="@+id/list_item_recording"
|
||||
android:layout_column="1"
|
||||
android:singleLine="true"
|
||||
style="@style/TextSmall" />
|
||||
</TableRow>
|
||||
<TableRow
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent" >
|
||||
<TextView
|
||||
android:id="@+id/list_item_description"
|
||||
android:layout_column="1"
|
||||
android:singleLine="false"
|
||||
android:textColor="@android:color/secondary_text_dark"
|
||||
style="@style/TextSmall" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
@@ -69,11 +69,11 @@ Google은 이용자에 대한 위치정보의 이용∙제공사실을 위치정
|
||||
구글코리아 유한회사\n
|
||||
대표자: 염동훈\n
|
||||
주소 : 서울 강남구 역삼동 737 강남파이낸스센터 22층\n
|
||||
전화번호 : (02) 531-9000\n
|
||||
</string>
|
||||
전화번호 : (02) 531-9000\n</string>
|
||||
<string name="maps_public_unlisted_url">support.google.com/maps/bin/answer.py?answer=144365</string>
|
||||
<string name="marker_statistics_icon_url">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string>
|
||||
<string name="marker_waypoint_icon_url">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string>
|
||||
<string name="my_tracks_help_url">http://support.google.com/gmm/bin/topic.py?topic=2391064</string>
|
||||
<string name="my_tracks_privacy_url">www.google.com/policies/privacy/</string>
|
||||
<string name="my_tracks_recording_service_name">My Tracks Recording Service</string>
|
||||
<string name="my_tracks_support_url">groups.google.com/a/googleproductforums.com/forum/#!categories/maps/mytracks</string>
|
||||
|
||||
@@ -562,14 +562,14 @@ limitations under the License.
|
||||
Google Drive.">
|
||||
Do you want to sync your tracks with Google Drive? This will allow you to view your tracks in
|
||||
Google Drive, share tracks via Google Drive, and view tracks shared with you. All tracks synced
|
||||
to Google Drive will be private by default.
|
||||
to Google Drive will be private by default.
|
||||
</string>
|
||||
<string name="enable_sync_title"
|
||||
translation_description="The dialog title asking the user if he wants to enable sync with Google
|
||||
Drive.">
|
||||
Sync with Google Drive
|
||||
</string>
|
||||
|
||||
|
||||
<!-- Eula -->
|
||||
<string name="eula_accept"
|
||||
translation_description="In the 'Terms of Service' dialog, the button to accept.">
|
||||
@@ -780,183 +780,6 @@ limitations under the License.
|
||||
Tracks' dialog.">
|
||||
About My Tracks
|
||||
</string>
|
||||
<string name="help_battery_life_answer"
|
||||
translation_description="In the 'Help' page, the answer on battery life.">
|
||||
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 device\'s
|
||||
radios will lengthen battery life. Putting the device into Airplane mode will yield the best
|
||||
results.
|
||||
</string>
|
||||
<string name="help_battery_life_question"
|
||||
translation_description="In the 'Help' page, the question on battery life.">
|
||||
How long does the battery last when recording tracks?
|
||||
</string>
|
||||
<string name="help_data_connection_answer"
|
||||
translation_description="In the 'Help' page, the answer on data connection.">
|
||||
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 a map. Instead, you will see a grey screen or a
|
||||
partial map. Tracks, represented as simple lines, can still be recorded even if there is no data
|
||||
connection.
|
||||
</string>
|
||||
<string name="help_data_connection_question"
|
||||
translation_description="In the 'Help' page, the question on data connection.">
|
||||
Do I need cell signal and data connection to use My Tracks?
|
||||
</string>
|
||||
<string name="help_delete_tracks_answer"
|
||||
translation_description="In the 'Help' page, the answer on delete tracks.">
|
||||
From the track list, select “Delete all” when not recording. This permanently
|
||||
deletes the recorded tracks from the device memory. If you have saved tracks or backups on the
|
||||
external storage, you must delete them separately. You can access the external storage using
|
||||
any file manager app from the Play Store or using a USB cable to connect your device to your
|
||||
computer. Tracks uploaded to Google Maps, Google Fusion Tables, and Google Spreadsheets must
|
||||
also be deleted separately.
|
||||
</string>
|
||||
<string name="help_delete_tracks_question"
|
||||
translation_description="In the 'Help' page, the question on delete tracks.">
|
||||
How do I delete all the tracks from the device?
|
||||
</string>
|
||||
<string name="help_edit_tracks_answer"
|
||||
translation_description="In the 'Help' page, the answer on edit tracks.">
|
||||
Currently, you can\'t with My Tracks. But you can upload your tracks to Google or save them to
|
||||
the external storage to modify them there.
|
||||
</string>
|
||||
<string name="help_edit_tracks_question"
|
||||
translation_description="In the 'Help' page, the question on edit tracks.">
|
||||
How can I edit or correct tracks for accuracy?
|
||||
</string>
|
||||
<string name="help_elevation_precision_answer"
|
||||
translation_description="In the 'Help' page, the help content answer on elevation precision.">
|
||||
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 and wait a few
|
||||
minutes for the elevation to settle to a stable value.
|
||||
</string>
|
||||
<string name="help_elevation_precision_question"
|
||||
translation_description="In the 'Help' page, the question on elevation precision.">
|
||||
How precise is the elevation measurement?
|
||||
</string>
|
||||
<string name="help_external_storage_access_answer"
|
||||
translation_description="In the 'Help' page, the answer on external storage access.">
|
||||
Tracks saved on the external storage are not encrypted. Any application on the device can access
|
||||
them.
|
||||
</string>
|
||||
<string name="help_external_storage_access_question"
|
||||
translation_description="In the 'Help' page, the question on external storage access.">
|
||||
Who can access the tracks saved on the external storage?
|
||||
</string>
|
||||
<string name="help_gps_signal_answer"
|
||||
translation_description="In the 'Help' page, the answer on the GPS signal message.">
|
||||
For My Tracks to work, your device needs to be in line-of-sight contact with the GPS satellites.
|
||||
If the line-of-sight is obstructed by trees, buildings or canyon walls, you may not get an
|
||||
accurate signal. If you see the message, wait a minute or two. If your device still does not
|
||||
find a signal, move to an area clear of obstructions and try again.
|
||||
</string>
|
||||
<string name="help_gps_signal_question"
|
||||
translation_description="In the 'Help' page, the question on the GPS signal message.">
|
||||
Why does the application sometimes display “Waiting for GPS signal.”?
|
||||
</string>
|
||||
<string name="help_location_precision_answer"
|
||||
translation_description="In the 'Help' page, the answer on location precision.">
|
||||
Under optimal conditions, the location error can be +/- 20 feet (6 meters). However, precision
|
||||
depends on the quality of the GPS signal. The blue circle around the orange location arrow
|
||||
indicates estimated precision. (You may need to zoom in or zoom out to see the circle.) You can
|
||||
change the GPS precision at Settings -> Recording -> GPS accuracy.
|
||||
</string>
|
||||
<string name="help_location_precision_question"
|
||||
translation_description="In the 'Help' page, the question on location precision.">
|
||||
How precise are the recorded tracks?
|
||||
</string>
|
||||
<string name="help_maps_public_unlisted_answer"
|
||||
translation_description="In the 'Help' page, the answer on public versus unlisted maps.
|
||||
|
||||
%1$s url. E.g., 'support.google.com/maps/bin/answer.py?answer=144365'.">
|
||||
See %1$s.
|
||||
</string>
|
||||
<string name="help_maps_public_unlisted_question"
|
||||
translation_description="In the 'Help' page, the question on public versus unlisted maps.">
|
||||
What is the difference between public and unlisted when sending a track to Google Maps?
|
||||
</string>
|
||||
<string name="help_marker_answer"
|
||||
translation_description="In the 'Help' page, the answer on markers.">
|
||||
Markers are used to annotate a location.
|
||||
</string>
|
||||
<string name="help_marker_question"
|
||||
translation_description="In the 'Help' page, the question on markers.">
|
||||
What are markers?
|
||||
</string>
|
||||
<string name="help_my_tracks_answer"
|
||||
translation_description="In the 'Help' page, the answer on what is My Tracks.">
|
||||
My Tracks allows you to record GPS tracks and visualize your walking, running, biking or any
|
||||
other activity while watching live performance statistics. My Tracks makes it easy to archive
|
||||
your training history with Google Maps, Google Fusion Tables, and Google Spreadsheets, and share
|
||||
your activities with friends and the world.
|
||||
</string>
|
||||
<string name="help_my_tracks_question"
|
||||
translation_description="In the 'Help' page, the question on what is My Tracks.">
|
||||
What is My Tracks?
|
||||
</string>
|
||||
<string name="help_saved_files_answer"
|
||||
translation_description="In the 'Help' page, the answer on saved files.">
|
||||
You can use Google Earth or similar applications to visualize and edit GPS tracks.
|
||||
</string>
|
||||
<string name="help_saved_files_question"
|
||||
translation_description="In the 'Help' page, the question on saved files.">
|
||||
What can I do with tracks after saving them to the external storage or sharing such files with
|
||||
friends?
|
||||
</string>
|
||||
<string name="help_send_track_answer"
|
||||
translation_description="In the 'Help' page, the answer on sending a track.
|
||||
|
||||
%1$s url. E.g., 'maps.google.com'.
|
||||
%2$s url. E.g., 'google.com/fusiontables'.
|
||||
%3$s url. E.g., 'drive.google.com'.">
|
||||
You can send a track to Google Maps, Google Fusion Tables, and Google Spreadsheets. Tracks sent
|
||||
to Google Maps are at %1$s, “My Places”. Tracks sent to Google Fusion Tables are at
|
||||
%2$s. Tracks sent to Google Spreadsheets are at %3$s.
|
||||
</string>
|
||||
<string name="help_send_track_question"
|
||||
translation_description="In the 'Help' page, the question on sending a track.">
|
||||
Where can I send a track?
|
||||
</string>
|
||||
<string name="help_share_friends_answer"
|
||||
translation_description="In the 'Help' page, the answer on sharing with friends.">
|
||||
You can share a track as a link to Google Maps. Your track will first get uploaded to Google
|
||||
Maps.
|
||||
</string>
|
||||
<string name="help_share_friends_question"
|
||||
translation_description="In the 'Help' page, the question on sharing with friends.">
|
||||
How do I share a track with friends?
|
||||
</string>
|
||||
<string name="help_share_visibility_answer"
|
||||
translation_description="In the 'Help' page, the answer on share visibility.">
|
||||
By default, tracks sent to Google Maps are unlisted, tracks sent to Google Fusion Tables are
|
||||
private, and tracks sent to Google Spreadsheets are private. For Google Maps, you can change the
|
||||
default between public and unlisted via Settings -> Google. After uploading tracks, you can
|
||||
change their visibility in Google Maps, Google Fusion Tables, and Google Spreadsheets.
|
||||
</string>
|
||||
<string name="help_share_visibility_question"
|
||||
translation_description="In the 'Help' page, the question on share visibility.">
|
||||
Who can see the tracks I send to Google Maps, Google Fusion Tables, and Google Spreadsheets?
|
||||
</string>
|
||||
<string name="help_split_marker_answer"
|
||||
translation_description="In the 'Help' page, the answer on split markers.">
|
||||
Split markers are used to segment a track to calculate statistics for each segment. Split
|
||||
markers are inserted by setting the split frequency from the menu.
|
||||
</string>
|
||||
<string name="help_split_marker_question"
|
||||
translation_description="In the 'Help' page, the question on split markers.">
|
||||
What are split markers?
|
||||
</string>
|
||||
<string name="help_split_track_answer"
|
||||
translation_description="In the 'Help' page, the answer on splitting long tracks.">
|
||||
Tracks on Google Maps and Google Fusion Tables are limited to certain sizes.
|
||||
</string>
|
||||
<string name="help_split_track_question"
|
||||
translation_description="In the 'Help' page, the question on splitting long tracks.">
|
||||
Why do very long tracks split into multiple segments upon sending them to Google Maps and
|
||||
Google Fusion Tables?
|
||||
</string>
|
||||
|
||||
<!-- Icon -->
|
||||
<string name="icon_application"
|
||||
@@ -1388,7 +1211,7 @@ limitations under the License.
|
||||
installation when the app wants to write data to My Tracks.">
|
||||
write data to Google My Tracks and start/stop Google My Tracks recording
|
||||
</string>
|
||||
|
||||
|
||||
<!-- Save -->
|
||||
<string name="save_error"
|
||||
translation_description="When saving to the external storage, the error message indicating that
|
||||
@@ -2237,11 +2060,11 @@ limitations under the License.
|
||||
<string name="share_track_add_emails_title"
|
||||
translation_description="The dialog title for adding emails to share a track with.">
|
||||
Add emails
|
||||
</string>
|
||||
</string>
|
||||
<string name="share_track_add_emails_hint"
|
||||
translation_description="The hint in the auto complete text box for entering email addresses.">
|
||||
Enter email addresses
|
||||
</string>
|
||||
</string>
|
||||
<string name="share_track_drive_confirm_message"
|
||||
translation_description="The confirmation message when sharing a track via Google Drive with
|
||||
friends.">
|
||||
@@ -2466,7 +2289,7 @@ limitations under the License.
|
||||
Drive.">
|
||||
Shared with me
|
||||
</string>
|
||||
|
||||
|
||||
<!-- Track Widget -->
|
||||
<string name="track_widget_config_title"
|
||||
translation_description="Title of the page to configure the My Tracks widget items.">
|
||||
|
||||
@@ -106,6 +106,14 @@ limitations under the License.
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:padding">8dp</item>
|
||||
</style>
|
||||
<!-- list item date -->
|
||||
<style name="ListItemDate" parent="@style/TextSmall">
|
||||
<item name="android:gravity">right</item>
|
||||
<item name="android:layout_gravity">bottom</item>
|
||||
<item name="android:paddingLeft">8dp</item>
|
||||
<item name="android:singleLine">true</item>
|
||||
<item name="android:textColor">@android:color/secondary_text_dark</item>
|
||||
</style>
|
||||
<!-- scroll view -->
|
||||
<style name="ScrollView">
|
||||
<item name="android:layout_height">match_parent</item>
|
||||
|
||||
@@ -20,13 +20,13 @@ import com.google.android.apps.mytracks.fragments.AboutDialogFragment;
|
||||
import com.google.android.apps.mytracks.fragments.AboutDialogFragment.AboutCaller;
|
||||
import com.google.android.apps.mytracks.fragments.EulaDialogFragment;
|
||||
import com.google.android.apps.mytracks.fragments.EulaDialogFragment.EulaCaller;
|
||||
import com.google.android.apps.mytracks.util.StringUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.TextView;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
/**
|
||||
* An activity that displays the help page.
|
||||
@@ -39,14 +39,10 @@ public class HelpActivity extends AbstractMyTracksActivity implements AboutCalle
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
TextView mapsPublicUnlisted = (TextView) findViewById(R.id.help_maps_public_unlisted_answer);
|
||||
mapsPublicUnlisted.setText(StringUtils.getHtml(
|
||||
this, R.string.help_maps_public_unlisted_answer, R.string.maps_public_unlisted_url));
|
||||
|
||||
TextView sendTrack = (TextView) findViewById(R.id.help_send_track_answer);
|
||||
sendTrack.setText(StringUtils.getHtml(
|
||||
this, R.string.help_send_track_answer, R.string.send_google_maps_url,
|
||||
R.string.send_google_fusion_tables_url, R.string.send_google_spreadsheets_url));
|
||||
WebView webView = (WebView) findViewById(R.id.help_webview);
|
||||
webView.loadUrl(getString(R.string.my_tracks_help_url));
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.setWebViewClient(new WebViewClient());
|
||||
|
||||
findViewById(R.id.help_ok).setOnClickListener(new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
@@ -74,6 +70,6 @@ public class HelpActivity extends AbstractMyTracksActivity implements AboutCalle
|
||||
|
||||
@Override
|
||||
public void onEulaDone() {
|
||||
// Do nothing
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.google.android.apps.mytracks.fragments;
|
||||
|
||||
import com.google.android.apps.mytracks.util.PreferencesUtils;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
|
||||
import android.app.Activity;
|
||||
@@ -64,20 +65,31 @@ public class EnableSyncDialogFragment extends DialogFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
fragmentActivity = getActivity();
|
||||
return new AlertDialog.Builder(fragmentActivity).setNegativeButton(
|
||||
R.string.generic_cancel, new OnClickListener() {
|
||||
if (PreferencesUtils.getBoolean(
|
||||
fragmentActivity, R.string.drive_sync_key, PreferencesUtils.DRIVE_SYNC_DEFAULT)) {
|
||||
dismiss();
|
||||
caller.onEnableSyncDone(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
return new AlertDialog.Builder(fragmentActivity).setMessage(R.string.enable_sync_message)
|
||||
.setNegativeButton(R.string.generic_cancel, new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
caller.onEnableSyncDone(false);
|
||||
}
|
||||
}).setPositiveButton(R.string.generic_ok, new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
caller.onEnableSyncDone(true);
|
||||
}
|
||||
}).setTitle(R.string.enable_sync_title).setMessage(R.string.enable_sync_message).create();
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
caller.onEnableSyncDone(true);
|
||||
}
|
||||
}).setTitle(R.string.enable_sync_title).create();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -51,8 +51,10 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
@@ -158,6 +160,12 @@ public class SyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
.list().setQ(String.format(Locale.US, SyncUtils.MY_TRACKS_FOLDER_FILES_QUERY, folderId));
|
||||
Map<String, File> myTracksFolderMap = getFiles(myTracksFolderRequest, true);
|
||||
|
||||
// Handle tracks that are already uploaded to Google Drive
|
||||
Set<String> syncedDriveIds = updateSyncedTracks(folderId);
|
||||
for (String driveId : syncedDriveIds) {
|
||||
myTracksFolderMap.remove(driveId);
|
||||
}
|
||||
|
||||
// Get all the KML files in the "Shared with me:/" folder
|
||||
Files.List sharedWithMeRequest = drive.files()
|
||||
.list().setQ(SyncUtils.SHARED_WITH_ME_FILES_QUERY);
|
||||
@@ -176,7 +184,9 @@ public class SyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
do {
|
||||
Track track = myTracksProviderUtils.createTrack(cursor);
|
||||
myTracksProviderUtils.deleteTrack(track.getId());
|
||||
if (!syncedDriveIds.contains(track.getDriveId())) {
|
||||
myTracksProviderUtils.deleteTrack(track.getId());
|
||||
}
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
} finally {
|
||||
@@ -188,6 +198,47 @@ public class SyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates synced tracks.
|
||||
*
|
||||
* @param folderId the folder id
|
||||
* @return drive ids of the synced tracks
|
||||
*/
|
||||
private Set<String> updateSyncedTracks(String folderId) throws IOException {
|
||||
Set<String> result = new HashSet<String>();
|
||||
Cursor cursor = null;
|
||||
try {
|
||||
cursor = myTracksProviderUtils.getTrackCursor(SyncUtils.DRIVE_ID_TRACKS_QUERY, null, null);
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
do {
|
||||
Track track = myTracksProviderUtils.createTrack(cursor);
|
||||
String driveId = track.getDriveId();
|
||||
if (driveId != null && !driveId.equals("")) {
|
||||
if (!track.isSharedWithMe()) {
|
||||
File driveFile = drive.files().get(driveId).execute();
|
||||
if (SyncUtils.isValid(driveFile, folderId)) {
|
||||
merge(track, driveFile);
|
||||
result.add(driveId);
|
||||
} else {
|
||||
/*
|
||||
* Track has a drive id, but the drive id is no longer valid.
|
||||
* E.g., the file is moved to another folder. Clear the drive
|
||||
* id.
|
||||
*/
|
||||
SyncUtils.updateTrackWithDriveFileInfo(myTracksProviderUtils, track, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
} finally {
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs incremental sync.
|
||||
*
|
||||
@@ -241,9 +292,7 @@ public class SyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
* E.g., the file is moved to another folder. Clear the drive
|
||||
* id.
|
||||
*/
|
||||
track.setDriveId("");
|
||||
track.setModifiedTime(-1L);
|
||||
myTracksProviderUtils.updateTrack(track);
|
||||
SyncUtils.updateTrackWithDriveFileInfo(myTracksProviderUtils, track, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ public class ListItemUtils {
|
||||
if (buffer.length() != 0) {
|
||||
buffer.append(" ");
|
||||
}
|
||||
buffer.append("(" + totalDistance + ")");
|
||||
buffer.append(" / " + totalDistance);
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
@@ -138,10 +138,14 @@ public class ListItemUtils {
|
||||
if (category == null || category.length() == 0) {
|
||||
return description;
|
||||
}
|
||||
if (description == null || description.length() == 0) {
|
||||
return category;
|
||||
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
|
||||
buffer.append("[" + category + "]");
|
||||
if (description != null && description.length() != 0) {
|
||||
buffer.append(" " + description);
|
||||
}
|
||||
return "[" + category + "] " + description;
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||