Beispiel #1
0
  @SuppressLint("SimpleDateFormat")
  private static void processDiscountResponse(String response, MapActivity mapActivity) {
    try {
      OsmandApplication app = mapActivity.getMyApplication();

      JSONObject obj = new JSONObject(response);
      String message = obj.getString("message");
      String description = obj.getString("description");
      String icon = obj.getString("icon");
      String url = parseUrl(app, obj.getString("url"));
      SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm");
      Date start = df.parse(obj.getString("start"));
      Date end = df.parse(obj.getString("end"));
      int showStartFrequency = obj.getInt("show_start_frequency");
      double showDayFrequency = obj.getDouble("show_day_frequency");
      int maxTotalShow = obj.getInt("max_total_show");
      JSONObject application = obj.getJSONObject("application");

      String appName = app.getPackageName();
      Date date = new Date();
      if (application.has(appName)
          && application.getBoolean(appName)
          && date.after(start)
          && date.before(end)) {

        OsmandSettings settings = app.getSettings();
        int discountId = getDiscountId(message, description, start, end);
        boolean discountChanged = settings.DISCOUNT_ID.get() != discountId;
        if (discountChanged) {
          settings.DISCOUNT_TOTAL_SHOW.set(0);
        }
        if (discountChanged
            || app.getAppInitializer().getNumberOfStarts()
                    - settings.DISCOUNT_SHOW_NUMBER_OF_STARTS.get()
                >= showStartFrequency
            || System.currentTimeMillis() - settings.DISCOUNT_SHOW_DATETIME_MS.get()
                > 1000L * 60 * 60 * 24 * showDayFrequency) {
          if (settings.DISCOUNT_TOTAL_SHOW.get() < maxTotalShow) {
            settings.DISCOUNT_ID.set(discountId);
            settings.DISCOUNT_TOTAL_SHOW.set(settings.DISCOUNT_TOTAL_SHOW.get() + 1);
            settings.DISCOUNT_SHOW_NUMBER_OF_STARTS.set(
                app.getAppInitializer().getNumberOfStarts());
            settings.DISCOUNT_SHOW_DATETIME_MS.set(System.currentTimeMillis());
            showDiscountBanner(mapActivity, message, description, icon, url);
          }
        }
      }

    } catch (Exception e) {
      logError("JSON parsing error: ", e);
    }
  }