Cocos2dx Android获取Mac地址
发布时间:2020-12-14 19:53:18 所属栏目:百科 来源:网络整理
导读:转自:http://cocos2d.9tech.cn/news/2014/0327/40118.html 在cocos2dx开发中,我们想获得手机的Mac地址,而目前Android平台下只有java层代码能直接获取Mac地址,有朋友问如果在C++代码中要使用Mac地址该怎么办呢? 很简单,又是强大的JNI机制,思路就是先在j
转自:http://cocos2d.9tech.cn/news/2014/0327/40118.html
在cocos2dx开发中,我们想获得手机的Mac地址,而目前Android平台下只有java层代码能直接获取Mac地址,有朋友问如果在C++代码中要使用Mac地址该怎么办呢? 很简单,又是强大的JNI机制,思路就是先在java层获取Mac地址的字符串,然后传到C++层。 实现如下: 一、java层的东东: public static String getMacID() { String str ="wei"; WifiManager wifi = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); str = info.getMacAddress(); if(str==null) { Log.e("获取android mac地址失败","0000000"); } Log.e("获取android mac地址 "+str,"00000000"); return str; } 代码很简单,就是返回Mac地址的字符串,我只注明一下mActivity,这是声明的一个静态Activity对象 private static Activity mActivity = null; 在create函数里赋值:mActivity = this; 还有一点别忘啦,权限问题:在AndroidManifest.xml文件中添加wifi访问权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />二、再来说说C++层该干的事儿
std::string FruitGameMenuScene:: getMacID() { std::string strMac=""; #if( CC_TARGET_PLATFORM ==CC_PLATFORM_ANDROID) JniMethodInfo methodInfo; //用于获取函数体 bool isHave = JniHelper::getStaticMethodInfo(methodInfo,"com/ymook/FruitGame/FruitGame","getMacID","()Ljava/lang/String;"); if (isHave) { jstring jstr; CCLog("java层getMacID 函数存在;"); jstr = (jstring)methodInfo.env->CallStaticObjectMethod(methodInfo.classID,methodInfo.methodID); strMac = JniHelper::jstring2string(jstr); CCMessageBox("Mac",strMac.c_str()); } else { CCLog("java层getMacID 函数不存在;"); } #endif return strMac; } 这代码也简单,就是调用java层的getMacID函数,返回我们想要的Mac字符串。当然用JNI调用也可以先调用静态句柄再调用动态函数的方式,不过个人觉得那种方式较麻烦,就不例举了。我这里只注明一下: "com/ymook/FruitGame/FruitGame"这个是我在Android平台下主Activity的路径; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |