diff --git a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java
index 00a36e8c2de4773b8e5b1f1ed32ccbe834d6f5d6..a432107013dc5ecf2b6e930aeb1106ed62564f0e 100644
--- a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java
+++ b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java
@@ -12,6 +12,7 @@ import android.support.annotation.NonNull;
 import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.View;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
 import android.widget.EditText;
@@ -37,8 +38,11 @@ import java.text.DateFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.Locale;
+import java.util.Objects;
 
+import de.tudresden.inf.st.sensorsharing.common.MqttUtils;
 import de.tudresden.inf.st.sensorsharing.common.Utils;
+import de.tudresden.inf.st.sensorsharing.settings.AppSettings;
 
 import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY;
 import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY_LENGTH;
@@ -47,6 +51,7 @@ import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_BRIGHTN
 import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_LINEAR_ACCELERATION;
 import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_NAME;
 import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_ROTATION_VECTOR;
+import static de.tudresden.inf.st.sensorsharing.settings.AppSettings.SETTINGS_MQTT_SERVER;
 
 public class MainActivity extends AppCompatActivity implements
         SensorEventListener,
@@ -78,6 +83,10 @@ public class MainActivity extends AppCompatActivity implements
     // sensor values of phone
     private float[] mRotationVectorValues;
     private float mLightValue;
+    private String clientId;
+    private AppSettings settings;
+
+    private EditText valueServerURI;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -86,7 +95,9 @@ public class MainActivity extends AppCompatActivity implements
 
         System.setProperty("log.tag." + TAG, "INFO");
 
+        settings = new AppSettings(this);
         setName();
+        initViews();
 
         // setup sensor manager and light sensor
         mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
@@ -134,6 +145,12 @@ public class MainActivity extends AppCompatActivity implements
         updateMqttTopics("unknown");
     }
 
+    private void initViews() {
+        valueServerURI = findViewById(R.id.value_server_uri);
+        String mqttServer = settings.get(SETTINGS_MQTT_SERVER, getResources().getString(R.string.default_mqtt_server_uri));
+        valueServerURI.setText(mqttServer);
+    }
+
     private void updateMqttTopics(String wearableName) {
         // moto: "Moto 360"
         // polar: ??
@@ -167,7 +184,19 @@ public class MainActivity extends AppCompatActivity implements
         ownName.setText(Build.MODEL);
     }
 
+    private void closeKeyboard() {
+        if(this.getCurrentFocus() != null) {
+            InputMethodManager inputManager =
+                    (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+            Objects.requireNonNull(inputManager).hideSoftInputFromWindow(
+                    this.getCurrentFocus().getWindowToken(),
+                    InputMethodManager.HIDE_NOT_ALWAYS);
+        }
+    }
+
     public void connectMqtt(View view) {
+        closeKeyboard();
+        settings.store(SETTINGS_MQTT_SERVER, valueServerURI.getText().toString());
         // disconnect if there is a connected client
         if (mqttAndroidClient != null && mqttAndroidClient.isConnected()) {
             try {
@@ -180,12 +209,10 @@ public class MainActivity extends AppCompatActivity implements
         }
 
         // setup new mqtt client
-        EditText valueServerURI = findViewById(R.id.value_server_uri);
         final String serverURI = valueServerURI.getText().toString();
         Toast.makeText(MainActivity.this, "Connecting to " + serverURI,
                 Toast.LENGTH_SHORT).show();
-        mqttAndroidClient = new MqttAndroidClient(this, serverURI,
-                "SensorSharing-mobile");
+        mqttAndroidClient = new MqttAndroidClient(this, serverURI, clientId);
         mqttAndroidClient.setCallback(new MqttCallback() {
             @Override
             public void connectionLost(Throwable cause) {
@@ -272,6 +299,9 @@ public class MainActivity extends AppCompatActivity implements
     @Override
     protected void onResume() {
         super.onResume();
+        if(clientId == null || clientId.isEmpty()) {
+            clientId = MqttUtils.createClientId();
+        }
         mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_UI);
         mSensorManager.registerListener(this, mRotationVector, SensorManager.SENSOR_DELAY_UI);
         Wearable.getMessageClient(this).addListener(this);
diff --git a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/settings/AppSettings.java b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/settings/AppSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..c814f1c6884cbca9cb34ed2a9e9d2e27493d35d2
--- /dev/null
+++ b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/settings/AppSettings.java
@@ -0,0 +1,26 @@
+package de.tudresden.inf.st.sensorsharing.settings;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public class AppSettings {
+    public final static String SETTINGS_MQTT_SERVER = "mqtt-server";
+
+    Context context;
+    SharedPreferences.Editor editor;
+    SharedPreferences appsettings;
+    public AppSettings(Context context) {
+        this.context = context;
+        this.appsettings = context.getSharedPreferences("appsettings", 0);
+    }
+
+    public void store(String key, String value) {
+        editor = appsettings.edit();
+        editor.putString(key, value);
+        editor.apply();
+    }
+
+    public String get(String key, String defaultValue) {
+        return appsettings.getString(key, defaultValue);
+    }
+}