我正在使用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调用并仅打印出了名称,它们就会被正确打印出来并且没有任何工作停止工作。
我不知道发生了什么,我很绝望。
EDIT 即使我评论这一行:
imMan.loadImage(new ImageLoaded(name),imuri);
错误发生了。 只有当我删除它时它才会停止发生:
Uri imuri=score.getScoreHolderIconImageUri();
太奇怪了!即使我对imuri
没有做任何事情。
编辑我发布了问题here。这似乎是Google Play服务的一个错误。当然他们很快就会解决它!