java.util.concurrent.Executors

盛り込んでみました。動作確認は帰途にて。
Activity の実装が以下。

package jp.shuri.yamanetoshi.GMapSample1;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;

public class GMapSample extends Activity implements LocationListener, Runnable {

	class JsObj {
		private Location loc;
		 
		public void getLastKnownLocation(Location location) {
			loc = location;
			Log.i("JsObj", "Latitude is " + getLat());
			Log.i("JsObj", "Longitude is " + getLng());
		}
		
		public double getLat() {
			return loc.getLatitude();
			//return 26.19;
		}

		public double getLng() {
			return loc.getLongitude();
			//return 127.67;
		}
	}

	private WebView webView;
	private JsObj jo;
	private LocationManager lm;
	private final int TIMER_PERIOD = 500;
	private Boolean mRunning = false;
	
	private ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        webView = new WebView(this);
        webView.getSettings().setJavaScriptEnabled(true);
        
        jo = new JsObj();
        
        lm = (LocationManager)getSystemService(LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this);
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        jo.getLastKnownLocation(location);
        
        webView.addJavascriptInterface(jo, "roid");
        webView.loadUrl("file:///android_asset/index.html");
        setContentView(webView);

        mRunning = true;
        scheduler.scheduleAtFixedRate(this, TIMER_PERIOD, TIMER_PERIOD, TimeUnit.MILLISECONDS);
    }
	
	@Override
	protected void onDestroy() {
		mRunning = false;
		scheduler.shutdown();
		super.onDestroy();
	}

    public void onLocationChanged(Location location) {
		// TODO Auto-generated method stub
		
	}

	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
		
	}

	public void run() {
		if(!mRunning) return;
		
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        jo.getLastKnownLocation(location);

		webView.loadUrl("javascript:reloadFunction()");
	}
}

あと、assets/index.html が以下。

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

  var map;
  var marker;
  
  function setMarker(location) {
    marker = new google.maps.Marker({
      position: location,
      map: map
    });
    marker.setMap(map);
  }
  
  function initialize() {
    var latlng = new google.maps.LatLng(roid.getLat(), roid.getLng());
    var myOptions = {
      zoom: 16,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    setMarker(latlng);
  }
  
  function reloadFunction() {
    marker.setMap(null);
    var latlng = new google.maps.LatLng(roid.getLat(), roid.getLng());
    map.setCenter(latlng);
    setMarker(latlng);    
  }

</script>
</head>
<body onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

別途 GitHub 方面に放り込む方向ス。

これって

onPause() あたりで scheduler.cancel() 発行した方が良さげです。