Skip to content
Snippets Groups Projects
Commit 65e158f0 authored by boqiren's avatar boqiren
Browse files

add color control from watch

parent 0529cfff
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,9 @@ public class Constants { ...@@ -25,6 +25,9 @@ public class Constants {
public static final String SUB_KEY_COUNTER = "hear_counter"; public static final String SUB_KEY_COUNTER = "hear_counter";
public static final String KEY_COUNTER = BASE_KEY + SUB_KEY_COUNTER; public static final String KEY_COUNTER = BASE_KEY + SUB_KEY_COUNTER;
public static final String SUB_KEY_COLOR = "color";
public static final String KEY_COLOR = BASE_KEY + SUB_KEY_COLOR;
public static final String SUB_KEY_NAME = "name"; public static final String SUB_KEY_NAME = "name";
public static final String KEY_NAME = BASE_KEY + SUB_KEY_NAME; public static final String KEY_NAME = BASE_KEY + SUB_KEY_NAME;
......
...@@ -75,6 +75,7 @@ import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY_LENGTH ...@@ -75,6 +75,7 @@ import static de.tudresden.inf.st.sensorsharing.common.Constants.BASE_KEY_LENGTH
import static de.tudresden.inf.st.sensorsharing.common.Constants.MQTT_CHARSET; import static de.tudresden.inf.st.sensorsharing.common.Constants.MQTT_CHARSET;
import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_AMBIENT_PRESSURE; import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_AMBIENT_PRESSURE;
import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_BRIGHTNESS; import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_BRIGHTNESS;
import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_COLOR;
import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_COUNTER; import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_COUNTER;
import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_HEART_RATE; import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_HEART_RATE;
import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_LINEAR_ACCELERATION; import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_LINEAR_ACCELERATION;
...@@ -82,6 +83,7 @@ import static de.tudresden.inf.st.sensorsharing.common.Constants.SUB_KEY_NAME; ...@@ -82,6 +83,7 @@ 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.common.Constants.SUB_KEY_ROTATION_VECTOR;
import static de.tudresden.inf.st.sensorsharing.settings.AppSettings.SETTINGS_MQTT_SERVER; import static de.tudresden.inf.st.sensorsharing.settings.AppSettings.SETTINGS_MQTT_SERVER;
import static java.lang.Math.atan2; import static java.lang.Math.atan2;
import static java.lang.Math.floor;
//bbq //bbq
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
...@@ -138,6 +140,8 @@ public class MainActivity extends AppCompatActivity implements ...@@ -138,6 +140,8 @@ public class MainActivity extends AppCompatActivity implements
private AppSettings settings; private AppSettings settings;
MadgwickAHRS filter; MadgwickAHRS filter;
Button mqtt_button; Button mqtt_button;
ToggleButton color_button;
private boolean isChecked_colorControl;
private EditText valueServerURI; private EditText valueServerURI;
// fragments variable // fragments variable
...@@ -269,6 +273,13 @@ public class MainActivity extends AppCompatActivity implements ...@@ -269,6 +273,13 @@ public class MainActivity extends AppCompatActivity implements
connectMqtt(view); connectMqtt(view);
} }
}); });
color_button = findViewById(R.id.color_control_button);
color_button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
isChecked_colorControl =b;
}
});
setupLightsController(); setupLightsController();
setupSendUpdatesCheckbox(); setupSendUpdatesCheckbox();
setupLightsController(); setupLightsController();
...@@ -718,6 +729,7 @@ public class MainActivity extends AppCompatActivity implements ...@@ -718,6 +729,7 @@ public class MainActivity extends AppCompatActivity implements
@Override @Override
public void onMessageReceived(@NonNull final MessageEvent messageEvent) { public void onMessageReceived(@NonNull final MessageEvent messageEvent) {
final String openhab_topic = "oh2/out/iris1_item/state";
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)) {
...@@ -728,6 +740,26 @@ public class MainActivity extends AppCompatActivity implements ...@@ -728,6 +740,26 @@ public class MainActivity extends AppCompatActivity implements
final byte[] bytesToSendViaMqtt = messageEvent.getData(); final byte[] bytesToSendViaMqtt = messageEvent.getData();
switch (path.substring(BASE_KEY_LENGTH)) { switch (path.substring(BASE_KEY_LENGTH)) {
case SUB_KEY_COLOR:
float mColor = ByteBuffer.wrap(messageEvent.getData()).getFloat();
String updateColor = Float.toString(mColor);
TextView color = findViewById(R.id.label_openhab_button);
if(isChecked_colorControl){
sendMqttUpdates.put(openhab_topic, isChecked_colorControl);
if(mColor == 1){
color.setTextColor(Color.RED);
sendUpdate(openhab_topic,"255,0,0");
}else if(mColor==2){
color.setTextColor(Color.BLUE);
sendUpdate(openhab_topic,"0,0,255");
}else if(mColor == 3){
color.setTextColor(Color.GREEN);
sendUpdate(openhab_topic,"0,255,0");
}else {color.setTextColor(Color.GRAY);
sendUpdate(openhab_topic,"0,0,0");}
}
case SUB_KEY_COUNTER: case SUB_KEY_COUNTER:
float mCounter = ByteBuffer.wrap(messageEvent.getData()).getFloat(); float mCounter = ByteBuffer.wrap(messageEvent.getData()).getFloat();
updatedValue = Float.toString(mCounter); updatedValue = Float.toString(mCounter);
......
...@@ -214,6 +214,7 @@ ...@@ -214,6 +214,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/checkbox_openhab_light_1" /> app:layout_constraintTop_toBottomOf="@id/checkbox_openhab_light_1" />
<ToggleButton <ToggleButton
android:id="@+id/color_control_button"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@+id/label_openhab_button" app:layout_constraintLeft_toRightOf="@+id/label_openhab_button"
......
...@@ -8,10 +8,14 @@ import android.hardware.SensorManager; ...@@ -8,10 +8,14 @@ import android.hardware.SensorManager;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.wear.widget.BoxInsetLayout;
import android.support.wearable.activity.WearableActivity; import android.support.wearable.activity.WearableActivity;
import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import android.view.ViewGroup;
import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
...@@ -21,11 +25,15 @@ import com.google.android.gms.wearable.Wearable; ...@@ -21,11 +25,15 @@ import com.google.android.gms.wearable.Wearable;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.List; import java.util.List;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.widget.Toast;
import de.tudresden.inf.st.sensorsharing.common.Utils; import de.tudresden.inf.st.sensorsharing.common.Utils;
import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_AMBIENT_PRESSURE; import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_AMBIENT_PRESSURE;
import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_BRIGHTNESS; import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_BRIGHTNESS;
import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_COLOR;
import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_COUNTER; import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_COUNTER;
import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_HEART_RATE; import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_HEART_RATE;
import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_LINEAR_ACCELERATION; import static de.tudresden.inf.st.sensorsharing.common.Constants.KEY_LINEAR_ACCELERATION;
...@@ -61,12 +69,16 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -61,12 +69,16 @@ public class MainActivity extends WearableActivity implements SensorEventListene
private float mPressureValues; private float mPressureValues;
private Sensor mCounter; private Sensor mCounter;
private float mCounterValues; private float mCounterValues;
private long mShakeTime = 0;
private static final int SHAKE_WAIT_TIME_MS = 250;
private static final float SHAKE_THRESHOLD = 3.25f;
private static int num = 0;
private float mColor;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
// setup sensor manager and light sensor // setup sensor manager and light sensor
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (mSensorManager == null) { if (mSensorManager == null) {
...@@ -84,9 +96,9 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -84,9 +96,9 @@ public class MainActivity extends WearableActivity implements SensorEventListene
Log.i(TAG, "Avail: able sensors: " + sb.toString()); Log.i(TAG, "Avail: able sensors: " + sb.toString());
// initialize sensors // initialize sensors
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
mLinearAcceleration = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); mLinearAcceleration = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//mLinearAcceleration = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
mCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); mCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
...@@ -125,24 +137,19 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -125,24 +137,19 @@ public class MainActivity extends WearableActivity implements SensorEventListene
setAmbientEnabled(); setAmbientEnabled();
} }
@Override @Override
public void onSensorChanged(SensorEvent sensorEvent) { public void onSensorChanged(SensorEvent sensorEvent) {
TextView textView; TextView textView;
switch(sensorEvent.sensor.getType()) { switch(sensorEvent.sensor.getType()) {
case Sensor.TYPE_PRESSURE: case Sensor.TYPE_PRESSURE:
mPressureValues =sensorEvent.values[0]; mPressureValues =sensorEvent.values[0];
System.out.print("PRESSURE: "+sensorEvent.values[0]);
break; break;
case Sensor.TYPE_STEP_COUNTER: case Sensor.TYPE_STEP_COUNTER:
mCounterValues = sensorEvent.values[0]; mCounterValues = sensorEvent.values[0];
System.out.print("Counter: "+sensorEvent.values[0]);
break; break;
case Sensor.TYPE_HEART_RATE: case Sensor.TYPE_HEART_RATE:
mHeartRateVaules = sensorEvent.values[0]; mHeartRateVaules = sensorEvent.values[0];
System.out.println("HeartRateValue:" + mHeartRateVaules);
break; break;
case Sensor.TYPE_LIGHT: case Sensor.TYPE_LIGHT:
mLightValue = sensorEvent.values[0]; mLightValue = sensorEvent.values[0];
...@@ -156,6 +163,10 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -156,6 +163,10 @@ public class MainActivity extends WearableActivity implements SensorEventListene
mLinearAccelerationValues = sensorEvent.values; mLinearAccelerationValues = sensorEvent.values;
textView = findViewById(R.id.acceleration_value); textView = findViewById(R.id.acceleration_value);
textView.setText(Utils.formatArray3(mLinearAccelerationValues)); textView.setText(Utils.formatArray3(mLinearAccelerationValues));
detectShake(sensorEvent);
if (num >3){
num = 0;
}
break; break;
case Sensor.TYPE_GAME_ROTATION_VECTOR: case Sensor.TYPE_GAME_ROTATION_VECTOR:
case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR: case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR:
...@@ -166,6 +177,51 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -166,6 +177,51 @@ public class MainActivity extends WearableActivity implements SensorEventListene
} }
} }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode){
case KeyEvent.KEYCODE_NAVIGATE_NEXT:
System.out.println("key down");
case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS:
System.out.println("key up ");
}
return super.onKeyDown(keyCode, event);
}
private void detectShake(SensorEvent event) {
//BoxInsetLayout layout = (BoxInsetLayout) findViewById(R.id.wear_layout);
long now = System.currentTimeMillis();
if((now - mShakeTime) > SHAKE_WAIT_TIME_MS) {
mShakeTime = now;
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
if((Math.abs(x)>13||Math.abs(y)>13||Math.abs(z)>13)){
num+=1;
System.out.println("shake shake");
View mContainerview = (BoxInsetLayout) findViewById(R.id.container);
if (num == 1){
mContainerview.setBackgroundColor(Color.RED);
mColor = 1;
sendCurrentValueToAllConnectedNodes();
}else if (num == 2){
mContainerview.setBackgroundColor(Color.BLUE);
mColor =2;
sendCurrentValueToAllConnectedNodes();
}else if (num == 3){
mContainerview.setBackgroundColor(Color.GREEN);
mColor = 3;
sendCurrentValueToAllConnectedNodes();
}else if (num == 4){
mColor = 4;
mContainerview.setBackgroundColor(Color.BLACK);
sendCurrentValueToAllConnectedNodes();
}
}
}
}
private void sendCurrentValueToAllConnectedNodes() { private void sendCurrentValueToAllConnectedNodes() {
Task<List<Node>> nodesTask = Wearable.getNodeClient(this).getConnectedNodes(); Task<List<Node>> nodesTask = Wearable.getNodeClient(this).getConnectedNodes();
final MessageClient messageClient = Wearable.getMessageClient(this); final MessageClient messageClient = Wearable.getMessageClient(this);
...@@ -178,6 +234,7 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -178,6 +234,7 @@ public class MainActivity extends WearableActivity implements SensorEventListene
final byte[] heartRateData = ByteBuffer.allocate(4).putFloat(mHeartRateVaules).array(); final byte[] heartRateData = ByteBuffer.allocate(4).putFloat(mHeartRateVaules).array();
final byte[] pressure = ByteBuffer.allocate(4).putFloat(mPressureValues).array(); final byte[] pressure = ByteBuffer.allocate(4).putFloat(mPressureValues).array();
final byte[] counter = ByteBuffer.allocate(4).putFloat(mCounterValues).array(); final byte[] counter = ByteBuffer.allocate(4).putFloat(mCounterValues).array();
final byte[] color = ByteBuffer.allocate(4).putFloat(mColor).array();
for (Node node : nodes) { for (Node node : nodes) {
...@@ -192,6 +249,7 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -192,6 +249,7 @@ public class MainActivity extends WearableActivity implements SensorEventListene
messageClient.sendMessage(node.getId(), KEY_HEART_RATE, heartRateData); messageClient.sendMessage(node.getId(), KEY_HEART_RATE, heartRateData);
messageClient.sendMessage(node.getId(), KEY_COUNTER, counter); messageClient.sendMessage(node.getId(), KEY_COUNTER, counter);
messageClient.sendMessage(node.getId(), KEY_AMBIENT_PRESSURE, pressure); messageClient.sendMessage(node.getId(), KEY_AMBIENT_PRESSURE, pressure);
messageClient.sendMessage(node.getId(), KEY_COLOR, color);
} }
} }
}); });
...@@ -211,7 +269,6 @@ public class MainActivity extends WearableActivity implements SensorEventListene ...@@ -211,7 +269,6 @@ public class MainActivity extends WearableActivity implements SensorEventListene
mSensorManager.registerListener(this, mHeartRate,SensorManager.SENSOR_DELAY_FASTEST); mSensorManager.registerListener(this, mHeartRate,SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, mCounter, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mCounter, SensorManager.SENSOR_DELAY_NORMAL);
} }
@Override @Override
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black" android:background="@color/black"
android:padding="@dimen/box_inset_layout_padding" android:padding="@dimen/box_inset_layout_padding"
android:id="@+id/container"
tools:ignore="MissingPrefix" tools:ignore="MissingPrefix"
tools:context="de.tudresden.inf.st.sensorsharing.MainActivity" tools:context="de.tudresden.inf.st.sensorsharing.MainActivity"
tools:deviceIds="wear"> tools:deviceIds="wear">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment