diff --git a/common/src/main/java/de/tudresden/inf/st/sensorsharing/common/Constants.java b/common/src/main/java/de/tudresden/inf/st/sensorsharing/common/Constants.java index 1223da4a445810dfebd42c8d9180eb41aa836996..20e96aea40bd2cc267a0bc20ee7498060303ab6a 100644 --- a/common/src/main/java/de/tudresden/inf/st/sensorsharing/common/Constants.java +++ b/common/src/main/java/de/tudresden/inf/st/sensorsharing/common/Constants.java @@ -25,6 +25,9 @@ public class Constants { public static final String SUB_KEY_COUNTER = "hear_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 KEY_NAME = BASE_KEY + SUB_KEY_NAME; 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 bccc03559f8e600d7023e1c4a9a770177d7c4040..cd0464fd00861dae1341748bc4631b7effdf2264 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 @@ -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.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_COLOR; 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_LINEAR_ACCELERATION; @@ -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.settings.AppSettings.SETTINGS_MQTT_SERVER; import static java.lang.Math.atan2; +import static java.lang.Math.floor; //bbq import android.support.v4.app.Fragment; @@ -138,6 +140,8 @@ public class MainActivity extends AppCompatActivity implements private AppSettings settings; MadgwickAHRS filter; Button mqtt_button; + ToggleButton color_button; + private boolean isChecked_colorControl; private EditText valueServerURI; // fragments variable @@ -269,6 +273,13 @@ public class MainActivity extends AppCompatActivity implements 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(); setupSendUpdatesCheckbox(); setupLightsController(); @@ -718,6 +729,7 @@ public class MainActivity extends AppCompatActivity implements @Override public void onMessageReceived(@NonNull final MessageEvent messageEvent) { + final String openhab_topic = "oh2/out/iris1_item/state"; String path = messageEvent.getPath(); if (path == null) return; if (path.startsWith(BASE_KEY)) { @@ -728,6 +740,26 @@ public class MainActivity extends AppCompatActivity implements final byte[] bytesToSendViaMqtt = messageEvent.getData(); 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: float mCounter = ByteBuffer.wrap(messageEvent.getData()).getFloat(); updatedValue = Float.toString(mCounter); diff --git a/mobile/src/main/res/layout/fragment_third.xml b/mobile/src/main/res/layout/fragment_third.xml index 5d141c00baa2d313e7512e0f83eaad11ae39e966..0f1c93ec0259d8b24a6ef29d3d3eb4cd802dc310 100644 --- a/mobile/src/main/res/layout/fragment_third.xml +++ b/mobile/src/main/res/layout/fragment_third.xml @@ -214,6 +214,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/checkbox_openhab_light_1" /> <ToggleButton + android:id="@+id/color_control_button" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintLeft_toRightOf="@+id/label_openhab_button" diff --git a/wear/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java b/wear/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java index a634e2185cf4165f9aa1cceb357c2490b21b15e8..8bae6d2bafa19e3b194546df28e28cdaf775a7ff 100644 --- a/wear/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java +++ b/wear/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java @@ -8,10 +8,14 @@ import android.hardware.SensorManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.wear.widget.BoxInsetLayout; import android.support.wearable.activity.WearableActivity; +import android.util.AttributeSet; import android.util.Log; +import android.view.KeyEvent; import android.view.View; import android.widget.TextView; +import android.view.ViewGroup; import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; @@ -21,11 +25,15 @@ import com.google.android.gms.wearable.Wearable; import java.nio.ByteBuffer; 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 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_COLOR; 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_LINEAR_ACCELERATION; @@ -61,12 +69,16 @@ public class MainActivity extends WearableActivity implements SensorEventListene private float mPressureValues; private Sensor mCounter; 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 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - // setup sensor manager and light sensor mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); if (mSensorManager == null) { @@ -84,9 +96,9 @@ public class MainActivity extends WearableActivity implements SensorEventListene Log.i(TAG, "Avail: able sensors: " + sb.toString()); // initialize sensors - 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); mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); mCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER); @@ -125,24 +137,19 @@ public class MainActivity extends WearableActivity implements SensorEventListene setAmbientEnabled(); } + @Override public void onSensorChanged(SensorEvent sensorEvent) { TextView textView; - switch(sensorEvent.sensor.getType()) { - case Sensor.TYPE_PRESSURE: mPressureValues =sensorEvent.values[0]; - System.out.print("PRESSURE: "+sensorEvent.values[0]); break; - case Sensor.TYPE_STEP_COUNTER: mCounterValues = sensorEvent.values[0]; - System.out.print("Counter: "+sensorEvent.values[0]); break; case Sensor.TYPE_HEART_RATE: mHeartRateVaules = sensorEvent.values[0]; - System.out.println("HeartRateValue:" + mHeartRateVaules); break; case Sensor.TYPE_LIGHT: mLightValue = sensorEvent.values[0]; @@ -156,6 +163,10 @@ public class MainActivity extends WearableActivity implements SensorEventListene mLinearAccelerationValues = sensorEvent.values; textView = findViewById(R.id.acceleration_value); textView.setText(Utils.formatArray3(mLinearAccelerationValues)); + detectShake(sensorEvent); + if (num >3){ + num = 0; + } break; case Sensor.TYPE_GAME_ROTATION_VECTOR: case Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR: @@ -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() { Task<List<Node>> nodesTask = Wearable.getNodeClient(this).getConnectedNodes(); final MessageClient messageClient = Wearable.getMessageClient(this); @@ -178,6 +234,7 @@ public class MainActivity extends WearableActivity implements SensorEventListene final byte[] heartRateData = ByteBuffer.allocate(4).putFloat(mHeartRateVaules).array(); final byte[] pressure = ByteBuffer.allocate(4).putFloat(mPressureValues).array(); final byte[] counter = ByteBuffer.allocate(4).putFloat(mCounterValues).array(); + final byte[] color = ByteBuffer.allocate(4).putFloat(mColor).array(); for (Node node : nodes) { @@ -190,8 +247,9 @@ public class MainActivity extends WearableActivity implements SensorEventListene messageClient.sendMessage(node.getId(), KEY_LINEAR_ACCELERATION, accelerationData); messageClient.sendMessage(node.getId(), KEY_ROTATION_VECTOR, rotationData); 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_COLOR, color); } } }); @@ -210,8 +268,7 @@ public class MainActivity extends WearableActivity implements SensorEventListene mSensorManager.registerListener(this, mRotationVector, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mHeartRate,SensorManager.SENSOR_DELAY_FASTEST); 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 diff --git a/wear/src/main/res/layout/activity_main.xml b/wear/src/main/res/layout/activity_main.xml index 32ed4def35f2aaa85f0aee51bd91c5cfd324d9fe..a5b633c9041402816690bea20c0a898941aec0db 100644 --- a/wear/src/main/res/layout/activity_main.xml +++ b/wear/src/main/res/layout/activity_main.xml @@ -7,6 +7,7 @@ android:layout_height="match_parent" android:background="@color/black" android:padding="@dimen/box_inset_layout_padding" + android:id="@+id/container" tools:ignore="MissingPrefix" tools:context="de.tudresden.inf.st.sensorsharing.MainActivity" tools:deviceIds="wear">