1

後でクラスでAndroidのaddProximityAlertメソッドを使用して、位置の近接性を追加しました。LocationManager

ユーザーの電話が特定のエリアにある場合、はアプリケーションにLocationManagerを送信します。これは、インテントを処理するクラスです。IntentBroadcastReciver

public class ProximityTrigger extends BroadcastReceiver {

    @Override
    public void onReceive(Context ctxContext, Intent ittIntent) {            
        System.out.println(ittIntent.getIntExtra(WidgetService.KEY_STOP_IDENTIFIER, -1));               
    }

}

DashClock APIを使用して、これが発生したときに更新を表示したいと思います。DashClockにはpublishUpdate更新を表示するために使用できるメソッドがありますが、これはクラスを拡張する拡張クラスからのみ使用できますDashClock。これはどういうわけか可能であるはずですが、私はその方法を理解できないようです。これをどのように達成できるかについてのアイデアはありますか?

4

1 に答える 1

11

拡張機能サービスはpublishUpdate呼び出しを発行する必要があるため、近接トリガー ブロードキャスト レシーバーは、ブロードキャストやイベント バスなどを使用して、拡張機能に更新の発行を依頼する必要があります。

拡張機能が初期化されていない場合、つまりユーザーが拡張機能を追加していないか、DashClock が実行されていない場合、何も起こらず、これは予期された正しい動作です。DashClock が開始され、拡張機能が追加されるとすぐにonUpdateDataが呼び出され、更新を公開できるようになります。

実際に使用できるクラスのアイデアについては、以下を参照してください。

  • Context.registerReceiverを使用して動的に登録されたブロードキャスト レシーバーと共にContext.sendBroadcastを使用するグローバル ブロードキャストDashClockExtension

  • LocalBroadcastManagerを使用したローカル ブロードキャスト

  • OttoまたはEventBusは、アプリケーション コンポーネントがイベントを発行およびサブスクライブできるようにする 2 つのフレームワークです。この場合、拡張機能がサブスクライブし、近接センサーがパブリッシュします。

グローバル ブロードキャストの完全なコード スニペットは、DashClock プロジェクト ページのissue 292にあります。

于 2013-03-22T13:27:44.990 に答える