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

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

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

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

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



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

cd6fefbfb4839ed732419a1d13b285b3.jpeg


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

依次进入如下路径:
561a1612f7f12533739d1fe4d7689bbf.png
在这里,我们能看到从Cocos2dx复制过来的源代码文件,同时增加我们自己的相关类。

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

在文件夹中加入.h头文件和cpp文件
be22ea9a63e6b6a2d2ae9875d6b14722.png
用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里实现。

93fde5ddc4e894565ef3c6024a319cb2.jpeg

2409d2fadce30205d141e37877159bb0.jpeg

ca74601de8b6ef3166e64b6e26cb2b1e.jpeg

此处省略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关联起来呢?这里就不得不用自动绑定技术了。


打开以下路径:
5c4889ef2bf364e470919e496e4f56f4.png
自动绑定我们自己写的代码就在这里完成。


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

15193ae67b0d6e0becbbbfc60377575e.jpeg

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

ba907ce5ad2cd78fb57e85d41db31240.jpeg

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

afcaecaa5d36c0c3f64b5f388ad15887.jpeg

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

找到此目录,可以看到创建的文件,api我们先不管,暂时用不着。
93f7b869712148a247299eaee870f09a.png
以上步骤执行完后我们就要开始绑定了。

切换路径
46adc392e76d368b5fa1731e2f961f30.png
找到js_module_register.cpp文件,打开它。

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

134b973c83548503e7165c166d149d68.jpeg

sc->addRegisterCallback(register_all_cocos2dx_sinysdk);

完成之后我们需要编辑Android的ndk编译逻辑
c512943ead7ae792dbc2b70e95263f7e.png
切换目录后打开android.mk

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

0685187c45d358f56d23102a1b835414.jpeg

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

0f5f164ed54d414084cee7c6f1631c0b.jpeg

完成之后切换目录
b07a1f1d9dfdc4b1e62a97ec6cfa06ff.png

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

LOCAL_C_INCLUDES引用目录加上文件夹sinysdk

fa85653381f4b34d85f07932ee43decb.png

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

往期精彩推荐

Cocos论坛本周招聘汇总帖

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值