2014年2月19日水曜日

Google Play servicesを使う

Google Play servicesを使う準備

Google Play services APIを使うには、Android SDK ManagerでGoogle Play servicesをダウンロードします。ダウンロードすると、次のディレクトリに保存されます。<AndroidSDK>\sdk\extras\google\google_play_services\libproject\google-play-services_lib

上記のプロジェクトをEclipseにインポートします。

Google Play services APIを使用するプロジェクトにて、AndroidManifest.xmlにmeta-dataの記載を行います。

1
2
3
4
5
<application
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
</application>


Google Play servicesの存在確認

アプリケーションが動作するユーザー端末がどのような状態かわかりません。Google Play services APIを使用する前に、Google Play services APKがインストールされてるかどうかチェックしましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class UsingGooglePlayServiceSampleActivity extends FragmentActivity {
 
    private boolean isGooglePlayServicesAvailable() {
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
 
        if (ConnectionResult.SUCCESS == resultCode) {
            return true;
        } else {
            Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    CONNECTION_FAILURE_RESOLUTION_REQUEST);
            if (dialog != null) {
                ErrorDialogFragment errorFragment = new ErrorDialogFragment();
                errorFragment.setDialog(dialog);
                errorFragment.show(getSupportFragmentManager(), "errro_dialog");
            }
        }
 
        return false;
    }
 
    public static class ErrorDialogFragment extends DialogFragment {
 
        private Dialog mDialog;
 
        public ErrorDialogFragment() {
            super();
            mDialog = null;
        }
 
        public void setDialog(Dialog dialog) {
            mDialog = dialog;
        }
 
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return mDialog;
        }
 
        @Override
        public void onDestroy() {
            mDialog = null;
            super.onDestroy();
        }
    }
}

GooglePlayServicesUtil.isGooglePlayServicesAvailable()をコールします。APIリファレンスに記載されているResultコード一覧の値が返ってきます。エラーが発生した場合、GooglePlayServicesUtil.getErrorDialog()をコールしDialogを取得します。取得したDialogはDialogFragmentを使って、表示してください。

Dialogを通じてユーザーに発生した問題を通知します。Dialogを閉じると、onActivityResultがコールされてResultを通知します。

1
2
3
4
5
6
7
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CONNECTION_FAILURE_RESOLUTION_REQUEST) {
        if (resultCode == Activity.RESULT_OK) {
            // retry process
        }
    }
}

0 件のコメント:

コメントを投稿