0

我正在使用 Google Play 游戏服务在 android 中编写游戏。我想让其他玩家使用 GamesClient。loadPlayerCenteredScores。问题与获取个人资料图像有关。我使用getScoreHolderIconImageUri()并使用ImageManager.loadImage获取 URI 。我的图像加载侦听器永远不会被调用,并且游戏服务在调用后一秒钟停止工作,游戏正常继续(好像游戏服务已断开连接),除了警告之外,我在日志中没有收到任何错误。这是代码:

public void PlayersLoader(){
    getMainActivity().getGamesClient().loadPlayerCenteredScores(
            new OnLeaderboardScoresLoadedListener(){
                @Override
                public void onLeaderboardScoresLoaded(int statusCode, LeaderboardBuffer leaderboard, LeaderboardScoreBuffer scores){
                    if(statusCode==0){
                        LeaderboardScore score;
                        String playerId=getMainActivity().getGamesClient().getCurrentPlayer().getPlayerId();
                        ImageManager imMan=ImageManager.create(getContext());
                        for(int i=0;i<scores.getCount();i++){
                            score=scores.get(i);
                            String name;
                            if(score.getScoreHolder().getPlayerId().equals(playerId)){
                                name=getResources().getString(R.string.your_best);
                            }
                            else{
                                name=score.getScoreHolderDisplayName();
                            }
                            Uri imuri=score.getScoreHolderIconImageUri();
                            if(imuri!=null){
                                imMan.loadImage(new ImageLoaded(name),imuri);
                            }
                        }
                        System.out.println("Finish");
                        scores.close();
                        leaderboard.close();
                    }
                }
            },getResources().getString(R.string.HighScores),LeaderboardVariant.TIME_SPAN_ALL_TIME,
            LeaderboardVariant.COLLECTION_SOCIAL,10);
}

}
class ImageLoaded implements OnImageLoadedListener{
String mName;
public ImageLoaded(String name){
    mName=new String(name);

    System.out.println(mName);
            //This does get printed out (the names of the players)
}
@Override
public void onImageLoaded(Uri uri, Drawable drawable){

    System.out.println("imageLoaded"); //This never gets printed out

}
}

这是我在日志中得到的:

//Your Best
//Player 1 Name
//Player 2 Name
//Finished
//Games Services has stopped working dialog in phone, when I click OK, this warning shows:
//*** Unexpectedly disconnected. Severing remaining connections.

如果我删除 ImageManager 调用并仅打印出名称,它们会正确打印出来,并且不会停止工作。

我不知道发生了什么,我很绝望。

编辑即使我评论这一行:

imMan.loadImage(new ImageLoaded(name),imuri);

错误发生。只有当我删除它时它才会停止发生:

Uri imuri=score.getScoreHolderIconImageUri(); 太奇怪了!即使我什么都不做imuri

编辑我在这里发布了这个问题。这似乎是谷歌播放服务的一个错误。当然,他们会尽快修复它!

4

1 回答 1

1

听起来您可能遇到了公共错误跟踪器中描述的相同问题。如果是这样,一个修复程序是入站的,并且事情应该会再次运行 Real Soon Now [tm]。

于 2013-09-12T20:44:15.390 回答