2017-04-03 109 views

回答

1

您可以使用相关的服务

ANDROID

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

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

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

谢谢。在我的问题中,我要求以内置系统跨平台的方式播放简单的声音。你是否也可以添加UWP平台,所以你的回答更加完整和有用? – Kalitsov

+0

我更新我的代码,并添加一个有用的插件 –