Saturday, 23 March 2013

WIFI demonstration in Android

The Wi-Fi APIs provide a means by which applications can communiate with the lower-level wireless stack that provides Wi-Fi network access. Almost all information from the device supplicant is available,include the connected network's link speed, ip address ,negotiation state, and more, plus information about other networks that are available.Some other API features include the ability to scan, add,save,terminate and initiate wi-fi connections.
Here i give the code for accessing and scanning the configuration for wi-fi :


package com.codingonandroid;

import java.util.List;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class WiFiDemo extends Activity implements OnClickListener {
private static final String TAG = "WiFiDemo";
WifiManager wifi;
BroadcastReceiver receiver;

TextView textStatus;
Button buttonScan;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
System.out.println("dlink--1");

// Setup UI
textStatus = (TextView) findViewById(R.id.textStatus);
buttonScan = (Button) findViewById(R.id.buttonScan);
System.out.println("dlink--2");
buttonScan.setOnClickListener(this);
System.out.println("dlink--3");
// Setup WiFi
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
System.out.println("dlink--4");
// Get WiFi status
WifiInfo info = wifi.getConnectionInfo();
System.out.println("dlink--5");
textStatus.append("\n\nWiFi Status: " + info.toString());

// List available networks
System.out.println("dlink--6");
List<WifiConfiguration> configs = wifi.getConfiguredNetworks();
System.out.println("dlink--7");
for (WifiConfiguration config : configs) {
System.out.println("dlink--8");
textStatus.append("\n\n" + config.toString());
System.out.println("dlink--9");
}

// Register Broadcast Receiver
if (receiver == null)
System.out.println("dlink--10");
receiver = new WiFiScanReceiver(this);
System.out.println("dlink--11");
registerReceiver(receiver, new IntentFilter(
//System.out.println("dlink--12");
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
System.out.println("dlink--12");
Log.d(TAG, "onCreate()");
}

@Override
public void onStop() {
System.out.println("dlink--13");
unregisterReceiver(receiver);
System.out.println("dlink--14");
}

public void onClick(View view) {
System.out.println("dlink--15");
Toast.makeText(this, "On Click Clicked. Toast to that!!!",
Toast.LENGTH_LONG).show();

if (view.getId() == R.id.buttonScan) {
Log.d(TAG, "onClick() wifi.startScan()");
wifi.startScan();
System.out.println("dlink--16 scaning");
}
}

}


//Scanning results:


package com.codingonandroid;

import java.util.List;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.util.Log;
import android.widget.Toast;

public class WiFiScanReceiver extends BroadcastReceiver {
  private static final String TAG = "WiFiScanReceiver";
  WiFiDemo wifiDemo;

  public WiFiScanReceiver(WiFiDemo wifiDemo) {
    super();
    this.wifiDemo = wifiDemo;
  }

  @Override
  public void onReceive(Context c, Intent intent) {
    List<ScanResult> results = wifiDemo.wifi.getScanResults();
    ScanResult bestSignal = null;
    for (ScanResult result : results) {
      if (bestSignal == null
          || WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0)
        bestSignal = result;
    }

    String message = String.format("%s networks found. %s is the strongest.",
        results.size(), bestSignal.SSID);
    Toast.makeText(wifiDemo, message, Toast.LENGTH_LONG).show();

    Log.d(TAG, "onReceive() message: " + message);
  }

}


No comments:

Post a Comment