【问题标题】:How to set the volume to 0 in Xamarin Native video Player如何在 Xamarin Native 视频播放器中将音量设置为 0
【发布时间】:2020-04-10 05:50:36
【问题描述】:

在我的视频渲染器中,我尝试将音量默认设置为 0。我尝试使用 setVolume,但它在我的视频视图中不可用。请建议。当视频处于后台模式时,我希望将音量值设置为 0。我已附上我的 VideoRenderer 文件供 android 参考。

public class VideoPlayerRenderer : ViewRenderer<VideoPlayer, ARelativeLayout>
    {
        VideoView videoView;
        MediaController mediaController;    // Used to display transport controls
        bool isPrepared;

        public VideoPlayerRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<VideoPlayer> args)
        {
            base.OnElementChanged(args);

            if (args.NewElement != null)
            {
                if (Control == null)
                {
                    // Save the VideoView for future reference
                    videoView = new VideoView(Context);

                    // Put the VideoView in a RelativeLayout
                    ARelativeLayout relativeLayout = new ARelativeLayout(Context);
                    relativeLayout.AddView(videoView);

                    // Center the VideoView in the RelativeLayout
                    ARelativeLayout.LayoutParams layoutParams =
                        new ARelativeLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
                    layoutParams.AddRule(LayoutRules.CenterInParent);
                    videoView.LayoutParameters = layoutParams;

                    // Handle a VideoView event
                    videoView.Prepared += OnVideoViewPrepared;


                    SetNativeControl(relativeLayout);

                    //Update Volume
                    UpdateVolume();
                }

                SetSource();

            }

         private void UpdateVolume()
             {
                var volume = Element.Volume;

                if (volume != int.MinValue)
                {
                    var nativeVolume = (float)Math.Min(100, Math.Max(0, volume)) / 100;

                    //assign my native volume to my video view. 


                }

              }

【问题讨论】:

标签: xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

VideoView.Prepared 事件中的sender 是MediaPlayer。您可以使用 MediaPlayer 实例来控制音量等。

private void OnPrepared(object sender, EventArgs e)
{
    if (sender is MediaPlayer mediaPlayer)
    {
        mediaPlayer.SetVolume(0, 0);
    }
}

或者,如果您愿意,也可以实现自己的 IOnPreparedListener 并传递给 VideoView:

private class PreparedListener : Java.Lang.Object, MediaPlayer.IOnPreparedListener
{
    public void OnPrepared(MediaPlayer mp)
    {
        mp.SetVolume(0, 0);
    }
}

并将其设置为VideoView 上的侦听器,例如:

videoView.SetOnPreparedListener(new PreparedListener());

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多