Android Wear(minSdkVersion = 21、targetSdkVersion = 23)の時計面を開発し、Android用Google Fit APIを統合しています。CanvasWatchFaceServiceのカスタム放送受信機
与えられたユーザーの選択した時間間隔でフィットデータをバックグラウンドでポーリングして、ウォッチフェイスに戻したいと思います。そこで、Serviceクラスを拡張し、SensorEventListener、GoogleApiClient ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListenerなどを実装するサービスを作成しました。フィットAPIと心臓センサーデータを読み込むためにFitness APIを使用します。
次に、カスタムBroadcastReceiverを使用してCanvasWatchFaceServiceを拡張する標準クラスであるウォッチフェイスに値(カロリー、距離、ステップなど)を渡します。
私が達成したいのは、常にウォッチフェイスで利用可能なフィットネス変数を更新することです。そのため、ユーザーが相互作用して周囲またはミュートされたモードを終了すると、表示する必要があるデータは既にそこにあります。数秒かかることがあるので、その時点でFitness APIを使用して読み込むことなく画面に描画する必要があります。
これは機能します。データは受信機によって時計面で受信され、変数値が正しく設定されます。私は単純なcanvas.drawTextを使って画面に出力します。私は、インタラクティブモード(ウォッチフェイスの表示とアクティブ)、もちろんポーリング時間間隔に応じて更新され、さらにウォームフェイスをデバッグしている場合は、onTimeTickが呼び出されたときにアンビエントモードでアップデートされます(usbまたはブルートゥース)。
デバッガを切断してウォッチ・フェイスが周囲モードになるとすぐに、メッセージがブロードキャスト・レシーバによって受信されなくなるようです。
私は間違っていますか?私は本当にこれで挫折しています。
あなたの説明から分かりにくいですが、あなたのアップデータの「サービス」が無期限に稼働することを期待しているようですね。 – String
はい、stopServiceが呼び出されたときに時計の顔のonDestroyが表示されます。 – Veertualia