Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package roei.hp.memorymap;
- import android.*;
- import android.Manifest;
- import android.annotation.SuppressLint;
- import android.app.AlertDialog;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.graphics.Bitmap;
- import android.graphics.Color;
- import android.location.Criteria;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.media.audiofx.Equalizer;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Environment;
- import android.os.Handler;
- import android.provider.MediaStore;
- import android.provider.Settings;
- import android.support.annotation.NonNull;
- import android.support.design.widget.Snackbar;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.app.FragmentActivity;
- import android.os.Bundle;
- import android.support.v4.content.ContextCompat;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.google.android.gms.common.api.Status;
- import com.google.android.gms.location.FusedLocationProviderClient;
- import com.google.android.gms.location.LocationServices;
- import com.google.android.gms.location.places.GeoDataClient;
- import com.google.android.gms.location.places.Place;
- import com.google.android.gms.location.places.PlaceDetectionClient;
- import com.google.android.gms.location.places.Places;
- import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment;
- import com.google.android.gms.location.places.ui.PlaceSelectionListener;
- 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.LatLng;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.storage.FirebaseStorage;
- import com.google.firebase.storage.StorageReference;
- import com.google.firebase.storage.UploadTask;
- import com.squareup.picasso.Picasso;
- import com.theartofdev.edmodo.cropper.CropImage;
- import com.theartofdev.edmodo.cropper.CropImageActivity;
- import com.theartofdev.edmodo.cropper.CropImageView;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Random;
- public class AddImage extends FragmentActivity implements OnMapReadyCallback {
- GoogleMap mMap;
- SupportMapFragment mapFragment;
- PlaceAutocompleteFragment autocompleteFragment;
- LatLng myPosition;
- LatLng currentPos;
- LocationManager locationManager;
- Criteria criteria;
- String provider;
- Location location;
- File destination;
- DatabaseReference postRef;
- Marker locationMarker;
- MarkerOptions locationOptions;
- ImageView btnGL;
- ImageView btnNext;
- String postURL;
- String postID;
- String locationDescription;
- FirebaseUser mCurrentUser;
- private ImageView ic_map, ic_add, ic_search, ic_profile;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_add_image);
- // Obtain the SupportMapFragment and get notified when the map is ready to be used.
- mapFragment = (SupportMapFragment) getSupportFragmentManager()
- .findFragmentById(R.id.map);
- mapFragment.getMapAsync(this);
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(AddImage.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
- return;
- }
- ic_map = (ImageView)findViewById(R.id.ic_map);
- ic_add = (ImageView)findViewById(R.id.ic_add);
- ic_search = (ImageView)findViewById(R.id.ic_serach);
- ic_profile = (ImageView)findViewById(R.id.ic_profile);
- ic_add.setColorFilter(Color.BLACK);
- ic_map.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(getApplicationContext(),MainMapActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
- finish();
- overridePendingTransition(0,0);
- }
- });
- ic_profile.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(getApplicationContext(),UserProfile.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
- finish();
- overridePendingTransition(0,0);
- }
- });
- ic_search.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(getApplicationContext(),AddUsers.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
- finish();
- overridePendingTransition(0,0);
- }
- });
- autocompleteFragment = (PlaceAutocompleteFragment)
- getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
- btnGL = (ImageView)findViewById(R.id.btnGetLocation);
- btnGL.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- getLocation();
- }
- });
- mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
- postRef = FirebaseDatabase.getInstance().getReference().child("Posts").child(mCurrentUser.getUid());
- btnNext = (ImageView) findViewById(R.id.btnNext);
- btnNext.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (locationMarker.getTitle().equals("My Location"))
- locationDescription = locationMarker.getPosition().latitude+ ", " + locationMarker.getPosition().longitude;
- CropImage.activity()
- .setAspectRatio(1,1)
- .start(AddImage.this);
- }
- });
- }
- boolean doubleBackToExitPressedOnce = false;
- @Override
- public void onBackPressed() {
- if (doubleBackToExitPressedOnce) {
- startService(new Intent(getApplicationContext(),LocationService.class));
- startService(new Intent(getApplicationContext(),NotificationService.class));
- super.onBackPressed();
- return;
- }
- this.doubleBackToExitPressedOnce = true;
- Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
- new Handler().postDelayed(new Runnable() {
- @SuppressLint("NewApi")
- @Override
- public void run() {
- doubleBackToExitPressedOnce=false;
- }
- }, 2000);
- }
- public static String randomizeString() {
- String SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
- StringBuilder salt = new StringBuilder();
- Random rnd = new Random();
- while (salt.length() < 10) { // length of the random string.
- int index = (int) (rnd.nextFloat() * SALTCHARS.length());
- salt.append(SALTCHARS.charAt(index));
- }
- String saltStr = salt.toString();
- return saltStr;
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == 1 && resultCode == RESULT_OK)
- {
- Uri imageURI = data.getData();
- CropImage.activity(imageURI)
- .setAspectRatio(1,1)
- .start(this);
- }
- if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
- CropImage.ActivityResult result = CropImage.getActivityResult(data);
- if (resultCode == RESULT_OK) {
- Uri resultUri = result.getUri();
- postID = randomizeString();
- StorageReference filepath = FirebaseStorage.getInstance().getReference().child("Posts").child(mCurrentUser.getUid()).child(postID);
- filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
- @Override
- public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
- ProgressDialog progressDialog = new ProgressDialog(AddImage.this);
- progressDialog.setTitle("Processing");
- progressDialog.setMessage("Please Wait");
- progressDialog.setCancelable(false);
- progressDialog.show();
- if (task.isSuccessful())
- {
- new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- Thread.sleep(4000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- finally {
- }
- }
- }).start();
- postURL = task.getResult().getDownloadUrl().toString();
- Intent intent = new Intent(AddImage.this,PublishPost.class);
- intent.putExtra("PostURL",postURL);
- intent.putExtra("Latitude",locationMarker.getPosition().latitude);
- intent.putExtra("Longitude",locationMarker.getPosition().longitude);
- intent.putExtra("ID",postID);
- if (locationDescription == null)
- intent.putExtra("Place",locationMarker.getPosition().latitude + ", " + locationMarker.getPosition().longitude);
- else intent.putExtra("Place",locationDescription);
- startActivity(intent);
- }
- else Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
- }
- });
- }
- else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
- Exception error = result.getError();
- }
- }
- }
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mMap = googleMap;
- getLocation();
- locationMarker = mMap.addMarker(locationOptions.title("My Location"));
- currentPos = new LatLng(locationMarker.getPosition().latitude,locationMarker.getPosition().longitude);
- mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentPos,15f));
- autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
- @Override
- public void onPlaceSelected(Place place) {
- LatLng newLatLng = place.getLatLng();
- currentPos = newLatLng;
- locationMarker.setTitle("Selected Location");
- locationMarker.setPosition(currentPos);
- locationDescription = place.getAddress().toString();
- mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentPos,15f));
- }
- @Override
- public void onError(Status status) {
- Snackbar.make(mapFragment.getView(),"Couldn't find place",Snackbar.LENGTH_SHORT).show();
- }
- });
- }
- public void getLocation()
- {
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(AddImage.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
- return;
- }
- locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
- criteria = new Criteria();
- provider = locationManager.getBestProvider(criteria, true);
- location = locationManager.getLastKnownLocation(provider);
- if (location != null) {
- // Getting latitude of the current location
- double latitude = location.getLatitude();
- // Getting longitude of the current location
- double longitude = location.getLongitude();
- myPosition = new LatLng(latitude, longitude);
- locationOptions = new MarkerOptions().position(myPosition).title("My Location");
- mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myPosition,15f));
- if (locationMarker != null) {
- locationMarker.setPosition(myPosition);
- locationMarker.setTitle("My Location");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement