最終更新:
moonlight_aska 2011年08月28日(日) 21:57:16履歴
WiFiのアクセスポイントをスキャンするには, WifiManagerクラスを利用する.


- WifiManager02.java
- getSystemServiceメソッドで, WIFI_SERVICEを指定してWifiManagerのインスタンスを取得する.
- WifiManager#startScanメソッドで, APのスキャンを開始する.
- WifiManager#getScanResultメソッドで, スキャン結果を取得する.
- ScanResult#getメソッドで, スキャン結果を取り出す.
BSSID | APのMACアドレス |
SSID | ネットワーク名 |
capabilities | 暗号化情報 |
frequency | チャンネル周波数(MHz) |
level | 信号レベル(dBm) |
package com.moonlight_aska.android.wifimanager02;
import java.util.List;
import android.app.ListActivity;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class WifiManager02 extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WifiManager manager = (WifiManager)getSystemService(WIFI_SERVICE);
if(manager.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
// APをスキャン
manager.startScan();
// スキャン結果を取得
List<ScanResult> apList = manager.getScanResults();
String[] aps = new String[apList.size()];
for(int i=0; i<apList.size(); i++) {
aps[i] = "SSID:" + apList.get(i).SSID + "\n"
+ apList.get(i).frequency + "MHz " + apList.get(i).level + "dBm";
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, aps);
setListAdapter(adapter);
}
}
}
- AndroidManifest.xml
- Wifiの状態を参照するには, "android.permission.ACCESS_WIFI_STATE"パーミションを設定する.
- Wifiの状態を変更するには, "android.permission.CHANGE_WIFI_STATE"パーミションを設定する.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.moonlight_aska.android.wifismanager02"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".WifiManager02"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
このページへのコメント
askaです.
回答遅くなってすみません.
APが見つからないことと, リスト表示されないことを分けて考えましょう.
・近くにAPがあるとして, apsにAP情報が登録されるかどうか, Log出力して確認してみてください.
・apsのリストにAP情報があるなら, それをListActivityで表示しているだけです. ListActivity使われてますか?
連続で申し訳ございません。
layoutのactivity○○.xmlを教えていただけませんでしょうか。
また、作成するファイルは2つでよいのでしょうか。
こちらもご教授いただけるとうれしいです。よろしくお願いいたします。
初めまして、さやかと申します。
初めてコメントさせていただきます。
今、この記事のプログラムを作成しているのですが、リストが上手く表示されていないのか、実行しても実機になにも表示されません。
お忙しいとは思いますが、なにとぞご教授お願いいたします。
お忙しいところお返事ありがとうございます。
表示方法をListViewに変えたところ問題なくできるようになりました。
ありがとうございました!
askaです.
どのような実装をされているかわからないので,
こちらではエラー原因はわかりません.
エラーが発生したら, まずLogCatの表示を確認しましょう.
どこでどんなエラーが発生しているかがわかるはずです.
頑張ってください!!