Advertisement
WallaceRobertoc

Untitled

Mar 1st, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.90 KB | None | 0 0
  1. package com.robertoc.meublogclash;
  2.  
  3. import android.content.pm.PackageManager;
  4. import android.support.v4.app.ActivityCompat;
  5. import android.support.v4.app.FragmentActivity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.TextView;
  9.  
  10. import com.google.android.gms.maps.UiSettings;
  11. import com.google.firebase.auth.FirebaseUser;
  12. import com.google.firebase.database.ChildEventListener;
  13. import com.firebase.client.Firebase;
  14. import com.google.firebase.database.ValueEventListener;
  15. import com.google.android.gms.maps.CameraUpdateFactory;
  16. import com.google.android.gms.maps.GoogleMap;
  17. import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
  18. import com.google.android.gms.maps.OnMapReadyCallback;
  19. import com.google.android.gms.maps.SupportMapFragment;
  20. import com.google.android.gms.maps.model.LatLng;
  21. import com.google.android.gms.maps.model.Marker;
  22. import com.google.android.gms.maps.model.MarkerOptions;
  23. import com.google.firebase.auth.FirebaseAuth;
  24. import com.google.firebase.database.DatabaseError;
  25. import com.google.firebase.database.DatabaseReference;
  26. import com.google.firebase.database.FirebaseDatabase;
  27. import com.squareup.picasso.Picasso;
  28.  
  29. import org.apache.commons.collections4.BidiMap;
  30. import org.apache.commons.collections4.bidimap.DualHashBidiMap;
  31.  
  32. import de.hdodenhof.circleimageview.CircleImageView;
  33.  
  34.  
  35. public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, OnMapLongClickListener, GoogleMap.OnInfoWindowClickListener {
  36. private DatabaseReference mDatabase;
  37. private DatabaseReference mDatabase1;
  38. private DatabaseReference mDatabase2;
  39. private FirebaseAuth mAuth;
  40. private GoogleMap mMap;
  41. Firebase ref;
  42. private FirebaseUser mCurrentUser;
  43.  
  44. private BidiMap<String, Marker> userMarkers;
  45.  
  46. @Override
  47. protected void onCreate(Bundle savedInstanceState) {
  48. super.onCreate(savedInstanceState);
  49. setContentView(R.layout.activity_maps);
  50. Firebase.setAndroidContext(this);
  51.  
  52. mAuth = FirebaseAuth.getInstance();
  53. mDatabase = FirebaseDatabase.getInstance().getReference();
  54. mDatabase1 = FirebaseDatabase.getInstance().getReference().child("locations");
  55. mDatabase2 = FirebaseDatabase.getInstance().getReference().child("users");
  56. mCurrentUser = mAuth.getCurrentUser();
  57.  
  58. userMarkers = new DualHashBidiMap<>();
  59.  
  60. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
  61. .findFragmentById(R.id.map);
  62. mapFragment.getMapAsync(this);
  63.  
  64.  
  65. }
  66.  
  67.  
  68. @Override
  69. public void onMapReady(GoogleMap googleMap) {
  70. mMap = googleMap;
  71.  
  72. // Add a marker in Sydney and move the camera
  73. LatLng brazil = new LatLng(-18, -48);
  74.  
  75.  
  76. mMap.setInfoWindowAdapter(new UserAdapter());
  77. mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(brazil, 4));
  78. if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  79. // TODO: Consider calling
  80. // ActivityCompat#requestPermissions
  81. // here to request the missing permissions, and then overriding
  82. // public void onRequestPermissionsResult(int requestCode, String[] permissions,
  83. // int[] grantResults)
  84. // to handle the case where the user grants the permission. See the documentation
  85. // for ActivityCompat#requestPermissions for more details.
  86. return;
  87. }
  88. mMap.setMyLocationEnabled(true);
  89. mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
  90. mMap.setOnMapLongClickListener(this);
  91. UiSettings uiSettings = googleMap.getUiSettings();
  92. uiSettings.setCompassEnabled(true);
  93. uiSettings.setZoomControlsEnabled(true);
  94.  
  95. final String user_id = mAuth.getCurrentUser().getUid();
  96.  
  97. mDatabase1.addChildEventListener(new ChildEventListener() {
  98. @Override
  99. public void onChildAdded(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
  100. Location childLocation = dataSnapshot.getValue(Location.class);
  101. LatLng childPos = new LatLng(childLocation.getLat(),childLocation.getLang());
  102. MarkerOptions markerOptions =new MarkerOptions().position(childPos);
  103. Marker marker = mMap.addMarker(markerOptions);
  104. userMarkers.put(dataSnapshot.getKey(),marker);
  105.  
  106. }
  107.  
  108. @Override
  109. public void onChildChanged(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
  110. Location childLocation = dataSnapshot.getValue(Location.class);
  111. Marker oldMarker = userMarkers.get(dataSnapshot.getKey());
  112. oldMarker.remove();
  113. LatLng childPos = new LatLng(childLocation.getLat(),childLocation.getLang());
  114. MarkerOptions markerOptions =new MarkerOptions().position(childPos);
  115. Marker marker = mMap.addMarker(markerOptions);
  116. userMarkers.put(dataSnapshot.getKey(),marker);
  117. mDatabase1.child(user_id).child("uid").setValue(mCurrentUser.getUid());;
  118.  
  119. }
  120.  
  121. @Override
  122. public void onChildRemoved(com.google.firebase.database.DataSnapshot dataSnapshot) {
  123. Marker oldMarker = userMarkers.get(dataSnapshot.getKey());
  124. oldMarker.remove();
  125. userMarkers.remove(dataSnapshot.getKey());
  126. }
  127.  
  128. @Override
  129. public void onChildMoved(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
  130.  
  131. }
  132.  
  133. @Override
  134. public void onCancelled(DatabaseError databaseError) {
  135.  
  136. }});}
  137.  
  138.  
  139.  
  140. @Override
  141. public void onMapLongClick(LatLng latLng) {
  142. Location location=new Location(latLng.latitude,latLng.longitude);
  143. sendMark(location);
  144. }
  145.  
  146. private void sendMark(Location location){
  147. String userName= FirebaseAuth.getInstance().getCurrentUser().getUid();
  148. mDatabase1.child(userName).setValue(location);
  149. }
  150.  
  151. @Override
  152. public void onInfoWindowClick(Marker marker) {
  153. marker.hideInfoWindow();
  154. marker.showInfoWindow();
  155.  
  156. }
  157.  
  158.  
  159. private class UserAdapter implements GoogleMap.InfoWindowAdapter{
  160. private View view;
  161.  
  162. public UserAdapter(){
  163. this.name = name;
  164. this.trofeus = trofeus;
  165. this.whatsap = whatsap;
  166. this.patente = patente;
  167. this.nameclan = nameclan;
  168. this.nameConta = nameConta;
  169. this.profile = profile;
  170. view=getLayoutInflater().inflate(R.layout.user_info,null);
  171. }
  172. TextView name;
  173. TextView trofeus;
  174. TextView whatsap;
  175. TextView patente;
  176. TextView nameclan;
  177. TextView nameConta;
  178. CircleImageView profile;
  179.  
  180. @Override
  181. public View getInfoWindow(Marker marker) {
  182.  
  183. final TextView name = (TextView) view.findViewById(R.id.userName);
  184. final TextView trofeus = (TextView) view.findViewById(R.id.userTrofeus);
  185. final TextView whatsap = (TextView) view.findViewById(R.id.userWhatsap);
  186. //patente = (TextView) view.findViewById(R.id.userPatente);
  187. final TextView nameclan = (TextView) view.findViewById(R.id.userNameClan);
  188. final TextView nameConta = (TextView) view.findViewById(R.id.userNameConta);
  189. final CircleImageView profile = (CircleImageView) view.findViewById(R.id.userAvatar);
  190.  
  191.  
  192.  
  193. String userId = userMarkers.getKey(marker);
  194. mDatabase.child("Users").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
  195. @Override
  196. public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
  197. User user = dataSnapshot.getValue(User.class);
  198. name.setText(user.getName());
  199. trofeus.setText(user.getTrofs()+"");
  200. whatsap.setText(user.getWhatsap()+"");
  201. nameConta.setText(user.getNameConta());
  202. //patente.setText(user.getPatente());
  203. nameclan.setText(user.getNameClan()+"-"+user.getPatente());
  204.  
  205. Picasso.with(MapsActivity.this).load(user.getProfile()).into(profile);
  206.  
  207. }
  208.  
  209. @Override
  210. public void onCancelled(DatabaseError databaseError) {
  211.  
  212. }
  213.  
  214.  
  215. });
  216.  
  217. return view;
  218. }
  219.  
  220. @Override
  221. public View getInfoContents(Marker marker) {
  222. return null;
  223. }
  224. }
  225.  
  226.  
  227. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement