private String computeLongDescription() { StringBuilder sb = new StringBuilder(); sb.append(ROUTE); sb.append(SPACE); sb.append(mInfo.getShortName()); sb.append(SPACE); sb.append(mInfo.getHeadsign()); sb.append(SPACE); if (mEta < 0) { // Route just arrived or departed long invertEta = -mEta; if (mIsArrival) { sb.append(LongDescription.ARRIVED); } else { sb.append(LongDescription.DEPARTED); } sb.append(SPACE); sb.append(invertEta); sb.append(SPACE); if (invertEta < 2) { sb.append(MINUTE_AGO); } else { sb.append(MINUTES_AGO); } } else if (mEta == 0) { // Route is now arriving/departing if (mIsArrival) { sb.append(IS_NOW_ARRIVING); } else { sb.append(IS_NOW_DEPARTING); } } else { // Route is arriving or departing in future if (mIsArrival) { sb.append(IS_ARRIVING_IN); } else { sb.append(IS_DEPARTING_IN); } sb.append(SPACE); sb.append(mEta); sb.append(SPACE); if (mEta < 2) { sb.append(MINUTE); } else { sb.append(MINUTES); } } // If its not real-time info, add statement about schedule if (!mPredicted) { sb.append(SPACE); sb.append(BASED_ON_SCHEDULE); } return sb.toString(); }