Commit 6414e7ce304837391bf9060d671b5309ebab2d7c
1 parent
5b2418c4
Fix URL parametres & add MAC address for calibration requests.
Showing
4 changed files
with
75 additions
and
65 deletions
Show diff stats
app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java
1 | package fr.utbm.lo53.p2017.positionningapp; | 1 | package fr.utbm.lo53.p2017.positionningapp; |
2 | 2 | ||
3 | +import android.content.Context; | ||
3 | import android.content.Intent; | 4 | import android.content.Intent; |
5 | +import android.net.wifi.WifiInfo; | ||
6 | +import android.net.wifi.WifiManager; | ||
7 | +import android.os.Build; | ||
4 | import android.os.Bundle; | 8 | import android.os.Bundle; |
5 | import android.preference.PreferenceManager; | 9 | import android.preference.PreferenceManager; |
6 | import android.support.annotation.Nullable; | 10 | import android.support.annotation.Nullable; |
@@ -8,6 +12,11 @@ import android.support.v7.app.AppCompatActivity; | @@ -8,6 +12,11 @@ import android.support.v7.app.AppCompatActivity; | ||
8 | import android.view.Menu; | 12 | import android.view.Menu; |
9 | import android.view.MenuItem; | 13 | import android.view.MenuItem; |
10 | 14 | ||
15 | +import java.net.NetworkInterface; | ||
16 | +import java.net.SocketException; | ||
17 | +import java.util.Collections; | ||
18 | +import java.util.List; | ||
19 | + | ||
11 | import fr.utbm.lo53.p2017.positionningapp.network.URLSolver; | 20 | import fr.utbm.lo53.p2017.positionningapp.network.URLSolver; |
12 | 21 | ||
13 | public abstract class BaseActivity extends AppCompatActivity { | 22 | public abstract class BaseActivity extends AppCompatActivity { |
@@ -71,4 +80,40 @@ public abstract class BaseActivity extends AppCompatActivity { | @@ -71,4 +80,40 @@ public abstract class BaseActivity extends AppCompatActivity { | ||
71 | return urlSolver; | 80 | return urlSolver; |
72 | } | 81 | } |
73 | 82 | ||
83 | + protected String getMacAddress() { | ||
84 | + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { | ||
85 | + // Get MAC address prior to android 6.0 | ||
86 | + WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); | ||
87 | + WifiInfo wInfo = wifiManager.getConnectionInfo(); | ||
88 | + return wInfo.getMacAddress(); | ||
89 | + } else { | ||
90 | + // Removed in Android 6.0 -> manually get MAC address | ||
91 | + try { | ||
92 | + List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); | ||
93 | + for (NetworkInterface nif : all) { | ||
94 | + if (!nif.getName().equalsIgnoreCase("wlan0")) continue; | ||
95 | + | ||
96 | + byte[] macBytes = nif.getHardwareAddress(); | ||
97 | + if (macBytes == null) { | ||
98 | + return ""; | ||
99 | + } | ||
100 | + | ||
101 | + StringBuilder res1 = new StringBuilder(); | ||
102 | + for (byte b : macBytes) { | ||
103 | + //res1.append(Integer.toHexString(b & 0xFF) + ":"); | ||
104 | + res1.append(String.format("%02X:", b)); | ||
105 | + } | ||
106 | + | ||
107 | + if (res1.length() > 0) { | ||
108 | + res1.deleteCharAt(res1.length() - 1); | ||
109 | + } | ||
110 | + return res1.toString(); | ||
111 | + } | ||
112 | + } catch (SocketException e) { | ||
113 | + e.printStackTrace(); | ||
114 | + } | ||
115 | + return "02:00:00:00:00:00"; | ||
116 | + } | ||
117 | + } | ||
118 | + | ||
74 | } | 119 | } |
app/src/main/java/fr/utbm/lo53/p2017/positionningapp/Calibration.java
@@ -52,11 +52,11 @@ public class Calibration extends BaseActivity { | @@ -52,11 +52,11 @@ public class Calibration extends BaseActivity { | ||
52 | adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); | 52 | adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
53 | spinner.setAdapter(adapter); | 53 | spinner.setAdapter(adapter); |
54 | 54 | ||
55 | - Map.setVisibility(Map.INVISIBLE); | ||
56 | - setPointButton.setVisibility(setPointButton.INVISIBLE); | ||
57 | - MapMarker.setVisibility(MapMarker.INVISIBLE); | ||
58 | - cancelButton.setVisibility(cancelButton.INVISIBLE); | ||
59 | - measureButton.setVisibility(measureButton.INVISIBLE); | 55 | + Map.setVisibility(View.INVISIBLE); |
56 | + setPointButton.setVisibility(View.INVISIBLE); | ||
57 | + MapMarker.setVisibility(View.INVISIBLE); | ||
58 | + cancelButton.setVisibility(View.INVISIBLE); | ||
59 | + measureButton.setVisibility(View.INVISIBLE); | ||
60 | 60 | ||
61 | //Map.setMaxHeight(50); | 61 | //Map.setMaxHeight(50); |
62 | 62 | ||
@@ -64,8 +64,8 @@ public class Calibration extends BaseActivity { | @@ -64,8 +64,8 @@ public class Calibration extends BaseActivity { | ||
64 | @Override | 64 | @Override |
65 | public boolean onTouch(View view, MotionEvent motionEvent) { | 65 | public boolean onTouch(View view, MotionEvent motionEvent) { |
66 | /*motionEvent.getAction()==motionEvent.ACTION_MOVE &&*/ | 66 | /*motionEvent.getAction()==motionEvent.ACTION_MOVE &&*/ |
67 | - if( setPointButton.getVisibility() == setPointButton.INVISIBLE && motionEvent.getX() <= Map.getWidth() && motionEvent.getY() <= Map.getHeight() && motionEvent.getX() >= 0 && motionEvent.getY() >= 0) { | ||
68 | - MapMarker.setVisibility(MapMarker.VISIBLE); | 67 | + if( setPointButton.getVisibility() == View.INVISIBLE && motionEvent.getX() <= Map.getWidth() && motionEvent.getY() <= Map.getHeight() && motionEvent.getX() >= 0 && motionEvent.getY() >= 0) { |
68 | + MapMarker.setVisibility(View.VISIBLE); | ||
69 | width = motionEvent.getX() / Map.getWidth(); | 69 | width = motionEvent.getX() / Map.getWidth(); |
70 | height = motionEvent.getY() / Map.getHeight(); | 70 | height = motionEvent.getY() / Map.getHeight(); |
71 | /*Snackbar.make(view, " X : " + height + " Y : " + width, Snackbar.LENGTH_LONG) | 71 | /*Snackbar.make(view, " X : " + height + " Y : " + width, Snackbar.LENGTH_LONG) |
@@ -81,20 +81,20 @@ public class Calibration extends BaseActivity { | @@ -81,20 +81,20 @@ public class Calibration extends BaseActivity { | ||
81 | setPointButton.setOnClickListener(new View.OnClickListener() { | 81 | setPointButton.setOnClickListener(new View.OnClickListener() { |
82 | @Override | 82 | @Override |
83 | public void onClick(View v) { | 83 | public void onClick(View v) { |
84 | - setPointButton.setVisibility(setPointButton.INVISIBLE); | ||
85 | - cancelButton.setVisibility(cancelButton.VISIBLE); | ||
86 | - measureButton.setVisibility(measureButton.VISIBLE); | ||
87 | - spinner.setVisibility(spinner.INVISIBLE); | 84 | + setPointButton.setVisibility(View.INVISIBLE); |
85 | + cancelButton.setVisibility(View.VISIBLE); | ||
86 | + measureButton.setVisibility(View.VISIBLE); | ||
87 | + spinner.setVisibility(View.INVISIBLE); | ||
88 | } | 88 | } |
89 | }); | 89 | }); |
90 | cancelButton.setOnClickListener(new View.OnClickListener() { | 90 | cancelButton.setOnClickListener(new View.OnClickListener() { |
91 | @Override | 91 | @Override |
92 | public void onClick(View v) { | 92 | public void onClick(View v) { |
93 | - setPointButton.setVisibility(setPointButton.VISIBLE); | ||
94 | - cancelButton.setVisibility(cancelButton.INVISIBLE); | ||
95 | - measureButton.setVisibility(measureButton.INVISIBLE); | ||
96 | - MapMarker.setVisibility(MapMarker.INVISIBLE); | ||
97 | - spinner.setVisibility(spinner.VISIBLE); | 93 | + setPointButton.setVisibility(View.VISIBLE); |
94 | + cancelButton.setVisibility(View.INVISIBLE); | ||
95 | + measureButton.setVisibility(View.INVISIBLE); | ||
96 | + MapMarker.setVisibility(View.INVISIBLE); | ||
97 | + spinner.setVisibility(View.VISIBLE); | ||
98 | } | 98 | } |
99 | }); | 99 | }); |
100 | spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { | 100 | spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { |
@@ -102,14 +102,14 @@ public class Calibration extends BaseActivity { | @@ -102,14 +102,14 @@ public class Calibration extends BaseActivity { | ||
102 | public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { | 102 | public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { |
103 | Log.i(TAG, String.format("Pos: %d, ID %d", position, id)); | 103 | Log.i(TAG, String.format("Pos: %d, ID %d", position, id)); |
104 | map_id = id; | 104 | map_id = id; |
105 | - Map.setVisibility(Map.VISIBLE); | ||
106 | - setPointButton.setVisibility(setPointButton.VISIBLE); | 105 | + Map.setVisibility(View.VISIBLE); |
106 | + setPointButton.setVisibility(View.VISIBLE); | ||
107 | } | 107 | } |
108 | 108 | ||
109 | @Override | 109 | @Override |
110 | public void onNothingSelected(AdapterView<?> parent) { | 110 | public void onNothingSelected(AdapterView<?> parent) { |
111 | - Map.setVisibility(Map.INVISIBLE); | ||
112 | - setPointButton.setVisibility(setPointButton.INVISIBLE); | 111 | + Map.setVisibility(View.INVISIBLE); |
112 | + setPointButton.setVisibility(View.INVISIBLE); | ||
113 | } | 113 | } |
114 | }); | 114 | }); |
115 | } | 115 | } |
@@ -123,11 +123,11 @@ public class Calibration extends BaseActivity { | @@ -123,11 +123,11 @@ public class Calibration extends BaseActivity { | ||
123 | } | 123 | } |
124 | 124 | ||
125 | public void sendCalibrateRequest(final View v) { | 125 | public void sendCalibrateRequest(final View v) { |
126 | - if(MapMarker.getVisibility()==MapMarker.INVISIBLE) { | 126 | + if(MapMarker.getVisibility()== View.INVISIBLE) { |
127 | Snackbar.make(v, "You need to set a point before measurement.", Snackbar.LENGTH_LONG) | 127 | Snackbar.make(v, "You need to set a point before measurement.", Snackbar.LENGTH_LONG) |
128 | .setAction("Action", null).show(); | 128 | .setAction("Action", null).show(); |
129 | } else { | 129 | } else { |
130 | - JsonRequest request = new JsonObjectRequest(Request.Method.GET,getURLSolver().calibrateURL(width,height,map_id),null, | 130 | + JsonRequest request = new JsonObjectRequest(Request.Method.GET,getURLSolver().calibrateURL(getMacAddress(), width,height,map_id),null, |
131 | new Response.Listener<JSONObject>() { | 131 | new Response.Listener<JSONObject>() { |
132 | @Override | 132 | @Override |
133 | public void onResponse(JSONObject response) { | 133 | public void onResponse(JSONObject response) { |
app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java
@@ -176,7 +176,7 @@ public class PositioningActivity extends BaseActivity { | @@ -176,7 +176,7 @@ public class PositioningActivity extends BaseActivity { | ||
176 | mapMarker.setX(mapView.getX() + x_on_map - mapMarker.getWidth()/2); | 176 | mapMarker.setX(mapView.getX() + x_on_map - mapMarker.getWidth()/2); |
177 | mapMarker.setY(mapView.getY() + y_on_map - mapMarker.getHeight()); | 177 | mapMarker.setY(mapView.getY() + y_on_map - mapMarker.getHeight()); |
178 | mapMarker.setVisibility(View.VISIBLE); | 178 | mapMarker.setVisibility(View.VISIBLE); |
179 | - mapView.setVisibility(mapView.VISIBLE); | 179 | + mapView.setVisibility(View.VISIBLE); |
180 | } | 180 | } |
181 | 181 | ||
182 | private boolean hasCorrectMap(int mapId) { | 182 | private boolean hasCorrectMap(int mapId) { |
@@ -184,14 +184,14 @@ public class PositioningActivity extends BaseActivity { | @@ -184,14 +184,14 @@ public class PositioningActivity extends BaseActivity { | ||
184 | } | 184 | } |
185 | 185 | ||
186 | private void getMap(int mapId) { | 186 | private void getMap(int mapId) { |
187 | - mapView.setVisibility(mapView.INVISIBLE); | 187 | + mapView.setVisibility(View.INVISIBLE); |
188 | ImageRequest mapRequest = new ImageRequest( | 188 | ImageRequest mapRequest = new ImageRequest( |
189 | getURLSolver().mapBytesURL(mapId), | 189 | getURLSolver().mapBytesURL(mapId), |
190 | new Response.Listener<Bitmap>() { | 190 | new Response.Listener<Bitmap>() { |
191 | @Override | 191 | @Override |
192 | public void onResponse(Bitmap bitmap) { | 192 | public void onResponse(Bitmap bitmap) { |
193 | mapView.setImageBitmap(bitmap); | 193 | mapView.setImageBitmap(bitmap); |
194 | - mapView.setVisibility(mapView.VISIBLE); | 194 | + mapView.setVisibility(View.VISIBLE); |
195 | Snackbar.make(mapView, "You need to set a point before measurement.", Snackbar.LENGTH_LONG) | 195 | Snackbar.make(mapView, "You need to set a point before measurement.", Snackbar.LENGTH_LONG) |
196 | .setAction("Action", null).show(); | 196 | .setAction("Action", null).show(); |
197 | } | 197 | } |
@@ -204,40 +204,4 @@ public class PositioningActivity extends BaseActivity { | @@ -204,40 +204,4 @@ public class PositioningActivity extends BaseActivity { | ||
204 | }); | 204 | }); |
205 | queue.add(mapRequest); | 205 | queue.add(mapRequest); |
206 | } | 206 | } |
207 | - | ||
208 | - protected String getMacAddress() { | ||
209 | - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { | ||
210 | - // Get MAC address prior to android 6.0 | ||
211 | - WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); | ||
212 | - WifiInfo wInfo = wifiManager.getConnectionInfo(); | ||
213 | - return wInfo.getMacAddress(); | ||
214 | - } else { | ||
215 | - // Removed in Android 6.0 -> manually get MAC address | ||
216 | - try { | ||
217 | - List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces()); | ||
218 | - for (NetworkInterface nif : all) { | ||
219 | - if (!nif.getName().equalsIgnoreCase("wlan0")) continue; | ||
220 | - | ||
221 | - byte[] macBytes = nif.getHardwareAddress(); | ||
222 | - if (macBytes == null) { | ||
223 | - return ""; | ||
224 | - } | ||
225 | - | ||
226 | - StringBuilder res1 = new StringBuilder(); | ||
227 | - for (byte b : macBytes) { | ||
228 | - //res1.append(Integer.toHexString(b & 0xFF) + ":"); | ||
229 | - res1.append(String.format("%02X:", b)); | ||
230 | - } | ||
231 | - | ||
232 | - if (res1.length() > 0) { | ||
233 | - res1.deleteCharAt(res1.length() - 1); | ||
234 | - } | ||
235 | - return res1.toString(); | ||
236 | - } | ||
237 | - } catch (SocketException e) { | ||
238 | - e.printStackTrace(); | ||
239 | - } | ||
240 | - return "02:00:00:00:00:00"; | ||
241 | - } | ||
242 | - } | ||
243 | } | 207 | } |
app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java
@@ -57,13 +57,14 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList | @@ -57,13 +57,14 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList | ||
57 | return b.build().toString(); | 57 | return b.build().toString(); |
58 | } | 58 | } |
59 | 59 | ||
60 | - public String calibrateURL(float x, float y, long map_id) { | 60 | + public String calibrateURL(String mac, float x, float y, long map_id) { |
61 | Uri.Builder b = baseURL(); | 61 | Uri.Builder b = baseURL(); |
62 | b.appendPath("calibration") | 62 | b.appendPath("calibration") |
63 | .appendPath("request") | 63 | .appendPath("request") |
64 | - .appendQueryParameter("x", String.format("%f",x)) | ||
65 | - .appendQueryParameter("y", String.format("%f",y)) | ||
66 | - .appendQueryParameter("map_id", String.format("%d", map_id)); | 64 | + .appendQueryParameter("X", String.format("%f",x)) |
65 | + .appendQueryParameter("Y", String.format("%f",y)) | ||
66 | + .appendQueryParameter("CLIENT_MAC_ADDR", mac) | ||
67 | + .appendQueryParameter("MAP_ID", String.format("%d", map_id)); | ||
67 | return b.build().toString(); | 68 | return b.build().toString(); |
68 | } | 69 | } |
69 | 70 |