Skip to content

Commit

Permalink
Google Maps added.
Browse files Browse the repository at this point in the history
  • Loading branch information
irinil committed Jul 7, 2020
1 parent 9d60944 commit dd6dcc5
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 41 deletions.
8 changes: 6 additions & 2 deletions build.gradle
Expand Up @@ -115,6 +115,10 @@ android {
includeAndroidResources = true
}
}

dexOptions {
javaMaxHeapSize "4g"
}
sourceSets {

// Move the build types to build-types/<type>
Expand Down Expand Up @@ -150,14 +154,14 @@ android {
debuggable true
jniDebuggable true
// testCoverageEnabled true
resValue "string", "google_maps_api_key", "AIzaSyDs3xp1-2KQojns5h7mWHHdQxAL-5AZ-q4"
//resValue "string", "google_maps_api_key", "AIzaSyDs3xp1-2KQojns5h7mWHHdQxAL-5AZ-q4"
}
if (doSigningForRelease) {
release {
debuggable false
jniDebuggable false
signingConfig signingConfigs.release
resValue "string", "google_maps_api_key", "AIzaSyDs3xp1-2KQojns5h7mWHHdQxAL-5AZ-q4"
//resValue "string", "google_maps_api_key", "AIzaSyDs3xp1-2KQojns5h7mWHHdQxAL-5AZ-q4"
}
}
release {
Expand Down
4 changes: 3 additions & 1 deletion src/main/AndroidManifest.xml
Expand Up @@ -40,6 +40,7 @@
<uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>



<application
android:name="de.tudarmstadt.informatik.hostage.HostageApplication"
android:allowBackup="true"
Expand All @@ -54,7 +55,7 @@

<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDs3xp1-2KQojns5h7mWHHdQxAL-5AZ-q4" />
android:value="AIzaSyD5vUfuTVKbAmw2jMX9KTTbKGJ9LOhrPdU" />

<activity
android:name="de.tudarmstadt.informatik.hostage.ui.activity.MainActivity"
Expand Down Expand Up @@ -166,6 +167,7 @@
<meta-data android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>

</application>

</manifest>
Expand Up @@ -135,11 +135,13 @@ public void startUpdates(Context context) {
gpsEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {
ex.printStackTrace();
}
try {
networkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch (Exception ex) {
ex.printStackTrace();
}

// don't start listeners if no provider is enabled
Expand Down Expand Up @@ -246,10 +248,9 @@ private boolean isBetterLocation(Location location,
// Check whether the new hostage.location fix is more or less accurate
int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation
.getAccuracy());
boolean isMoreAccurate = accuracyDelta < 0;

// Determine hostage.location quality using a combination of timeliness and
// accuracy
return isMoreAccurate;
return accuracyDelta < 0;
}
}
@@ -1,29 +1,29 @@
package de.tudarmstadt.informatik.hostage.ui.fragment;

import static com.google.android.gms.common.GooglePlayServicesUtil.getErrorDialog;
import static com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.Manifest;
import android.app.AlertDialog;
import android.app.FragmentManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;

import android.provider.Settings;
import android.text.Html;
import android.view.InflateException;
import android.view.LayoutInflater;
Expand All @@ -32,13 +32,17 @@
import android.widget.TextView;


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
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.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
Expand All @@ -65,9 +69,10 @@
public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnInfoWindowClickListener, OnMapReadyCallback,
LocationListener {

private static GoogleMap sMap = null;
private static GoogleMap sMap;
private static final int LOCATION_PERMISSION_REQUEST_CODE = 100;

private static View sView = null;
private static MapView mapView = null;

private static Thread mLoader = null;

Expand All @@ -79,7 +84,7 @@ public class ThreatMapFragment extends TrackerFragment implements GoogleMap.OnIn
// needed for LIVE threat map
private boolean mReceiverRegistered = false;
private BroadcastReceiver mReceiver;
private int offset =0;
private int offset = 0;

/**
* if google play services aren't available an error notification will be displayed
Expand All @@ -90,7 +95,7 @@ private boolean isGooglePlay() {
int status = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(getContext());
boolean result = status == ConnectionResult.SUCCESS;
if (!result) {
GoogleApiAvailability.getInstance().getErrorDialog(getActivity(),status,10).show();
GoogleApiAvailability.getInstance().getErrorDialog(getActivity(), status, 10).show();
}
return result;
}
Expand Down Expand Up @@ -167,7 +172,6 @@ public void onProviderDisabled(String provider) {
}



/**
* helper class
* easier to use than LatLng
Expand Down Expand Up @@ -264,7 +268,7 @@ private void updateUI(final HashMap<String, ArrayList<SSIDArea>> threatAreas) {
return;
}

Activity activity = getActivity();
AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
Expand Down Expand Up @@ -304,11 +308,11 @@ public void run() {
}

private HashMap<String, ArrayList<SSIDArea>> doInBackground() {
DaoSession dbSession = HostageApplication.getInstances().getDaoSession();
DAOHelper daoHelper = new DAOHelper(dbSession,getActivity());
ArrayList<RecordAll> records = daoHelper.getAttackRecordDAO().getRecordsForFilter(new LogFilter());
DaoSession dbSession = HostageApplication.getInstances().getDaoSession();
DAOHelper daoHelper = new DAOHelper(dbSession);
ArrayList<RecordAll> records = daoHelper.getAttackRecordDAO().getRecordsForFilter(new LogFilter());

HashMap<String, ArrayList<SSIDArea>> threatAreas
HashMap<String, ArrayList<SSIDArea>> threatAreas
= new HashMap<String, ArrayList<SSIDArea>>();

for (RecordAll record : records) {
Expand Down Expand Up @@ -358,35 +362,38 @@ public void run() {
* @param savedInstanceState the savedInstanceState
* @return the view
*/
@SuppressLint("MissingPermission")
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);

final Activity activity = getActivity();
final AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity != null) {
activity.setTitle(getResources().getString(R.string.drawer_threat_map));
}

if (sView != null) {
ViewGroup parent = (ViewGroup) sView.getParent();
View rootView = inflater.inflate(R.layout.fragment_threatmap, container, false);


if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) {
parent.removeView(sView);
parent.removeView(rootView);
}
}

try {
sView = inflater.inflate(R.layout.fragment_threatmap, container, false);
if (isGooglePlay()) {
final FragmentManager fragmentManager = getFragmentManager();
if (fragmentManager != null) {
final MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.threatmapfragment);
if (mapFragment != null) {
mapFragment.getMapAsync(this);

if(rootView !=null)
mapView = rootView
.findViewById(R.id.threatmapfragment);
if (mapView != null) {
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(this);
mapView.onResume();

}
}
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.getInstance());
builder.setMessage(Html.fromHtml(getString(R.string.google_play_services_unavailable)))
Expand All @@ -401,7 +408,7 @@ public void onClick(DialogInterface dialog, int id) {
}
} catch (InflateException e) {
// map already exists
//e.printStackTrace();
e.printStackTrace();
}

if (sMap != null) {
Expand All @@ -427,11 +434,12 @@ public View getInfoContents(Marker marker) {
}
});

mLocationManager = (LocationManager)activity.getSystemService(Context.LOCATION_SERVICE);
mLocationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
mLocationProvider = mLocationManager.getBestProvider(criteria, false);
mLocationManager.requestLocationUpdates(mLocationProvider, 0, 1000.0f, this);

requestPermissionUpdates();

sMap.setMyLocationEnabled(true);

Expand All @@ -451,22 +459,35 @@ public View getInfoContents(Marker marker) {
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
int which) {
}
}
)
.setIcon(android.R.drawable.ic_dialog_info).show();
}

return sView;
return rootView;
}


private void requestPermissionUpdates(){
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(),
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(MainActivity.getInstance(), new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE);

return;
}
mLocationManager.requestLocationUpdates(mLocationProvider, 0, 1000.0f, this);

}

@Override
public void onMapReady(GoogleMap googleMap) {
sMap = googleMap;
}

@SuppressLint("MissingPermission")
@Override
public void onResume() {
super.onResume();
Expand All @@ -475,10 +496,51 @@ public void onResume() {
populateMap();
}
if (mLocationManager != null) {
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(MainActivity.getInstance(), new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE);

return;
}
mLocationManager.requestLocationUpdates(mLocationProvider, 0, 1000.0f, this);
}
}

/**
* Callback for requestPermission method. Creates an AlertDialog for the user in order to allow the permissions or not.
* @param requestCode
* @param permissions
* @param grantResults
*/

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 10) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

} else {
if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION)) {
androidx.appcompat.app.AlertDialog.Builder dialog = new androidx.appcompat.app.AlertDialog.Builder(getContext());
dialog.setTitle("Permission Required");
dialog.setCancelable(false);
dialog.setMessage("You have to Allow permission to access user location");
dialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package",
getContext().getPackageName(), null));
}
});
androidx.appcompat.app.AlertDialog alertDialog = dialog.create();
alertDialog.show();
}
//Code for deny if needed
}
}
}

@Override
public void onPause() {
super.onPause();
Expand Down
4 changes: 2 additions & 2 deletions src/main/res/layout/fragment_threatmap.xml
Expand Up @@ -6,10 +6,10 @@
android:layout_height="match_parent"
tools:context="de.tudarmstadt.informatik.hostage.ui.activity.MainActivity" >

<fragment
<com.google.android.gms.maps.MapView
android:id="@+id/threatmapfragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
/>

</RelativeLayout>

0 comments on commit dd6dcc5

Please sign in to comment.