3

周囲のすべての Wifi デバイスを検出し、Android デバイスから信号強度を取得する方法はありますか。

実験的な使用のために、Androidデバイスでアプリを実行したいと思います。アプリは、各電話と他の電話の間の信号強度を記録する必要があります。外部ルーターを使用せずに、電話間で直接「接続」したいと思います。AndroidフォンにはWifiルーターとして機能する機能があり、他のデバイスで検出される可能性があるため、これは可能であると思います. しかし、プログラムでこれにアプローチする方法がわかりません。

誰でも助けることができますか?これは可能だと思いますか?

4

1 に答える 1

1

近くのすべてのwifiをスキャンしたい場合は、これを試してください

wifiManager、BroadcastReceiverを作成し、非同期タスクを使用してすべてのwifiをスキャンすると、スキャンの結果がブロードキャストレシーバーに取得されます

WifiManager wManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
// wifi Scan
    new wifiScan().execute(); // call to async task

    BroadcastReceiver br = new BroadcastReceiver() {
    @Override
    public void onReceive(Context c, Intent intent) {
    wifiList = wManager.getScanResults();

    for (int i = 0; i < wifiList.size(); i++) {
    ScanResult scanresult = wManager.getScanResults().get(i);
    ssid = scanresult.SSID;//ssid is Name of wifi (String)
    bid = scanresult.BSSID;// bssid: MAC of wifi (String)
    level = scanresult.level;//level: strength of wifi(int)
        }

        };



// Async task

public class wifiScan extends AsyncTask<Void, String, Void> {
        int i = 0;

    protected void onPreExecute() {

    }

    protected void onPostExecute(Void results) {
         if (results != null) { if (i < 6) { new wifiScan().execute(); 
                     }
                  }


    }

    @Override
    protected Void doInBackground(Void... params) {
        registerReceiver(br, new IntentFilter(
                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        wManager.startScan();
        return null;
    }
}

Wifi Direct (P2P)を使用すると、ルーター/アクセス ポイントを使用せずに、wifi 経由で 2 つのデバイス間で通信できます。この機能は Android 4.0 からアクセスできると思います。それ以外の場合はわかりません。

于 2013-10-26T06:06:27.090 に答える