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

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

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

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Android

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1228閲覧

[Android]GoogleFitAPIを使用して歩数を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Android

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

1クリップ

投稿2019/03/14 02:53

前提・実現したいこと

AndoroidでGoogleFit APIを使用して歩数を取得するアプリを作りたいと思っています
ですが、起動してアカウント選択までは作動するのですが、そのあとのonActivityResultのところでRESULT_CANCELEDになり接続できません

最初に歩数を取得するためにこのサイトを参考にしました
Google Fit for Android: Reading Sensor Data

よろしくお願いいたします。

発生している問題・エラーメッセージ

調べたところこのメッセージはGoogleアカウントを選択した後にのみ表示されます

E/GoogleFit: RESULT_CANCELED

該当のソースコード

kotlin

1class MainActivity : AppCompatActivity(), OnDataPointListener, 2 GoogleApiClient.ConnectionCallbacks, 3 GoogleApiClient.OnConnectionFailedListener { 4 5 private val REQUEST_OAUTH = 1 6 private val AUTH_PENDING = "auth_state_pending" 7 private var authInProgress = false 8 private var mApiClient: GoogleApiClient? = null 9 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_main) 13 14 if (savedInstanceState != null) { 15 authInProgress = savedInstanceState.getBoolean(AUTH_PENDING) 16 } 17 18 mApiClient = GoogleApiClient.Builder(this) 19 .addApi(Fitness.SENSORS_API) 20 .addScope(Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) 21 .addConnectionCallbacks(this) 22 .addOnConnectionFailedListener(this) 23 .build() 24 } 25 26 override fun onStart() { 27 super.onStart() 28 mApiClient?.connect() 29 } 30 31 override fun onConnected(p0: Bundle?) { 32 val dataSourceRequest = DataSourcesRequest.Builder() 33 .setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE) 34 .setDataSourceTypes(DataSource.TYPE_RAW) 35 .build() 36 37 val dataSourcesResultCallback = ResultCallback<DataSourcesResult> { 38 for (dataSource in it.dataSources) { 39 if (DataType.TYPE_STEP_COUNT_CUMULATIVE == dataSource.dataType) { 40 registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE) 41 } 42 } 43 } 44 45 Fitness.SensorsApi.findDataSources(mApiClient, dataSourceRequest) 46 .setResultCallback(dataSourcesResultCallback) 47 } 48 49 override fun onConnectionSuspended(p0: Int) { 50 } 51 52 override fun onConnectionFailed(p0: ConnectionResult) { 53 if (!authInProgress) { 54 try { 55 authInProgress = true 56 p0.startResolutionForResult(this@MainActivity, REQUEST_OAUTH) 57 } catch (e: IntentSender.SendIntentException) { 58 59 } 60 } else { 61 Log.e("GoogleFit", "authInProgress") 62 } 63 } 64 65 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 66 if( requestCode == REQUEST_OAUTH ) { 67 authInProgress = false; 68 if( resultCode == RESULT_OK ) { 69 if(!mApiClient!!.isConnecting && !mApiClient!!.isConnected) { 70 mApiClient?.connect() 71 } 72 } else if( resultCode == RESULT_CANCELED ) { 73 Log.e( "GoogleFit", "RESULT_CANCELED" ) 74 } 75 } else { 76 Log.e("GoogleFit", "requestCode NOT request_oauth"); 77 } 78 } 79 80 override fun onDataPoint(p0: DataPoint?) { 81 for(field: Field in p0?.dataType!!.fields) { 82 val value: Value = p0.getValue( field ) 83 84 runOnUiThread(Runnable(Toast.makeText(applicationContext, "Field: " + field.name + " Value: " + value, Toast.LENGTH_SHORT)::show)) 85 } 86 } 87 88 override fun onStop() { 89 super.onStop() 90 91 Fitness.SensorsApi.remove( mApiClient, this ).setResultCallback{ 92 if (it.isSuccess)mApiClient?.disconnect() 93 } 94 } 95 96 private fun registerFitnessDataListener(dataSource: DataSource,dataType: DataType) { 97 98 var request: SensorRequest = SensorRequest.Builder() 99 .setDataSource( dataSource ) 100 .setDataType( dataType ) 101 .setSamplingRate( 3, TimeUnit.SECONDS ) 102 .build(); 103 104 Fitness.SensorsApi.add( mApiClient, request, this ).setResultCallback { 105 if (it.isSuccess) { Log.e( "GoogleFit", "SensorApi successfully added" ) } 106 } 107 } 108}

build.gradle(Module(app))

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.android.support:design:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' //GoogleFit implementation 'com.google.android.gms:play-services-fitness:16.0.1' implementation 'com.google.android.gms:play-services-auth:16.0.1' }

試したこと

OAuth 2.0クライアントIDを削除して再度作成

補足情報(FW/ツールのバージョンなど)

Android Studio 3.3.1
Kotlin 1.3.21

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

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

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

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

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

guest

回答1

0

ベストアンサー

GoogleFitは GooglePlayのサービスなのでGooglePlayConsoleに登録していないことが原因でした。

投稿2019/03/14 07:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問