0

Android アプリケーションで Google クラウド メッセージを受信すると、MS Band にアラートを表示しようとしています。メッセージの送信と応答に Azure Notification Hubs を使用しています。メッセージを受け取り次第、バンドに通知を送信したいと思います。

現在発生している問題は、NotificationHandler でバンド接続を確認すると、次の例外がスローされることです。

BroadcastReceiver コンポーネントはサービスにバインドできません

問題のコードは次のとおりです。

if (client == null) {
        BandInfo[] devices = BandClientManager.getInstance().getPairedBands();
        if (devices.length == 0) {
            Log.i(TAG, "Band isn't paired with your phone");
            return false;
        }
        client = BandClientManager.getInstance().create(ctx, devices[0]);
    } else if (ConnectionState.CONNECTED == client.getConnectionState()) {
        return true;
    }

    Log.i(TAG, "Band is connecting...");
    return ConnectionState.CONNECTED == client.connect().await();

呼び出し時に例外がスローされるclient.connect().await()

通知ハンドラーは舞台裏で BroadcastReceiver として構成されており、Band とやり取りしようとすることで、サービスにバインドすることで BroadcastReceiver のルールを破っていると思います。

このシナリオをどのように処理すればよいですか? 確かに、これは一般的なシナリオです。アプリケーションによってピックアップされたときに、バンドで通知をミラーリングしますか? 私がこれを処理すると考えている唯一の方法は、新しいインテント サービスを作成して通知を表示し、BroadcastReciever から開始することですが、これはちょっと不格好に思えますか?

4

1 に答える 1

0

Band へのメッセージの送信を処理するためにブロードキャスト レシーバーで起動する Intent Service を作成することにしました。これにより、レシーバーは応答してすぐに終了し、サービス内でバンド接続を行うことができます。

想像していたほどダサくはないです。

于 2015-10-06T08:17:06.777 に答える