2016/11/09

Android で付近の Wi-Fi Access Point を検索して一覧を取得する

11 件のコメント:

さやか さんのコメント...

投稿読まさせていただきました。初めてコメントさせていただきます。
この記事について質問させていただいてもよろしいでしょうか。
お返事お待ちしております。
よろしくお願いいたします。

Yusuke Miura さんのコメント...

さやかさん、コメントありがとうございます。
質問はいつでもどうぞ。

さやか さんのコメント...

お返事ありがとうございます。
現在、周囲のWi-Fiのアクセスポイント を検索し、接続されていないWi-Fiも含めてRSSIを取得するプログラムを作成しています。接続しているWi-FiのRSSIは取得できましたが、接続されていないWi-FiのRSSIの取得の方法がわかりません。どうかご教授いただけませんでしょうか。お返事お待ちしております。

Yusuke Miura さんのコメント...

ScanResult の level に関して記述が曖昧でしたね。失礼しました。

本文にも追記しておきましたが、level の値は生の電波強度で単位は dBm です。これをいわゆる RSSI に変換するには WifiManager.calculateSignalLevel(int,int) を使用します。

さやか さんのコメント...

お返事ありがとうございます。このカードを使えば接続していないwifiの電波強度も表示できるということぇしょうか。

また、List…を使用するとlistviewを使って表示させられないのですが、何が原因なのかわかりません。こちらも教えていただけると助かります。
お返事お待ちしております。よろしくお願いいたします。

さやか さんのコメント...

誤字がひどいので、訂正させていただきます。
カード→コード、できるということぇしょうか→できるということでしょうか、List…→List…

Yusuke Miura さんのコメント...

はい。
WifiManager.getScanResults() で付近のアクセスポイントの電波強度が取得できます。

表示に関してなのですが、このコメント欄で ListView の使い方を説明するのは厳しいので、まずは本文中のコードにあるように LogCat で ScanResults の内容を表示して、値が取れているか確認してみることをお勧めします。

さやか さんのコメント...


お返事ありがとうございます。
何度も質問をして申し訳ございません。
WifiManager.getScanResults()で、付近のwifi の情報をスキャンし、List< Scan Result>で、ScanResultsに一つづつ入れ、そこから、SSIDやRSSIなどが参照できるという認識で正しいでしょうか。

ScanResultsを使ってないような表示はできているのですが、List< Scan Result>を使用すると表示できなくなってしまいます…
どうしたら良いのかわからなくて困っています。
よろしくお願いいたします。

Yusuke Miura さんのコメント...

ちょっと質問が漠然としすぎですね。
「List< Scan Result>を使用すると表示できなく...」 だけだと、大きくわけて以下の2つが考えられるかと思います。

- List がそもそも取れていない
- ListView の使い方が間違っている

さらに、それぞれに様々な状況が考えられます。
前者であれば、

- ScanResult が一つも取れない
- ScanResult は取れるけど、level がとれない
- 例外が発生してしまう

などなど。数え切れません。
こういった原因を一つづつ見つけて直していくのをデバッグといいますが、このコメント欄で一つ一つそのサポートをするのはかなり難しいです。
そういった質問を受け付けるサービスがあるので、そちらを利用されてはどうでしょうか?
コードを貼り付けることも出来るので、回答が得られやすいかもしれません。

teratailスタック・オーバーフロー 等が有名です。

ただ、こういったサイトで質問する場合も、ただ「動きません」「出来ません」だと回答する方も困ってしまいます。
なるべく具体的に、そして自力で調べられることは調べてから質問するようにすると良いでしょう。

さやか さんのコメント...

パーミッションを修正することで解決いたしました。
このサイトを参考にさせていただいて、作成することができました。ご丁寧に回答いただき感謝いたします。
ありがとうございました。

Yusuke Miura さんのコメント...

あまりお役にたてませんでしたが、解決したようで良かったです。
Android のパーミッション周りはどんどん複雑になっているので厄介ですよね。