① 有关android内核的wifi驱动api
通过程序来实现wifi的自动连接。
这两天对android的wifi功能研究了一下。下面共享出自己封装的WifiConnect类。(这里参考了ZXing开源项目中wifi模块)
首先,要了解android关于wifi的API.
如果喜欢看English API,这是android关于wifi的API地址:
http://developer.android.com/reference/android/net/wifi/package-summary.html(配置Wifi,还需要设定权限,android中关于wifi的API文档中说明了要添加什么权限)
如果一看英语就头疼,这里有关于wifi的api的中文解释
http://note.sdo.com/u/1500295617/n/prb71~jGAHfpnM0l000bgN
切入正题,这里贴出一个封装了的类(WifiConnect),在实例化WifiConnect对象时,需要传入一个WifiManager对象。WifiConnect类向外部提供一个Connect方法,参数是无线的SSID,password,还有加密类型。
[java] view plainprint?② Android Wifi 如何实现:在程序中把SSID和密码都确定了,点击连接就连接上指定的wifi
点击打开设定,
点击WLAN连接,
点击添加WLAN。
③ android怎么实现开机自动启动wifi热点
1.新建一个Receiver监听系统的BOOT_COMPLETE Broadcast,就可以实现开机的监听 2.启动WiFi热点。这个网上一大堆的代码,大体的思路就是:检测WiFI是否开启,如果开启了,那就不操作。如果没有开启,那就调用API开启它。
④ native.js支持android wifi direct相关API的调用吗
现在,Android的支持Wi -Fi的直接点对点点对点(P2P)Android系统的供电设备和其他类型的设备,没有一个热点或互联网连接之间的连接。Android框架提供了一套Wi - Fi的P2P的API,允许你去发现和连接到其他设备时,每个设备的Wi -Fi的直接支持,然后沟通跨越距离远远长于蓝牙连接迅速连接。
android.net.wifi.p2p,一个新的软件包,包含所有的API执行同行等连接与Wi - Fi。 你需要与主类是WifiP2pManager,您可以调用getSystemService(WIFI_P2P_SERVICE)收购。WifiP2pManager包括API,允许您:
1、您P2P连接的应用程序通过调用initialize
2、探索通过调用附近的设备discoverPeers
开始通过调用P2P连接connect以及一些其他的接口和类是必要的,如:
WifiP2pManager.ActionListener接口,让您能够接收的操作时,如发现同行或连接到他们的成功或失败的回调。
WifiP2pManager.PeerListListener界面,您可以收到有关发现同行的信息。 回调提供了一个WifiP2pDeviceList,您可以从中检索一个WifiP2pDevice范围内的每个设备对象和获取信息,如设备的名称,地址,设备类型,设备支持的WPS配置。
WifiP2pManager.GroupInfoListener界面,您可以收到一个P2P组信息。 回调提供了一个WifiP2pGroup对象,它提供了所有者,网络名称和密码的信息,如组。
WifiP2pManager.ConnectionInfoListener界面,您可以得到当前连接的信息。 回调提供了一个WifiP2pInfo对象,它具有信息,如一个组是否已经形成,谁是该组的所有者。
为了使用的Wi - Fi P2P的API,你的应用程序必须要求以下用户权限:
1、ACCESS_WIFI_STATE
2、CHANGE_WIFI_STATE
3、INTERNET (虽然你的应用程序不技术上连接到互联网,沟通的Wi - Fi标准的Java套接字直接同行需要Internet权限)。
Android系统还广播了几种不同的行动,在特定的Wi - Fi P2P事件:
1、WIFI_P2P_CONNECTION_CHANGED_ACTION :P2P连接状态发生了变化。这与EXTRA_WIFI_P2P_INFOWifiP2pInfo与EXTRA_NETWORK_INFONetworkInfo对象的对象EXTRA_NETWORK_INFOEXTRA_NETWORK_INFOEXTRA_WIFI_P2P_INFO EXTRA_WIFI_P2P_INFO 。
2、WIFI_P2P_STATE_CHANGED_ACTION :P2P的状态已经改变之间的启用和禁用。 它携带EXTRA_WIFI_STATE要么WIFI_P2P_STATE_DISABLED或WIFI_P2P_STATE_ENABLED
WIFI_P2P_PEERS_CHANGED_ACTION等设备的列表已经改变。
3、WIFI_P2P_THIS_DEVICE_CHANGED_ACTION :该设备的细节已经改变。
⑤ android开发中,连接wifi需要使用哪个函数
我也正在搞这个,问题也很多,都还没解决,这是我在网上查到的方法:
// 添加一个网络并连接
public void AddNetwork(WifiConfiguration wcg) {
int wcgID = mWifiManager.addNetwork(wcg);
mWifiManager.enableNetwork(wcgID, true);
}
但是我有问题就是,首先:ScanResult中获取的SSID等信息和WifiConfiguration中获取的SSID信息有什么不一样,一个是扫描到的,一个是连接后得到的?这个我不理解。第二:按照上面的连接代码,只需要得到WifiConfiguration对象就可以了,我通过public List<WifiConfiguration> getConfiguredNetworks ()得到的WifiConfiguration对象就可以拿去连接了?既然我通过这个就能连接,那我拿ScanResult中的信息有什么用?还有就是,WifiConfiguration对象是在哪个阶段能获取的?启动Wifi?扫描开始?或者是连接上ap后?我表示很迷茫。第三:怎么通过代码设置一台手机为Ap?我找不到相关的方法。第四:假设两台手机,一台做Ap,一台连接,连接上了,然后数据方面怎么传输?蓝牙有个BuletoothSocket和BuletoothServiceSocket,Wifi呢?直接只用JAVA的Socket?
⑥ android开关wifi为什么都要采用isWifiEnabled()
因为安卓API里只有这方法。
wifi开关代码:
/**
* 是否开启 wifi true:开启 false:关闭
*
* 一定要加入权限: <uses-permission
* android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
* <uses-permission
* android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
*
*
* @param isEnable
*/
public void setWifi(boolean isEnable) {
//
if (mWm == null) {
mWm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
return;
}
System.out.println("wifi===="+mWm.isWifiEnabled());
if (isEnable) {// 开启wifi
if (!mWm.isWifiEnabled()) {
mWm.setWifiEnabled(true);
}
} else {
// 关闭 wifi
if (mWm.isWifiEnabled()) {
mWm.setWifiEnabled(false);
}
}
}
⑦ 如何用Delphi XE Android实现手机和wifi串行口模块通信
uses System.SysUtils,
Androidapi.Helpers,
Androidapi.JNIBridge,
Androidapi.Jni.Net,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
FMX.Helpers.Android;
function GetWIFIIP:string;
var
WFM:JObject;
WifiManager:JWifiManager;
WifiInfo:JWifiInfo;
IP:Integer;
begin
WFM:=TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
WifiManager:=TJWifiManager.Wrap((WFM as ILocalObject).GetObjectID);
WifiInfo:=WifiManager.getConnectionInfo;
IP:=WifiInfo.getIpAddress;
Result:=Format('%d.%d.%d.%d',[Lo(IP),Hi(IP),Lo(IP shr 16),IP shr 24]);
end;
//安卓系统WIFI下获取本机IP