设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: william2014
打印 上一主题 下一主题

anychat.GetCameraState(dwTargetUserId) == 0

[复制链接]

23

主题

100

帖子

335

积分

中级会员

Rank: 3Rank: 3

积分
335
11#
 楼主| 发表于 2014-8-8 11:36:13 | 只看该作者
admin 发表于 2014-8-6 16:26
是否可以考虑用一个定时器来判断?
  1. if (!bOtherVideoOpened) {
  2.                                 if (anychat.GetCameraState(userID) == 2
  3.                                                 && anychat.GetUserVideoWidth(userID) != 0) {
  4.                                         SurfaceHolder holder = otherView.getHolder();
  5.                                         // 如果是采用内核视频显示(非Java驱动),则需要设置Surface的参数
  6.                                         if (AnyChatCoreSDK
  7.                                                         .GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
  8.                                                 holder.setFormat(PixelFormat.RGB_565);
  9.                                                 holder.setFixedSize(anychat.GetUserVideoWidth(userID),
  10.                                                                 anychat.GetUserVideoHeight(userID));
  11.                                         }
  12.                                         Surface s = holder.getSurface();
  13.                                         anychat.SetVideoPos(userID, s, 0, 0, 0, 0);
  14.                                         bOtherVideoOpened = true;
  15.                                 }
  16.                         }
  17.                         if (!bSelfVideoOpened) {
  18.                                 if (anychat.GetCameraState(-1) == 2
  19.                                                 && anychat.GetUserVideoWidth(-1) != 0) {
  20.                                         SurfaceHolder holder = myView.getHolder();
  21.                                         // 如果是采用内核视频显示(非Java驱动),则需要设置Surface的参数
  22.                                         if (AnyChatCoreSDK
  23.                                                         .GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
  24.                                                 holder.setFormat(PixelFormat.RGB_565);
  25.                                                 holder.setFixedSize(anychat.GetUserVideoWidth(-1),
  26.                                                                 anychat.GetUserVideoHeight(-1));
  27.                                         }
  28.                                         Surface s = holder.getSurface();
  29.                                         anychat.SetVideoPos(-1, s, 0, 0, 0, 0);
  30.                                         bSelfVideoOpened = true;
  31.                                 }
  32.                         }
复制代码
回复 支持 反对

使用道具 举报

23

主题

100

帖子

335

积分

中级会员

Rank: 3Rank: 3

积分
335
12#
 楼主| 发表于 2014-8-8 11:38:36 | 只看该作者

能给我解释下这段代码的用途吗?   我理解的不太对。
我的理解是:如果对席视频没开,如果对席视频状态是摄像头已打开  重新绑定对席
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
13#
发表于 2014-8-8 12:01:28 | 只看该作者
william2014 发表于 2014-8-8 11:38
能给我解释下这段代码的用途吗?   我理解的不太对。
我的理解是:如果对席视频没开,如果对席视频状态 ...

您好,这段代码是针对以前版本内核显示模式写的。最新版本的Java显示模式是不需要根据这个去显示视频、绑定视频控件的。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
14#
发表于 2014-8-8 12:07:34 | 只看该作者
廖斌 发表于 2014-8-8 12:01
您好,这段代码是针对以前版本内核显示模式写的。最新版本的Java显示模式是不需要根据这个去显示视频、绑 ...

你可以通过计数器执行if (anychat.GetCameraState(userID) == 2

                                          && anychat.GetUserVideoWidth(userID) != 0)
去判断对方的数据有没有过来。Java显示模式,只要得到对方的userid,就调用
        int index = anychat.mVideoHelper.bindVideo(otherView.getHolder());
                        anychat.mVideoHelper.SetVideoUser(index, userID);去绑定surfaview了,视频过来了就会显示了。
回复 支持 反对

使用道具 举报

23

主题

100

帖子

335

积分

中级会员

Rank: 3Rank: 3

积分
335
15#
 楼主| 发表于 2014-8-8 13:54:06 | 只看该作者
admin 发表于 2014-8-6 16:26
是否可以考虑用一个定时器来判断?
  1. if (!bOtherVideoOpened) {
  2.                                 if (anychat.GetCameraState(userID) == 2
  3.                                                 && anychat.GetUserVideoWidth(userID) != 0) {
  4.                                         SurfaceHolder holder = otherView.getHolder();
  5.                                         // 如果是采用内核视频显示(非Java驱动),则需要设置Surface的参数
  6.                                         if (AnyChatCoreSDK
  7.                                                         .GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) != AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
  8.                                                 holder.setFormat(PixelFormat.RGB_565);
  9.                                                 holder.setFixedSize(anychat.GetUserVideoWidth(userID),
  10.                                                                 anychat.GetUserVideoHeight(userID));
  11.                                         }
  12.                                         Surface s = holder.getSurface();
  13.                                         anychat.SetVideoPos(userID, s, 0, 0, 0, 0);
  14.                                         bOtherVideoOpened = true;
  15.                                 }
  16.                         }
复制代码
回复 支持 反对

使用道具 举报

23

主题

100

帖子

335

积分

中级会员

Rank: 3Rank: 3

积分
335
16#
 楼主| 发表于 2014-8-11 09:07:32 | 只看该作者
廖斌 发表于 2014-8-8 12:07
你可以通过计数器执行if (anychat.GetCameraState(userID) == 2

                                    ...

anychat.GetCameraState(userID)    这个值在什么时候会发生改变?  具体的客户端调用什么方法会改变对席视频状态?   
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
17#
发表于 2014-8-11 09:12:36 | 只看该作者
william2014 发表于 2014-8-11 09:07
anychat.GetCameraState(userID)    这个值在什么时候会发生改变?  具体的客户端调用什么方法会改变对席 ...

用户摄像头打开成功后会改变,客户端在调用UserCameraControl(userID,1)后会改变这个值。
回复 支持 反对

使用道具 举报

23

主题

100

帖子

335

积分

中级会员

Rank: 3Rank: 3

积分
335
18#
 楼主| 发表于 2014-8-11 09:15:41 | 只看该作者
廖斌 发表于 2014-8-11 09:12
用户摄像头打开成功后会改变,客户端在调用UserCameraControl(userID,1)后会改变这个值。

就是说我在定时器里面检测到anychat.GetCameraState(userID) == 0  调用UserCameraControl(userID,1)就OK了?  
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
19#
发表于 2014-8-11 09:20:49 | 只看该作者
william2014 发表于 2014-8-11 09:15
就是说我在定时器里面检测到anychat.GetCameraState(userID) == 0  调用UserCameraControl(userID,1)就 ...

不需要,在OnAnyChatOnlineUserMessage和OnAnyChatUserAtRoomMessage调用UserCameraControl就行了,UserCameraControl是异步的,执行完之后,并不能马上就能获取到摄像头已经打开的状态。
回复 支持 反对

使用道具 举报

23

主题

100

帖子

335

积分

中级会员

Rank: 3Rank: 3

积分
335
20#
 楼主| 发表于 2014-8-11 11:05:52 | 只看该作者
廖斌 发表于 2014-8-11 09:20
不需要,在OnAnyChatOnlineUserMessage和OnAnyChatUserAtRoomMessage调用UserCameraControl就行了,Use ...

anychat.GetCameraState(-1)这个是获取本地摄像头状态的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-22 21:51 , Processed in 0.156181 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表