如何在多部手机上运行相同的Android应用程序?

时间:2017-07-05 03:42:24

标签: java android location sharedpreferences

我不确定问题的标题是否正确,但这是我的问题。 我有一个注册和登录的应用程序。用户根据他们的登录功能有不同的功能。所有用户登录后都会被引导到MapsActivity.java。我在那里区分用户并相应地设置显示。

我想要的是如果用户以xyz@gmail.com登录,其他用户将能够看到该用户的位置。它正在工作,但在一部手机上。当我以xyz@gmail.com身份登录时,该位置存储在共享首选项中,并且当我以同一手机上的其他用户身份登录时也会检索该位置。

但是当我从另一部手机登录为xyz@gmail.com并从另一部手机(2部手机 - 2个用户)以其他用户身份登录时,手机之间没有连接。 xyz@gmail.com位置无法在另一部手机上看到。

那么我做错了什么?如何同时在2部手机上运行相同的应用程序?

希望你理解我的问题。下面是我的MapsActivity.java,以进一步澄清我的问题。

谢谢。

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;

    }
}

0 个答案:

没有答案