Android-判断某个网络是否在网络列表中
2016-08-21 21:01
363 查看
此功能主要用的知识点有下:WifiManager类,获取对象的方法如下:mWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);通过调用这个对象的getScanResults方法,可以获取当前扫描到的网络列表List,即:List<ScanResult>。
CountDownTimer类(这个类在倒计时的Button中也曾用到),此类是抽象类,继承这个类要实现两个方法:
onTick方法,倒计时的过程中会不断调用,里面的参数表示距离倒计时结束的时间。
onFinish方法,倒计时结束时调用。
布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn"
android:onClick="isWifiExist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查找网络" />
</RelativeLayout>
MainActivity.java代码如下:public class MainActivity extends Activity {
public static final String TAG = "YAYUN";
private static WifiManager mWifiManager;
static boolean isCanScan = false;
private TimeCount timeCount;
private ProgressDialog progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
timeCount = new TimeCount(20 * 1000, 1000);//实例化TimeCount类
// 20*1000表示总倒计时长为20秒,调用间隔为1秒。
progress = new ProgressDialog(this);
}
public void isWifiExist(View view) {
progress.setTitle("正在搜索...");
progress.show();
timeCount.start();//调用start方法开始倒计时
}
class TimeCount extends CountDownTimer {
//构造方法
public TimeCount(long totalTime, long interval) {
super(totalTime, interval);
}
@Override
public void onTick(long millisUntilFinished) {//覆写方法-计时中
if (isWifiCanScan("iPhone")) {
progress.dismiss();//隐藏进度框
timeCount.cancel();//取消倒计时
MainActivity.mButton.setText("已找到该网络");
}
}
@Override
public void onFinish() {//覆写方法,即时结束
MainActivity.mButton.setText("找不到该网络");
progress.dismiss();
isCanScan = false;
}
}
public boolean isWifiCanScan(String SSID) {
boolean isExist = false;
List<ScanResult> mWifiList = mWifiManager.getScanResults();
if (mWifiList == null) {
return false;
}
for (ScanResult existingWifi : mWifiList) {
if (existingWifi.SSID.equals(SSID)) {
isExist = true;
return isExist;
}
}
return false;
}
}isWifiCanScan方法判断扫描出的网络列表中是否包含指定的某个网络,首先通过getScanResult方法获取所有扫描到的网络列表,然后对网络列表进行遍历,通过SSID进行判断。若找到了就返回true,找不到则返回false。设置了倒计时时间为20秒,每隔一秒钟调用一次方法判断是否找到了该网络,若找到了则隐藏进度框并调用CountDownTimer类的cancel方法取消倒计时。若找不到也将隐藏进度框并设置Button的text为“找不到该网络”。运行实例如下:
![](https://img-blog.csdn.net/20160821205754934?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160821205842451?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
打开名为“iPhone”的热点,再点击“查找网络”按钮,显示如下:
![](https://img-blog.csdn.net/20160821205857154?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
谢谢关注我的微信公众号,觉得好可以分享到朋友圈哦.
![](https://img-blog.csdn.net/20160819230805209?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
请关注我的新浪微博:AndroidTip
CSDN博客:http://blog.csdn.net/yayun0516
CountDownTimer类(这个类在倒计时的Button中也曾用到),此类是抽象类,继承这个类要实现两个方法:
onTick方法,倒计时的过程中会不断调用,里面的参数表示距离倒计时结束的时间。
onFinish方法,倒计时结束时调用。
布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn"
android:onClick="isWifiExist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查找网络" />
</RelativeLayout>
MainActivity.java代码如下:public class MainActivity extends Activity {
public static final String TAG = "YAYUN";
private static WifiManager mWifiManager;
static boolean isCanScan = false;
private TimeCount timeCount;
private ProgressDialog progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
timeCount = new TimeCount(20 * 1000, 1000);//实例化TimeCount类
// 20*1000表示总倒计时长为20秒,调用间隔为1秒。
progress = new ProgressDialog(this);
}
public void isWifiExist(View view) {
progress.setTitle("正在搜索...");
progress.show();
timeCount.start();//调用start方法开始倒计时
}
class TimeCount extends CountDownTimer {
//构造方法
public TimeCount(long totalTime, long interval) {
super(totalTime, interval);
}
@Override
public void onTick(long millisUntilFinished) {//覆写方法-计时中
if (isWifiCanScan("iPhone")) {
progress.dismiss();//隐藏进度框
timeCount.cancel();//取消倒计时
MainActivity.mButton.setText("已找到该网络");
}
}
@Override
public void onFinish() {//覆写方法,即时结束
MainActivity.mButton.setText("找不到该网络");
progress.dismiss();
isCanScan = false;
}
}
public boolean isWifiCanScan(String SSID) {
boolean isExist = false;
List<ScanResult> mWifiList = mWifiManager.getScanResults();
if (mWifiList == null) {
return false;
}
for (ScanResult existingWifi : mWifiList) {
if (existingWifi.SSID.equals(SSID)) {
isExist = true;
return isExist;
}
}
return false;
}
}isWifiCanScan方法判断扫描出的网络列表中是否包含指定的某个网络,首先通过getScanResult方法获取所有扫描到的网络列表,然后对网络列表进行遍历,通过SSID进行判断。若找到了就返回true,找不到则返回false。设置了倒计时时间为20秒,每隔一秒钟调用一次方法判断是否找到了该网络,若找到了则隐藏进度框并调用CountDownTimer类的cancel方法取消倒计时。若找不到也将隐藏进度框并设置Button的text为“找不到该网络”。运行实例如下:
打开名为“iPhone”的热点,再点击“查找网络”按钮,显示如下:
谢谢关注我的微信公众号,觉得好可以分享到朋友圈哦.
请关注我的新浪微博:AndroidTip
CSDN博客:http://blog.csdn.net/yayun0516
相关文章推荐
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- Android中判断网络功能是否可用
- Android判断当前网络是否可用--示例代码
- Android中判断有无可用网络(是否是3G或者WIFI网络)
- Android判断GPS、wifi、移动网络是否可用的探知函数
- Android判断网络状态是否断开
- android 判断网络是否可用
- android中判断网络连接是否可用
- android判断是否连接网络
- android判断网络是否连上
- android判断是否存在网络
- android判断是否连接网络
- SDK1.5下 android判断是否存在网络
- android 判断是否有可用网络
- Android判断是否有可用网络和判断WIFI是否ON
- 判断android手机当前是否接入网络
- android 入门学习笔记 检查网络连接是否正常 判断是否为横屏
- android判断网络是否连接
- android 程序中判断当前是否连接网络,网络是否可用
- android判断网络是否连接