Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 媒体元素UWP中的前向和后向音频_C#_Xamarin_Uwp_Xamarin.forms - Fatal编程技术网

C# 媒体元素UWP中的前向和后向音频

C# 媒体元素UWP中的前向和后向音频,c#,xamarin,uwp,xamarin.forms,C#,Xamarin,Uwp,Xamarin.forms,我正在开发与UWP兼容的Xamarin.Forms应用程序。我的要求是播放、暂停、向前、向后录制的音频文件。为此,我在Xamarin.Forms可移植项目中创建了一个接口 public interface IRecordAudio { Task<TimeSpan> SetSource(Stream _stream); void PlayAudio(); void ForwardAudio();

我正在开发与UWP兼容的Xamarin.Forms应用程序。我的要求是播放、暂停、向前、向后录制的音频文件。为此,我在Xamarin.Forms可移植项目中创建了一个接口

    public interface IRecordAudio 
    {        
         Task<TimeSpan> SetSource(Stream _stream);
         void PlayAudio();
         void ForwardAudio();
         void RewindAudio();
         void PauseAudio();
    }
公共接口IRecordAudio
{        
任务集合源(流_流);
无效播放音频();
void ForwardAudio();
void RewindAudio();
void PauseAudio();
}
该接口在UWP项目中的实现如下:

   public class RecordAudioUWP : IRecordAudio
   { 
        public async Task<TimeSpan> SetSource(Stream _stream)
        {
             StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
             var folder = await local.GetFolderAsync("Recordings");
             var file = await folder.GetFileAsync("MySound.MP3");
             var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
             element.SetSource(stream, "");
             MusicProperties properties = await 
             file.Properties.GetMusicPropertiesAsync();
             TimeSpan myTrackDuration = properties.Duration;
             return myTrackDuration;
         }

         public void PlayAudio()
         {
             element.Play();
         }

         public void ForwardAudio()  //Not Working
         {
             element.Position += TimeSpan.FromSeconds(10);
         }

         public void PauseAudio()
         {
             element.Pause();
         }

         public void RewindAudio()  //Not Working
         {
             element.Position -= TimeSpan.FromMinutes(1);
         } 
   }
公共类RecordAudioUWP:IRecordAudio
{ 
公共异步任务集合源(流_流)
{
StorageFolder local=Windows.Storage.ApplicationData.Current.LocalFolder;
var folder=await local.GetFolderAsync(“录制”);
var file=await folder.GetFileAsync(“MySound.MP3”);
var stream=await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
元素。SetSource(流“”);
MusicProperties属性=等待
GetMusicPropertiesAsync();
TimeSpan myTrackDuration=properties.Duration;
返回myTrackDuration;
}
公共播放音频()
{
元素Play();
}
public void ForwardAudio()//不工作
{
元素位置+=从秒开始的时间跨度(10);
}
公共空间
{
元素Pause();
}
public void RewindAudio()//不工作
{
元素位置-=时间跨度从分钟(1);
} 
}
音频源已正确设置。音频已正确播放和暂停。我在向前和向后播放音频文件时遇到问题

请让我知道我哪里做错了。谢谢

在Windows 10、build 1607和on中,我们建议您使用MediaPlayerElement代替MediaElement。MediaPlayerElement具有与MediaElement相同的功能,同时还支持更高级的媒体播放方案。此外,媒体播放的所有未来改进都将在MediaPlayerElement中实现

您可以使用
MediaPlayerElement
代替以下内容:

public class RecordAudioUWP : IRecordAudio
{
    private MediaPlayerElement element;      
    private MediaPlayer player;
    public async Task<TimeSpan> SetSource(Stream _stream)
    {
        element = new MediaPlayerElement();

        StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
        var folder = await local.GetFolderAsync("Recordings");
        var file = await folder.GetFileAsync("MySound.MP3");
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        element.Source = MediaSource.CreateFromStream(stream,"");

        player = element.MediaPlayer;
        MusicProperties properties = await
        file.Properties.GetMusicPropertiesAsync();
        TimeSpan myTrackDuration = properties.Duration;
        return myTrackDuration;
    }

    public void PlayAudio()
    {
        player.Play();
    }

    public void ForwardAudio()  
    {
        var session = player.PlaybackSession;
        session.Position += TimeSpan.FromSeconds(10);  

    }

    public void PauseAudio()
    {
        player.Pause();
    }

    public void RewindAudio() 
    {
        var session = player.PlaybackSession;
        session.Position -= TimeSpan.FromMinutes(1);
    }
}
公共类RecordAudioUWP:IRecordAudio
{
私有媒体要素;
私人媒体播放器;
公共异步任务集合源(流_流)
{
元素=新的MediaPlayerElement();
StorageFolder local=Windows.Storage.ApplicationData.Current.LocalFolder;
var folder=await local.GetFolderAsync(“录制”);
var file=await folder.GetFileAsync(“MySound.MP3”);
var stream=await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
element.Source=MediaSource.CreateFromStream(stream,“”);
player=element.MediaPlayer;
MusicProperties属性=等待
GetMusicPropertiesAsync();
TimeSpan myTrackDuration=properties.Duration;
返回myTrackDuration;
}
公共播放音频()
{
player.Play();
}
公共音频
{
var会话=player.PlaybackSession;
session.Position+=时间跨度从秒(10);
}
公共空间
{
player.Pause();
}
公共空间
{
var会话=player.PlaybackSession;
session.Position-=TimeSpan.FromMinutes(1);
}
}