From 07ae9a0c5b9f478eb27f43476c04add184b38cbe Mon Sep 17 00:00:00 2001
From: root <viveksp.ac@gmail.com>
Date: Wed, 26 Apr 2017 02:50:49 +0530
Subject: [PATCH] Added power button shortcut

---
 app/src/main/AndroidManifest.xml              | 12 ++++-
 .../speedyapps/keepyousafe/MainActivity.java  |  3 ++
 .../speedyapps/keepyousafe/MapsActivity.java  |  1 +
 .../keepyousafe/PowerButtonReceiver.java      | 37 ++++++++++++++
 .../speedyapps/keepyousafe/SMSManager.java    | 32 ++++++++----
 .../com/speedyapps/keepyousafe/Settings.java  | 11 +++-
 .../keepyousafe/confirmationScreen.java       | 26 ++++++----
 .../keepyousafe/power_receiver.java           | 51 +++++++++++++++++++
 app/src/main/res/layout/welcome_side1.xml     | 32 ++++++++++++
 app/src/main/res/layout/welcome_side2.xml     |  2 +-
 app/src/main/res/layout/welcome_side3.xml     |  4 +-
 11 files changed, 183 insertions(+), 28 deletions(-)
 create mode 100644 app/src/main/java/com/speedyapps/keepyousafe/PowerButtonReceiver.java
 create mode 100644 app/src/main/java/com/speedyapps/keepyousafe/power_receiver.java

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8674a3f..7e144b8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -64,9 +64,17 @@
             android:label="@string/title_activity_maps" />
         <activity android:name=".Settings" />
         <activity android:name=".changePassword" />
-        <activity android:name=".Welcome_Activity">
+        <activity android:name=".Welcome_Activity" />
 
-        </activity>
+        <service
+            android:name=".PowerButtonReceiver"
+            android:enabled="true"
+            android:exported="true" />
+
+        <receiver
+            android:name=".power_receiver"
+            android:enabled="true"
+            android:exported="true"></receiver>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/MainActivity.java b/app/src/main/java/com/speedyapps/keepyousafe/MainActivity.java
index 8f72420..8f61d0f 100644
--- a/app/src/main/java/com/speedyapps/keepyousafe/MainActivity.java
+++ b/app/src/main/java/com/speedyapps/keepyousafe/MainActivity.java
@@ -41,6 +41,8 @@ public class MainActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         maps=new MapsActivity();
+        Intent power_service = new Intent(MainActivity.this,PowerButtonReceiver.class);
+        startService(power_service);
         firsttime = this.getSharedPreferences("firsttimecheck",MODE_PRIVATE);
         SharedPreferences.Editor editor = firsttime.edit();
         settings=getSharedPreferences("settings",MODE_PRIVATE);
@@ -63,6 +65,7 @@ public class MainActivity extends AppCompatActivity {
         ImageButton help = (ImageButton)findViewById(R.id.helpButton);
         help.setOnLongClickListener(new View.OnLongClickListener(){
             public boolean onLongClick(View v){
+                intent.putExtra("context","0");
                 backCount=0;
                 startActivity(intent);
                 finish();
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/MapsActivity.java b/app/src/main/java/com/speedyapps/keepyousafe/MapsActivity.java
index d79a3b4..896c5f5 100644
--- a/app/src/main/java/com/speedyapps/keepyousafe/MapsActivity.java
+++ b/app/src/main/java/com/speedyapps/keepyousafe/MapsActivity.java
@@ -86,6 +86,7 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback
     public void onBackPressed() {
         Intent main = new Intent(MapsActivity.this,MainActivity.class);
         startActivity(main);
+        finish();
     }
 
 
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/PowerButtonReceiver.java b/app/src/main/java/com/speedyapps/keepyousafe/PowerButtonReceiver.java
new file mode 100644
index 0000000..6817312
--- /dev/null
+++ b/app/src/main/java/com/speedyapps/keepyousafe/PowerButtonReceiver.java
@@ -0,0 +1,37 @@
+package com.speedyapps.keepyousafe;
+
+import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.os.IBinder;
+import android.util.Log;
+import android.widget.Toast;
+
+
+public class PowerButtonReceiver extends Service {
+    BroadcastReceiver power;
+    SharedPreferences sp;
+    public PowerButtonReceiver() {
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        power=new power_receiver();
+        // TODO: Return the communication channel to the service.
+        IntentFilter screenStateFilter = new IntentFilter();
+        screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
+        screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
+        registerReceiver(power, screenStateFilter);
+    }
+}
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/SMSManager.java b/app/src/main/java/com/speedyapps/keepyousafe/SMSManager.java
index 4d75f00..a35d388 100644
--- a/app/src/main/java/com/speedyapps/keepyousafe/SMSManager.java
+++ b/app/src/main/java/com/speedyapps/keepyousafe/SMSManager.java
@@ -14,15 +14,17 @@ public class SMSManager extends BroadcastReceiver {
     private String TAG = SMSManager.class.getSimpleName();
     String latitudepart=null,longitudepart=null;
     Double latitude,longitude;
+    Intent alarm;
     SharedPreferences sp;
+    int count=0;
     public SMSManager() {
     }
     @Override
-    public void onReceive(Context context, Intent intent) {
+    public void onReceive(final Context context, Intent intent) {
         // Get the data (SMS data) bound to intent
         Bundle bundle = intent.getExtras();
         SmsMessage[] msgs = null;
-        Toast.makeText(context, "OK", Toast.LENGTH_SHORT).show();
+        alarm=new Intent(context,alarmService.class);
         sp=context.getSharedPreferences("locationinfo",Context.MODE_PRIVATE);
         sp.edit().putString("status","stoped").commit();
         String str = "",sender="";
@@ -43,11 +45,24 @@ public class SMSManager extends BroadcastReceiver {
                 // Newline <img draggable="false" class="emoji" alt="🙂" src="https://s.w.org/images/core/emoji/72x72/1f642.png">
                 str += "\n";
             }
-            Toast.makeText(context, "`Sender : "+sender+" Message : "+str, Toast.LENGTH_SHORT).show();
-        }
+         }
 
             if(str.contains("Help Me!!!!")){
-                //myContext.startService(alarm);
+                context.startService(alarm);
+                final Handler h=new Handler();
+                count=0;
+                final Runnable run = new Runnable() {
+                    @Override
+                    public void run() {
+                        count++;
+                        if(count>=10){
+                            context.stopService(alarm);
+                            h.removeCallbacks(this);}
+                        h.postDelayed(this,1000);
+                    }
+
+                };
+                h.post(run);
                 String[] coordinates = str.split(">");
                 latitudepart=coordinates[1].split(",")[0];
                 longitudepart=coordinates[1].split(",")[1];
@@ -55,12 +70,7 @@ public class SMSManager extends BroadcastReceiver {
                 Log.i("lat","lat"+latitudepart);
                 Intent mapsIntent = new Intent(context, MapsActivity.class);
                 mapsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                //mapsIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
-//                if(!sp.getString("status","null").equals("running")) {
-//                    context.startActivity(mapsIntent);
-//                }
-//                if(sp.getString("status","null").equals("paused")){
-                    context.startActivity(mapsIntent);
+                context.startActivity(mapsIntent);
                 }
             }
         }
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/Settings.java b/app/src/main/java/com/speedyapps/keepyousafe/Settings.java
index 4e83ed2..fa7afaa 100644
--- a/app/src/main/java/com/speedyapps/keepyousafe/Settings.java
+++ b/app/src/main/java/com/speedyapps/keepyousafe/Settings.java
@@ -38,11 +38,20 @@ public class Settings extends AppCompatActivity {
         arrayList.add("SATELITE");
         arrayList.add("TERRAIN");
         arrayList.add("HYBRID");
+        sw=(Switch)findViewById(R.id.switch1);
+
         arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,arrayList);
         spinner.setAdapter(arrayAdapter);
         sp=getSharedPreferences("settings",MODE_PRIVATE);
-        sw=(Switch)findViewById(R.id.switch1);
+        if(sp.getString("alarm","on").equals("on")){
+            sw.setChecked(true);
+            sp.edit().putString("alarm","on").commit();
+        }
+        else
+            sw.setChecked(false);
+
         et = (EditText)findViewById(R.id.editText2);
+        et.setHint(sp.getString("timer","10").toString());
         sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if(isChecked){
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/confirmationScreen.java b/app/src/main/java/com/speedyapps/keepyousafe/confirmationScreen.java
index 7520d8f..5370335 100644
--- a/app/src/main/java/com/speedyapps/keepyousafe/confirmationScreen.java
+++ b/app/src/main/java/com/speedyapps/keepyousafe/confirmationScreen.java
@@ -134,19 +134,19 @@ public class confirmationScreen extends AppCompatActivity implements LocationLis
             public void onReceive(Context context, Intent intent) {
                 switch (getResultCode()) {
                     case Activity.RESULT_OK:
-                        Toast.makeText(context, "SMS sent successfully", Toast.LENGTH_SHORT).show();
+                     //   Toast.makeText(context, "SMS sent successfully", Toast.LENGTH_SHORT).show();
                         break;
                     case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
-                        Toast.makeText(context, "Generic failure cause", Toast.LENGTH_SHORT).show();
+                     //   Toast.makeText(context, "Generic failure cause", Toast.LENGTH_SHORT).show();
                         break;
                     case SmsManager.RESULT_ERROR_NO_SERVICE:
-                        Toast.makeText(context, "Service is currently unavailable", Toast.LENGTH_SHORT).show();
+                     //   Toast.makeText(context, "Service is currently unavailable", Toast.LENGTH_SHORT).show();
                         break;
                     case SmsManager.RESULT_ERROR_NULL_PDU:
-                        Toast.makeText(context, "No pdu provided", Toast.LENGTH_SHORT).show();
+                      //  Toast.makeText(context, "No pdu provided", Toast.LENGTH_SHORT).show();
                         break;
                     case SmsManager.RESULT_ERROR_RADIO_OFF:
-                        Toast.makeText(context, "Radio was explicitly turned off", Toast.LENGTH_SHORT).show();
+                      //  Toast.makeText(context, "Radio was explicitly turned off", Toast.LENGTH_SHORT).show();
                         break;
                 }
             }
@@ -158,10 +158,10 @@ public class confirmationScreen extends AppCompatActivity implements LocationLis
             public void onReceive(Context context, Intent intent) {
                 switch (getResultCode()) {
                     case Activity.RESULT_OK:
-                        Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show();
+                     //   Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show();
                         break;
                     case Activity.RESULT_CANCELED:
-                        Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show();
+                     //   Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show();
                         break;
                 }
             }
@@ -181,7 +181,7 @@ public class confirmationScreen extends AppCompatActivity implements LocationLis
 
     @Override
     public void onLocationChanged(Location location) {
-        Toast.makeText(this, "new Location : "+latitude+","+longitude, Toast.LENGTH_SHORT).show();
+       // Toast.makeText(this, "new Location : "+latitude+","+longitude, Toast.LENGTH_SHORT).show();
         newlat=location.getLatitude();
         newlong=location.getLongitude();
     }
@@ -270,7 +270,7 @@ public class confirmationScreen extends AppCompatActivity implements LocationLis
         }
         else {
             provider = locationManager.getProvider(LocationManager.GPS_PROVIDER);
-            Toast.makeText(this, "Provider" + provider, Toast.LENGTH_SHORT).show();
+           // Toast.makeText(this, "Provider" + provider, Toast.LENGTH_SHORT).show();
             handler = new Handler();
             handler2 = new Handler();
             timehandler = new Handler();
@@ -307,8 +307,12 @@ public class confirmationScreen extends AppCompatActivity implements LocationLis
                         timehandler.removeCallbacks(run3);
                         Toast.makeText(confirmationScreen.this, "Distress Calls Cancelled!", Toast.LENGTH_SHORT).show();
                         Intent main = new Intent(confirmationScreen.this, MainActivity.class);
-                        startActivity(main);
-                        finish();
+                        if(getIntent().getStringExtra("context").equals("1"))
+                            finish();
+                        else {
+                            startActivity(main);
+                            finish();
+                        }
                     } else
                         handler2.postDelayed(this, 1000);
 
diff --git a/app/src/main/java/com/speedyapps/keepyousafe/power_receiver.java b/app/src/main/java/com/speedyapps/keepyousafe/power_receiver.java
new file mode 100644
index 0000000..0294fbc
--- /dev/null
+++ b/app/src/main/java/com/speedyapps/keepyousafe/power_receiver.java
@@ -0,0 +1,51 @@
+package com.speedyapps.keepyousafe;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.util.Log;
+import android.widget.Toast;
+
+import static android.content.Context.MODE_PRIVATE;
+
+public class power_receiver extends BroadcastReceiver {
+    int count=0;
+    SharedPreferences sp;
+    @Override
+    public void onReceive(final Context context, Intent intent) {
+        Intent main = new Intent(context,confirmationScreen.class);
+        main.putExtra("context","1");
+        sp=context.getSharedPreferences("counter", MODE_PRIVATE);
+
+        main.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        sp.edit().putString("count",""+(count++)).commit();
+        if((Integer.parseInt(sp.getString("count","0"))==3)){
+            sp.edit().putString("count","0").commit();
+            count=0;
+            context.startActivity(main);
+        }
+        if(!sp.getString("count","0").equals("0")){
+            new CountDownTimer(5000, 1000) {
+                public void onTick(long millisUntilFinished) {
+                    //here you can have your logic to set text to edittext
+                }
+
+                public void onFinish() {
+                    //
+                    if(!sp.getString("count","0").equals("0")){
+                        sp.edit().putString("count","0").commit();
+                        count=0;
+                    }
+                }
+            }.start();
+        }
+        }
+    }
+
+
+
+
+
diff --git a/app/src/main/res/layout/welcome_side1.xml b/app/src/main/res/layout/welcome_side1.xml
index 7c28e43..25bbfc2 100644
--- a/app/src/main/res/layout/welcome_side1.xml
+++ b/app/src/main/res/layout/welcome_side1.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:orientation="vertical" android:layout_width="match_parent"
     android:background="@color/bg_screen1"
     android:layout_height="match_parent">
@@ -16,4 +17,35 @@
         android:textStyle="bold"
         android:layout_alignParentTop="true"
         android:layout_centerHorizontal="true" />
+
+    <ImageView
+        android:id="@+id/imageView7"
+        android:layout_width="200dp"
+        android:layout_height="200dp"
+        android:src="@drawable/help3"
+        android:layout_below="@+id/textView4"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="84dp" />
+
+    <TextView
+        android:id="@+id/textView13"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/imageView7"
+        android:layout_centerHorizontal="true"
+        android:text="HELP Button"
+        android:textSize="24sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/textView14"
+        android:layout_width="300dp"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/textView13"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="23dp"
+        android:text="Press The Power Button 4 Times Continously or Long Press The HELP Button to Start EMERGENCE MODE! "
+        android:textAlignment="center"
+        android:textSize="18sp"
+        android:textStyle="italic" />
 </RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/welcome_side2.xml b/app/src/main/res/layout/welcome_side2.xml
index 79ce4b5..7c3174f 100644
--- a/app/src/main/res/layout/welcome_side2.xml
+++ b/app/src/main/res/layout/welcome_side2.xml
@@ -9,7 +9,7 @@
         android:id="@+id/imageView"
         android:layout_width="150dp"
         android:layout_height="150dp"
-        android:layout_marginTop="90dp"
+        android:layout_marginTop="161dp"
         android:src="@drawable/pin_icon"
         android:layout_alignParentTop="true"
         android:layout_centerHorizontal="true" />
diff --git a/app/src/main/res/layout/welcome_side3.xml b/app/src/main/res/layout/welcome_side3.xml
index e7196bb..686f9b9 100644
--- a/app/src/main/res/layout/welcome_side3.xml
+++ b/app/src/main/res/layout/welcome_side3.xml
@@ -10,11 +10,11 @@
         android:id="@+id/imageView5"
         android:layout_width="200dp"
         android:layout_height="wrap_content"
-        android:layout_marginTop="97dp"
         android:src="@drawable/dualsim"
         android:layout_alignParentTop="true"
         android:layout_alignLeft="@+id/textView2"
-        android:layout_alignStart="@+id/textView2" />
+        android:layout_alignStart="@+id/textView2"
+        android:layout_marginTop="149dp" />
 
     <TextView
         android:id="@+id/textView2"
-- 
GitLab