android切换画面问题
我在android端首次设置视频播放,然后再设置UserCameraControl(id,0),然后重新设置id出现java.lang.IllegalArgumentException异常,android.view.Surface.lockCanvasNative(Native Method),请问如何解决 您好,请上传logcat中更多关于“java.lang.IllegalArgumentException”异常的信息供我们分析,另请上传一份客户端的日志文件,谢谢。 以下是异常01-15 10:50:10.879: E/SurfaceHolder(3760): Exception locking surface
01-15 10:50:10.879: E/SurfaceHolder(3760): java.lang.IllegalArgumentException
01-15 10:50:10.879: E/SurfaceHolder(3760): at android.view.Surface.lockCanvasNative(Native Method)
01-15 10:50:10.879: E/SurfaceHolder(3760): at android.view.Surface.lockCanvas(Surface.java:88)
01-15 10:50:10.879: E/SurfaceHolder(3760): at android.view.SurfaceView$4.internalLockCanvas(SurfaceView.java:755)
01-15 10:50:10.879: E/SurfaceHolder(3760): at android.view.SurfaceView$4.lockCanvas(SurfaceView.java:731)
01-15 10:50:10.879: E/SurfaceHolder(3760): at com.bairuitech.anychat.VideoRenderer.DrawByteBuffer(AnyChatVideoHelper.java:173)
01-15 10:50:10.879: E/SurfaceHolder(3760): at com.bairuitech.anychat.AnyChatVideoHelper.ShowVideo(AnyChatVideoHelper.java:62)
01-15 10:50:10.879: E/SurfaceHolder(3760): at com.bairuitech.anychat.AnyChatCoreSDK.OnVideoDataCallBack(AnyChatCoreSDK.java:528)
01-15 10:50:10.879: E/SurfaceHolder(3760): at dalvik.system.NativeStart.run(Native Method) 请问日志文件在什么位置 您好,请修改一下:AnyChatVideoHelper::DrawByteBuffer,在里面加上一个try-catch,看是否能解决该问题。 还是抛异常,并且画面没有切换 您好,请用代码表述一下您的问题。
我在android端首次设置视频播放,然后再设置UserCameraControl(id,0),然后重新设置id出现java.lang.IllegalArgumentException异常 bdcn 发表于 2014-1-15 11:08
还是抛异常,并且画面没有切换
您好,你关闭视频,重新打开视频之后,userid有没有改变,变了的话SetVideoUser或者SetVideoPos对应的userid也要变的。 int watcherId = -1;
if (anychat.GetCameraState(watcherId) == 2
&& anychat.GetUserVideoWidth(watcherId) != 0) {
SurfaceHolder holder = firstSurfaceView.getHolder();
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(watcherId),
anychat.GetUserVideoHeight(watcherId));
Surface s = holder.getSurface();
System.out.println("firstSurfaceView=" + watcherId);
anychat.SetVideoPos(watcherId, s, 0, 0, 0, 0);
anychat.UserCameraControl(watcherId, 1);
firstSurfaceOpen = true;
// 如果是采用Java视频显示,则需要将视频窗口与用户关联起来
if (AnyChatCoreSDK
.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(firstVideoIndex, watcherId);
}
}
anychat.UserCameraControl(watcherId, 0);
watcherId = 209;
if (anychat.GetCameraState(watcherId) == 2
&& anychat.GetUserVideoWidth(watcherId) != 0) {
SurfaceHolder holder = firstSurfaceView.getHolder();
holder.setFormat(PixelFormat.RGB_565);
holder.setFixedSize(anychat.GetUserVideoWidth(watcherId),
anychat.GetUserVideoHeight(watcherId));
Surface s = holder.getSurface();
System.out.println("firstSurfaceView=" + watcherId);
anychat.SetVideoPos(watcherId, s, 0, 0, 0, 0);
anychat.UserCameraControl(watcherId, 1);
firstSurfaceOpen = true;
// 如果是采用Java视频显示,则需要将视频窗口与用户关联起来
if (AnyChatCoreSDK
.GetSDKOptionInt(AnyChatDefine.BRAC_SO_VIDEOSHOW_DRIVERCTRL) == AnyChatDefine.VIDEOSHOW_DRIVER_JAVA) {
anychat.mVideoHelper.SetVideoUser(firstVideoIndex, watcherId);
}
}
大概逻辑就是这样,那个watcherId我确定已经改变 您好,您在关闭用户视频“anychat.UserCameraControl(watcherId, 0);”之后没有关闭视频显示,正确的方法应该是:anychat.UserCameraControl(watcherId, 0);
anychat.mVideoHelper.SetVideoUser(firstVideoIndex, -1);另外本地预览的视频surface不能和远程用户进行共用。从您上面帖的代码来看,好象是共用了?
页:
[1]
2