ndk wifi ip 实现 附源码 详解

 时间:2024-10-11 19:45:50

1、在java层MainActivity 类中实获取wifi的密码的函数:int getWifiAddress() { WifiManager mgr = (WifiManager)getSystemService(WIFI_SERVICE); WifiInfo info = mgr.getConnectionInfo(); if (null == info) return 0; int nIp = info.getIpAddress(); return nIp; }

2、将MainActivity 的对象指针传到ndk层:在类中声明一个函数,不需要实现,由ndk层来实现:public native int Tst();并在MainActivity 的onCreate 方法中调用Tst();

3、通过javah生成对应的c接口,由ndk层来来实现改函墙绅褡孛数:在ndk层实现对应的函数 (C++的话需要加 extern "C"前缀)extern "C" JNIEXPORT jint JNICALL Java_fk_localtalkie_MainActivity_Tst (JNIEnv *pJniEnv, jobject objActivity);如下图,javah的通过Eclipse的 菜单下的 Run->External Tools->External Tools Configuration... 配置的效果图:配置好后点击 Run 就会在 jni/platform下面生成对应的文件fk_localtalkie_MainActivity.h

ndk wifi ip 实现 附源码 详解ndk wifi ip 实现 附源码 详解

5、在ndk层实现extern "C"JNIEXPORT jint JNICALL Java_fk_localtalkie_MainActivit烤恤鹇灭y_Tst (JNIEnv *pJniEnv, jobject objActivity){ /// 获取 MainActivity类,不是对象,对象已经有了是:objActivity jclass clsActivity = pJniEnv->FindClass("fk/localtalkie/MainActivity"); /// 获取类中的函数 getWifiAddress的函数ID,第三个参数填写该函数的函数签名 jmethodID method = pJniEnv->GetMethodID(clsActivity, "getWifiAddress", "()I"); /// 调用java层函数 int nIp = pJniEnv->CallIntMethod(objActivity, method); /// 获取ip地址,ip地址就存在于变量ip中 char* ip = inet_ntoa(*((in_addr*)&nIp)); return 0;}

6、如果希望直接把 获取wifi ip的功能写成ndk接口getWifiIp(char* szIp);可以考虑在在 MainActivity的OnCreate中把JNIEnv环境指针 和 MainActivityjobject对象传过来,ndk层保存好这两个变量,然后在getWifiIp 函数就可以直接对用这两个变量;

7、到此完毕

  • 三星S4手机突然不停下载黄色软件是怎么回事?
  • 化疗期间一定要多吃的几种食物
  • 抖音道具无法支持设备怎么办
  • 京东怎么免费试用PLUS会员?
  • 天然气怎么开通
  • 热门搜索
    春节旅游好去处 梵蒂冈旅游 西藏旅游注意事项 全国旅游地图 云南普者黑旅游攻略 长沙 旅游 苏州旅游局 深圳 旅游 亲和力旅游 葡萄牙旅游