Projektarbeit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

EarthquakeMapsActivity.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package de.edotzlaff.schockwelle;
  2. import android.Manifest;
  3. import android.content.pm.PackageManager;
  4. import android.location.Location;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.widget.Toast;
  8. import androidx.annotation.NonNull;
  9. import androidx.core.app.ActivityCompat;
  10. import androidx.core.content.ContextCompat;
  11. import androidx.fragment.app.FragmentActivity;
  12. import com.google.android.gms.location.FusedLocationProviderClient;
  13. import com.google.android.gms.location.LocationServices;
  14. import com.google.android.gms.maps.CameraUpdateFactory;
  15. import com.google.android.gms.maps.GoogleMap;
  16. import com.google.android.gms.maps.OnMapReadyCallback;
  17. import com.google.android.gms.maps.SupportMapFragment;
  18. import com.google.android.gms.maps.model.LatLng;
  19. import com.google.android.gms.maps.model.MarkerOptions;
  20. import com.google.android.gms.tasks.OnCompleteListener;
  21. import com.google.android.gms.tasks.Task;
  22. public class EarthquakeMapsActivity extends FragmentActivity implements OnMapReadyCallback {
  23. private static final String TAG = "MainActivity";
  24. private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
  25. private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
  26. //vars
  27. private Boolean mLocationPermissionsGranted = false;
  28. private GoogleMap mMap;
  29. private FusedLocationProviderClient mFusedLocationProviderClient;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_earthquake_maps);
  34. getLocationPermission();
  35. }
  36. private void getLocationPermission() {
  37. String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION};
  38. if (ContextCompat.checkSelfPermission(this.getApplicationContext(), FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
  39. mLocationPermissionsGranted = true;
  40. initMap();
  41. } else {
  42. ActivityCompat.requestPermissions(this, permissions, LOCATION_PERMISSION_REQUEST_CODE);
  43. }
  44. }
  45. @Override
  46. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  47. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  48. mLocationPermissionsGranted = false;
  49. switch (requestCode) {
  50. case LOCATION_PERMISSION_REQUEST_CODE: {
  51. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  52. mLocationPermissionsGranted = true;
  53. //initalize or map
  54. initMap();
  55. }
  56. }
  57. }
  58. }
  59. private void initMap() {
  60. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  61. mapFragment.getMapAsync(this);
  62. }
  63. @Override
  64. public void onMapReady(GoogleMap googleMap) {
  65. Toast.makeText(this, "Map is ready", Toast.LENGTH_SHORT).show();
  66. mMap = googleMap;
  67. if (mLocationPermissionsGranted) {
  68. getDeviceLocation();
  69. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
  70. != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,
  71. Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  72. return;
  73. }
  74. mMap.setMyLocationEnabled(true);
  75. }
  76. // Add a marker in Sydney and move the camera
  77. //LatLng sydney = new LatLng(-34, 151);
  78. //mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
  79. //mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
  80. }
  81. private void getDeviceLocation(){
  82. mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
  83. try {
  84. if (mLocationPermissionsGranted){
  85. final Task location = mFusedLocationProviderClient.getLastLocation();
  86. location.addOnCompleteListener(new OnCompleteListener() {
  87. @Override
  88. public void onComplete(@NonNull Task task) {
  89. if (task.isSuccessful()){
  90. Location currentLocation = (Location) task.getResult(); //TODO Aron hier erhält die Anwendung die GPS Positionen
  91. moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()),15f);
  92. }
  93. else{
  94. Toast.makeText(EarthquakeMapsActivity.this, "Current Location unavailable", Toast.LENGTH_SHORT).show();
  95. }
  96. }
  97. });
  98. }
  99. }catch (SecurityException e){
  100. Log.e(TAG,"Device Location not found" + e.getMessage());
  101. }
  102. }
  103. private void moveCamera(LatLng latlng, float zoom){
  104. Log.d(TAG,"Latitude: "+latlng.latitude+"Longitude: "+latlng.longitude);
  105. mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, zoom));
  106. }
  107. //TODO Aron Daten an DB senden
  108. }