我正在嘗試在Android中使用玩遊戲服務開發一個簡單的基於回合的多人遊戲。我遵循文檔中的所有步驟:https://developers.google.com/games/services/android/turnbasedMultiplayer#implementing_auto-matching唯一的區別是我不希望我的玩家能夠邀請我希望它成爲純自動匹配的朋友。這場比賽只有2名球員,並且只能開始一次2名球員的比賽。我的問題是它似乎不是自動匹配的球員。我在2臺設備上運行應用程序,他們似乎從來沒有找到彼此......他們都連接到Play遊戲服務的罰款,但他們都只是創造一個新的遊戲。這是我連接GoogleApiClient後的代碼。Android Google Play遊戲服務基於回合的多人遊戲不自動匹配
@Override
public void onConnected(Bundle bundle) {
pDialog.dismiss();
Toast.makeText(this, "Connected", Toast.LENGTH_LONG).show();
showDialog("Matching players");
Bundle autoMatchCriteria = RoomConfig.createAutoMatchCriteria(1,1,0);
TurnBasedMatchConfig tbmc=TurnBasedMatchConfig.builder().
setAutoMatchCriteria(autoMatchCriteria).build();
Games.TurnBasedMultiplayer.createMatch(mGoogleApiClient,
tbmc).setResultCallback(new MatchInitiatedCallback(this));
}
這裏是我的MatchInitiatedCallback
public class MatchInitiatedCallback implements
ResultCallback<TurnBasedMultiplayer.InitiateMatchResult> {
private Context context;
public MatchInitiatedCallback(Context c) {
context = c;
}
@Override
public void onResult(TurnBasedMultiplayer.InitiateMatchResult
initiateMatchResult) {
pDialog.dismiss();
if(!initiateMatchResult.getStatus().isSuccess()) {
Toast.makeText(context, "ERROR: " +
initiateMatchResult.getStatus().getStatusCode(), Toast.LENGTH_LONG).show();
return;
}
TurnBasedMatch match = initiateMatchResult.getMatch();
if(match.getData() != null) {
Toast.makeText(context, "Player2 " + match.getData().toString(),
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "Player1", Toast.LENGTH_LONG).show();
initGame(match);
}
}
}
兩款器件均表明說TOAST: 「PLAYER1」 並調用initGame(比賽)方法,該方法是在這裏:
public void initGame(TurnBasedMatch match) {
String initialise = "initialised";
Games.TurnBasedMultiplayer.takeTurn(mGoogleApiClient,
match.getMatchId(),initialise.getBytes(Charset.forName("UTF-16")),
match.getParticipantId(Games.Players.getCurrentPlayerId(mGoogleApiClient))).
setResultCallback(this);
}
@Override
public void onResult(TurnBasedMultiplayer.UpdateMatchResult
updateMatchResult) {
if(updateMatchResult.getMatch().getStatus() ==
TurnBasedMatch.MATCH_STATUS_AUTO_MATCHING) {
Toast.makeText(this, "Still automatching",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Not automatching", Toast.LENGTH_LONG).show();
}
}
而且一旦他們都顯示TOAST:「仍然自動匹配」 我做錯了什麼。爲什麼這些設備不能自動匹配。我是否跳過某個步驟?請幫忙。