/** handles time based refreshing of tokens - when they have a duration */
  void handleTokenRefresh(JSONObject jsonToken) {
    int duration = 0;

    try {
      duration = jsonToken.getInt("duration");
    } catch (JSONException e) {
      e.printStackTrace();
    }

    if (duration > 0) {
      if (mRefreshTokenRunnable != null) {
        mRefreshTokenRunnable.cancel();
      }
      mRefreshTokenRunnable =
          new CancelableRunnable() {
            /** keeps track if this is still to be run, or has been cancelled */
            private volatile boolean mIsActive = true;

            @Override
            public void run() {
              if (!mIsActive) {
                return;
              }

              triggerRequestVideoToken();
            }

            @Override
            public void cancel() {
              mIsActive = false;
            }
          };
      long refreshTime = duration - 10;
      if (refreshTime < 1) {
        refreshTime = 1;
      }
      sVcHandler.postDelayed(mRefreshTokenRunnable, refreshTime * 1000L);
    }
  }
Example #2
0
  public static void showToast(
      final Context context, final Handler handler, final CharSequence text, boolean cancel) {
    if (showToastRunnable == null) {
      showToastRunnable =
          new CancelableRunnable() {
            public void run() {
              if (cancel && toast != null) {
                toast.cancel();
              }

              if (cancel || toast == null) {
                toastLayout =
                    ((LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE))
                        .inflate(R.layout.custom_toast, null);
                toastTextView = (TextView) toastLayout.findViewById(R.id.toasttext);
                if (android.os.Build.VERSION.SDK_INT > 10 || toast == null) {
                  toast = new Toast(context);
                }
                toastDefaultYOffset = toast.getYOffset();
                toast.setView(toastLayout);
              }

              switch (toastDuration) {
                case 3500:
                  toast.setDuration(Toast.LENGTH_LONG);
                  break;
                case 7000:
                  toast.setDuration(Toast.LENGTH_LONG);

                  if (showOnlyToastRunnable == null) {
                    showOnlyToastRunnable =
                        new Runnable() {
                          public void run() {
                            toast.show();
                          }
                        };
                  }

                  handler.postDelayed(showOnlyToastRunnable, 3250);
                  break;
                default:
                  toast.setDuration(Toast.LENGTH_SHORT);
              }

              switch (toastPosition) {
                case 1:
                  toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, toastYOffset);
                  break;
                case 2:
                  toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 0, toastYOffset);
                  break;
                default:
                  toast.setGravity(
                      Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM, 0, toastDefaultYOffset);
                  break;
              }

              toastTextView.setText(android.text.Html.fromHtml(toastText.toString()));
              toast.show();
            }
          };
    }

    showToastRunnable.cancel = cancel;
    toastText = text;
    handler.post(showToastRunnable);
  }