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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Google Play

Google Playは、Google社が提供しているAndroid端末向けのデジタルコンテンツ配信サービスです。Google Play Store アプリから、世界中の個人または企業が開発したアプリをダウンロードできます。有料アプリの売り上げは、70%を開発者、30%は通信キャリア等への支払いにあてられます。開発者が登録する場合は、初回のみ25ドルの登録手数料が必要です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2226閲覧

androidで、google play servicesのリーダーボードでスコアを送信すると下記のようなエラーになって落ちる

chibikurosan

総合スコア52

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Google Play

Google Playは、Google社が提供しているAndroid端末向けのデジタルコンテンツ配信サービスです。Google Play Store アプリから、世界中の個人または企業が開発したアプリをダウンロードできます。有料アプリの売り上げは、70%を開発者、30%は通信キャリア等への支払いにあてられます。開発者が登録する場合は、初回のみ25ドルの登録手数料が必要です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/09/28 11:22

編集2016/09/29 07:06

androidでgoogle play serviceのリーダーボード(ランキング)を利用しようとしているのですが、
スコア送信時にエラーで落ちてしまいます。
ログインはできているようです。(よくあるダイアログが表示されます。)

エラー内容

E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalArgumentException: GoogleApiClient parameter is required. at com.google.android.gms.common.internal.zzab.zzb(Unknown Source) at com.google.android.gms.games.Games.zzb(Unknown Source) at com.google.android.gms.games.internal.api.LeaderboardsImpl.submitScore(Unknown Source) at com.google.android.gms.games.internal.api.LeaderboardsImpl.submitScore(Unknown Source)

スコア送信部分

// スコア送信 Games.Leaderboards.submitScore(mGoogleApiClient,"リーダーボードID",5);
dependencies { compile 'com.google.android.gms:play-services-games:9.4.0'

xml:AndroidManifest.xml

1<application 2 android:name=".MyApplication" 3 android:allowBackup="true" 4 android:icon="@mipmap/ic_launcher" 5 android:label="@string/app_name" 6 android:supportsRtl="true" 7 android:theme="@style/AppTheme" > 8 9 <!--google play services--> 10 <meta-data android:name="com.google.android.gms.games.APP_ID" 11 android:value="@string/app_id" /> 12 <meta-data android:name="com.google.android.gms.version" 13 android:value="@integer/google_play_services_version" /> 14

追記

※@yonaさんご指摘ありがとうございます!

初期化部分

http://qiita.com/yamacraft/items/90bfb804538abd404b3e#_reference-ffffee604ed2ee9514f6
を参考にテスト中です。

java:MainActivity.java

1 2 3public class MainActivity extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 4 5 private GoogleApiClient mGoogleApiClient; 6 private boolean mIntentInProgress; 7 8 9 @Override 10 protected void onStart() { 11 super.onStart(); 12 13 mGoogleApiClient.connect(); 14 15 } 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 22 23 // 初期設定 24 // 各種リスナー登録とGoogleAPIで利用するAPIやスコープの設定 25 mGoogleApiClient = new GoogleApiClient.Builder(this) 26 .addConnectionCallbacks(this) 27 .addOnConnectionFailedListener(this) 28 .addApi(Games.API).addScope(Games.SCOPE_GAMES) 29 .build(); 30 31 } 32 33 34 @Override 35 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 36 super.onActivityResult(requestCode, resultCode, data); 37 38 Log.d("apis","apis111" + requestCode + "____" + resultCode + "___" + RESULT_OK); 39 40 if (requestCode == 100) { 41 mIntentInProgress = false; 42 if (resultCode != RESULT_OK) { 43 44 Log.d("apis","apistesttest" + resultCode); 45 // スコア送信 46 Games.Leaderboards.submitScore(mGoogleApiClient,"リーダーボードID",5); 47 return; 48 } 49 50 51 if (!mGoogleApiClient.isConnected()) { 52 53 mGoogleApiClient.reconnect(); 54 }else{ 55 56 57 } 58 } 59 } 60 61 62 @Override 63 public void onConnectionSuspended(int i) { 64 mGoogleApiClient.connect(); 65 } 66 67 @Override 68 public void onConnectionFailed(ConnectionResult connectionResult) { 69 int errorCode = connectionResult.getErrorCode(); 70 71 // サインインしていない場合、サインイン処理を実行する 72 if (errorCode == ConnectionResult.SIGN_IN_REQUIRED 73 && !mIntentInProgress && connectionResult.hasResolution()) { 74 75 Log.d("apis","apis22"); 76 77 try { 78 mIntentInProgress = true; 79 connectionResult.startResolutionForResult(this, 100); 80 } catch (IntentSender.SendIntentException e) { 81 mIntentInProgress = false; 82 mGoogleApiClient.connect(); 83 } 84 } 85 } 86 87

追記

※ご指摘の点検証ログの追記します。

ご指摘の点確認させて頂きました。

・また、アプリ実行時にonConnectionFailedの処理が流れていないかを確認してください。
アプリ起動時に処理が流れております。。

@Override public void onConnectionFailed(ConnectionResult connectionResult) { int errorCode = connectionResult.getErrorCode(); Log.d("apis","errorCode" + errorCode); // サインインしていない場合、サインイン処理を実行する if (errorCode == ConnectionResult.SIGN_IN_REQUIRED && !mIntentInProgress && connectionResult.hasResolution()) { Log.d("apis","a"); try { mIntentInProgress = true; connectionResult.startResolutionForResult(this, 100); } catch (IntentSender.SendIntentException e) { mIntentInProgress = false; mGoogleApiClient.connect(); } } }

デバッグログ
D/apis: errorCode4
D/apis: a

・mGoogleApiClientがnullじゃないか
→ nullじゃないようです。com.google.android.gms.internal.zzpy@42bb5208

・mGoogleApiClient.isConnectedがtrueを返すか。
→ falseを返してしまいました。。

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.d("apis","apis" + requestCode + "____" + resultCode + "__EEEE___" + RESULT_OK + "___ mGoogleApiClient.isConnected()" + mGoogleApiClient.isConnected()); if (requestCode == 100) { mIntentInProgress = false; if (resultCode != RESULT_OK) { // エラーの場合、resultCodeにGamesActivityResultCodes内の値が入っている Log.d("apis","apis" + resultCode + "mGoogleApiClient:" + mGoogleApiClient); // スコア送信 Games.Leaderboards.submitScore(mGoogleApiClient,"リーダーボードID",7); return; }else{ // スコア送信 Games.Leaderboards.submitScore(mGoogleApiClient,"リーダーボードID",5); }

デバッグログ
D/apis: apis100____10004__EEEE___-1___ mGoogleApiClient.isConnected()false
D/apis: apis10004mGoogleApiClient:com.google.android.gms.internal.zzpy@42bb5208

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

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

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

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

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

guest

回答1

0

ベストアンサー

mGoogleApiClientのインスタンス作成ができていない可能性がありそうですね。
mGoogleApiClientをインスタンス化している箇所をみるとなにかわかるかもしれないです。

投稿2016/09/28 11:45

yona

総合スコア18155

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

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

chibikurosan

2016/09/29 05:22

コメントありがとうございます! インスタンス作成部分ですが、下記のようになっております。 まだテスト段階で、下記サイトを参考にさせて頂いてます。 http://qiita.com/yamacraft/items/90bfb804538abd404b3e#_reference-ffffee604ed2ee9514f6 ``` public class MainActivity extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private GoogleApiClient mGoogleApiClient; private boolean mIntentInProgress; @Override protected void onStart() { super.onStart(); mGoogleApiClient.connect(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初期設定 // 各種リスナー登録とGoogleAPIで利用するAPIやスコープの設定 mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(Games.API).addScope(Games.SCOPE_GAMES) .build(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.d("apis","apis111" + requestCode + "____" + resultCode + "___" + RESULT_OK); if (requestCode == 100) { mIntentInProgress = false; if (resultCode != RESULT_OK) { Log.d("apis","apistesttest" + resultCode); // スコア送信 Games.Leaderboards.submitScore(mGoogleApiClient,"リーダーボードID",5); return; } if (!mGoogleApiClient.isConnected()) { mGoogleApiClient.reconnect(); }else{ } } } @Override public void onConnectionSuspended(int i) { mGoogleApiClient.connect(); } @Override public void onConnectionFailed(ConnectionResult connectionResult) { int errorCode = connectionResult.getErrorCode(); // サインインしていない場合、サインイン処理を実行する if (errorCode == ConnectionResult.SIGN_IN_REQUIRED && !mIntentInProgress && connectionResult.hasResolution()) { Log.d("apis","apis22"); try { mIntentInProgress = true; connectionResult.startResolutionForResult(this, 100); } catch (IntentSender.SendIntentException e) { mIntentInProgress = false; mGoogleApiClient.connect(); } } } ```
yona

2016/09/29 05:25

コメントではソースコードのマークダウンは効かないので、質問に追記してください。 たぶん、回答者全員が必要とする情報なので。
chibikurosan

2016/09/29 05:36

ご指摘ありがとうございます! 質問内容に追記させて頂きました!
yona

2016/09/29 06:02

エラーが発生している箇所の直前で下記の2点を確認してください。 ・mGoogleApiClientがnullじゃないか ・mGoogleApiClient.isConnectedがtrueを返すか。 また、アプリ実行時にonConnectionFailedの処理が流れていないかを確認してください。
chibikurosan

2016/09/29 06:27

早速ありがとうございます! 確認させて頂きます!!!
chibikurosan

2016/09/29 07:02

確認させて頂いてところ、いくつか問題ありました。 ・mGoogleApiClientがnullじゃないか → nullじゃないようです。com.google.android.gms.internal.zzpy@42bb5208 ・mGoogleApiClient.isConnectedがtrueを返すか。 → falseを返してしまいました。。 ・また、アプリ実行時にonConnectionFailedの処理が流れていないかを確認してください。 アプリ起動時に処理が流れております。。 意図通りの結果がかえってきておりませんでした。。 もう少し調べて検証してみます。。! 検証したログも説明に記載させて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問