forked from upstream-mirrors/OpenTracks
sync from main
This commit is contained in:
@@ -48,7 +48,7 @@ limitations under the License.
|
|||||||
<TableRow style="@style/AboutTableRow">
|
<TableRow style="@style/AboutTableRow">
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/about_team"
|
android:text="@string/about_team"
|
||||||
style="@style/AboutTextView.Column1"/>
|
style="@style/AboutTextView.Column0"/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_column="1"
|
android:layout_column="1"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -77,7 +77,7 @@ limitations under the License.
|
|||||||
<TableRow style="@style/AboutTableRow">
|
<TableRow style="@style/AboutTableRow">
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/about_version"
|
android:text="@string/about_version"
|
||||||
style="@style/AboutTextView.Column1"/>
|
style="@style/AboutTextView.Column0"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/about_version"
|
android:id="@+id/about_version"
|
||||||
style="@style/AboutTextView"/>
|
style="@style/AboutTextView"/>
|
||||||
@@ -85,7 +85,7 @@ limitations under the License.
|
|||||||
<TableRow style="@style/AboutTableRow">
|
<TableRow style="@style/AboutTableRow">
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/about_support"
|
android:text="@string/about_support"
|
||||||
style="@style/AboutTextView.Column1"/>
|
style="@style/AboutTextView.Column0"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/my_tracks_web_url"
|
android:text="@string/my_tracks_web_url"
|
||||||
style="@style/AboutTextView.Url"/>
|
style="@style/AboutTextView.Url"/>
|
||||||
@@ -93,7 +93,7 @@ limitations under the License.
|
|||||||
<TableRow style="@style/AboutTableRow">
|
<TableRow style="@style/AboutTableRow">
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/about_privacy"
|
android:text="@string/about_privacy"
|
||||||
style="@style/AboutTextView.Column1"/>
|
style="@style/AboutTextView.Column0"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/my_tracks_privacy_url"
|
android:text="@string/my_tracks_privacy_url"
|
||||||
style="@style/AboutTextView.Url"/>
|
style="@style/AboutTextView.Url"/>
|
||||||
|
|||||||
@@ -48,10 +48,10 @@ limitations under the License.
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/WidgetText.Register"
|
style="@style/WidgetTextView.Value"
|
||||||
android:id="@+id/appwidget_distance_text" />
|
android:id="@+id/appwidget_distance_text" />
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/WidgetText"
|
style="@style/WidgetTextView"
|
||||||
android:text="@string/stat_total_distance" />
|
android:text="@string/stat_total_distance" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -64,10 +64,10 @@ limitations under the License.
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:paddingBottom="2px">
|
android:paddingBottom="2px">
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/WidgetText.Register"
|
style="@style/WidgetTextView.Value"
|
||||||
android:id="@+id/appwidget_time_text" />
|
android:id="@+id/appwidget_time_text" />
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/WidgetText"
|
style="@style/WidgetTextView"
|
||||||
android:text="@string/stat_moving_time" />
|
android:text="@string/stat_moving_time" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<ImageView
|
<ImageView
|
||||||
@@ -79,10 +79,10 @@ limitations under the License.
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/WidgetText.Register"
|
style="@style/WidgetTextView.Value"
|
||||||
android:id="@+id/appwidget_speed_text" />
|
android:id="@+id/appwidget_speed_text" />
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/WidgetText"
|
style="@style/WidgetTextView"
|
||||||
android:text="@string/stat_speed" />
|
android:text="@string/stat_speed" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -35,106 +35,106 @@ limitations under the License.
|
|||||||
android:src="@drawable/arrow_icon"/>
|
android:src="@drawable/arrow_icon"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_my_tracks_question"
|
android:text="@string/welcome_my_tracks_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_my_tracks_answer"
|
android:text="@string/welcome_my_tracks_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_app_navigation_question"
|
android:text="@string/welcome_app_navigation_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_app_navigation_answer"
|
android:text="@string/welcome_app_navigation_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_add_graph_question"
|
android:text="@string/welcome_add_graph_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_add_graph_answer"
|
android:text="@string/welcome_add_graph_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_gps_fix_question"
|
android:text="@string/welcome_gps_fix_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_gps_fix_answer"
|
android:text="@string/welcome_gps_fix_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_send_google_question"
|
android:text="@string/welcome_send_google_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_send_google_answer"
|
android:text="@string/welcome_send_google_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_share_friends_question"
|
android:text="@string/welcome_share_friends_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_share_friends_answer"
|
android:text="@string/welcome_share_friends_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_waypoint_marker_question"
|
android:text="@string/welcome_waypoint_marker_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_waypoint_marker_answer"
|
android:text="@string/welcome_waypoint_marker_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_statistics_marker_question"
|
android:text="@string/welcome_statistics_marker_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_statistics_marker_answer"
|
android:text="@string/welcome_statistics_marker_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_data_connection_question"
|
android:text="@string/welcome_data_connection_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_data_connection_answer"
|
android:text="@string/welcome_data_connection_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_battery_life_question"
|
android:text="@string/welcome_battery_life_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_battery_life_answer"
|
android:text="@string/welcome_battery_life_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_share_file_question"
|
android:text="@string/welcome_share_file_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_share_file_answer"
|
android:text="@string/welcome_share_file_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_location_precision_question"
|
android:text="@string/welcome_location_precision_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_location_precision_answer"
|
android:text="@string/welcome_location_precision_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_elevation_precision_question"
|
android:text="@string/welcome_elevation_precision_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_elevation_precision_answer"
|
android:text="@string/welcome_elevation_precision_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_edit_accuracy_question"
|
android:text="@string/welcome_edit_accuracy_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_edit_accuracy_answer"
|
android:text="@string/welcome_edit_accuracy_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_split_track_question"
|
android:text="@string/welcome_split_track_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_split_track_answer"
|
android:text="@string/welcome_split_track_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_delete_all_question"
|
android:text="@string/welcome_delete_all_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_delete_all_answer"
|
android:text="@string/welcome_delete_all_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_my_maps_sharing_question"
|
android:text="@string/welcome_my_maps_sharing_question"
|
||||||
style="@style/WelcomeText.Question"/>
|
style="@style/WelcomeTextView.Question"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:text="@string/welcome_my_maps_sharing_answer"
|
android:text="@string/welcome_my_maps_sharing_answer"
|
||||||
style="@style/WelcomeText"/>
|
style="@style/WelcomeTextView"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
<LinearLayout style="@style/ButtonLayout">
|
<LinearLayout style="@style/ButtonLayout">
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ limitations under the License.
|
|||||||
<item name="android:textSize">20sp</item>
|
<item name="android:textSize">20sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- About dialog TextView Column1 -->
|
<!-- About dialog TextView column 0 -->
|
||||||
<style name="AboutTextView.Column1">
|
<style name="AboutTextView.Column0">
|
||||||
<item name="android:gravity">right</item>
|
<item name="android:gravity">right</item>
|
||||||
<item name="android:layout_column">0</item>
|
<item name="android:layout_column">0</item>
|
||||||
<item name="android:paddingLeft">10dp</item>
|
<item name="android:paddingLeft">10dp</item>
|
||||||
@@ -42,24 +42,42 @@ limitations under the License.
|
|||||||
<item name="android:textSize">18sp</item>
|
<item name="android:textSize">18sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- The style for the unit on the statistics activity. -->
|
<!-- Button -->
|
||||||
<style name="StatsUnit" parent="@android:Widget.TextView">
|
<style name="Button">
|
||||||
<item name="android:gravity">bottom</item>
|
<item name="android:layout_height">48dip</item>
|
||||||
|
<item name="android:layout_weight">1</item>
|
||||||
|
<item name="android:layout_width">0dip</item>
|
||||||
|
<item name="android:maxLines">2</item>
|
||||||
|
<item name="android:textSize">14dip</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Button layout -->
|
||||||
|
<style name="ButtonLayout">
|
||||||
|
<item name="android:background">@drawable/list_bar</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:layout_marginBottom">-2dip</item>
|
<item name="android:layout_width">fill_parent</item>
|
||||||
<item name="android:layout_marginTop">-2dip</item>
|
<item name="android:orientation">horizontal</item>
|
||||||
<item name="android:layout_width">wrap_content</item>
|
<item name="android:paddingLeft">2dip</item>
|
||||||
<item name="android:textColor">@color/stat_label_text</item>
|
<item name="android:paddingRight">2dip</item>
|
||||||
|
<item name="android:paddingTop">4dip</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- The style for the unit on the statistics activity where there is only one string. -->
|
<!-- Button spacer -->
|
||||||
<style name="StatsUnitSolo" parent="@android:Widget.TextView">
|
<style name="ButtonSpacer">
|
||||||
<item name="android:gravity">right</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:layout_marginBottom">-9dip</item>
|
<item name="android:layout_weight">0.25</item>
|
||||||
<item name="android:layout_marginTop">-9dip</item>
|
<item name="android:layout_width">0dip</item>
|
||||||
<item name="android:textColor">@color/stat_label_text</item>
|
<item name="android:orientation">horizontal</item>
|
||||||
|
<item name="android:visibility">gone</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- The style for a view which divides the numerator and denominator of the units on the statistics activity. -->
|
||||||
|
<style name="StatsDivider" parent="@android:Widget.TextView">
|
||||||
|
<item name="android:background">@color/black</item>
|
||||||
|
<item name="android:layout_height">3dip</item>
|
||||||
|
<item name="android:layout_width">fill_parent</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<!-- The style for a text view for displaying a value on the statistics activity. -->
|
<!-- The style for a text view for displaying a value on the statistics activity. -->
|
||||||
<style name="StatsRegister" parent="@android:Widget.TextView">
|
<style name="StatsRegister" parent="@android:Widget.TextView">
|
||||||
<item name="android:gravity">right</item>
|
<item name="android:gravity">right</item>
|
||||||
@@ -94,55 +112,27 @@ limitations under the License.
|
|||||||
<item name="android:layout_width">5dip</item>
|
<item name="android:layout_width">5dip</item>
|
||||||
<item name="android:textSize">40sp</item>
|
<item name="android:textSize">40sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<!-- The style for a view which divides the numerator and denominator of the units on the statistics activity. -->
|
|
||||||
<style name="StatsDivider" parent="@android:Widget.TextView">
|
|
||||||
<item name="android:background">@color/black</item>
|
|
||||||
<item name="android:layout_height">3dip</item>
|
|
||||||
<item name="android:layout_width">fill_parent</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- The style for the track widget. -->
|
<!-- The style for the unit on the statistics activity. -->
|
||||||
<style name="WidgetText" parent="@android:Widget.TextView">
|
<style name="StatsUnit" parent="@android:Widget.TextView">
|
||||||
|
<item name="android:gravity">bottom</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
<item name="android:layout_marginBottom">-2dip</item>
|
||||||
|
<item name="android:layout_marginTop">-2dip</item>
|
||||||
<item name="android:layout_width">wrap_content</item>
|
<item name="android:layout_width">wrap_content</item>
|
||||||
<item name="android:textColor">@color/appwidget_text</item>
|
<item name="android:textColor">@color/stat_label_text</item>
|
||||||
<item name="android:textSize">14sp</item>
|
|
||||||
</style>
|
|
||||||
<style name="WidgetText.Register">
|
|
||||||
<item name="android:width">160px</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- The style for the unit on the statistics activity where there is only one string. -->
|
||||||
|
<style name="StatsUnitSolo" parent="@android:Widget.TextView">
|
||||||
|
<item name="android:gravity">right</item>
|
||||||
|
<item name="android:layout_marginBottom">-9dip</item>
|
||||||
|
<item name="android:layout_marginTop">-9dip</item>
|
||||||
|
<item name="android:textColor">@color/stat_label_text</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<!-- The style for the layout of the bottom buttons. -->
|
<!-- Welcome page TextView -->
|
||||||
<style name="ButtonLayout">
|
<style name="WelcomeTextView">
|
||||||
<item name="android:background">@drawable/list_bar</item>
|
|
||||||
<item name="android:layout_height">wrap_content</item>
|
|
||||||
<item name="android:layout_width">fill_parent</item>
|
|
||||||
<item name="android:orientation">horizontal</item>
|
|
||||||
<item name="android:paddingLeft">2dip</item>
|
|
||||||
<item name="android:paddingRight">2dip</item>
|
|
||||||
<item name="android:paddingTop">4dip</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- The style for the bottom button. -->
|
|
||||||
<style name="Button">
|
|
||||||
<item name="android:layout_height">48dip</item>
|
|
||||||
<item name="android:layout_weight">1</item>
|
|
||||||
<item name="android:layout_width">0dip</item>
|
|
||||||
<item name="android:maxLines">2</item>
|
|
||||||
<item name="android:textSize">14dip</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!-- The style for the spacer on the left and right of the bottom buttons. -->
|
|
||||||
<style name="ButtonSpacer">
|
|
||||||
<item name="android:layout_height">wrap_content</item>
|
|
||||||
<item name="android:layout_weight">0.25</item>
|
|
||||||
<item name="android:layout_width">0dip</item>
|
|
||||||
<item name="android:orientation">horizontal</item>
|
|
||||||
<item name="android:visibility">gone</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="WelcomeText">
|
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:layout_width">fill_parent</item>
|
<item name="android:layout_width">fill_parent</item>
|
||||||
<item name="android:paddingLeft">10sp</item>
|
<item name="android:paddingLeft">10sp</item>
|
||||||
@@ -151,8 +141,22 @@ limitations under the License.
|
|||||||
<item name="android:textSize">16sp</item>
|
<item name="android:textSize">16sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="WelcomeText.Question">
|
<!-- Welcome page TextView question -->
|
||||||
|
<style name="WelcomeTextView.Question">
|
||||||
<item name="android:paddingTop">10sp</item>
|
<item name="android:paddingTop">10sp</item>
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- Widget TextView -->
|
||||||
|
<style name="WidgetTextView">
|
||||||
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
<item name="android:layout_width">wrap_content</item>
|
||||||
|
<item name="android:textColor">@color/appwidget_text</item>
|
||||||
|
<item name="android:textSize">14sp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- Widget TextView value -->
|
||||||
|
<style name="WidgetTextView.Value">
|
||||||
|
<item name="android:width">160px</item>
|
||||||
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -31,6 +31,7 @@ import android.content.DialogInterface;
|
|||||||
import android.content.DialogInterface.OnClickListener;
|
import android.content.DialogInterface.OnClickListener;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.SharedPreferences.Editor;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.CheckBoxPreference;
|
import android.preference.CheckBoxPreference;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.EditTextPreference;
|
||||||
@@ -682,7 +683,9 @@ public class SettingsActivity extends PreferenceActivity {
|
|||||||
metricspeed = newValue;
|
metricspeed = newValue;
|
||||||
}
|
}
|
||||||
SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
|
SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
|
||||||
prefs.edit().putString(getString(id), metricspeed).commit();
|
Editor editor = prefs.edit();
|
||||||
|
editor.putString(getString(id), metricspeed);
|
||||||
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
package com.google.android.apps.mytracks.io.backup;
|
package com.google.android.apps.mytracks.io.backup;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.content.ContentTypeIds;
|
import com.google.android.apps.mytracks.content.ContentTypeIds;
|
||||||
|
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.SharedPreferences.Editor;
|
import android.content.SharedPreferences.Editor;
|
||||||
@@ -77,15 +78,14 @@ class PreferenceBackupHelper {
|
|||||||
*
|
*
|
||||||
* @param data the byte array to read preferences from
|
* @param data the byte array to read preferences from
|
||||||
* @param preferences the shared preferences to edit
|
* @param preferences the shared preferences to edit
|
||||||
* @return whether the preference change was successful
|
|
||||||
* @throws IOException if there are any errors while reading
|
* @throws IOException if there are any errors while reading
|
||||||
*/
|
*/
|
||||||
public boolean importPreferences(byte[] data, SharedPreferences preferences)
|
public void importPreferences(byte[] data, SharedPreferences preferences)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
ByteArrayInputStream bufStream = new ByteArrayInputStream(data);
|
ByteArrayInputStream bufStream = new ByteArrayInputStream(data);
|
||||||
DataInputStream reader = new DataInputStream(bufStream);
|
DataInputStream reader = new DataInputStream(bufStream);
|
||||||
|
|
||||||
return importPreferences(reader, preferences);
|
importPreferences(reader, preferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,10 +93,9 @@ class PreferenceBackupHelper {
|
|||||||
*
|
*
|
||||||
* @param reader the stream to read from
|
* @param reader the stream to read from
|
||||||
* @param preferences the shared preferences to edit
|
* @param preferences the shared preferences to edit
|
||||||
* @return whether the preference change was successful
|
|
||||||
* @throws IOException if there are any errors while reading
|
* @throws IOException if there are any errors while reading
|
||||||
*/
|
*/
|
||||||
public boolean importPreferences(DataInputStream reader,
|
public void importPreferences(DataInputStream reader,
|
||||||
SharedPreferences preferences) throws IOException {
|
SharedPreferences preferences) throws IOException {
|
||||||
Editor editor = preferences.edit();
|
Editor editor = preferences.edit();
|
||||||
editor.clear();
|
editor.clear();
|
||||||
@@ -107,8 +106,7 @@ class PreferenceBackupHelper {
|
|||||||
byte typeId = reader.readByte();
|
byte typeId = reader.readByte();
|
||||||
readAndSetPreference(name, typeId, reader, editor);
|
readAndSetPreference(name, typeId, reader, editor);
|
||||||
}
|
}
|
||||||
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
return editor.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,10 +16,12 @@
|
|||||||
package com.google.android.apps.mytracks.services;
|
package com.google.android.apps.mytracks.services;
|
||||||
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
|
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.SharedPreferences.Editor;
|
||||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -170,24 +172,21 @@ public class PreferenceManager implements OnSharedPreferenceChangeListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setAutoResumeTrackCurrentRetry(int retryAttempts) {
|
public void setAutoResumeTrackCurrentRetry(int retryAttempts) {
|
||||||
sharedPreferences
|
Editor editor = sharedPreferences.edit();
|
||||||
.edit()
|
editor.putInt(autoResumeTrackCurrentRetryKey, retryAttempts);
|
||||||
.putInt(autoResumeTrackCurrentRetryKey, retryAttempts)
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRecordingTrack(long id) {
|
public void setRecordingTrack(long id) {
|
||||||
sharedPreferences
|
Editor editor = sharedPreferences.edit();
|
||||||
.edit()
|
editor.putLong(recordingTrackKey, id);
|
||||||
.putLong(recordingTrackKey, id)
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedTrack(long id) {
|
public void setSelectedTrack(long id) {
|
||||||
sharedPreferences
|
Editor editor = sharedPreferences.edit();
|
||||||
.edit()
|
editor.putLong(selectedTrackKey, id);
|
||||||
.putLong(selectedTrackKey, id)
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
.commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import com.dsi.ant.AntMesg;
|
|||||||
import com.dsi.ant.exception.AntInterfaceException;
|
import com.dsi.ant.exception.AntInterfaceException;
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
import com.google.android.apps.mytracks.content.Sensor;
|
import com.google.android.apps.mytracks.content.Sensor;
|
||||||
|
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -134,7 +135,7 @@ public class AntDirectSensorManager extends AntSensorManager {
|
|||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
SharedPreferences.Editor editor = prefs.edit();
|
SharedPreferences.Editor editor = prefs.edit();
|
||||||
editor.putInt(context.getString(R.string.ant_heart_rate_sensor_id_key), deviceNumberHRM);
|
editor.putInt(context.getString(R.string.ant_heart_rate_sensor_id_key), deviceNumberHRM);
|
||||||
editor.commit();
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleMessageResponse(byte[] rawMessage) {
|
private void handleMessageResponse(byte[] rawMessage) {
|
||||||
|
|||||||
-227
@@ -1,227 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2009 Google Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
||||||
* use this file except in compliance with the License. You may obtain a copy of
|
|
||||||
* the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
* License for the specific language governing permissions and limitations under
|
|
||||||
* the License.
|
|
||||||
*/
|
|
||||||
package com.google.android.apps.mytracks.services.sensors.ant;
|
|
||||||
|
|
||||||
import static com.google.android.apps.mytracks.Constants.TAG;
|
|
||||||
|
|
||||||
import com.dsi.ant.AntDefine;
|
|
||||||
import com.dsi.ant.AntMesg;
|
|
||||||
import com.dsi.ant.exception.AntInterfaceException;
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
|
||||||
import com.google.android.apps.mytracks.content.Sensor;
|
|
||||||
import com.google.android.apps.mytracks.services.sensors.SensorUtils;
|
|
||||||
import com.google.android.maps.mytracks.R;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A sensor manager that can connect to an SRM Power Control 7 head unit.
|
|
||||||
*
|
|
||||||
* @author Sandor Dornbush
|
|
||||||
*/
|
|
||||||
public class AntSRMSensorManager extends AntSensorManager {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These constants are defined by the SRM Headunit spec.
|
|
||||||
*/
|
|
||||||
public static final byte NETWORK_NUMBER = (byte) 0;
|
|
||||||
public static final byte DEVICE_TYPE = (byte) 12;
|
|
||||||
public static final byte MANUFACTURER_ID = (byte) 1;
|
|
||||||
public static final short CHANNEL_PERIOD = (short) 8192;
|
|
||||||
public static final byte RF_FREQUENCY = (byte) 50;
|
|
||||||
|
|
||||||
public static final int MESSAGE_TYPE_INDEX = 3;
|
|
||||||
public static final int INITIALS_MESSAGE_TYPE = 5;
|
|
||||||
public static final int SENSOR_DATA_MESSAGE_TYPE = 6;
|
|
||||||
|
|
||||||
public static final int MESSAGE_ID_INDEX = 4;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This can be any value between 0..8
|
|
||||||
*/
|
|
||||||
private byte channel = (byte) 5;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is the id of this device.
|
|
||||||
* The head unit must be programmed to expect this number.
|
|
||||||
*/
|
|
||||||
private byte deviceId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The id of the last message received from the SRM head unit.
|
|
||||||
*/
|
|
||||||
private int lastMessageId;
|
|
||||||
|
|
||||||
public AntSRMSensorManager(Context context) {
|
|
||||||
super(context);
|
|
||||||
|
|
||||||
// First read the the device id that we will be announcing.
|
|
||||||
SharedPreferences prefs = context.getSharedPreferences(
|
|
||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
|
||||||
if (prefs != null) {
|
|
||||||
deviceId = (byte) prefs.getInt(
|
|
||||||
context.getString(R.string.ant_srm_bridge_sensor_id_key),
|
|
||||||
WILDCARD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handleMessage(byte[] antMessage) {
|
|
||||||
// Parse channel number
|
|
||||||
byte recievedChannel = (byte) (antMessage[AntMesg.MESG_DATA_OFFSET]
|
|
||||||
& AntDefine.CHANNEL_NUMBER_MASK);
|
|
||||||
if (recievedChannel != channel) {
|
|
||||||
Log.d(TAG, "Unexpected channel: " + recievedChannel);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
switch (antMessage[AntMesg.MESG_ID_OFFSET]) {
|
|
||||||
case AntMesg.MESG_BROADCAST_DATA_ID:
|
|
||||||
handleBroadcastData(antMessage);
|
|
||||||
break;
|
|
||||||
case AntMesg.MESG_RESPONSE_EVENT_ID:
|
|
||||||
handleMessageResponse(antMessage);
|
|
||||||
break;
|
|
||||||
case AntMesg.MESG_CHANNEL_ID_ID:
|
|
||||||
handleChannelId(antMessage);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Log.e(TAG, "Unexpected message id: " + antMessage[3]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleBroadcastData(byte[] antMessage) {
|
|
||||||
if (deviceId == WILDCARD) {
|
|
||||||
try {
|
|
||||||
Log.d(TAG, "Requesting channel id id.");
|
|
||||||
getAntReceiver().ANTRequestMessage(channel, AntMesg.MESG_CHANNEL_ID_ID);
|
|
||||||
} catch (AntInterfaceException e) {
|
|
||||||
Log.e(TAG, "Failed to request channel id id", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
setSensorState(Sensor.SensorState.CONNECTED);
|
|
||||||
switch(antMessage[MESSAGE_TYPE_INDEX]) {
|
|
||||||
case INITIALS_MESSAGE_TYPE:
|
|
||||||
// TODO handle initials message.
|
|
||||||
break;
|
|
||||||
case SENSOR_DATA_MESSAGE_TYPE:
|
|
||||||
parseSensorData(antMessage);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Log.e(TAG, "Unexpected message type: " + antMessage[MESSAGE_TYPE_INDEX]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleChannelId(byte[] antMessage) {
|
|
||||||
// Store the device id.
|
|
||||||
deviceId = antMessage[3];
|
|
||||||
Log.i(TAG, "Found device id: " + deviceId);
|
|
||||||
|
|
||||||
SharedPreferences prefs = context.getSharedPreferences(
|
|
||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
|
||||||
SharedPreferences.Editor editor = prefs.edit();
|
|
||||||
editor.putInt(context.getString(R.string.ant_srm_bridge_sensor_id_key), deviceId);
|
|
||||||
editor.commit();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleMessageResponse(byte[] antMessage) {
|
|
||||||
if (antMessage[3] == AntMesg.MESG_EVENT_ID
|
|
||||||
&& antMessage[4] == AntDefine.EVENT_RX_SEARCH_TIMEOUT) {
|
|
||||||
// Search timeout
|
|
||||||
Log.w(TAG, "Search timed out. Unassigning channel.");
|
|
||||||
try {
|
|
||||||
getAntReceiver().ANTUnassignChannel(channel);
|
|
||||||
} catch (AntInterfaceException e) {
|
|
||||||
Log.e(TAG, "Failed to unassign ANT channel", e);
|
|
||||||
}
|
|
||||||
setSensorState(Sensor.SensorState.DISCONNECTED);
|
|
||||||
} else if (antMessage[3] == AntMesg.MESG_UNASSIGN_CHANNEL_ID) {
|
|
||||||
setSensorState(Sensor.SensorState.DISCONNECTED);
|
|
||||||
Log.i(TAG, "Disconnected from the sensor: " + getSensorState());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void parseSensorData(byte[] antMessage) {
|
|
||||||
if (antMessage.length != 11) {
|
|
||||||
Log.e(TAG, "Unexpected ant message length: " + antMessage.length);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int newMessageId = antMessage[MESSAGE_ID_INDEX] & 0xFF;
|
|
||||||
if (lastMessageId == newMessageId) {
|
|
||||||
// Repeated message.
|
|
||||||
Log.i(TAG, String.format("SRM ignoring repeat: 0x%X", newMessageId));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (newMessageId < lastMessageId) {
|
|
||||||
if (!(newMessageId < 20 && lastMessageId > 200)) {
|
|
||||||
Log.i(TAG, String.format("SRM ignoring repeat: 0x%X", newMessageId));
|
|
||||||
return;
|
|
||||||
} // else assume the byte overflowed to 0.
|
|
||||||
}
|
|
||||||
lastMessageId = newMessageId;
|
|
||||||
|
|
||||||
Sensor.SensorDataSet.Builder builder = Sensor.SensorDataSet.newBuilder()
|
|
||||||
.setCreationTime(System.currentTimeMillis());
|
|
||||||
|
|
||||||
int power = SensorUtils.unsignedShortToInt(antMessage, 5);
|
|
||||||
if (power >= 0) {
|
|
||||||
Sensor.SensorData.Builder b = Sensor.SensorData.newBuilder()
|
|
||||||
.setValue(power)
|
|
||||||
.setState(Sensor.SensorState.SENDING);
|
|
||||||
builder.setPower(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
int speed = SensorUtils.unsignedShortToInt(antMessage, 7);
|
|
||||||
if (speed >= 0) {
|
|
||||||
// The speed from srm is in 1/10 km/hr.
|
|
||||||
// Sensor data expects the speed as m/s.
|
|
||||||
// TODO finish this.
|
|
||||||
//sensorData.setWheelSpeed(UnitConversions.TENTH_KMH_TO_MPS * speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cadence = antMessage[9] & 0xFF;
|
|
||||||
if (cadence >= 0) {
|
|
||||||
Sensor.SensorData.Builder b = Sensor.SensorData.newBuilder()
|
|
||||||
.setValue(cadence)
|
|
||||||
.setState(Sensor.SensorState.SENDING);
|
|
||||||
builder.setCadence(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
int bpm = antMessage[10] & 0xFF;
|
|
||||||
if (bpm > 0) {
|
|
||||||
Sensor.SensorData.Builder b = Sensor.SensorData.newBuilder()
|
|
||||||
.setValue(bpm)
|
|
||||||
.setState(Sensor.SensorState.SENDING);
|
|
||||||
builder.setHeartRate(b);
|
|
||||||
}
|
|
||||||
sensorData = builder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setupAntSensorChannels() {
|
|
||||||
lastMessageId = 0;
|
|
||||||
setupAntSensorChannel(NETWORK_NUMBER,
|
|
||||||
channel,
|
|
||||||
deviceId,
|
|
||||||
DEVICE_TYPE,
|
|
||||||
MANUFACTURER_ID,
|
|
||||||
CHANNEL_PERIOD,
|
|
||||||
RF_FREQUENCY,
|
|
||||||
(byte) 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+9
-7
@@ -22,6 +22,7 @@ import com.dsi.ant.AntMesg;
|
|||||||
import com.dsi.ant.exception.AntInterfaceException;
|
import com.dsi.ant.exception.AntInterfaceException;
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
import com.google.android.apps.mytracks.content.Sensor;
|
import com.google.android.apps.mytracks.content.Sensor;
|
||||||
|
import com.google.android.apps.mytracks.util.ApiFeatures;
|
||||||
import com.google.android.apps.mytracks.util.SystemUtils;
|
import com.google.android.apps.mytracks.util.SystemUtils;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
@@ -151,6 +152,7 @@ public class AntSrmBridgeSensorManager extends AntSensorManager {
|
|||||||
|
|
||||||
int powerVal = (((msg[INDEX_MESSAGE_POWER] & 0xFF) << 8) |
|
int powerVal = (((msg[INDEX_MESSAGE_POWER] & 0xFF) << 8) |
|
||||||
(msg[INDEX_MESSAGE_POWER+1] & 0xFF));
|
(msg[INDEX_MESSAGE_POWER+1] & 0xFF));
|
||||||
|
@SuppressWarnings("unused")
|
||||||
int speedVal = (((msg[INDEX_MESSAGE_SPEED] & 0xFF) << 8) |
|
int speedVal = (((msg[INDEX_MESSAGE_SPEED] & 0xFF) << 8) |
|
||||||
(msg[INDEX_MESSAGE_SPEED+1] & 0xFF));
|
(msg[INDEX_MESSAGE_SPEED+1] & 0xFF));
|
||||||
int cadenceVal = (msg[INDEX_MESSAGE_CADENCE] & 0xFF);
|
int cadenceVal = (msg[INDEX_MESSAGE_CADENCE] & 0xFF);
|
||||||
@@ -162,12 +164,12 @@ public class AntSrmBridgeSensorManager extends AntSensorManager {
|
|||||||
.setValue(powerVal)
|
.setValue(powerVal)
|
||||||
.setState(Sensor.SensorState.SENDING);
|
.setState(Sensor.SensorState.SENDING);
|
||||||
|
|
||||||
// Although speed is available from the SRM Bridge, MyTracks doesn't
|
/*
|
||||||
// use the value, and computes speed from the GPS location data.
|
* Although speed is available from the SRM Bridge, MyTracks doesn't use the value, and
|
||||||
// Sensor.SensorData.Builder speed =
|
* computes speed from the GPS location data.
|
||||||
// Sensor.SensorData.newBuilder()
|
*/
|
||||||
// .setValue(speedVal)
|
// Sensor.SensorData.Builder speed = Sensor.SensorData.newBuilder().setValue(speedVal).setState(
|
||||||
// .setState(Sensor.SensorState.SENDING);
|
// Sensor.SensorState.SENDING);
|
||||||
|
|
||||||
Sensor.SensorData.Builder cadence =
|
Sensor.SensorData.Builder cadence =
|
||||||
Sensor.SensorData.newBuilder()
|
Sensor.SensorData.newBuilder()
|
||||||
@@ -197,7 +199,7 @@ public class AntSrmBridgeSensorManager extends AntSensorManager {
|
|||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
SharedPreferences.Editor editor = prefs.edit();
|
SharedPreferences.Editor editor = prefs.edit();
|
||||||
editor.putInt(context.getString(R.string.ant_srm_bridge_sensor_id_key), deviceNumber);
|
editor.putInt(context.getString(R.string.ant_srm_bridge_sensor_id_key), deviceNumber);
|
||||||
editor.commit();
|
ApiFeatures.getInstance().getApiAdapter().applyPreferenceChanges(editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleMessageResponse(byte[] rawMessage) {
|
private void handleMessageResponse(byte[] rawMessage) {
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ public class MyTracksTest extends ActivityInstrumentationTestCase2<MyTracks>{
|
|||||||
editor.putLong(getActivity().getString(R.string.recording_track_key), -1);
|
editor.putLong(getActivity().getString(R.string.recording_track_key), -1);
|
||||||
|
|
||||||
editor.clear();
|
editor.clear();
|
||||||
editor.commit();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
Track track = new Track();
|
Track track = new Track();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
expect(providerUtils.getTrack(TRACK_ID)).andStubReturn(track);
|
expect(providerUtils.getTrack(TRACK_ID)).andStubReturn(track);
|
||||||
expectStart();
|
expectStart();
|
||||||
dataSources.registerContentObserver(
|
dataSources.registerContentObserver(
|
||||||
@@ -298,7 +298,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
public void testWaypointListen() {
|
public void testWaypointListen() {
|
||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
|
|
||||||
Waypoint wpt1 = new Waypoint(),
|
Waypoint wpt1 = new Waypoint(),
|
||||||
wpt2 = new Waypoint(),
|
wpt2 = new Waypoint(),
|
||||||
@@ -412,7 +412,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
public void testPointsListen() {
|
public void testPointsListen() {
|
||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
|
|
||||||
expectStart();
|
expectStart();
|
||||||
dataSources.registerContentObserver(
|
dataSources.registerContentObserver(
|
||||||
@@ -499,7 +499,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
public void testPointsListen_reRegister() {
|
public void testPointsListen_reRegister() {
|
||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
|
|
||||||
expectStart();
|
expectStart();
|
||||||
dataSources.registerContentObserver(
|
dataSources.registerContentObserver(
|
||||||
@@ -571,7 +571,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
public void testPointsListen_reRegisterTrackChanged() {
|
public void testPointsListen_reRegisterTrackChanged() {
|
||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
|
|
||||||
expectStart();
|
expectStart();
|
||||||
dataSources.registerContentObserver(
|
dataSources.registerContentObserver(
|
||||||
@@ -629,7 +629,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
public void testPointsListen_largeTrackSampling() {
|
public void testPointsListen_largeTrackSampling() {
|
||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
|
|
||||||
expectStart();
|
expectStart();
|
||||||
dataSources.registerContentObserver(
|
dataSources.registerContentObserver(
|
||||||
@@ -662,7 +662,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
public void testPointsListen_resampling() {
|
public void testPointsListen_resampling() {
|
||||||
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
Capture<ContentObserver> observerCapture = new Capture<ContentObserver>();
|
||||||
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
prefs.edit().putLong("recordingTrack", TRACK_ID)
|
||||||
.putLong("selectedTrack", TRACK_ID).commit();
|
.putLong("selectedTrack", TRACK_ID).apply();
|
||||||
|
|
||||||
expectStart();
|
expectStart();
|
||||||
dataSources.registerContentObserver(
|
dataSources.registerContentObserver(
|
||||||
@@ -815,7 +815,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean(metricUnitsKey, true)
|
.putBoolean(metricUnitsKey, true)
|
||||||
.putBoolean(speedKey, true)
|
.putBoolean(speedKey, true)
|
||||||
.commit();
|
.apply();
|
||||||
|
|
||||||
Capture<OnSharedPreferenceChangeListener> listenerCapture =
|
Capture<OnSharedPreferenceChangeListener> listenerCapture =
|
||||||
new Capture<OnSharedPreferenceChangeListener>();
|
new Capture<OnSharedPreferenceChangeListener>();
|
||||||
@@ -841,7 +841,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
|
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean(speedKey, false)
|
.putBoolean(speedKey, false)
|
||||||
.commit();
|
.apply();
|
||||||
OnSharedPreferenceChangeListener listener = listenerCapture.getValue();
|
OnSharedPreferenceChangeListener listener = listenerCapture.getValue();
|
||||||
listener.onSharedPreferenceChanged(prefs, speedKey);
|
listener.onSharedPreferenceChanged(prefs, speedKey);
|
||||||
|
|
||||||
@@ -855,7 +855,7 @@ public class TrackDataHubTest extends AndroidTestCase {
|
|||||||
|
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
.putBoolean(metricUnitsKey, false)
|
.putBoolean(metricUnitsKey, false)
|
||||||
.commit();
|
.apply();
|
||||||
listener.onSharedPreferenceChanged(prefs, metricUnitsKey);
|
listener.onSharedPreferenceChanged(prefs, metricUnitsKey);
|
||||||
|
|
||||||
verifyAndReset();
|
verifyAndReset();
|
||||||
|
|||||||
+4
-4
@@ -48,13 +48,13 @@ public class PreferenceBackupHelperTest extends TestCase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean commit() {
|
public boolean commit() {
|
||||||
preferenceValues = newPreferences;
|
apply();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply() {
|
public void apply() {
|
||||||
commit();
|
preferenceValues = newPreferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -185,7 +185,7 @@ public class PreferenceBackupHelperTest extends TestCase {
|
|||||||
editor.putInt("int1", 42);
|
editor.putInt("int1", 42);
|
||||||
editor.putLong("long1", 123456789L);
|
editor.putLong("long1", 123456789L);
|
||||||
editor.putString("str1", "lolcat");
|
editor.putString("str1", "lolcat");
|
||||||
editor.commit();
|
editor.apply();
|
||||||
|
|
||||||
// Export it
|
// Export it
|
||||||
byte[] exported = preferenceBackupHelper.exportPreferences(preferences);
|
byte[] exported = preferenceBackupHelper.exportPreferences(preferences);
|
||||||
@@ -195,7 +195,7 @@ public class PreferenceBackupHelperTest extends TestCase {
|
|||||||
editor.clear();
|
editor.clear();
|
||||||
editor.putString("str2", "Shouldn't be there after restore");
|
editor.putString("str2", "Shouldn't be there after restore");
|
||||||
editor.putBoolean("bool2", true);
|
editor.putBoolean("bool2", true);
|
||||||
editor.commit();
|
editor.apply();
|
||||||
|
|
||||||
// Import it back
|
// Import it back
|
||||||
preferenceBackupHelper.importPreferences(exported, preferences);
|
preferenceBackupHelper.importPreferences(exported, preferences);
|
||||||
|
|||||||
+1
-1
@@ -58,7 +58,7 @@ public class TrackPathPainterFactoryTest extends TrackPathPainterTestCase {
|
|||||||
private <T> void testTrackPathPainterFactorySpecific(Context context, SharedPreferences prefs,
|
private <T> void testTrackPathPainterFactorySpecific(Context context, SharedPreferences prefs,
|
||||||
int track_color_mode, Class <?> c) {
|
int track_color_mode, Class <?> c) {
|
||||||
prefs.edit().putString(context.getString(R.string.track_color_mode_key),
|
prefs.edit().putString(context.getString(R.string.track_color_mode_key),
|
||||||
context.getString(track_color_mode)).commit();
|
context.getString(track_color_mode)).apply();
|
||||||
|
|
||||||
int startLocationIdx = 0;
|
int startLocationIdx = 0;
|
||||||
Boolean alwaysVisible = true;
|
Boolean alwaysVisible = true;
|
||||||
|
|||||||
+5
-5
@@ -153,14 +153,14 @@ public class TrackRecordingServiceTest
|
|||||||
|
|
||||||
sharedPreferences = context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
sharedPreferences = context.getSharedPreferences(Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
// Let's use default values.
|
// Let's use default values.
|
||||||
sharedPreferences.edit().clear().commit();
|
sharedPreferences.edit().clear().apply();
|
||||||
|
|
||||||
// Disable auto resume by default.
|
// Disable auto resume by default.
|
||||||
updateAutoResumePrefs(0, -1);
|
updateAutoResumePrefs(0, -1);
|
||||||
// No recording track.
|
// No recording track.
|
||||||
Editor editor = sharedPreferences.edit();
|
Editor editor = sharedPreferences.edit();
|
||||||
editor.putLong(context.getString(R.string.recording_track_key), -1);
|
editor.putLong(context.getString(R.string.recording_track_key), -1);
|
||||||
editor.commit();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@@ -653,7 +653,7 @@ public class TrackRecordingServiceTest
|
|||||||
R.string.auto_resume_track_current_retry_key), attempts);
|
R.string.auto_resume_track_current_retry_key), attempts);
|
||||||
editor.putInt(context.getString(
|
editor.putInt(context.getString(
|
||||||
R.string.auto_resume_track_timeout_key), timeoutMins);
|
R.string.auto_resume_track_timeout_key), timeoutMins);
|
||||||
editor.commit();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent createStartIntent() {
|
private Intent createStartIntent() {
|
||||||
@@ -672,7 +672,7 @@ public class TrackRecordingServiceTest
|
|||||||
private void setRecordingTrack(long id) {
|
private void setRecordingTrack(long id) {
|
||||||
Editor editor = sharedPreferences.edit();
|
Editor editor = sharedPreferences.edit();
|
||||||
editor.putLong(context.getString(R.string.recording_track_key), id);
|
editor.putLong(context.getString(R.string.recording_track_key), id);
|
||||||
editor.commit();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: We support multiple values for readability, however this test's
|
// TODO: We support multiple values for readability, however this test's
|
||||||
@@ -696,7 +696,7 @@ public class TrackRecordingServiceTest
|
|||||||
} else if (value == null) {
|
} else if (value == null) {
|
||||||
// Do nothing, as clear above has already removed this property.
|
// Do nothing, as clear above has already removed this property.
|
||||||
}
|
}
|
||||||
editor.commit();
|
editor.apply();
|
||||||
|
|
||||||
fullRecordingSession();
|
fullRecordingSession();
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -2,7 +2,7 @@ package com.google.android.apps.mytracks.services.sensors;
|
|||||||
|
|
||||||
import com.google.android.apps.mytracks.Constants;
|
import com.google.android.apps.mytracks.Constants;
|
||||||
import com.google.android.apps.mytracks.services.sensors.ant.AntDirectSensorManager;
|
import com.google.android.apps.mytracks.services.sensors.ant.AntDirectSensorManager;
|
||||||
import com.google.android.apps.mytracks.services.sensors.ant.AntSRMSensorManager;
|
import com.google.android.apps.mytracks.services.sensors.ant.AntSrmBridgeSensorManager;
|
||||||
import com.google.android.maps.mytracks.R;
|
import com.google.android.maps.mytracks.R;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -21,7 +21,7 @@ public class SensorManagerFactoryTest extends AndroidTestCase {
|
|||||||
sharedPreferences = getContext().getSharedPreferences(
|
sharedPreferences = getContext().getSharedPreferences(
|
||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
// Let's use default values.
|
// Let's use default values.
|
||||||
sharedPreferences.edit().clear().commit();
|
sharedPreferences.edit().clear().apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@@ -41,14 +41,14 @@ public class SensorManagerFactoryTest extends AndroidTestCase {
|
|||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
public void testCreateAntSRM() throws Exception {
|
public void testCreateAntSRM() throws Exception {
|
||||||
assertClassForName(AntSRMSensorManager.class, R.string.sensor_type_value_srm_ant_bridge);
|
assertClassForName(AntSrmBridgeSensorManager.class, R.string.sensor_type_value_srm_ant_bridge);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertClassForName(Class<?> c, int i) {
|
private void assertClassForName(Class<?> c, int i) {
|
||||||
sharedPreferences.edit()
|
sharedPreferences.edit()
|
||||||
.putString(getContext().getString(R.string.sensor_type_key),
|
.putString(getContext().getString(R.string.sensor_type_key),
|
||||||
getContext().getString(i))
|
getContext().getString(i))
|
||||||
.commit();
|
.apply();
|
||||||
SensorManager sm = SensorManagerFactory.getSensorManager(getContext());
|
SensorManager sm = SensorManagerFactory.getSensorManager(getContext());
|
||||||
assertNotNull(sm);
|
assertNotNull(sm);
|
||||||
assertTrue(c.isInstance(sm));
|
assertTrue(c.isInstance(sm));
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public class AntDirectSensorManagerTest extends AndroidTestCase {
|
|||||||
sharedPreferences = getContext().getSharedPreferences(
|
sharedPreferences = getContext().getSharedPreferences(
|
||||||
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
|
||||||
// Let's use default values.
|
// Let's use default values.
|
||||||
sharedPreferences.edit().clear().commit();
|
sharedPreferences.edit().clear().apply();
|
||||||
manager = new AntDirectSensorManager(getContext());
|
manager = new AntDirectSensorManager(getContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user