質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

621閲覧

Android Studio)Google Play Gameでリーダーボード落ちる

navesanta

総合スコア198

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/08/13 09:44

編集2018/08/13 09:48

Android Studioを使って作ったゲームにGoogle Play Game Servicesのリーダーボードを設置したのですが
リーダーボードを呼び出すと落ちてしまいます。

状態は
グーグルコンソール管理画面で登録は全部済んでいます。
ゲームを起ち上げた時Google Play Gameの接続は問題なくできています。
リーダーボードを呼び出すstartActivityForResultで落ちます。

ネットで色々調べましたが同じ悩みの方は多数いますが解決案が見つかりません。
分かる方アドバイスよろしくお願いします。

環境)
Android Studio 3.0.1
PC Mac

app/build.gradle

dependencies { compile 'com.google.android.gms:play-services-games:10.0.0' }

QuizActivity.java

public class QuizeActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ private GoogleApiClient mGoogleApiClient; private boolean mIntentInProgress; private int REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quize); //GoogleApiClient初期設定 mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(Games.API) .addScope(Games.SCOPE_GAMES) .build(); @Override protected void onStart(){ super.onStart(); //画面が表示される度に接続する mGoogleApiClient.connect(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE){ mIntentInProgress = false; if (resultCode != RESULT_OK){ return; } if (!mGoogleApiClient.isConnected()){ mGoogleApiClient.reconnect(); } } } //nextボタンを押した時の挙動 public void goNext(View v){ if (quizeNum < quizeList.size()-1){ // if (quizeNum < 5-1){ if (resultNum){ quizeList = new ArrayList<>(); quizeNum++; hazureList = new ArrayList<>(); quizeGet(); judgDisplay(2); numberDisplay(); buttonEnabled(true,true,true,false); buttonDisplay(); descriDisplay(); v.invalidate(); }else { resultDisplay(); if (mGoogleApiClient.isConnected()){ Games.Leaderboards.submitScore(mGoogleApiClient, String.valueOf(R.string.leaderboard_id), quizeNum); switch (quizeNum){ case 50: Games.Achievements.unlock(mGoogleApiClient, String.valueOf(R.string.achievements_id50)); break; } }else { mGoogleApiClient.connect(); ★ここで落ちます。↓            startActivityForResult(Games.Achievements.getAchievementsIntent(mGoogleApiClient), 1); startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mGoogleApiClient, getString(R.string.leaderboard_id)),REQUEST_CODE); } } }else { //ここに最期のメッセージを入れる lastDialog(); SlideManager.saveInt(getApplicationContext(),"highscore", quizeNum + 1); } } @Override public void onConnected(@Nullable Bundle bundle) { //Player情報取得 Player player = Games.Players.getCurrentPlayer(mGoogleApiClient); String displayName = "???"; if (player != null){ displayName = player.getDisplayName(); } Toast.makeText(getApplicationContext(),String.format("%s でログインしています", displayName), Toast.LENGTH_SHORT).show(); } @Override public void onConnectionSuspended(int i) { mGoogleApiClient.connect(); } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { int errorCode = connectionResult.getErrorCode(); if (errorCode == ConnectionResult.SIGN_IN_REQUIRED && !mIntentInProgress && connectionResult.hasResolution()){ try { mIntentInProgress = true; connectionResult.startResolutionForResult(this, 100); }catch (IntentSender.SendIntentException e){ mIntentInProgress = false; mGoogleApiClient.connect(); } } } }

errorメッセージ

FATAL EXCEPTION: main Process: com ○○ PID: 31343 java.lang.IllegalStateException: GoogleApiClient must be connected. at com.google.android.gms.common.internal.zzac.zza(Unknown Source) at com.google.android.gms.games.Games.zzb(Unknown Source) at com.google.android.gms.games.Games.zzi(Unknown Source) at com.google.android.gms.games.internal.api.AchievementsImpl.getAchievementsIntent(Unknown Source) at com.○○.QuizeActivity.goNext(QuizeActivity.java:289) at com.○○.QuizeActivity.onClick(QuizeActivity.java:469)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラー文中に
java.lang.IllegalStateException: GoogleApiClient must be connected.
とあるので、GoogleApiClientに接続がされているかの確認をしてみてください。

接続が出来ていないようならmGoogleApiClient のインスタンス生成が上手く出来ていないかもしれません。

もうご覧になったかもしれませんが、Google Play Game Servicesの実装(リーダーボードの開き方)←ここにあるようにストアに公開するといいかもしれません(もうされてたらすみません)。

投稿2018/08/15 23:57

編集2018/08/16 00:19
syameimaru

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問