コード例 #1
0
ファイル: WaypointHelper.java プロジェクト: AmZaf/Osmand
 public AlarmInfo calculateMostImportantAlarm(
     RouteDataObject ro, Location loc, MetricsConstants mc, boolean showCameras) {
   boolean direction = true;
   if (loc.hasBearing()) {
     double diff =
         MapUtils.alignAngleDifference(
             ro.directionRoute(0, true) - loc.getBearing() / (2 * Math.PI));
     direction = Math.abs(diff) < Math.PI;
   }
   float mxspeed = ro.getMaximumSpeed(direction);
   float delta = app.getSettings().SPEED_LIMIT_EXCEED.get() / 3.6f;
   AlarmInfo speedAlarm = createSpeedAlarm(mc, mxspeed, loc, delta);
   if (speedAlarm != null) {
     getVoiceRouter().announceSpeedAlarm();
     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, loc);
         if (info != null) {
           if (info.getType() != AlarmInfoType.SPEED_CAMERA || showCameras) {
             long ms = System.currentTimeMillis();
             if (ms - announcedAlarmTime > 50 * 1000) {
               announcedAlarmTime = ms;
               getVoiceRouter().announceAlarm(info.getType());
             }
             return info;
           }
         }
       }
     }
   }
   return null;
 }