求助,很多第三方SDK都是获取界面上某个节点容器再做些操作,比如声网想拿一个节点当视频显示容器,他们代码是这样的:
FrameLayout container = findViewById(R.id.remote_video_view_container);
SurfaceView surfaceView = new SurfaceView (getBaseContext());
mRtcEngine.setupRemoteVideo(new VideoCanvas(surfaceView, VideoCanvas.RENDER_MODE_FIT, uid));
这里我想用cocos游戏里的某个Node当成显示容器,怎么把这个Node传给安卓层呢,官网给的例子Java调用cocos方法太扯了,如下:
CocosJavascriptJavaBridge.evalString(“NativeAPIMgr.getNodeByPath(path)”)
这个NativeAPIMgr.getNodeByPath(path):Node是我写在cocos的TS静态方法,根据路径获取某个结点,但是这个evalString返回值却是int,请问怎么返回我想要的cocos里的Node给安卓层啊,求大神指教。
没人知道吗?求大佬救命啊
sdk获取的节点 明显是安卓层的界面,安卓原生渲染,cocos的节点是游戏层的,opengl渲染,就不是一类元素,没法用的。
我也不熟悉安卓界面,几个建议,
sdk需求如果是打开新页面,多弄个sdk的activity,在游戏和sdk activity之间切换就行
如果是要在当前游戏页上层显示sdk页面,游戏和sdk界面一并显示,
看能不能直接用cocos的activity当容器,或者能否以cocos的activity做父节点,生成一些节点做容器
汗,用纯安卓做个sdk 的activity确实行,但是网络消息咋办呢,我只会写ts的网络收发,不会写安卓上的用JAVA写的还protobuf的网络发送语句,还有要是策划搞出个很漂亮很复杂的界面叫我实现咋办?我可只会cocosCreator编辑器做UI不会写androidStudio那个巨难用的界面activity_main.xml ,唉,不管了,真不行就说做不了,离职,不干了。
我也没弄懂你的需求,你要这个节点干啥的?
我们要接入声网的视频直播SDK,需要在游戏界面上有一个类似Node的东西当视频的显示容器,可是官网给的获取显示容器例子是纯安卓的:
//创建一个SurfaceView对象,并将其设置为FrameLayout的子对象
FrameLayout container = findViewById(R.id.local_video_view_container);
SurfaceView surfaceView = new SurfaceView(context);
container.addView(surfaceView);
//然后就设置视频容器
mRtcEngine.setupLocalVideo(sufaceView,)
这个节点是安卓用findViewById得来的,我想用cocos里比如一块大的Sprite节点,或者直接就是Node节点当这个视频的显示容器怎么办?官网的支持列表里没有cocos, unity甚至UE都有,请问我该怎么办?
这种需求可以确认下,sdk有没有通用的版本,视频流是否给到二进制数据,直接渲染到游戏sprite,不要依赖安卓页面了。
可以问下他们官方,确认有了的话还有难点,视频流转sprite渲染
好的,谢谢指点
是不是可以用安卓做个activity 这个activity只显示在你 游戏sprite那块区域 这样就不用拼安卓的ui了吧
这要怎么弄啊,怎么把activity指定sprite为父结点,能指点一下我吗? 
我意思是这个activity显示区域就只覆盖你用来显示视频容器的那个cocos节点 不遮挡游戏ui,应该可行吧
加个安卓activity显示在上层 里面有个视频容器节点 节点大小刚好覆盖cocos对应节点, 这样不会遮挡游戏ui 要显示视频 直接获取activity里的节点 而不是获取cocos节点
好的,我试下,谢谢给出思路
用C++把声网流数据转换成cocos sprite可用格式然后直接在cocos中渲染