Android - 如何检查成就是否已解锁

时间:2014-02-04 10:45:50

标签: android google-play-services achievements

我在游戏中有一些增量成就,我想检查其中一个是否已经解锁。我怎么能这样做?

原来我用过这种方法:

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

有人可以帮我这个吗?

由于

1 个答案:

答案 0 :(得分: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());

这将获得当前登录的玩家的成就数据,完成所有成就,当它达到您所关注的成就时,它将检查它是否已解锁。