2

Notification API を使用して RSS スマート拡張アプリを開発しています。スマート拡張機能 (SmartWatch アプリで RSS スマート拡張機能をクリックしたときの最初のチェックボックス) のアクティブ/非アクティブ ステータスを取得する方法を知りたいです。

NotificationAPI サンプルでは、​​追加のチェックボックス設定を使用して、通知を生成するデータをダウンロードするサービスを開始するかどうかを指定していますが、ユーザーにサブメニューに移動してデータのダウンロードを有効にすることを強制したくありません。ユーザーが私の RSS スマート拡張機能をアクティブにすると、RSS に新しいアイテムが追加された場合に拡張機能から通知されることを期待しています。

スマート拡張機能がライブウェア/スマートウォッチ アプリ (onRegisterResult) に正しく追加されたことを知るためのコールバックがありますが、スマート拡張機能が実際にアクティブかどうかを知るためのコールバックが見つかりませんでした。

前もって感謝します!

4

1 に答える 1

5

Smart Extension SDK の SampleNotificationExtension は、次の例を示すために提供されています。

  • コンテンツ プロバイダーを介して Liveware Manager アプリケーション (Smart Extension API のハブ) にある通知データベースにデータを追加/更新/削除/読み取る方法

  • ユーザーが SmartWatch で通知を開き、アクション ボタンを押すなどのイベントに応答する方法

拡張機能の例では、通知データベースに 10 秒ごとにフィードするサービスがあり、それが SmartWatch デバイスに表示されます。設定アクティビティのオン/オフ設定は、データベースにフィードするループを開始および停止するためのものです。

Ok。

したがって、RSS フィードを購読し、新しい投稿が到着したら、それらを SmartWatch に伝達する必要があると思います。例のように、おそらくサービスを開始する必要があり、時計が電話に接続されている限り、サービスを実行しておく必要があります。これはここで指定できます。

@Override
protected boolean keepRunningWhenConnected() {
    return true;
}

SmartExtension ユーティリティ クラスを使用すると、拡張機能が自動的に登録され、サービスが開始されます。サンプル拡張機能では、拡張機能が登録された後、ユーザーが設定を介して拡張機能をアクティブ化したかどうかを確認するためにチェックが行われます。

@Override
public void onRegisterResult(boolean result) {
    /.../
    boolean isActive = prefs.getBoolean(
            getString(R.string.preference_key_is_active), false);
    if (isActive) {
        startAddData();
    }
}

必要に応じてこれを保持できますが、必須ではありません。前に述べたように、これはデータ フィードの開始と停止のためだけのものです。いずれにせよ、登録後に RSS チェックを開始できます。

ユーザーが私の RSS スマート拡張機能をアクティブにすると、RSS に新しいアイテムが追加された場合に拡張機能から通知されることを期待しています。

サービスが開始されると、通知データベースにあるものと RSS フィードから供給されるものとの間の差分を確認できます。

まあ、長い答えですが、お役に立てば幸いです!

于 2012-05-11T07:02:30.310 に答える