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 5e154a0dbf97bab30a9e2c7ac7b497e415f1b50f..7cb74e1746bcf05cb91bae069cc7b9e4bf15e122 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 @@ -18,6 +18,7 @@ import android.widget.CompoundButton; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; +import android.widget.ToggleButton; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -98,6 +99,7 @@ public class MainActivity extends AppCompatActivity implements private String clientId; private AppSettings settings; MadgwickAHRS filter; + ToggleButton switchLight; private EditText valueServerURI; @@ -176,9 +178,34 @@ public class MainActivity extends AppCompatActivity implements String mqttServer = settings.get(SETTINGS_MQTT_SERVER, getResources().getString(R.string.default_mqtt_server_uri)); valueServerURI.setText(mqttServer); + switchLight = findViewById(R.id.toggleButton_lightonoff); + switchLight.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + switch (buttonView.getId()) { + case R.id.toggleButton_lightonoff: + sendMqttUpdates.put(phoneTopics.mqtt_topic_onoff, true); // is always true + sendLightOnOffUpdateOfSmartphone(isChecked); + break; + } + } + }); + setupSendUpdatesCheckbox(); } + private void sendLightOnOffUpdateOfSmartphone(boolean state) { + ObjectMapper mapper = new ObjectMapper(); + HashMap<String, Boolean> dataLight = new HashMap<>(); + dataLight.put("on", state); + try { + String s = mapper.writeValueAsString(dataLight); + sendUpdate(phoneTopics.mqtt_topic_onoff, s); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } + private void updateMqttTopics(String wearableName) { // moto: "Moto 360" // polar: ?? diff --git a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java index 2dbb179d44648084916647e421b1e76de7ac2a91..4ada913cef84b06c4e1a982af05ef9336eaaaaa1 100644 --- a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java +++ b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java @@ -6,11 +6,13 @@ public class MqttTopics { public final String mqtt_topic_acceleration; public final String mqtt_topic_rotation; public final String mqtt_topic_rotation_ahrs; + public final String mqtt_topic_onoff; public MqttTopics(String subTopic) { mqtt_topic_brightness = MQTT_TOPIC_BASE + subTopic + "/brightness"; mqtt_topic_acceleration = MQTT_TOPIC_BASE + subTopic + "/acceleration"; mqtt_topic_rotation = MQTT_TOPIC_BASE + subTopic + "/rotation"; mqtt_topic_rotation_ahrs = MQTT_TOPIC_BASE + subTopic + "/rotationahrs"; + mqtt_topic_onoff = MQTT_TOPIC_BASE + subTopic + "/onoff"; } } diff --git a/mobile/src/main/res/layout/activity_main.xml b/mobile/src/main/res/layout/activity_main.xml index 0f5e5094e5456aa60ff4e37d6533ce59a0fe77a1..12038cd5c83178a0fdaae40e8ec64b4c05ad3ae9 100644 --- a/mobile/src/main/res/layout/activity_main.xml +++ b/mobile/src/main/res/layout/activity_main.xml @@ -263,4 +263,18 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/separator_wear" /> + <ToggleButton + android:id="@+id/toggleButton-lightonoff" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="8dp" + android:layout_marginStart="8dp" + android:layout_marginTop="8dp" + android:text="Switch On" + android:textOn="Switch Light OFF" + android:textOff="Switch Light ON" + app:layout_constraintEnd_toEndOf="@+id/checkBox_send_rotation_ahrs" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/checkBox_send_rotation_ahrs" /> + </android.support.constraint.ConstraintLayout>