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 7536b1ae60fd276413ee53d04e7f7e805f43e6e0..0e8a96152c1fadfc6ebbbe2c1e8514fc6f8719d7 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
@@ -6,6 +6,7 @@ import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.annotation.NonNull;
 import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
@@ -20,7 +21,6 @@ import com.google.android.gms.wearable.MessageEvent;
 import com.google.android.gms.wearable.Wearable;
 
 import org.eclipse.paho.android.service.MqttAndroidClient;
-import org.eclipse.paho.android.service.MqttService;
 import org.eclipse.paho.client.mqttv3.IMqttActionListener;
 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
 import org.eclipse.paho.client.mqttv3.IMqttToken;
@@ -31,7 +31,9 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
-import java.util.Arrays;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.Locale;
 
 import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY;
 import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY_LENGTH;
@@ -51,12 +53,17 @@ public class MainActivity extends AppCompatActivity implements
     private static final String MQTT_TOPIC_SAMSUNG = "sensors/samsung/brightness";
     private static final int MQTT_DEFAULT_QOS = 0;
     private static final Charset MQTT_CHARSET = Charset.forName("UTF-8");
+    /** Delay in milliseconds after which the wearable is assumed to be offline */
+    public static final int DELAY_WEARABLE_ASSUMED_OFFLINE = 30000;
 
     private SensorManager mSensorManager;
     private Sensor mLight;
     private TextView mValueWearBrightness;
     private MqttAndroidClient mqttAndroidClient;
-    private int counter = 0;
+    private int sensorChangedCounter = 0;
+    private long lastMessageFromWearable;
+    private DateFormat dateTimeFormat = DateFormat.getDateTimeInstance(
+            DateFormat.SHORT, android.icu.text.DateFormat.SHORT);
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -76,6 +83,20 @@ public class MainActivity extends AppCompatActivity implements
 
         setChecked(false);
         connectMqtt(null);
+
+        final Handler handler = new Handler();
+        Runnable runnable = new Runnable() {
+            @Override
+            public void run() {
+                long now = System.currentTimeMillis();
+                if (now - lastMessageFromWearable > DELAY_WEARABLE_ASSUMED_OFFLINE) {
+                    setChecked(false);
+                }
+                // repeat after 30 seconds
+                handler.postDelayed(this, DELAY_WEARABLE_ASSUMED_OFFLINE);
+            }
+        };
+        handler.post(runnable);
     }
 
     public void connectMqtt(View view) {
@@ -148,9 +169,9 @@ public class MainActivity extends AppCompatActivity implements
         String stringValue = String.valueOf(lightValue);
         TextView textView = findViewById(R.id.value_own_brightness);
         textView.setText(stringValue);
-        if (++counter >= 5) {
+        if (++sensorChangedCounter >= 5) {
             // only send every 5th change
-            counter = 0;
+            sensorChangedCounter = 0;
             sendUpdateOfSmartphone(stringValue);
         }
     }
@@ -175,10 +196,12 @@ public class MainActivity extends AppCompatActivity implements
     }
 
     @Override
-    public void onMessageReceived(@NonNull MessageEvent messageEvent) {
+    public void onMessageReceived(@NonNull final MessageEvent messageEvent) {
         String path = messageEvent.getPath();
         if (path == null) return;
         if (path.startsWith(BASE_KEY)) {
+            final Date contactTime = new Date();
+            lastMessageFromWearable = contactTime.getTime();
             final String updatedValue;
             String topic;
             final TextView textViewToUpdate;
@@ -213,6 +236,8 @@ public class MainActivity extends AppCompatActivity implements
                 @Override
                 public void run() {
                     setChecked(true);
+                    TextView lastContact = findViewById(R.id.value_last_contact);
+                    lastContact.setText(dateTimeFormat.format(contactTime));
                     textViewToUpdate.setText(updatedValue);
 
                 }
diff --git a/mobile/src/main/res/layout/activity_main.xml b/mobile/src/main/res/layout/activity_main.xml
index 5a1653cb16917c87d0540c8c74d5ee4b9e3ea90b..a3c2f712c9a9ab7d6bc6326e8722754eb7478d0a 100644
--- a/mobile/src/main/res/layout/activity_main.xml
+++ b/mobile/src/main/res/layout/activity_main.xml
@@ -50,7 +50,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
-        android:layout_marginTop="8dp"
+        android:layout_marginTop="24dp"
         android:text="@string/text_mqtt_server_uri"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintStart_toStartOf="parent"
@@ -175,4 +175,14 @@
         app:layout_constraintStart_toEndOf="@+id/value_server_uri"
         app:layout_constraintTop_toBottomOf="@+id/separator_mqtt" />
 
+    <TextView
+        android:id="@+id/value_last_contact"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="8dp"
+        android:layout_marginTop="16dp"
+        android:text="@android:string/unknownName"
+        app:layout_constraintStart_toEndOf="@+id/checkBox"
+        app:layout_constraintTop_toBottomOf="@+id/separator_wear" />
+
 </android.support.constraint.ConstraintLayout>