1

Может ли кто-нибудь сказать мне лучший подход к воспроизведению однотоновых, аудио (.mp3) файлов в приложении Windows Phone 8? Подумайте о приложении для фортепиано, где каждая клавиша будет представлять собой кнопку, и каждая кнопка будет воспроизводить другой тон.Лучший способ воспроизведения одного тонального аудиофайла?

Я ищу наиболее эффективный способ сделать это - у меня есть 8 разных кнопок, которым нужно играть другим тоном при прослушивании.

Я попытался с помощью MediaElement:

MediaElement me; 

public MainPage() 
{ 
    InitializeComponent(); 

    me = new MediaElement(); 
    me.AutoPlay = false; 
    me.Source = new Uri("/Sounds/Sound1.mp3", UriKind.Relative); 

    btnPlay.Click += btnPlay_Click; 

} 

private void btnPlay_Click(object sender, EventArgs e) 
{ 
    me.Play(); 
} 

Но ничего не происходит, либо в эмуляторе или на устройстве (тестирование ж/Lumia 822). Я здесь что-то не так? Похоже, это должно быть довольно просто. Или использовать MediaElement, даже лучше всего использовать для моего сценария?

Это подпадает под категорию Background Audio? Я прочитал этот пример, но, похоже, это слишком сложно для того, что я хочу сделать.

Я также читал об использовании XNA's SoundEffect, чтобы выполнить эту работу, но тогда у меня было бы have to convert my .mp3 files to .wav (что не обязательно проблема, но я бы не стал ее пропускать, если мне это не нужно) ,

Может ли кто-нибудь сказать мне, что я делаю неправильно в моем примере выше, или посоветовать мне лучшее решение для быстрого воспроизведения звуковых сигналов 1s?

+0

Я столкнулся с проблемой, подобной этому. попробуйте установить AutoPlay в true в обработчике кликов. – John

ответ

3

У меня была эта проблема, прежде чем с MediaElement не воспроизводить аудиофайлы. После многих попыток я обнаружил, что он воспроизводится только в том случае, если он определен в xaml, а для параметра AutoPlay установлено значение true.

Попробуйте определить его в xaml или просто добавить его в свой LayoutRoot.

var me = new MediaElement(); 
    LayoutRoot.Children.Add(me); 
    me.AutoPlay = true; 
    me.Source = new Uri("Sound/1.mp3", UriKind.Relative); 
+0

Да, это сработало. Благодаря! Обратите внимание, что мне было ** не ** необходимо установить 'AutoPlay' в' true'. Оставляя его «false», все еще разрешалось воспроизведение файла. – lhan

0

Мне повезло, что я просто выполнил эту часть кода в своем приложении. Но это может не сработать и в вашем контексте, но пусть это вихрь.

mediaElement.Source = новый Uri ("/ Audio /" + songID.ToString() + ".mp3", UriKind.Relative); mediaElement.Play();