2013-08-22 20 views
7

Android 4.3/Samsung BLE 2.0 SDKを使用すると、周辺機器がオフになると、SDKはonConnectionStateChange(DEVICE_DISCONNECTED)をすぐにまたは約20秒後に受信することがわかります。私の経験から言えば、これは周辺機器の実装に依存していますが、そのうちのいくつかはオフになっていると報告しているものもあれば、そうでないものもあるので、SDKはタイムアウトのために20秒を待たなければなりません。予期せぬ動作を引き起こす周辺機器の電源オフ

この動作を削除するには、タイマーを使用して特定の特性を読み取ることができるかどうかを確認しようとしました。読み取りがタイムアウトした場合は、disconnect(Android 4.3)/ cancelConnection(Samsung)を呼び出して接続を終了します。呼び出し自体は成功し、onConnectionStateChangeコールバックは状態GATT_SUCCESSを返します。その後、私は周辺機器の電源をオンにして直ちに接続し、サービスを発見し、通知を読み書き/通知しようとしたときに問題が発生しました。 iOSでLightBlueを使用することで、周辺機器が接続されていないことを確認できます。

周辺機器の電源をオフにしてから20秒後に、DEVICE_DISCONNECTEDコールバックを受信します。私は後で再び接続し、すべてうまく動作します。

2つの質問があります。 1. 20秒の遅延の間に周辺機器に接続する予定ですか? 2.周辺機器の電源が切れたときに通知を受ける方法はありますか?

ありがとうございます。

答えて

1
  1. 20秒の遅延の間に周辺機器に接続する予定ですか? いいえ、それはOSがDEVICE_CONNECTEDまたはDEVICE_DISCONNECTEDイベントを制御するために携帯電話の中にいくつかのアクションを行っている、これは、原因デバイス・アーキテクチャのようないくつかの理由になり、セキュリティ上の理由からか、自分自身をコールバックすること自体になりますから、そうですが、エネルギー

  2. を保存するために遅れています

    周辺機器の電源が切れたときに通知を受ける方法はありますか? いいえ、私はそうは思わない、任意のアクションのために受信されたイベントは、デバイスからの信号を待つようにブロードキャストされていますが、それを取得していない場合、あなたがここで行うことができる唯一のものは、 HTTPリクエスト)をデバイスのもう一方の端から取得することができます。

+0

20秒の遅延の間に何が起こっているのか少し詳しく説明できますか?その期間中にエラーを受け取らずに切断を呼び出すことは論理的ではないようです。 – reTs

関連する問題