Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.77 KB | None | 0 0
  1. package roei.hp.memorymap;
  2.  
  3. import android.*;
  4. import android.Manifest;
  5. import android.annotation.SuppressLint;
  6. import android.app.AlertDialog;
  7. import android.app.ProgressDialog;
  8. import android.content.Context;
  9. import android.content.DialogInterface;
  10. import android.content.Intent;
  11. import android.content.pm.PackageManager;
  12. import android.graphics.Bitmap;
  13. import android.graphics.Color;
  14. import android.location.Criteria;
  15. import android.location.Location;
  16. import android.location.LocationListener;
  17. import android.location.LocationManager;
  18. import android.media.audiofx.Equalizer;
  19. import android.net.Uri;
  20. import android.os.Build;
  21. import android.os.Environment;
  22. import android.os.Handler;
  23. import android.provider.MediaStore;
  24. import android.provider.Settings;
  25. import android.support.annotation.NonNull;
  26. import android.support.design.widget.Snackbar;
  27. import android.support.v4.app.ActivityCompat;
  28. import android.support.v4.app.FragmentActivity;
  29. import android.os.Bundle;
  30. import android.support.v4.content.ContextCompat;
  31. import android.view.View;
  32. import android.widget.Button;
  33. import android.widget.EditText;
  34. import android.widget.ImageView;
  35. import android.widget.TextView;
  36. import android.widget.Toast;
  37.  
  38. import com.google.android.gms.common.api.Status;
  39. import com.google.android.gms.location.FusedLocationProviderClient;
  40. import com.google.android.gms.location.LocationServices;
  41. import com.google.android.gms.location.places.GeoDataClient;
  42. import com.google.android.gms.location.places.Place;
  43. import com.google.android.gms.location.places.PlaceDetectionClient;
  44. import com.google.android.gms.location.places.Places;
  45. import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment;
  46. import com.google.android.gms.location.places.ui.PlaceSelectionListener;
  47. import com.google.android.gms.maps.CameraUpdateFactory;
  48. import com.google.android.gms.maps.GoogleMap;
  49. import com.google.android.gms.maps.OnMapReadyCallback;
  50. import com.google.android.gms.maps.SupportMapFragment;
  51. import com.google.android.gms.maps.model.LatLng;
  52. import com.google.android.gms.maps.model.Marker;
  53. import com.google.android.gms.maps.model.MarkerOptions;
  54. import com.google.android.gms.tasks.OnCompleteListener;
  55. import com.google.android.gms.tasks.Task;
  56. import com.google.firebase.auth.FirebaseAuth;
  57. import com.google.firebase.auth.FirebaseUser;
  58. import com.google.firebase.database.DatabaseReference;
  59. import com.google.firebase.database.FirebaseDatabase;
  60. import com.google.firebase.storage.FirebaseStorage;
  61. import com.google.firebase.storage.StorageReference;
  62. import com.google.firebase.storage.UploadTask;
  63. import com.squareup.picasso.Picasso;
  64. import com.theartofdev.edmodo.cropper.CropImage;
  65. import com.theartofdev.edmodo.cropper.CropImageActivity;
  66. import com.theartofdev.edmodo.cropper.CropImageView;
  67.  
  68. import java.io.ByteArrayOutputStream;
  69. import java.io.File;
  70. import java.util.ArrayList;
  71. import java.util.HashMap;
  72. import java.util.Random;
  73.  
  74. public class AddImage extends FragmentActivity implements OnMapReadyCallback {
  75.  
  76. GoogleMap mMap;
  77. SupportMapFragment mapFragment;
  78. PlaceAutocompleteFragment autocompleteFragment;
  79. LatLng myPosition;
  80. LatLng currentPos;
  81. LocationManager locationManager;
  82. Criteria criteria;
  83. String provider;
  84. Location location;
  85. File destination;
  86. DatabaseReference postRef;
  87. Marker locationMarker;
  88. MarkerOptions locationOptions;
  89. ImageView btnGL;
  90. ImageView btnNext;
  91. String postURL;
  92. String postID;
  93. String locationDescription;
  94. FirebaseUser mCurrentUser;
  95. private ImageView ic_map, ic_add, ic_search, ic_profile;
  96. @Override
  97. protected void onCreate(Bundle savedInstanceState) {
  98. super.onCreate(savedInstanceState);
  99. setContentView(R.layout.activity_add_image);
  100. // Obtain the SupportMapFragment and get notified when the map is ready to be used.
  101. mapFragment = (SupportMapFragment) getSupportFragmentManager()
  102. .findFragmentById(R.id.map);
  103. mapFragment.getMapAsync(this);
  104. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  105. ActivityCompat.requestPermissions(AddImage.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
  106. return;
  107. }
  108. ic_map = (ImageView)findViewById(R.id.ic_map);
  109. ic_add = (ImageView)findViewById(R.id.ic_add);
  110. ic_search = (ImageView)findViewById(R.id.ic_serach);
  111. ic_profile = (ImageView)findViewById(R.id.ic_profile);
  112. ic_add.setColorFilter(Color.BLACK);
  113. ic_map.setOnClickListener(new View.OnClickListener() {
  114. @Override
  115. public void onClick(View view) {
  116. startActivity(new Intent(getApplicationContext(),MainMapActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
  117. finish();
  118. overridePendingTransition(0,0);
  119. }
  120. });
  121. ic_profile.setOnClickListener(new View.OnClickListener() {
  122. @Override
  123. public void onClick(View view) {
  124. startActivity(new Intent(getApplicationContext(),UserProfile.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
  125. finish();
  126. overridePendingTransition(0,0);
  127. }
  128. });
  129. ic_search.setOnClickListener(new View.OnClickListener() {
  130. @Override
  131. public void onClick(View view) {
  132. startActivity(new Intent(getApplicationContext(),AddUsers.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
  133. finish();
  134. overridePendingTransition(0,0);
  135. }
  136. });
  137. autocompleteFragment = (PlaceAutocompleteFragment)
  138. getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
  139.  
  140. btnGL = (ImageView)findViewById(R.id.btnGetLocation);
  141. btnGL.setOnClickListener(new View.OnClickListener() {
  142. @Override
  143. public void onClick(View view) {
  144. getLocation();
  145. }
  146. });
  147. mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
  148. postRef = FirebaseDatabase.getInstance().getReference().child("Posts").child(mCurrentUser.getUid());
  149. btnNext = (ImageView) findViewById(R.id.btnNext);
  150. btnNext.setOnClickListener(new View.OnClickListener() {
  151. @Override
  152. public void onClick(View view) {
  153. if (locationMarker.getTitle().equals("My Location"))
  154. locationDescription = locationMarker.getPosition().latitude+ ", " + locationMarker.getPosition().longitude;
  155. CropImage.activity()
  156. .setAspectRatio(1,1)
  157. .start(AddImage.this);
  158. }
  159. });
  160. }
  161. boolean doubleBackToExitPressedOnce = false;
  162. @Override
  163. public void onBackPressed() {
  164. if (doubleBackToExitPressedOnce) {
  165. startService(new Intent(getApplicationContext(),LocationService.class));
  166. startService(new Intent(getApplicationContext(),NotificationService.class));
  167. super.onBackPressed();
  168. return;
  169. }
  170.  
  171. this.doubleBackToExitPressedOnce = true;
  172. Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
  173.  
  174. new Handler().postDelayed(new Runnable() {
  175.  
  176. @SuppressLint("NewApi")
  177. @Override
  178. public void run() {
  179. doubleBackToExitPressedOnce=false;
  180. }
  181. }, 2000);
  182. }
  183. public static String randomizeString() {
  184. String SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  185. StringBuilder salt = new StringBuilder();
  186. Random rnd = new Random();
  187. while (salt.length() < 10) { // length of the random string.
  188. int index = (int) (rnd.nextFloat() * SALTCHARS.length());
  189. salt.append(SALTCHARS.charAt(index));
  190. }
  191. String saltStr = salt.toString();
  192. return saltStr;
  193. }
  194. @Override
  195. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  196. if (requestCode == 1 && resultCode == RESULT_OK)
  197. {
  198. Uri imageURI = data.getData();
  199. CropImage.activity(imageURI)
  200. .setAspectRatio(1,1)
  201. .start(this);
  202.  
  203. }
  204. if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
  205. CropImage.ActivityResult result = CropImage.getActivityResult(data);
  206. if (resultCode == RESULT_OK) {
  207. Uri resultUri = result.getUri();
  208. postID = randomizeString();
  209. StorageReference filepath = FirebaseStorage.getInstance().getReference().child("Posts").child(mCurrentUser.getUid()).child(postID);
  210. filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
  211. @Override
  212. public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
  213. ProgressDialog progressDialog = new ProgressDialog(AddImage.this);
  214. progressDialog.setTitle("Processing");
  215. progressDialog.setMessage("Please Wait");
  216. progressDialog.setCancelable(false);
  217. progressDialog.show();
  218. if (task.isSuccessful())
  219. {
  220. new Thread(new Runnable() {
  221. @Override
  222. public void run() {
  223. try {
  224. Thread.sleep(4000);
  225. } catch (InterruptedException e) {
  226. e.printStackTrace();
  227. }
  228. finally {
  229. }
  230. }
  231. }).start();
  232. postURL = task.getResult().getDownloadUrl().toString();
  233. Intent intent = new Intent(AddImage.this,PublishPost.class);
  234. intent.putExtra("PostURL",postURL);
  235. intent.putExtra("Latitude",locationMarker.getPosition().latitude);
  236. intent.putExtra("Longitude",locationMarker.getPosition().longitude);
  237. intent.putExtra("ID",postID);
  238. if (locationDescription == null)
  239. intent.putExtra("Place",locationMarker.getPosition().latitude + ", " + locationMarker.getPosition().longitude);
  240. else intent.putExtra("Place",locationDescription);
  241. startActivity(intent);
  242. }
  243. else Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
  244. }
  245. });
  246. }
  247. else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
  248. Exception error = result.getError();
  249. }
  250. }
  251. }
  252. @Override
  253. public void onMapReady(GoogleMap googleMap) {
  254. mMap = googleMap;
  255. getLocation();
  256. locationMarker = mMap.addMarker(locationOptions.title("My Location"));
  257. currentPos = new LatLng(locationMarker.getPosition().latitude,locationMarker.getPosition().longitude);
  258. mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentPos,15f));
  259. autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
  260. @Override
  261. public void onPlaceSelected(Place place) {
  262. LatLng newLatLng = place.getLatLng();
  263. currentPos = newLatLng;
  264. locationMarker.setTitle("Selected Location");
  265. locationMarker.setPosition(currentPos);
  266. locationDescription = place.getAddress().toString();
  267. mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentPos,15f));
  268. }
  269. @Override
  270. public void onError(Status status) {
  271. Snackbar.make(mapFragment.getView(),"Couldn't find place",Snackbar.LENGTH_SHORT).show();
  272. }
  273. });
  274. }
  275. public void getLocation()
  276. {
  277. if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  278. ActivityCompat.requestPermissions(AddImage.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
  279. return;
  280. }
  281. locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
  282. criteria = new Criteria();
  283. provider = locationManager.getBestProvider(criteria, true);
  284. location = locationManager.getLastKnownLocation(provider);
  285. if (location != null) {
  286. // Getting latitude of the current location
  287. double latitude = location.getLatitude();
  288.  
  289. // Getting longitude of the current location
  290. double longitude = location.getLongitude();
  291.  
  292. myPosition = new LatLng(latitude, longitude);
  293.  
  294. locationOptions = new MarkerOptions().position(myPosition).title("My Location");
  295. mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myPosition,15f));
  296. if (locationMarker != null) {
  297. locationMarker.setPosition(myPosition);
  298. locationMarker.setTitle("My Location");
  299. }
  300. }
  301. }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement