Archive for May, 2010

Offline Logger 0.3.1 patch

Fixed a force close for non-english/swedish devices.


Offline Logger v0.3 released!

Go fetch/upgrade it at market.

Changelog (might not be 100% complete):
* User configurable to turn on/off network fallback positioning
* Updated UI, now shows accuracy, amount of satellites used for fix, etc.
* Saves max/min speed, avarage speed, total distance to the GPX log as extension (faster loading of history details)
* Updated/more info in historydetail
* Updated buttons in historydetail
* Possible to share last known location when having an active logging session
* Begun to translate to Swedish (not complete so it’ll be mixed swe/eng now)
* History list is now sorted in chronological order with most recent on top.
* Minor graphical change to history list

Search for Offline Logger on Android market.

1 Comment

Progress on Offline Logger 0.3

Hi everyone, I just wanted to let you know that I’m actually working pretty hard on getting the 0.3 version ready as soon as possible. It’s about to become a really major update so I really want to test things through before releasing the update. It has lots of new nice features and UI improvements.

It has a few more goodies except the previous published feature list, but they will remain a secret for now 🙂 I can just assure you that this app will soon become your favourite logger !

No Comments

Lightweight JSONP javascript library

This can now be found at github:

Are you one of those that include jQuery or any other library only to be able to use some JSONP in your website? In that case this might be the code for you to read and try to understand. I won’t post any detailed explainations right now but feel free to comment if you wonder anything. I’ve also included a minified version in the bottom.

Update (2012-04-10) Fixed issues/suggestions found by Zach, Gabriel and Pamela (see comments). These updates and fixes can be found on github

Update (2011-06-08) Fixed delete/setting to null as pointed out by Bryan Smith (see comment)

Update (2011-04-29) Added encodeURIComponent as suggested by yched (see comment)

Update: Fixed scoping problem as found by Damon Oehlman (see comment)

Feel free to use this script for anything that you like, commercial or non-commercial, but please keep the comment and link to this site.

Oh and by the way, the script has been tested successfully in the following browsers:
Chrome 4,5,6
Firefox 3.x
Internet Explorer 6,7,8
Opera 9.6+10
Androids webkit-based browser
Symbian S60 browser

First an example of how to use it, to show the simplicity, then the actual code.

JSONP.get( 'someUrl.php', {param1:'123', param2:'456'}, function(data){
        //do something with data, which is the JSON object you output from someUrl.php
        //into the callback javascript method specified by the "callback" value in the querystring

A simple example of the someUrl.php (please observe this example does not include any security checks what so ever, just to show the principle):

$myData = fetchSomeData();
echo $_GET['callback'];
echo "(";
echo json_encode($myData);
echo ")";

See github link above for current code and examples, the code below is old

The actual code for the Lightweight JSONP functionality.
Around 1.1kb without gzip.

//Lightweight JSONP fetcher -
var JSONP = (function(){
	var counter = 0, head, query, key, window = this;
	function load(url) {
		var script = document.createElement('script'),
			done = false;
		script.src = url;
		script.async = true;
		script.onload = script.onreadystatechange = function() {
			if ( !done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") ) {
				done = true;
				script.onload = script.onreadystatechange = null;
				if ( script && script.parentNode ) {
					script.parentNode.removeChild( script );
		if ( !head ) {
			head = document.getElementsByTagName('head')[0];
		head.appendChild( script );
	function jsonp(url, params, callback) {
		query = "?";
		params = params || {};
		for ( key in params ) {
			if ( params.hasOwnProperty(key) ) {
				query += encodeURIComponent(key) + "=" + encodeURIComponent(params[key]) + "&";
		var jsonp = "json" + (++counter);
		window[ jsonp ] = function(data){
			try {
				delete window[ jsonp ];
			} catch (e) {}
			window[ jsonp ] = null;
		load(url + query + "callback=" + jsonp);
		return jsonp;
	return {

, ,


Offline Logger 0.25 is here

There were some major UI improvements made which I felt couldn’t wait for 0.3, so here’s the list for what has been done in 0.25

  • Confirmation when deleting history logs (prevents deletion by mistake)
  • Better graphics/UI in the History log.
  • Detailed information about a log ( amount of points, distance traveled, delete/share buttons)
  • Better UI and more information to the main logger view
  • User configuration: Enable/disable autostart logger when application starts

1 Comment

Upcoming features for Offline Logger v0.3

I thought I’d share the feature list / change log for the upcoming 0.3 update for Offline Logger.

Feel free to post any comments regarding it.

  • Confirmation when deleting history logs (prevents deletion by mistake)
  • Better graphics/UI in the History log.
  • Detailed information about a log (duration, amount of points, avarage logging interval, max/min speed, buttons to delete/share)
  • Add a help icon/popup to the menu to show some basic info.
  • Better UI and more information to the main logger view
  • Display a warning if GPS is disabled when starting the logger.
  • User configuration: Enable/disable autostart logger when application starts
  • User configuration: Enable/disable celltower position failover
  • User configuration: 12h/24h selectable time formatting in UI


Offline Logger v0.2 + some battery stats

A bug was found. An embarassing one, but now it’s fixed and a new update is available on market!

The bug caused the history log-files not to be saved, which made the applications main-task to fail, but the fix was easy and now it’s working again. The reason was that the application tries to access the memory card to verify that it’s available and writable before starting a log (so you don’t log for 5 hours and then not possible to store the coordinates), but it created a file with the same name as the directory it tries to save the log-files to later, which made the directory creation to fail. A file and a directory with the same name cannot exist in the filesystem.

Many excuses to the affected people (probably <5 people since the application is new :)) Battery statistics

I’ve been testing the application with 5seconds interval on a fully charged HTC Hero running Android 1.5. The results were pretty impressive, allthough I was running without a SIM-card and with wifi off (like airplane mode). It ran for about 12 hours, and then I turned it off manually, but it will run for an estimated 15 hours @ 5sec interval before battery is fully drained.

No Comments

Offline Logger v0.1 released

Offline Logger is now officially released on Android Market!

This is a FREE GPS Logger which does not use data/internet for anything. Good battery features such as disconnects the GPS for intervals on 30seconds or higher. Fallback to cell tower positioning if a real GPS Fix is not available within 10 seconds.

List of features:
* User changable interval
* Show history, delete or share logs
* Background service with wake-lock (works when display/phone is idle)
* Tested on Hero (Android 1.5) and Nexus One (2.1) with good results
* Fallback to celltower position when a real gps fix is not available within ~10seconds
* Information on amount of points in current history, and last update in UI

First release is available in English only, but in all countries.

Coming features:
* Homescreen widget for quick-starting/stopping a log
* Improved UI
* Sorting abilities in history
* View route on google maps (will require data/internet to load map)
* More configurations

Search for “Offline Logger” in android market, or scan this barcode to get started:
Search for Offline Logger on Android market.