Android App for detecting WiFi Signal (with Source Code)

Download APK Download Source Code Contact Us

Wifi Android project based on Wi-Fi APIs provide a means by which applications can communicate with the lower-level wireless stack that provides Wi-Fi network access. Almost all information from the device supplicant is available, including the connected network’s link speed, IP address, negotiation state, and more, plus information about other networks that are available.

WifiManager class provides the primary API for managing all aspects of Wi-Fi connectivity.

About Android App:

Android operating system is the fast growing mobile operating system in the market. Android provides solution for users to develop their own apps and upload to app store and help users to download for free of cost.

Layout Code: activity_main. Xml
When application is executed this is the first layout design that will run which will load width, height, load back ground details..etc.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button android:id="@+id/btn_wifi"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="OFF"></Button>

    <ListView android:id="@+id/list_view_wifi"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/btn_wifi" >
    </ListView>

</RelativeLayout>

Layout Code: single_list. Xml
This xml file for single item view of list.


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView android:id="@+id/txt_wifi_provider"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:textSize="16dp"
        android:textStyle="bold"></TextView>

</LinearLayout>

Java File : MainActivity.java
MainActivity.java file in package com.mobilemerit.wifi.
Main activity file will load design form like buttons, text view, on click functionality, display text.

package com.mobilemerit.wifi;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;

import com.mobilemerit.adapter.ListAdapter;
import com.mobilemerit.javafiles.ImportDialog;
import com.mobilemerit.wifi.R;

public class MainActivity extends Activity implements OnClickListener {
	Button setWifi;
	WifiManager wifiManager;
	WifiReceiver receiverWifi;
	List<scanresult> wifiList;
	List<string> listOfProvider;
	ListAdapter adapter;
	ListView listViwProvider;
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		listOfProvider = new ArrayList</string><string>();
		
		/*setting the resources in class*/
		listViwProvider = (ListView) findViewById(R.id.list_view_wifi);
		setWifi = (Button) findViewById(R.id.btn_wifi);
		
		setWifi.setOnClickListener(this);
		wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
		/*checking wifi connection
		 * if wifi is on searching available wifi provider*/ 
		if (wifiManager.isWifiEnabled() == true) {
			setWifi.setText("ON");
			scaning();
		}
		/*opening a detail dialog of provider on click   */
		listViwProvider.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView< ?> parent, View view,
					int position, long id) {
					ImportDialog action = new ImportDialog(MainActivity.this, (wifiList.get(position)).toString());
					action.showDialog();
			}
		});
	}

	private void scaning() {
		// wifi scaned value broadcast receiver
		receiverWifi = new WifiReceiver();
		// Register broadcast receiver
		// Broacast receiver will automatically call when number of wifi
		// connections changed
		registerReceiver(receiverWifi, new IntentFilter(
				WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
		wifiManager.startScan();
		
	}

	/*setting the functionality of ON/OFF button*/
	@Override
	public void onClick(View arg0) {
		/* if wifi is ON set it OFF and set button text "OFF" */
		if (wifiManager.isWifiEnabled() == true) {
			wifiManager.setWifiEnabled(false);
			setWifi.setText("OFF");
			listViwProvider.setVisibility(ListView.GONE);
		} 
		/* if wifi is OFF set it ON 
		 * set button text "ON" 
		 * and scan available wifi provider*/
		else if (wifiManager.isWifiEnabled() == false) {
			wifiManager.setWifiEnabled(true);
			setWifi.setText("ON");
			listViwProvider.setVisibility(ListView.VISIBLE);
			scaning();
		}
	}

	protected void onPause() {
		super.onPause();
		unregisterReceiver(receiverWifi);
	}

	protected void onResume() {
		registerReceiver(receiverWifi, new IntentFilter(
				WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
		super.onResume();
	}

	class WifiReceiver extends BroadcastReceiver {

		// This method call when number of wifi connections changed
		public void onReceive(Context c, Intent intent) {
			wifiList = wifiManager.getScanResults();
			
			/* sorting of wifi provider based on level */
			Collections.sort(wifiList, new Comparator<scanresult>() {
				@Override
				public int compare(ScanResult lhs, ScanResult rhs) {
					return (lhs.level > rhs.level ? -1
							: (lhs.level == rhs.level ? 0 : 1));
				}
			});
			listOfProvider.clear();
			String providerName;
			for (int i = 0; i < wifiList.size(); i++) {
				/* to get SSID and BSSID of wifi provider*/
				providerName = (wifiList.get(i).SSID).toString()
						+"\n"+(wifiList.get(i).BSSID).toString();
				listOfProvider.add(providerName);
			}
			/*setting list of all wifi provider in a List*/
			adapter = new ListAdapter(MainActivity.this, listOfProvider);
			listViwProvider.setAdapter(adapter);
			
			adapter.notifyDataSetChanged();
		}
	}
}

Java File : ListAdapter.java
ListAdapter.java file in package com.mobilemerit.adapter.
ListAdapter class set every available wifi providers list in a listView.

package com.mobilemerit.adapter;

import java.util.List;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import com.mobilemerit.wifi.R;

public class ListAdapter extends ArrayAdapter<string> {
	Activity mActivity;
	List</string><string> wifiName;
	private LayoutInflater inflater;

	public ListAdapter(Activity a, List</string><string> wifiName) {
		super(a, R.layout.single_list, wifiName);
		mActivity = a;
		inflater = LayoutInflater.from(mActivity);
		this.wifiName = wifiName;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		convertView = inflater.inflate(R.layout.single_list, parent, false);
		TextView wifiProvider = (TextView) convertView
				.findViewById(R.id.txt_wifi_provider);
		wifiProvider.setText(wifiName.get(position));
		return convertView;
	}

}
</string>

Java File : ImportDialog.java
importDialog.java file in package com.mobilemerit.javafiles.
ImportDialog class gives a dialog with full detail of wifi provider.

package com.mobilemerit.javafiles;

import android.app.Activity;
import android.app.AlertDialog;

public class ImportDialog {
	final CharSequence[] items = { "Take Photo From Gallery",
			"Take Photo From Camera" };
	Activity activity;
	AlertDialog dialog;
	AlertDialog.Builder builder;
	String detailProvader;

	public ImportDialog(Activity a, String detailProvader) {
		this.activity = a;
		this.detailProvader = detailProvader;
		builder = new AlertDialog.Builder(a);
	}

	public void showDialog() {

		builder.setTitle("wifi Provider Details");
		builder.setMessage(detailProvader);

		AlertDialog alert = builder.create();
		alert.show();
	}
}

Mainifest.xml
This is the main configuration file for wifi android project. This xml code will load required permission and main layout by default.

< ?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilemerit.wifi"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses -sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19"></uses>

    <uses -permission android:name="android.permission.ACCESS_WIFI_STATE"></uses>
    <uses -permission android:name="android.permission.CHANGE_WIFI_STATE"></uses>

    <application android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity android:name="com.mobilemerit.wifi.MainActivity"
            android:label="@string/app_name" >
            <intent -filter>
                <action android:name="android.intent.action.MAIN"></action>

                <category android:name="android.intent.category.LAUNCHER"></category>
            </intent>
        </activity>
    </application>

</manifest>
Android App for detecting WiFi Signal
Android App for detecting WiFi Signal
Android App for detecting WiFi Signal

Download APK Download Source Code Contact Us

Related Posts