【问题标题】:MvvmCross vnext : monodroid use a VideoView inside a pluginMvvmCross vnext : monodroid 在插件中使用 VideoView
【发布时间】:2012-10-12 12:55:33
【问题描述】:

我在玩 Xamarin Mobile api MediaPicker,它使用 MediaRecorder 和 monodroid 制作插件来录制视频。

Android 必须在 VideoView 中预览视频。出于隐私考虑,此限制也适用于 wp7 和 ios。

所以,我需要从我的自定义视图中获取 VideoView(或 wp7 中的 Rectangle),并在我的插件中将 PreviewDisplay 设置为此 VideoView(或使用此 VideoView 初始化 MediaPicker)。

实现需要 UI 元素的便携式插件的最佳方法是什么?

提前感谢您的帮助。

【问题讨论】:

    标签: windows-phone-7 xamarin.ios xamarin.android mvvmcross xamarin.mobile


    【解决方案1】:

    实现需要 UI 元素的便携式插件的最佳方法是什么?

    我想我的第一个问题是“你需要一个便携式插件吗?”

    在 ViewModel 层或更低层你真正需要的接口是什么?

    我的猜测是 ViewModel 将看到的跨平台界面可能只包含:

    • 一些控制命令(例如启动/停止)
    • 一些摘要信息 - 例如视频时长
    • 文件访问层 - 这可能只有文件路径?

    如果是这种情况,那么我可能会在 UI 中的 Controls/Views/UIViews 中实现大部分逻辑,然后将相关命令和值绑定到这些 ViewModel 属性。

    所以我根本不会亲自将其作为插件实现!


    我之前做过几个使用视频视图的应用程序 - 一个用于视频捕获(仅限 Android),一个用于条形码扫描。

    我发现基本的可用示例运行良好。但是,一旦我开始尝试扩展它们,它们很快就变得脆弱,它们很难开始工作,而且它们的开发非常令人沮丧!

    我真诚地建议您以 UI 视图代码的形式开始当前的开发。在你让它工作之后,你可能会找到一种将控件和界面拆分为插件的好方法 - 但我怀疑这不会是你大部分时间花费的地方。


    例如对于我的下一个 QR 码应用程序,我计划在 https://github.com/Redth/ZxingSharp.Mobile 中使用单独的 UI 控件 - 在 ViewModel 级别,我希望可以只公开某种作用于解码的 QR 字符串的命令。

    【讨论】:

    • 我的第一个意见是使用 Object 属性从我的 UI 中获取 VideoView。因此,如果例如 monodroid,我可以在我的插件库中转换为 VideoView,或者根据 wp7 或 ios 转换为任何 UI 元素。我会研究你的答案。
    • 祝你好运!我认为这有点像 Pull-To-Refresh 示例——pull-to-refresh 的工作方式是每个 UI 层的一个特性——所以没有“便携式插件”。如果您确实想使用 Object 参数,那么我想我会选择某种 IVideoContainer 包装器 - 所以插件至少可以查询 IDroidVideoContainer 或类似的。
    • 最后,我照常听从您的指示!我创建自定义控件并绑定到 ViewModel 属性。再次感谢。
    • 非常好 - 我会喜欢看到一个示例 - 只是屏幕截图或代码级别!
    • 没什么了不起的。我只是在视图布局中包含我的 axml 视频播放器。我的 EditBox 设置 ViewModel FileName 属性。我在我的视图中捕捉到 Button Start 事件并开始记录 ViewModel.FileName 属性,就好像它是一个“经典”的 monodroid 应用程序一样,我的意思是真的不需要 MvvmCross 功能。我会尽快给你我的示例文件,即使我认为它对你来说非常基础。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多