МедиаЭлемент Windows Phone 7

Я создаю небольшое приложение, которое поможет мне лучше понять, как воспроизводить звуки на устройствах WP7, но у меня возникла проблема с выводом звука из устройства.

У меня есть следующий код:

<MediaElement x:Name="note1" Source="test.mp3" AutoPlay="False" />

private void btn1_Click(object sender, RoutedEventArgs e)
{
    note1.Source = new Uri("test.mp3", UriKind.Relative);
    note1.Play();
}

Где действие сборки test.mp3 является ресурсом.

Я не понимаю, когда я добавляю точку останова в метод btn1_Click и останавливаюсь на note1.Play(), он фактически воспроизводит test.mp3, но при отладке без точек останова и нажатии на кнопку я ничего не слышу.

Есть ли способ решить эту проблему?


person Michael    schedule 06.03.2011    source источник
comment
У меня нет проблем с воспроизведением MP3, как вы описали. Есть ли какие-либо другие действия, которые вы выполняете после нажатия кнопки?   -  person Den Delimarsky    schedule 06.03.2011
comment
Я думаю, проблема была в том, что мой звук длился всего 1 секунду, и я считаю, что MediaElement это не нравится. Вместо этого я использовал SoundEffect.   -  person Michael    schedule 20.03.2011


Ответы (6)


Вы пробовали играть с действием сборки test.mp3, установленным в качестве содержимого.

Также вы закрыли программное обеспечение zune после того, как оно распознает телефон и завершит синхронизацию, и подключитесь с помощью инструмента wp7connect. для получения дополнительной информации об инструменте wp7connect попробуйте здесь. zune блокирует все носители на устройстве wp7, и вы не можете воспроизводить какие-либо носители, но состояние носителя будет «завершено». попробуйте настроить следующие события мультимедиа MediaFailed MediaOpened,MediaEnded, DownloadProgressChanged, CurrentStateChanged и BufferingProgressChanged

person VichitraVij    schedule 07.03.2011

Кроме того, убедитесь, что вы добавили возможность ID_CAP_MEDIALIB в свой манифест (WMAppManifest.xml), это, по-видимому, требуется для MediaElement (в противном случае вы получите AG_E_NETWORK_ERROR в своем обработчике MediaFailed).

person Yousef    schedule 27.03.2011

я не рекомендую mediaElement для более чем одного аудиоэлемента ... у него странные эффекты ... используйте что-то вроде:

Поток stream = TitleContainer.OpenStream(@"Audio/buzzer.wav");

        SoundEffect effect = SoundEffect.FromStream(stream);
        FrameworkDispatcher.Update();
        effect.Play();

используя фреймворк xna .... и убедитесь, что есть файлы WAV.

person j2emanue    schedule 31.05.2012
comment
Это правильный ответ. Магазин Windows Phone отклонит ваше приложение, если оно приостановит воспроизведение музыки из музыкального проигрывателя. Соедините это с глючным медиаэлементом, это почти невозможно - person Clinton Ward; 25.11.2013

Тип Uri должен быть RelativeOrAbsolute.

private void btn1_Click(object sender, RoutedEventArgs e)
{
    note1.Source = new Uri("test.mp3", UriKind.RelativeOrAbsolute);
    note1.Play();
}
person Medeni Baykal    schedule 15.10.2011

Вы должны убедиться, что MediaElement был открыт, прежде чем вы сможете вызвать для него .Play() — вы можете сделать это, добавив приемник событий к событию MediaOpened. Также было бы хорошо вызывать .Stop() в любое время до переназначения свойства Source — взгляните на в этой теме подробнее.

person Henry C    schedule 27.02.2012

Это не может быть решено без обработчика событий. Сделайте, как указано ниже.

 <MediaElement x:Name="note1" Source="test.mp3" AutoPlay="False" />

 private void btn1_Click(object sender, RoutedEventArgs e)
 {
   note1.Source = new Uri("test.mp3", UriKind.Relative);
   note1.MediaOpened += new RoutedEventHandler(note1_MediaOpened);
 }

  void note1_MediaOpened(object sender, RoutedEventArgs e)
    {
        note1.Play();
    }

это отлично работает. наслаждаться...

person Zia Ur Rahman    schedule 16.11.2013