android WIFI to unity

 

本案例实现安卓自动搜索附近wifi和连接wifi,参考了网上很多人的做法,最终总结出来的一套个人觉得比较清晰的案例,给大家分享一下,最终做成jar包给unity服务。

一:wifi涉及到的权限

    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />允许程序改变网络连接状态
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 允许程序改变Wi-Fi连接状态
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 获取网络信息状态
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 获取当前WiFi接入的状态以及WLAN热点的信息
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失
   
    <uses-permission android:name="android.permission.INTERNET" />   访问网络连接

二:android系统相关wifi类

WifiManager

wifi管理的API,包括wifi的扫描,建立连接,配置,断开连接等等。

wifiManager.isWifiEnabled();//判断是否开启

wifiManager.setWifiEnabled(true);//设置开启关闭

注意,调用setWifiEnabled后,系统进行wifi模块的开启需要一定时间,此时通过wifiManager.getWifiState()获取的状态来判断是否完成。

WifiManager.WIFI_STATE_DISABLED : WIFI网卡不可用(1)

WifiManager.WIFI_STATE_DISABLING : WIFI网卡正在关闭(0)

WifiManager.WIFI_STATE_ENABLED : WIFI网卡可用(3)

WifiManager.WIFI_STATE_ENABLING : WIFI网正在打开(2) (WIFI启动需要一段时间)

WifiManager.WIFI_STATE_UNKNOWN  : 未知网卡状态

具体参考:http://developer.android.com/reference/android/net/wifi/WifiManager.html

WifiInfo

描述已经建立连接的wifi信息。包括ip,mac地址,连接速度

具体参考:http://developer.android.com/reference/android/net/wifi/WifiInfo.html

ConnectivityManager

监控网络连接,当网络连接发生变化时返送广播,当一个网络请求连接失败的时候他会自动转到其他可连接网络等等

获取方式Context.getSystemService(Context.CONNECTIVITY_SERVICE)

具体参考:https://developer.android.com/reference/android/net/ConnectivityManager.html

WifiLock (WifiManager.WifiLock)

它是wifiManager里面的一个类。服务于WifiManager。当无线wifi有一段事件没用的时候系统可能会自动关闭,WifiLock 可以让无线wifi保持唤醒状态

具体参考:https://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html

ScanResult(包是:android.net.wifi。不要import错包,因为蓝牙包中android.blutooth.le也有这个类)

开启扫描后搜索到的wifi热点的信息,包括SSID,Capbilities,frequency,level等等

具体介绍参考:http://developer.android.com/reference/android/net/wifi/ScanResult.html

WifiConfiguration

描述wifi的连接信息,包括SSID,SSID隐藏,password等等设置。

具体介绍参考:https://developer.android.com/reference/android/net/wifi/WifiConfiguration.html

 

二:android工程(报名也要修改成unity工程包名字)

1:PTWifiConnect

package com.yxh.wifi;

import java.util.List;

import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;

public class PTWifiConnect {
WifiManager wifiManager;
//wifi连接类型
public enum WifiCipherType{
WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID
}
public PTWifiConnect(WifiManager wifiManager){
this.wifiManager = wifiManager;
}
private boolean openWifi() {
boolean bRet = true;
if (!wifiManager.isWifiEnabled()) {
bRet = wifiManager.setWifiEnabled(true);
}
return bRet;
}
public boolean connect(String SSID, String Password, WifiCipherType Type) {
if (!this.openWifi()) {
return false;
}
while (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
try {
Thread.currentThread();
Thread.sleep(100);
} catch (InterruptedException ie) {
}
}
WifiConfiguration wifiConfig = this
.createWifiI

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值