2017-06-27 12 views
0

ブロードキャストレシーバー設定のクラスがあります。受信機は、次のアクションをリッスン:Android bluetoothadapterがACTION_DISCOVERY_FINISHEDを発光していません

ACTION_FOUND 
ACTION_DISCOVERY_STARTED 
ACTION_DISCOVERY_FINISHED 

発見し、予想通り、しかし、BluetoothAdapterのドキュメントが発見スキャンは〜12秒かかりますし、その後ACTION_DISCOVERY_FINISHEDが続いていることを指定します発せられたアクションを開始しました。 cancelDiscovery()を呼び出すことによって、完成したアクションの放出を手動でトリガーすることしかできないので、これは当てはまりません。私はそれを十分に長く実行したままにすると、時にはイベントが放出されます(しかし、これは1〜2分以上かかることがあります)。時々、それは起こることさえありません。 Bluetoothを無効にしてスキャンを強制的に終了すると、その操作は期待どおりに行われます。

このスキャンは長い時間がかかりますが、手動でスキャン処理を制御する必要があります。つまり、12秒のカウントダウン後にスキャン処理を自分で終了することになっていますか?あるいは、私はドキュメントで何かを見逃しています。すべてのアクションが到着したことを証明するように、broadcastreceiverは正しく設定されています。

+0

この動作は通常どおり動作しません。残念ながら、特に古いデバイスでは、多くのバリエーションがあります。どのような携帯電話やアンドロイドのバージョン? –

+0

Nexus 5、5.1.1(Lollipop)。私もXperia Z3を持っています。これはスキャンを開始したり停止したりすることができるようですが、スキャン中にデバイスを見つけられません(6.0.1 Marshmallow) –

+0

申し訳ありませんが、回避策を講じなければならないと思いますAndroidの各バージョンとメーカーの違いに合わせて残念ながら、これはかなり正常になっています。独自のスキャンラッパーを作成することができます。スキャンラッパーは、タイマーを使用してスキャンを終了し、必要な期間の最後までスキャンを繰り返します。スキャンを繰り返すと、多くのデバイスが見つかることがよくあります。 –

答えて

0

Nexus 5をAndroidバージョン6.0.1にアップグレードした後、ACTION_DISCOVERY_FINISHEDブロードキャストでもう少し一貫した結果が得られているようです。また、私の他のアンドロイド携帯電話(Xperia Z3)がhttps://developer.android.com/about/versions/marshmallow/android-6.0-changes.htmの変更に応じてデバイスを検出していないことが明らかになりました。つまり、実行時に尋ねる必要があるACCESS_COARSE_LOCATION権限も必要です。これが行われていない場合、ブロードキャストはアプリケーションによって受信されません。私は誰かがこれが有用であると願っています。

関連する問題