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