requestLocationUpdates () не работает на реальном смартфоне - PullRequest
0 голосов
/ 12 мая 2019

Я разрабатываю приложение, и мне нужно местоположение пользователя 24/7, даже когда приложение закрыто. Чтобы решить эту проблему, у меня есть AlarmManager, который каждую минуту выполняет код, чтобы получить местоположение

public class LocationTracker extends BroadcastReceiver {

    private int MY_PERMISSIONS_REQUEST_GET_LOCATION;
    private FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
    private DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();

    private FusedLocationProviderClient fusedLocationClient;
    //private LocationManager locationManager = (LocationManager) thi;
    private LocationListener mLocationListener;
    private LocationManager locationManager;

    public static final String ACTION_PROCESS_UPDATE = "com.example.alwaysafe.UPDATE_LOCATION";


    @Override
    public void onReceive(Context context, Intent intent) {
               locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);

        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }


        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10f, new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                Log.i("LISTENER", ".");
                if (location != null) {
                 Log.i("LATITUDE LISTENER", String.valueOf(location.getLatitude()));
                    Log.i("LONGITUDE LISTENER", String.valueOf(location.getLongitude()));
                }
            }

            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
            }

            @Override
            public void onProviderEnabled(String provider) {
            }

            @Override
            public void onProviderDisabled(String provider) {
            }
        });
    }
}

Этот код работает, когда приложение работает на эмуляторе, но когда я пытаюсь запустить его на реальном смартфоне, AlarmManager активируется, но не находит местоположение

1 Ответ

0 голосов
/ 13 июля 2019

Попробуйте изменить эти два аргумента для requestLocationUpdates()

  • Второй аргумент рядом с GPS_PROVIDER означает минимальный интервал времени в миллисекундах между обновлениями местоположения.
  • Третье - минимальное расстояние между обновлениями местоположения, в метрах

Сначала вы можете попытаться установить расстояние от 10 метров до 0, чтобы выйти из этого критерия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...