【发布时间】:2018-03-01 10:27:19
【问题描述】:
我是新手,如果我没有正确提出问题或发布足够的信息,请原谅。
我是创建移动应用程序的新手,我正在使用Xamarin.Forms 创建自定义视图。有了这个视图,我正在使用 Android ViewRenderer 来播放内置 android MediaPlayer/VideoView 的音频/视频。
与发布并接受为Renderer I copied and is working的答案的android渲染器几乎完全相同
我的问题是当视频开始播放并单击主页/返回按钮时,音频会继续播放几秒钟然后停止。我想立即停止音频。
我尝试过的方法:
在我的ViewRenderer 中,我尝试通过override SurfaceDestroyed 致电player.stop()。这不起作用,没有错误或任何只是音频继续,就像此代码不存在一样。大约 3-5 秒后音频停止。
在ViewRenderer 中,我尝试使用Control.SystemUiVisibilityChange 事件调用player.stop()。没有错误或任何东西。音频持续 3-5 秒。
我无法将 player 实例传递给主要活动 onPause() 方法,因为我是 Xamarin.Forms 和 android ViewRenderers 的新手以了解如何。可能在onPause() 方法上调用此player.stop() 将起作用,但我找不到如何执行此操作。有人可以帮忙吗?我搜索了许多论坛数周,最终放弃发布问题。
【问题讨论】:
-
您是否尝试过覆盖 onbackbuttonpressed() 和 ondisappearing() 然后将 player.stop() 放在上面?
-
我确实开始尝试这样做,但无法从我的查看器中获得正确的覆盖结构来覆盖 onbackbuttonpressed()。今晚我将努力尝试,看看是否有效。当我的应用程序被中断(调用/另一个应用程序/最小化)时,是否调用 onbackbuttonpressed()?我认为按下主页按钮时从 MainActivity 调用 onPause() 。如果是这种情况,我如何从 MainActivity 中找到 mediaplayer 实例,如果它是由 viewrenderer 发起和调用的?
-
我确实尝试过覆盖 Xamarin.Forms 应用程序中的 OnDisappearing。在我看来,我创建了一个名为“StopAction”的方法,并在我的渲染器上执行 e.newelement.StopAction => () => player.pause();在我消失时,我正在调用“VideoView.StopAction()”并且视频不会暂停。我会收到一个 null 错误,然后应用程序会执行其正常行为。
标签: android xamarin xamarin.forms android-mediaplayer viewrendering