From 41d92f29f85f6970ff621e0a63858793b6c28179 Mon Sep 17 00:00:00 2001 From: Florian Staine Date: Mon, 26 Jun 2017 10:14:17 +0200 Subject: [PATCH] Add MAC address --- app/src/main/AndroidManifest.xml | 2 ++ app/src/main/java/fr/utbm/lo53/p2017/positionningapp/PositioningActivity.java | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- app/src/main/java/fr/utbm/lo53/p2017/positionningapp/network/URLSolver.java | 4 ++-- app/src/main/res/layout/content_positioning.xml | 4 +++- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5af7771..fec628f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ package="fr.utbm.lo53.p2017.positionningapp"> + + () { @Override @@ -128,6 +136,7 @@ public class PositioningActivity extends BaseActivity { } public void startLocating(View v) { + Log.i(TAG, v.toString()); if (isLocating) { return; } @@ -162,6 +171,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); } private boolean hasCorrectMap(int mapId) { @@ -175,6 +185,7 @@ public class PositioningActivity extends BaseActivity { @Override public void onResponse(Bitmap bitmap) { mapView.setImageBitmap(bitmap); + mapView.setVisibility(mapView.VISIBLE); } }, 0, 0, null, new Response.ErrorListener() { @@ -185,4 +196,40 @@ 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 2ab1921..59f0f00 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 @@ -49,11 +49,11 @@ public class URLSolver implements SharedPreferences.OnSharedPreferenceChangeList return builder.scheme("http").encodedAuthority(hostname + ":" + port); } - public String locateURL(/* TODO: mac ... */) { + public String locateURL(String mac) { Uri.Builder b = baseURL(); b.appendPath("positioning") .appendPath("request") - .appendQueryParameter("mac", "TODO"); // TODO + .appendQueryParameter("mac", mac); return b.build().toString(); } diff --git a/app/src/main/res/layout/content_positioning.xml b/app/src/main/res/layout/content_positioning.xml index b2691b0..b811eb9 100644 --- a/app/src/main/res/layout/content_positioning.xml +++ b/app/src/main/res/layout/content_positioning.xml @@ -19,10 +19,11 @@ android:layout_marginTop="8dp" android:adjustViewBounds="true" android:scaleType="fitXY" + android:visibility="invisible" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/map2" /> + app:srcCompat="@drawable/map" />