debugging - MediaElement仅在 Debug模式下播放音频,而在 Debug模式下不播放音频

标签 debugging audio windows-phone-8 mediaelement audio-player

我正在Windows Phone 8上尝试通过创建用户控件和媒体元素在我的应用程序中实现音频播放功能。

令人惊讶的是,音频在调试过程中正在播放,但是当我在没有 Debug模式的情况下运行应用程序时,音频无法播放,因此我尝试了等待和异步方法,但是那也不起作用。

MainPage.xaml.cs

private async void AudioControl(string audioId, string audio_url)
{
   customControlAudioPlayer.media_Id = audioId;
   customAudioPlayer.media_Url = audio_url;
   //Following function is dedicated to show control and play the audio.
   await customAudioPlayer.RenderView();
   gridContainsMediaElement.Visibility = Visibility.Visible;
}

MainPage.xaml
xmlns:MyControls="clr-namespace:dbok.Controls"

<Grid Name="gridContainsMediaElement"  
      VerticalAlignment="Top"  
      Background="Black" Visibility="Collapsed">
        <MyControls:AudioPlayerControl 
           x:Name="customControlAudioPlayer"/>
       <!--CloseClick="audioPlayerControl_CloseClick"-->
</Grid>

CustomControlPlayer.xaml
 <Grid Background="{StaticResource PhoneChromeBrush}"  >

        <MediaElement x:Name="audioMediaElement" AutoPlay="False" 
            Grid.Row="0" 
            MediaOpened="audioMediaElement_MediaOpened"
            MediaEnded="audioMediaElement_MediaEnded"
                    MediaFailed="audioMediaElement_MediaFailed"
            HorizontalAlignment="Center" Height="05" 
            VerticalAlignment="Center"/>

    <Slider Visibility="Visible" Margin="50,0,50,0"
            x:Name="mediaPositionSlider" Background="#f1592a" 
            Minimum="0" Grid.Row="0" 
            />

    </StackPanel>
</Grid>

CustomControlPlayer.xaml.cs
 public string media_Id;
 public string media_Url;

 public async Task RenderView()
 {
    Uri file_url;
    if (Uri.TryCreate(media_Url, UriKind.Absolute, out file_url))
    {
        myElement.Source = file_url;
        myElement.Play();

        //I tried by check the media element state but its executing and playing only in debug mode. it was not working for me without debug i made it commented.
        //if (myElement.CurrentState != MediaElementState.Playing)
        //{
        //    myElement.Play();
        //}
        mediaPositionSlider.Value = 0;
        UpdateDuration(0);
   }

//-----------

private void UpdateDuration(double _myValue)
{
    TimeSpan t = TimeSpan.FromSeconds(_myValue);
    string time_slot = string.Format("{0:D2}:{1:D2}:{2:D2}",
                   t.Hours,
                   t.Minutes,
                   t.Seconds);
    PlayStatusLabel.Text = time_slot.ToString();
}

我已经发布了我的代码,在什么地方以及我在做什么呢?由于它在 Debug模式下无法在运行模式下播放?

最佳答案

我已经成功解决了我面临的问题,实际上当光标到达audioMediaElement.Play()时会发生什么? Play()函数需要一些时间才能在内部执行,所以我将audioMediaElement.Play()替换为audioMediaElement.AutoPlay = true;它开始工作。 :) woooo hoooo ... :)

关于debugging - MediaElement仅在 Debug模式下播放音频,而在 Debug模式下不播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24407473/

相关文章:

c# - 符号已创建,但调试永远不会在断点处停止

debugging - Firefox 错误中的禁用选项

c++ - C++调试断言失败

android - 为通知设置自定义声音

windows-phone-8 - Windows Phone 8 StreamSocketListener 的实现

wpf - 为什么我无法在 VS 中单步执行 WPF 源代码?

iphone - 私有(private) iOS API 以访问来自 iPhone 上降噪麦克风的原始输入?

ios - 使用 Audio Session 录制时如何减少录音噪音?

xaml - 通过组合其他画笔(渐变等)来创建画笔

c# - Windows Phone 8 线程无效的跨线程访问