package com.wigwamlabs.spotify.tts; import java.util.Calendar; public class TimeTtsProvider implements TtsProvider { private long mLastPlayedMs; @Override public String getText() { final long nowMs = System.currentTimeMillis(); if (nowMs - mLastPlayedMs < 5000) { return null; } mLastPlayedMs = nowMs; final Calendar cal = Calendar.getInstance(); final int min = cal.get(Calendar.MINUTE); final boolean past = (min <= 30); final String pastString = (past ? "past" : "to"); if (!past) { cal.add(Calendar.HOUR, 1); } final int hourOfDay = cal.get(Calendar.HOUR_OF_DAY); final String hourString; if (hourOfDay == 12) { hourString = "noon"; } else if (hourOfDay == 0 || hourOfDay == 24) { hourString = "midnight"; } else { hourString = Integer.toString(cal.get(Calendar.HOUR)); } final String time; switch (min) { case 0: if (hourOfDay == 0 || hourOfDay == 12 || hourOfDay == 24) { time = hourString; } else { time = hourString + " o'clock"; } break; case 15: case 45: time = String.format("quarter %s %s", pastString, hourString); break; case 30: time = "half past " + hourString; break; default: final int minsToHour = (past ? min : 60 - min); final String hourPrefix; if (minsToHour == 1) { hourPrefix = " minute"; } else if (minsToHour % 5 != 0) { hourPrefix = " minutes"; } else { hourPrefix = ""; } time = minsToHour + hourPrefix + " " + pastString + " " + hourString; } return "It's " + time; } }