private static String getDirection(final Geopoint position, final Geopoint target, final float direction) {
        int hours;

        if (position.distanceTo(target) < 1e-4) {
            // By convention, distance smaller than ten centimers will be represented as 12 o'clock.
            hours = 12;
        } else {
            final float bearing = position.bearingTo(target);
            final float degrees = AngleUtils.normalize(bearing - direction);

            hours = Math.round(degrees / 30);
            if (hours == 0) {
                hours = 12;
            }
        }

        return getString(hours == 1 ? R.string.tts_one_oclock : R.string.tts_oclock, String.valueOf(hours));
    }
Creates the output to be read by TTS.
<br>
Note: some languages need to read "one hour" as "a hour" (indefinite article). Also, other languages
use the <tt>quantity="1"</tt> plurals rule for other values than 1, such as Slovenian, so it is not
possible to store the literal value to use for 1 in this rule. For this reason, we need to have one
string for the unit quantity ("one meter") and a plurals rule for everything else.
<br>
See <a href="http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html">...</a> for rules
on unit expressions.
main/src/main/java/cgeo/geocaching/speech/TextFactory.java