Google Play ゲーム サービスを使用して Android でゲームを作成しています。GamesClient を使用して他のプレイヤーを獲得したい。loadPlayerCenteredScores . 問題は、プロフィール画像の取得に関係しています。getScoreHolderIconImageUri()を使用し、 ImageManager.loadImageで URI をフェッチします。画像をロードしたリスナーは呼び出されず、ゲーム サービスは呼び出しの 1 秒後に動作を停止します。ゲームは正常に続行され (ゲーム サービスが切断されたかのように)、警告を除いてログにエラーはまったく記録されません。コードは次のとおりです。
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
。
編集私はここに問題を投稿しました。Google Play サービスのバグだったようです。確かに彼らはすぐにそれを修正します!