返回信息流想实现一个功能,终端之前连接过两个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();
}
}
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #17030同步于 2014/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
Android wifi轮询接入的一个事
buptmuye
2014/10/21镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
刚才试了下 觉得自动切换应该是没问题
compareSignalLevel是什么 自己还要找最好的信号点么?
【 在 buptmuye (BUPT_木叶) 的大作中提到: 】
: 谢谢大牛
: 通过『我邮2.0』发布
赞呀![ema23]
噢 compareSignalLevel是比较信号强度用的,这里没什么作用啦,看错了[ema13]
现在是手机静态连接过两个wifi(tplink1 tplink2),能够简单的实现每隔15秒切换一次连接就行了
【 在 icyfox 的大作中提到: 】
: 刚才试了下 觉得自动切换应该是没问题
: compareSignalLevel是什么 自己还要找最好的信号点么?
:
师兄,能否教教小弟怎么做呀?
【 在 icyfox 的大作中提到: 】
: 刚才试了下 觉得自动切换应该是没问题
: compareSignalLevel是什么 自己还要找最好的信号点么?
:
没写过android程序的干着急[ema1]
【 在 sandstarpod 的大作中提到: 】
: 写一个定时器15秒 切换不就完了。。 想必你那两个 wifi 一直都不变的。。。
你好,我模仿着网上找到的一些资料写了一段切换的程式,是不是还要写一个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 一直都不变的。。。
你好,我模仿着网上找到的一些资料写了一段切换的程式,是不是还要写一个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 一直都不变的。。。