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;
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);
}
......
......@@ -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>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment