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() {@Overridepublic void run() <

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39642.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39642.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39642.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為HCIP Datacom H12-821 卷21

1.單選題 以下關于PIM-SM中SPT切換的描述,錯誤的是哪一項? A、若所有組播流量都經過RP路由器,則RP路由器可能成為數據轉發的瓶頸 B、SPT路徑最短,轉發性能更優 C、SPT 切換完成后,組播流量依然經過 ReT 樹 D、RPT 樹可能不是組播流量轉發的最優路徑 正確答案: C 解析…

【AI原理解析】—K近鄰(KNN)原理

目錄 一、算法概述 二、算法原理 1. 數據集準備 2. 輸入新數據 3. 距離計算 4. 選擇K個最近鄰 5. 預測 三、關鍵要素 1. K值的選擇 2. 距離度量方法 3. 數據預處理 四、算法優缺點 優點 缺點 五、總結 KNN&#xff08;K-Nearest Neighbors&#xff0c;K最近鄰&a…

[教程]Gitee保姆級圖文使用教程

我們在日常的工作過程中經常會遇到&#xff0c;家里和公司資料文件同步的問題&#xff0c;以及項目開發過程中的協作問題。Git就完美的解決了這些問題&#xff0c;但是由于 Git國外服務器的原因平時網絡太慢了&#xff0c;不過還好有國內的托管平臺Gitee&#xff08;碼云&#…

「C++系列」C++ 變量類型

文章目錄 一、C 變量類型1. 基本數據類型2. 復合數據類型3. 類型修飾符 二、C 變量定義案例 1: 基本類型變量的定義和初始化案例 2: 數組的定義和使用案例 3: 結構體&#xff08;Struct&#xff09;的定義和使用案例 4: 指針的定義和使用案例 5: 類的定義和使用&#xff08;面向…

五、removeClosedPointCloud

五、removeClosedPointCloud 主要功能: removeClosedPointCloud 函數用于過濾掉點云中距離傳感器(例如激光雷達)太近的點。這些點可能會引入噪聲或不利于后續的點云處理和分析。函數通過比較每個點與傳感器之間的距離,移除那些距離小于設定閾值 minimumRange 的點。 計算…

網絡連接之隊頭阻塞!!!

一、什么是隊頭阻塞 隊頭阻塞&#xff0c;在網絡模型中簡單理解就是&#xff0c;對于隊列型的請求模型&#xff0c;如HTTP的請求-響應模型、TCP的ACK確認機制&#xff0c;都依賴得到一個具體的響應包&#xff0c;如果收不到這個響應包&#xff0c;那下一個請求就不能發&#x…

4、音視頻封裝格式---FLV

FLV FLV是一種容器封裝格式&#xff0c;是由Adobe公司發布和維護的&#xff0c;用于將視頻編碼流與音頻編碼流進行封裝。對于任意一種封裝格式&#xff0c;都有其頭部區域與數據區域&#xff0c;在FLV中&#xff0c;稱之為FLV Header與Body。 對于FLV Header&#xff0c;一個FL…

python自動移除excel文件密碼(升級v2版本)

歡迎查看第一版 https://blog.csdn.net/weixin_45631815/article/details/140013476?spm1001.2014.3001.5502 一功能改進 此版本主要改進功能有以下: 直接可以調用函數實現可以嘗試多個密碼沒有加密的文件進行保存,可以按實際業務進行改進.思路來源:java 面向對象設計模式.…

煤礦安全大模型:微調internlm2模型實現針對煤礦事故和煤礦安全知識的智能問答

煤礦安全大模型————礦途智護者 使用煤礦歷史事故案例,事故處理報告、安全規程規章制度、技術文檔、煤礦從業人員入職考試題庫等數據,微調internlm2模型實現針對煤礦事故和煤礦安全知識的智能問答。 本項目簡介: 近年來,國家對煤礦安全生產的重視程度不斷提升。為了確…

SpringBoot+mail 輕松實現各類郵件自動推送

一、簡介 在實際的項目開發過程中&#xff0c;經常需要用到郵件通知功能。例如&#xff0c;通過郵箱注冊&#xff0c;郵箱找回密碼&#xff0c;郵箱推送報表等等&#xff0c;實際的應用場景非常的多。 早期的時候&#xff0c;為了能實現郵件的自動發送功能&#xff0c;通常會…

前端期末1111

前端期末 超文本標記語言&#xff08;英語&#xff1a;HyperText Markup Language&#xff0c;簡稱&#xff1a;HTML&#xff09; body&#xff1a;在網頁文檔中&#xff0c;所有文本&#xff0c;圖像&#xff0c;音頻和視頻等代碼只能放在標簽內才能呈現給用戶。 HTML中的標…

【STM32入門教學】——串口、定時器與參考資料

機器人工程系列文章目錄 這里羅列了系列文章鏈接 概念總述 STM入門教學 還沒寫完組里急用 文章目錄 機器人工程系列文章目錄概念總述STM入門教學 前言串口串口的概念cubemxkeil5實物實驗關于cubemx生成邏輯printf升級usart.cmain.hretarget.c 定時器定時器的概念cubemxkeil5…

帶電池監控功能的恒流直流負載組

EAK的交流和直流工業電池負載組測試儀對于測試和驗證關鍵電力系統的能力至關重要&#xff0c;旨在實現最佳精度。作為一家客戶至上的公司&#xff0c;我們繼續盡我們所能應對供應鏈挑戰&#xff0c;以提供出色的交貨時間&#xff0c;大約是行業其他公司的一半。 交流負載組 我…

時鐘切換的代碼

目錄 描述 輸入描述&#xff1a; 輸出描述&#xff1a; 參考代碼 描述 題目描述&#xff1a; 存在兩個同步的倍頻時鐘clk0 clk1,已知clk0是clk1的二倍頻&#xff0c;現在要設計一個切換電路&#xff0c;sel選擇時候進行切換&#xff0c;要求沒有毛刺。 信號示意圖&…

學習springMVC

第四章 Spring MVC 第一節 Spring MVC 簡介 1. Spring MVC SpringMVC是一個Java 開源框架&#xff0c; 是Spring Framework生態中的一個獨立模塊&#xff0c;它基于 Spring 實現了Web MVC&#xff08;數據、業務與展現&#xff09;設計模式的請求驅動類型的輕量級Web框架&am…

車云匯的元宇宙之旅

在汽車行業持續迎來數字化和科技革新的今天&#xff0c;車云匯作為一個領先的汽車服務平臺&#xff0c;正通過探索元宇宙這一新興概念&#xff0c;將傳統服務與虛擬現實技術相結合&#xff0c;為車主提供全新的互動體驗和服務模式。這一創新不僅有望改變汽車行業的服務面貌&…

匿名內部類在Java編程中的應用與限制

匿名內部類在Java編程中的應用與限制 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 匿名內部類在Java編程中的應用與限制 1. 什么是匿名內部類&#xff1f;…

什么叫創世區塊、創世區塊有什么用、為什么需要創世區塊

創世區塊&#xff08;Genesis Block&#xff09;是任何區塊鏈技術中的第一個區塊&#xff0c;它是區塊鏈的起點&#xff0c;標志著該區塊鏈的誕生。在創世區塊之前沒有任何區塊存在&#xff0c;因此它沒有前一個區塊的哈希值&#xff0c;通常這個位置會被設置為零或者一個預定義…

vue3源碼(六)渲染原理-runtime-dom

1、從入口文件看實現 項目入口文件 import { createApp } from vue import ./style.css import App from ./App.vuecreateApp(App).mount(#app)文件位置core\packages\runtime-dom\src\index.ts 保證了render的唯一性 // // rendererOptions 是patchProp 和nodeOps的合集&a…

可視化低代碼平臺之:RayData光啟元的震撼作品。

RayData家的可視化作品&#xff0c;貝格前端工場是經常碰到&#xff0c;制作十分的精良&#xff0c;業內很有影響力。他們也有自己的低代碼平臺&#xff0c;分為了桌面版和網頁版&#xff0c;本期分享一下他們的作品。