From 3c55d4456531fe5491aa79bda18cc475765e2b35 Mon Sep 17 00:00:00 2001
From: yusufrahmatp <yusufrahmatp@gmail.com>
Date: Sun, 24 Feb 2019 21:21:35 +0700
Subject: [PATCH] Add sensor helper. Init code for proximity sensor with toast
 warning, implemented in mainactivity and chatroomactivity

---
 .../chatman/activity/ChatRoomActivity.java    | 18 ++++++
 .../com/chatman/activity/MainActivity.java    | 22 ++++++++
 .../java/com/chatman/helper/SensorHelper.java | 55 +++++++++++++++++++
 3 files changed, 95 insertions(+)
 create mode 100644 android/app/src/main/java/com/chatman/helper/SensorHelper.java

diff --git a/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java b/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java
index eef29a1..21400eb 100644
--- a/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java
+++ b/android/app/src/main/java/com/chatman/activity/ChatRoomActivity.java
@@ -1,6 +1,7 @@
 package com.chatman.activity;
 
 import android.content.Intent;
+import android.hardware.Sensor;
 import android.os.Build;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -21,6 +22,7 @@ import com.chatman.R;
 import com.chatman.adapter.ChatAdapter;
 import com.chatman.helper.FirebaseHelper;
 import com.chatman.helper.PreferencesHelper;
+import com.chatman.helper.SensorHelper;
 import com.chatman.model.Chat;
 import com.chatman.model.ChatRoom;
 import com.google.firebase.database.ChildEventListener;
@@ -45,6 +47,7 @@ public class ChatRoomActivity extends AppCompatActivity {
     private TextView toolbarName;
     private List<Chat> chatList;
     private String chatRoomId;
+    private SensorHelper mSensorHelper;
 
 
     @Override
@@ -89,6 +92,8 @@ public class ChatRoomActivity extends AppCompatActivity {
         chatRv.setAdapter(adapter);
         chatRv.scrollToPosition(chatList.size() - 1);
         initializeListener();
+
+        mSensorHelper = new SensorHelper(this);
     }
 
     private void initializeListener() {
@@ -179,4 +184,17 @@ public class ChatRoomActivity extends AppCompatActivity {
         }
         return super.onOptionsItemSelected(item);
     }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mSensorHelper.listenSensor(Sensor.TYPE_PROXIMITY);
+        mSensorHelper.listenSensor(Sensor.TYPE_GYROSCOPE);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mSensorHelper.unlistenSensor();
+    }
 }
diff --git a/android/app/src/main/java/com/chatman/activity/MainActivity.java b/android/app/src/main/java/com/chatman/activity/MainActivity.java
index b8e0339..5ccc165 100644
--- a/android/app/src/main/java/com/chatman/activity/MainActivity.java
+++ b/android/app/src/main/java/com/chatman/activity/MainActivity.java
@@ -1,6 +1,10 @@
 package com.chatman.activity;
 
 import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
@@ -21,6 +25,7 @@ import com.chatman.R;
 import com.chatman.fragment.BotFragment;
 import com.chatman.fragment.HomeFragment;
 import com.chatman.fragment.ProfileFragment;
+import com.chatman.helper.SensorHelper;
 
 public class MainActivity extends AppCompatActivity implements
         ProfileFragment.OnFragmentInteractionListener,
@@ -29,6 +34,7 @@ public class MainActivity extends AppCompatActivity implements
 
     private Context context;
     private BottomNavigationView bottomNavbar;
+    private SensorHelper mSensorHelper;
 
     private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
             = new BottomNavigationView.OnNavigationItemSelectedListener() {
@@ -70,6 +76,9 @@ public class MainActivity extends AppCompatActivity implements
         }
         context = this;
 
+        //Set sensor
+        mSensorHelper = new SensorHelper(context);
+
         // Bottom Navigation Bar
         bottomNavbar = findViewById(R.id.navigation);
         bottomNavbar.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
@@ -113,4 +122,17 @@ public class MainActivity extends AppCompatActivity implements
     public void onFragmentInteraction(Uri uri){
         //you can leave it empty
     }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mSensorHelper.listenSensor(Sensor.TYPE_PROXIMITY);
+        mSensorHelper.listenSensor(Sensor.TYPE_GYROSCOPE);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mSensorHelper.unlistenSensor();
+    }
 }
diff --git a/android/app/src/main/java/com/chatman/helper/SensorHelper.java b/android/app/src/main/java/com/chatman/helper/SensorHelper.java
new file mode 100644
index 0000000..6f77e57
--- /dev/null
+++ b/android/app/src/main/java/com/chatman/helper/SensorHelper.java
@@ -0,0 +1,55 @@
+package com.chatman.helper;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.widget.Toast;
+
+public class SensorHelper {
+    public static final String TAG = SensorHelper.class.getSimpleName();
+
+    private Context mContext;
+    private SensorManager sensorManager;
+    private SensorEventListener sensorListener;
+
+    public SensorHelper(Context context) {
+        this.mContext = context;
+        sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
+        sensorListener = initListener(mContext);
+    }
+
+    public void listenSensor(int sensorType) {
+        if (sensorManager.getDefaultSensor(sensorType) != null) {
+            sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(sensorType), SensorManager.SENSOR_DELAY_NORMAL);
+        }
+    }
+
+    public void unlistenSensor() {
+        sensorManager.unregisterListener(sensorListener);
+    }
+
+    public static SensorEventListener initListener(final Context context) {
+        return new SensorEventListener() {
+            @Override
+            public void onAccuracyChanged(Sensor sensor,  int accuracy){
+                //you can leave it empty
+            }
+
+            @Override
+            public void onSensorChanged(SensorEvent event) {
+                if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
+                    //proximity
+                    float distance = event.values[0];
+                    if (distance <= 5) {
+                        Toast.makeText(context, "You are too close to device", Toast.LENGTH_SHORT).show();
+                    }
+                }
+                else if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
+                    //gyro
+                }
+            }
+        };
+    }
+}
-- 
GitLab