軟件大?。?/span>
軟件語言:
瀏覽人數(shù):485人
軟件類型:
授權(quán)方式:
用戶評分:
更新時間:2022-11-17
軟件分類:Mac系統(tǒng)
運(yùn)行環(huán)境:
背景:
最近在做一個使用wifi-p2p傳輸文件的app,通過掃描二維碼建立wifi-p2p連接。具體步驟如下:
2、設(shè)備B掃描上面設(shè)備A的二維碼,獲取待連接設(shè)備A的mac地址;
3、設(shè)備B搜索周圍可連接的設(shè)備,如果某個設(shè)備的mac地址與上面獲取到的A的mac地址一致,則請求連接該設(shè)備。
之后還有app的一系列其他流程,與本文無關(guān),在此不再贅述。
問題:
然而,事實并沒有想象中那么順利。在獲取A設(shè)備本身的mac地址時,我使用了讀取如下文件的方法:
"cat /sys/class/net/wlan0/address "
這樣獲取到的A設(shè)備本身的mac地址與手機(jī)“設(shè)置”->“wifi”中看到的mac地址是一樣的,結(jié)果為:78:02:f8:2d:4b:ca
但是問題就出來了安卓系統(tǒng)層獲取mac地址,當(dāng)我通過B設(shè)備掃描周圍的設(shè)備獲取A設(shè)備的對象,然后使用的時候。得到的A的mac地址是:78:02:f8:2d:4b:c9,我去,這個結(jié)果和A前面讀到的不一樣。這樣掃描二維碼后,無法匹配到正確的二維碼,無法建立連接。
解決:
修改A獲取自己mac地址的方式為通過系統(tǒng)廣播獲?。?/p>
case WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION: WifiP2pDevice thisDevice = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);String selfMac = thisDevice.deviceAddress;
注冊“.”后 ,可以通過上面的代碼獲取到設(shè)備本身的mac地址。這個mac地址是:78:02:f8:2d:4b:c9安卓系統(tǒng)層獲取mac地址安卓系統(tǒng)層獲取mac地址,可以和掃描的二維碼正確匹配。
筆記:
關(guān)于為什么設(shè)備A本身的mac地址和它暴露給其他設(shè)備的mac地址不一樣,有知道這個問題的朋友不吝賜教;
我沒寫過博客,如果覺得不好,請不要噴。