Amateur radio and embedded systems

MG-log for Android

I released MG-log version 0.6 to Google Play store this week. It is now a quite practical app. I made my own log for Android, because I could not find a QSO logging app that would be easy to use during portable operation and not cluttered. A log for me must be built of several text fields, a decent database backend and some GUI-glue. Logging should be as easy as typing the callsign, report, optionally QTH, some remarks and pressing enter at the end.


MG-log is written in Python and Kivy (not the most popular combination for Android). The database backend is SQLite3.

I wanted the app to be self-explanatory. It consists of four tabs - Log, Settings, Export and About.



The Log tab is the most important one. It has the necessary text fields. After pressing enter the cursor is moved to the next one and if it is the last field, then the QSO is added to the log and cursor reappears in the first field. All fields accept any input except time which must be eiher the hour and minutes (HH:MM), or 'NOW'. The date is internally saved as today's date (there is no way yet to specify the full date). All data is immediately committed to the database (though not fsynced), so it should be safe in case of app crash (I did not experience any :) ).

QSOs are listed below in an ASCII table. The last entry can be edited by simply pressing the Edit button (it must then be saved). For editing only the time is shown in the time filed, day is not changed (it is the day of entering that QSO).

To edit other QSOs than the last one, the cursor has to be placed in the line that contains that QSO and the Edit button has to be pressed. That is a little inconvenient, but in my opinion it is good enough for portable operation, as at home the log will be exported to ADIF and imported into a full-blown tool.


The first element shown is something I call "info field". My intent was to have a simple label that could contain my current callsign, QTH Locator, SOTA number etc. to aid in spelling on the air. The application can also be used in landscape orientation.



The settings tab allows to select a log file out of the database, create a new log (done after enter is pressed). Default value for each field can be specified alongside the "skip" option. Skip option does... well... skips the field, for example: if time is skipped, than after typing callsign and pressing enter the cursor will reappear in the next non-skip field (eg. band). Some fields don't change often during operation (like mode and band), so they can be skipped. After adding a QSO they also will not be reset to default values, so it is enough to mark them as skip, enter several QSO on one band, then type a different band in the Log tab and continue operating, the new band will still be there regardless of the default value.


Another option is the font size. It takes quite a while (\~3s) to change, as all GUI components must be removed and created again. The last function is deletion of a log (with an "unlock" checkbox).



The export tab has a log selector and a single button. All data appears in the Android user's "home" directory. The database itself is a plain SQLite3 file with an easy schema, so it could be used directly by other software.