在想要對(duì)wifi硬件動(dòng)作之前,需要做兩件事情,一是要load wifi的driver,而是要打開wpa_supplicant,其實(shí)如果是連接沒有加密的wifi,沒有必要打開wpa_supplicant,但是為了講問題化為熟知的問題,此處還是先按照提示調(diào)用wifi_load_driver()和wifi_start_supplicant()
為金川等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及金川網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、金川網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
按照上面的提示寫出來的初始化代碼如下:
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;
}
接下來,便是連接的過程了,經(jīng)過上面的步驟,wifi的driver已經(jīng)載入,wpa_supplicant也已經(jīng)打開,那咱們就可以開始連接無線了吧。后來證實(shí)這是錯(cuò)誤的,因?yàn)閍nly_jun的這篇Android wifi分析的粒度只在Java層面的函數(shù)級(jí)別,因此有一些細(xì)節(jié)并沒有提到。在下面我會(huì)提到這些細(xì)節(jié)。
按照一般的linux中連接wifi的步驟,這時(shí)候就可以直接調(diào)用一個(gè)程序來連接某個(gè)ssid的無線網(wǎng)絡(luò),然后調(diào)用dhcpd來分配ip了,我之前在eeepc上連接wifi就非常簡單,調(diào)用iwconfig [ssid],再調(diào)用dhcpd就可以了。但很遺憾,Android上并沒有iwconfig這樣方便的工具。
這下線索似乎就斷了,天無絕人之路,既然在Android的Java code中都可以添加一個(gè)無線網(wǎng)絡(luò)并且連接,那我們就去Android的Java源代碼中找一找。在Android中,程序員是使用WifiManager這個(gè)類來進(jìn)行Wifi操作的,其中關(guān)于添加一個(gè)網(wǎng)絡(luò)的代碼如下:
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調(diào)用bat文件試試。bat中寫你啟動(dòng)wifi的命令,netsh。。。。上網(wǎng)查詢很多的。
想知道一下你做這個(gè)的前景是什么?
如果說是局域網(wǎng)服務(wù)器維護(hù)的話,大可不必如此,因?yàn)槿绻氵@樣做相當(dāng)于是一個(gè)B/S的結(jié)構(gòu);那么實(shí)際上要對(duì)手機(jī)進(jìn)行區(qū)分幾乎是不可能的。連接Wifi,意味著最多只能處理數(shù)據(jù)報(bào)文,而不是在那些手機(jī)上運(yùn)行程序。網(wǎng)絡(luò)數(shù)據(jù)報(bào)文中,和數(shù)據(jù)無關(guān)的部分就是網(wǎng)絡(luò)協(xié)議部分的數(shù)據(jù),這部分?jǐn)?shù)據(jù)中,傳輸層、網(wǎng)絡(luò)層數(shù)據(jù)都沒有用,只有數(shù)據(jù)鏈路層的MAC地址可能對(duì)你有點(diǎn)用,因?yàn)槊繌埦W(wǎng)卡的MAC地址是不同的,你至多可以知道是哪家公司生產(chǎn)的,但是具體在什么設(shè)備上,是不可能知道的(況且那些數(shù)據(jù)理論上其實(shí)都是可以改的)
如果是針對(duì)手機(jī)編程的話,用Java代碼的無非就是Android編程,這就和連接什么Wifi沒有關(guān)系了。Android編程要獲取手機(jī)信息的方法我也不清楚,你去谷歌的API里面看看,或者去搜搜看吧,應(yīng)該不少。
我先回答你的第二個(gè)問題,各種wifi產(chǎn)品的api應(yīng)該是一樣的,wifi都是根據(jù)接口來寫驅(qū)動(dòng)的,我們的library里已經(jīng)將wifi模塊化了.至于怎么寫wifi,下面是我提供的獲取WIFI的mac地址的代碼,希望對(duì)你有所幫助:
WifiManager wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiInfo info=wifi.getConnectionInfo();
String mac;
mac=info.getMacAdress();
返回主方法重新調(diào)用什么????主方法就是順著執(zhí)行啊,執(zhí)行完你調(diào)用的類的方法,就回來順著語句執(zhí)行啊。。。
可以實(shí)現(xiàn),就是andriod的wifi連接,我們公司一個(gè)項(xiàng)目就是自動(dòng)搜索周圍最強(qiáng)WIFI信號(hào)并且連接的,不過10分要?jiǎng)e人給你寫個(gè)類似項(xiàng)目的程序,那是不現(xiàn)實(shí)的,說說思路差不多
網(wǎng)站標(biāo)題:java連接wifi代碼 用代碼連接wifi
分享鏈接:http://muchs.cn/article28/hphhjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、電子商務(wù)、定制開發(fā)、軟件開發(fā)、搜索引擎優(yōu)化、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)