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.dband 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.dbNow 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-2017 Jeff Epler