我正在尝试创建一个可以进行视频通话的应用。
呼叫布局包括一个远程表面视图,用于显示占据大部分屏幕的远程端,以及另一个位于远程表面视图顶部的小型本地表面视图,以显示本地摄像头,这是一个小盒子。屏幕的左上角。
看起来像这样:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.7">
<SurfaceView
android:id="@+id/remoteSurface"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:weightSum="1">
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="0.25"
android:orientation="horizontal"
android:weightSum="1">
<SurfaceView
android:id="@+id/localSurface"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.2" />
</LinearLayout>
//some more layout unrelated to the question
在SurfaceHolder.Callback
onCreateView
添加到曲面视图的持有者
当尝试创建一个呼叫时,呼叫发起者正在看到他应该做的一切 - 远程表面和它上面的本地没有问题。
问题出在接收方..由于某种原因,当在接收方充气相同的布局时,我只能看到远程表面视图而根本没有本地表面。我在整个屏幕上看到对方的视频没有当地表面的小左上方,就像它根本没有那样。如果我在膨胀时将此行添加到onCreateView
:
localSurface.setBackgroundColor(Color.BLACK);
然后我突然看到表面,但当然只有黑色背景。
为什么在收到来电的情况下不会显示表面视图?
更新:我尝试将远程表面的背景颜色设置为黑色,然后我突然能够查看局部表面,但我看到了远程视频的一部分。
效果与使用2个屏幕的计算机上的效果相同,每个显示图片的一半,所以在我的情况下它就像我有2个表面,每个都显示相同图片的一部分(图片)这里是远程视频),而不是本地表面显示一个应该是本地视频的不同图片..
如果局部表面会显示远程视频的一部分而不是本地视频,情况会怎样?