Las 5 mejores puntuaciones de google leaderboard

Mi requisito es obtener las mejores 5 puntuaciones de leaderboard y mostrarlo en mi aplicación.

Hay un método loadTopScores pero muestra las puntuaciones en su propia interfaz de usuario supongo.

mGamesClint.loadTopScores(new OnLeaderboardScoresLoadedListener() { public void onLeaderboardScoresLoaded(int arg0, LeaderboardBuffer arg1, LeaderboardScoreBuffer arg2) { // TODO Auto-generated method stub } }, LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME , LeaderboardVariant.COLLECTION_PUBLIC, 5, true); 

Entonces, ¿hay alguna manera de obtener datos individuales como nombre y puntuación ..?

Nombre 1: Nombre del máximo goleador 1 puntuación 1: puntaje del máximo goleador 1

Nombre 2: Nombre del máximo goleador 2 puntuación 2: puntaje del máximo goleador 2

……y así

Sólo quiero la cadena de nombre y la partitura entero para que pueda utilizarlo en mi juego.

Por favor, sugerirme algunas ideas

Usted está en el camino correcto en su ejemplo, sólo tiene que extraer la información una vez que se carga. Es bastante confuso para conseguir que funcione, pero voy a señalar a esta respuesta de la mía, que muestra cómo hacerlo para los logros – hacerlo para las tablas de clasificación funciona de la misma manera, excepto que va a utilizar las interfaces de leaderboard en lugar de los utilizados para Logros.

Básicamente, accederá a arg2 para obtener los datos, y debería verse algo así:

 mGamesClint.loadTopScores(new OnLeaderboardScoresLoadedListener() { public void onLeaderboardScoresLoaded(int arg0, LeaderboardBuffer arg1, LeaderboardScoreBuffer arg2) { // iterate through the list of returned scores for the leaderboard int size = arg2.getCount(); for ( int i = 0; i < size; i++ ) { LeaderboardScore lbs = arg2.get( i ); // access the leaderboard data int rank = i + 1; // Rank/Position (#1..#2...#n) String name = lbs.getScoreHolderDisplayName(); String scoreStr = lbs.getDisplayScore(); long score = lbs.getRawScore(); // now display or cache these values, or do whatever with them :) } arg2.close(); arg1.close(); } }, LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 5, true); 

Realmente no he probado esta implementación, pero debería funcionar (o al menos mostrarte lo suficiente para poder corregir los errores que pudiera haber cometido).

Sólo recuerde que esto se hará de manera asíncrona, por lo que el contenido del método no se ejecutará de inmediato, sino más bien una vez que las puntuaciones se han cargado.

He aquí cómo lo he conseguido.

 PendingResult<Leaderboards.LoadScoresResult> topScores = Games.Leaderboards.loadTopScores(getApiClient(),LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 1, true); topScores.setResultCallback(new ResultCallback<Leaderboards.LoadScoresResult>() { @Override public void onResult(LoadScoresResult scoreResults) { if(scoreResults != null) { if (scoreResults.getStatus().getStatusCode() == GamesStatusCodes.STATUS_OK) { scoreStringBuilder = new StringBuilder(); LeaderboardScoreBuffer scoreBuffer = scoreResults.getScores(); Iterator<LeaderboardScore> it = scoreBuffer.iterator(); while(it.hasNext()){ LeaderboardScore temp = it.next(); Log.d("PlayGames", "player"+temp.getScoreHolderDisplayName()+" id:"+temp.getRawScore() + " Rank: "+temp.getRank()); scoreStringBuilder.append("|"+temp.getScoreHolderDisplayName()+"*"+temp.getRawScore()); } UnityPlayer.UnitySendMessage(handlerName, "onGetScoreSucceededEventListener", ""); Log.d("PlayGames", "Call Sent for getHighScorewithPlayerNameSuccess ::: "+handlerName); } } }}); 

Puede usarlo como desee. Creé una cadena y la devolví a Unity y luego la analizé. Sin embargo, este código funciona con los últimos servicios de Google Play.

Gracias

Mi solución que funcionó es la siguiente que es para los últimos servicios de juego.

  Games.Leaderboards.loadTopScores(mGamesClint,LEADERBOARD_ID, LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 5).setResultCallback(new ResultCallback<Leaderboards.LoadScoresResult>() { public void onResult(LoadScoresResult arg0) { // TODO Auto-generated method stub int size = arg0.getScores().getCount(); for ( int i = 0; i < 3; i++ ) { LeaderboardScore lbs = arg0.getScores().get(i); String name = lbs.getScoreHolderDisplayName(); String score = lbs.getDisplayScore(); Uri urlimage = lbs.getScoreHolderHiResImageUri(); } } 

Usted puede obtener todos los datos de los usuarios de tablas de clasificación aquí, incluyendo la imagen de alta resolución es decir. foto de perfil. Espero que tengas la idea aquí.

  • Google api gettoken (Context, String, String) ahora está obsoleto
  • Cómo restaurar un proyecto de consola de Google eliminado
  • Uso de las API de Google Transit en android
  • Android convierte la ubicación de CID en Coordenadas
  • ¿Estoy recibiendo estos pasos correctamente para comprobar la suscripción de facturación de un usuario en la aplicación?
  • No se puede establecer el ámbito de acceso de Google en Android
  • No se puede encontrar la imagen del sistema en Emulator en Android Studio con API de Google
  • Obtenga el tiempo de caducidad de la API de suscripción de Android de Google para un token de suscripción.
  • Recuperar datos de usuario de Google desde el servidor por ID token
  • acerca de android google api-streetview
  • Cómo desarrollar una aplicación para Android que utilice Google Calendar API
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.