加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-js | JSB 调用Java函数 | Android设备ID

发布时间:2020-12-14 17:17:21 所属栏目:百科 来源:网络整理
导读:引擎版本: cocos2d-x-3.13 语言:cocos2d-js 几乎所有的游戏项目都有获取玩家设备ID的需求,这里记录一下使用cocos2d-js时的Android设备获取方式。 用JS获取Android设备,需要做两件事。 1、在Java层获取到Android的设备ID,并保存下来 2、在JS层拿到Java层
引擎版本:cocos2d-x-3.13

语言:cocos2d-js


几乎所有的游戏项目都有获取玩家设备ID的需求,这里记录一下使用cocos2d-js时的Android设备获取方式。


用JS获取Android设备,需要做两件事。

1、在Java层获取到Android的设备ID,并保存下来

2、在JS层拿到Java层保存下来的设备ID


第一件事:【获取Android设备ID】

首先要有权限:下面代码加入AndroidManifest.xml 中

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

找到项目目录下:frameworkscocos2d-xcocosplatformandroidjavasrcorgcocos2dxlibCocos2dxActivity.java

可以看到,Cocos2dxActivity 继承 Activity ,Activity是什么自行百度,反正可以简单看做是游戏的窗口。在其 onCreate 下我们可以加入代码拿到Android设置信息
TelephonyManager 可以用于查询设备信息,具体内容也请自行百度。 这里 我们只要拿到 TelephonyManager 的实例就可以了
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String DeviceId = tm.getDeviceId().toString();
可以打印DeviceId,看一下结果,第一件事就算完成了
Log.d(TAG,"Cocos2dxActivity TelephonyManager DeviceId:" + DeviceId);
第二件事:【javascript 与 Java 交互】

3.0之后的cocos2d-js提供了封闭好的代码,可以方便访问java函数层。

可以直接在main.js下,加入代码

if(cc.sys.os == cc.sys.OS_ANDROID){
        var deviceID = jsb.reflection.callStaticMethod("org/cocos2dx/lib/Cocos2dxActivity","getDeviceID","()Ljava/lang/String;");
        cc.log("--------- DeviceID ---------------",uuid);
    }
getDeviceID 是我加入到 Cocos2dxActivity里的代码。因为callStaticMethod只能访问静态函数。

所以我在Cocos2dxActivity内加入了一个静态变量DeviceID,在 tm.getDeviceId()拿到ID后,保存在DevicelD里,然后提供静态函数getDeviceID来拿到这个值

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读