Как мне использовать ресурс пакета uri с медиаплеером?

У меня есть очень простой код, которому просто нужно воспроизвести звук с указанной громкостью, а именно:

var mp = new MediaPlayer();
mp.Open(uri);
mp.Volume = volume;
mp.Play();

Проблема возникает из-за того, что это часть модуля Prism. Я не знаю, где будет выполняться сборка, поэтому я не могу использовать относительный Uri или siteoforigin, а MediaPlayer не понимает синтаксис pack Uri.

У меня есть ресурсный wav-файл в корне моей сборки с именем «notify.wav», но я не могу передать его в MediaPlayer через Uri и не вижу другого способа его загрузки.

Как воспроизвести файл?


person adhocgeek    schedule 16.09.2010    source источник


Ответы (4)


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

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

Надеюсь это поможет

person Brian Dishaw    schedule 06.08.2011

Сначала вы должны объявить переменную, которая является строкой для пути к вашей медиа-папке. Эта переменная содержит путь. как:

string url = @"C:\Users\Alico\Documents\visual studio 2010\Projects\WpfBrushesTest\WpfBrushesTest\Dido - Thank You.mp4";

а потом

mp.Open(new Uri(url,UriKind.Relative));
person alico    schedule 06.08.2011

Боюсь, медиаплеер не поддерживает пакетный URI.

Вы пробовали Directory.GetCurrentDirectory или Environment.CurrentDirectory?

person Dan H    schedule 16.09.2010
comment
Я не думаю, что GetCurrentDirectory мне поможет, потому что ресурс встроен в сборку. Я хочу знать, как передать такой ресурс в медиаплеер. Он не может быть потерян где-то в файловой системе. - person adhocgeek; 16.09.2010

Используйте класс ContentResolver для извлечения песен с устройства и захвата с помощью Song.XML, который включает (TextViews для заголовка, статьи, альбома и т. д.). Этот XML позже встраивается в XML MainActivity (включая ListView) с использованием класса адаптера, а затем вы можете вызвать onClick(Song.XML) для воспроизведения песен (настройка URI) в XML MainActivity, позже вы можете установить Seekber, Next, Previous и Play функция. Если хотите, я дам вам полные коды, но я пытаюсь воспроизвести песню из другого действия, используя новый дизайн пользовательского интерфейса и файл класса, все еще ищу.

person Aung Phyo Zaw    schedule 16.10.2020