Xamarin Forms:如何实现特定于平台的代码
Xamarin Forms: how to implement platform specific code
我有一个 Xamarin Forms 项目,我希望 Android、iOS 和 WinPhone 作为目标。 (现在我只看Android。)
我在播放音频时遇到问题,我想我需要在每台设备上以不同的方式实现它。
我开始在共享项目app.cs中添加这段代码
#if __ANDROID__
MediaPlayer _player;
_player = MediaPlayer.Create(this, Resources.Raw.bear); // "Resources.Raw.bear");
_player.Start();
#endif
但发现我不能真正引用bear.wav,所以我想我必须为每个project/platform添加bear.wav,并单独处理播放代码。 (另见 http://developer.xamarin.com/recipes/android/media/audio/play_audio/ )
遗憾的是,我找不到关于如何执行此操作的示例或任何文档。
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/ 是我能找到的最接近的,但它似乎高度关注渲染器。
我想我会做的是在共享项目中定义一个抽象class(一些简单的class,只是用void play方法),并使用它,并且在每个平台项目中都有具体的实现。怎么办?
看起来像
Write device platform specific code in Xamarin.Forms
回答问题 - 这与其说是一个 Xamarin Forms 问题,不如说是一个 Visual Studio 共享项目问题,可以通过创建一个 interface/abstract class 然后为每个平台实现它并注入来解决实施。
我有一个 Xamarin Forms 项目,我希望 Android、iOS 和 WinPhone 作为目标。 (现在我只看Android。)
我在播放音频时遇到问题,我想我需要在每台设备上以不同的方式实现它。
我开始在共享项目app.cs中添加这段代码
#if __ANDROID__
MediaPlayer _player;
_player = MediaPlayer.Create(this, Resources.Raw.bear); // "Resources.Raw.bear");
_player.Start();
#endif
但发现我不能真正引用bear.wav,所以我想我必须为每个project/platform添加bear.wav,并单独处理播放代码。 (另见 http://developer.xamarin.com/recipes/android/media/audio/play_audio/ )
遗憾的是,我找不到关于如何执行此操作的示例或任何文档。
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/ 是我能找到的最接近的,但它似乎高度关注渲染器。
我想我会做的是在共享项目中定义一个抽象class(一些简单的class,只是用void play方法),并使用它,并且在每个平台项目中都有具体的实现。怎么办?
看起来像 Write device platform specific code in Xamarin.Forms 回答问题 - 这与其说是一个 Xamarin Forms 问题,不如说是一个 Visual Studio 共享项目问题,可以通过创建一个 interface/abstract class 然后为每个平台实现它并注入来解决实施。