看看SDK源码,看看获取MAC调用了那个JNI的API了

解决方案 »

  1.   

    我觉得没有什么不可以的~
    jni 中cpp里使用Linux 中的方法函数可实现 ,封装成jstring ,传给上层java~ 
      

  2.   

    这个很简单啊,在linux在很容易得到的东西,
      

  3.   

    获得mac地址,貌似是通过wpa_suplicant这个daemon来获取的。android程序的java没做什么事情,一般就是一些状态维护工作,实际的事情还是通过虚拟机和jni用native代码做的。获取mac的jni在 android_net_Wifi_wifi.cppstatic jstring android_net_wifi_getMacAddressCommand(JNIEnv* env, jobject clazz)
    {
        char reply[256];
        char buf[256];    if (doCommand("DRIVER MACADDR", reply, sizeof(reply)) != 0) {
            return env->NewStringUTF(NULL);
        }
        // reply comes back in the form "Macaddr = XX.XX.XX.XX.XX.XX" where XX
        // is the part of the string we're interested in.
        if (sscanf(reply, "%*s = %255s", buf) == 1)
            return env->NewStringUTF(buf);
        else
            return env->NewStringUTF(NULL);
    }
    你可以参看源码写写吧
      

  4.   

    C层很多函数,NDK是无法调用的对于非自制固件。一般我用NDK解决纯数学运算问题,哈哈