10분마다  background로 GPS값을 받아 소켓통신을 하려 합니다.

아래 코드와 같이 AlarmManager를 생성해서

        final Intent intent = new Intent(this, Send_Timer_Packet.class); 
       
        PendingIntent sender = PendingIntent.getBroadcast(ForestActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        long firstTime = SystemClock.elapsedRealtime();
        firstTime += 2 * 1000;         
        AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 60 * 1000 * 10, sender);

AlarmManager를 10분마다 start 하고 LocationListener를 생성하였습니다.

그런데 onLocationChanged(Location location)  부분에서 GPS값을 받는 족족 다 쏴버리더군요...

제가 원한건 10분마다 한번인데..  GPS값이 갱신되면 값을 모두 쏴버립니다.

만약 백그라운드 상태에서 동작하지 않다가 10분후에 제 동작하면 그동안 쌓아논

GPS값도 한꺼번에 서버로 올려버립니다.

좋은 방법이 있는지 고견 듣고자 합니다.

이부분을 어떻게 처리해야 할까요? 백그라운드에서 GPS값을 소켓통신으로 좌표값을 올릴

좋은 알고리즘이 있는지 알고 싶습니다.

아래는 LocationListener 소스입니다.

public class Send_Timer_Packet extends BroadcastReceiver implements LocationListener
{
 
 private LocationManager location1;
 String bestProvider;
 
 public Send_Timer_Packet()
 {
  
 }
 

 @Override
 public void onReceive(Context context, Intent intent)
 {
  // TODO Auto-generated method stub
  this.context = context;
  this.intent = intent;
    
 
  location1 = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
  Criteria criteria = new Criteria();
  criteria.setAccuracy(Criteria.ACCURACY_FINE);
  criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
    
  bestProvider = LocationManager.GPS_PROVIDER;
  
  location1.addGpsStatusListener(gpsListener);
  location1.addNmeaListener(nml);
  location1.requestLocationUpdates(bestProvider, 1000 , 0, Send_Timer_Packet.this);
 }
 
 GpsStatus.Listener gpsListener = new GpsStatus.Listener()
 {
        public void onGpsStatusChanged(int event)
        {
         //Toast.makeText(_context, "GPS_EVENT_FIRST_FIX", Toast.LENGTH_SHORT).show();
       
            if( event == GpsStatus.GPS_EVENT_FIRST_FIX)
            {
             //Toast.makeText(_context, "GPS_EVENT_FIRST_FIX", Toast.LENGTH_SHORT).show();
             intent.putExtra("status","GPS 시작 준비중") ;
            }
            else if(event == GpsStatus.GPS_EVENT_SATELLITE_STATUS)
            {
             intent.putExtra("status","GPS ON") ;
            }
            else if(event == GpsStatus.GPS_EVENT_STARTED)
            {
             //Toast.makeText(_context, "GPS_EVENT_STARTED", Toast.LENGTH_SHORT).show();
             intent.putExtra("status","GPS Started...") ;
            }
            else if(event == GpsStatus.GPS_EVENT_STOPPED)
            {
             //Toast.makeText(_context, "GPS_EVENT_STOPPED", Toast.LENGTH_SHORT).show(); 
             intent.putExtra("status","GPS Stop...") ;
             
            }
        }
 };
 
 GpsStatus.NmeaListener nml = new GpsStatus.NmeaListener()
 {
  
  public void onNmeaReceived(long timestamp, String nmea)
  {
   // TODO Auto-generated method stub
   //Toast.makeText(_context, "nmea: " + nmea, Toast.LENGTH_SHORT).show();
   
  }
 };
 
  
 public void onLocationChanged(Location location)
 {
  // TODO Auto-generated method stub
  Lat = location.getLatitude();
  Lon =location.getLongitude();
  
  
  if(Lat > 0)
  {
     //packet send
       SendCommonPacket si;

       si = new SendCommonPacket(context, "01", Lon, Lat, sPhoneNum);
        si.SendPacket();
  }


  location1.removeGpsStatusListener(gpsListener);
  location1.removeNmeaListener(nml);
  location1.removeUpdates(this);

 }


 public void onProviderDisabled(String provider) {
  // TODO Auto-generated method stub
  
 }


 public void onProviderEnabled(String provider) {
  // TODO Auto-generated method stub
  
 }


 public void onStatusChanged(String provider, int status, Bundle extras)
 {
  // TODO Auto-generated method stub
  intent.putExtra("status",status) ;
  this.context.sendBroadcast(intent) ;
  
  location1.addNmeaListener(new GpsStatus.NmeaListener()
  {
   public void onNmeaReceived(long timestamp, String nmea)
   {
    //Toast.makeText(_context, "NMEA INFO: "+Long.toString(timestamp) + " " + nmea, Toast.LENGTH_LONG).show();
   }
  });
  
 }
 
}