Linphone和Xamarin表格;如何设置远程和本地视图?

时间:2018-03-13 07:43:23

标签: xamarin.forms linphone linphone-sdk

基于 Linphone Windows 10应用implementation,我可以通过将属性Linphone.Core.NativeVideoWindowIdNativePreviewVideoWindowId设置为相应的来查看远程和本地视频Name:两个Windows.UI.Xaml.Controls.SwapChainPanel个控件。

在相应的 Xamarin Android iOS 应用中使用 Linphone 时,应该使用哪个UI控件,以及哪个控件应该使用属性来定义这些平台上的NativeVideoWindowIdNativePreviewVideoWindowId吗?

2 个答案:

答案 0 :(得分:1)

我有类似的问题。

<强>机器人:

videoView = new GL2JNIView(context);
surfaceView = new SurfaceView(context);

通过自定义渲染器进行分配,例如ViewRenderer<CameraPreview, Droid.Lib.CameraPreview>

<强>的iOS:

 var wrapper = (Xamarin.Forms.Platform.iOS.NativeViewWrapper)contentViewVideoParent.Content;
                var videoview = (UIView)wrapper.NativeView;

IntPtr videoview.Handle分配给linphone视图。

答案 1 :(得分:0)

我用你的回答解决了同样的问题,但我认为在这个例子中缺少一些代码(对于下一个人,有同样的问题),所以我发布了对我有用的代码。

iOS:


AppDelegate.cs(iOS 项目)

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App(IntPtr.Zero));
    View view = null;
    UIView iView = new UIView(new RectangleF(0,0,640,480));
    view = iView.ToView();
    ((App)App.Current).ViedoFrame().Content = view;
    NativeViewWrapper wrapper = (NativeViewWrapper)((App)App.Current).ViedoFrame().Content;
    UIView uiView = (UIView)wrapper.NativeView;
    ((App)App.Current).Core.NativePreviewWindowId = uiView.Handle;
    ((App)App.Current).Core.VideoDisplayEnabled = true;
    ((App)App.Current).Core.VideoPreviewEnabled = true;
    
    return base.FinishedLaunching(app, options);
}

App.cs(共享项目)

public partial class App : Application
{
    ...
    
    public Page MainPageContent;
    
    public App(IntPtr context)
    {
        InitializeComponent();
        MainPageContent = new MainPage();
        MainPage = new NavigationPage(MainPageContent);
    }
    
    public ContentView ViedoFrame()
    {
        return MainPageContent.FindByName<ContentView>("video_frame");
    }
    
    ...
}

MainPage.xaml(共享项目)

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:Kiwi"
             x:Class="Project.Linphone"
             Title="KiwiDoorUni">
             
    <ContentPage.ToolbarItems>
        ...
    </ContentPage.ToolbarItems>
    
    <StackLayout>
        ...
        <ContentView x:Name="video_frame">
        <!-- leave blank, UIView will be inserted here -->
        </ContentView>
    </StackLayout>
</ContentPage>

安卓版


我在 Linphone Xamarin 示例项目中使用了来自 BelledonneCommunications 的代码,它对我有用

示例项目可以在这里找到:

https://github.com/BelledonneCommunications/linphone-xamarin

检查文件:MainActivity.cs(android项目)