Rotina de Atualização com tempo gps (URGENTE)

Olá Pessoal :lol: sou iniciante na programação android estou tendo um problema em construir uma rotina onde a cada 3 minutos uma nova posição deverá ser gravada junto com a data e hora e id referente ao cadastro do usuario.

Usei o TimerTask para crianção da rotina (gravar de 3 em 3 min) o unico problema e que se o GPS mudar de posição “N” vezes, “N” vezes será capturada a posição, alguem pode me ajudar a fazer com que a cada 3 min ele apenas capture uma unica posição sendo ela a posição atual.

Ficarei Grata se alguem me ajuda vou postar o codigo aqui para vcs

Classe GPSActivity

[code]package br.com.android;

import java.io.DataOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;

public class GPSActivity extends Activity {

LocationManager manager;
Location Loc_Atual;
TextView txtLatitude;
TextView txtLongitude;
TextView txtuser;
String VB;
DataOutputStream os;
String user="123@";
String data1 = "dd/MM/yyyy";  
String data,hora,hora1;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); // chama tela layout 
    
    txtLatitude = (TextView) findViewById(R.id.txtLatitude);
    txtLongitude = (TextView) findViewById(R.id.txtLongitude);
    txtuser = (TextView) findViewById(R.id.txtuser);
    manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
}

@Override
protected void onResume() {
	super.onResume();
	Loc_Atual = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
	
	atualizacao();
	//Registra as atualizações
	manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, listener);
}

private void atualizacao() {
	if(Loc_Atual == null){
		txtuser.setText("Determinando sua localização...");
	} else {
		
		Double latPoint =  Loc_Atual.getLatitude();
    	Double lngPoint =  Loc_Atual.getLongitude();

        txtLatitude.setText(latPoint.toString());
        txtLongitude.setText(lngPoint.toString());
        txtuser.setText(user.toString());
        
        // gerador que vai conter a Data atual 
        
        java.util.Date agora = new java.util.Date();  
        SimpleDateFormat formata = new SimpleDateFormat(data1);  
        data= formata.format(agora);   
              
        // gerador que vai conter a hora atual 
                         
        StringBuilder sb = new StringBuilder();
        GregorianCalendar d = new GregorianCalendar(); 
        sb.append( d.get( GregorianCalendar.HOUR_OF_DAY ) );
        sb.append( ":" );  
        sb.append( d.get( GregorianCalendar.MINUTE ) );     
        hora= sb.toString();
        
        // Variavel que será enviada para o VB via socket TCP/IP
        
        VB = "/POS"+lngPoint+","+latPoint+","+data +","+ hora+","+user;

	}
}


public void grava()
{
	/*try {
		// Envia dados para o VB atraves do Socket
		os = new DataOutputStream(ClientActivity.socket.getOutputStream());
		os.writeBytes(VB);
		System.out.println(VB);
		
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} */

	System.out.println(VB); // só ira imprimir pois não mandei minha parte de servidor para envia os dados no codigo a cima.
		
}


//Manipula as chamadas dos eventos de localização

private LocationListener listener = new LocationListener() {

	@Override
	public void onLocationChanged(Location location) {
		Loc_Atual = location;
		atualizacao();					
		// rotina para atualizar de 3 em 3 mintos que estou tendo problema
		Timer timer = new Timer();
    		    	timer.scheduleAtFixedRate(new TimerTask(){

                    public void run() { 
                   grava();
                    	}
			
                },3*60000,3*60000);  
				
	}

	@Override
	public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}

	@Override
	public void onProviderEnabled(String arg0) {}

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

@Override
protected void onPause() {
	super.onPause();
	manager.removeUpdates(listener);
}

}[/code]

Main.xml

[code]<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginTop="35dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="40dp"
        android:text="Usuario: "
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#0000CD" />

    <TextView
        android:id="@+id/txtuser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:layout_weight="0.67"
       
        android:textColor="#E0FFFF" />
</LinearLayout>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/lblLatitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60dp"
        android:layout_marginTop="20dp"
        android:text="Latitude: "
        android:textColor="#8DB6CD" />

    <TextView
        android:id="@+id/txtLatitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"

        android:textColor="#E0FFFF" />
</LinearLayout>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/lblLongitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60dp"
        android:layout_marginTop="20dp"
        android:text="Longitude: "
        android:textColor="#8DB6CD" />

    <TextView
        android:id="@+id/txtLongitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="20dp"
       
        android:textColor="#E0FFFF" />
</LinearLayout>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

</LinearLayout>

[/code]