I am not sure whether the title of the question is correct but here's my problem. I have an application with Sign up and Log in. The users have different functionalities based on their log in. All the users are led to the MapsActivity.java once they log in. I am differentiating the users there and setting the display accordingly.
What I want is if the user is logged in as xyz@gmail.com, other users shall be able to see the location of that user. It is working but on one phone. When I log in as xyz@gmail.com, the location is stored in the sharedpreferences and is also retrieved when I log in as other user on the same phone.
But when I log in as xyz@gmail.com from another phone and log in as other user from another phone (2 phones - 2 users), the phones aren't connected to each other. The xyz@gmail.com location can't be seen on the other phone.
So what am I doing wrong? How do I run the same application on 2 phones simultaneously?
Hope you understand my problem. Below is my MapsActivity.java to further clarify my problem.
Thank you.
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private LocationManager locationManager;
private LocationListener locationListener;
private Marker mLocationMarker;
public FirebaseUser user;
public Circle circle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
user = FirebaseAuth.getInstance().getCurrentUser();
if(!user.getEmail().equalsIgnoreCase("xyz@gmail.com"))
{
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
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) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
if(circle != null)
{
circle.remove();
}
circle = mMap.addCircle(new CircleOptions().center(latLng).radius(15).strokeColor(Color.BLUE).fillColor(Color.BLUE));
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
Double la = Double.longBitsToDouble(sp.getLong("la", Double.doubleToLongBits(-1)));
Double lo = Double.longBitsToDouble(sp.getLong("lo", Double.doubleToLongBits(-1)));
mLocationMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14), 1500, null);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
else if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
if(circle != null)
{
circle.remove();
}
circle = mMap.addCircle(new CircleOptions().center(latLng).radius(15).strokeColor(Color.BLUE).fillColor(Color.BLUE));
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
Double la = Double.longBitsToDouble(sp.getLong("la", Double.doubleToLongBits(-1)));
Double lo = Double.longBitsToDouble(sp.getLong("lo", Double.doubleToLongBits(-1)));
mLocationMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14), 1500, null);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
}
else
{
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
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) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lon = location.getLongitude();
LatLng lolo = new LatLng(lat, lon);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
mLocationMarker = mMap.addMarker(new MarkerOptions().position(lolo));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(lolo, 14), 1500, null);
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putLong("la", Double.doubleToLongBits(lat));
edit.putLong("lo", Double.doubleToLongBits(lon));
edit.apply();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
else if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lon = location.getLongitude();
LatLng lolo = new LatLng(lat, lon);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
mLocationMarker = mMap.addMarker(new MarkerOptions().position(lolo));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(lolo, 14), 1500, null);
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putLong("la", Double.doubleToLongBits(lat));
edit.putLong("lo", Double.doubleToLongBits(lon));
edit.apply();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
}
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
}