2014-02-04 3 views
2

У меня есть несколько дополнительных достижений в моей игре, и я хочу проверить, если один из них уже разблокирован. Как я могу это сделать?Android - Как проверить, было ли разблокировано достижение успеха

изначально я использовал этот метод:

getGamesClient().incrementAchievement(achievement, increment); 

Затем я попытался использовать это:

mHelper.getGamesClient().incrementAchievementImmediate(new OnAchievementUpdatedListener() 
{ 
    @Override 
    public void onAchievementUpdated(int statusCode, String achievementId) 
    { 
     // TODO: Check if the achievement got unlocked 
    } 
}, achievement, increment); 

Является ли это правильный способ делать то, что я хочу? Есть ли способ лучше?

В моих тестах я получил только два значения statusCode.

Значение: 5 = STATUS_NETWORK_ERROR_OPERATION_DEFERRED

Значение: 0 = STATUS_OK

Может кто-нибудь помочь мне с этим?

Благодаря

ответ

9

Объявите это внутренний класс:

class AchievementClass implements ResultCallback<Achievements.LoadAchievementsResult> { 

    @Override 
    public void onResult(LoadAchievementsResult arg0) { 
     Achievement ach; 
     AchievementBuffer aBuffer = arg0.getAchievements(); 
     Iterator<Achievement> aIterator = aBuffer.iterator(); 

     while (aIterator.hasNext()) { 
      ach = aIterator.next(); 
      if ("The Achievement Id you are checking".equals(ach.getAchievementId())) { 
       if (ach.getState() == Achievement.STATE_UNLOCKED) { 
        // it is unlocked 
       } else { 
        //it is not unlocked 
       } 
       aBuffer.close(); 
       break; 
      } 
     } 
    }  
} 

и использовать его так:

Games.Achievements.load(ApiClient, false).setResultCallback(new AchievementClass()); 

Это позволит получить достижение данных для текущего подписанного в плеером, через все достижения, и когда он достигнет вашего достижения, он проверяет, не является ли он рунец.

+0

Как это работает? Синхронно или асинхронно? –

 Смежные вопросы

  • Нет связанных вопросов^_^