Android WiFi Management Sample
来源:互联网 发布:龙门铣床的编程好编码 编辑:程序博客网 时间:2024/05/17 07:15
Method onCreate(Bundle savedInstanceState) is called when the activity(WiFiManageActivity.java) is starting.
These intent broadcasts (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION and WifiManager.RSSI_CHANGED_ACTION) will to be received by BroadcastReceiver (WiFiBroadcastReceiver.java).
Make text about the best signal one connection when received intent action WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.
Make text about all active connections when received intent action WifiManager.RSSI_CHANGED_ACTION.
Activity Class:
package com.paad.wifi;import android.app.Activity;import android.content.Context;import android.content.IntentFilter;import android.net.wifi.WifiManager;import android.os.Bundle;public class WiFiManageActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); setWifiEnabled(wifi); // Register a broadcast receiver that listens for actions. registerReceiver(new WiFiBroadcastReceiver(this, wifi), new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); registerReceiver(new WiFiBroadcastReceiver(this, wifi), new IntentFilter(WifiManager.RSSI_CHANGED_ACTION)); wifi.startScan(); } private void setWifiEnabled(WifiManager wifi) { if (!wifi.isWifiEnabled() && wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING) { wifi.setWifiEnabled(true); } }}
BroadcastReceiver Class:
package com.paad.wifi;import java.util.List;import com.paad.util.NetworkUtil;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.wifi.ScanResult;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.util.Log;import android.widget.Toast;public class WiFiBroadcastReceiver extends BroadcastReceiver { private Context context = null; private WifiManager wifi = null; public WiFiBroadcastReceiver(Context context, WifiManager wifi) { this.context = context; this.wifi = wifi; } @Override public void onReceive(Context context, Intent intent) { if (WifiManager.RSSI_CHANGED_ACTION.equals(intent.getAction())) { findActiveConnection(); } if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(intent.getAction())) { findBestSignalConnection(); } } private void findBestSignalConnection() { List<ScanResult> results = wifi.getScanResults(); ScanResult bestSignal = null; for (ScanResult result : results) { if (bestSignal == null || WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0) bestSignal = result; } String connSummary = String.format("%s networks found. %s is " + "the strongest.", results.size(), bestSignal.SSID); Toast.makeText(context, connSummary, Toast.LENGTH_LONG).show(); Log.d(NetworkUtil.TAG, connSummary); } private void findActiveConnection() { WifiInfo info = wifi.getConnectionInfo(); if (info.getBSSID() != null) { String ssid = info.getSSID(); String units = WifiInfo.LINK_SPEED_UNITS; int speed = info.getLinkSpeed(); int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5); String ipAddress = NetworkUtil.intToIp(info.getIpAddress()); String connSummary = String.format("Connected to %s at %s%s. " + "Strength %s/5. " + "IP %s", ssid, speed, units, strength, ipAddress); Toast.makeText(context, connSummary, Toast.LENGTH_LONG).show(); Log.d(NetworkUtil.TAG, connSummary); } }}
Util Class:
package com.paad.util;public class NetworkUtil { public final static String TAG = "WiFi"; public static String intToIp(int i) { return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF); }}
Full Codes
0 0
- Android WiFi Management Sample
- android获取wifi信息sample code
- WiFi GUI management tool
- WIFI技术-Radio Resource Management
- 不看死不瞑目的文档 :Solaris container - workload Management Sample
- 【计划】Android Sample Codes
- Android导入sample项目
- Android Sample 之 BasicNetworking
- android SDK sample说明
- Android Sample 之 BasicNetworking
- android sample 之 其他
- Android Studio Import Sample
- Android Google Sample
- Android Jni sample
- Android - async task sample
- Android - dialog sample
- Android 官方Sample
- Android SDK Sample
- scrapy 爬取https网页时出现ssl错误
- iOS开发中调用系统相册、相机 显示中文标题
- UIGraphicsBeginImageContext
- scrapy 如何修改请求头
- Leetcode: Power of Two
- Android WiFi Management Sample
- 常见算法笔试题的研究2(一元多项表达式的化简)
- 单例模式在android中的应用
- Leetcode: Contains Duplicate
- Leetcode: Number of Bits
- 进程管理
- 华为上机题7(四则运算)
- 字节型TCP协议解析
- TCPServer