diff --git a/.gitignore b/.gitignore
index 520a863..e6e774d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,3 +53,5 @@ google-services.json
freeline.py
freeline/
freeline_project_description.json
+
+\.idea/
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 96cc43e..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index e7bedf3..0000000
--- a/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index b0a270f..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 634cbdf..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644
index 7f68460..0000000
--- a/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index fce7f71..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java
index 7bc1f9b..b1850af 100644
--- a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java
+++ b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java
@@ -1,11 +1,38 @@
package fr.utbm.lo53.p2017.positionningapp;
import android.content.Intent;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
-public class BaseActivity extends AppCompatActivity {
+import fr.utbm.lo53.p2017.positionningapp.network.URLSolver;
+
+public abstract class BaseActivity extends AppCompatActivity {
+
+ private URLSolver urlSolver;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ String defaultHostname = getString(R.string.pref_default_hostname);
+ String defaultPort = getString(R.string.pref_default_port);
+ urlSolver = new URLSolver(PreferenceManager.getDefaultSharedPreferences(this), defaultHostname, defaultPort);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(getURLSolver());
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(getURLSolver());
+ }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
@@ -40,4 +67,8 @@ public class BaseActivity extends AppCompatActivity {
return true;
}
+ public URLSolver getURLSolver() {
+ return urlSolver;
+ }
+
}
diff --git a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java
index 01f8a27..181d1f2 100644
--- a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java
+++ b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java
@@ -18,9 +18,11 @@ import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
-import com.android.volley.toolbox.StringRequest;
+import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
+import org.json.JSONObject;
+
public class PositioningActivity extends BaseActivity {
private static final String TAG = "PositioningActivity";
@@ -33,31 +35,35 @@ public class PositioningActivity extends BaseActivity {
// Instantiate the RequestQueue.
private RequestQueue queue;
- private String url = "http://www.google.com";
+ private boolean isLocating = false;
// Request a string response from the provided URL.
- private StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
- new Response.Listener() {
- @Override
- public void onResponse(String response) {
- // Display the first 500 characters of the response string.
- textView.setText("Response is: "+ response.substring(0,500));
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- Log.d(TAG, error.getCause().toString());
- textView.clearComposingText();
- }
- });
+ private JsonObjectRequest stringRequest;
private final Handler handler = new Handler();
private final Runnable runnable = new Runnable() {
@Override
public void run() {
- // Add the request to the RequestQueue.
+ // Create request
+ stringRequest = new JsonObjectRequest(Request.Method.GET,
+ getURLSolver().locateURL(),
+ null,
+ new Response.Listener() {
+ @Override
+ public void onResponse(JSONObject response) {
+ textView.setText("Response is: "+ response.toString().substring(0,500));
+ }
+ }, new Response.ErrorListener() {
+ @Override
+ public void onErrorResponse(VolleyError error) {
+ textView.setText("Error: " + error.getMessage());
+ Log.i(TAG, "Error during location request");
+ }
+ });
+ Log.v(TAG, "" + stringRequest);
queue.add(stringRequest);
- handler.postDelayed(this, 1000);
+
+ handler.postDelayed(runnable, 1000);
}
};
@@ -69,7 +75,7 @@ public class PositioningActivity extends BaseActivity {
setSupportActionBar(toolbar);
start_layout = (ConstraintLayout) findViewById(R.id.start_layout);
- hideAnimation = createFadeOutAndHideAnimation();
+ initFadeOutAndHideAnimation();
textView = (TextView) findViewById(R.id.ID_yolo);
@@ -77,9 +83,17 @@ public class PositioningActivity extends BaseActivity {
}
@Override
- protected void onDestroy() {
+ protected void onPause() {
+ super.onPause();
handler.removeCallbacks(runnable);
- super.onDestroy();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (isLocating) {
+ handler.post(runnable);
+ }
}
@Override
@@ -91,11 +105,17 @@ public class PositioningActivity extends BaseActivity {
}
public void startLocating(View v) {
+ if (isLocating) {
+ return;
+ }
+
+ isLocating = true;
start_layout.startAnimation(hideAnimation);
+
handler.post(runnable);
}
- private Animation createFadeOutAndHideAnimation() {
+ private void initFadeOutAndHideAnimation() {
ImageView hiding_image = (ImageView) findViewById(R.id.hiding_image);
final float initial_alpha = hiding_image.getImageAlpha() / 255;
Animation animation = new AlphaAnimation(initial_alpha, 0);
@@ -109,6 +129,6 @@ public class PositioningActivity extends BaseActivity {
public void onAnimationRepeat(Animation animation) {}
public void onAnimationStart(Animation animation) {}
});
- return animation;
+ hideAnimation = animation;
}
}
diff --git a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java
new file mode 100644
index 0000000..ddd5159
--- /dev/null
+++ b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java
@@ -0,0 +1,66 @@
+package fr.utbm.lo53.p2017.positionningapp.network;
+
+
+import android.content.SharedPreferences;
+import android.net.Uri;
+import android.util.Log;
+
+public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeListener {
+
+ private static final String TAG = "URLSolver;";
+
+ private static final String HOSTNAME_KEY = "hostname";
+ private static final String PORT_KEY = "port";
+
+ private final String defaultHostname;
+ private final String defaultPort;
+
+ private String hostname;
+ private int port;
+
+ public URLSolver(SharedPreferences sharedPref, String defaultHostname, String defaultPort) {
+ this.defaultHostname = defaultHostname;
+ this.defaultPort = defaultPort;
+
+ updateHostname(sharedPref);
+ updatePort(sharedPref);
+ }
+
+ private void updateHostname(SharedPreferences sharedPref) {
+ hostname = sharedPref.getString(HOSTNAME_KEY, defaultHostname);
+ Log.i(TAG, "Update host: " + hostname);
+ }
+
+ private void updatePort(SharedPreferences sharedPref) {
+ port = Integer.valueOf(sharedPref.getString(PORT_KEY, defaultPort));
+ Log.i(TAG, "Update port: " + port);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ switch (key) {
+ case HOSTNAME_KEY: updateHostname(sharedPreferences); break;
+ case PORT_KEY: updateHostname(sharedPreferences); break;
+ }
+ }
+
+ private Uri.Builder baseURL() {
+ Uri.Builder builder = new Uri.Builder();
+ return builder.scheme("http").encodedAuthority(hostname + ":" + port);
+ }
+
+ public String locateURL(/* TODO: mac ... */) {
+ Uri.Builder b = baseURL();
+ b.appendPath("positioning")
+ .appendPath("request")
+ .appendQueryParameter("mac", "TODO"); // TODO
+ return b.build().toString();
+ }
+
+ public String calibrateURL() {
+ Uri.Builder b = baseURL();
+ b.appendPath("calibration")
+ .appendPath("request");
+ return b.build().toString();
+ }
+}
diff --git a/app/src/main/res/layout/content_calibration.xml b/app/src/main/res/layout/content_calibration.xml
index 6e089d0..5b38e27 100644
--- a/app/src/main/res/layout/content_calibration.xml
+++ b/app/src/main/res/layout/content_calibration.xml
@@ -12,9 +12,12 @@
android:id="@+id/Map"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
+ android:layout_marginStart="8dp"
android:layout_marginTop="50dp"
+ android:adjustViewBounds="true"
android:paddingLeft="0dp"
android:paddingTop="0dp"
android:scaleType="fitXY"
@@ -22,9 +25,7 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
- app:srcCompat="@drawable/map"
- android:layout_marginStart="8dp"
- android:layout_marginEnd="8dp" />
+ app:srcCompat="@drawable/map" />
127.0.0.1
Port
- 8080
+ 8080
diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml
index 0f4a336..6a6e981 100644
--- a/app/src/main/res/xml/pref_general.xml
+++ b/app/src/main/res/xml/pref_general.xml
@@ -35,14 +35,17 @@
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_title_hostname" />
+
+ android:title="@string/pref_title_port"
+ android:numeric="integer"
+ android:maxLength="5" />
--
libgit2 0.21.4