Android 通過 JNI 獲取 Wi-Fi 網絡接口名



    在 Android 下通過 JNI 進行 C 網絡編程時,需要獲知 Wi-Fi 的網絡接口名,如“wlan0”(有的系統中也可能是 “eth0”)。如果在程序中固定使用 “wlan0” 勢必會造成兼容性問題,例如在某些 Wi-Fi 網絡接口名爲 “eth0” 的手機上會執行失敗。

    那麼怎樣才能獲取到 Wi-Fi 接口名呢? 原來在 Android 系統中, “wlan0” 保存在系統屬性裏。Android 系統屬性由 key 和 value 構成,結構簡單。在終端敲入命令 getprop 就可以獲取到所有的系統屬性值,如下面兩圖所示:

   

   

   從上面第二副圖可知,本系統中 Wi-Fi 網絡接口屬性的 value 爲 “wlan0”,key 爲 “wifi.interface”。

   那麼如何從代碼中獲取到 Wi-Fi 的網絡接口名呢?原來在Android 中早已提供了系統函數來實現該功能,其原型爲:

    int __system_property_get(const char *name, char *value);

    其中,name 指向 key 字符串,value 指向用於保存獲取到的屬性值的用戶存儲空間。

    當以 “wifi.interface” 作爲 key 值來調用上述函數時,value 中的值即爲Wi-Fi 接口名 “wlan0”。

    當然該函數還可用於獲取系統中的其它屬性值。


參考:http://blog.csdn.net/livingpark/article/details/7454063



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章