From 9f7996aee66375fc5a576c1b6708026ca6c41661 Mon Sep 17 00:00:00 2001 From: Vishal Pal Date: Fri, 31 Jul 2020 10:13:38 +0530 Subject: [PATCH 1/2] Added heat map and get routes. --- .idea/modules.xml | 11 +- .../crime_mapping/electrothon/sos/Data.java | 59 ++++++++ .../electrothon/sos/LatLong.java | 27 ++++ .../electrothon/sos/MapsActivity2.java | 99 +++++++++++++- .../electrothon/sos/MapsActivity3.java | 127 +++++++++++------- .../crime_mapping/electrothon/sos/Post.java | 53 ++++++++ .../electrothon/sos/RouteResponse.java | 19 +++ .../crime_mapping/electrothon/sos/SihApi.java | 24 ++++ 8 files changed, 359 insertions(+), 60 deletions(-) create mode 100644 app/src/main/java/com/crime_mapping/electrothon/sos/Data.java create mode 100644 app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java create mode 100644 app/src/main/java/com/crime_mapping/electrothon/sos/Post.java create mode 100644 app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java create mode 100644 app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java diff --git a/.idea/modules.xml b/.idea/modules.xml index 16d9e6f..c407ddd 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,15 +2,8 @@ - - - - -<<<<<<< HEAD - - -======= ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 + + \ No newline at end of file diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Data.java b/app/src/main/java/com/crime_mapping/electrothon/sos/Data.java new file mode 100644 index 0000000..2696bb6 --- /dev/null +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/Data.java @@ -0,0 +1,59 @@ +package com.crime_mapping.electrothon.sos; + +public class Data { + + private String precautions; + + private double x; + + private String description; + + private double y; + + public String getPrecautions () + { + return precautions; + } + + public void setPrecautions (String precautions) + { + this.precautions = precautions; + } + + public double getX () + { + return x; + } + + public void setX (double x) + { + this.x = x; + } + + public String getDescription () + { + return description; + } + + public void setDescription (String description) + { + this.description = description; + } + + public double getY () + { + return y; + } + + public void setY (double y) + { + this.y = y; + } + + public Data(String precautions, double x, String description, double y) { + this.precautions = precautions; + this.x = x; + this.description = description; + this.y = y; + } +} diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java b/app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java new file mode 100644 index 0000000..8c90149 --- /dev/null +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java @@ -0,0 +1,27 @@ +package com.crime_mapping.electrothon.sos; + +public class LatLong { + + double lat , lng; + + public LatLong(double lat, double lng) { + this.lat = lat; + this.lng = lng; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public double getLng() { + return lng; + } + + public void setLng(double lng) { + this.lng = lng; + } +} diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java b/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java index 3255e60..866ec15 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java @@ -5,11 +5,14 @@ import android.content.pm.PackageManager; import android.graphics.Color; import android.os.Bundle; +import android.util.Log; import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.fragment.app.FragmentActivity; +import com.google.android.gms.maps.CameraUpdate; +import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; @@ -17,11 +20,26 @@ import com.google.android.gms.maps.model.CircleOptions; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; +import com.google.android.gms.maps.model.TileOverlay; +import com.google.android.gms.maps.model.TileOverlayOptions; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; +import com.google.maps.android.heatmaps.Gradient; +import com.google.maps.android.heatmaps.HeatmapTileProvider; + +import java.util.ArrayList; +import java.util.List; + +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; public class MapsActivity2 extends FragmentActivity implements OnMapReadyCallback { @@ -31,11 +49,17 @@ public class MapsActivity2 extends FragmentActivity implements OnMapReadyCallbac double lat, lon; //lat,log,title String a, b, t; + Retrofit retrofit; + + List Pointslist = null; + private HeatmapTileProvider mProvider; + private TileOverlay mOverlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps2); + Pointslist = new ArrayList<>(); Intent intentt = getIntent(); a1 = intentt.getStringExtra("lat"); a2 = intentt.getStringExtra("lon"); @@ -45,6 +69,64 @@ protected void onCreate(Bundle savedInstanceState) { SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); + + + } + + private void FetchCoordinates() { + OkHttpClient.Builder okhttpbuilder = new OkHttpClient.Builder(); + HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); + logging.setLevel(HttpLoggingInterceptor.Level.BODY); + okhttpbuilder.addInterceptor(logging); + + Retrofit.Builder builder = new Retrofit.Builder() + .baseUrl("https://demo9608891.mockable.io/") + .addConverterFactory(GsonConverterFactory.create()); + + retrofit = builder.build(); + + SihApi sihApi = retrofit.create(SihApi.class); + Call> call = sihApi.getCoordinates(); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + Log.e("response", "" + response.code()); + if (response.isSuccessful()) { + List list = response.body(); + for (LatLong latLong : list) { + Pointslist.add(new LatLng(latLong.getLat(), latLong.getLng())); + Log.e("list", "" + latLong.getLat()); + } + addHeatMap(); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + Log.e("failed", "" + t.getMessage()); + } + }); + + } + + private void addHeatMap() { + int[] colors = { + Color.rgb(102, 225, 0), // green + Color.rgb(255, 0, 0) // red + }; + float[] startPoints = { + 0.2f, 1f + }; + Gradient gradient = new Gradient(colors, startPoints); + mProvider = new HeatmapTileProvider.Builder() + .data(Pointslist) + .gradient(gradient) + .radius(20) + .build(); + + mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider)); + + } @@ -71,23 +153,23 @@ public void onMapReady(GoogleMap googleMap) { // for ActivityCompat#requestPermissions for more details. return; } - mMap.setMyLocationEnabled(true); + /* DatabaseReference d1 = FirebaseDatabase.getInstance().getReference().child("spots"); d1.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { - for(DataSnapshot dsp : dataSnapshot.getChildren()){ + for (DataSnapshot dsp : dataSnapshot.getChildren()) { a = dsp.child("lat").getValue().toString(); b = dsp.child("lon").getValue().toString(); t = dsp.child("details").getValue().toString(); - LatLng points = new LatLng(Double.valueOf(a),Double.valueOf(b)); + LatLng points = new LatLng(Double.valueOf(a), Double.valueOf(b)); mMap.addMarker(new MarkerOptions().position(points).title(t)); Circle circle = mMap.addCircle(new CircleOptions() .center(points) .radius(35) .strokeColor(Color.BLUE) .strokeWidth(2f) - .fillColor(Color.argb(50,255,0,0))); + .fillColor(Color.argb(50, 255, 0, 0))); } } @@ -98,8 +180,15 @@ public void onCancelled(@NonNull DatabaseError databaseError) { } }); - // Add a marker in Sydney and move the camera + */ + // Add a marker in Sydney and move the camera + FetchCoordinates(); + mMap.setMyLocationEnabled(true); + LatLng points = new LatLng(31.708535, 76.527377); + mMap.addMarker(new MarkerOptions().position(points).title("NIT Hamirpur")); + CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(points, 16); + mMap.animateCamera(cameraUpdate); } } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java b/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java index 5c754d4..d8d6236 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java @@ -1,8 +1,11 @@ package com.crime_mapping.electrothon.sos; import android.Manifest; +import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.graphics.Color; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; @@ -13,11 +16,14 @@ import com.crime_mapping.electrothon.sos.directionhelpers.FetchURL; import com.crime_mapping.electrothon.sos.directionhelpers.TaskLoadedCallback; +import com.google.android.gms.maps.CameraUpdate; +import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.Circle; +import com.google.android.gms.maps.model.CircleOptions; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.Polyline; @@ -26,11 +32,21 @@ import com.google.firebase.database.FirebaseDatabase; import java.util.ArrayList; +import java.util.List; + +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; import static android.widget.Toast.LENGTH_LONG; public class MapsActivity3 extends FragmentActivity implements OnMapReadyCallback, TaskLoadedCallback { + private static final String TAG = "MapsActivity3"; private GoogleMap mMap; Circle circle; FirebaseDatabase firebaseDatabase; @@ -40,12 +56,19 @@ public class MapsActivity3 extends FragmentActivity implements OnMapReadyCallbac private Polyline currentPolyline; private MarkerOptions place1, place2; ArrayList listpoints; + SharedPreferences preferences; + SharedPreferences.Editor editor; + Retrofit retrofit; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps3); + preferences = getSharedPreferences("App", MODE_PRIVATE); + editor = preferences.edit(); + if (ContextCompat.checkSelfPermission(MapsActivity3.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(MapsActivity3.this, @@ -124,7 +147,7 @@ public void onMapReady(GoogleMap googleMap) { mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { @Override public void onMapLongClick(LatLng latLng) { - if(listpoints.size()==2) { + if (listpoints.size() == 2) { listpoints.clear(); mMap.clear(); } @@ -132,36 +155,27 @@ public void onMapLongClick(LatLng latLng) { MarkerOptions markerOptions = new MarkerOptions(); markerOptions.position(latLng); - if(listpoints.size()==1) - { + if (listpoints.size() == 1) { markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); place1 = new MarkerOptions().position(latLng).title("Location 1"); xx = latLng; - Toast.makeText(MapsActivity3.this,String.valueOf(listpoints.get(0)), LENGTH_LONG).show(); + Toast.makeText(MapsActivity3.this, String.valueOf(listpoints.get(0)), LENGTH_LONG).show(); - } - else - { + } else { markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)); place2 = new MarkerOptions().position(latLng).title("Location 2"); - yy=latLng; - Toast.makeText(MapsActivity3.this,String.valueOf(listpoints.get(1)), LENGTH_LONG).show(); + yy = latLng; + Toast.makeText(MapsActivity3.this, String.valueOf(listpoints.get(1)), LENGTH_LONG).show(); } mMap.addMarker(markerOptions); } - LatLng point = new LatLng(31.703924,76.526188); -// Circle circle = mMap.addCircle(new CircleOptions() -// .center(point) -// .radius(20) -// .strokeColor(Color.BLUE) -// .strokeWidth(2f) -// .fillColor(Color.argb(50,255,0,0))); }); // mMap.addCircle(new CircleOptions().radius(20).strokeColor(Color.argb(30,200,0,0)).strokeWidth(2f).fillColor(0x30ff0000)); } + private String getUrl(LatLng origin, LatLng dest, String directionMode) { // Origin of route String str_origin = "origins=" + origin.latitude + "," + origin.longitude; @@ -174,7 +188,7 @@ private String getUrl(LatLng origin, LatLng dest, String directionMode) { // Output format String output = "json"; // Building the url to the web service - String url = "https://maps.googleapis.com/maps/api/directions/json?"+parameters+ "&key=AIzaSyCWEKwOS-WbdQ3QpspGBFGObIl0WI3x9yQ"; + String url = "https://maps.googleapis.com/maps/api/directions/json?" + parameters + "&key=AIzaSyCWEKwOS-WbdQ3QpspGBFGObIl0WI3x9yQ"; // String url = "//https://api.distancematrix.ai/maps/api/distancematrix/json?origins=31.706746,%2076.528922&destinations=31.701881,%2076.522603&key=Eewaeb9aeRahex7fie3geenguxaep"; // String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters + "&key=" + getString(R.string.google_maps_key); return url; @@ -184,7 +198,6 @@ private String getUrl(LatLng origin, LatLng dest, String directionMode) { } - @Override public void onTaskDone(Object... values) { if (currentPolyline != null) @@ -194,43 +207,65 @@ public void onTaskDone(Object... values) { } public void hoo(View view) { -// databaseReference = FirebaseDatabase.getInstance().getReference().child("area"); -// Toast.makeText(MapsActivity.this,databaseReference.toString(),Toast.LENGTH_SHORT).show(); -// databaseReference.addValueEventListener(new ValueEventListener() { -// -// @Override -// public void onDataChange(@NonNull DataSnapshot dataSnapshot) { -// for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { -// String s1 = postSnapshot.child("lat").getValue().toString(); -// String s2 = postSnapshot.child("lon").getValue().toString(); -//// Toast.makeText(MapsActivity.this,postSnapshot.toString(),Toast.LENGTH_SHORT).show(); -// Double a = Double.valueOf(s1); -// Double b = Double.valueOf(s2); -// LatLng points = new LatLng(a,b); -// Circle circle = mMap.addCircle(new CircleOptions() -// .center(points) -// .radius(20) -// .strokeColor(Color.BLUE) -// .strokeWidth(2f) -// .fillColor(Color.argb(50,255,0,0))); -// } -// } -// -// @Override -// public void onCancelled(@NonNull DatabaseError databaseError) { -// -// } -// }); + + /* String lat1 = String.valueOf(xx.latitude); String lon1 = String.valueOf(xx.longitude); String lat2 = String.valueOf(yy.latitude); String lon2 = String.valueOf(yy.longitude); + editor.putString("lat1", lat1); + editor.putString("lat2", lat2); + editor.putString("lon1", lon1); + editor.putString("lon2", lon2); + editor.commit(); FirebaseDatabase.getInstance().getReference().setValue(lat1); FirebaseDatabase.getInstance().getReference().child("area").child("2").child("lon").setValue(lon1); // Toast.makeText(this,xx.latitude+" "+xx.longitude,Toast.LENGTH_SHORT).show(); - String url = "https://maps.googleapis.com/maps/api/directions/json?origin="+lat1+","+lon1+"&destination="+lat2+","+lon2+"&mode=driving&key=AIzaSyCWEKwOS-WbdQ3QpspGBFGObIl0WI3x9yQ"; + String url = "https://maps.googleapis.com/maps/api/directions/json?origin=" + lat1 + "," + lon1 + "&destination=" + lat2 + "," + lon2 + "&mode=driving&key=AIzaSyCWEKwOS-WbdQ3QpspGBFGObIl0WI3x9yQ"; new FetchURL(MapsActivity3.this).execute((url), "driving"); + */ + + + OkHttpClient.Builder okhttpbuilder = new OkHttpClient.Builder(); + HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); + logging.setLevel(HttpLoggingInterceptor.Level.BODY); + okhttpbuilder.addInterceptor(logging); + + Retrofit.Builder builder = new Retrofit.Builder() + .baseUrl("https://sihapi--psproject.repl.co/") + .addConverterFactory(GsonConverterFactory.create()); + + retrofit = builder.build(); + + SihApi sihApi = retrofit.create(SihApi.class); + Call call = sihApi.getRoutes("31.708508", "76.527356", "31.689422", "76.519561"); + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + Data[] data = response.body().getData(); + Log.e(TAG, "" + data); + for (Data data1 : data) { + LatLng point = new LatLng(data1.getX(), data1.getY()); + Circle circle = mMap.addCircle(new CircleOptions() + .center(point).radius(20) + .strokeColor(Color.BLUE) + .strokeWidth(2f) + .fillColor(Color.argb(50, 255, 0, 0))); + CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(point, 16); + mMap.animateCamera(cameraUpdate); + + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + Log.e(TAG, "" + t.getMessage()); + } + }); + } } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Post.java b/app/src/main/java/com/crime_mapping/electrothon/sos/Post.java new file mode 100644 index 0000000..c6677dc --- /dev/null +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/Post.java @@ -0,0 +1,53 @@ +package com.crime_mapping.electrothon.sos; + +public class Post { + private String lat; + private String longg; + private String details; + +// public Post(String lat, String longg, String details) { +// this.lat = lat; +// this.longg = longg; +// this.details = details; +// } + + public void setLat(String lat) { + this.lat = lat; + } + + public void setLongg(String longg) { + this.longg = longg; + } + + public void setDetails(String details) { + this.details = details; + } + + public String getLat() { + return lat; + } + + public String getLongg() { + return longg; + } + + public String getDetails() { + return details; + } + + + public Post(String lat, String longg, String details) { + this.lat = lat; + this.longg = longg; + this.details = details; + } + + @Override + public String toString() { + return "Posts{" + + "lat=" + lat + + ", longg=" + longg + + ", details='" + details + + '}'; + } +} diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java b/app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java new file mode 100644 index 0000000..b82a1b5 --- /dev/null +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java @@ -0,0 +1,19 @@ +package com.crime_mapping.electrothon.sos; + +public class RouteResponse { + private Data[] data; + + public Data[] getData () + { + return data; + } + + public void setData (Data[] data) + { + this.data = data; + } + + public RouteResponse(Data[] data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java b/app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java new file mode 100644 index 0000000..284b8e1 --- /dev/null +++ b/app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java @@ -0,0 +1,24 @@ +package com.crime_mapping.electrothon.sos; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Query; +import retrofit2.http.Url; + +public interface SihApi { + + @GET("crime") + Call sendPosts(@Header("Content-type") String header, @Query("lat") String lat, @Query("long") String lon, @Query("crime") String crime); + + @GET + Call getUnsafeAreas(@Url String url); + + @GET("heatmap") + Call> getCoordinates(); + + @GET("routes") + Call getRoutes( @Query("lat1") String lat1, @Query("long1") String lon1, @Query("lat2") String lat2, @Query("long2") String lon2); +} From 514a021c1f6f755dab3c8c2d2a70601dae3a4cac Mon Sep 17 00:00:00 2001 From: Ritesh Singh Date: Sun, 2 Aug 2020 16:13:00 +0530 Subject: [PATCH 2/2] sos added --- .idea/modules.xml | 7 +- app/build.gradle | 14 +- .../sos/ExampleInstrumentedTest.java | 2 +- app/src/main/AndroidManifest.xml | 40 ++--- .../sos/AboutActivity.java | 2 +- .../sos/CameraPreview.java | 2 +- .../sos/Constants.java | 2 +- .../sos/CustomLocationListAdapter.java | 2 +- .../{electrothon => sih2020}/sos/Data.java | 2 +- .../sos/FirebaseLocationData.java | 2 +- .../sos/GpsTracker.java | 2 +- .../sos/IncommingCallActivity.java | 2 +- .../{electrothon => sih2020}/sos/LatLong.java | 2 +- .../sos/LocationListActivity.java | 2 +- .../{electrothon => sih2020}/sos/Login.java | 2 +- .../sos/LoginActivity.java | 2 +- .../sos/MainActivity.java | 137 +++++++++++------ .../sos/MapsActivity.java | 70 ++++++++- .../sos/MapsActivity2.java | 13 +- .../sos/MapsActivity3.java | 49 ++++-- .../sos/MapsActivity4.java | 2 +- .../sos/MyCamera.java | 2 +- .../sos/MyService.java | 64 +++++++- .../sos/PhoneNumberFragment.java | 2 +- .../{electrothon => sih2020}/sos/Post.java | 2 +- .../sos/ProfileActivity.java | 2 +- .../sos/RouteResponse.java | 2 +- .../{electrothon => sih2020}/sos/SihApi.java | 5 +- .../sos/SinchService.java | 2 +- .../sos/SinchStatus.java | 2 +- .../sos/Sinch_Apps.java | 2 +- .../sos/Sinch_MainActivity.java | 5 +- .../sos/Sinch_UiUtils.java | 2 +- .../sos/TrackingService.java | 2 +- .../sos/VerifyFragment.java | 2 +- .../sos/api/ApiClient.java | 19 ++- .../sos/api/ApiInterface.java | 9 +- .../sos/api/Crime.java | 4 +- .../sos/directionhelpers/DataParser.java | 2 +- .../sos/directionhelpers/FetchURL.java | 2 +- .../sos/directionhelpers/PointsParser.java | 2 +- .../directionhelpers/TaskLoadedCallback.java | 2 +- .../sos/prime_contacts.java | 2 +- .../sos/update_spot.java | 88 ++--------- app/src/main/res/drawable-v24/isafe.png | Bin 0 -> 97154 bytes app/src/main/res/layout/activity_maps2.xml | 2 +- app/src/main/res/layout/activity_maps4.xml | 2 +- .../res/layout/activity_prime_contacts.xml | 2 +- .../main/res/layout/activity_update_spot.xml | 4 +- app/src/main/res/values-bn-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-gu-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-hi-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-kn-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-ml-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-mr-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-or-rIN/strings.xml | 138 +++++++++++++++++ app/src/main/res/values-pa-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-ta-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-te-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values-ur-rIN/strings.xml | 139 ++++++++++++++++++ app/src/main/res/values/strings.xml | 45 ++++-- .../sos/ExampleUnitTest.java | 2 +- 62 files changed, 1929 insertions(+), 240 deletions(-) rename app/src/androidTest/java/com/crime_mapping/{electrothon => sih2020}/sos/ExampleInstrumentedTest.java (94%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/AboutActivity.java (87%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/CameraPreview.java (97%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Constants.java (67%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/CustomLocationListAdapter.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Data.java (95%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/FirebaseLocationData.java (97%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/GpsTracker.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/IncommingCallActivity.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/LatLong.java (90%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/LocationListActivity.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Login.java (92%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/LoginActivity.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MainActivity.java (92%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MapsActivity.java (56%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MapsActivity2.java (94%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MapsActivity3.java (88%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MapsActivity4.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MyCamera.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/MyService.java (78%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/PhoneNumberFragment.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Post.java (96%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/ProfileActivity.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/RouteResponse.java (86%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/SihApi.java (79%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/SinchService.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/SinchStatus.java (97%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Sinch_Apps.java (97%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Sinch_MainActivity.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/Sinch_UiUtils.java (96%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/TrackingService.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/VerifyFragment.java (99%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/api/ApiClient.java (82%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/api/ApiInterface.java (57%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/api/Crime.java (82%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/directionhelpers/DataParser.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/directionhelpers/FetchURL.java (97%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/directionhelpers/PointsParser.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/directionhelpers/TaskLoadedCallback.java (67%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/prime_contacts.java (98%) rename app/src/main/java/com/crime_mapping/{electrothon => sih2020}/sos/update_spot.java (69%) create mode 100644 app/src/main/res/drawable-v24/isafe.png create mode 100644 app/src/main/res/values-bn-rIN/strings.xml create mode 100644 app/src/main/res/values-gu-rIN/strings.xml create mode 100644 app/src/main/res/values-hi-rIN/strings.xml create mode 100644 app/src/main/res/values-kn-rIN/strings.xml create mode 100644 app/src/main/res/values-ml-rIN/strings.xml create mode 100644 app/src/main/res/values-mr-rIN/strings.xml create mode 100644 app/src/main/res/values-or-rIN/strings.xml create mode 100644 app/src/main/res/values-pa-rIN/strings.xml create mode 100644 app/src/main/res/values-ta-rIN/strings.xml create mode 100644 app/src/main/res/values-te-rIN/strings.xml create mode 100644 app/src/main/res/values-ur-rIN/strings.xml rename app/src/test/java/com/crime_mapping/{electrothon => sih2020}/sos/ExampleUnitTest.java (89%) diff --git a/.idea/modules.xml b/.idea/modules.xml index c407ddd..b8f9d19 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,8 +2,11 @@ - - + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 62daa92..7de94db 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,12 +3,9 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 defaultConfig { - applicationId "com.crime_mapping.electrothon.sos" -<<<<<<< HEAD - minSdkVersion 26 -======= + applicationId "com.crime_mapping.sih2020.sos" + minSdkVersion 16 ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 targetSdkVersion 29 versionCode 1 versionName "1.0" @@ -30,14 +27,12 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // implementation 'androidx.appcompat:appcompat:1.0.0' -<<<<<<< HEAD + //retrofit implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.2.0' -======= ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 implementation(name: 'sinch-android-rtc', version: '+', ext: 'aar') implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.android.material:material:1.0.0' @@ -79,7 +74,7 @@ dependencies { implementation 'com.google.android.material:material:1.3.0-alpha01' implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0' - + implementation 'com.google.maps.android:android-maps-utils:2.0.3' // implementation 'androidx.appcompat:appcompat:1.0.0' // implementation(name: 'sinch-android-rtc', version: '+', ext: 'aar') // implementation 'androidx.constraintlayout:constraintlayout:1.1.3' @@ -87,6 +82,7 @@ dependencies { // implementation 'org.greenrobot:eventbus:3.1.1' // implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0' } diff --git a/app/src/androidTest/java/com/crime_mapping/electrothon/sos/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/crime_mapping/sih2020/sos/ExampleInstrumentedTest.java similarity index 94% rename from app/src/androidTest/java/com/crime_mapping/electrothon/sos/ExampleInstrumentedTest.java rename to app/src/androidTest/java/com/crime_mapping/sih2020/sos/ExampleInstrumentedTest.java index 17248ce..6a55a2d 100644 --- a/app/src/androidTest/java/com/crime_mapping/electrothon/sos/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/crime_mapping/sih2020/sos/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.content.Context; import androidx.test.platform.app.InstrumentationRegistry; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5c74fad..dc624d3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,9 @@ + package="com.crime_mapping.sih2020.sos"> + + @@ -24,7 +26,7 @@ - + - + @@ -55,18 +57,18 @@ android:value="@string/google_maps_key" /> - + - - - + + + @@ -74,17 +76,17 @@ - - - + + + - + \ No newline at end of file diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/AboutActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/AboutActivity.java similarity index 87% rename from app/src/main/java/com/crime_mapping/electrothon/sos/AboutActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/AboutActivity.java index 8dd7b2e..6b21847 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/AboutActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/AboutActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.os.Bundle; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/CameraPreview.java b/app/src/main/java/com/crime_mapping/sih2020/sos/CameraPreview.java similarity index 97% rename from app/src/main/java/com/crime_mapping/electrothon/sos/CameraPreview.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/CameraPreview.java index 53a20e8..d08e792 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/CameraPreview.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/CameraPreview.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.content.Context; import android.hardware.Camera; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Constants.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Constants.java similarity index 67% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Constants.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Constants.java index c3997d2..e8db2f8 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Constants.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Constants.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; public class Constants { public static final String PHONE_NUMBER = "phoneNumber"; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/CustomLocationListAdapter.java b/app/src/main/java/com/crime_mapping/sih2020/sos/CustomLocationListAdapter.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/CustomLocationListAdapter.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/CustomLocationListAdapter.java index 213737b..87d1f93 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/CustomLocationListAdapter.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/CustomLocationListAdapter.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.content.Context; import android.view.LayoutInflater; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Data.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Data.java similarity index 95% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Data.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Data.java index 2696bb6..8f8a537 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Data.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Data.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; public class Data { diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/FirebaseLocationData.java b/app/src/main/java/com/crime_mapping/sih2020/sos/FirebaseLocationData.java similarity index 97% rename from app/src/main/java/com/crime_mapping/electrothon/sos/FirebaseLocationData.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/FirebaseLocationData.java index 8124a6b..cbe4cb3 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/FirebaseLocationData.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/FirebaseLocationData.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; public class FirebaseLocationData { String email; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/GpsTracker.java b/app/src/main/java/com/crime_mapping/sih2020/sos/GpsTracker.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/GpsTracker.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/GpsTracker.java index 59f984f..f3ee630 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/GpsTracker.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/GpsTracker.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.app.AlertDialog; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/IncommingCallActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/IncommingCallActivity.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/IncommingCallActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/IncommingCallActivity.java index 57d3eba..6b4d4db 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/IncommingCallActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/IncommingCallActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java b/app/src/main/java/com/crime_mapping/sih2020/sos/LatLong.java similarity index 90% rename from app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/LatLong.java index 8c90149..57ebbde 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/LatLong.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/LatLong.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; public class LatLong { diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/LocationListActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/LocationListActivity.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/LocationListActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/LocationListActivity.java index db07db6..6475ace 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/LocationListActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/LocationListActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.content.Intent; import android.os.Bundle; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Login.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Login.java similarity index 92% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Login.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Login.java index 8411b71..960cef9 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Login.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Login.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.os.Bundle; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/LoginActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/LoginActivity.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/LoginActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/LoginActivity.java index 6e68db7..c20e57c 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/LoginActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/LoginActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MainActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MainActivity.java similarity index 92% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MainActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MainActivity.java index 2cc7adc..c67271f 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MainActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MainActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.animation.ObjectAnimator; @@ -7,6 +7,7 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; +import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -47,6 +48,9 @@ import androidx.core.app.NotificationManagerCompat; import androidx.core.content.ContextCompat; +import com.crime_mapping.sih2020.sos.api.ApiClient; +import com.crime_mapping.sih2020.sos.api.ApiInterface; +import com.crime_mapping.sih2020.sos.api.Crime; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.FusedLocationProviderClient; @@ -90,7 +94,12 @@ import java.util.Timer; import java.util.TimerTask; -import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener, OnMapReadyCallback,View.OnClickListener, SensorEventListener { private GoogleMap mMap; @@ -156,7 +165,7 @@ public class MainActivity extends AppCompatActivity implements GoogleApiClient.C private static final int PERMISSION_REQUEST_CODE = 200; private Camera mCamera; //to store path of each image - String file_path; + String file_path,file_path1; private CameraPreview mCameraPreview; private StorageReference mStorageRef; @@ -175,7 +184,7 @@ public class MainActivity extends AppCompatActivity implements GoogleApiClient.C private SensorManager mSensorManager; private Sensor mProximity; private View mCallingBlacksreen; - + Retrofit retrofit; @Override @@ -197,8 +206,9 @@ protected void onStop() { // myRef.removeEventListener(childEventListener); // Log.d(TAG, "onStop: ChildEventListener Removed"); // } - + startService(new Intent(this, SinchService.class)); if (isServiceBackground && FirebaseAuth.getInstance().getCurrentUser() != null) { + startService(new Intent(this, MyService.class)); Log.d(TAG, "onStop: starting service"); } @@ -406,27 +416,11 @@ public void onCancelled(DatabaseError databaseError) { //for camera things if (checkPermission()) { -// setContentView(R.layout.activity_main); mCamera = getCameraInstance(); mCameraPreview = new CameraPreview(this, mCamera); FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview); preview.addView(mCameraPreview); -// Button captureButton = (Button) findViewById(R.id.button_capture); -// captureButton.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// -// Timer timer = new Timer(); -// timer.schedule(new TimerTask() { -// @Override -// public void run() { -// mCamera.startPreview(); -// mCamera.takePicture(null, null, mPicture); -// } -// }, 0, 5000); -// } -// }); } else { requestPermission(); } @@ -486,19 +480,71 @@ public boolean onOptionsItemSelected(MenuItem item) { public void startSos(View view) { - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - // TODO: Consider calling - // ActivityCompat#requestPermissions - // here to request the missing permissions, and then overriding - // public void onRequestPermissionsResult(int requestCode, String[] permissions, - // int[] grantResults) - // to handle the case where the user grants the permission. See the documentation - // for ActivityCompat#requestPermissions for more details. - ActivityCompat.requestPermissions(MainActivity.this, - new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, - MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); - return; - } + Toast.makeText(this,"hitted",Toast.LENGTH_LONG).show(); + ApiInterface apiInterface = ApiClient.getApiClient().create(ApiInterface.class); + retrofit2.Call calllatest; + calllatest = apiInterface.send_sos("0.0000", "0.000", "7355497420"); + calllatest.enqueue(new Callback() { + @Override + public void onResponse(retrofit2.Call call, Response response) { + Log.e("call", call.request().url().toString()); + Log.e("responnse", String.valueOf(response)); + Log.d("notified","alert"); + Toast.makeText(MainActivity.this,"SOS sent successfully",Toast.LENGTH_LONG).show(); + + + BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + if (!mBluetoothAdapter.isEnabled()){ + mBluetoothAdapter.enable(); + } + + } + + @Override + public void onFailure(retrofit2.Call call, Throwable t) { + + } + }); + + +// if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { +// // TODO: Consider calling +// // ActivityCompat#requestPermissions +// // here to request the missing permissions, and then overriding +// // public void onRequestPermissionsResult(int requestCode, String[] permissions, +// // int[] grantResults) +// // to handle the case where the user grants the permission. See the documentation +// // for ActivityCompat#requestPermissions for more details. +// ActivityCompat.requestPermissions(MainActivity.this, +// new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, +// MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); +// return; +// } + + + + /////////////////////// +// ApiInterface apiInterface = ApiClient.getApiClient().create(ApiInterface.class); +// retrofit2.Call calllatest; +// calllatest = apiInterface.send_sos("23.005", "73.222", "7355497420"); +// calllatest.enqueue(new Callback() { +// @Override +// public void onResponse(retrofit2.Call call, Response response) { +// Log.e("call", call.request().url().toString()); +// Log.e("responnse", String.valueOf(response)); +// +// } +// +// @Override +// public void onFailure(retrofit2.Call call, Throwable t) { +// Log.e("responnse", String.valueOf(t)); +// } +// }); + + + ///////////////////////// + + // mFusedLocationProviderClient.getLastLocation() // .addOnCompleteListener(this, new OnCompleteListener() { // @Override @@ -515,20 +561,20 @@ public void startSos(View view) { // } // } // }); - - LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); - lastLocationGpsProvider = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); +// +// LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); +// lastLocationGpsProvider = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); //write data to firebase - if (lastLocationGpsProvider != null) - updateUserLocationToFirebase(lastLocationGpsProvider); - else { - lastLocationGpsProvider = LocationServices.FusedLocationApi.getLastLocation(gac); - if (lastLocationGpsProvider != null) - updateUserLocationToFirebase(lastLocationGpsProvider); - } +// if (lastLocationGpsProvider != null) +// updateUserLocationToFirebase(lastLocationGpsProvider); +// else { +// lastLocationGpsProvider = LocationServices.FusedLocationApi.getLastLocation(gac); +// if (lastLocationGpsProvider != null) +// updateUserLocationToFirebase(lastLocationGpsProvider); +// } // Toast.makeText(this, "GPS location without google client\n"+lm.getLastKnownLocation(LocationManager.GPS_PROVIDER).toString(), Toast.LENGTH_SHORT).show(); @@ -713,6 +759,7 @@ public void onCancelled(@NonNull DatabaseError databaseError) { }); // Toast.makeText(this,"services started...",Toast.LENGTH_SHORT).show(); + startService(new Intent(this, SinchService.class)); Intent i = new Intent(this, MyService.class); startService(i); } @@ -1273,4 +1320,6 @@ public void onSinchLogging(SinchStatus.SinchLogger sinchLogger){ finish(); } } + + } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity.java similarity index 56% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity.java index 33ff5ee..c92a7a1 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity.java @@ -1,20 +1,27 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.content.Context; import android.content.SharedPreferences; +import android.location.Location; import android.os.Bundle; import android.util.Log; +import android.view.View; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentActivity; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.LocationRequest; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; +import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; @@ -27,14 +34,22 @@ public class MapsActivity extends FragmentActivity implements OnMapReadyCallback private static final String TAG = "MapsActivity"; private GoogleMap mMap; - + LatLng latLng; Double latitude, longitude; String name, time; - + MarkerOptions markerOptions; double l1, l2; SharedPreferences preferences; SharedPreferences.Editor editor; + GoogleMap mGoogleMap; + SupportMapFragment mapFrag; + LocationRequest mLocationRequest; + GoogleApiClient mGoogleApiClient; + Location mLastLocation; + Marker mCurrLocationMarker=null; + TextView tv_loc; + private static View view; @Override protected void onCreate(Bundle savedInstanceState) { @@ -57,11 +72,54 @@ public void onDataChange(@NonNull DataSnapshot dataSnapshot) { l1 = Double.valueOf(dataSnapshot.child(no).child("Latitude").getValue().toString()); l2 = Double.valueOf(dataSnapshot.child(no).child("Longitude").getValue().toString()); Log.d("latlon", "" + l1 + l2); +// latLng = new LatLng(l1,l2); +// markerOptions = new MarkerOptions().position(latLng); +// mMap.addMarker(markerOptions); +// mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); +// mMap.animateCamera(CameraUpdateFactory.zoomTo((float) 14)); } else { Toast.makeText(MapsActivity.this, "No user have shared location with you.", Toast.LENGTH_SHORT).show(); } + + ////////////////////////////////////////////////// + double lattitude =l1; + double longitude = l2; + + //Place current location marker + latLng = new LatLng(lattitude, longitude); + +// CameraPosition cameraPosition = new CameraPosition.Builder() +// .target(latLng).zoom(14).build(); + + mMap.addMarker(new MarkerOptions() + .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)) + .position(latLng) + .title("I am here!") + .zIndex(20)); + + mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); + mMap.animateCamera(CameraUpdateFactory.zoomTo((float) 14)); +// mMap.animateCamera(CameraUpdateFactory +// .newCameraPosition(cameraPosition)); + +// if(mCurrLocationMarker!=null){ +// mCurrLocationMarker.setPosition(latLng); +// }else{ +// mCurrLocationMarker = mMap.addMarker(new MarkerOptions() +// .position(latLng) +// .title("I am here")); +// } +// +//// tv_loc.append("Lattitude: " + lattitude + " Longitude: " + longitude); +// mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15)); + + //stop location updates +// if (mGoogleApiClient != null) { +// LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); +// } + } @Override @@ -88,9 +146,9 @@ public void onMapReady(GoogleMap googleMap) { // Add a marker in Sydney and move the camera - LatLng latLng = new LatLng(l1, l2); - MarkerOptions markerOptions = new MarkerOptions().position(latLng); - mMap.addMarker(markerOptions); + latLng = new LatLng(l1, l2); +// markerOptions = new MarkerOptions().position(latLng); +// mMap.addMarker(markerOptions); CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 16); mMap.animateCamera(cameraUpdate); diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity2.java similarity index 94% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity2.java index 866ec15..fd20f2a 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity2.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity2.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.content.Intent; @@ -7,7 +7,6 @@ import android.os.Bundle; import android.util.Log; -import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import androidx.fragment.app.FragmentActivity; @@ -16,24 +15,19 @@ import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; -import com.google.android.gms.maps.model.Circle; -import com.google.android.gms.maps.model.CircleOptions; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.TileOverlay; import com.google.android.gms.maps.model.TileOverlayOptions; -import com.google.firebase.database.DataSnapshot; -import com.google.firebase.database.DatabaseError; -import com.google.firebase.database.DatabaseReference; -import com.google.firebase.database.FirebaseDatabase; -import com.google.firebase.database.ValueEventListener; import com.google.maps.android.heatmaps.Gradient; import com.google.maps.android.heatmaps.HeatmapTileProvider; + import java.util.ArrayList; import java.util.List; import okhttp3.OkHttpClient; + import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Call; import retrofit2.Callback; @@ -92,6 +86,7 @@ private void FetchCoordinates() { public void onResponse(Call> call, Response> response) { Log.e("response", "" + response.code()); if (response.isSuccessful()) { + Log.e("responsee", "" + String.valueOf(response.body())); List list = response.body(); for (LatLong latLong : list) { Pointslist.add(new LatLng(latLong.getLat(), latLong.getLng())); diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity3.java similarity index 88% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity3.java index d8d6236..3f071e5 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity3.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity3.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.content.SharedPreferences; @@ -14,8 +14,7 @@ import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; -import com.crime_mapping.electrothon.sos.directionhelpers.FetchURL; -import com.crime_mapping.electrothon.sos.directionhelpers.TaskLoadedCallback; +import com.crime_mapping.sih2020.sos.directionhelpers.TaskLoadedCallback; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; @@ -23,13 +22,16 @@ import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.Circle; -import com.google.android.gms.maps.model.CircleOptions; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.Polyline; import com.google.android.gms.maps.model.PolylineOptions; +import com.google.android.gms.maps.model.TileOverlay; +import com.google.android.gms.maps.model.TileOverlayOptions; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; +import com.google.maps.android.heatmaps.Gradient; +import com.google.maps.android.heatmaps.HeatmapTileProvider; import java.util.ArrayList; import java.util.List; @@ -59,13 +61,14 @@ public class MapsActivity3 extends FragmentActivity implements OnMapReadyCallbac SharedPreferences preferences; SharedPreferences.Editor editor; Retrofit retrofit; - - + List Pointslist = null; + private HeatmapTileProvider mProvider; + private TileOverlay mOverlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps3); - + Pointslist = new ArrayList<>(); preferences = getSharedPreferences("App", MODE_PRIVATE); editor = preferences.edit(); @@ -247,16 +250,18 @@ public void onResponse(Call call, Response respons Data[] data = response.body().getData(); Log.e(TAG, "" + data); for (Data data1 : data) { + Pointslist.add(new LatLng(data1.getX(), data1.getY())); LatLng point = new LatLng(data1.getX(), data1.getY()); - Circle circle = mMap.addCircle(new CircleOptions() - .center(point).radius(20) - .strokeColor(Color.BLUE) - .strokeWidth(2f) - .fillColor(Color.argb(50, 255, 0, 0))); +// Circle circle = mMap.addCircle(new CircleOptions() +// .center(point).radius(20) +// .strokeColor(Color.BLUE) +// .strokeWidth(2f) +// .fillColor(Color.argb(50, 255, 0, 0))); CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(point, 16); mMap.animateCamera(cameraUpdate); } + addHeatMap(); } } @@ -268,4 +273,24 @@ public void onFailure(Call call, Throwable t) { } + private void addHeatMap() { + int[] colors = { + Color.rgb(102, 225, 0), // green + Color.rgb(255, 0, 0) // red + }; + float[] startPoints = { + 0.2f, 1f + }; + Gradient gradient = new Gradient(colors, startPoints); + mProvider = new HeatmapTileProvider.Builder() + .data(Pointslist) + .gradient(gradient) + .radius(20) + .build(); + + mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider)); + + + } + } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity4.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity4.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity4.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity4.java index 9041624..78d3b92 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MapsActivity4.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MapsActivity4.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.content.pm.PackageManager; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MyCamera.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MyCamera.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MyCamera.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MyCamera.java index c7f797e..f54f045 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MyCamera.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MyCamera.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.app.Activity; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/MyService.java b/app/src/main/java/com/crime_mapping/sih2020/sos/MyService.java similarity index 78% rename from app/src/main/java/com/crime_mapping/electrothon/sos/MyService.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/MyService.java index b0eb2cb..05780bf 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/MyService.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/MyService.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.app.Notification; @@ -11,8 +11,10 @@ import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.location.Location; +import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.IBinder; import android.util.Log; import android.widget.Toast; @@ -26,6 +28,8 @@ import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; +import com.google.android.gms.tasks.OnFailureListener; +import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.database.ChildEventListener; import com.google.firebase.database.DataSnapshot; @@ -33,7 +37,11 @@ import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; +import com.google.firebase.storage.FirebaseStorage; +import com.google.firebase.storage.StorageReference; +import com.google.firebase.storage.UploadTask; +import java.io.File; import java.util.HashMap; import java.util.Map; @@ -46,7 +54,7 @@ public class MyService extends Service implements GoogleApiClient.ConnectionCall private GoogleApiClient mGoogleApiClient; private LocationRequest mLocationRequest; double lat, lon; - + String file_path1; DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference(); String uId = FirebaseAuth.getInstance().getCurrentUser().getUid(); DatabaseReference locationRef = mRootRef.child("location").child(uId); @@ -78,7 +86,7 @@ public void onCreate() { nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); CharSequence name = "SOS ALERT"; int importance = NotificationManager.IMPORTANCE_HIGH; - + upload_image(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, @@ -86,6 +94,13 @@ public void onCreate() { nm.createNotificationChannel(channel); } + String USER_ID=(""+(Build.FINGERPRINT+Build.MODEL).hashCode()).replace("-",""); + SharedPreferences preferencess = getSharedPreferences("App", Context.MODE_PRIVATE); + final String no = preferencess.getString("PHN",""); + DatabaseReference firebaseDatabase = FirebaseDatabase.getInstance("https://crime1.firebaseio.com/").getReference(); + firebaseDatabase.child("Contact").child(no).setValue(USER_ID); + + myRef = FirebaseDatabase.getInstance().getReference("Locations"); myUserRef = FirebaseDatabase.getInstance().getReference("Users"); childEventListener = new ChildEventListener() { @@ -263,4 +278,47 @@ public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } + private void upload_image() + { + String path = Environment.getExternalStorageDirectory().toString()+"/Pictures/iSafe"; + Log.d("Files", "Path: " + path); + File directory = new File(path); + File[] files = directory.listFiles(); + Log.d("Files", "Size: "+ files.length); + for (int i = 0; i < files.length; i++) { + Log.d("Files:", "FileName:" + files[i].getName()); + + + StorageReference mStorageRef = FirebaseStorage.getInstance("gs://crime1.appspot.com").getReference(); + StorageReference riversRef = mStorageRef.child("7355497420/" + files[i].getName()); + file_path1 = path+"/"+files[i].getName(); + Log.d("data::",file_path1); + Uri file = Uri.fromFile(new File(String.valueOf(file_path1))); + + riversRef.putFile(file) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { + // Get a URL to the uploaded content + Log.d("successfully_upload", "image uploaded successfully"); + File fdelete = new File(file_path1); + if (fdelete.exists()) { + if (fdelete.delete()) { + Log.d("file_deleted", "deletion successfully"); + } else { + Log.d("file_deleted", "deletion filed"); + } + } + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception exception) { + // Handle unsuccessful uploads + Log.d("successfully_upload", "failed"); + } + }); + } + } + } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/PhoneNumberFragment.java b/app/src/main/java/com/crime_mapping/sih2020/sos/PhoneNumberFragment.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/PhoneNumberFragment.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/PhoneNumberFragment.java index 23f891a..455c66e 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/PhoneNumberFragment.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/PhoneNumberFragment.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.app.Fragment; import android.app.FragmentTransaction; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Post.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Post.java similarity index 96% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Post.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Post.java index c6677dc..07f6d12 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Post.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Post.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; public class Post { private String lat; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/ProfileActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/ProfileActivity.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/ProfileActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/ProfileActivity.java index 4f5999d..f6acd79 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/ProfileActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/ProfileActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.os.Bundle; import android.view.View; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java b/app/src/main/java/com/crime_mapping/sih2020/sos/RouteResponse.java similarity index 86% rename from app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/RouteResponse.java index b82a1b5..26439ec 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/RouteResponse.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/RouteResponse.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; public class RouteResponse { private Data[] data; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java b/app/src/main/java/com/crime_mapping/sih2020/sos/SihApi.java similarity index 79% rename from app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/SihApi.java index 284b8e1..0cdd388 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/SihApi.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/SihApi.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import java.util.List; @@ -21,4 +21,7 @@ public interface SihApi { @GET("routes") Call getRoutes( @Query("lat1") String lat1, @Query("long1") String lon1, @Query("lat2") String lat2, @Query("long2") String lon2); + + @GET("sos") + Call sendSos(@Query("lat") String lat, @Query("long") String lon, @Query("phone") String phone); } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/SinchService.java b/app/src/main/java/com/crime_mapping/sih2020/sos/SinchService.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/SinchService.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/SinchService.java index 7fb71ec..1fd17ea 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/SinchService.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/SinchService.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.app.Service; import android.content.Intent; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/SinchStatus.java b/app/src/main/java/com/crime_mapping/sih2020/sos/SinchStatus.java similarity index 97% rename from app/src/main/java/com/crime_mapping/electrothon/sos/SinchStatus.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/SinchStatus.java index 79117dc..89d7fbb 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/SinchStatus.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/SinchStatus.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import com.sinch.android.rtc.SinchClient; import com.sinch.android.rtc.SinchError; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_Apps.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_Apps.java similarity index 97% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_Apps.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_Apps.java index 3b8e5c4..88f1bff 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_Apps.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_Apps.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.app.Application; import android.content.Context; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_MainActivity.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_MainActivity.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_MainActivity.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_MainActivity.java index 6fbace8..bfb666c 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_MainActivity.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_MainActivity.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.content.Context; @@ -8,14 +8,12 @@ import android.content.pm.PackageManager; import android.os.Bundle; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -23,7 +21,6 @@ import android.widget.TextView; import android.widget.Toast; -import com.google.firebase.database.ChildEventListener; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_UiUtils.java b/app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_UiUtils.java similarity index 96% rename from app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_UiUtils.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_UiUtils.java index 6532fa4..15b2a15 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/Sinch_UiUtils.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/Sinch_UiUtils.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.app.Activity; import android.content.Context; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/TrackingService.java b/app/src/main/java/com/crime_mapping/sih2020/sos/TrackingService.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/TrackingService.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/TrackingService.java index 2b64591..8bfa292 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/TrackingService.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/TrackingService.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; import android.app.Service; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/VerifyFragment.java b/app/src/main/java/com/crime_mapping/sih2020/sos/VerifyFragment.java similarity index 99% rename from app/src/main/java/com/crime_mapping/electrothon/sos/VerifyFragment.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/VerifyFragment.java index 63ced5d..cec5d55 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/VerifyFragment.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/VerifyFragment.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.app.Fragment; import android.content.Context; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/api/ApiClient.java b/app/src/main/java/com/crime_mapping/sih2020/sos/api/ApiClient.java similarity index 82% rename from app/src/main/java/com/crime_mapping/electrothon/sos/api/ApiClient.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/api/ApiClient.java index 6da6de8..5cc3962 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/api/ApiClient.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/api/ApiClient.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos.api; +package com.crime_mapping.sih2020.sos.api; import java.security.cert.CertificateException; @@ -15,19 +15,28 @@ public class ApiClient { public static final String BASE_URL = "https://sihapi--psproject.repl.co/"; - public static Retrofit retrofit; + public static Retrofit retrofit1,retrofit2; public static Retrofit getApiClient(){ - if (retrofit == null){ + if (retrofit1 == null){ - retrofit = new Retrofit.Builder().baseUrl(BASE_URL) + retrofit1 = new Retrofit.Builder().baseUrl(BASE_URL) .client(getUnsafeOkHttpClient().build()) .addConverterFactory(GsonConverterFactory.create()) .build(); } - return retrofit; + return retrofit1; } + public static Retrofit getApiClient1(){ + if (retrofit2 == null){ + retrofit2 = new Retrofit.Builder().baseUrl(BASE_URL) + .client(getUnsafeOkHttpClient().build()) + .addConverterFactory(GsonConverterFactory.create()) + .build(); + } + return retrofit2; + } public static OkHttpClient.Builder getUnsafeOkHttpClient(){ diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/api/ApiInterface.java b/app/src/main/java/com/crime_mapping/sih2020/sos/api/ApiInterface.java similarity index 57% rename from app/src/main/java/com/crime_mapping/electrothon/sos/api/ApiInterface.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/api/ApiInterface.java index 8bc8ae5..5399adb 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/api/ApiInterface.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/api/ApiInterface.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos.api; +package com.crime_mapping.sih2020.sos.api; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Query; @@ -16,4 +16,11 @@ Call pushcrime( ); + @GET("sos") + Call send_sos( + @Query("lat") String lat, + @Query("long") String longg, + @Query("phone") String phone + ); + } diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/api/Crime.java b/app/src/main/java/com/crime_mapping/sih2020/sos/api/Crime.java similarity index 82% rename from app/src/main/java/com/crime_mapping/electrothon/sos/api/Crime.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/api/Crime.java index ba1dfbb..71638c2 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/api/Crime.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/api/Crime.java @@ -1,10 +1,8 @@ -package com.crime_mapping.electrothon.sos.api; +package com.crime_mapping.sih2020.sos.api; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; -import java.util.List; - public class Crime { @SerializedName("status") diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/DataParser.java b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/DataParser.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/DataParser.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/DataParser.java index 07079a2..c96748f 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/DataParser.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/DataParser.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos.directionhelpers; +package com.crime_mapping.sih2020.sos.directionhelpers; import com.google.android.gms.maps.model.LatLng; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/FetchURL.java b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/FetchURL.java similarity index 97% rename from app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/FetchURL.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/FetchURL.java index ad28ad0..d151764 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/FetchURL.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/FetchURL.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos.directionhelpers; +package com.crime_mapping.sih2020.sos.directionhelpers; import android.content.Context; import android.os.AsyncTask; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/PointsParser.java b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/PointsParser.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/PointsParser.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/PointsParser.java index 700b591..ff71e0c 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/PointsParser.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/PointsParser.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos.directionhelpers; +package com.crime_mapping.sih2020.sos.directionhelpers; import android.content.Context; import android.graphics.Color; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/TaskLoadedCallback.java b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/TaskLoadedCallback.java similarity index 67% rename from app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/TaskLoadedCallback.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/TaskLoadedCallback.java index 33d993d..013afa1 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/directionhelpers/TaskLoadedCallback.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/directionhelpers/TaskLoadedCallback.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos.directionhelpers; +package com.crime_mapping.sih2020.sos.directionhelpers; /** * Created by Vishal on 10/20/2018. diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/prime_contacts.java b/app/src/main/java/com/crime_mapping/sih2020/sos/prime_contacts.java similarity index 98% rename from app/src/main/java/com/crime_mapping/electrothon/sos/prime_contacts.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/prime_contacts.java index 5891911..5b91fed 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/prime_contacts.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/prime_contacts.java @@ -1,4 +1,4 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.content.Context; import android.content.Intent; diff --git a/app/src/main/java/com/crime_mapping/electrothon/sos/update_spot.java b/app/src/main/java/com/crime_mapping/sih2020/sos/update_spot.java similarity index 69% rename from app/src/main/java/com/crime_mapping/electrothon/sos/update_spot.java rename to app/src/main/java/com/crime_mapping/sih2020/sos/update_spot.java index 39ba426..6924e0f 100644 --- a/app/src/main/java/com/crime_mapping/electrothon/sos/update_spot.java +++ b/app/src/main/java/com/crime_mapping/sih2020/sos/update_spot.java @@ -1,8 +1,6 @@ -package com.crime_mapping.electrothon.sos; +package com.crime_mapping.sih2020.sos; import android.Manifest; -import android.app.Activity; -import android.app.FragmentManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -10,28 +8,24 @@ import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; -<<<<<<< HEAD + import android.util.Log; -import android.view.MotionEvent; -======= ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 + import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.fragment.app.FragmentActivity; -<<<<<<< HEAD -import com.crime_mapping.electrothon.sos.api.ApiClient; -import com.crime_mapping.electrothon.sos.api.ApiInterface; -import com.crime_mapping.electrothon.sos.api.Crime; -======= ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 + +import com.crime_mapping.sih2020.sos.api.ApiClient; +import com.crime_mapping.sih2020.sos.api.ApiInterface; +import com.crime_mapping.sih2020.sos.api.Crime; + import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.maps.CameraUpdate; @@ -42,19 +36,12 @@ import com.google.android.gms.maps.model.BitmapDescriptorFactory; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; -<<<<<<< HEAD + import com.google.firebase.database.DatabaseReference; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; -======= -import com.google.firebase.database.DataSnapshot; -import com.google.firebase.database.DatabaseError; -import com.google.firebase.database.DatabaseReference; -import com.google.firebase.database.FirebaseDatabase; -import com.google.firebase.database.ValueEventListener; ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 public class update_spot extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener, OnMapReadyCallback{ private EditText e1, e2,e3; @@ -69,10 +56,7 @@ public class update_spot extends FragmentActivity implements GoogleApiClient.Co DatabaseReference user_no; String provider; String latti,longgi; -<<<<<<< HEAD -======= - // double latti=0,longi=0; ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 + protected String latitude, longitude; protected boolean gps_enabled, network_enabled; @@ -95,54 +79,15 @@ protected void onCreate(Bundle savedInstanceState) { mapfrag.getMapAsync(update_spot.this); } -<<<<<<< HEAD -======= ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 public void submit(View view) { String s1 = e1.getText().toString(); String s2 = e2.getText().toString(); if(s1.equals("risi") && s2.equals("risi")) { -<<<<<<< HEAD - push(); -======= - - - user_no = FirebaseDatabase.getInstance().getReference().child("spots"); - user_no.addValueEventListener(new ValueEventListener() { - @Override - public void onDataChange(DataSnapshot dataSnapshot) { - - if(dataSnapshot.exists()){ - for(DataSnapshot ds: dataSnapshot.getChildren()) - { - no_user++; - } - } - Toast.makeText(update_spot.this ,String.valueOf(no_user) ,Toast.LENGTH_SHORT).show(); - - } - @Override - public void onCancelled(@NonNull DatabaseError databaseError) { - - } - - - }); - - if(latti!=null && longgi != null) - { -// String uId = FirebaseAuth.getInstance().getCurrentUser().getUid(); - DatabaseReference firebaseDatabase = FirebaseDatabase.getInstance().getReference().child("spots").child(String.valueOf(no_user/3+1)); - firebaseDatabase.child("lat").setValue(latti); - firebaseDatabase.child("lon").setValue(longgi); - firebaseDatabase.child("details").setValue(e3.getText().toString()); - Toast.makeText(update_spot.this,latti+" "+longgi, Toast.LENGTH_LONG).show(); + push(); - } ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 } } @@ -157,7 +102,7 @@ public void onLocationChanged(Location location) { public void custom_submit(View view) { -<<<<<<< HEAD + // Toast.makeText(this,"Latti : "+latti+" Longi : "+longgi,Toast.LENGTH_LONG).show(); String s1 = e1.getText().toString(); String s2 = e2.getText().toString(); @@ -165,9 +110,7 @@ public void custom_submit(View view) { { push(); } -======= - Toast.makeText(this,"Latti : "+latti+" Longi : "+longgi,Toast.LENGTH_LONG).show(); ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 + } @Override @@ -218,7 +161,6 @@ public void onConnectionSuspended(int i) { public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { } -<<<<<<< HEAD void push() { @@ -241,6 +183,6 @@ public void onFailure(Call call, Throwable t) { }); } } -======= ->>>>>>> 014d818825fd94f700009be5c4b7fbb651b44e81 + + } diff --git a/app/src/main/res/drawable-v24/isafe.png b/app/src/main/res/drawable-v24/isafe.png new file mode 100644 index 0000000000000000000000000000000000000000..729619d7874139210f8e074f425b71c8d3ee16c5 GIT binary patch literal 97154 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_maps2.xml b/app/src/main/res/layout/activity_maps2.xml index ed2f9a6..9e07b4e 100644 --- a/app/src/main/res/layout/activity_maps2.xml +++ b/app/src/main/res/layout/activity_maps2.xml @@ -5,4 +5,4 @@ android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.crime_mapping.electrothon.sos.MapsActivity2" /> + tools:context="com.crime_mapping.sih2020.sos.MapsActivity2" /> diff --git a/app/src/main/res/layout/activity_maps4.xml b/app/src/main/res/layout/activity_maps4.xml index b3bd283..3ebbbcb 100644 --- a/app/src/main/res/layout/activity_maps4.xml +++ b/app/src/main/res/layout/activity_maps4.xml @@ -5,4 +5,4 @@ android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.crime_mapping.electrothon.sos.MapsActivity4" /> + tools:context="com.crime_mapping.sih2020.sos.MapsActivity4" /> diff --git a/app/src/main/res/layout/activity_prime_contacts.xml b/app/src/main/res/layout/activity_prime_contacts.xml index b580666..8f35922 100644 --- a/app/src/main/res/layout/activity_prime_contacts.xml +++ b/app/src/main/res/layout/activity_prime_contacts.xml @@ -6,7 +6,7 @@ android:textColor="#E6E2E2" android:background="#06125E" android:layout_height="match_parent" - tools:context="com.crime_mapping.electrothon.sos.prime_contacts"> + tools:context="com.crime_mapping.sih2020.sos.prime_contacts"> + tools:context="com.crime_mapping.sih2020.sos.update_spot"> + tools:context="com.crime_mapping.sih2020.sos.update_spot" />