使用Visual C ++和Xamarin 进行Hyperlapse跨平台移动开发
[原文发表地址]Hyperlapse cross-platform mobile development with Visual C++ and Xamarin
[原文发表时间] 2015/06/26 11:14AM
微软Hyperlapse Mobile提供了一个机会,它可以把任何长视频变成短小精悍的版本,可以将一个在骑颠簸的自行车上拍摄的抖动视频转换为一个在家里花园散步时拍摄的平稳视频,您可以轻松地与朋友和家人分享。这项技术,在Windows Phone上是可用的, 在Android上也有一个beta版。它将是令人期待的,特别是那些有史以来通过实时视频记录短途旅行感到不满意的人。
对于专业的摄影者和视频爱好者, 微软Hyperlapse Pro 可以使用Windows计算机从任何的摄像机或设备上的视频镜头创建一个Hyperlapse,包括航拍镜头用无人机拍摄的视频设备。它开辟以前由于困难不能实现的可能性,即使不是不可能,那也只是对于经验老道的电影制片人。这篇博客谈论使用跨平台的Visual C ++和Xamarin如何开发Hyperlapse的解决方案。
Hyperlapse代码库的结构方式
Hyperlapse的核心算法部分用C ++编写是由于性能的原因,随着时间的推移,我们已经建立了先进的,高度优化的计算机视觉算法库。该库是一个巨大的投入,重写它会是一个巨大的工程。同样在管理方面,我们已经开发了一个控件和功能的工具包,我们在几个我们的应用程序里共享它,并想重新使用。当我们着手建立Hyperlapse我们不仅要利用我们之前的投资,同时也减少了日后的维护的债务。我们想建立一个单一的应用程序,但是有多子程序。同时,我们的应用程序需要采取底层硬件的优势,同时保持了独特的外观和它运行在每个平台的感觉。
Xamarin和C ++允许我们实现这些目标:我们可以用跨平台的C ++建立核心算法库,并保持大部分应用程序的业务逻辑在一个.NET移植类库。然后,我们可以建立细小模块,本机平台的用户界面(也写在C#里面)在我们的业务逻辑的顶部,让应用程序在每个平台上有宾至如归的感觉,但共享大多数底层的实现。
除过库文件,我们的代码30%左右的C ++,30%.NET,20%Xamarin / Windows Phone的特定的UI代码。包括库代码,C ++比例增加,因为我们的C ++库是巨大的(尽管我们不使用所有的C++代码在Hyperlapse中)。下图说明了Hyperlapse解决方案是如何构成的:
Visual Studio和Xamarin开发经验
使用Visual Studio集成的最大优势来自于对工具的熟悉。作为微软的开发团队,我们投入巨资在Visual Studio,C ++和C#。能够免处理Android Studio,Eclipse和Java是我们的生产力一个巨大的推动并且大大提高了我们的上市时间. Xamarin引进和使用预编译的C ++库。这不是理想的,因为这意味着使用像Eclipse的第三方工具来开发的C ++库,然后导入到Visual Studio。
Visual Studio跨平台的C ++与Xamarin集成关闭这个循环,确保我们可以编辑,构建和在Visual Studio调试C ++代码,因此我们不再需要任何第三方工具。此外,这也使我们能够与现有的基础设施建设,我们必须为Windows无缝集成我们的Android应用程序。只要按一下按钮,我们就可以生成两个版本,签约和打包的应用程序准备提交到各个应用商店。要了解更多有关Xamarin-C ++集成如何工作参照Xamarin博客,其中谈到在Xamarin应用构建和调试C ++。
开发的经验,特别是考虑到我们正在处理的预发布软件是非常顺利,一般都只是工作。具有这些功能是了不起的,因为他们已经是可用的在我们的CTP版本,虽然我们不得不重新安装Visual Studio像我们平时那样去做。
谢谢Visual Studio和Xamarin,我们将继续把我们的开发过程和产品引入新的平台和技术。我们期望把这些过程应用到新的和卓越的产品上。