From c006882ea496f23fbcdcd24513556a9c237f4e5f Mon Sep 17 00:00:00 2001 From: Florian Staine Date: Sat, 17 Jun 2017 11:17:15 +0200 Subject: [PATCH] Connection to server --- .gitignore | 2 ++ .idea/compiler.xml | 22 ---------------------- .idea/copyright/profiles_settings.xml | 3 --- .idea/misc.xml | 36 ------------------------------------ .idea/modules.xml | 9 --------- .idea/runConfigurations.xml | 12 ------------ .idea/vcs.xml | 7 ------- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java | 33 ++++++++++++++++++++++++++++++++- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java | 66 +++++++++++++++++++++++++++++++++++++++++++----------------------- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/src/main/res/layout/content_calibration.xml | 13 +++++++------ app/src/main/res/values/strings.xml | 2 +- app/src/main/res/xml/pref_general.xml | 7 +++++-- 13 files changed, 156 insertions(+), 122 deletions(-) delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/copyright/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/runConfigurations.xml delete mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java 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