From 450d8691fad0d08db63521aa6082c69e198567eb Mon Sep 17 00:00:00 2001
From: robby syaifullah <robbysyaifullah19@gmail.com>
Date: Thu, 22 Feb 2018 15:13:19 +0700
Subject: [PATCH] Add proximity Sensor on Home Activity

---
 app/build.gradle                              |   1 +
 app/google-services.json                      | 106 ++----------------
 app/src/main/AndroidManifest.xml              |   6 +-
 .../example/leo/fitnessdiy/ChatActivity.java  |  11 ++
 .../example/leo/fitnessdiy/ChatMessage.java   |   2 +
 .../example/leo/fitnessdiy/HomeActivity.java  |  48 ++++++++
 .../leo/fitnessdiy/SensorActivity.java        |  58 ++++++++++
 app/src/main/res/layout/activity_sensor.xml   |   9 ++
 8 files changed, 143 insertions(+), 98 deletions(-)
 create mode 100644 app/src/main/java/com/example/leo/fitnessdiy/SensorActivity.java
 create mode 100644 app/src/main/res/layout/activity_sensor.xml

diff --git a/app/build.gradle b/app/build.gradle
index 9597d51..d335be3 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -40,6 +40,7 @@ dependencies {
 
     compile 'com.android.support:design:26.1.0'
     compile 'com.firebaseui:firebase-ui:0.6.0'
+    compile 'com.firebase:firebase-client-android:2.5.2'
 }
 
 apply plugin: 'com.google.gms.google-services'
diff --git a/app/google-services.json b/app/google-services.json
index b82dd44..a4f5db1 100644
--- a/app/google-services.json
+++ b/app/google-services.json
@@ -1,109 +1,21 @@
 {
   "project_info": {
-    "project_number": "145946844862",
-    "firebase_url": "https://chatroom-ca444.firebaseio.com",
-    "project_id": "chatroom-ca444",
-    "storage_bucket": "chatroom-ca444.appspot.com"
+    "project_number": "47436114658",
+    "firebase_url": "https://chatroom-9f21a.firebaseio.com",
+    "project_id": "chatroom-9f21a",
+    "storage_bucket": "chatroom-9f21a.appspot.com"
   },
   "client": [
     {
       "client_info": {
-        "mobilesdk_app_id": "1:145946844862:android:d6ce396209c6cfd3",
-        "android_client_info": {
-          "package_name": "com.example.heil.chatroom"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "145946844862-k70e5blk1gvu645eb455umqnnfb9kp0o.apps.googleusercontent.com",
-          "client_type": 1,
-          "android_info": {
-            "package_name": "com.example.heil.chatroom",
-            "certificate_hash": "115e06ed0d4d6219898c05cef50eb935401113dc"
-          }
-        },
-        {
-          "client_id": "145946844862-jbf75ke4cnv8t0a7dgriq7tr2dos6n60.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyBlESSrC8NqbRvIHRn4DSCfps5TctNLGjE"
-        }
-      ],
-      "services": {
-        "analytics_service": {
-          "status": 1
-        },
-        "appinvite_service": {
-          "status": 2,
-          "other_platform_oauth_client": [
-            {
-              "client_id": "145946844862-jbf75ke4cnv8t0a7dgriq7tr2dos6n60.apps.googleusercontent.com",
-              "client_type": 3
-            }
-          ]
-        },
-        "ads_service": {
-          "status": 2
-        }
-      }
-    },
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:145946844862:android:5626d847803be314",
-        "android_client_info": {
-          "package_name": "com.example.heil.bismillah"
-        }
-      },
-      "oauth_client": [
-        {
-          "client_id": "145946844862-n22r33mdmtvpi5230r9druv5qvn425g4.apps.googleusercontent.com",
-          "client_type": 1,
-          "android_info": {
-            "package_name": "com.example.heil.bismillah",
-            "certificate_hash": "115e06ed0d4d6219898c05cef50eb935401113dc"
-          }
-        },
-        {
-          "client_id": "145946844862-jbf75ke4cnv8t0a7dgriq7tr2dos6n60.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
-      "api_key": [
-        {
-          "current_key": "AIzaSyBlESSrC8NqbRvIHRn4DSCfps5TctNLGjE"
-        }
-      ],
-      "services": {
-        "analytics_service": {
-          "status": 1
-        },
-        "appinvite_service": {
-          "status": 2,
-          "other_platform_oauth_client": [
-            {
-              "client_id": "145946844862-jbf75ke4cnv8t0a7dgriq7tr2dos6n60.apps.googleusercontent.com",
-              "client_type": 3
-            }
-          ]
-        },
-        "ads_service": {
-          "status": 2
-        }
-      }
-    },
-    {
-      "client_info": {
-        "mobilesdk_app_id": "1:145946844862:android:35ec7a00c3481d94",
+        "mobilesdk_app_id": "1:47436114658:android:35ec7a00c3481d94",
         "android_client_info": {
           "package_name": "com.example.leo.fitnessdiy"
         }
       },
       "oauth_client": [
         {
-          "client_id": "145946844862-oshjav6a4mq4760hnt0m1940gkhdnrri.apps.googleusercontent.com",
+          "client_id": "47436114658-rqa1vg0ujgrigjr06v5bq9mh602b4d8v.apps.googleusercontent.com",
           "client_type": 1,
           "android_info": {
             "package_name": "com.example.leo.fitnessdiy",
@@ -111,13 +23,13 @@
           }
         },
         {
-          "client_id": "145946844862-jbf75ke4cnv8t0a7dgriq7tr2dos6n60.apps.googleusercontent.com",
+          "client_id": "47436114658-nbvl0jljj7m3ghkf2j3uf8nutqft1k17.apps.googleusercontent.com",
           "client_type": 3
         }
       ],
       "api_key": [
         {
-          "current_key": "AIzaSyBlESSrC8NqbRvIHRn4DSCfps5TctNLGjE"
+          "current_key": "AIzaSyByNyWfdtliAQrLe1-yytroe_S_JIvhS00"
         }
       ],
       "services": {
@@ -128,7 +40,7 @@
           "status": 2,
           "other_platform_oauth_client": [
             {
-              "client_id": "145946844862-jbf75ke4cnv8t0a7dgriq7tr2dos6n60.apps.googleusercontent.com",
+              "client_id": "47436114658-nbvl0jljj7m3ghkf2j3uf8nutqft1k17.apps.googleusercontent.com",
               "client_type": 3
             }
           ]
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0e576b9..bfabb15 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,9 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
 
+    <uses-feature
+        android:name="android.hardware.sensor.proximity"
+        android:required="true" />
     <!--
          The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
          Google Maps Android API v2, but you must specify either coarse or fine
@@ -57,7 +60,8 @@
         <activity
             android:name=".JoggingActivity"
             android:label="@string/title_activity_jogging" />
-        <activity android:name=".SettingActivity"></activity>
+        <activity android:name=".SettingActivity" />
+        <activity android:name=".SensorActivity"></activity>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/ChatActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/ChatActivity.java
index 58ec25d..605cfd5 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/ChatActivity.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/ChatActivity.java
@@ -2,6 +2,7 @@ package com.example.leo.fitnessdiy;
 
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.os.AsyncTask;
 import android.support.annotation.NonNull;
 import android.support.design.widget.FloatingActionButton;
 import android.support.v7.app.AppCompatActivity;
@@ -15,6 +16,7 @@ import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.firebase.client.authentication.Constants;
 import com.firebase.ui.auth.AuthUI;
 import com.firebase.ui.database.FirebaseListAdapter;
 import com.google.android.gms.tasks.OnCompleteListener;
@@ -22,13 +24,22 @@ import com.google.android.gms.tasks.Task;
 import com.google.firebase.auth.FirebaseAuth;
 import com.google.firebase.database.FirebaseDatabase;
 
+import org.json.JSONObject;
+
 import java.util.Date;
 
+import okhttp3.MediaType;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
 /**
  * Created by Heil on 2/18/2018.
  */
 
 public class ChatActivity extends AppCompatActivity {
+    private  static  String LEGACY_SERVER_KEY = "AIzaSyAe9-zGwsfRuRw_rA9fp6NmY2v_En5Yv0M";
 
     private static final int SIGN_IN_REQUEST_CODE = 1;
     private FirebaseListAdapter<ChatMessage> adapter;
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/ChatMessage.java b/app/src/main/java/com/example/leo/fitnessdiy/ChatMessage.java
index 5225c8b..ea5d163 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/ChatMessage.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/ChatMessage.java
@@ -14,11 +14,13 @@ import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.firebase.client.Firebase;
 import com.firebase.ui.auth.AuthUI;
 import com.firebase.ui.database.FirebaseListAdapter;
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.database.DataSnapshot;
 import com.google.firebase.database.FirebaseDatabase;
 
 import java.util.Date;
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/HomeActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/HomeActivity.java
index 2c237ee..f5cd9b9 100644
--- a/app/src/main/java/com/example/leo/fitnessdiy/HomeActivity.java
+++ b/app/src/main/java/com/example/leo/fitnessdiy/HomeActivity.java
@@ -2,6 +2,10 @@ package com.example.leo.fitnessdiy;
 
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
 import android.net.Uri;
 import android.support.design.widget.FloatingActionButton;
 import android.support.v7.app.AppCompatActivity;
@@ -14,6 +18,7 @@ import android.view.View;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
+import android.widget.Toast;
 
 public class HomeActivity extends AppCompatActivity
         implements ExerciseFragment.OnFragmentInteractionListener,
@@ -22,6 +27,12 @@ public class HomeActivity extends AppCompatActivity
 
     private FloatingActionButton chatButton;
 
+    // Sensor variable declaration
+    private SensorManager sensorManager;
+    private Sensor proximitySensor;
+    private SensorEventListener proximitySensorListener;
+
+
     private final String LOG_TAG = "BACKGROUND";
     @Override
     public void onFragmentInteraction(Uri uri) {
@@ -56,6 +67,30 @@ public class HomeActivity extends AppCompatActivity
         mPreferences = getSharedPreferences(sharedPrefFile, MODE_PRIVATE);
         int background = mPreferences.getInt(BACKGROUND_KEY, R.drawable.green_theme);
         getWindow().getDecorView().setBackground(getResources().getDrawable(background));
+
+        // Proximity Sensor
+        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
+        proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+
+        if (proximitySensor == null) {
+            Toast.makeText(this, "Proximity sensor is not available !", Toast.LENGTH_LONG).show();
+            finish();
+        }
+
+        proximitySensorListener = new SensorEventListener() {
+            @Override
+            public void onSensorChanged(SensorEvent sensorEvent) {
+                if (sensorEvent.values[0] < proximitySensor.getMaximumRange()) {
+                    Intent i = new Intent(getApplicationContext(), ChatActivity.class);
+                    startActivity(i);
+                }
+            }
+
+            @Override
+            public void onAccuracyChanged(Sensor sensor, int i) {
+            }
+        };
+
     }
 
     public void openHistory(View view) {
@@ -96,5 +131,18 @@ public class HomeActivity extends AppCompatActivity
         startActivity(i);
     }
 
+    @Override
+    protected void onResume() {
+        super.onResume();
+        sensorManager.registerListener(proximitySensorListener, proximitySensor,
+                2 * 1000 * 1000);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        sensorManager.unregisterListener(proximitySensorListener);
+    }
+
 
 }
diff --git a/app/src/main/java/com/example/leo/fitnessdiy/SensorActivity.java b/app/src/main/java/com/example/leo/fitnessdiy/SensorActivity.java
new file mode 100644
index 0000000..d2d6b23
--- /dev/null
+++ b/app/src/main/java/com/example/leo/fitnessdiy/SensorActivity.java
@@ -0,0 +1,58 @@
+package com.example.leo.fitnessdiy;
+
+import android.content.Intent;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.widget.Toast;
+
+public class SensorActivity extends AppCompatActivity {
+
+    private SensorManager sensorManager;
+    private Sensor proximitySensor;
+    private SensorEventListener proximitySensorListener;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
+        proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+
+        if (proximitySensor == null) {
+            Toast.makeText(this, "Proximity sensor is not available !", Toast.LENGTH_LONG).show();
+            finish();
+        }
+
+        proximitySensorListener = new SensorEventListener() {
+            @Override
+            public void onSensorChanged(SensorEvent sensorEvent) {
+                if (sensorEvent.values[0] < proximitySensor.getMaximumRange()) {
+                    Intent i = new Intent(getApplicationContext(), ChatActivity.class);
+                    startActivity(i);
+                }
+            }
+
+            @Override
+            public void onAccuracyChanged(Sensor sensor, int i) {
+            }
+        };
+
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        sensorManager.registerListener(proximitySensorListener, proximitySensor,
+                2 * 1000 * 1000);
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        sensorManager.unregisterListener(proximitySensorListener);
+    }
+}
diff --git a/app/src/main/res/layout/activity_sensor.xml b/app/src/main/res/layout/activity_sensor.xml
new file mode 100644
index 0000000..f4ff271
--- /dev/null
+++ b/app/src/main/res/layout/activity_sensor.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="com.example.leo.fitnessdiy.SensorActivity">
+
+</android.support.constraint.ConstraintLayout>
-- 
GitLab