新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在想要对wifi硬件动作之前,需要做两件事情,一是要load wifi的driver,而是要打开wpa_supplicant,其实如果是连接没有加密的wifi,没有必要打开wpa_supplicant,但是为了讲问题化为熟知的问题,此处还是先按照提示调用wifi_load_driver()和wifi_start_supplicant()
为金川等地区用户提供了全套网页设计制作服务,及金川网站建设行业解决方案。主营业务为成都网站设计、成都网站建设、金川网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
按照上面的提示写出来的初始化代码如下:
int init_stage() {
// load the wifi driver: insmod .ko
int ret = wifi_load_driver();
if(ret 0) {
LOGE("Failed to load Wi-Fi driver. %s",strerror(errno));
return -1;
}
// start wpa_supplicant
ret = wifi_start_supplicant();
if(ret 0) {
LOGE("Failed to start supplicant daemon. %s",strerror(errno));
return -1;
}
return 0;
}
接下来,便是连接的过程了,经过上面的步骤,wifi的driver已经载入,wpa_supplicant也已经打开,那咱们就可以开始连接无线了吧。后来证实这是错误的,因为anly_jun的这篇Android wifi分析的粒度只在Java层面的函数级别,因此有一些细节并没有提到。在下面我会提到这些细节。
按照一般的linux中连接wifi的步骤,这时候就可以直接调用一个程序来连接某个ssid的无线网络,然后调用dhcpd来分配ip了,我之前在eeepc上连接wifi就非常简单,调用iwconfig [ssid],再调用dhcpd就可以了。但很遗憾,Android上并没有iwconfig这样方便的工具。
这下线索似乎就断了,天无绝人之路,既然在Android的Java code中都可以添加一个无线网络并且连接,那我们就去Android的Java源代码中找一找。在Android中,程序员是使用WifiManager这个类来进行Wifi操作的,其中关于添加一个网络的代码如下:
public int addNetwork(WifiConfiguration config) {
if (config == null) {
return -1;
}
config.networkId = -1;
return addOrUpdateNetwork(config);
}
private int addOrUpdateNetwork(WifiConfiguration config) {
try {
return mService.addOrUpdateNetwork(config);
} catch (RemoteException e) {
return -1;
}
}
用java调用bat文件试试。bat中写你启动wifi的命令,netsh。。。。上网查询很多的。
想知道一下你做这个的前景是什么?
如果说是局域网服务器维护的话,大可不必如此,因为如果你这样做相当于是一个B/S的结构;那么实际上要对手机进行区分几乎是不可能的。连接Wifi,意味着最多只能处理数据报文,而不是在那些手机上运行程序。网络数据报文中,和数据无关的部分就是网络协议部分的数据,这部分数据中,传输层、网络层数据都没有用,只有数据链路层的MAC地址可能对你有点用,因为每张网卡的MAC地址是不同的,你至多可以知道是哪家公司生产的,但是具体在什么设备上,是不可能知道的(况且那些数据理论上其实都是可以改的)
如果是针对手机编程的话,用Java代码的无非就是Android编程,这就和连接什么Wifi没有关系了。Android编程要获取手机信息的方法我也不清楚,你去谷歌的API里面看看,或者去搜搜看吧,应该不少。
我先回答你的第二个问题,各种wifi产品的api应该是一样的,wifi都是根据接口来写驱动的,我们的library里已经将wifi模块化了.至于怎么写wifi,下面是我提供的获取WIFI的mac地址的代码,希望对你有所帮助:
WifiManager wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiInfo info=wifi.getConnectionInfo();
String mac;
mac=info.getMacAdress();
返回主方法重新调用什么????主方法就是顺着执行啊,执行完你调用的类的方法,就回来顺着语句执行啊。。。
可以实现,就是andriod的wifi连接,我们公司一个项目就是自动搜索周围最强WIFI信号并且连接的,不过10分要别人给你写个类似项目的程序,那是不现实的,说说思路差不多