public AlarmInfo calculateMostImportantAlarm( RouteDataObject ro, Location loc, MetricsConstants mc, boolean showCameras) { float mxspeed = ro.getMaximumSpeed(); AlarmInfo speedAlarm = createSpeedAlarm(mc, mxspeed, loc); if (speedAlarm != null) { voiceRouter.announceAlarm(speedAlarm); return speedAlarm; } for (int i = 0; i < ro.getPointsLength(); i++) { int[] pointTypes = ro.getPointTypes(i); RouteRegion reg = ro.region; if (pointTypes != null) { for (int r = 0; r < pointTypes.length; r++) { RouteTypeRule typeRule = reg.quickGetEncodingRule(pointTypes[r]); AlarmInfo info = AlarmInfo.createAlarmInfo(typeRule, 0); if (info != null) { if (info.getType() != AlarmInfoType.SPEED_CAMERA || showCameras) { voiceRouter.announceAlarm(info); return info; } } } } } return null; }