public void loadSettings() { debug("MainActivity: loadSettings"); SharedPreferences settings = getSharedPreferences(PREFERENCES_FILE, 0); bluetoothDeviceAddress = settings.getString("deviceAddress", null); bluetoothDeviceName = settings.getString("deviceName", null); dataFormat = settings.getString("dataFormat", "crdt"); deviceName = settings.getString("device", "Arduino"); safeDrivingMode = settings.getBoolean("optSafe", true); bluetoothBackgroundMode = settings.getBoolean("optBTBackground", false); milesMode = settings.getBoolean("optMiles", false); dataExportMode = settings.getBoolean("optDataExport", false); debugLogMode = settings.getBoolean("optDebugLog", false); fieldLogMode = settings.getBoolean("optFieldLog", false); toastLevel = settings.getInt("optToast", 1); String carStr = settings.getString("car", "None"); switch (carStr) { case "None": car = CAR_NONE; break; case "Zoé": case "ZOE": case "ZOE Q210": car = CAR_ZOE_Q210; break; case "ZOE R240": car = CAR_ZOE_R240; break; case "ZOE Q90": car = CAR_ZOE_Q90; break; case "ZOE R90": car = CAR_ZOE_R90; break; case "Fluence": car = CAR_FLUENCE; break; case "Kangoo": car = CAR_KANGOO; break; case "X10": car = CAR_X10; break; } // as the settings may have changed, we need to reload different things // create a new device switch (deviceName) { case "Bob Due": device = new BobDue(); break; case "ELM327": device = new ELM327(); break; default: device = null; break; } // since the car type may have changed, reload the frame timings fields.load(); Frames.getInstance().reloadTiming(); if (device != null) { // initialise the connection device.initConnection(); // register application wide fields registerApplicationFields(); } // after loading PREFERENCES we may have new values for "dataExportMode" dataExportMode = dataLogger.activate(dataExportMode); }