Fun with iBird on android

I can't resist tinkering! So, here are some observations about the iBird application on android (besides that it is awesome and if you watch birds and have a compatible device you should buy it like Ingrid did; I think there's even a version for the apple phone and tablet). If things like 'run adb at the commandline' sounds like gibberish to you, don't bother asking for instructions.

First, there's a lot to be seen in the database, which is a sqlite database stored at /sdcard/iBird_Pro/WingedExplorer.db. You can download it to your desktop computer:

$ adb pull /sdcard/iBird_Pro/WingedExplorer.db
and view / modify it with sqlite3 commandline program:
$ sqlite3 WingedExplorer.db
sqlite> .header on
sqlite> select ObjectID,Family,General from GeneralObject2 where ObjectID=34;
ObjectID|Family|General
34|Bitterns, Herons and Egrets (Ardeidae)|Least Bittern: Very small, …
sqlite> select * from ListenToCalls where ObjectID=34 limit 1;
ListenToCallID|ObjectID|Title|Description|Recordist
2884|34|Least Bittern 1|Song consists of low, muted trills.  |Cornell Lab of Ornithology
sqlite> insert into ListenToCalls VALUES(9999,34,'Example','Example','Example')
you can push this database back to android and restart iBird, but after navigating to the Least Bittern sounds page you can't play the new call since there's no file for it.

And so we come to the interesting part: How can we create a file that is accepted by iBird as a sound file? It turns out to be not too hard. birdenc.py will convert a .mp3 file to an iBird audio file. So you can:

$ cp star-spangled-banner.mp3 S9999.mp3
$ python birdenc.py S9999.mp3 ; # outputs to S9999, removing .mp3 extension
$ adb push S9999 /sdcard/iBird_Pro/perceviabinaries/sounds/S9999
$ adb push WingedExplorer.db /sdcard/iBird_Pro/WingedExplorer.db
Now the new 'example' sound will work just dandy.

(A prose description of the encoding program's operation is as follows: xor each byte of the input file with 0x45, then write the bytes to the output backwards; you'll notice that, as with ROT-13, applying this algorithm a second time returns the original content)

I suspect that it's possible to do a lot more, like add new birds created from scratch, or add your own notes to the descriptions. However, any changes you make are likely to be overwritten by a subsequent update of the database, so don't get too attached to anything you do.

I was tinkering with version 2.0.9 on a Nexus 7 tablet; ymmv.

Entry first conceived on 30 July 2012, 20:08 UTC, last modified on 8 October 2012, 22:55 UTC
Website Copyright © 2004-2024 Jeff Epler