私の目標は、以前のに接続していたBLEデバイスにAndroidデバイスを再接続させることです。ユーザーの操作なしでは、従来のBTペアデバイスと同じ方法でパワーサイクルを通して働く)。Android:BLEデバイスの自動再接続
BTLEデバイスのアイデアの1つは、再接続が非常に高速であり、周辺機器の電力をほとんど消費しないように、サービス、ボンディング、およびイネーブル状態を節約することです。
私がやったことはうまくいくようですが、うまく動作しません。
最初のステップは、新しいデバイスに接続またはペアリングして接続することです.'autoconnect 'パラメータを' true 'に設定します。 デバイスが切断されると、は gatt.close()を呼び出しません。どこでも私はgatt.close()を呼び出すべきだと思う。しかし、私がgatt.close()を呼び出すと、Androidのセントラルアプリは決して再接続しません。私はこれを何度も試しました。
gatt.close()を呼び出さず、Androidの電源を入れ直していない場合、通常は自動接続が行われます。場合によっては、特にバージョン5.0以降に時間がかかることがあります。しかし、それは信頼性が低く、スキャンサイクルが広告を実際に検出する前に、非常に低いスキャンサイクルおよび広告を中止することによって信頼性が低い可能性がある。広告があるようにスキャン操作を検出する方法がないため、わかりません!また、一定時間が経過してもスキャンが停止する可能性がありますが、それに関する文書はありません。
私がする必要があると思うのは、自動的に接続が設定されている場合、何らかの形でAndroidが使用するバックグラウンドスキャンレートを高いデューティサイクル(5.0以降でのみ可能)に設定することですこれをする。私は自分のスキャンを開始したくないが、再接続のためにAndroidによって使用されたバックグラウンドスキャンレートをどうにか設定した。誰もこれを行う方法を知っていますか?誰かが実際にautoconnectとgatt.close()がどのように動作するかを知っていますか?
自動接続は、上記のように再接続するつもりはありませんでしたか?
再接続するには、常にアドバタイズまたはスキャンする必要があります。さらに、コア仕様でこれを試してみましたか?あなたが求めている多くの質問がそこにあります。 「より高いデューティ・サイクルにバックグラウンド・スキャン・レートを設定する」など、スキャン・パラメータを設定することによって処理されるスキャン・ウィンドウおよびインターバルを意味すると考えられます。広告のタイプも重要です(Connectionless、connectable)。マスターと周辺機器の両方でスキャン/広告を処理するコードの一部を提供してください。 – Zimano
@ Zimano私はコア仕様を知っています。埋め込まれたBLEコレクターをコード化しています。そこには、すべての細部の詳細を指定する必要があります。しかし、Androidプラットフォームでは、コントロールがかなり少なく(通常は人生を楽にする)、Androidは何をしているのかよく分からない。私が知りませんが、Androidがautoconnectパラメータをtrueに設定したときのスキャンレートを設定するものです。これは恐らく負荷の低いもので、周辺機器が切断されてから時間の経過とともに変化する可能性があります。だから私がやろうとしているのは、より高いデューティ・サイクルにスキャン・レートを設定する方法を理解することです。 –
@ Zimano私は、スキャンレートが何であるかを知ることができたらと思っています(ソースコードを掘り下げずに)。私は多くの医療機器周辺機器を持っており、それらはすべて異なるレート(ほとんど指図されない)で宣伝しますが、それらはスニファで見やすいものです。 –