【Cocos Creator与C++知识分享】 获取网络状态、电池电量、屏幕截屏

 

完美解决ANDROID/IOS底层API以及屏幕截图并回调JS方法。...



感谢COCOS论坛ID: 欧阳锋同学的友情提供

http://forum.cocos.com/t/cocos-creator-c-wifi/45644

背景:
为了解决Cocos Creator现阶段暂未支持的调用系统(ANDROID/IOS)底层API,以及屏幕截图并回调JS方法。

有相关需求的同学可以看看本文,我用的是jsb_default编译方式,其他方式因项目太忙还没时间研究。

首先在Cocos Creator中新建一个工程,然后选择Android进行编译

接着我们点击构建,然后编译。编译过程有点慢,特别是第一次。完成后即可关闭。


依次进入如下路径:


在这里,我们能看到从Cocos2dx复制过来的源代码文件,同时增加我们自己的相关类。

新建一个文件夹sinysdk(名字可以随便取哈)


在文件夹中加入.h头文件和cpp文件


用notepad++打开这两个文件,先看头文件。
#ifndef SinySystemStatusManager_h
#define SinySystemStatusManager_h
#include "cocos2d.h"
#include
namespace cocos2d {
class SinySystemStatusManager : public Node
{
public:
SinySystemStatusManager();
~SinySystemStatusManager();
bool init();
std::string getNetworkState(); //获取网络状态
std::string getBattery(); //获取电量
static SinySystemStatusManager * create();
std::string saveScreenshot(const std::function callback);//屏幕截屏
};
}
#endif

我们在里面定义了包括获取网络状态、电池电量、屏幕截屏这些常用功能。
然后我们在cpp里实现。







此处省略N行代码 ...具体请参考forum.cocos.com/t/cocos-creator-c-wifi/45644

注意看saveScreenshot这个方法,我们在参数中传入的是一个方法。然后我们在js里的写法如下:
var obj = SinySystemStatusManager.create();
obj.saveScreenshot(function(succeed,fileName){
if(succeed){
//这里可以执行比如微信分享等操作。
}
});
那么如何把c++和js关联起来呢?这里就不得不用自动绑定技术了。

打开以下路径:


自动绑定我们自己写的代码就在这里完成。

第一步:创建一个ini配置文件



复制一个ini文件并修改相关内容。
给大家标记下要修改的区域,进阶使用可以参考Cocos Creator官方教程。



完成之后保存文件,再复制一份genbindings.py文件,取名genbindings_sinysdk.py



双击genbindings_sinysdk.py,就可以执行Python命令,然后会生成3个文件,一个是api文件,还有两个自动绑定的头文件和cpp文件。


找到此目录,可以看到创建的文件,api我们先不管,暂时用不着。


以上步骤执行完后我们就要开始绑定了。

切换路径


找到js_module_register.cpp文件,打开它。

首先引用头文件
#include "scripting/js-bindings/auto/jsb_cocos2dx_sinysdk_auto.hpp"
然后注册我的自动绑定



sc->addRegisterCallback(register_all_cocos2dx_sinysdk);

完成之后我们需要编辑Android的ndk编译逻辑


切换目录后打开android.mk

在LOCAL_SRC_FILES中加上../auto/jsb_cocos2dx_sinysdk_auto.cpp



一定要注意在上一行加上换行符,然后在LOCAL_C_INCLUDES加入$(LOCAL_PATH)../../../sinysdk



完成之后切换目录


打开Android.mk文件
LOCAL_SRC_FILES 加入sinysdk/SinySystemStatusManager.cpp,指定需要编译此CPP文件


LOCAL_C_INCLUDES引用目录加上文件夹sinysdk



好了,Android的相关配置到此已经完成,现在可以编译并发布Android包了。

往期精彩推荐

Cocos论坛本周招聘汇总帖

怪兽大乱斗:进入苹果推荐的Creator独立游戏

Cocos Creator中实现相对地图运动的粒子系统

论坛发帖必看,谢谢配合,感恩的心!

梦想之路,Cocos伴你一路前行。


    关注 COCOS


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册