2017-03-09 13 views
0

私のアプリケーションでは、いくつかのBLEスキャンを開始し、結果を得てリストまたはグリッドで表示する必要があります。Android Ble、Pheriperalスキャン中の広告ステータス

私がスキャンを開始すると、デバイスは自分が書いたScanFiltersに基づいた広告を探すようになります。

Pheriperalが見つかるたびに、アプリケーションがスキャンコールバックメソッドを起動し、新しいデバイスをリストに追加できます。

私はエラーが発生した場合、アプリケーションはコールバックメソッドをトリガし、私はユーザーにその虫について話すことができます。

スキャンが30代のために起こって想像してみてください。 それが始まると、私は3 Ble Pheriperalを得る。 2人目の15人のうちの1人が広告を停止し、ブルートゥースをオフにします。 スキャンの最後に、私のリストには3つのBleデバイスがありますが、そのうちの1つに接続することはできません。

オフになっているものがどれかわかりますか? 彼のステータスはどこで取得できますか?

ありがとうございました。

答えて

0

これは技術的にはドキュメントごとに可能です。 onScanResultコールバックでcallbackTypeパラメータを確認します。 CALLBACK_TYPE_MATCH_LOSTの場合はresultsからデバイスを取得し、キャッシュから削除してください。

+0

これは機能します。私がCALLBACK_TYPE_MATCH_LOSTiを設定すると、mt pheriperalからシグナルがなくなったときに通知を受け取ります。しかし、今私はデバイスDからの最初の広告を取得したときに通知されません: –

+0

あなたはフィルタとして設定する必要はありません。 onscanresultがトリガされたときにコールバックタイプをチェックするだけです。これが機能しない場合は、フィルタを設定している間にコールバックタイプをORにしてください。 – 7383

+0

コールバックonscanresultがフィルタとしてCALLBACK_TYPE_MATCH_LOSTを設定しない場合、CALLBACK_TYPE_ALL_MATCHESのみが返されます。だから私は通常の広告と一致する広告を失うことを区別することはできません –

関連する問題