Panagiotis Triantafyllou

telematics changes

...@@ -15,6 +15,7 @@ import android.location.LocationManager; ...@@ -15,6 +15,7 @@ import android.location.LocationManager;
15 import android.os.Bundle; 15 import android.os.Bundle;
16 import android.os.Environment; 16 import android.os.Environment;
17 import android.os.Handler; 17 import android.os.Handler;
18 +import android.text.TextUtils;
18 import android.view.MotionEvent; 19 import android.view.MotionEvent;
19 import android.view.View; 20 import android.view.View;
20 import android.view.WindowManager; 21 import android.view.WindowManager;
...@@ -88,7 +89,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -88,7 +89,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
88 final long REFRESH_TIME = 100; // miliseconds 89 final long REFRESH_TIME = 100; // miliseconds
89 private String mStartTimestamp = "", mStopTimestamp = ""; 90 private String mStartTimestamp = "", mStopTimestamp = "";
90 private final int RECORDS_INTERVAL = 5000; 91 private final int RECORDS_INTERVAL = 5000;
91 - private EditText mEtLimit; 92 + private EditText mEtLimit, mEtSampleTime;
92 93
93 94
94 // =========================================================== 95 // ===========================================================
...@@ -114,6 +115,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -114,6 +115,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
114 mTvOrientationCount = findViewById(R.id.tv_orientation); 115 mTvOrientationCount = findViewById(R.id.tv_orientation);
115 mTvTouchCount = findViewById(R.id.tv_touch); 116 mTvTouchCount = findViewById(R.id.tv_touch);
116 mEtLimit = findViewById(R.id.et_acceleration); 117 mEtLimit = findViewById(R.id.et_acceleration);
118 + mEtSampleTime = findViewById(R.id.et_save);
117 119
118 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 120 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
119 previousLocation = null; 121 previousLocation = null;
...@@ -176,8 +178,9 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -176,8 +178,9 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
176 velocity = acceleration * time; 178 velocity = acceleration * time;
177 } 179 }
178 // Convert velocity to km/h 180 // Convert velocity to km/h
179 - mAcceleration = velocity * 3.6f; // Convert to km/h 181 +// mAcceleration = velocity * 3.6f; // Convert to km/h
180 - mTvVelocity.setText(String.format("%.1f", mAcceleration) + " km/h"); 182 + mAcceleration = velocity; // Convert to km/h
183 + mTvVelocity.setText(String.format("%.1f", velocity) + " m/s^2");
181 // Update last values 184 // Update last values
182 lastX = filteredX; 185 lastX = filteredX;
183 lastY = filteredY; 186 lastY = filteredY;
...@@ -253,7 +256,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -253,7 +256,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
253 //TODO: comment the first block and uncomment the second block if needs revert to handler implementation 256 //TODO: comment the first block and uncomment the second block if needs revert to handler implementation
254 if (mLatitude != 0 && mLongitude != 0) { 257 if (mLatitude != 0 && mLongitude != 0) {
255 mSpeed = calculateSpeed(mLatitude, mLongitude, location.getLatitude(), location.getLongitude(), (LOCATION_UPDATE_INTERVAL / 1000)); 258 mSpeed = calculateSpeed(mLatitude, mLongitude, location.getLatitude(), location.getLongitude(), (LOCATION_UPDATE_INTERVAL / 1000));
256 - mTvAvgVelocity.setText(String.format("%.1f", Math.floor(mSpeed)) + " km/h"); 259 + mTvAvgVelocity.setText(String.format("%.1f", Math.floor(mSpeed)) + " m/s^2");
257 } 260 }
258 261
259 262
...@@ -317,8 +320,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -317,8 +320,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
317 // =========================================================== 320 // ===========================================================
318 321
319 private void initViews() { 322 private void initViews() {
320 - mTvVelocity.setText("0.0 km/h"); 323 + mTvVelocity.setText("0.0 m/s^2");
321 - mTvAvgVelocity.setText("0.0 km/h"); 324 + mTvAvgVelocity.setText("0.0 m/s^2");
322 } 325 }
323 326
324 private void requestLocationUpdates() { 327 private void requestLocationUpdates() {
...@@ -349,7 +352,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -349,7 +352,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
349 @Override 352 @Override
350 public void run() { 353 public void run() {
351 double speed = calculateSpeed(mLatitude, mLongitude, location.getLatitude(), location.getLongitude(), (LOCATION_UPDATE_INTERVAL / 1000)); 354 double speed = calculateSpeed(mLatitude, mLongitude, location.getLatitude(), location.getLongitude(), (LOCATION_UPDATE_INTERVAL / 1000));
352 - mTvAvgVelocity.setText(String.format("%.1f", Math.floor(speed)) + " km/h"); 355 + mTvAvgVelocity.setText(String.format("%.1f", Math.floor(speed)) + " m/s^2");
353 mLocationHandler.postDelayed(this, LOCATION_UPDATE_INTERVAL); 356 mLocationHandler.postDelayed(this, LOCATION_UPDATE_INTERVAL);
354 } 357 }
355 }; 358 };
...@@ -365,7 +368,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -365,7 +368,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
365 // Function to calculate speed in meters per second 368 // Function to calculate speed in meters per second
366 private double calculateSpeed(double lat1, double lon1, double lat2, double lon2, double timeDifferenceInSeconds) { 369 private double calculateSpeed(double lat1, double lon1, double lat2, double lon2, double timeDifferenceInSeconds) {
367 double distance = calculateDistance(lat1, lon1, lat2, lon2); 370 double distance = calculateDistance(lat1, lon1, lat2, lon2);
368 - return (distance / timeDifferenceInSeconds) * 3.6f; // Convert to km/h; 371 +// return (distance / timeDifferenceInSeconds) * 3.6f; // Convert to km/h;
372 + return (distance / timeDifferenceInSeconds); // Convert to km/h;
369 } 373 }
370 374
371 private void requestSingleLocationUpdate() { 375 private void requestSingleLocationUpdate() {
...@@ -430,10 +434,10 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -430,10 +434,10 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
430 e.printStackTrace(); 434 e.printStackTrace();
431 Snackbar.make(mLlTelematicsMain, "Runnable Failed", Snackbar.LENGTH_SHORT).show(); 435 Snackbar.make(mLlTelematicsMain, "Runnable Failed", Snackbar.LENGTH_SHORT).show();
432 } 436 }
433 - mHandler.postDelayed(this, RECORDS_INTERVAL); 437 + mHandler.postDelayed(this, TextUtils.isEmpty(mEtSampleTime.getText()) ? RECORDS_INTERVAL : Integer.valueOf(mEtSampleTime.getText().toString()));
434 } 438 }
435 }; 439 };
436 - mHandler.postDelayed(mRunnable, RECORDS_INTERVAL); 440 + mHandler.postDelayed(mRunnable, TextUtils.isEmpty(mEtSampleTime.getText()) ? RECORDS_INTERVAL : Integer.valueOf(mEtSampleTime.getText().toString()));
437 } 441 }
438 442
439 private void unregisterSensor() { 443 private void unregisterSensor() {
...@@ -441,8 +445,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -441,8 +445,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
441 orientationCount = 0; 445 orientationCount = 0;
442 touchCount = 0; 446 touchCount = 0;
443 mSensorManager.unregisterListener(this); 447 mSensorManager.unregisterListener(this);
444 - mTvVelocity.setText("0.0 km/h"); 448 + mTvVelocity.setText("0.0 m/s^2");
445 - mTvAvgVelocity.setText("0.0 km/h"); 449 + mTvAvgVelocity.setText("0.0 m/s^2");
446 Snackbar.make(mLlTelematicsMain, "Sensor Unregistered", Snackbar.LENGTH_SHORT).show(); 450 Snackbar.make(mLlTelematicsMain, "Sensor Unregistered", Snackbar.LENGTH_SHORT).show();
447 if (mHandler != null) 451 if (mHandler != null)
448 mHandler.removeCallbacks(mRunnable); 452 mHandler.removeCallbacks(mRunnable);
......
...@@ -39,6 +39,11 @@ ...@@ -39,6 +39,11 @@
39 app:layout_constraintTop_toTopOf="parent" /> 39 app:layout_constraintTop_toTopOf="parent" />
40 </androidx.constraintlayout.widget.ConstraintLayout> 40 </androidx.constraintlayout.widget.ConstraintLayout>
41 41
42 + <ScrollView
43 + android:fillViewport="true"
44 + android:layout_width="wrap_content"
45 + android:layout_height="match_parent">
46 +
42 <RelativeLayout 47 <RelativeLayout
43 android:layout_width="match_parent" 48 android:layout_width="match_parent"
44 android:layout_height="match_parent" 49 android:layout_height="match_parent"
...@@ -72,10 +77,10 @@ ...@@ -72,10 +77,10 @@
72 fontPath="fonts/PeridotPE-Regular.ttf" 77 fontPath="fonts/PeridotPE-Regular.ttf"
73 android:layout_width="wrap_content" 78 android:layout_width="wrap_content"
74 android:layout_height="wrap_content" 79 android:layout_height="wrap_content"
80 + android:layout_below="@+id/tv_sensor_data"
75 android:layout_centerHorizontal="true" 81 android:layout_centerHorizontal="true"
76 android:layout_marginTop="24dp" 82 android:layout_marginTop="24dp"
77 android:text="Acceleration" 83 android:text="Acceleration"
78 - android:layout_below="@+id/tv_sensor_data"
79 android:textColor="@color/blue_dark" 84 android:textColor="@color/blue_dark"
80 android:textSize="16sp" /> 85 android:textSize="16sp" />
81 86
...@@ -88,17 +93,17 @@ ...@@ -88,17 +93,17 @@
88 android:layout_centerHorizontal="true" 93 android:layout_centerHorizontal="true"
89 android:layout_marginTop="24dp" 94 android:layout_marginTop="24dp"
90 android:textColor="@color/blue_dark" 95 android:textColor="@color/blue_dark"
91 - android:textSize="16sp" /> 96 + android:textSize="20sp" />
92 97
93 <TextView 98 <TextView
94 android:id="@+id/tv_avg_label" 99 android:id="@+id/tv_avg_label"
95 fontPath="fonts/PeridotPE-Regular.ttf" 100 fontPath="fonts/PeridotPE-Regular.ttf"
96 android:layout_width="wrap_content" 101 android:layout_width="wrap_content"
97 android:layout_height="wrap_content" 102 android:layout_height="wrap_content"
103 + android:layout_below="@+id/tv_velocity"
98 android:layout_centerHorizontal="true" 104 android:layout_centerHorizontal="true"
99 android:layout_marginTop="24dp" 105 android:layout_marginTop="24dp"
100 android:text="Velocity" 106 android:text="Velocity"
101 - android:layout_below="@+id/tv_velocity"
102 android:textColor="@color/blue_dark" 107 android:textColor="@color/blue_dark"
103 android:textSize="16sp" /> 108 android:textSize="16sp" />
104 109
...@@ -111,18 +116,18 @@ ...@@ -111,18 +116,18 @@
111 android:layout_centerHorizontal="true" 116 android:layout_centerHorizontal="true"
112 android:layout_marginTop="24dp" 117 android:layout_marginTop="24dp"
113 android:textColor="@color/blue_dark" 118 android:textColor="@color/blue_dark"
114 - android:textSize="16sp" /> 119 + android:textSize="20sp" />
115 120
116 <TextView 121 <TextView
117 android:id="@+id/tv_orientation_label" 122 android:id="@+id/tv_orientation_label"
118 fontPath="fonts/PeridotPE-Regular.ttf" 123 fontPath="fonts/PeridotPE-Regular.ttf"
119 android:layout_width="wrap_content" 124 android:layout_width="wrap_content"
120 android:layout_height="wrap_content" 125 android:layout_height="wrap_content"
126 + android:layout_below="@+id/tv_avg"
121 android:layout_alignParentStart="true" 127 android:layout_alignParentStart="true"
122 - android:layout_marginTop="24dp"
123 android:layout_marginStart="24dp" 128 android:layout_marginStart="24dp"
129 + android:layout_marginTop="24dp"
124 android:text="Orientation Count" 130 android:text="Orientation Count"
125 - android:layout_below="@+id/tv_avg"
126 android:textColor="@color/blue_dark" 131 android:textColor="@color/blue_dark"
127 android:textSize="16sp" /> 132 android:textSize="16sp" />
128 133
...@@ -144,12 +149,12 @@ ...@@ -144,12 +149,12 @@
144 fontPath="fonts/PeridotPE-Regular.ttf" 149 fontPath="fonts/PeridotPE-Regular.ttf"
145 android:layout_width="wrap_content" 150 android:layout_width="wrap_content"
146 android:layout_height="wrap_content" 151 android:layout_height="wrap_content"
152 + android:layout_below="@+id/tv_avg"
153 + android:layout_alignParentEnd="true"
147 android:layout_marginTop="24dp" 154 android:layout_marginTop="24dp"
155 + android:paddingEnd="24dp"
148 android:layout_marginEnd="24dp" 156 android:layout_marginEnd="24dp"
149 - android:layout_alignParentEnd="true"
150 android:text="Touch Count" 157 android:text="Touch Count"
151 - android:layout_below="@+id/tv_avg"
152 - android:layout_alignEnd="@+id/tv_orientation_label"
153 android:textColor="@color/blue_dark" 158 android:textColor="@color/blue_dark"
154 android:textSize="16sp" /> 159 android:textSize="16sp" />
155 160
...@@ -171,10 +176,10 @@ ...@@ -171,10 +176,10 @@
171 fontPath="fonts/PeridotPE-Regular.ttf" 176 fontPath="fonts/PeridotPE-Regular.ttf"
172 android:layout_width="wrap_content" 177 android:layout_width="wrap_content"
173 android:layout_height="wrap_content" 178 android:layout_height="wrap_content"
179 + android:layout_below="@+id/tv_orientation"
174 android:layout_centerHorizontal="true" 180 android:layout_centerHorizontal="true"
175 android:layout_marginTop="24dp" 181 android:layout_marginTop="24dp"
176 android:text="Records Saved" 182 android:text="Records Saved"
177 - android:layout_below="@+id/tv_orientation"
178 android:textColor="@color/blue_dark" 183 android:textColor="@color/blue_dark"
179 android:textSize="16sp" /> 184 android:textSize="16sp" />
180 185
...@@ -194,21 +199,36 @@ ...@@ -194,21 +199,36 @@
194 fontPath="fonts/PeridotPE-Bold.ttf" 199 fontPath="fonts/PeridotPE-Bold.ttf"
195 android:layout_width="wrap_content" 200 android:layout_width="wrap_content"
196 android:layout_height="wrap_content" 201 android:layout_height="wrap_content"
197 - android:layout_centerHorizontal="true" 202 + android:layout_below="@+id/tv_records"
198 - android:textColor="@color/blue_dark" 203 + android:layout_alignParentStart="true"
199 - android:textSize="16sp" 204 + android:layout_marginTop="24dp"
205 + android:layout_marginStart="24dp"
206 + android:hint="Cut off in m/s^2"
200 android:inputType="phone" 207 android:inputType="phone"
208 + android:textColor="@color/blue_dark"
209 + android:textSize="16sp" />
210 +
211 + <EditText
212 + android:id="@+id/et_save"
213 + fontPath="fonts/PeridotPE-Bold.ttf"
214 + android:layout_width="wrap_content"
215 + android:layout_height="wrap_content"
216 + android:layout_below="@+id/tv_records"
217 + android:layout_alignParentEnd="true"
218 + android:paddingEnd="24dp"
201 android:layout_marginTop="24dp" 219 android:layout_marginTop="24dp"
202 - android:hint="Cut off in km/h" 220 + android:hint="Sample Interval in ms"
203 - android:layout_below="@+id/tv_records"/> 221 + android:inputType="phone"
222 + android:textColor="@color/blue_dark"
223 + android:textSize="16sp" />
204 224
205 <LinearLayout 225 <LinearLayout
206 android:id="@+id/ll_activate_button" 226 android:id="@+id/ll_activate_button"
207 android:layout_width="match_parent" 227 android:layout_width="match_parent"
208 android:layout_height="55dp" 228 android:layout_height="55dp"
209 - android:layout_alignParentBottom="true" 229 + android:layout_below="@+id/et_acceleration"
210 android:layout_marginHorizontal="24dp" 230 android:layout_marginHorizontal="24dp"
211 - android:layout_marginBottom="56dp" 231 + android:layout_marginVertical="56dp"
212 android:background="@drawable/selector_button_green_border" 232 android:background="@drawable/selector_button_green_border"
213 android:gravity="center" 233 android:gravity="center"
214 android:orientation="horizontal"> 234 android:orientation="horizontal">
...@@ -225,4 +245,5 @@ ...@@ -225,4 +245,5 @@
225 android:textSize="16sp" /> 245 android:textSize="16sp" />
226 </LinearLayout> 246 </LinearLayout>
227 </RelativeLayout> 247 </RelativeLayout>
248 + </ScrollView>
228 </LinearLayout> 249 </LinearLayout>
...\ No newline at end of file ...\ No newline at end of file
......