首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Xamarin.Forms中播放系统声音

如何在Xamarin.Forms中播放系统声音
EN

Stack Overflow用户
提问于 2017-04-03 13:01:27
回答 1查看 3.7K关注 0票数 3

我正在寻找轻量级内置系统跨平台音响播放器。类似于System.Console.Beep的东西,我可以直接从视图模型中调用。

我知道我可以使用提供者(策略)模式来构建平台特定的实现,或者使用像XamarinMediaManager这样的媒体播放器。

EN

回答 1

Stack Overflow用户

发布于 2017-04-04 07:48:08

可以使用依赖关系服务。

ANDROID

代码语言:javascript
复制
public class AudioService : IAudio
{

    private MediaPlayer _mediaPlayer;

    public bool PlayFile()
    {
        _mediaPlayer = MediaPlayer.Create(global::Android.App.Application.Context, Resource.Raw.test);
        _mediaPlayer.Start();

        return true;
    }

}

IOS

代码语言:javascript
复制
public class AudioService : IAudio
{

private AVAudioPlayer _ringtoneAudioPlayer;
public AudioService()
{
    _ringtoneAudioPlayer = AVAudioPlayer.FromUrl(NSUrl.FromFilename("call.caf"));
    _ringtoneAudioPlayer.NumberOfLoops = -1; // infinite
}

public void PlayFile()
{
    if (_ringtoneAudioPlayer != null)
    {
        _ringtoneAudioPlayer.Stop();
    }
    _ringtoneAudioPlayer.Play();
}
} 

UWP

代码语言:javascript
复制
public class AudioService : IAudio
{

    public async Task PlayAudioUWP(string fileName)
    {
        StorageFolder Folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
        StorageFile sf = await Folder.GetFileAsync(fileName);
        var PlayMusic = new MediaElement();
        PlayMusic.AudioCategory = Windows.UI.Xaml.Media.AudioCategory.Media;
        PlayMusic.SetSource(await sf.OpenAsync(FileAccessMode.Read), sf.ContentType);
        PlayMusic.Play();
    }

}

如果你愿意的话,你可以试试这个插件

https://www.nuget.org/packages/XamarinAudioManager/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43185359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档