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); + } +}