public static void showLeaderboard(final String leaderboardID) {
    if (SonarFrameworkSettings.USE_GOOGLE_PLAY_GAME_SERVICES) {
      ((SonarFrameworkActivity) app)
          .runOnUiThread(
              new Runnable() {

                @Override
                public void run() {
                  if (isSignedIn()) {
                    ((SonarFrameworkActivity) app)
                        .startActivityForResult(
                            googlePlayServices.showLeaderboard(leaderboardID), REQUEST_LEADERBOARD);
                  } else {
                    String message =
                        app.getResources()
                            .getString(
                                app.getResources()
                                    .getIdentifier(
                                        "fail_show_leaderboard", "string", app.getPackageName()));
                    message = message.replace("{leaderboardID}", leaderboardID);
                    displayAlert(message);
                  }
                }
              });
    }
    if (SonarFrameworkSettings.USE_AMAZON_GAMECIRCLES) {
      amazongameCircle.showLeaderboards();
    }
  }
  public static void showLeaderboards() {
    if (SonarFrameworkSettings.USE_GOOGLE_PLAY_GAME_SERVICES) {
      ((SonarFrameworkActivity) app)
          .runOnUiThread(
              new Runnable() {

                @Override
                public void run() {
                  if (isSignedIn()) {
                    ((SonarFrameworkActivity) app)
                        .startActivityForResult(
                            googlePlayServices.showLeaderboards(), REQUEST_LEADERBOARDS);
                  } else {
                    String message =
                        app.getResources()
                            .getString(
                                app.getResources()
                                    .getIdentifier(
                                        "fail_show_leaderboards", "string", app.getPackageName()));
                    displayAlert(message);
                  }
                }
              });
    }
  }
  public static void incrementAchievement(final String achievementID, final int numSteps) {
    if (SonarFrameworkSettings.USE_GOOGLE_PLAY_GAME_SERVICES) {
      ((SonarFrameworkActivity) app)
          .runOnUiThread(
              new Runnable() {

                @Override
                public void run() {
                  if (isSignedIn()) {
                    googlePlayServices.incrementAchievement(achievementID, numSteps);
                  } else {
                    String message =
                        app.getResources()
                            .getString(
                                app.getResources()
                                    .getIdentifier(
                                        "fail_increment_achievement",
                                        "string",
                                        app.getPackageName()));
                    message = message.replace("{achievementID}", achievementID);
                    message = message.replace("{numSteps}", numSteps + "");
                    displayAlert(message);
                  }
                }
              });
    }
  }
  public static void unlockAchievement(final String achievementID) {
    if (SonarFrameworkSettings.USE_GOOGLE_PLAY_GAME_SERVICES) {
      ((SonarFrameworkActivity) app)
          .runOnUiThread(
              new Runnable() {

                @Override
                public void run() {
                  if (isSignedIn()) {
                    Log.d("Google Play Services", "Try to unlock achievement " + achievementID);
                    googlePlayServices.unlockAchivement(achievementID);
                  } else {
                    String message =
                        app.getResources()
                            .getString(
                                app.getResources()
                                    .getIdentifier(
                                        "fail_unlock_achievement", "string", app.getPackageName()));
                    message = message.replace("{achievementID}", achievementID);
                    displayAlert(message);
                  }
                }
              });
    }
  }
  public static void submitScore(final String leaderboardID, final int score) {
    if (SonarFrameworkSettings.USE_GOOGLE_PLAY_GAME_SERVICES) {
      ((SonarFrameworkActivity) app)
          .runOnUiThread(
              new Runnable() {

                @Override
                public void run() {
                  if (isSignedIn()) {
                    Log.d("Google Play Services", "Submit score " + score + " to " + leaderboardID);
                    googlePlayServices.submitScore(leaderboardID, score);

                  } else {
                    String message =
                        app.getResources()
                            .getString(
                                app.getResources()
                                    .getIdentifier(
                                        "fail_submit_score_leaderboard",
                                        "string",
                                        app.getPackageName()));
                    message = message.replace("{score}", score + "");
                    message = message.replace("{leaderboardID}", leaderboardID);
                    displayAlert(message);
                  }
                }
              });
    }
  }
  public static void gameServicesSignIn() {
    if (SonarFrameworkSettings.USE_GOOGLE_PLAY_GAME_SERVICES) {
      ((SonarFrameworkActivity) app)
          .runOnUiThread(
              new Runnable() {

                @Override
                public void run() {
                  if (!isSignedIn()) {
                    googlePlayServices.beginUserInitiatedSignIn();
                  }
                }
              });
    }
  }