public void handleNotificationStop(String notificationId) {
    // Log.i(TAG, "HANDLE notification STOP: " + notificationId);
    if (lastNotification != null && lastNotification.getId().equals(notificationId)) {

      stopNotificationExtender();

      OsswService osswService = OsswService.getInstance();
      if (osswService != null) {
        // Log.i(TAG, "Close notification: " + lastNotification.getId() + ", " +
        // lastNotification.getExternalId());
        osswService.closeAlertNotification(lastNotification.getExternalId());
      }

      lastNotification = null;
    }
  }
  public void handleNotificationStart(Notification notification) {
    Log.i(TAG, "HANDLE notification START: " + notification);
    if (!(notification instanceof SimpleNotification)) {
      Log.i(TAG, "HANDLE notification START - SKIP");
      return;
    }

    boolean update =
        lastNotification != null
            && lastNotification.getExternalId() == notification.getExternalId();

    if (lastNotification != null && !update) {
      Log.i(TAG, "SKIP, other alert notification in progress");
      return;
    }
    lastNotification = notification;

    OsswService osswBleService = OsswService.getInstance();
    if (osswBleService != null) {
      SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(osswBleService);
      boolean vibrate = sharedPref.getBoolean(SettingsActivity.ALERT_VIBRATION_PREFIX, true);
      int vibrationPattern = 0;
      int vibrationLength = 0;
      if (vibrate) {
        Calendar c = Calendar.getInstance();
        int minutes = 60 * c.get(Calendar.HOUR_OF_DAY) + c.get(Calendar.MINUTE);
        String active =
            sharedPref.getString(SettingsActivity.ALERT_VIBRATION_PREFIX + "_time", "0:0-23:59");
        int dash = active.indexOf('-');
        int from_time = NotificationListener.getMinutes(active.substring(0, dash));
        int till_time = NotificationListener.getMinutes(active.substring(dash + 1));
        if ((from_time <= minutes && minutes <= till_time)
            || (from_time >= till_time) && (from_time <= minutes || minutes <= till_time)) {
          vibrationPattern =
              VibrationPatternBuilder.getAlertVibrationPattern(
                  osswBleService.getApplicationContext());
        }
      }
      NotificationMessageBuilder builder =
          new AlertNotificationMessageBuilder(
              notification.getCategory(),
              ((SimpleNotification) notification).getTitle(),
              ((SimpleNotification) notification).getText(),
              notification.getOperations());
      osswBleService.uploadNotification(
          notification.getExternalId(),
          notification.getType(),
          builder.build(),
          vibrationPattern,
          7000,
          new AlertNotificationFunctionHandler(notification, osswBleService));

      if (!update) {
        Log.i(
            TAG,
            "Start notification: "
                + lastNotification.getId()
                + ", "
                + lastNotification.getExternalId());
        startNotificationExtender(notification.getExternalId(), osswBleService);
      } else {
        Log.i(
            TAG,
            "Update notification: "
                + lastNotification.getId()
                + ", "
                + lastNotification.getExternalId());
      }
    }
  }
 @Override
 public void run() {
   // Log.i(TAG, "Extend notification: " + lastNotification.getId() + ", " +
   // lastNotification.getExternalId());
   osswBleService.extendAlertNotification(notificationId, 7000);
 }