Xamarin Forms:如何实现特定于平台的代码

时间:2015-03-05 21:09:46

标签: c# audio xamarin cross-platform xamarin.forms

我有一个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,所以我想我必须为每个项目/平台添加bear.wav并分别处理播放代码。 (另见http://developer.xamarin.com/recipes/android/media/audio/play_audio/

不幸的是,我找不到有关如何执行此操作的示例或任何文档。

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/是我能找到的最接近的,但它似乎高度关注渲染器。

我认为我会做的是在共享项目中定义一个抽象类(一些简单的类,只需使用 void play 方法),并使用它,并具有特定的实现每个平台项目。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来像 Write device platform specific code in Xamarin.Forms 回答这个问题 - 这不是一个Xamarin Forms问题,而是一个Visual Studio共享项目问题,可以通过创建一个接口/抽象类然后为每个平台实现并注入实现来解决。