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



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