Cocos如何跟Android通信?

点击上方亿元程序员+关注和星标

引言

Cocos如何跟Android通信

大家好,相信小伙伴们通过阅读笔者前几期的文章**《Cocos打安卓包打不出来?看看这个》,对Cocos**如何打安卓包有了一定的了解。

但是,除了把安卓包打出来,另外还有一个重要的就是要能够调用安卓提供的Java方法以及监听Java发送的事件。

本文重点介绍一下Cocos如何跟Android通信,如果对您或者其他人有帮助,建议转发、收藏、点赞和在看

1.为什么要跟Android通信?

通常我们将游戏打成安卓包之后,我们还需要接入登陆、支付或者广告等功能,通常这些平台会提供接口给到Android原生。

因此我们想要接入这些接口,必须要使用原生Java去接入,接入完成后,由于游戏开发和原生的语言不同,我们还需要实现CocosAndroid的通信。

那Cocos如何实现与Android的通信呢?

2.Cocos与Android的通信

Cocos想要与Android进行通信,通常有以下两种方法:

1.基于反射机制实现 JavaScript 与 Android 系统原生通信

通过这个方法我们不仅需要严格声明包名和函数签名,还需要严格校对参数数量以确保正常运行,步骤较为复杂。

Cocos调用Android方法的形式如下:

import {
    native } from 'cc'; 
var o = native.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)

具体需要以下几个参数:

  • className:类名,我们需要调用的静态方法的完整包名+类名,例如:com/cocos/game/Test为包名com.cocos.game中的Test类。
  • methodName:方法名,我们需要调用的静态方法的方法名,注意大小写。
  • methodSignature:方法签名,这个主要是要告诉Java,传递的参数类型和方法返回值类型。由于篇幅较长,我们在下面讲解。
  • parameters:参数列表,这个需要与上面方法签名声明的保持一致,支持 number、bool 和 string三种类型。

方法签名

方法签名的格式为**(参数类型)返回值类型**。即括号内是参数的类型,括号外为返回值的类型。示例如下:

  • ()V 表示没有参数,没有返回值
  • (I)V 表示参数为一个 int,没有返回值的方法
  • (I)I 表示参数为一个 int,返回值为 int 的方法
  • (IF)Z 表示参数为一个 int 和一个 float,返回值为 boolean 的方法
  • (ILjava/lang/String;F)Ljava/lang/String; 表示参数类型为一个 int,一个 String 和一个 float,返回值类型为 String 的方法

完整示例

//调用包名com.cocos.game里Test类的sum静态方法,需要2个int参数,返回值为int类型
var result = native.reflection.callStaticMethod("com/cocos/game/Test", "sum", "(II)I", 3, 7);
log(result); // 10

Android调用Cocos方法如下:

// 一定要在 GL 线程中执行,调用cc.log方法
CocosHelper.runOnGameThread(new Runnable() {
   
    @Override
    public void run() <
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亿元程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值