Panagiotis Triantafyllou

telematics additions

...@@ -18,6 +18,7 @@ import android.os.Handler; ...@@ -18,6 +18,7 @@ import android.os.Handler;
18 import android.view.MotionEvent; 18 import android.view.MotionEvent;
19 import android.view.View; 19 import android.view.View;
20 import android.view.WindowManager; 20 import android.view.WindowManager;
21 +import android.widget.EditText;
21 import android.widget.ImageView; 22 import android.widget.ImageView;
22 import android.widget.LinearLayout; 23 import android.widget.LinearLayout;
23 import android.widget.TextView; 24 import android.widget.TextView;
...@@ -70,13 +71,13 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -70,13 +71,13 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
70 private float velocity = 0; 71 private float velocity = 0;
71 private ArrayList<JSONObject> mAccelerationTimestamps = new ArrayList<>(); 72 private ArrayList<JSONObject> mAccelerationTimestamps = new ArrayList<>();
72 private float mAcceleration = 0; 73 private float mAcceleration = 0;
73 - private static final float ALPHA = 0.8f; // Filter factor 74 + private final float ALPHA = 0.8f; // Filter factor
74 - private static final float STOP_THRESHOLD = 8.0f; // Stop threshold in m/s² 75 + private final float STOP_THRESHOLD = 8.0f; // Stop threshold in m/s²
75 - private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 4000; 76 + private final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 4000;
76 - private static final int PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 4001; 77 + private final int PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 4001;
77 private JSONArray jsonArray = new JSONArray(); 78 private JSONArray jsonArray = new JSONArray();
78 private LocationManager locationManager; 79 private LocationManager locationManager;
79 - private static final int LOCATION_UPDATE_INTERVAL = 1000; 80 + private final int LOCATION_UPDATE_INTERVAL = 1000;
80 private double mLatitude = 0; 81 private double mLatitude = 0;
81 private double mLongitude = 0; 82 private double mLongitude = 0;
82 // Radius of the Earth in meters 83 // Radius of the Earth in meters
...@@ -86,6 +87,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -86,6 +87,8 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
86 private int orientationCount = 0, touchCount = 0; 87 private int orientationCount = 0, touchCount = 0;
87 final long REFRESH_TIME = 100; // miliseconds 88 final long REFRESH_TIME = 100; // miliseconds
88 private String mStartTimestamp = "", mStopTimestamp = ""; 89 private String mStartTimestamp = "", mStopTimestamp = "";
90 + private final int RECORDS_INTERVAL = 5000;
91 + private EditText mEtLimit;
89 92
90 93
91 // =========================================================== 94 // ===========================================================
...@@ -110,6 +113,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -110,6 +113,7 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
110 mIvBack.setOnClickListener(this); 113 mIvBack.setOnClickListener(this);
111 mTvOrientationCount = findViewById(R.id.tv_orientation); 114 mTvOrientationCount = findViewById(R.id.tv_orientation);
112 mTvTouchCount = findViewById(R.id.tv_touch); 115 mTvTouchCount = findViewById(R.id.tv_touch);
116 + mEtLimit = findViewById(R.id.et_acceleration);
113 117
114 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 118 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
115 previousLocation = null; 119 previousLocation = null;
...@@ -199,6 +203,10 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -199,6 +203,10 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
199 mIsTripStarted = false; 203 mIsTripStarted = false;
200 mTvTripButton.setText(R.string.cos_dlg_start_trip); 204 mTvTripButton.setText(R.string.cos_dlg_start_trip);
201 } else { 205 } else {
206 + if (mEtLimit.getText().length() == 0) {
207 + Snackbar.make(mLlTelematicsMain, "Please fill the Cut off field", Snackbar.LENGTH_SHORT).show();
208 + return;
209 + }
202 mTouchHandler = new Handler(); 210 mTouchHandler = new Handler();
203 mTouchRunnable = new Runnable() { 211 mTouchRunnable = new Runnable() {
204 @Override 212 @Override
...@@ -375,6 +383,18 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -375,6 +383,18 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
375 mLocationHandler.removeCallbacks(mLocationRunnable); 383 mLocationHandler.removeCallbacks(mLocationRunnable);
376 } 384 }
377 385
386 + private String getCutOffLimit() {
387 + if (mEtLimit.getText().length() != 0) {
388 + if (Float.valueOf(mEtLimit.getText().toString()) > mAcceleration) {
389 + return "red";
390 + } else {
391 + return "green";
392 + }
393 + }
394 +
395 + return "";
396 + }
397 +
378 private void registerSensor() { 398 private void registerSensor() {
379 mStartTimestamp = String.valueOf(System.currentTimeMillis()); 399 mStartTimestamp = String.valueOf(System.currentTimeMillis());
380 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 400 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
...@@ -382,7 +402,6 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -382,7 +402,6 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
382 mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); 402 mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
383 Snackbar.make(mLlTelematicsMain, "Sensor Registered", Snackbar.LENGTH_SHORT).show(); 403 Snackbar.make(mLlTelematicsMain, "Sensor Registered", Snackbar.LENGTH_SHORT).show();
384 404
385 - final int delay = 1000;
386 final int[] recordsCount = {0}; 405 final int[] recordsCount = {0};
387 mTvRecordsSaved.setText(String.valueOf(recordsCount[0])); 406 mTvRecordsSaved.setText(String.valueOf(recordsCount[0]));
388 mHandler = new Handler(); 407 mHandler = new Handler();
...@@ -400,8 +419,9 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -400,8 +419,9 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
400 jobjData.putOpt("timestamp", timestamp); 419 jobjData.putOpt("timestamp", timestamp);
401 jobjData.putOpt("start_time", mStartTimestamp); 420 jobjData.putOpt("start_time", mStartTimestamp);
402 jobjData.putOpt("stop_time", mStopTimestamp); 421 jobjData.putOpt("stop_time", mStopTimestamp);
403 - jobjData.putOpt("latitude",mLatitude); 422 + jobjData.putOpt("latitude", mLatitude);
404 jobjData.putOpt("longitude", mLongitude); 423 jobjData.putOpt("longitude", mLongitude);
424 + jobjData.putOpt("limit", getCutOffLimit());
405 jobj.putOpt(timestamp, jobjData); 425 jobj.putOpt(timestamp, jobjData);
406 mAccelerationTimestamps.add(jobj); 426 mAccelerationTimestamps.add(jobj);
407 recordsCount[0]++; 427 recordsCount[0]++;
...@@ -410,10 +430,10 @@ public class TelematicsActivity extends Activity implements View.OnClickListener ...@@ -410,10 +430,10 @@ public class TelematicsActivity extends Activity implements View.OnClickListener
410 e.printStackTrace(); 430 e.printStackTrace();
411 Snackbar.make(mLlTelematicsMain, "Runnable Failed", Snackbar.LENGTH_SHORT).show(); 431 Snackbar.make(mLlTelematicsMain, "Runnable Failed", Snackbar.LENGTH_SHORT).show();
412 } 432 }
413 - mHandler.postDelayed(this, delay); 433 + mHandler.postDelayed(this, RECORDS_INTERVAL);
414 } 434 }
415 }; 435 };
416 - mHandler.postDelayed(mRunnable, delay); 436 + mHandler.postDelayed(mRunnable, RECORDS_INTERVAL);
417 } 437 }
418 438
419 private void unregisterSensor() { 439 private void unregisterSensor() {
......
...@@ -189,6 +189,19 @@ ...@@ -189,6 +189,19 @@
189 android:textColor="@color/blue_dark" 189 android:textColor="@color/blue_dark"
190 android:textSize="16sp" /> 190 android:textSize="16sp" />
191 191
192 + <EditText
193 + android:id="@+id/et_acceleration"
194 + fontPath="fonts/PeridotPE-Bold.ttf"
195 + android:layout_width="wrap_content"
196 + android:layout_height="wrap_content"
197 + android:layout_centerHorizontal="true"
198 + android:textColor="@color/blue_dark"
199 + android:textSize="16sp"
200 + android:inputType="phone"
201 + android:layout_marginTop="24dp"
202 + android:hint="Cut off in km/h"
203 + android:layout_below="@+id/tv_records"/>
204 +
192 <LinearLayout 205 <LinearLayout
193 android:id="@+id/ll_activate_button" 206 android:id="@+id/ll_activate_button"
194 android:layout_width="match_parent" 207 android:layout_width="match_parent"
......