Skip to content
Snippets Groups Projects
Commit b58ff17d authored by René Schöne's avatar René Schöne
Browse files

Add information about last contact to wearable.

- uncheck connected after some delay
parent 715b7ed0
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,7 @@ import android.hardware.SensorEvent; ...@@ -6,6 +6,7 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener; import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.util.Log; import android.util.Log;
...@@ -20,7 +21,6 @@ import com.google.android.gms.wearable.MessageEvent; ...@@ -20,7 +21,6 @@ import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.Wearable; import com.google.android.gms.wearable.Wearable;
import org.eclipse.paho.android.service.MqttAndroidClient; 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.IMqttActionListener;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.IMqttToken; import org.eclipse.paho.client.mqttv3.IMqttToken;
...@@ -31,7 +31,9 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; ...@@ -31,7 +31,9 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.Charset; 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;
import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY_LENGTH; import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY_LENGTH;
...@@ -51,12 +53,17 @@ public class MainActivity extends AppCompatActivity implements ...@@ -51,12 +53,17 @@ public class MainActivity extends AppCompatActivity implements
private static final String MQTT_TOPIC_SAMSUNG = "sensors/samsung/brightness"; private static final String MQTT_TOPIC_SAMSUNG = "sensors/samsung/brightness";
private static final int MQTT_DEFAULT_QOS = 0; private static final int MQTT_DEFAULT_QOS = 0;
private static final Charset MQTT_CHARSET = Charset.forName("UTF-8"); 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 SensorManager mSensorManager;
private Sensor mLight; private Sensor mLight;
private TextView mValueWearBrightness; private TextView mValueWearBrightness;
private MqttAndroidClient mqttAndroidClient; 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 @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -76,6 +83,20 @@ public class MainActivity extends AppCompatActivity implements ...@@ -76,6 +83,20 @@ public class MainActivity extends AppCompatActivity implements
setChecked(false); setChecked(false);
connectMqtt(null); 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) { public void connectMqtt(View view) {
...@@ -148,9 +169,9 @@ public class MainActivity extends AppCompatActivity implements ...@@ -148,9 +169,9 @@ public class MainActivity extends AppCompatActivity implements
String stringValue = String.valueOf(lightValue); String stringValue = String.valueOf(lightValue);
TextView textView = findViewById(R.id.value_own_brightness); TextView textView = findViewById(R.id.value_own_brightness);
textView.setText(stringValue); textView.setText(stringValue);
if (++counter >= 5) { if (++sensorChangedCounter >= 5) {
// only send every 5th change // only send every 5th change
counter = 0; sensorChangedCounter = 0;
sendUpdateOfSmartphone(stringValue); sendUpdateOfSmartphone(stringValue);
} }
} }
...@@ -175,10 +196,12 @@ public class MainActivity extends AppCompatActivity implements ...@@ -175,10 +196,12 @@ public class MainActivity extends AppCompatActivity implements
} }
@Override @Override
public void onMessageReceived(@NonNull MessageEvent messageEvent) { public void onMessageReceived(@NonNull final MessageEvent messageEvent) {
String path = messageEvent.getPath(); String path = messageEvent.getPath();
if (path == null) return; if (path == null) return;
if (path.startsWith(BASE_KEY)) { if (path.startsWith(BASE_KEY)) {
final Date contactTime = new Date();
lastMessageFromWearable = contactTime.getTime();
final String updatedValue; final String updatedValue;
String topic; String topic;
final TextView textViewToUpdate; final TextView textViewToUpdate;
...@@ -213,6 +236,8 @@ public class MainActivity extends AppCompatActivity implements ...@@ -213,6 +236,8 @@ public class MainActivity extends AppCompatActivity implements
@Override @Override
public void run() { public void run() {
setChecked(true); setChecked(true);
TextView lastContact = findViewById(R.id.value_last_contact);
lastContact.setText(dateTimeFormat.format(contactTime));
textViewToUpdate.setText(updatedValue); textViewToUpdate.setText(updatedValue);
} }
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="8dp" android:layout_marginTop="24dp"
android:text="@string/text_mqtt_server_uri" android:text="@string/text_mqtt_server_uri"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -175,4 +175,14 @@ ...@@ -175,4 +175,14 @@
app:layout_constraintStart_toEndOf="@+id/value_server_uri" app:layout_constraintStart_toEndOf="@+id/value_server_uri"
app:layout_constraintTop_toBottomOf="@+id/separator_mqtt" /> 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> </android.support.constraint.ConstraintLayout>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment