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; 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 { 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) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); return true; } if (id == R.id.open_locate_activity) { Intent intent = new Intent(this, PositioningActivity.class); startActivity(intent); return true; } if (id == R.id.open_calibration_activity) { Intent intent = new Intent(this, Calibration.class); startActivity(intent); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_calibration, menu); return true; } public URLSolver getURLSolver() { 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"; } } }