プロジェクトの作成
それでは、Androidプロジェクトを作成します。
気をつけるところは「Package Name」ぐらいです。「#2 - ゲームサービスのセットアップ(後編)」で入力したパッケージ名にします。
他は好きなように設定します。今回はデフォルトのまま行きます。
ライブラリの追加
前回導入したライブラリを追加します。
先ほど作成したプロジェクトのプロパティを開いて、サイドメニューのAndroidを選択します。
ライブラリーに「google-play-services_lib」と「BaseGameUtils」を追加します。
アプリケーションIDの定義
リソースにアプリケーションIDを定義します。
res->valuesにids.xmlを作成します。
ids.xml
xml version="1.0" encoding="utf-8"
<resources>
<string name="app_id">YOUR_APP_ID</string>
</resources>
YOUR_APP_IDに「#1 - ゲームサービスのセットアップ(前編)」で取得したアプリIDを指定します。
続いて、AndroidManifest.xmlを変更します。
applicationタグの中に以下のmeta-dataタグを追加します。
<meta-data androidname="com.google.android.gms.games.APP_ID"
androidvalue="@string/app_id" />
レイアウトファイル
単純にサインインボタンとサインアウトボタンのみを持つレイアウトにします。
activity_main.xml
<LinearLayout
xmlnsandroid="http://schemas.android.com/apk/res/android"
androidlayout_width="match_parent"
androidlayout_height="match_parent" >
<comgoogleandroidgmscommonSignInButton
androidid="@+id/button_sign_in"
androidlayout_width="wrap_content"
androidlayout_height="wrap_content" />
<Button
androidid="@+id/button_sign_out"
androidlayout_width="wrap_content"
androidlayout_height="wrap_content"
androidtext="Sign Out" />
</LinearLayout>
サインインボタンは「com.google.android.gms.common.SignInButton」を使ったほうが無難なようです。
ブランディングガイドラインというものがあって、使用していいボタンデザインが細かく決められています。
ですので「com.google.android.gms.common.SignInButton」を使っておけば特に気にする必要はなさそうです。
Activityの実装
MainActivity.java
package jp.kforce.samplegame;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.google.android.gms.common.SignInButton;
import com.google.example.games.basegameutils.BaseGameActivity;
public class MainActivity extends BaseGameActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SignInButton buttonSignIn = (SignInButton) findViewById(R.id.button_sign_in);
buttonSignIn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("tag", "buttonSignIn click");
beginUserInitiatedSignIn();
}
});
final Button buttonSignOut = (Button) findViewById(R.id.button_sign_out);
buttonSignOut.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.v("tag", "buttonSignOut click");
signOut();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onSignInSucceeded() {
Log.v("tag", "onSignInSucceeded");
}
@Override
public void onSignInFailed() {
Log.v("tag", "onSignInFailed");
}
}
非常に簡単です。
まずは「BaseGameActivity」を継承します。
サインインボタンがクリックされたら 「beginUserInitiatedSignIn()」をコールしてサインインします。
サインインに成功すると「onSignInSucceeded()」がコールされますので、成功時の処理があれば書きます。
失敗すると「onSignInFailed()」がコールされますので、失敗時の処理があれば書きます。
実装は以上で終わりです。