mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-01 16:50:48 +00:00
Merge remote-tracking branch 'server/ubilabs--buoy_positioning_app--develop' into ubilabs--buoy_positioning_app--develop
Conflicts: mobile/com.sap.sailing.android.shared/.classpath mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/ui/activities/AbstractStartActivity.java
This commit is contained in:
commit
44def3c6c6
45 files changed
+833
-468
No files matched your search
Regular → Executable
File mode changed.
@@ -34,8 +34,6 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile "net.hockeyapp.android:HockeySDK:3.5.0"
|
||||
|
||||
/* support libraries */
|
||||
compile 'com.android.support:appcompat-v7:22.0.0'
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
android:id="@+id/toolbar_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_gravity="center|start"
|
||||
android:lines="1"
|
||||
android:singleLine="true"
|
||||
android:textSize="16sp"/>
|
||||
@@ -27,7 +27,7 @@
|
||||
android:id="@+id/toolbar_subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_gravity="center|start"
|
||||
android:lines="1"
|
||||
android:singleLine="true"
|
||||
android:textSize="12sp" />
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/homeBackground"
|
||||
@@ -12,16 +12,16 @@
|
||||
android:contentDescription="@string/empty"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/working_title" />
|
||||
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/bottomLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="@+color/black_transparent"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true">
|
||||
android:layout_alignParentStart="true"
|
||||
android:background="@color/black_transparent">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -37,28 +37,30 @@
|
||||
android:id="@+id/scanQr"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_above="@+id/noQrCode"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/rounded_btn_yellow"
|
||||
android:text="@string/scan_qr"
|
||||
android:textAllCaps="true"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/scan_qr" />
|
||||
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/noQrCode"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@+id/bottomLayout"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:background="@drawable/rounded_btn_white"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:background="@drawable/rounded_btn_white"
|
||||
android:text="@string/no_qr_code"
|
||||
android:textColor="@color/black"
|
||||
android:text="@string/no_qr_code" />
|
||||
android:textSize="18sp" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listRegatta"
|
||||
@@ -67,7 +69,7 @@
|
||||
android:layout_above="@id/scanQr"
|
||||
android:layout_alignParentTop="true"
|
||||
android:divider="@android:color/white"
|
||||
android:dividerHeight="1dp" >
|
||||
android:dividerHeight="1dp">
|
||||
|
||||
</ListView>
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
android:src="@drawable/yellow_arrow_right"
|
||||
android:layout_marginTop="13dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="14dp"
|
||||
android:layout_marginEnd="14dp"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
@@ -31,8 +31,8 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toLeftOf="@+id/nextPage"
|
||||
android:layout_toStartOf="@+id/nextPage"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:padding="14dp"
|
||||
android:textSize="18sp"
|
||||
android:padding="16dp"
|
||||
android:textSize="16sp"
|
||||
android:background="@color/colorPrimary"
|
||||
android:textColor="@color/white"
|
||||
android:text="@string/your_regattas" />
|
||||
|
||||
@@ -29,5 +29,6 @@
|
||||
|
||||
<!-- Regatta -->
|
||||
<string name="your_regattas">Ihre Regattas:</string>
|
||||
<string name="options_refresh">Aktualisieren</string>
|
||||
|
||||
</resources>
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
<color name="black">#000000</color>
|
||||
<color name="black_transparent">#55000000</color>
|
||||
<color name="black_slightly_transparent">#D8000000</color>
|
||||
<color name="white">#FFFFFF</color>
|
||||
<color name="white_less_transparent">#CCFFFFFF</color>
|
||||
<color name="sap_green">#8AB54E</color>
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
<!-- Regatta -->
|
||||
<string name="your_regattas">Your Regattas:</string>
|
||||
<string name="options_refresh">Refresh</string>
|
||||
|
||||
<!-- QR Code -->
|
||||
<string name="notify_user_db_operation_failed">Error: Database operation has failed.</string>
|
||||
|
||||
Regular → Executable
File mode changed.
+15
@@ -3,6 +3,8 @@ package com.sap.sailing.android.shared.ui.customviews;
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.shared.R;
|
||||
@@ -44,4 +46,17 @@ public class OpenSansToolbar extends Toolbar {
|
||||
TextView subtitleTextView = (TextView)findViewById(R.id.toolbar_subtitle);
|
||||
subtitleTextView.setText(arg0);
|
||||
}
|
||||
|
||||
public void hideSubtitle(){
|
||||
TextView titleTextView = (TextView)findViewById(R.id.toolbar_title);
|
||||
titleTextView.setPadding(0,6,0,0);
|
||||
TextView subtitleTextView = (TextView)findViewById(R.id.toolbar_subtitle);
|
||||
subtitleTextView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
public void setTitleSize(float size){
|
||||
TextView titleTextView = (TextView)findViewById(R.id.toolbar_title);
|
||||
titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
|
||||
titleTextView.setTextColor(getResources().getColor(R.color.white));
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="14"
|
||||
android:targetSdkVersion="21" />
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
<permission
|
||||
android:name="com.sap.sailing.android.tracking.app.permission.C2D_MESSAGE"
|
||||
@@ -85,7 +85,6 @@
|
||||
<activity
|
||||
android:name=".ui.activities.SettingsActivity"
|
||||
android:screenOrientation="unspecified" />
|
||||
<activity android:name="net.hockeyapp.android.UpdateActivity" />
|
||||
<service
|
||||
android:name=".services.TrackingService"
|
||||
android:exported="false"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
apply plugin: "com.android.application"
|
||||
apply from: "../git.gradle"
|
||||
|
||||
def packageName = "com.sap.sailing.android.tracking.app"
|
||||
def verCode = 1
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
<string name="options_menu_checkout">Checkout</string>
|
||||
<string name="options_add_team_photo">Team Foto hinzufügen</string>
|
||||
<string name="options_replace_team_photo">Team Foto ersetzen</string>
|
||||
<string name="options_refresh">Aktualisieren</string>
|
||||
<string name="settings_category_other">Andere Einstellungen</string>
|
||||
<string name="scan_hint">Der QR-Code befindet sich auf Ihrer Teilnahmebestätigung</string>
|
||||
<string name="device_identifier">Geräte-ID</string>
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<string name="options_menu_checkout">Checkout</string>
|
||||
<string name="options_add_team_photo">Add Team Photo</string>
|
||||
<string name="options_replace_team_photo">Replace Team Photo</string>
|
||||
<string name="options_refresh">Refresh</string>
|
||||
<string name="settings_category_other">Other Settings</string>
|
||||
<string name="device_identifier">Device Identifier</string>
|
||||
<string name="tracker_started">SAP Sailing Tracker started</string>
|
||||
|
||||
@@ -1,23 +1,25 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.sap.sailing.android.buoy.positioning.app"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
android:versionName="1.0">
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="14"
|
||||
android:targetSdkVersion="22" />
|
||||
|
||||
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<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.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
|
||||
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
||||
<uses-permission android:name="com.sap.sailing.android.tracking.app.permission.C2D_MESSAGE" />
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<uses-feature
|
||||
android:glEsVersion="0x00020000"
|
||||
android:required="true" />
|
||||
|
||||
<application
|
||||
android:name="com.sap.sailing.android.shared.application.LoggableApplication"
|
||||
@@ -25,19 +27,19 @@
|
||||
android:hardwareAccelerated="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme" >
|
||||
android:theme="@style/AppTheme">
|
||||
<meta-data
|
||||
android:name="com.google.android.gms.version"
|
||||
android:value="@integer/google_play_services_version" />
|
||||
<meta-data
|
||||
android:name="com.google.android.maps.v2.API_KEY"
|
||||
android:value="@string/GoogleMapsKey"/>
|
||||
|
||||
android:value="AIzaSyDH-Dwy5yFlyBa2-VUgiZ3qGGUO8M_0MPY" />
|
||||
|
||||
|
||||
<activity
|
||||
android:name=".ui.activities.StartActivity"
|
||||
android:label="@string/app_name"
|
||||
android:screenOrientation="unspecified" >
|
||||
android:screenOrientation="portrait">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
@@ -60,22 +62,22 @@
|
||||
android:scheme="http" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
|
||||
<activity
|
||||
android:name=".ui.activities.RegattaActivity"
|
||||
android:screenOrientation="unspecified">
|
||||
|
||||
android:screenOrientation="portrait">
|
||||
|
||||
</activity>
|
||||
|
||||
|
||||
<activity
|
||||
android:name=".ui.activities.PositioningActivity"
|
||||
android:screenOrientation="unspecified">
|
||||
|
||||
android:screenOrientation="portrait">
|
||||
|
||||
</activity>
|
||||
|
||||
|
||||
<service
|
||||
android:name="com.sap.sailing.android.shared.services.sending.MessageSendingService"
|
||||
android:exported="false" >
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.sap.sailing.android.tracking.app.action.sendSavedIntents" />
|
||||
<action android:name="com.sap.sailing.android.tracking.app.action.sendMessage" />
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
apply plugin: "com.android.application"
|
||||
apply from: "../git.gradle"
|
||||
|
||||
def packageName = "com.sap.sailing.android.buoy.positioning.app"
|
||||
def verCode = 1
|
||||
|
||||
+97
-74
@@ -5,29 +5,49 @@
|
||||
android:background="@color/black"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp" >
|
||||
android:paddingRight="0dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/mark_header"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_gravity="left"
|
||||
android:background="@color/black_transparent"
|
||||
android:gravity="center"
|
||||
android:paddingBottom="7dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingTop="7dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="10sp" />
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="4dp"
|
||||
android:background="@color/sap_yellow" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/map"
|
||||
android:name="com.google.android.gms.maps.MapFragment"
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
android:layout_weight="1"
|
||||
android:background="@color/white">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/map"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
class="com.google.android.gms.maps.MapFragment" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/mark_header"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_gravity="left"
|
||||
android:background="@color/black_slightly_transparent"
|
||||
android:gravity="left"
|
||||
android:paddingBottom="7dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingTop="7dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/white" />
|
||||
|
||||
|
||||
<!-- Begin of detailed mark information -->
|
||||
|
||||
@@ -35,17 +55,17 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="15dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="7dp"
|
||||
android:paddingTop="15dp" >
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/signal_accuracy_indicator_view_description"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp" />
|
||||
android:textSize="20sp" />
|
||||
|
||||
<!-- Empty view to right align the following element -->
|
||||
|
||||
@@ -58,10 +78,15 @@
|
||||
android:id="@+id/marker_gps_accuracy"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text=""
|
||||
android:layout_marginRight="5dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.SignalQualityIndicatorView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/signal_quality_indicator"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/Divider" />
|
||||
@@ -70,51 +95,17 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="15dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="7dp"
|
||||
android:paddingTop="15dp" >
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/longitude"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<!-- Empty view to right align the following element -->
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/marker_gps_longitude"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text=""
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/Divider" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="15dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="7dp"
|
||||
android:paddingTop="15dp" >
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/latitude"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp" />
|
||||
android:textSize="20sp" />
|
||||
|
||||
<!-- Empty view to right align the following element -->
|
||||
|
||||
@@ -127,9 +118,41 @@
|
||||
android:id="@+id/marker_gps_latitude"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text=""
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp" />
|
||||
android:textSize="20sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/Divider" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/longitude"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<!-- Empty view to right align the following element -->
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:id="@+id/marker_gps_longitude"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="20sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/Divider" />
|
||||
@@ -137,13 +160,13 @@
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
android:id="@+id/marker_set_position_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:background="@drawable/rounded_btn_yellow"
|
||||
android:text="@string/set_position"
|
||||
android:textSize="14sp"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansButton
|
||||
@@ -151,12 +174,12 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/rounded_btn_transparent"
|
||||
android:text="@string/reset_position"
|
||||
android:textSize="14sp"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
+30
-17
@@ -3,29 +3,42 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/black_transparent"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp">
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="4dp"
|
||||
android:background="@color/sap_yellow" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/course_type"
|
||||
android:textSize="18sp" />
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp">
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/course_type"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:text="@string/marks"
|
||||
android:textSize="18sp" />
|
||||
<com.sap.sailing.android.shared.ui.customviews.OpenSansTextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginBottom="7dp"
|
||||
android:text="@string/marks"
|
||||
android:textSize="20sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View style="@style/Divider" />
|
||||
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listMarks"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -9,8 +9,8 @@
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginEnd="14dp"
|
||||
android:layout_marginRight="14dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/empty"
|
||||
android:src="@drawable/yellow_arrow_right"
|
||||
@@ -23,8 +23,9 @@
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_marginTop="15dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textSize="20sp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
@@ -35,10 +36,11 @@
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_below="@+id/mark_name"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:paddingLeft="15dp"
|
||||
android:paddingRight="15dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textSize="14sp"
|
||||
android:singleLine="true"
|
||||
android:textColor="@color/white" />
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</menu>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/refresh"
|
||||
android:title="@string/options_refresh" />
|
||||
</menu>
|
||||
@@ -4,12 +4,10 @@
|
||||
<string name="title_activity_positioning">Markierungs Position setzen</string>
|
||||
<string name="course_type">Kurstyp</string>
|
||||
<string name="marks">Kursmarkierungen</string>
|
||||
<string name="longitude">Breitengrad</string>
|
||||
<string name="latitude">Längengrad</string>
|
||||
<string name="set_position">Position setzen</string>
|
||||
<string name="reset_position">Position zurücksetzen</string>
|
||||
<string name="getting_marks">Empfangen der Markierungen..</string>
|
||||
<string name="set">gesetzt</string>
|
||||
<string name="not_set">nicht gesetzt</string>
|
||||
<string name="set">Gesetzt</string>
|
||||
<string name="not_set">Nicht gesetzt</string>
|
||||
|
||||
</resources>
|
||||
@@ -1,4 +1,4 @@
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<resources>
|
||||
|
||||
<color name="white">#FFFFFF</color>
|
||||
<color name="white_transparent">#55FFFFFF</color>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<string name="title_activity_positioning">Set Mark Position</string>
|
||||
<string name="course_type">Course Type</string>
|
||||
<string name="marks">Marks</string>
|
||||
<string name="longitude">Longitude</string>
|
||||
<string name="latitude">Latitude</string>
|
||||
<string name="longitude" translatable="false">Lng</string>
|
||||
<string name="latitude" translatable="false">Lat</string>
|
||||
<string name="set_position">Set Position</string>
|
||||
<string name="reset_position">Reset Position</string>
|
||||
<string name="getting_marks">Getting race marks..</string>
|
||||
|
||||
+3
-3
@@ -1,8 +1,6 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.adapter;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.support.v4.widget.ResourceCursorAdapter;
|
||||
@@ -14,6 +12,8 @@ import com.sap.sailing.android.buoy.positioning.app.provider.AnalyticsContract;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class MarkAdapter extends ResourceCursorAdapter {
|
||||
|
||||
@@ -34,7 +34,7 @@ public class MarkAdapter extends ResourceCursorAdapter {
|
||||
}
|
||||
else{
|
||||
setText = context.getString(R.string.set);
|
||||
String accuracy = " (" + markPings.get(0).getAccuracy() + ")";
|
||||
String accuracy = " (~ " + markPings.get(0).getAccuracy() + ")";
|
||||
setText += accuracy;
|
||||
}
|
||||
markName.setText(name);
|
||||
|
||||
+2
-2
@@ -1,7 +1,5 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.provider;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
@@ -22,6 +20,8 @@ import com.sap.sailing.android.buoy.positioning.app.util.AppPreferences;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.SelectionBuilder;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class AnalyticsProvider extends ContentProvider {
|
||||
|
||||
private static final String TAG = AnalyticsProvider.class.getName();
|
||||
|
||||
+5
-3
@@ -2,8 +2,10 @@ package com.sap.sailing.android.buoy.positioning.app.ui.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.AppPreferences;
|
||||
import com.sap.sailing.android.shared.ui.activities.AbstractBaseActivity;
|
||||
|
||||
@@ -19,8 +21,8 @@ public class BaseActivity extends AbstractBaseActivity {
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
//MenuInflater inflater = getMenuInflater();
|
||||
//inflater.inflate(R.menu.options_menu, menu);
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.empty_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -34,6 +36,6 @@ public class BaseActivity extends AbstractBaseActivity {
|
||||
|
||||
@Override
|
||||
protected int getOptionsMenuResId() {
|
||||
return 0;
|
||||
return R.menu.empty_menu;
|
||||
}
|
||||
}
|
||||
+30
-5
@@ -4,7 +4,9 @@ import java.util.List;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.fragments.BuoyFragment;
|
||||
@@ -13,6 +15,7 @@ import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
|
||||
import com.sap.sailing.android.shared.data.LeaderboardInfo;
|
||||
import com.sap.sailing.android.shared.ui.customviews.OpenSansToolbar;
|
||||
|
||||
public class PositioningActivity extends BaseActivity implements pingListener {
|
||||
|
||||
@@ -31,11 +34,11 @@ public class PositioningActivity extends BaseActivity implements pingListener {
|
||||
getString(R.string.checkin_digest));
|
||||
List<MarkInfo> marks = DatabaseHelper.getInstance().getMarks(this,
|
||||
checkinDigest);
|
||||
leaderBoard = DatabaseHelper.getInstance().getLeaderboard(this,
|
||||
checkinDigest);
|
||||
setLeaderBoard(DatabaseHelper.getInstance().getLeaderboard(this,
|
||||
checkinDigest));
|
||||
for (MarkInfo mark : marks) {
|
||||
if (mark.getId().equals(markerID)) {
|
||||
markInfo = mark;
|
||||
setMarkInfo(mark);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -43,8 +46,10 @@ public class PositioningActivity extends BaseActivity implements pingListener {
|
||||
setPingFromDatabase(markerID);
|
||||
}
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
OpenSansToolbar toolbar = (OpenSansToolbar) findViewById(R.id.toolbar);
|
||||
if (toolbar != null) {
|
||||
toolbar.hideSubtitle();
|
||||
toolbar.setTitleSize(20);
|
||||
setSupportActionBar(toolbar);
|
||||
toolbar.setBackgroundColor(getResources().getColor(
|
||||
R.color.colorPrimary));
|
||||
@@ -63,6 +68,26 @@ public class PositioningActivity extends BaseActivity implements pingListener {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.empty_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getOptionsMenuResId() {
|
||||
return R.menu.empty_menu;
|
||||
}
|
||||
|
||||
public void setPingFromDatabase(String markerID) {
|
||||
List<MarkPingInfo> markPings = DatabaseHelper.getInstance()
|
||||
.getMarkPings(this, markerID);
|
||||
|
||||
+148
-45
@@ -1,28 +1,43 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.ui.activities;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.ServiceConnection;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.sap.sailing.android.buoy.positioning.app.BuildConfig;
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.fragments.RegattaFragment;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.AppPreferences;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.CheckinManager;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.CheckinData;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
|
||||
import com.sap.sailing.android.shared.data.AbstractCheckinData;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.services.sending.MessageSendingService;
|
||||
import com.sap.sailing.android.shared.ui.activities.AbstractRegattaActivity;
|
||||
import com.sap.sailing.android.shared.ui.customviews.OpenSansToolbar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
public class RegattaActivity extends AbstractRegattaActivity {
|
||||
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.fragments.RegattaFragment;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.AppPreferences;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
|
||||
import com.sap.sailing.android.shared.data.AbstractCheckinData;
|
||||
import com.sap.sailing.android.shared.ui.activities.AbstractRegattaActivity;
|
||||
private String leaderboardName;
|
||||
private String checkinDigest;
|
||||
private List<MarkInfo> marks;
|
||||
private final String TAG = RegattaActivity.class.getName();
|
||||
private String checkinUrl;
|
||||
|
||||
public class RegattaActivity extends AbstractRegattaActivity{
|
||||
|
||||
private String leaderboardName;
|
||||
private String checkinDigest;
|
||||
private List<MarkInfo> marks;
|
||||
// private CheckinUrlInfo checkinUrl;
|
||||
|
||||
private AppPreferences prefs;
|
||||
private AppPreferences prefs;
|
||||
private MessageSendingService messageSendingService;
|
||||
private boolean messageSendingServiceBound;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -36,14 +51,15 @@ public class RegattaActivity extends AbstractRegattaActivity{
|
||||
checkinDigest = intent.getStringExtra(getString(R.string.checkin_digest));
|
||||
leaderboardName = intent.getStringExtra(getString(R.string.leaderboard_name));
|
||||
|
||||
// checkinUrl = DatabaseHelper.getInstance().getCheckinUrl(this, checkinDigest);
|
||||
// manager = new CheckinManager(checkinUrl.urlString, this);
|
||||
checkinUrl = DatabaseHelper.getInstance().getCheckinUrl(this, checkinDigest).urlString;
|
||||
|
||||
setMarks(DatabaseHelper.getInstance().getMarks(this, checkinDigest));
|
||||
|
||||
setContentView(R.layout.fragment_container);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
OpenSansToolbar toolbar = (OpenSansToolbar) findViewById(R.id.toolbar);
|
||||
if (toolbar != null) {
|
||||
toolbar.hideSubtitle();
|
||||
toolbar.setTitleSize(20);
|
||||
setSupportActionBar(toolbar);
|
||||
toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
|
||||
}
|
||||
@@ -52,40 +68,127 @@ public class RegattaActivity extends AbstractRegattaActivity{
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq);
|
||||
toolbar.setPadding(20, 0, 0, 0);
|
||||
toolbar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
|
||||
getSupportActionBar().setTitle(leaderboardName);
|
||||
}
|
||||
RegattaFragment regattaFragment = new RegattaFragment();
|
||||
replaceFragment(R.id.content_frame, regattaFragment);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCheckinDataAvailable(AbstractCheckinData arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
leaderboardName = (String) getIntent().getExtras().get(getString(R.string.leaderboard_name));
|
||||
setTitle(leaderboardName);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getOptionsMenuResId() {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
leaderboardName = (String) getIntent().getExtras().get(getString(R.string.leaderboard_name));
|
||||
setTitle(leaderboardName);
|
||||
}
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
Intent messageSendingServiceIntent = new Intent(this, MessageSendingService.class);
|
||||
bindService(messageSendingServiceIntent, messageSendingServiceConnection, Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if (messageSendingServiceBound) {
|
||||
messageSendingService.unregisterAPIConnectivityListener();
|
||||
unbindService(messageSendingServiceConnection);
|
||||
|
||||
messageSendingServiceBound = false;
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(this, TAG, "Unbound transmitting Service");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.regatta_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.refresh:
|
||||
ExLog.i(this, TAG, "Clicked REFRESH.");
|
||||
CheckinManager manager = new CheckinManager(checkinUrl, this);
|
||||
manager.callServerAndGenerateCheckinData();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getOptionsMenuResId() {
|
||||
return R.menu.regatta_menu;
|
||||
}
|
||||
|
||||
|
||||
public List<MarkInfo> getMarks() {
|
||||
return marks;
|
||||
}
|
||||
@Override
|
||||
public void onCheckinDataAvailable(AbstractCheckinData checkinData) {
|
||||
CheckinData data = (CheckinData) checkinData;
|
||||
try {
|
||||
DatabaseHelper.getInstance().deleteRegattaFromDatabase(this, data.checkinDigest);
|
||||
DatabaseHelper.getInstance().storeCheckinRow(this,
|
||||
data.marks, data.getLeaderboard(),
|
||||
data.getCheckinUrl(), data.pings);
|
||||
getRegattaFragment().getAdapter().notifyDataSetChanged();
|
||||
} catch (DatabaseHelper.GeneralDatabaseHelperException e) {
|
||||
ExLog.e(this, TAG,
|
||||
"Batch insert failed: " + e.getMessage());
|
||||
displayDatabaseError();
|
||||
return;
|
||||
}
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(this, TAG,
|
||||
"Batch-insert of checkinData completed.");
|
||||
}
|
||||
}
|
||||
|
||||
public String getCheckinDigest(){
|
||||
return checkinDigest;
|
||||
}
|
||||
|
||||
public RegattaFragment getRegattaFragment() {
|
||||
return (RegattaFragment) getSupportFragmentManager().findFragmentById(R.id.content_frame);
|
||||
}
|
||||
|
||||
|
||||
public void setMarks(List<MarkInfo> marks) {
|
||||
this.marks = marks;
|
||||
}
|
||||
public List<MarkInfo> getMarks() {
|
||||
return marks;
|
||||
}
|
||||
|
||||
|
||||
public void setMarks(List<MarkInfo> marks) {
|
||||
this.marks = marks;
|
||||
}
|
||||
|
||||
/** Defines callbacks for service binding, passed to bindService() */
|
||||
private ServiceConnection messageSendingServiceConnection = new ServiceConnection() {
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName className, IBinder service) {
|
||||
// We've bound to LocalService, cast the IBinder and get
|
||||
// LocalService instance
|
||||
MessageSendingService.MessageSendingBinder binder = (MessageSendingService.MessageSendingBinder) service;
|
||||
messageSendingService = binder.getService();
|
||||
messageSendingServiceBound = true;
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(RegattaActivity.this, TAG, "connected to message sending service");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(ComponentName arg0) {
|
||||
messageSendingServiceBound = false;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
+28
-5
@@ -2,10 +2,14 @@ package com.sap.sailing.android.buoy.positioning.app.ui.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.fragments.HomeFragment;
|
||||
import com.sap.sailing.android.shared.ui.activities.AbstractStartActivity;
|
||||
import com.sap.sailing.android.shared.ui.customviews.OpenSansToolbar;
|
||||
import com.sap.sailing.android.ui.fragments.AbstractHomeFragment;
|
||||
|
||||
|
||||
@@ -16,15 +20,34 @@ public class StartActivity extends AbstractStartActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setTitle(getString(R.string.title_activity_start));
|
||||
OpenSansToolbar toolbar = (OpenSansToolbar) findViewById(R.id.toolbar);
|
||||
toolbar.hideSubtitle();
|
||||
toolbar.setTitleSize(20);
|
||||
getSupportActionBar().setTitle(getString(R.string.title_activity_start));
|
||||
getSupportActionBar().setHomeButtonEnabled(false);
|
||||
}
|
||||
replaceFragment(R.id.content_frame, new HomeFragment());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getOptionsMenuResId() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.empty_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getOptionsMenuResId() {
|
||||
return R.menu.empty_menu;
|
||||
}
|
||||
|
||||
public AbstractHomeFragment getHomeFragment() {
|
||||
HomeFragment homeFragment = (HomeFragment) getSupportFragmentManager()
|
||||
|
||||
+219
-118
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.ui.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.location.Criteria;
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
@@ -12,7 +11,11 @@ import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.MapFragment;
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
import com.google.android.gms.maps.model.MarkerOptions;
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.activities.PositioningActivity;
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper.GeneralDatabaseHelperException;
|
||||
@@ -22,143 +25,241 @@ import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
|
||||
import com.sap.sailing.android.shared.data.LeaderboardInfo;
|
||||
import com.sap.sailing.android.shared.ui.customviews.OpenSansButton;
|
||||
import com.sap.sailing.android.shared.ui.customviews.OpenSansTextView;
|
||||
import com.sap.sailing.android.shared.ui.customviews.SignalQualityIndicatorView;
|
||||
import com.sap.sailing.android.ui.fragments.BaseFragment;
|
||||
|
||||
public class BuoyFragment extends BaseFragment implements LocationListener {
|
||||
private OpenSansTextView markHeaderTextView;
|
||||
private OpenSansTextView lattitudeTextView;
|
||||
private OpenSansTextView longitudeTextView;
|
||||
private OpenSansTextView accuracyTextView;
|
||||
private OpenSansButton setPositionButton;
|
||||
private OpenSansButton resetPostionButton;
|
||||
private MapFragment mapFragment;
|
||||
private Location lastKnownLocation;
|
||||
private LocationManager locationManager;
|
||||
private String locationProvider;
|
||||
private pingListener pingListener;
|
||||
private OpenSansTextView markHeaderTextView;
|
||||
private OpenSansTextView latitudeTextView;
|
||||
private OpenSansTextView longitudeTextView;
|
||||
private OpenSansTextView accuracyTextView;
|
||||
private OpenSansButton setPositionButton;
|
||||
private OpenSansButton resetPositionButton;
|
||||
private MapFragment mapFragment;
|
||||
private Location lastKnownLocation;
|
||||
private LatLng savedPosition;
|
||||
private LocationManager locationManager;
|
||||
private pingListener pingListener;
|
||||
private SignalQualityIndicatorView signalQualityIndicatorView;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View view = inflater.inflate(R.layout.fragment_buoy_postion_detail,
|
||||
container, false);
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View view = inflater.inflate(R.layout.fragment_buoy_postion_detail,
|
||||
container, false);
|
||||
|
||||
mapFragment = (MapFragment) getActivity().getFragmentManager()
|
||||
.findFragmentById(R.id.map);
|
||||
markHeaderTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.mark_header);
|
||||
latitudeTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.marker_gps_latitude);
|
||||
longitudeTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.marker_gps_longitude);
|
||||
accuracyTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.marker_gps_accuracy);
|
||||
ClickListener clickListener = new ClickListener();
|
||||
|
||||
markHeaderTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.mark_header);
|
||||
lattitudeTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.marker_gps_latitude);
|
||||
longitudeTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.marker_gps_longitude);
|
||||
accuracyTextView = (OpenSansTextView) view
|
||||
.findViewById(R.id.marker_gps_accuracy);
|
||||
Clicklistener clicklistener = new Clicklistener();
|
||||
setPositionButton = (OpenSansButton) view
|
||||
.findViewById(R.id.marker_set_position_button);
|
||||
setPositionButton.setVisibility(View.GONE);
|
||||
setPositionButton.setOnClickListener(clickListener);
|
||||
|
||||
setPositionButton = (OpenSansButton) view
|
||||
.findViewById(R.id.marker_set_position_button);
|
||||
setPositionButton.setOnClickListener(clicklistener);
|
||||
resetPositionButton = (OpenSansButton) view
|
||||
.findViewById(R.id.marker_reset_position_button);
|
||||
resetPositionButton.setOnClickListener(clickListener);
|
||||
resetPositionButton.setVisibility(View.GONE);
|
||||
|
||||
resetPostionButton = (OpenSansButton) view
|
||||
.findViewById(R.id.marker_reset_position_button);
|
||||
resetPostionButton.setOnClickListener(clicklistener);
|
||||
resetPostionButton.setVisibility(View.GONE);
|
||||
return view;
|
||||
}
|
||||
signalQualityIndicatorView = (SignalQualityIndicatorView) view.findViewById(R.id.signal_quality_indicator);
|
||||
signalQualityIndicatorView.setSignalQuality(GPSQuality.noSignal.toInt());
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
initLocationProvider();
|
||||
MarkInfo mark = ((PositioningActivity) getActivity()).getMarkInfo();
|
||||
if (mark != null) {
|
||||
markHeaderTextView.setText(mark.getName());
|
||||
setUpPingUI();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
initLocationProvider();
|
||||
lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
|
||||
MarkInfo mark = ((PositioningActivity) getActivity()).getMarkInfo();
|
||||
if (mark != null) {
|
||||
markHeaderTextView.setText(mark.getName());
|
||||
setUpTextUI(lastKnownLocation);
|
||||
setUpMap();
|
||||
}
|
||||
if (lastKnownLocation != null) {
|
||||
LatLng lastKnownLatLng = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
|
||||
mapFragment.getMap().animateCamera(CameraUpdateFactory.newLatLngZoom(lastKnownLatLng, 15));
|
||||
setPositionButton.setVisibility(View.VISIBLE);
|
||||
reportGPSQuality(lastKnownLocation.getAccuracy());
|
||||
}
|
||||
}
|
||||
|
||||
public void setUpPingUI() {
|
||||
MarkPingInfo markPing = ((PositioningActivity) getActivity())
|
||||
.getMarkPing();
|
||||
if (markPing != null) {
|
||||
lattitudeTextView.setText(markPing.getLattitude());
|
||||
longitudeTextView.setText(markPing.getLongitude());
|
||||
accuracyTextView.setText("~" + markPing.getAccuracy());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
// Unsubscribe location updates for power saving
|
||||
locationManager.removeUpdates(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
lastKnownLocation = location;
|
||||
}
|
||||
public void setUpTextUI(Location location) {
|
||||
String longitudeText = "";
|
||||
String latitudeText = "";
|
||||
String accuracyText = "";
|
||||
if (location != null) {
|
||||
latitudeText += location.getLatitude();
|
||||
longitudeText += location.getLongitude();
|
||||
accuracyText += "~" + location.getAccuracy();
|
||||
} else {
|
||||
latitudeText += "n/a";
|
||||
longitudeText += "n/a";
|
||||
accuracyText += "n/a";
|
||||
}
|
||||
MarkPingInfo markPing = ((PositioningActivity) getActivity())
|
||||
.getMarkPing();
|
||||
if (markPing != null) {
|
||||
double savedLatitude = Double.parseDouble(markPing.getLatitude());
|
||||
double savedLongitude = Double.parseDouble(markPing.getLongitude());
|
||||
savedPosition = new LatLng(savedLatitude, savedLongitude);
|
||||
latitudeText += " (" + markPing.getLatitude() + ")";
|
||||
longitudeText += " (" + markPing.getLongitude() + ")";
|
||||
accuracyText += " (" + "~" + markPing.getAccuracy() + ")";
|
||||
}
|
||||
latitudeTextView.setText(latitudeText);
|
||||
longitudeTextView.setText(longitudeText);
|
||||
accuracyTextView.setText(accuracyText);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
initLocationProvider();
|
||||
}
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
if (getActivity() instanceof PositioningActivity) {
|
||||
lastKnownLocation = location;
|
||||
reportGPSQuality(lastKnownLocation.getAccuracy());
|
||||
setPositionButton.setVisibility(View.VISIBLE);
|
||||
setUpTextUI(lastKnownLocation);
|
||||
setUpMap();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
initLocationProvider();
|
||||
}
|
||||
@Override
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
if (getActivity() instanceof PositioningActivity) {
|
||||
initLocationProvider();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
initLocationProvider();
|
||||
}
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
if (getActivity() instanceof PositioningActivity) {
|
||||
initLocationProvider();
|
||||
}
|
||||
}
|
||||
|
||||
private void initLocationProvider() {
|
||||
locationManager = (LocationManager) getActivity().getSystemService(
|
||||
Context.LOCATION_SERVICE);
|
||||
locationManager.removeUpdates(this);
|
||||
locationProvider = locationManager
|
||||
.getBestProvider(new Criteria(), true);
|
||||
locationManager.requestLocationUpdates(locationProvider, 60000, 10,
|
||||
this);
|
||||
}
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
if (getActivity() instanceof PositioningActivity) {
|
||||
initLocationProvider();
|
||||
}
|
||||
}
|
||||
|
||||
public void setPingListener(pingListener listener) {
|
||||
pingListener = listener;
|
||||
}
|
||||
private void initLocationProvider() {
|
||||
locationManager = (LocationManager) getActivity().getSystemService(
|
||||
Context.LOCATION_SERVICE);
|
||||
locationManager.removeUpdates(this);
|
||||
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this);
|
||||
}
|
||||
|
||||
public interface pingListener {
|
||||
public void updatePing();
|
||||
}
|
||||
public void setUpMap() {
|
||||
mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.map);
|
||||
GoogleMap map = mapFragment.getMap();
|
||||
map.clear();
|
||||
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
|
||||
map.getUiSettings().setZoomControlsEnabled(true);
|
||||
map.setMyLocationEnabled(true);
|
||||
map.setPadding(0, 50, 0, 0);
|
||||
if (savedPosition != null) {
|
||||
MarkerOptions savedLocactionOptions = new MarkerOptions();
|
||||
savedLocactionOptions.position(savedPosition);
|
||||
savedLocactionOptions.visible(true);
|
||||
map.addMarker(savedLocactionOptions);
|
||||
}
|
||||
if (lastKnownLocation != null) {
|
||||
MarkerOptions mySelfOptions = new MarkerOptions();
|
||||
LatLng lastKnownLatLng = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
|
||||
mySelfOptions.position(lastKnownLatLng);
|
||||
mySelfOptions.visible(true);
|
||||
map.addMarker(mySelfOptions);
|
||||
}
|
||||
|
||||
private class Clicklistener implements OnClickListener {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int id = v.getId();
|
||||
if (id == R.id.marker_set_position_button) {
|
||||
PingHelper helper = new PingHelper();
|
||||
try {
|
||||
if (lastKnownLocation != null) {
|
||||
MarkInfo mark = ((PositioningActivity) getActivity())
|
||||
.getMarkInfo();
|
||||
LeaderboardInfo leaderboard = ((PositioningActivity) getActivity())
|
||||
.getLeaderBoard();
|
||||
helper.storePingInDatabase(getActivity(),
|
||||
lastKnownLocation, mark);
|
||||
helper.sendPingToServer(getActivity(),
|
||||
lastKnownLocation, leaderboard, mark);
|
||||
pingListener.updatePing();
|
||||
setUpPingUI();
|
||||
}
|
||||
else{
|
||||
Toast.makeText(getActivity(), "Location is not available yet", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} catch (GeneralDatabaseHelperException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else if (id == R.id.marker_reset_position_button) {
|
||||
// Reset position
|
||||
}
|
||||
public void reportGPSQuality(float gpsAccuracy) {
|
||||
GPSQuality quality = GPSQuality.noSignal;
|
||||
|
||||
}
|
||||
if (gpsAccuracy > 48) {
|
||||
quality = GPSQuality.poor;
|
||||
} else if (gpsAccuracy > 10) {
|
||||
quality = GPSQuality.good;
|
||||
} else if (gpsAccuracy <= 10) {
|
||||
quality = GPSQuality.great;
|
||||
}
|
||||
signalQualityIndicatorView.setSignalQuality(quality.toInt());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void setPingListener(pingListener listener) {
|
||||
pingListener = listener;
|
||||
}
|
||||
|
||||
public enum GPSQuality {
|
||||
noSignal(0), poor(2), good(3), great(4);
|
||||
|
||||
private final int gpsQuality;
|
||||
|
||||
GPSQuality(int quality) {
|
||||
this.gpsQuality = quality;
|
||||
}
|
||||
|
||||
public int toInt() {
|
||||
return this.gpsQuality;
|
||||
}
|
||||
}
|
||||
|
||||
public interface pingListener {
|
||||
public void updatePing();
|
||||
}
|
||||
|
||||
private class ClickListener implements OnClickListener {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int id = v.getId();
|
||||
if (id == R.id.marker_set_position_button) {
|
||||
PingHelper helper = new PingHelper();
|
||||
try {
|
||||
if (lastKnownLocation != null) {
|
||||
MarkInfo mark = ((PositioningActivity) getActivity())
|
||||
.getMarkInfo();
|
||||
LeaderboardInfo leaderBoard = ((PositioningActivity) getActivity())
|
||||
.getLeaderBoard();
|
||||
helper.storePingInDatabase(getActivity(),
|
||||
lastKnownLocation, mark);
|
||||
helper.sendPingToServer(getActivity(),
|
||||
lastKnownLocation, leaderBoard, mark);
|
||||
((PositioningActivity) getActivity()).updatePing();
|
||||
savedPosition = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
|
||||
pingListener.updatePing();
|
||||
setUpTextUI(lastKnownLocation);
|
||||
} else {
|
||||
Toast.makeText(getActivity(), "Location is not available yet", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} catch (GeneralDatabaseHelperException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else if (id == R.id.marker_reset_position_button) {
|
||||
// Reset position
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+7
-7
@@ -79,13 +79,13 @@ public class HomeFragment extends AbstractHomeFragment implements
|
||||
|
||||
private void checkinWithApiAndStartRegattaActivity(CheckinData checkinData) {
|
||||
try {
|
||||
if(DatabaseHelper.getInstance().markLeaderboardCombnationAvailable(getActivity(), checkinData.checkinDigest)) {
|
||||
DatabaseHelper.getInstance().storeCheckinRow(getActivity(),
|
||||
checkinData.marks, checkinData.getLeaderboard(),
|
||||
checkinData.getCheckinUrl());
|
||||
adapter.notifyDataSetChanged();
|
||||
if(!DatabaseHelper.getInstance().markLeaderboardCombnationAvailable(getActivity(), checkinData.checkinDigest)) {
|
||||
DatabaseHelper.getInstance().deleteRegattaFromDatabase(getActivity(),checkinData.checkinDigest);
|
||||
}
|
||||
|
||||
DatabaseHelper.getInstance().storeCheckinRow(getActivity(),
|
||||
checkinData.marks, checkinData.getLeaderboard(),
|
||||
checkinData.getCheckinUrl(), checkinData.pings);
|
||||
adapter.notifyDataSetChanged();
|
||||
} catch (DatabaseHelper.GeneralDatabaseHelperException e) {
|
||||
ExLog.e(getActivity(), TAG,
|
||||
"Batch insert failed: " + e.getMessage());
|
||||
@@ -113,7 +113,7 @@ public class HomeFragment extends AbstractHomeFragment implements
|
||||
* Start regatta activity.
|
||||
*
|
||||
* @param leaderboardName
|
||||
* @param checkinDigest2
|
||||
* @param checkinDigest
|
||||
*/
|
||||
private void startRegatta(String leaderboardName, String checkinDigest) {
|
||||
Intent intent = new Intent(getActivity(), RegattaActivity.class);
|
||||
|
||||
+13
-3
@@ -18,12 +18,13 @@ import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.adapter.MarkAdapter;
|
||||
import com.sap.sailing.android.buoy.positioning.app.provider.AnalyticsContract;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.activities.PositioningActivity;
|
||||
import com.sap.sailing.android.buoy.positioning.app.ui.activities.RegattaActivity;
|
||||
import com.sap.sailing.android.ui.fragments.BaseFragment;
|
||||
|
||||
public class RegattaFragment extends BaseFragment implements LoaderCallbacks<Cursor>{
|
||||
private static final int MARKER_LOADER = 1;
|
||||
private MarkAdapter adapter;
|
||||
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
@@ -46,12 +47,21 @@ public class RegattaFragment extends BaseFragment implements LoaderCallbacks<Cur
|
||||
getLoaderManager().restartLoader(MARKER_LOADER, null, this);
|
||||
}
|
||||
|
||||
public MarkAdapter getAdapter()
|
||||
{
|
||||
return adapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Loader<Cursor> onCreateLoader(int loaderId, Bundle bundle) {
|
||||
String checkinDigest = ((RegattaActivity)getActivity()).getCheckinDigest();
|
||||
switch (loaderId) {
|
||||
case MARKER_LOADER:
|
||||
return new CursorLoader(getActivity(), AnalyticsContract.LeaderboardsMarksJoined.CONTENT_URI,
|
||||
null, null, null, null);
|
||||
return new CursorLoader(getActivity(), AnalyticsContract.MarksLeaderBoardsJoined.CONTENT_URI,
|
||||
null,
|
||||
AnalyticsContract.Mark.MARK_CHECKIN_DIGEST + " = ?",
|
||||
new String[]{checkinDigest},
|
||||
null);
|
||||
|
||||
default:
|
||||
return null;
|
||||
|
||||
+85
-69
@@ -1,19 +1,5 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.util;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.net.Uri;
|
||||
@@ -22,6 +8,7 @@ import android.widget.Toast;
|
||||
import com.sap.sailing.android.buoy.positioning.app.R;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.CheckinData;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
|
||||
import com.sap.sailing.android.shared.data.AbstractCheckinData;
|
||||
import com.sap.sailing.android.shared.data.http.HttpGetRequest;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
@@ -33,6 +20,20 @@ import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.impl.SmartphoneUUIDIdentifierImpl;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CheckinManager {
|
||||
|
||||
private final static String TAG = CheckinManager.class.getName();
|
||||
@@ -41,13 +42,13 @@ public class CheckinManager {
|
||||
private AppPreferences prefs;
|
||||
private String url;
|
||||
|
||||
public CheckinManager(String url, CheckinDataActivity activity){
|
||||
public CheckinManager(String url, CheckinDataActivity activity) {
|
||||
this.activity = activity;
|
||||
this.url = url;
|
||||
prefs = new AppPreferences(activity);
|
||||
}
|
||||
|
||||
public void callServerAndGenerateCheckinData(){
|
||||
public void callServerAndGenerateCheckinData() {
|
||||
Uri uri = Uri.parse(url);
|
||||
|
||||
// TODO: assuming scheme is http, is this valid?
|
||||
@@ -57,8 +58,7 @@ public class CheckinManager {
|
||||
}
|
||||
|
||||
final URLData urlData = extractRequestParametersFromUri(uri, scheme);
|
||||
if (urlData == null)
|
||||
{
|
||||
if (urlData == null) {
|
||||
setCheckinData(null);
|
||||
return;
|
||||
}
|
||||
@@ -93,7 +93,7 @@ public class CheckinManager {
|
||||
Toast.makeText(activity, activity.getString(R.string.error_invalid_qr_code), Toast.LENGTH_LONG).show();
|
||||
urlData = null;
|
||||
}
|
||||
if(urlData != null) {
|
||||
if (urlData != null) {
|
||||
urlData.leaderboardName = leaderboardNameFromQR;
|
||||
|
||||
urlData.deviceUuid = new SmartphoneUUIDIdentifierImpl(UUID.fromString(UniqueDeviceUuid
|
||||
@@ -148,28 +148,42 @@ public class CheckinManager {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void getMarksFromServer(final String leaderboardName,
|
||||
HttpGetRequest getMarksRequest, final URLData urlData) {
|
||||
NetworkHelper.getInstance(activity).executeHttpJsonRequestAsnchronously(getMarksRequest, new NetworkHelperSuccessListener() {
|
||||
|
||||
@Override
|
||||
public void performAction(JSONObject response) {
|
||||
try {
|
||||
|
||||
private void getMarksFromServer(final String leaderboardName,
|
||||
HttpGetRequest getMarksRequest, final URLData urlData) {
|
||||
NetworkHelper.getInstance(activity).executeHttpJsonRequestAsnchronously(getMarksRequest, new NetworkHelperSuccessListener() {
|
||||
|
||||
@Override
|
||||
public void performAction(JSONObject response) {
|
||||
try {
|
||||
JSONArray markArray = response.getJSONArray("marks");
|
||||
String checkinDigest = generateCheckindigest(urlData.uriStr);
|
||||
List<MarkInfo> marks = new ArrayList<MarkInfo>();
|
||||
for(int i = 0; i< markArray.length(); i++){
|
||||
JSONObject jsonMark = (JSONObject) markArray.get(i);
|
||||
MarkInfo mark = new MarkInfo();
|
||||
mark.setCheckinDigest(checkinDigest);
|
||||
mark.setClassName(jsonMark.getString("@class"));
|
||||
mark.setName(jsonMark.getString("name"));
|
||||
mark.setId(jsonMark.getString("id"));
|
||||
mark.setType(jsonMark.getString("type"));
|
||||
marks.add(mark);
|
||||
List<MarkPingInfo> pings = new ArrayList<MarkPingInfo>();
|
||||
for (int i = 0; i < markArray.length(); i++) {
|
||||
JSONObject jsonMark = (JSONObject) markArray.get(i);
|
||||
MarkInfo mark = new MarkInfo();
|
||||
mark.setCheckinDigest(checkinDigest);
|
||||
mark.setClassName(jsonMark.getString("@class"));
|
||||
mark.setName(jsonMark.getString("name"));
|
||||
mark.setId(jsonMark.getString("id"));
|
||||
if (jsonMark.has("position")) {
|
||||
if (!jsonMark.get("position").equals(null)) {
|
||||
JSONObject positionJson = jsonMark.getJSONObject("position");
|
||||
MarkPingInfo ping = new MarkPingInfo();
|
||||
ping.setLatitude(positionJson.getString("latitude"));
|
||||
ping.setLongitude(positionJson.getString("longitude"));
|
||||
ping.setTimestamp(positionJson.getInt("timestamp"));
|
||||
ping.setAccuracy(positionJson.getDouble("accuracy"));
|
||||
ping.setMarkId(mark.getId());
|
||||
pings.add(ping);
|
||||
}
|
||||
}
|
||||
mark.setType(jsonMark.getString("type"));
|
||||
marks.add(mark);
|
||||
}
|
||||
urlData.marks = marks;
|
||||
urlData.pings = pings;
|
||||
saveCheckinDataAndNotifyListeners(urlData, leaderboardName);
|
||||
|
||||
} catch (JSONException e) {
|
||||
@@ -179,24 +193,25 @@ public class CheckinManager {
|
||||
displayAPIErrorRecommendRetry();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}, new NetworkHelper.NetworkHelperFailureListener() {
|
||||
|
||||
@Override
|
||||
|
||||
}
|
||||
}, new NetworkHelper.NetworkHelperFailureListener() {
|
||||
|
||||
@Override
|
||||
public void performAction(NetworkHelper.NetworkHelperError e) {
|
||||
ExLog.e(activity, TAG, "Failed to get marks from API: " + e.getMessage());
|
||||
activity.dismissProgressDialog();
|
||||
displayAPIErrorRecommendRetry();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void saveCheckinDataAndNotifyListeners(URLData urlData, String leaderboardName) {
|
||||
CheckinData data = new CheckinData();
|
||||
data.serverWithPort = urlData.hostWithPort;
|
||||
data.leaderboardName = leaderboardName;
|
||||
data.marks = urlData.marks;
|
||||
data.pings = urlData.pings;
|
||||
data.deviceUid = urlData.deviceUuid
|
||||
.getStringRepresentation();
|
||||
data.uriString = urlData.uriStr;
|
||||
@@ -223,12 +238,12 @@ public class CheckinManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void setCheckinData(AbstractCheckinData data){
|
||||
public void setCheckinData(AbstractCheckinData data) {
|
||||
checkinData = data;
|
||||
activity.onCheckinDataAvailable(getCheckinData());
|
||||
}
|
||||
|
||||
public AbstractCheckinData getCheckinData(){
|
||||
public AbstractCheckinData getCheckinData() {
|
||||
return checkinData;
|
||||
}
|
||||
|
||||
@@ -251,44 +266,45 @@ public class CheckinManager {
|
||||
alert.show();
|
||||
setCheckinData(null);
|
||||
}
|
||||
|
||||
private String generateCheckindigest(String url)
|
||||
{
|
||||
String checkinDigest = "";
|
||||
try {
|
||||
MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||
md.update(url.getBytes("UTF-8"));
|
||||
byte[] digest = md.digest();
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (byte byt : digest) {
|
||||
buf.append(Integer.toString((byt & 0xff) + 0x100, 16).substring(1));
|
||||
checkinDigest = buf.toString();
|
||||
}
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
return checkinDigest;
|
||||
|
||||
private String generateCheckindigest(String url) {
|
||||
String checkinDigest = "";
|
||||
try {
|
||||
MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||
md.update(url.getBytes("UTF-8"));
|
||||
byte[] digest = md.digest();
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (byte byt : digest) {
|
||||
buf.append(Integer.toString((byt & 0xff) + 0x100, 16).substring(1));
|
||||
checkinDigest = buf.toString();
|
||||
}
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
return checkinDigest;
|
||||
}
|
||||
|
||||
public interface CheckinDataHandler{
|
||||
public interface CheckinDataHandler {
|
||||
public void onCheckinDataAvailable(CheckinData data);
|
||||
}
|
||||
|
||||
private class URLData{
|
||||
private class URLData {
|
||||
public String uriStr;
|
||||
public String server;
|
||||
public int port;
|
||||
public String hostWithPort;
|
||||
public List<MarkInfo> marks;
|
||||
public List<MarkPingInfo> pings;
|
||||
public String leaderboardName;
|
||||
public DeviceIdentifier deviceUuid;
|
||||
public String getMarkUrl;
|
||||
public String getLeaderboardUrl;
|
||||
|
||||
public URLData(){
|
||||
public URLData() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+20
-14
@@ -1,8 +1,5 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.ContentProviderOperation;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentValues;
|
||||
@@ -24,6 +21,9 @@ import com.sap.sailing.android.shared.data.CheckinUrlInfo;
|
||||
import com.sap.sailing.android.shared.data.LeaderboardInfo;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DatabaseHelper {
|
||||
|
||||
private final static String TAG = DatabaseHelper.class.getName();
|
||||
@@ -100,7 +100,7 @@ public class DatabaseHelper {
|
||||
markPingInfo.setMarkId(markID);
|
||||
markPingInfo.setTimestamp(mpc.getInt((mpc.getColumnIndex(MarkPing.MARK_PING_TIMESTAMP))));
|
||||
markPingInfo.setLongitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LONGITUDE))));
|
||||
markPingInfo.setLattitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LATITUDE))));
|
||||
markPingInfo.setLatitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LATITUDE))));
|
||||
markPingInfo.setAccuracy(mpc.getDouble((mpc.getColumnIndex(MarkPing.MARK_PING_ACCURACY))));
|
||||
marks.add(markPingInfo);
|
||||
mpc.moveToNext();
|
||||
@@ -114,14 +114,19 @@ public class DatabaseHelper {
|
||||
int d1 = cr.delete(MarkPing.CONTENT_URI, MarkPing.MARK_ID + " = \"" + markID + "\"", null);
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
ExLog.i(context, TAG, "Checkout, number of markpings deleted: " + d1);
|
||||
ExLog.i(context, TAG, "Checkout, number of markpings for mark: " + markID + " deleted: " + d1);
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteRegattaFromDatabase(Context context, String checkinDigest) {
|
||||
ContentResolver cr = context.getContentResolver();
|
||||
|
||||
// int d1 = cr.delete(Event.CONTENT_URI, Event.EVENT_CHECKIN_DIGEST + " = \"" + checkinDigest + "\"", null);
|
||||
List<MarkInfo> marks = getMarks(context,checkinDigest);
|
||||
|
||||
for(MarkInfo mark : marks){
|
||||
deletePingsFromDataBase(context, mark.getId());
|
||||
}
|
||||
|
||||
int d2 = cr.delete(Leaderboard.CONTENT_URI, Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = \"" + checkinDigest
|
||||
+ "\"", null);
|
||||
int d3 = cr.delete(Mark.CONTENT_URI, Mark.MARK_CHECKIN_DIGEST + " = \"" + checkinDigest
|
||||
@@ -130,7 +135,6 @@ public class DatabaseHelper {
|
||||
+ "\"", null);
|
||||
|
||||
if (BuildConfig.DEBUG) {
|
||||
// ExLog.i(context, TAG, "Checkout, number of events deleted: " + d1);
|
||||
ExLog.i(context, TAG, "Checkout, number of leaderbards deleted: " + d2);
|
||||
ExLog.i(context, TAG, "Checkout, number of marks deleted: " + d3);
|
||||
ExLog.i(context, TAG, "Checkout, number of checkinurls deleted: " + d4);
|
||||
@@ -141,8 +145,6 @@ public class DatabaseHelper {
|
||||
* When checking in, store info on the event, the competitor and the leaderboard in the database.
|
||||
*
|
||||
* @param context
|
||||
* @param event
|
||||
* @param competitor
|
||||
* @param leaderboard
|
||||
* @return success or failure
|
||||
* @throws GeneralDatabaseHelperException
|
||||
@@ -150,7 +152,7 @@ public class DatabaseHelper {
|
||||
* @throws RemoteException
|
||||
*/
|
||||
public void storeCheckinRow(Context context, List<MarkInfo> markList,
|
||||
LeaderboardInfo leaderboard, CheckinUrlInfo checkinURL)
|
||||
LeaderboardInfo leaderboard, CheckinUrlInfo checkinURL, List<MarkPingInfo> pings)
|
||||
throws GeneralDatabaseHelperException {
|
||||
|
||||
// inserting leaderboard first
|
||||
@@ -179,6 +181,10 @@ public class DatabaseHelper {
|
||||
opList.add(ContentProviderOperation.newInsert(Mark.CONTENT_URI).withValues(cmv).build());
|
||||
}
|
||||
|
||||
for(MarkPingInfo ping: pings){
|
||||
storeMarkPing(context, ping);
|
||||
}
|
||||
|
||||
// checkin url
|
||||
|
||||
ContentValues ccuv = new ContentValues();
|
||||
@@ -199,13 +205,13 @@ public class DatabaseHelper {
|
||||
}
|
||||
|
||||
|
||||
public void storeMarkPing(Context context, MarkInfo mark, MarkPingInfo markPing) throws GeneralDatabaseHelperException{
|
||||
public void storeMarkPing(Context context, MarkPingInfo markPing) throws GeneralDatabaseHelperException{
|
||||
ContentResolver cr = context.getContentResolver();
|
||||
|
||||
deletePingsFromDataBase(context, markPing.getMarkId());
|
||||
ArrayList<ContentProviderOperation> opList = new ArrayList<ContentProviderOperation>();
|
||||
ContentValues mpcv = new ContentValues();
|
||||
mpcv.put(MarkPing.MARK_ID, mark.getId());
|
||||
mpcv.put(MarkPing.MARK_PING_LATITUDE, markPing.getLattitude());
|
||||
mpcv.put(MarkPing.MARK_ID, markPing.getMarkId());
|
||||
mpcv.put(MarkPing.MARK_PING_LATITUDE, markPing.getLatitude());
|
||||
mpcv.put(MarkPing.MARK_PING_LONGITUDE, markPing.getLongitude());
|
||||
mpcv.put(MarkPing.MARK_PING_ACCURACY, markPing.getAccuracy());
|
||||
mpcv.put(MarkPing.MARK_PING_TIMESTAMP, markPing.getTimestamp());
|
||||
|
||||
+7
-33
@@ -1,24 +1,19 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.util;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.content.Context;
|
||||
import android.location.Location;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper.GeneralDatabaseHelperException;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
|
||||
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
|
||||
import com.sap.sailing.android.shared.data.LeaderboardInfo;
|
||||
import com.sap.sailing.android.shared.data.http.HttpJsonPostRequest;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.NetworkHelper;
|
||||
import com.sap.sailing.android.shared.util.NetworkHelper.NetworkHelperError;
|
||||
import com.sap.sailing.android.shared.util.NetworkHelper.NetworkHelperSuccessListener;
|
||||
import com.sap.sailing.android.shared.services.sending.MessageSendingService;
|
||||
|
||||
public class PingHelper {
|
||||
private static String TAG = PingHelper.class.getName();
|
||||
@@ -36,37 +31,16 @@ public class PingHelper {
|
||||
|
||||
String postUrlStr = leaderBoard.serverUrl
|
||||
+ prefs.getServerMarkPingPath(leaderBoard.name, mark.getId());
|
||||
|
||||
HttpJsonPostRequest request = new HttpJsonPostRequest(new URL(postUrlStr),
|
||||
fixJson.toString(), context);
|
||||
NetworkHelper.getInstance(context)
|
||||
.executeHttpJsonRequestAsnchronously(request, new NetworkHelperSuccessListener() {
|
||||
|
||||
@Override
|
||||
public void performAction(JSONObject arg0) {
|
||||
Toast.makeText(context, "DATA SEND TO SERVER", Toast.LENGTH_LONG).show();
|
||||
|
||||
}
|
||||
}, new NetworkHelper.NetworkHelperFailureListener() {
|
||||
|
||||
@Override
|
||||
public void performAction(NetworkHelperError arg0) {
|
||||
Toast.makeText(context, "FAILURE SERVER WAS NOT NOTIFIED", Toast.LENGTH_LONG).show();
|
||||
|
||||
}
|
||||
});;
|
||||
|
||||
//context.startService(MessageSendingService.createMessageIntent(context,
|
||||
// postUrlStr, null, UUID.randomUUID(), fixJson.toString(), null));
|
||||
context.startService(MessageSendingService.createMessageIntent(context, postUrlStr,
|
||||
null, UUID.randomUUID(), fixJson.toString(), null));
|
||||
|
||||
|
||||
} catch (JSONException ex) {
|
||||
ExLog.i(context, TAG,
|
||||
"Error while building ping json " + ex.getMessage());
|
||||
} catch (GeneralDatabaseHelperException e) {
|
||||
e.printStackTrace();
|
||||
} catch (MalformedURLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,10 +49,10 @@ public class PingHelper {
|
||||
MarkInfo mark) throws GeneralDatabaseHelperException {
|
||||
MarkPingInfo pingInfo = new MarkPingInfo();
|
||||
pingInfo.setMarkId(mark.getId());
|
||||
pingInfo.setLattitude(""+ location.getLatitude());
|
||||
pingInfo.setLatitude("" + location.getLatitude());
|
||||
pingInfo.setLongitude("" + location.getLongitude());
|
||||
pingInfo.setAccuracy(location.getAccuracy());
|
||||
pingInfo.setTimestamp((int) location.getTime());
|
||||
DatabaseHelper.getInstance().storeMarkPing(context, mark, pingInfo);
|
||||
DatabaseHelper.getInstance().storeMarkPing(context, pingInfo);
|
||||
}
|
||||
}
|
||||
+5
-4
@@ -1,14 +1,14 @@
|
||||
package com.sap.sailing.android.buoy.positioning.app.valueobjects;
|
||||
|
||||
import com.sap.sailing.android.shared.data.AbstractCheckinData;
|
||||
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
|
||||
import com.sap.sailing.android.shared.data.LeaderboardInfo;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.android.shared.data.AbstractCheckinData;
|
||||
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
|
||||
import com.sap.sailing.android.shared.data.LeaderboardInfo;
|
||||
|
||||
public class CheckinData extends AbstractCheckinData{
|
||||
public String leaderboardName;
|
||||
public String deviceUid;
|
||||
@@ -16,6 +16,7 @@ public class CheckinData extends AbstractCheckinData{
|
||||
public String checkinDigest;
|
||||
public String serverWithPort;
|
||||
public List<MarkInfo> marks;
|
||||
public List<MarkPingInfo> pings;
|
||||
|
||||
public void setCheckinDigestFromString(String checkinString)
|
||||
throws UnsupportedEncodingException, NoSuchAlgorithmException {
|
||||
|
||||
+5
-5
@@ -3,7 +3,7 @@ package com.sap.sailing.android.buoy.positioning.app.valueobjects;
|
||||
public class MarkPingInfo {
|
||||
private String markId;
|
||||
private String longitude;
|
||||
private String lattitude;
|
||||
private String latitude;
|
||||
private double accuracy;
|
||||
private int timestamp;
|
||||
|
||||
@@ -23,12 +23,12 @@ public class MarkPingInfo {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
public String getLattitude() {
|
||||
return lattitude;
|
||||
public String getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
public void setLattitude(String lattitude) {
|
||||
this.lattitude = lattitude;
|
||||
public void setLatitude(String latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
public double getAccuracy() {
|
||||
|
||||
@@ -6,5 +6,6 @@
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||
<classpathentry exported="true" kind="lib" path="libs/drag-sort-listview-0.6.1-SNAPSHOT.jar"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/org.json.simple"/>
|
||||
<classpathentry kind="output" path="bin/classes"/>
|
||||
</classpath>
|
||||
@@ -1,4 +1,5 @@
|
||||
apply plugin: "com.android.application"
|
||||
apply from: "../git.gradle"
|
||||
|
||||
def packageName = "com.sap.sailing.racecommittee.app"
|
||||
def verCode = 6
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* returns current git hash
|
||||
*/
|
||||
def getGitHash = { ->
|
||||
def stdout = new ByteArrayOutputStream()
|
||||
exec {
|
||||
commandLine "git", "log", "-n", "1", "--format='%h'"
|
||||
standardOutput = stdout
|
||||
}
|
||||
return stdout.toString().trim().replace("'", "")
|
||||
}
|
||||
|
||||
/**
|
||||
* set git hash into git.xml
|
||||
*/
|
||||
preBuild.doLast {
|
||||
copy {
|
||||
from ("../git.template.xml")
|
||||
|
||||
into ("res/values")
|
||||
|
||||
rename {
|
||||
String fileName -> fileName.replace(".template", "")
|
||||
}
|
||||
|
||||
filter {
|
||||
String line -> line.replaceAll("#GITHASH#", getGitHash())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="git_hash" translatable="false">#GITHASH#</string>
|
||||
|
||||
</resources>
|
||||
Reference in new issue
Block a user