Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.yourcomapany.yourpackagename;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.location.Location;
- import android.location.LocationListener;
- import android.location.LocationManager;
- import android.os.Handler;
- import android.os.Looper;
- import android.support.annotation.NonNull;
- import android.support.v4.app.FragmentActivity;
- import android.os.Bundle;
- import com.google.android.gms.auth.api.Auth;
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
- import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
- import com.google.android.gms.auth.api.signin.GoogleSignInResult;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.Scopes;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.common.api.Scope;
- 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.BitmapDescriptorFactory;
- import com.google.android.gms.maps.model.CameraPosition;
- import com.google.android.gms.maps.model.CircleOptions;
- 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.AuthCredential;
- import com.google.firebase.auth.AuthResult;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.GoogleAuthProvider;
- import com.google.firebase.database.DataSnapshot;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.database.ValueEventListener;
- import java.util.WeakHashMap;
- public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
- public static GoogleMap mMap;
- public double latitude;
- public double longitude;
- public static DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
- GoogleSignInOptions gso;
- GoogleApiClient mGoogleApiClient;
- private FirebaseAuth mAuth;
- public static boolean auth = false;
- Runnable updateRunnable;
- WeakHashMap<Marker,String> mMarkers;
- LatLng latLng;
- float[][] friendPositions = new float[50][2];
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_maps);
- mMarkers = new WeakHashMap<>();
- mAuth = FirebaseAuth.getInstance();
- gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
- .requestScopes(new Scope(Scopes.PLUS_LOGIN))
- .requestIdToken(getString(R.string.default_web_client_id))
- .requestEmail()
- .build();
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
- @Override
- public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {}
- })
- .addApi(Auth.GOOGLE_SIGN_IN_API,gso)
- .build();
- Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
- startActivityForResult(signInIntent,1000);
- SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
- .findFragmentById(R.id.map);
- mapFragment.getMapAsync(this);
- LocationManager locationManager = (LocationManager) MapsActivity.this.getSystemService(LOCATION_SERVICE);
- LocationListener locationListener = new LocationListener() {
- @Override
- public void onLocationChanged(Location location) {
- latitude = location.getLatitude();
- longitude = location.getLongitude();
- }
- @Override
- public void onStatusChanged(String s, int i, Bundle bundle) {
- }
- @Override
- public void onProviderEnabled(String s) {
- }
- @Override
- public void onProviderDisabled(String s) {
- }
- };
- if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {}
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
- }else if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
- if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {}
- locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
- }
- final Handler handler = new Handler(Looper.getMainLooper());
- updateRunnable = new Runnable() {
- @Override
- public void run() {
- updateMap();
- handler.postDelayed(this,700);
- }
- };
- }
- public void updateMap() {
- if(auth){
- try {
- mRootRef.child("Player"+playerId).child("Latitude").setValue(latitude);
- mRootRef.child("Player"+playerId).child("Longitude").setValue(longitude);
- }catch (Exception e){e.printStackTrace();}
- }
- latLng = new LatLng(latitude, longitude);
- mMap.clear();
- if(auth && longitude != 0 && latitude != 0){
- for (int i = 0; i < friendPositions.length; i++) {
- try {
- if(friendPositions[i][0] != 1 || friendPositions[i][0] != 0){
- if(friendPositions[i][1] != 1 || friendPositions[i][1] != 0) {
- Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(friendPositions[i][0], friendPositions[i][1])).title("" + mFriends[i]).icon(BitmapDescriptorFactory.fromBitmap(myBitmaps[i])));
- mMarkers.put(marker, mFriends[i]);
- }
- }
- }catch (Exception e){e.printStackTrace();}
- }
- }
- }
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mMap = googleMap;
- mMap.getUiSettings().setAllGesturesEnabled(false);
- mMap.getUiSettings().setZoomGesturesEnabled(true);
- mMap.getUiSettings().setCompassEnabled(false);
- mMap.getUiSettings().setMyLocationButtonEnabled(true);
- mMap.getUiSettings().setMapToolbarEnabled(true);
- updateRunnable.run();
- }
- @Override
- protected void onStart() {
- super.onStart();
- for (int i = 0; i < friendList.length; i++){
- final int finalI = i;
- mRootRef.child("Player"+friendList[i]).child("Latitude").addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- try {
- friendPositions[finalI][0] = (double) dataSnapshot.getValue();
- }catch (Exception e){e.printStackTrace();}
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {}
- });
- mRootRef.child("Player"+friendList[i]).child("Longitude").addValueEventListener(new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- try {
- friendPositions[finalI][1] = (double) dataSnapshot.getValue();
- }catch (Exception e){e.printStackTrace();}
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {}
- });
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if(requestCode == 1000){
- GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
- if(result.isSuccess()){
- GoogleSignInAccount account = result.getSignInAccount();
- firebaseAuthWithGoogle(account);
- }
- }
- }
- private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
- playerId = ""+acct.getId();
- AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
- mAuth.signInWithCredential(credential)
- .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
- @Override
- public void onComplete(@NonNull Task<AuthResult> task) {
- auth = true;
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement