Привет всем,
Я пишу приложение, которое использует геолокацию для отслеживания пользователя, когда он идет от точки А к точке Б. Вот мой код:
public class LocationTest extends Activity {
private static final String[] S = { "out of service", "temporarily unavailable", "available" };
ArrayList<Location> list = new ArrayList<Location>();
private TextView output;
private String best;
LocationListener locationListener;
LocationManager mgr;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
output = (TextView) findViewById(R.id.output);
mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
best = mgr.getBestProvider(criteria, true);
log("\nBest provider is: " + best);
locationListener = new LocationListener(){
public void onLocationChanged(Location location){
dumpLocation(location);
list.add(location);
}
public void onStatusChanged(String provider, int status, Bundle extras){
log("\nProvider status changed: " + provider + ", status=" + S[status]);
}
public void onProviderEnabled(String provider){
log("\nProvider enabled: " + provider);
}
public void onProviderDisabled(String provider){
log("\nProvider disabled: " + provider);
}
};
}
@Override
protected void onResume(){
super.onResume();
mgr.requestLocationUpdates(best, 120000, 50, locationListener);
}
@Override
protected void onPause(){
super.onPause();
mgr.removeUpdates(locationListener);
log_gen(list);
}
В настоящее время приложение отображает долготу и широту при получении нового исправления. Однако отслеживание работает только тогда, когда на экране отображается действие, и как только пользователь выходит из приложения, отслеживание прекращается. Я хочу, чтобы мое приложение отслеживало пользователя в фоновом режиме, даже если он выходит из приложения. Например, всякий раз, когда он повторно открывает приложение через несколько минут, все координаты, захваченные в фоновом режиме, должны отображаться на экране.
Из того, что я исследовал до сих пор, есть два способа сделать это: использовать фоновый сервис для отслеживания или использовать
requestLocationUpdates (String provider, long minTime, float minDistance, PendingIntent intent)
в сочетании с BroadcastReceiver
для продолжения получения обновлений местоположения, даже если пользователь выходит из приложения. Если я правильно понимаю, второй метод будет продолжать работать в фоновом режиме. Может кто-нибудь показать мне в коде, как реализовать BroadcastReceiver
с альтернативной версией requestLocationUpdates
Большое спасибо заранее.