最近の更新

2014年9月23日火曜日

Google Play Game Servicesで初期非表示の実績を使用する方法

【目的】
AndroidでGoogle Play Game Servicesで初期非表示の実績を使用します。



【準備】
1.「Google Play services SDKをワークスペースにインポートする方法」で「Google Play services SDK」をワークスペースにインポートしておきます。
2.「Google Play Game ServicesのBaseGameUtilsライブラリをワークスペースにインポートする方法」の手順で、BaseGameUtilsライブラリをワークスペースにインポートしておきます。
3.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。
4.「Google Play Developer Consoleのゲームサービスにテスト用IDを追加する方法」の手順で、テスト用のGoogleIDを追加しておきます。
5.「Google Play Developer Consoleのゲームサービスにアプリをリンクする方法」の手順で、ゲームサービスにアプリをリンクしておきます。
※アプリのパッケージ名は「jp.blogspot.foolprogrammer.googleplaygameservicessample01_006」で行いました。
6.「Google Play Game Servicesのゲームサービスに初期非表示の実績を追加する方法」の手順で、初期非表示の実績を追加しておきます。



【手順1】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの作成手順で、「GooglePlayGameServicesSample01-006-AchievementClosed」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
※他の項目は任意。
項目名 項目に設定する値
アプリケーション名(Application Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_006
プロジェクト名(Project Name) GooglePlayGameServicesSample01-006-AchievementClosed
パッケージ名(Package Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_006
Build SDK API 10
Minimum Required SDK API 10

2.「Google Play services SDKをライブラリ参照する方法」の手順で、Google Play services SDKをライブラリ設定する。
3.「Google Play Game ServicesのBaseGameUtilsをライブラリ参照する方法」の手順で、BaseGameUtilsをライブラリ設定する。



【手順2】
1.「AndroidManifest.xml」は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.foolprogrammer.googleplaygameservicessample01_006"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="googleplaygameservicessample"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="jp.blogspot.foolprogrammer.googleplaygameservicessample01_006.MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順3】
1.「res/layout/activity_main.xml」は以下の通り。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/sign_out_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ログアウト"
        android:textSize="12sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/clear_closed_achievement_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="初期非表示の実績クリア"
            android:textSize="12sp" />
    </LinearLayout>

    <Button
        android:id="@+id/open_achievement_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="実績を開く"
        android:textSize="12sp" />

</LinearLayout>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順4】
1.「src/jp/blogspot/foolprogrammer/googleplaygameservicessample01_006/MainActivity.java」は以下の通り。
package jp.blogspot.foolprogrammer.googleplaygameservicessample01_006;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.google.android.gms.games.Games;
import com.google.android.gms.games.Player;
import com.google.example.games.basegameutils.BaseGameActivity;

public class MainActivity extends BaseGameActivity implements OnClickListener {
    private static final int REQUEST_CODE_UNUSED = 10001;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.sign_in_button).setOnClickListener(this);
        findViewById(R.id.sign_out_button).setOnClickListener(this);
        findViewById(R.id.clear_closed_achievement_button).setOnClickListener(this);
        findViewById(R.id.open_achievement_button).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.sign_in_button:
                beginUserInitiatedSignIn();
                break;
            case R.id.sign_out_button:
                onClickSignOut();
                break;
            case R.id.clear_closed_achievement_button:
                clearClosedAchievement();
                break;
            case R.id.open_achievement_button:
                openAchievement();
                break;
        }
    }

    public void onClickSignOut() {
        signOut();
        changeUiState(false);
    }

    @Override
    public void onSignInFailed() {
        changeUiState(false);
    }

    @Override
    public void onSignInSucceeded() {
        changeUiState(true);

        Player player = Games.Players.getCurrentPlayer(getApiClient());
        String playerName;
        if (player == null) {
            playerName = "???";
        } else {
            playerName = player.getDisplayName();
        }
        ((TextView) findViewById(R.id.name)).setText("こんにちは、『" + playerName + "』さん。");
    }

    private void changeUiState(boolean isLogin) {
        if (isLogin) {
            findViewById(R.id.sign_in_button).setVisibility(View.GONE);
            findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
            findViewById(R.id.clear_closed_achievement_button).setVisibility(View.VISIBLE);
            findViewById(R.id.open_achievement_button).setVisibility(View.VISIBLE);
        } else {
            findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
            findViewById(R.id.sign_out_button).setVisibility(View.GONE);
            findViewById(R.id.clear_closed_achievement_button).setVisibility(View.GONE);
            findViewById(R.id.open_achievement_button).setVisibility(View.GONE);
            ((TextView) findViewById(R.id.name)).setText("こんにちは『???』さん。");
        }
    }

    public void openAchievement() {
        if (isSignedIn()) {
            startActivityForResult(Games.Achievements.getAchievementsIntent(getApiClient()), REQUEST_CODE_UNUSED);
        } else {
            showAlert("実績が見つかりません。");
        }
    }

    public void clearClosedAchievement() {
        if (isSignedIn()) {
            Games.Achievements.unlock(getApiClient(),
                                      getString(R.string.achievement_closed));
        }
    }
}
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順5】
1.「任意のファイルの作成方法」の手順で「res/values/ids.xml」を作成。
2.「res/values/ids.xml」は以下の通り。
<resources>

    <string name="app_id">【あなたのAPP_ID】</string>
    <string name="achievement_closed">【あなたの実績のID】</string>

</resources>
2.【あなたのAPP_ID】は【準備】の1で作成したゲームサービスのIDを入力します。
3.【あなたの実績ID】は【準備】の6で作成した実績のIDを入力します。
4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。



【手順6】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの実行手順で、実行。
※エミュレーターでは「Google Play services SDK」が上手く動かないみたいで、実機で実行する必要があるみたいです。



【手順7】
1.「実績を開く」ボタンを押して、実績を開きます、初期非公開の実績は非公開と表示されています。




2.「初期非公開の実績1クリア」ボタンを押すと以下の様に実績が達成されました。




3.実績を見ると非公開の実績が公開にされて、達成になっています。













































以上です。

Google Play Game Servicesで増分実績を使用する方法

【目的】
AndroidでGoogle Play Game Servicesで増分実績を使用します。



【準備】
1.「Google Play services SDKをワークスペースにインポートする方法」で「Google Play services SDK」をワークスペースにインポートしておきます。
2.「Google Play Game ServicesのBaseGameUtilsライブラリをワークスペースにインポートする方法」の手順で、BaseGameUtilsライブラリをワークスペースにインポートしておきます。
3.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。
4.「Google Play Developer Consoleのゲームサービスにテスト用IDを追加する方法」の手順で、テスト用のGoogleIDを追加しておきます。
5.「Google Play Developer Consoleのゲームサービスにアプリをリンクする方法」の手順で、ゲームサービスにアプリをリンクしておきます。
※アプリのパッケージ名は「jp.blogspot.foolprogrammer.googleplaygameservicessample01_005」で行いました。
6.「Google Play Game Servicesのゲームサービスに増分実績を追加する方法」の手順で、増分実績を追加しておきます。



【手順1】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの作成手順で、「GooglePlayGameServicesSample01-005-AchievementIncrement」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
※他の項目は任意。
項目名 項目に設定する値
アプリケーション名(Application Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_005
プロジェクト名(Project Name) GooglePlayGameServicesSample01-005-AchievementIncrement
パッケージ名(Package Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_005
Build SDK API 10
Minimum Required SDK API 10

2.「Google Play services SDKをライブラリ参照する方法」の手順で、Google Play services SDKをライブラリ設定する。
3.「Google Play Game ServicesのBaseGameUtilsをライブラリ参照する方法」の手順で、BaseGameUtilsをライブラリ設定する。



【手順2】
1.「AndroidManifest.xml」は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.foolprogrammer.googleplaygameservicessample01_005"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="googleplaygameservicessample"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="jp.blogspot.foolprogrammer.googleplaygameservicessample01_005.MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順3】
1.「res/layout/activity_main.xml」は以下の通り。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/sign_out_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ログアウト"
        android:textSize="12sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/game_play_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ゲームプレイ"
            android:textSize="12sp" />
    </LinearLayout>

    <Button
        android:id="@+id/open_achievement_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="実績を開く"
        android:textSize="12sp" />

</LinearLayout>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順4】
1.「src/jp/blogspot/foolprogrammer/googleplaygameservicessample01_005/MainActivity.java」は以下の通り。
package jp.blogspot.foolprogrammer.googleplaygameservicessample01_005;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.google.android.gms.games.Games;
import com.google.android.gms.games.Player;
import com.google.example.games.basegameutils.BaseGameActivity;

public class MainActivity extends BaseGameActivity implements OnClickListener {
    private static final int REQUEST_CODE_UNUSED = 10001;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.sign_in_button).setOnClickListener(this);
        findViewById(R.id.sign_out_button).setOnClickListener(this);
        findViewById(R.id.game_play_button).setOnClickListener(this);
        findViewById(R.id.open_achievement_button).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.sign_in_button:
                beginUserInitiatedSignIn();
                break;
            case R.id.sign_out_button:
                onClickSignOut();
                break;
            case R.id.game_play_button:
                incrementGamePlay();
                break;
            case R.id.open_achievement_button:
                openAchievement();
                break;
        }
    }

    public void onClickSignOut() {
        signOut();
        changeUiState(false);
    }

    @Override
    public void onSignInFailed() {
        changeUiState(false);
    }

    @Override
    public void onSignInSucceeded() {
        changeUiState(true);

        Player player = Games.Players.getCurrentPlayer(getApiClient());
        String playerName;
        if (player == null) {
            playerName = "???";
        } else {
            playerName = player.getDisplayName();
        }
        ((TextView) findViewById(R.id.name)).setText("こんにちは、『" + playerName + "』さん。");
    }

    private void changeUiState(boolean isLogin) {
        if (isLogin) {
            findViewById(R.id.sign_in_button).setVisibility(View.GONE);
            findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
            findViewById(R.id.game_play_button).setVisibility(View.VISIBLE);
            findViewById(R.id.open_achievement_button).setVisibility(View.VISIBLE);
        } else {
            findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
            findViewById(R.id.sign_out_button).setVisibility(View.GONE);
            findViewById(R.id.game_play_button).setVisibility(View.GONE);
            findViewById(R.id.open_achievement_button).setVisibility(View.GONE);
            ((TextView) findViewById(R.id.name)).setText("こんにちは『???』さん。");
        }
    }

    public void openAchievement() {
        if (isSignedIn()) {
            startActivityForResult(Games.Achievements.getAchievementsIntent(getApiClient()), REQUEST_CODE_UNUSED);
        } else {
            showAlert("実績が見つかりません。");
        }
    }

    public void incrementGamePlay() {
        if (isSignedIn()) {
            Games.Achievements.increment(getApiClient(),
                                         getString(R.string.achievement_game_play_5times),
                                         1);
        }
    }
}
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順5】
1.「任意のファイルの作成方法」の手順で「res/values/ids.xml」を作成。
2.「res/values/ids.xml」は以下の通り。
<resources>

    <string name="app_id">【あなたのAPP_ID】</string>
    <string name="achievement_game_play_5times">【あなたの実績のID】</string>

</resources>
2.【あなたのAPP_ID】は【準備】の1で作成したゲームサービスのIDを入力します。
3.【あなたの実績ID】は【準備】の6で作成した実績のIDを入力します。
4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。



【手順6】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの実行手順で、実行。
※エミュレーターでは「Google Play services SDK」が上手く動かないみたいで、実機で実行する必要があるみたいです。




【手順7】
1.「実績を開く」ボタンを押して、実績を開きます。




2.登録されている実績が表示されます。
※Google Play Developer Consoleで登録してから反映されるまでに1日?程度時間がかかる場合がありました。




3.「ゲームプレイ」ボタンを1回押した場合の実績です。




4.その後「ゲームプレイ」ボタンを4回押すと以下の様に実績が達成されました。




5.実績を見ると「ゲームプレイ5回」が達成になっています。




以上です。

Google Play Game Servicesで実績を使用する方法

【目的】
AndroidでGoogle Play Game Servicesで実績を使用します。



【準備】
1.「Google Play services SDKをワークスペースにインポートする方法」で「Google Play services SDK」をワークスペースにインポートしておきます。
2.「Google Play Game ServicesのBaseGameUtilsライブラリをワークスペースにインポートする方法」の手順で、BaseGameUtilsライブラリをワークスペースにインポートしておきます。
3.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。
4.「Google Play Developer Consoleのゲームサービスにテスト用IDを追加する方法」の手順で、テスト用のGoogleIDを追加しておきます。
5.「Google Play Developer Consoleのゲームサービスにアプリをリンクする方法」の手順で、ゲームサービスにアプリをリンクしておきます。
※アプリのパッケージ名は「jp.blogspot.foolprogrammer.googleplaygameservicessample01_004」で行いました。
6.「Google Play Game Servicesのゲームサービスに実績を追加する方法」の手順で、実績を追加しておきます。



【手順1】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの作成手順で、「GooglePlayGameServicesSample01-004-Achievement」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
※他の項目は任意。
項目名 項目に設定する値
アプリケーション名(Application Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_004
プロジェクト名(Project Name) GooglePlayGameServicesSample01-004-Achievement
パッケージ名(Package Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_004
Build SDK API 10
Minimum Required SDK API 10

2.「Google Play services SDKをライブラリ参照する方法」の手順で、Google Play services SDKをライブラリ設定する。
3.「Google Play Game ServicesのBaseGameUtilsをライブラリ参照する方法」の手順で、BaseGameUtilsをライブラリ設定する。



【手順2】
1.「AndroidManifest.xml」は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.foolprogrammer.googleplaygameservicessample01_004"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="googleplaygameservicessample"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="jp.blogspot.foolprogrammer.googleplaygameservicessample01_004.MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順3】
1.「res/layout/activity_main.xml」は以下の通り。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/sign_out_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ログアウト"
        android:textSize="12sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/stage1_clear_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ステージ1クリア"
            android:textSize="12sp" />
    </LinearLayout>

    <Button
        android:id="@+id/open_achievement_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="実績を開く"
        android:textSize="12sp" />

</LinearLayout>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順4】
1.「src/jp/blogspot/foolprogrammer/googleplaygameservicessample01_004/MainActivity.java」は以下の通り。
package jp.blogspot.foolprogrammer.googleplaygameservicessample01_004;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.google.android.gms.games.Games;
import com.google.android.gms.games.Player;
import com.google.example.games.basegameutils.BaseGameActivity;

public class MainActivity extends BaseGameActivity implements OnClickListener {
    private static final int REQUEST_CODE_UNUSED = 10001;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.sign_in_button).setOnClickListener(this);
        findViewById(R.id.sign_out_button).setOnClickListener(this);
        findViewById(R.id.stage1_clear_button).setOnClickListener(this);
        findViewById(R.id.open_achievement_button).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.sign_in_button:
                beginUserInitiatedSignIn();
                break;
            case R.id.sign_out_button:
                onClickSignOut();
                break;
            case R.id.stage1_clear_button:
                unlockStage1Clear();
                break;
            case R.id.open_achievement_button:
                openAchievement();
                break;
        }
    }

    public void onClickSignOut() {
        signOut();
        changeUiState(false);
    }

    @Override
    public void onSignInFailed() {
        changeUiState(false);
    }

    @Override
    public void onSignInSucceeded() {
        changeUiState(true);

        Player player = Games.Players.getCurrentPlayer(getApiClient());
        String playerName;
        if (player == null) {
            playerName = "???";
        } else {
            playerName = player.getDisplayName();
        }
        ((TextView) findViewById(R.id.name)).setText("こんにちは、『" + playerName + "』さん。");
    }

    private void changeUiState(boolean isLogin) {
        if (isLogin) {
            findViewById(R.id.sign_in_button).setVisibility(View.GONE);
            findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
            findViewById(R.id.stage1_clear_button).setVisibility(View.VISIBLE);
            findViewById(R.id.open_achievement_button).setVisibility(View.VISIBLE);
        } else {
            findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
            findViewById(R.id.sign_out_button).setVisibility(View.GONE);
            findViewById(R.id.stage1_clear_button).setVisibility(View.GONE);
            findViewById(R.id.open_achievement_button).setVisibility(View.GONE);
            ((TextView) findViewById(R.id.name)).setText("こんにちは『???』さん。");
        }
    }

    public void openAchievement() {
        if (isSignedIn()) {
            startActivityForResult(Games.Achievements.getAchievementsIntent(getApiClient()), REQUEST_CODE_UNUSED);
        } else {
            showAlert("実績が見つかりません。");
        }
    }

    public void unlockStage1Clear() {
        if (isSignedIn()) {
            Games.Achievements.unlock(getApiClient(),
                                      getString(R.string.achievement_stage1_clear));
        }
    }
}
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順5】
1.「任意のファイルの作成方法」の手順で「res/values/ids.xml」を作成。
2.「res/values/ids.xml」は以下の通り。
<resources>

    <string name="app_id">【あなたのAPP_ID】</string>
    <string name="achievement_stage1_clear">【あなたの実績のID】</string>

</resources>
2.【あなたのAPP_ID】は【準備】の1で作成したゲームサービスのIDを入力します。
3.【あなたの実績ID】は【準備】の6で作成した実績のIDを入力します。
4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.「Ctrl+S」を押し、ファイルを保存。



【手順6】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの実行手順で、実行。
※エミュレーターでは「Google Play services SDK」が上手く動かないみたいで、実機で実行する必要があるみたいです。




【手順7】
1.「実績を開く」ボタンを押して、実績を開きます。




2.登録されている実績が表示されます。
※Google Play Developer Consoleで登録してから反映されるまでに1日?程度時間がかかる場合がありました。




3.「ステージ1クリア」ボタンを押して、実績を解除すると、以下の様に表示されます。




4.実績を見ると「ステージ1クリア」が達成になっています。













































以上です。

Google Play Game Servicesでリーダーボードを使用する方法

【目的】
AndroidでGoogle Play Game Servicesでリーダーボードを使用します。



【準備】
1.「Google Play services SDKをワークスペースにインポートする方法」で「Google Play services SDK」をワークスペースにインポートしておきます。
2.「Google Play Game ServicesのBaseGameUtilsライブラリをワークスペースにインポートする方法」の手順で、BaseGameUtilsライブラリをワークスペースにインポートしておきます。
3.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。
4.「Google Play Developer Consoleのゲームサービスにテスト用IDを追加する方法」の手順で、テスト用のGoogleIDを追加しておきます。
5.「Google Play Developer Consoleのゲームサービスにアプリをリンクする方法」の手順で、ゲームサービスにアプリをリンクしておきます。
※アプリのパッケージ名は「jp.blogspot.foolprogrammer.googleplaygameservicessample01_003」で行いました。
6.「Google Play Game Servicesのゲームサービスにリーダーボードを追加する方法」の手順で、リーダーボードを追加しておきます。


【手順1】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの作成手順で、「GooglePlayGameServicesSample01-003-Leaderboards」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
※他の項目は任意。
項目名 項目に設定する値
アプリケーション名(Application Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_003
プロジェクト名(Project Name) GooglePlayGameServicesSample01-003-Leaderboards
パッケージ名(Package Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_003
Build SDK API 10
Minimum Required SDK API 10

2.「Google Play services SDKをライブラリ参照する方法」の手順で、Google Play services SDKをライブラリ設定する。
3.「Google Play Game ServicesのBaseGameUtilsをライブラリ参照する方法」の手順で、BaseGameUtilsをライブラリ設定する。



【手順2】
1.「AndroidManifest.xml」は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.foolprogrammer.googleplaygameservicessample01_003"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="googleplaygameservicessample"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="jp.blogspot.foolprogrammer.googleplaygameservicessample01_003.MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順3】
1.「res/layout/activity_main.xml」は以下の通り。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/sign_out_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ログアウト"
        android:textSize="12sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/increment_score_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="スコアを増やす"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/score"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <Button
        android:id="@+id/open_leaderboards_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="リーダーボードを開く"
        android:textSize="12sp" />

</LinearLayout>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順4】
1.「src/jp/blogspot/foolprogrammer/googleplaygameservicessample01_003/MainActivity.java」は以下の通り。
package jp.blogspot.foolprogrammer.googleplaygameservicessample01_003;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.google.android.gms.games.Games;
import com.google.android.gms.games.Player;
import com.google.example.games.basegameutils.BaseGameActivity;

public class MainActivity extends BaseGameActivity implements OnClickListener {
    private static final int REQUEST_CODE_UNUSED = 10001;
    private int score = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.sign_in_button).setOnClickListener(this);
        findViewById(R.id.sign_out_button).setOnClickListener(this);
        findViewById(R.id.increment_score_button).setOnClickListener(this);
        findViewById(R.id.open_leaderboards_button).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.sign_in_button:
                beginUserInitiatedSignIn();
                break;
            case R.id.sign_out_button:
                onClickSignOut();
                break;
            case R.id.increment_score_button:
                registHighScore();
                break;
            case R.id.open_leaderboards_button:
                openLeaderboards();
                break;
        }
    }

    public void onClickSignOut() {
        signOut();
        changeUiState(false);
    }

    @Override
    public void onSignInFailed() {
        changeUiState(false);
    }

    @Override
    public void onSignInSucceeded() {
        changeUiState(true);

        Player player = Games.Players.getCurrentPlayer(getApiClient());
        String playerName;
        if (player == null) {
            playerName = "???";
        } else {
            playerName = player.getDisplayName();
        }
        ((TextView) findViewById(R.id.name)).setText("こんにちは、『" + playerName + "』さん。");
    }

    private void changeUiState(boolean isLogin) {
        if (isLogin) {
            findViewById(R.id.sign_in_button).setVisibility(View.GONE);
            findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
            findViewById(R.id.increment_score_button).setVisibility(View.VISIBLE);
            findViewById(R.id.score).setVisibility(View.VISIBLE);
            findViewById(R.id.open_leaderboards_button).setVisibility(View.VISIBLE);
        } else {
            findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
            findViewById(R.id.sign_out_button).setVisibility(View.GONE);
            findViewById(R.id.increment_score_button).setVisibility(View.GONE);
            findViewById(R.id.score).setVisibility(View.GONE);
            findViewById(R.id.open_leaderboards_button).setVisibility(View.GONE);
            ((TextView) findViewById(R.id.name)).setText("こんにちは『???』さん。");
        }
    }

    public void openLeaderboards() {
        if (isSignedIn()) {
            startActivityForResult(Games.Leaderboards.getAllLeaderboardsIntent(getApiClient()), REQUEST_CODE_UNUSED);
        } else {
            showAlert("リーダーボードが見つかりません。");
        }
    }

    public void registHighScore() {
        this.score++;
        ((TextView) findViewById(R.id.score)).setText("スコア:" + this.score);
        if (isSignedIn()) {
            Games.Leaderboards.submitScore(getApiClient(),
                                           getString(R.string.leaderboard_high_score),
                                           this.score);
        }
    }
}
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順5】
1.「任意のファイルの作成方法」の手順で「res/values/ids.xml」を作成。
2.「res/values/ids.xml」は以下の通り。
<resources>

    <string name="app_id">【あなたのAPP_ID】</string>
    <string name="leaderboard_high_score">【あなたのリーダーボードのID】</string>

</resources>
2.【あなたのAPP_ID】は【準備】の1で作成したゲームサービスのIDを入力します。
3.【あなたのリーダーボードのID】は【準備】の6で作成したリーダーボードのIDを入力します。
4.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
5.


【手順6】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの実行手順で、実行。
※エミュレーターでは「Google Play services SDK」が上手く動かないみたいで、実機で実行する必要があるみたいです。




【手順7】
1.「スコアを増やす」ボタンを押してスコアを増やします。




2.「リーダーボードを開く」ボタンを押してリーダーボードを開きます。





3.「ハイスコア」をタップするとハイスコアのランキングが表示されます。













































以上です。

Google Play Game Servicesにログインする方法2

【目的】
AndroidでGoogle Play Game Servicesにログインします。
※BaseGameActivityを継承せず、GameHelperを使用する版です。



【準備】
1.「Google Play services SDKをワークスペースにインポートする方法」で「Google Play services SDK」をワークスペースにインポートしておきます。
2.「Google Play Game ServicesのBaseGameUtilsライブラリをワークスペースにインポートする方法」の手順で、BaseGameUtilsライブラリをワークスペースにインポートしておきます。
3.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。
4.「Google Play Developer Consoleのゲームサービスにテスト用IDを追加する方法」の手順で、テスト用のGoogleIDを追加しておきます。
5.「Google Play Developer Consoleのゲームサービスにアプリをリンクする方法」の手順で、ゲームサービスにアプリをリンクしておきます。
※アプリのパッケージ名は「jp.blogspot.foolprogrammer.googleplaygameservicessample01_002」で行いました。



【手順1】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの作成手順で、「GooglePlayGameServicesSample01-002-Login」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
※他の項目は任意。
項目名 項目に設定する値
アプリケーション名(Application Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_002
プロジェクト名(Project Name) GooglePlayGameServicesSample01-002-Login
パッケージ名(Package Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_002
Build SDK API 10
Minimum Required SDK API 10

2.「Google Play services SDKをライブラリ参照する方法」の手順で、Google Play services SDKをライブラリ設定する。
3.「Google Play Game ServicesのBaseGameUtilsをライブラリ参照する方法」の手順で、BaseGameUtilsをライブラリ設定する。



【手順2】
1.「AndroidManifest.xml」は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.foolprogrammer.googleplaygameservicessample01_002"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="googleplaygameservicessample"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="jp.blogspot.foolprogrammer.googleplaygameservicessample01_002.MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順3】
1.「res/layout/activity_main.xml」は以下の通り。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/button_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button_logout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ログアウト"
        android:textSize="12sp" />

</LinearLayout>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順4】
1.「src/jp/blogspot/foolprogrammer/googleplaygameservicessample01_002/MainActivity.java」は以下の通り。
package jp.blogspot.foolprogrammer.googleplaygameservicessample01_002;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.google.android.gms.games.Games;
import com.google.android.gms.games.Player;
import com.google.example.games.basegameutils.GameHelper;
import com.google.example.games.basegameutils.GameHelper.GameHelperListener;

public class MainActivity extends Activity implements GameHelperListener, OnClickListener {
    private GameHelper gameHelper;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
        this.gameHelper.setup(this);

        findViewById(R.id.sign_in_button).setOnClickListener(this);
        findViewById(R.id.sign_out_button).setOnClickListener(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        this.gameHelper.onStart(this);
    }

    @Override
    protected void onStop() {
        super.onStop();
        this.gameHelper.onStop();
    }

    @Override
    protected void onActivityResult(int request, int response, Intent data) {
        super.onActivityResult(request, response, data);
        this.gameHelper.onActivityResult(request, response, data);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.sign_in_button:
                this.gameHelper.beginUserInitiatedSignIn();
                break;
            case R.id.sign_out_button:
                onClickSignOut();
                break;
        }
    }

    @Override
    public void onSignInSucceeded() {
        changeUiState(true);

        Player player = Games.Players.getCurrentPlayer(this.gameHelper.getApiClient());
        String playerName;
        if (player == null) {
            playerName = "???";
        } else {
            playerName = player.getDisplayName();
        }
        ((TextView) findViewById(R.id.name)).setText("こんにちは、『" + playerName + "』さん。");
    }

    @Override
    public void onSignInFailed() {
        changeUiState(false);
    }

    public void onClickSignOut() {
        this.gameHelper.signOut();
        changeUiState(false);
    }

    private void changeUiState(boolean isLogin) {
        if (isLogin) {
            findViewById(R.id.sign_in_button).setVisibility(View.GONE);
            findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
        } else {
            findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
            findViewById(R.id.sign_out_button).setVisibility(View.GONE);
            ((TextView) findViewById(R.id.name)).setText("こんにちは『???』さん。");
        }
    }
}
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順5】
1.「任意のファイルの作成方法」の手順で「res/values/ids.xml」を作成。
2.「res/values/ids.xml」は以下の通り。
<resources>

    <string name="app_id">【あなたのAPP_ID】</string>

</resources>
2.【あなたのAPP_ID】は【準備】の1で作成したゲームサービスのIDを入力します。
3.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
4.「Ctrl+S」を押し、ファイルを保存。



【手順6】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの実行手順で、実行。
※エミュレーターでは「Google Play services SDK」が上手く動かないみたいで、実機で実行する必要があるみたいです。




【手順7】
1.初回実行時には以下のダイアログが表示されるので「ログイン」をタップ。




2.接続が開始されます。





3.ログインが成功すれば、以下の様に表示されます。





4.ログアウトを押すとログアウトします。













































以上です。

Google Play Game Servicesにログインする方法

【目的】
AndroidでGoogle Play Game Servicesにログインします。
※BaseGameActivityを継承する版です。



【準備】
1.「Google Play services SDKをワークスペースにインポートする方法」で「Google Play services SDK」をワークスペースにインポートしておきます。
2.「Google Play Game ServicesのBaseGameUtilsライブラリをワークスペースにインポートする方法」の手順で、BaseGameUtilsライブラリをワークスペースにインポートしておきます。
3.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。
4.「Google Play Developer Consoleのゲームサービスにテスト用IDを追加する方法」の手順で、テスト用のGoogleIDを追加しておきます。
5.「Google Play Developer Consoleのゲームサービスにアプリをリンクする方法」の手順で、ゲームサービスにアプリをリンクしておきます。
※アプリのパッケージ名は「jp.blogspot.foolprogrammer.googleplaygameservicessample01_001」で行いました。



【手順1】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの作成手順で、「GooglePlayGameServicesSample01-001-Login」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
※他の項目は任意。
項目名 項目に設定する値
アプリケーション名(Application Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_001
プロジェクト名(Project Name) GooglePlayGameServicesSample01-001-Login
パッケージ名(Package Name) jp.blogspot.foolprogrammer.googleplaygameservicessample01_001
Build SDK API 10
Minimum Required SDK API 10

2.「Google Play services SDKをライブラリ参照する方法」の手順で、Google Play services SDKをライブラリ設定する。
3.「Google Play Game ServicesのBaseGameUtilsをライブラリ参照する方法」の手順で、BaseGameUtilsをライブラリ設定する。



【手順2】
1.「AndroidManifest.xml」は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.blogspot.foolprogrammer.googleplaygameservicessample01_001"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="googleplaygameservicessample"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.games.APP_ID"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="jp.blogspot.foolprogrammer.googleplaygameservicessample01_001.MainActivity"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順3】
1.「res/layout/activity_main.xml」は以下の通り。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.gms.common.SignInButton
        android:id="@+id/button_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button_logout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ログアウト"
        android:textSize="12sp" />

</LinearLayout>
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順4】
1.「src/jp/blogspot/foolprogrammer/googleplaygameservicessample01_001/MainActivity.java」は以下の通り。
package jp.blogspot.foolprogrammer.googleplaygameservicessample01_001;

import jp.blogspot.foolprogrammer.googleplaygameservicessample01_001.R;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.google.android.gms.games.Games;
import com.google.android.gms.games.Player;
import com.google.example.games.basegameutils.BaseGameActivity;

public class MainActivity extends BaseGameActivity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.button_login).setOnClickListener(this);
        findViewById(R.id.button_logout).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button_login:
                beginUserInitiatedSignIn();
                break;
            case R.id.button_logout:
                logout();
                break;
        }
    }

    public void logout() {
        signOut();
        changeUiState(false);
    }

    @Override
    public void onSignInFailed() {
        changeUiState(false);
    }

    @Override
    public void onSignInSucceeded() {
        changeUiState(true);

        Player player = Games.Players.getCurrentPlayer(getApiClient());
        String playerName;
        if (player == null) {
            playerName = "???";
        } else {
            playerName = player.getDisplayName();
        }
        ((TextView) findViewById(R.id.name)).setText("こんにちは、『" + playerName + "』さん。");
    }

    private void changeUiState(boolean isLogin) {
        if (isLogin) {
            findViewById(R.id.button_login).setVisibility(View.GONE);
            findViewById(R.id.button_logout).setVisibility(View.VISIBLE);
        } else {
            findViewById(R.id.button_login).setVisibility(View.VISIBLE);
            findViewById(R.id.button_logout).setVisibility(View.GONE);
            ((TextView) findViewById(R.id.name)).setText("こんにちは『???』さん。");
        }
    }
}
2.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
3.「Ctrl+S」を押し、ファイルを保存。



【手順5】
1.「任意のファイルの作成方法」の手順で「res/values/ids.xml」を作成。
2.「res/values/ids.xml」は以下の通り。
<resources>

    <string name="app_id">【あなたのAPP_ID】</string>

</resources>
2.【あなたのAPP_ID】は【準備】の1で作成したゲームサービスのIDを入力します。
3.「Ctrl+Shift+F」を押し、コードをフォーマッティング。
4.「Ctrl+S」を押し、ファイルを保存。



【手順6】
1.「Androidプロジェクトの作成・実行方法(バージョン別一覧)」のAndroidプロジェクトの実行手順で、実行。
※エミュレーターでは「Google Play services SDK」が上手く動かないみたいで、実機で実行する必要があるみたいです。




【手順7】
1.初回実行時には以下のダイアログが表示されるので「ログイン」をタップ。




2.接続が開始されます。




3.ログインが成功すれば、以下の様に表示されます。





4.ログアウトを押すとログアウトします。




以上です。

2014年9月20日土曜日

Google Play Game Servicesのゲームサービスに初期非表示の実績を追加する方法

【目的】
Android開発で『Google Play Game Services』を利用する為に、「Google Play Developer Console」作成したゲームサービスに初期非表示の実績を追加します。



【準備】
1.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。



【手順1】
1.「Google Play Developer Console」にログインし、対象のゲームサービスを選択しておきます。
2.「実績」をクリック。




【手順2】
1.「実績を追加」ボタンをクリック。




【手順3】
1.「初期状態」は「非表示」を選択。
2.名前に「初期非表示の実績」と入力。
3.「保存」ボタンをクリック。




【手順4】
1.以下の様に実績が追加されれば成功です。


















以上です。

Google Play Game Servicesのゲームサービスに増分実績を追加する方法

【目的】
Android開発で『Google Play Game Services』を利用する為に、「Google Play Developer Console」作成したゲームサービスに増分実績を追加します。



【準備】
1.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。



【手順1】
1.「Google Play Developer Console」にログインし、対象のゲームサービスを選択しておきます。
2.「実績」をクリック。




【手順2】
1.「実績を追加」ボタンをクリック。




【手順3】
1.「増分実績」を選択。
2.「必要な手順数」に5と入力。
3.名前に「ステージ1クリア」と入力。
4.「保存」ボタンをクリック。




【手順4】
1.以下の様に実績が追加されれば成功です。

















以上です。

Google Play Game Servicesのゲームサービスに実績を追加する方法

【目的】
Android開発で『Google Play Game Services』を利用する為に、「Google Play Developer Console」作成したゲームサービスに実績を追加します。



【準備】
1.「Google Play Developer Consoleでゲームサービスを作成する方法」の手順で、ゲームサービスを作成しておきます。



【手順1】
1.「Google Play Developer Console」にログインし、対象のゲームサービスを選択しておきます。
2.「実績」をクリック。




【手順2】
1.「実績を追加」ボタンをクリック。




【手順3】
1.名前に「ステージ1クリア」と入力。
2.「保存」ボタンをクリック。




【手順4】
1.以下の様に実績が追加されれば成功です。


















以上です。

関連記事