0

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 サービスのバグだったようです。確かに彼らはすぐにそれを修正します!

4

1 に答える 1

1

パブリック バグ トラッカーで説明されているのと同じ問題に遭遇している可能性があります。もしそうなら、修正が入っており、物事はすぐに再び機能するはずです[tm]。

于 2013-09-12T20:44:15.390 に答える