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.
- FCM (Firebase Cloud Messaging) cómo enviar a todos los teléfonos?
- Creación de GoogleApiClient para múltiples actividades
- Cómo obtener el lugar actual mediante Google Place API
- Dependencia apache cliente HTTP en android con API de Google
- AppStateClient loadState que recupera bytes nulos
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
- Autenticación de la cuenta de servicio de Google de reaccionar
- Birmana discurso a la conversión de texto en android?
- Iniciar sesión con G + - ¿por qué el ámbito "plus.login" no funciona solo?
- ¿Cómo obtener la ubicación actual de GPS (latitud-longitud) con la API de Google en la aplicación de Android?
- Cómo guardar datos de aplicaciones de Android en Google Cloud
- La aplicación no está configurada correctamente para utilizar los servicios de juego de Google
- Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
- Error de HttpsURLConnectionImpl.getInputStream () en la plataforma Android
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í.
- AlphaAnimation no funciona en Sandwich de helado
- GC y onTouch causan un error de señal fatal 11 (SIGSEGV) en la aplicación que utiliza ffmpeg a través de ndk