BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #17030同步于 2014/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

Android wifi轮询接入的一个事

buptmuye
2014/10/21镜像同步17 回复
想实现一个功能,终端之前连接过两个wifi,现在想实现一个app,点击程序图标就开始每隔15秒切换wifi接入点,不需要界面,放在后台以service运行就好,至于关闭就是手动“强制停止”,这个要怎么实现呀? 我查了一下资料,主要使用wifiManager,会用到compareSignalLevel,但是从没接触过Android,还希望达人指点一二[ema23] 模仿网上找的资料写了一段Main和service,但测试发现并没有做到切换(都是没密码的那种wifi),求达人给瞧瞧怎么回事。 package com.example.wifi; import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startService(new Intent(this,WifiService.class)); } } 切换的程式如下,也不知道对不对-_-|| package com.example.wifi; import java.util.List; import android.app.Service; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.IBinder; public class WifiService extends Service { private WifiManager mWifiManager; private WifiInfo mWifiInfo; private List<WifiConfiguration> mWifiConfiguration; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); mWifiInfo = mWifiManager.getConnectionInfo(); } @Override public void onDestroy() { super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Thread thread = new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(15000); connectConfiguration(); } catch (InterruptedException e) { e.printStackTrace(); } } } }); thread.start(); return super.onStartCommand(intent, flags, startId); } public void connectConfiguration() { Thread connectThread = new Thread(new Runnable() { @Override public void run() { mWifiConfiguration = mWifiManager.getConfiguredNetworks(); if (mWifiConfiguration != null) { for (int i = 0; i < mWifiConfiguration.size(); i++) { if (mWifiInfo.getNetworkId() != mWifiConfiguration .get(i).networkId) { mWifiManager.enableNetwork( mWifiConfiguration.get(i).networkId, true); break; } } } } }); connectThread.start(); } }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2014/10/21
我查查看 通过『我邮2.0』发布
buptmuye机器人#2 · 2014/10/21
谢谢大牛 通过『我邮2.0』发布
icyfox机器人#3 · 2014/10/21
刚才试了下 觉得自动切换应该是没问题 compareSignalLevel是什么 自己还要找最好的信号点么? 【 在 buptmuye (BUPT_木叶) 的大作中提到: 】 : 谢谢大牛 : 通过『我邮2.0』发布
buptmuye机器人#4 · 2014/10/21
赞呀![ema23] 噢 compareSignalLevel是比较信号强度用的,这里没什么作用啦,看错了[ema13] 现在是手机静态连接过两个wifi(tplink1 tplink2),能够简单的实现每隔15秒切换一次连接就行了 【 在 icyfox 的大作中提到: 】 : 刚才试了下 觉得自动切换应该是没问题 : compareSignalLevel是什么 自己还要找最好的信号点么? :
buptmuye机器人#5 · 2014/10/21
师兄,能否教教小弟怎么做呀? 【 在 icyfox 的大作中提到: 】 : 刚才试了下 觉得自动切换应该是没问题 : compareSignalLevel是什么 自己还要找最好的信号点么? :
sandstarpod机器人#6 · 2014/10/21
写一个定时器15秒 切换不就完了。。 想必你那两个 wifi 一直都不变的。。。
buptmuye机器人#7 · 2014/10/21
没写过android程序的干着急[ema1] 【 在 sandstarpod 的大作中提到: 】 : 写一个定时器15秒 切换不就完了。。 想必你那两个 wifi 一直都不变的。。。
buptmuye机器人#8 · 2014/10/21
你好,我模仿着网上找到的一些资料写了一段切换的程式,是不是还要写一个main.java并定义计时器呢? import java.util.List; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.WifiLock; public class WifiAdmin { //定义WifiManager对象 private WifiManager mWifiManager; //定义WifiInfo对象 private WifiInfo mWifiInfo; //网络连接列表 private List<WifiConfiguration> mWifiConfiguration; public WifiAdmin(Context context) { //取得WifiManager对象 mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //取得WifiInfo对象 mWifiInfo = mWifiManager.getConnectionInfo(); } public void connectConfiguration() { mWifiConfiguration = mWifiManager.getConfiguredNetworks(); // 连接配置好的指定ID的网络 if (mWifiConfiguration != NULL) { for (int i = 0; i < mWifiConfiguration.size(); i++) { if (mWifiInfo.getNetworkId() != mWifiConfiguration.get(i).networkId) { mWifiManager.enableNetwork(mWifiConfiguration.get(i).networkId, true); break; } } } } } 能否指点一下,谢谢[ema23] 【 在 sandstarpod 的大作中提到: 】 : 写一个定时器15秒 切换不就完了。。 想必你那两个 wifi 一直都不变的。。。
buptmuye机器人#9 · 2014/10/21
你好,我模仿着网上找到的一些资料写了一段切换的程式,是不是还要写一个main.java并定义计时器呢? import java.util.List; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.WifiLock; public class WifiAdmin { //定义WifiManager对象 private WifiManager mWifiManager; //定义WifiInfo对象 private WifiInfo mWifiInfo; //网络连接列表 private List<WifiConfiguration> mWifiConfiguration; public WifiAdmin(Context context) { //取得WifiManager对象 mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //取得WifiInfo对象 mWifiInfo = mWifiManager.getConnectionInfo(); } public void connectConfiguration() { mWifiConfiguration = mWifiManager.getConfiguredNetworks(); // 连接配置好的指定ID的网络 if (mWifiConfiguration != NULL) { for (int i = 0; i < mWifiConfiguration.size(); i++) { if (mWifiInfo.getNetworkId() != mWifiConfiguration.get(i).networkId) { mWifiManager.enableNetwork(mWifiConfiguration.get(i).networkId, true); break; } } } } } 能否指点一下,谢谢[ema23] 【 在 sandstarpod 的大作中提到: 】 : 写一个定时器15秒 切换不就完了。。 想必你那两个 wifi 一直都不变的。。。