From 6414e7ce304837391bf9060d671b5309ebab2d7c Mon Sep 17 00:00:00 2001 From: Florian Staine Date: Mon, 26 Jun 2017 20:14:59 +0200 Subject: [PATCH] Fix URL parametres & add MAC address for calibration requests. --- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/BaseActivity.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ app/src/main/java/fr/utbm/lo53/p2017/positionningapp/Calibration.java | 44 ++++++++++++++++++++++---------------------- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java | 42 +++--------------------------------------- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java | 9 +++++---- 4 files changed, 75 insertions(+), 65 deletions(-) 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 b1850af..bc62a66 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,6 +1,10 @@ package fr.utbm.lo53.p2017.positionningapp; +import android.content.Context; import android.content.Intent; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; @@ -8,6 +12,11 @@ import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Collections; +import java.util.List; + import fr.utbm.lo53.p2017.positionningapp.network.URLSolver; public abstract class BaseActivity extends AppCompatActivity { @@ -71,4 +80,40 @@ public abstract class BaseActivity extends AppCompatActivity { return urlSolver; } + protected String getMacAddress() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + // Get MAC address prior to android 6.0 + WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); + WifiInfo wInfo = wifiManager.getConnectionInfo(); + return wInfo.getMacAddress(); + } else { + // Removed in Android 6.0 -> manually get MAC address + try { + List all = Collections.list(NetworkInterface.getNetworkInterfaces()); + for (NetworkInterface nif : all) { + if (!nif.getName().equalsIgnoreCase("wlan0")) continue; + + byte[] macBytes = nif.getHardwareAddress(); + if (macBytes == null) { + return ""; + } + + StringBuilder res1 = new StringBuilder(); + for (byte b : macBytes) { + //res1.append(Integer.toHexString(b & 0xFF) + ":"); + res1.append(String.format("%02X:", b)); + } + + if (res1.length() > 0) { + res1.deleteCharAt(res1.length() - 1); + } + return res1.toString(); + } + } catch (SocketException e) { + e.printStackTrace(); + } + return "02:00:00:00:00:00"; + } + } + } diff --git a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/Calibration.java b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/Calibration.java index ad4529a..2c7ba82 100644 --- a/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/Calibration.java +++ b/app/src/main/java/fr/utbm/lo53/p2017/positionningapp/Calibration.java @@ -52,11 +52,11 @@ public class Calibration extends BaseActivity { adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); - Map.setVisibility(Map.INVISIBLE); - setPointButton.setVisibility(setPointButton.INVISIBLE); - MapMarker.setVisibility(MapMarker.INVISIBLE); - cancelButton.setVisibility(cancelButton.INVISIBLE); - measureButton.setVisibility(measureButton.INVISIBLE); + Map.setVisibility(View.INVISIBLE); + setPointButton.setVisibility(View.INVISIBLE); + MapMarker.setVisibility(View.INVISIBLE); + cancelButton.setVisibility(View.INVISIBLE); + measureButton.setVisibility(View.INVISIBLE); //Map.setMaxHeight(50); @@ -64,8 +64,8 @@ public class Calibration extends BaseActivity { @Override public boolean onTouch(View view, MotionEvent motionEvent) { /*motionEvent.getAction()==motionEvent.ACTION_MOVE &&*/ - if( setPointButton.getVisibility() == setPointButton.INVISIBLE && motionEvent.getX() <= Map.getWidth() && motionEvent.getY() <= Map.getHeight() && motionEvent.getX() >= 0 && motionEvent.getY() >= 0) { - MapMarker.setVisibility(MapMarker.VISIBLE); + if( setPointButton.getVisibility() == View.INVISIBLE && motionEvent.getX() <= Map.getWidth() && motionEvent.getY() <= Map.getHeight() && motionEvent.getX() >= 0 && motionEvent.getY() >= 0) { + MapMarker.setVisibility(View.VISIBLE); width = motionEvent.getX() / Map.getWidth(); height = motionEvent.getY() / Map.getHeight(); /*Snackbar.make(view, " X : " + height + " Y : " + width, Snackbar.LENGTH_LONG) @@ -81,20 +81,20 @@ public class Calibration extends BaseActivity { setPointButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - setPointButton.setVisibility(setPointButton.INVISIBLE); - cancelButton.setVisibility(cancelButton.VISIBLE); - measureButton.setVisibility(measureButton.VISIBLE); - spinner.setVisibility(spinner.INVISIBLE); + setPointButton.setVisibility(View.INVISIBLE); + cancelButton.setVisibility(View.VISIBLE); + measureButton.setVisibility(View.VISIBLE); + spinner.setVisibility(View.INVISIBLE); } }); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - setPointButton.setVisibility(setPointButton.VISIBLE); - cancelButton.setVisibility(cancelButton.INVISIBLE); - measureButton.setVisibility(measureButton.INVISIBLE); - MapMarker.setVisibility(MapMarker.INVISIBLE); - spinner.setVisibility(spinner.VISIBLE); + setPointButton.setVisibility(View.VISIBLE); + cancelButton.setVisibility(View.INVISIBLE); + measureButton.setVisibility(View.INVISIBLE); + MapMarker.setVisibility(View.INVISIBLE); + spinner.setVisibility(View.VISIBLE); } }); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -102,14 +102,14 @@ public class Calibration extends BaseActivity { public void onItemSelected(AdapterView parent, View view, int position, long id) { Log.i(TAG, String.format("Pos: %d, ID %d", position, id)); map_id = id; - Map.setVisibility(Map.VISIBLE); - setPointButton.setVisibility(setPointButton.VISIBLE); + Map.setVisibility(View.VISIBLE); + setPointButton.setVisibility(View.VISIBLE); } @Override public void onNothingSelected(AdapterView parent) { - Map.setVisibility(Map.INVISIBLE); - setPointButton.setVisibility(setPointButton.INVISIBLE); + Map.setVisibility(View.INVISIBLE); + setPointButton.setVisibility(View.INVISIBLE); } }); } @@ -123,11 +123,11 @@ public class Calibration extends BaseActivity { } public void sendCalibrateRequest(final View v) { - if(MapMarker.getVisibility()==MapMarker.INVISIBLE) { + if(MapMarker.getVisibility()== View.INVISIBLE) { Snackbar.make(v, "You need to set a point before measurement.", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } else { - JsonRequest request = new JsonObjectRequest(Request.Method.GET,getURLSolver().calibrateURL(width,height,map_id),null, + JsonRequest request = new JsonObjectRequest(Request.Method.GET,getURLSolver().calibrateURL(getMacAddress(), width,height,map_id),null, new Response.Listener() { @Override public void onResponse(JSONObject response) { 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 cf83241..35ac3ef 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 @@ -176,7 +176,7 @@ public class PositioningActivity extends BaseActivity { mapMarker.setX(mapView.getX() + x_on_map - mapMarker.getWidth()/2); mapMarker.setY(mapView.getY() + y_on_map - mapMarker.getHeight()); mapMarker.setVisibility(View.VISIBLE); - mapView.setVisibility(mapView.VISIBLE); + mapView.setVisibility(View.VISIBLE); } private boolean hasCorrectMap(int mapId) { @@ -184,14 +184,14 @@ public class PositioningActivity extends BaseActivity { } private void getMap(int mapId) { - mapView.setVisibility(mapView.INVISIBLE); + mapView.setVisibility(View.INVISIBLE); ImageRequest mapRequest = new ImageRequest( getURLSolver().mapBytesURL(mapId), new Response.Listener() { @Override public void onResponse(Bitmap bitmap) { mapView.setImageBitmap(bitmap); - mapView.setVisibility(mapView.VISIBLE); + mapView.setVisibility(View.VISIBLE); Snackbar.make(mapView, "You need to set a point before measurement.", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } @@ -204,40 +204,4 @@ public class PositioningActivity extends BaseActivity { }); queue.add(mapRequest); } - - protected String getMacAddress() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - // Get MAC address prior to android 6.0 - WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); - WifiInfo wInfo = wifiManager.getConnectionInfo(); - return wInfo.getMacAddress(); - } else { - // Removed in Android 6.0 -> manually get MAC address - try { - List all = Collections.list(NetworkInterface.getNetworkInterfaces()); - for (NetworkInterface nif : all) { - if (!nif.getName().equalsIgnoreCase("wlan0")) continue; - - byte[] macBytes = nif.getHardwareAddress(); - if (macBytes == null) { - return ""; - } - - StringBuilder res1 = new StringBuilder(); - for (byte b : macBytes) { - //res1.append(Integer.toHexString(b & 0xFF) + ":"); - res1.append(String.format("%02X:", b)); - } - - if (res1.length() > 0) { - res1.deleteCharAt(res1.length() - 1); - } - return res1.toString(); - } - } catch (SocketException e) { - e.printStackTrace(); - } - return "02:00:00:00:00:00"; - } - } } 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 index 8e38add..51184a7 100644 --- 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 @@ -57,13 +57,14 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList return b.build().toString(); } - public String calibrateURL(float x, float y, long map_id) { + public String calibrateURL(String mac, float x, float y, long map_id) { Uri.Builder b = baseURL(); b.appendPath("calibration") .appendPath("request") - .appendQueryParameter("x", String.format("%f",x)) - .appendQueryParameter("y", String.format("%f",y)) - .appendQueryParameter("map_id", String.format("%d", map_id)); + .appendQueryParameter("X", String.format("%f",x)) + .appendQueryParameter("Y", String.format("%f",y)) + .appendQueryParameter("CLIENT_MAC_ADDR", mac) + .appendQueryParameter("MAP_ID", String.format("%d", map_id)); return b.build().toString(); } -- libgit2 0.21.4