1

Google が提供する Google Fit 実行用のサンプル アプリを取得するのに問題があります。

これまでのところ、resultCode私が入るのonActivityResult0を選択した後であることがわかりましたAccount

私が現在使用しているサンプルアプリは で、ここBasicRecordingApiで見つけることができます。しかし、私は他のものも試しました。

アプリの API キーを作成し、Google Fit API を有効にしました。

何も役に立ちません。

何か案は?

4

1 に答える 1

12

Android を始める

ここでは、Android で Google Fit を使用した開発を開始する方法について説明します。Google Fit は Google Play サービスの一部です。

ステップ 1: Google Play サービスを取得する

Google Fit は、Google Play サービス 7.0 以降を搭載した Android デバイスで利用できます。Google Play ストア アプリがインストールされている Android 2.3 以降を実行しているデバイスは、Google Play サービスのアップデートを自動的に受け取ります。

デバイスにインストールされている Google Play サービスのバージョンを確認するには、[設定] > [アプリ] > [Google Play サービス] に移動します。

開発ホストに Google Play サービス用の最新のクライアント ライブラリがあることを確認します。

1.Android SDK マネージャーを開きます。2.Extras で、Google Play サービスと Google リポジトリを見つけます。3. これらのパッケージのステータスが [インストール済み] と異なる場合は、両方を選択して [パッケージのインストール] をクリックします。

ステップ 2: Google アカウントを取得する Google Fit API を使用するには、Google アカウントが必要です。

ステップ 3: Fitness API を有効にする Google コンソールでプロジェクトを作成する

1.Google デベロッパー コンソールにアクセスします。2.[プロジェクトの作成] をクリックします。3. [プロジェクト名] フィールドにプロジェクトの名前を入力し、[作成] をクリックします。

Fitness API を 有効にする 1.Google Developers Console に移動します。2.左側のサイドバーで、[APIs and Auth] をクリックします。3.Fitness API を見つけて、そのステータスを ON に設定します。

新しいクライアント ID を作成する

1.Google デベロッパー コンソールにアクセスします。2.左側のサイドバーで、資格情報をクリックします。3. [新しいクライアント ID の作成] をクリックします。[クライアント ID の作成] ダイアログ ボックスが表示されます。4. [アプリケーションの種類] で、[インストール済みのアプリケーション] を選択します。5. [インストールされているアプリケーションの種類] で、[Android] を選択します。6. [パッケージ名] フィールドに、Android アプリのパッケージ名を入力します。7. [署名証明書の指紋 (SHA1)] フィールドに、証明書の SHA1 指紋を入力します。8.[クライアント ID の作成] をクリックします。

ステップ 4: プロジェクトを構成する

IDE で、モジュールの build.gradle ファイルを開き、Google Play サービス クライアント ライブラリを依存関係として追加します。

 apply plugin: 'com.android.application'
    ...

    dependencies {
        compile 'com.google.android.gms:play-services-fitness:8.3.0'
    }

ステップ 5: フィットネス サービスに接続する

Android を始める

このドキュメントでは、Android で Google Fit を使用した開発を開始する方法について説明します。Google Fit は Google Play サービスの一部です。

ステップ 1: Google Play サービスを取得する

Google Fit は、Google Play サービス 7.0 以降を搭載した Android デバイスで利用できます。Google Play ストア アプリがインストールされている Android 2.3 以降を実行しているデバイスは、Google Play サービスのアップデートを自動的に受け取ります。

デバイスにインストールされている Google Play サービスのバージョンを確認するには、[設定] > [アプリ] > [Google Play サービス] に移動します。

開発ホストに Google Play サービス用の最新のクライアント ライブラリがあることを確認します。

Android SDK マネージャーを開きます。Extras で、Google Play サービスと Google リポジトリを見つけます。これらのパッケージのステータスが [インストール済み] と異なる場合は、両方を選択して [パッケージのインストール] をクリックします。ステップ 2: Google アカウントを取得する

Google Fit API を使用するには、Google アカウントが必要です。すでにアカウントをお持ちの場合は、準備完了です。テスト用に別の Google アカウントが必要になる場合もあります。

ステップ 3: Fitness API を有効にする

Google Fit を認証して通信するには、Google Developers Console でプロジェクトを作成し、Fitness API を有効にして、OAuth 2.0 クライアント ID を作成し、アプリの署名付き APK から公開証明書を登録する必要があります。

プロジェクトを作成する

注: Android バージョンと REST バージョンのアプリには同じプロジェクトを使用してください。Google デベロッパー コンソールに移動します。[プロジェクトの作成] をクリックします。[プロジェクト名] フィールドにプロジェクトの名前を入力し、[作成] をクリックします。フィットネス API を有効にする

Google デベロッパー コンソールに移動します。左側のサイドバーで、[APIs and Auth] をクリックします。Fitness API を見つけて、そのステータスを ON に設定します。Fitness API が API リストの一番上に表示されるようになりました。

証明書の SHA1 フィンガープリントを取得する

Android アプリの新しいクライアント ID を作成するには、APK の署名に使用する証明書の SHA1 フィンガープリントが必要です。このフィンガープリントを取得するには:

キーストアの場所を見つけます。ターミナルで、JDK から keytool ユーティリティを実行します。たとえば、debugキーストアを使用している場合: $ keytool -exportcert -alias \ androiddebugkey -keystore \ ~/.android/debug.keystore -list -v 注: Mac OS および Linux では、デバッグ キーストアは通常 ~/ にあります。 .android/debug.keystore. Windows では、通常、%USERPROFILE%.android\debug.keystore にあります。

keytool コマンドの出力には、証明書の SHA1 フィンガープリントが含まれています。

図 1: [クライアント ID の作成] ダイアログ ボックス。新しいクライアント ID を作成する

Google デベロッパー コンソールに移動します。左側のサイドバーで、資格情報をクリックします。[新しいクライアント ID を作成する] をクリックします。[クライアント ID の作成] ダイアログ ボックスが表示されます。[アプリケーションの種類] で、[インストール済みアプリケーション] を選択します。[インストールされているアプリケーションの種類] で、[Android] を選択します。[パッケージ名] フィールドに、Android アプリのパッケージ名を入力します。[Signing Certificate Fingerprint (SHA1)] フィールドに、証明書の SHA1 フィンガープリントを入力します。[クライアント ID の作成] をクリックします。ステップ 4: プロジェクトを構成する

Android Studio を使用すると、Google Fit 用のプロジェクトを簡単に作成できます。プロジェクトの作成で説明されている手順に従います。

IDE で、モジュールの build.gradle ファイルを開き、Google Play サービス クライアント ライブラリを依存関係として追加します。

apply plugin: 'com.android.application'
...

dependencies {
    compile 'com.google.android.gms:play-services-fitness:8.3.0'
}

ステップ 5: フィットネス サービスに接続する

Google Fit API からメソッドを呼び出す前に、Google Play サービスの一部である適切なフィットネス サービスに接続する必要があります。次の API を利用できます。

1.Fitness.SENSORS_API
2.Fitness.RECORDING_API
3.Fitness.HISTORY_API
4.Fitness.SESSIONS_API
5.Fitness.BLE_API
6.Fitness.CONFIG_API

次のように API クライアントを作成します。

1.アクティビティで変数を定義して、接続ステータスを追跡できるようにします。

private static final int REQUEST_OAUTH = 1;

/**
 *  Track whether an authorization activity is stacking over the current activity, i.e. when
 *  a known auth error is being resolved, such as showing the account chooser or presenting a
 *  consent dialog. This avoids common duplications as might happen on screen rotations, etc.
 */
private static final String AUTH_PENDING = "auth_state_pending";
private boolean authInProgress = false;

private GoogleApiClient mClient = null;

2. onCreate メソッドで認証が進行中かどうかを確認します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Put application specific code here.

    if (savedInstanceState != null) {
        authInProgress = savedInstanceState.getBoolean(AUTH_PENDING);
    }

    buildFitnessClient();
}

**3.Google API クライアントを作成し、必要なコールバック メソッドを提供します:*

/**
 *  Build a {@link GoogleApiClient} that will authenticate the user and allow the application
 *  to connect to Fitness APIs. The scopes included should match the scopes your app needs
 *  (see documentation for details). Authentication will occasionally fail intentionally,
 *  and in those cases, there will be a known resolution, which the OnConnectionFailedListener()
 *  can address. Examples of this include the user never having signed in before, or having
 *  multiple accounts on the device and needing to specify which account to use, etc.
 */
private void buildFitnessClient() {
    // Create the Google API Client
    mClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.SENSORS_API)
            .addScope(new Scope(Scopes.FITNESS_LOCATION_READ))
            .addConnectionCallbacks(
                    new GoogleApiClient.ConnectionCallbacks() {

                        @Override
                        public void onConnected(Bundle bundle) {
                            Log.i(TAG, "Connected!!!");
                            // Now you can make calls to the Fitness APIs.
                            // Put application specific code here.
                        }

                        @Override
                        public void onConnectionSuspended(int i) {
                            // If your connection to the sensor gets lost at some point,
                            // you'll be able to determine the reason and react to it here.
                            if (i == ConnectionCallbacks.CAUSE_NETWORK_LOST) {
                                Log.i(TAG, "Connection lost.  Cause: Network Lost.");
                            } else if (i == ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) {
                                Log.i(TAG, "Connection lost.  Reason: Service Disconnected");
                            }
                        }
                    }
            )
            .addOnConnectionFailedListener(
                    new GoogleApiClient.OnConnectionFailedListener() {
                        // Called whenever the API client fails to connect.
                        @Override
                        public void onConnectionFailed(ConnectionResult result) {
                            Log.i(TAG, "Connection failed. Cause: " + result.toString());
                            if (!result.hasResolution()) {
                                // Show the localized error dialog
                                GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(),
                                        MainActivity.this, 0).show();
                                return;
                            }
                            // The failure has a resolution. Resolve it.
                            // Called typically when the app is not yet authorized, and an
                            // authorization dialog is displayed to the user.
                            if (!authInProgress) {
                                try {
                                    Log.i(TAG, "Attempting to resolve failed connection");
                                    authInProgress = true;
                                    result.startResolutionForResult(MainActivity.this,
                                            REQUEST_OAUTH);
                                } catch (IntentSender.SendIntentException e) {
                                    Log.e(TAG,
                                            "Exception while starting resolution activity", e);
                                }
                            }
                        }
                    }
            )
            .build();
}

4.アクティビティ内でクライアントの接続ライフサイクルを管理します。

@Override
protected void onStart() {
    super.onStart();
    // Connect to the Fitness API
    Log.i(TAG, "Connecting...");
    mClient.connect();
}

@Override
protected void onStop() {
    super.onStop();
    if (mClient.isConnected()) {
        mClient.disconnect();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_OAUTH) {
        authInProgress = false;
        if (resultCode == RESULT_OK) {
            // Make sure the app is not already connected or attempting to connect
            if (!mClient.isConnecting() && !mClient.isConnected()) {
                mClient.connect();
            }
        }
    }
}

@Override
   protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
  }
于 2015-12-01T10:46:38.587 に答える