2013-08-28 5 views
1

Я ищу, чтобы найти информацию о проверке местоположения на андроиде (примерно каждые 15 минут) в течение дня и сохранении геокоординированных координат. Это произойдет, когда приложение также находится в фоновом режиме, а не только при запуске приложения на переднем плане. Я не уверен в поисковых терминах, и я не могу найти ничего. Может ли кто-нибудь предложить поисковые запросы, чтобы указать мне в правильном направлении?Android Geolocation (Когда приложение не запущено)

Большое спасибо, Кевин

EDIT:

public class MyService extends Service 
{ 
private static final String TAG = "Location"; 
private LocationManager mLocationManager = null; 
private static final int LOCATION_INTERVAL = 1000; 
private static final float LOCATION_DISTANCE = 10f; 

private class LocationListener implements android.location.LocationListener{ 
Location mLastLocation; 
public LocationListener(String provider) 
{ 
    Log.i(TAG, "LocationListener " + provider); 
    mLastLocation = new Location(provider); 
} 
public void onLocationChanged(Location location) 
{ 
    Log.i(TAG, "onLocationChanged: " + location); 
    mLastLocation.set(location); 
} 
public void onProviderDisabled(String provider) 
{ 
    Log.i(TAG, "onProviderDisabled: " + provider);    
} 

public void onProviderEnabled(String provider) 
{ 
    Log.i(TAG, "onProviderEnabled: " + provider); 
} 

public void onStatusChanged(String provider, int status, Bundle extras) 
{ 
    Log.i(TAG, "onStatusChanged: " + provider); 
} 
} 
LocationListener[] mLocationListeners = new LocationListener[] { 
    new LocationListener(LocationManager.GPS_PROVIDER), 
}; 
@Override 
public IBinder onBind(Intent arg0) 
{ 
return null; 
} 
@Override 
public int onStartCommand(Intent intent, int flags, int startId) 
{ 
Log.i(TAG, "onStartCommand"); 
super.onStartCommand(intent, flags, startId);  
return START_STICKY; 
} 
@Override 
public void onCreate() 
{ 
Log.i(TAG, "onCreate"); 
initializeLocationManager(); 
try { 
    Thread LocThread = new Thread(new Runnable() { 
     public void run() { 
      mLocationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, LOCATION_INTERVAL,  LOCATION_DISTANCE, 
        mLocationListeners[0]); 
      } 
     }); 

     try { 
      LocThread.join(); 
     } catch (InterruptedException e) { 
      Log.i("LocationError","Thread could not join"); 
      e.printStackTrace(); 
     } 

} catch (java.lang.SecurityException ex) { 
    Log.i(TAG, "fail to request location update, ignore", ex); 
} catch (IllegalArgumentException ex) { 
    Log.i(TAG, "gps provider does not exist " + ex.getMessage()); 
} 
} 
@Override 
public void onDestroy() 
{ 
Log.e(TAG, "onDestroy"); 
super.onDestroy(); 
if (mLocationManager != null) { 
    for (int i = 0; i < mLocationListeners.length; i++) { 
     try { 
      mLocationManager.removeUpdates(mLocationListeners[i]); 
     } catch (Exception ex) { 
      Log.i(TAG, "fail to remove location listners, ignore", ex); 
     } 
    } 
} 
} 
private void initializeLocationManager() { 
Log.e(TAG, "initializeLocationManager"); 
if (mLocationManager == null) { 
    Thread LocThread = new Thread(new Runnable() { 
     public void run() { 
      mLocationManager = (LocationManager)  getApplicationContext().getSystemService(Context.LOCATION_SERVICE); 
      } 
     }); 

     try { 
      LocThread.join(); 
     } catch (InterruptedException e) { 
      Log.i("LocationError","Thread could not join"); 
      e.printStackTrace(); 
     } 

} 
} 
} 

ответ

0

Вы должны прочитать о том, как получить Location Information в Android и How to schedule a service periodically using AlarmManager.

+0

Спасибо. Я узнал дополнительную информацию об этом, и я попытался реализовать что-то. Я могу заставить AlarmManager периодически вызывать onStartCommand, но не может заставить службу определения местоположения работать. Я отправлю свой код в исходном вопросе - я был бы признателен, если бы кто-нибудь мог помочь. Благодарю. – Kevin

Смежные вопросы