2017-07-12 15 views
8

私は公共Wi-Fiアクセスポイントをスキャンする必要があるプロジェクトで作業しています。Android Wi-Fiスキャン:ScanResultのプリンタをフィルタリングします

for (ScanResult scanResult : wifiList) { 
    if (!(scanResult.capabilities.contains("WEP") || 
     scanResult.capabilities.contains("WPA") || 
     scanResult.capabilities.contains("WPA2"))) { 

       openWifiList.add(scanResult);  

    } 
} 

それは私も近くにプリンタを得ることを除いて、正常に動作します:

現在、私はこのようなScanResultをフィルタリングしています。

スキャン中、電話機はネットワークに接続されていません。

AndroidのWi-Fi設定に表示されているWi-Fi接続のリストと同じリストを取得すると仮定します。しかし、Wi-Fi設定ではこれまでに表示されたプリンタはありません。だから、1のための

)私は、は、プリンタが実際にそのよう見えるはずのプリンタは全くScanResultリストに表示することを、それは奇妙だと思いますか?


UPDATE:すべてのWi-Fiのプリンタが表示されていない、例えば、私はそれにいくつかのヒントを得た、そしてそれが現れているプリンタのように思える、特別な機能を持っていますHPプリンタは、HPワイヤレスダイレクトの機能をサポートしています(例:https://h30434.www3.hp.com/t5/Inkjet-Printing/Printer-SSID-appearing-on-my-wi-fi-list/td-p/1705073およびhttps://support.hp.com/rs-en/document/c04577030を参照)。


そして2)は、私はScanResultプリンタに属しているかどうかをチェックすることができます方法はありますか?

これまでのところ、私は一般的なSSID名のフィルタリングしか考えられませんでしたが、それはあまり効率的で信頼性の高いものではありません。

ありがとうございます。

+0

ScanResultの機能フィールドが何らかのヘルプになる可能性があるかどうかを確認します。 –

+0

@AshishPathakはもちろん私が試した最初のものの1つでした。 「通常の」アクセスポイントの機能でもある機能「ESS」のみを表示します。 – soey

答えて

3

1)すべてのプリンタでWiFi Direct protocolがサポートされているわけではありませんが、HPがこれをサポートしているわけではありません(HPワイヤレスダイレクト)。

Android hereからWiFi直接プロトコルに接続する方法の詳細をご覧ください。

2)WiFi direct discoveryは、_ippが含まれている場合、String fullDomainを返します。これはおそらくプリンタです。

+0

提案のおかげで、@auval!私はこれを使用しようとしますが、別のコールバックを設定する必要があります。それは、受信したScanResultsを使って検証する必要があります。私はそれをテストしますが、これはこのプロジェクトではあまりにもオーバーヘッドになると思います。もし "_ipp"が一種の指標であるならば、 "HP-"で始まるSSIDをフィルタリングすることもできます。 – soey

+0

私があなたに指摘したAPI(P2P)は、WiFiダイレクトをサポートする機器を表示します。すべてのデバイスのリストを取得するには、標準のWiFiマネージャで取得したリストを使用してください。次に、P2P APIを使用してプリンタを減算します(SSIDを比較します)。 – auval

+0

SSIDはあなたが信頼できるものではありません。 「HP-」はおそらくプリンタではなく、HPハードウェアに関連している可能性があります。 – auval

関連する問題