Commit 5b2418c40c339b516ee4a25fa4402e1323c9be7d

Authored by florian staine
1 parent 6cecd44a

Hide map before loading & add loading anim

app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java
@@ -8,6 +8,7 @@ import android.os.Build; @@ -8,6 +8,7 @@ import android.os.Build;
8 import android.os.Bundle; 8 import android.os.Bundle;
9 import android.os.Handler; 9 import android.os.Handler;
10 import android.support.constraint.ConstraintLayout; 10 import android.support.constraint.ConstraintLayout;
  11 +import android.support.design.widget.Snackbar;
11 import android.support.v7.widget.Toolbar; 12 import android.support.v7.widget.Toolbar;
12 import android.util.Log; 13 import android.util.Log;
13 import android.view.Menu; 14 import android.view.Menu;
@@ -16,8 +17,9 @@ import android.view.View; @@ -16,8 +17,9 @@ import android.view.View;
16 import android.view.animation.AccelerateInterpolator; 17 import android.view.animation.AccelerateInterpolator;
17 import android.view.animation.AlphaAnimation; 18 import android.view.animation.AlphaAnimation;
18 import android.view.animation.Animation; 19 import android.view.animation.Animation;
  20 +import android.view.animation.AnimationUtils;
  21 +import android.view.animation.RotateAnimation;
19 import android.widget.ImageView; 22 import android.widget.ImageView;
20 -import android.widget.TextView;  
21 23
22 import com.android.volley.Request; 24 import com.android.volley.Request;
23 import com.android.volley.RequestQueue; 25 import com.android.volley.RequestQueue;
@@ -41,8 +43,8 @@ public class PositioningActivity extends BaseActivity { @@ -41,8 +43,8 @@ public class PositioningActivity extends BaseActivity {
41 private static final String TAG = "PositioningActivity"; 43 private static final String TAG = "PositioningActivity";
42 44
43 private ConstraintLayout start_layout; 45 private ConstraintLayout start_layout;
44 - private TextView textView;  
45 private ImageView mapView; 46 private ImageView mapView;
  47 + private ImageView imageLoading;
46 48
47 private Animation hideAnimation; 49 private Animation hideAnimation;
48 50
@@ -67,16 +69,15 @@ public class PositioningActivity extends BaseActivity { @@ -67,16 +69,15 @@ public class PositioningActivity extends BaseActivity {
67 try { 69 try {
68 float x = (float) response.getDouble("x"); 70 float x = (float) response.getDouble("x");
69 float y = (float) response.getDouble("y"); 71 float y = (float) response.getDouble("y");
70 - int mapId = response.getInt("map_id"); 72 + int mapId = response.getInt("map");
  73 + imageLoading.setVisibility(View.GONE);
71 if (hasCorrectMap(mapId)) { 74 if (hasCorrectMap(mapId)) {
72 putPoint(x, y); 75 putPoint(x, y);
73 - textView.setText("");  
74 } else { 76 } else {
75 getMap(mapId); 77 getMap(mapId);
76 } 78 }
77 } catch (JSONException e) { 79 } catch (JSONException e) {
78 - Log.e(TAG, e.toString());  
79 - textView.setText("Could not parse the response !"); 80 + Log.e(TAG, "Could not parse the response: " + e.toString());
80 } 81 }
81 } 82 }
82 }, new Response.ErrorListener() { 83 }, new Response.ErrorListener() {
@@ -85,8 +86,7 @@ public class PositioningActivity extends BaseActivity { @@ -85,8 +86,7 @@ public class PositioningActivity extends BaseActivity {
85 // TODO: Remove random position 86 // TODO: Remove random position
86 Random r = new Random(); 87 Random r = new Random();
87 putPoint(r.nextFloat(), r.nextFloat()); 88 putPoint(r.nextFloat(), r.nextFloat());
88 - textView.setText("Error: " + error.getMessage());  
89 - Log.i(TAG, "Error during location request"); 89 + Snackbar.make(mapView, "Error during positioning request", Snackbar.LENGTH_LONG).show();
90 } 90 }
91 }); 91 });
92 Log.v(TAG, "" + locateRequest); 92 Log.v(TAG, "" + locateRequest);
@@ -106,10 +106,10 @@ public class PositioningActivity extends BaseActivity { @@ -106,10 +106,10 @@ public class PositioningActivity extends BaseActivity {
106 start_layout = (ConstraintLayout) findViewById(R.id.start_layout); 106 start_layout = (ConstraintLayout) findViewById(R.id.start_layout);
107 initFadeOutAndHideAnimation(); 107 initFadeOutAndHideAnimation();
108 108
109 - textView = (TextView) findViewById(R.id.ID_yolo);  
110 -  
111 mapView = (ImageView) findViewById(R.id.map); 109 mapView = (ImageView) findViewById(R.id.map);
112 110
  111 + imageLoading = (ImageView) findViewById(R.id.img_loading);
  112 +
113 queue = Volley.newRequestQueue(this); 113 queue = Volley.newRequestQueue(this);
114 } 114 }
115 115
@@ -140,8 +140,13 @@ public class PositioningActivity extends BaseActivity { @@ -140,8 +140,13 @@ public class PositioningActivity extends BaseActivity {
140 if (isLocating) { 140 if (isLocating) {
141 return; 141 return;
142 } 142 }
143 -  
144 isLocating = true; 143 isLocating = true;
  144 +
  145 + final Animation rotate = AnimationUtils.loadAnimation(this, R.anim.rotate);
  146 + rotate.setDuration(1500);
  147 + imageLoading.setVisibility(View.VISIBLE);
  148 + imageLoading.startAnimation(rotate);
  149 +
145 start_layout.startAnimation(hideAnimation); 150 start_layout.startAnimation(hideAnimation);
146 151
147 handler.post(runnable); 152 handler.post(runnable);
@@ -179,19 +184,22 @@ public class PositioningActivity extends BaseActivity { @@ -179,19 +184,22 @@ public class PositioningActivity extends BaseActivity {
179 } 184 }
180 185
181 private void getMap(int mapId) { 186 private void getMap(int mapId) {
  187 + mapView.setVisibility(mapView.INVISIBLE);
182 ImageRequest mapRequest = new ImageRequest( 188 ImageRequest mapRequest = new ImageRequest(
183 - getURLSolver().mapDataURL(mapId), 189 + getURLSolver().mapBytesURL(mapId),
184 new Response.Listener<Bitmap>() { 190 new Response.Listener<Bitmap>() {
185 @Override 191 @Override
186 public void onResponse(Bitmap bitmap) { 192 public void onResponse(Bitmap bitmap) {
187 mapView.setImageBitmap(bitmap); 193 mapView.setImageBitmap(bitmap);
188 mapView.setVisibility(mapView.VISIBLE); 194 mapView.setVisibility(mapView.VISIBLE);
  195 + Snackbar.make(mapView, "You need to set a point before measurement.", Snackbar.LENGTH_LONG)
  196 + .setAction("Action", null).show();
189 } 197 }
190 }, 0, 0, null, 198 }, 0, 0, null,
191 new Response.ErrorListener() { 199 new Response.ErrorListener() {
192 public void onErrorResponse(VolleyError error) { 200 public void onErrorResponse(VolleyError error) {
193 - mapView.setImageResource(R.drawable.map2);  
194 - textView.setText("Can't load map!!!"); 201 + Snackbar.make(mapView, "Can't load map !", Snackbar.LENGTH_LONG)
  202 + .setAction("Action", null).show();
195 } 203 }
196 }); 204 });
197 queue.add(mapRequest); 205 queue.add(mapRequest);
app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java
@@ -46,14 +46,14 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList @@ -46,14 +46,14 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList
46 46
47 private Uri.Builder baseURL() { 47 private Uri.Builder baseURL() {
48 Uri.Builder builder = new Uri.Builder(); 48 Uri.Builder builder = new Uri.Builder();
49 - return builder.scheme("http").encodedAuthority(hostname + ":" + port); 49 + return builder.scheme("http").encodedAuthority(hostname + ":" + port).appendPath("positioning_server");
50 } 50 }
51 51
52 public String locateURL(String mac) { 52 public String locateURL(String mac) {
53 Uri.Builder b = baseURL(); 53 Uri.Builder b = baseURL();
54 b.appendPath("positioning") 54 b.appendPath("positioning")
55 .appendPath("request") 55 .appendPath("request")
56 - .appendQueryParameter("mac", mac); 56 + .appendQueryParameter("CLIENT_MAC_ADDR", mac);
57 return b.build().toString(); 57 return b.build().toString();
58 } 58 }
59 59
@@ -67,9 +67,11 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList @@ -67,9 +67,11 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList
67 return b.build().toString(); 67 return b.build().toString();
68 } 68 }
69 69
70 - public String mapDataURL(int mapId) { 70 + public String mapBytesURL(int mapId) {
71 Uri.Builder b = baseURL(); 71 Uri.Builder b = baseURL();
72 - b.appendPath("static").appendPath("map.png"); 72 + b.appendPath("map")
  73 + .appendPath("byte")
  74 + .appendQueryParameter("MAP_ID", String.format("%d", mapId));
73 return b.build().toString(); 75 return b.build().toString();
74 } 76 }
75 } 77 }
app/src/main/res/anim/rotate.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<rotate xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:fromDegrees="0"
  4 + android:interpolator="@android:anim/linear_interpolator"
  5 + android:pivotX="50%"
  6 + android:pivotY="50%"
  7 + android:repeatCount="infinite"
  8 + android:toDegrees="360" />
app/src/main/res/drawable/ic_autorenew_black_24dp.png 0 → 100644

369 Bytes

app/src/main/res/layout/content_positioning.xml
@@ -14,11 +14,10 @@ @@ -14,11 +14,10 @@
14 android:layout_height="wrap_content" 14 android:layout_height="wrap_content"
15 android:layout_marginEnd="8dp" 15 android:layout_marginEnd="8dp"
16 android:layout_marginLeft="0dp" 16 android:layout_marginLeft="0dp"
17 - android:layout_marginRight="8dp" 17 + android:layout_marginRight="0dp"
18 android:layout_marginStart="8dp" 18 android:layout_marginStart="8dp"
19 - android:layout_marginTop="8dp" 19 + android:layout_marginTop="0dp"
20 android:adjustViewBounds="true" 20 android:adjustViewBounds="true"
21 - android:scaleType="fitXY"  
22 android:visibility="invisible" 21 android:visibility="invisible"
23 app:layout_constraintLeft_toLeftOf="parent" 22 app:layout_constraintLeft_toLeftOf="parent"
24 app:layout_constraintRight_toRightOf="parent" 23 app:layout_constraintRight_toRightOf="parent"
@@ -46,16 +45,6 @@ @@ -46,16 +45,6 @@
46 app:layout_constraintVertical_bias="0.0" 45 app:layout_constraintVertical_bias="0.0"
47 app:srcCompat="@drawable/map_marker" /> 46 app:srcCompat="@drawable/map_marker" />
48 47
49 - <TextView  
50 - android:id="@+id/ID_yolo"  
51 - android:layout_width="wrap_content"  
52 - android:layout_height="wrap_content"  
53 - android:text="TextView"  
54 - android:textAppearance="@style/TextAppearance.AppCompat.Medium"  
55 - tools:layout_editor_absoluteX="0dp"  
56 - android:layout_marginTop="0dp"  
57 - app:layout_constraintTop_toBottomOf="@+id/start_layout" />  
58 -  
59 <android.support.constraint.ConstraintLayout 48 <android.support.constraint.ConstraintLayout
60 android:id="@+id/start_layout" 49 android:id="@+id/start_layout"
61 android:layout_width="0dp" 50 android:layout_width="0dp"
@@ -93,4 +82,19 @@ @@ -93,4 +82,19 @@
93 app:layout_constraintTop_toTopOf="parent" /> 82 app:layout_constraintTop_toTopOf="parent" />
94 </android.support.constraint.ConstraintLayout> 83 </android.support.constraint.ConstraintLayout>
95 84
  85 + <ImageView
  86 + android:id="@+id/img_loading"
  87 + android:layout_width="wrap_content"
  88 + android:layout_height="wrap_content"
  89 + android:visibility="invisible"
  90 + app:srcCompat="@drawable/ic_autorenew_black_24dp"
  91 + android:layout_marginRight="8dp"
  92 + app:layout_constraintRight_toRightOf="parent"
  93 + android:layout_marginLeft="8dp"
  94 + app:layout_constraintLeft_toLeftOf="parent"
  95 + app:layout_constraintTop_toTopOf="parent"
  96 + android:layout_marginTop="8dp"
  97 + app:layout_constraintBottom_toBottomOf="parent"
  98 + android:layout_marginBottom="8dp" />
  99 +
96 </android.support.constraint.ConstraintLayout> 100 </android.support.constraint.ConstraintLayout>