locked
Поведение MediaElement RRS feed

  • Вопрос

  • Здравствуйте, коллеги, 

    есть вопрос по работе медиа элемента, почему-то не срабатывает метод Play()

    вот такой код определен при клике на элементе GridView

           void ItemView_ItemClick(object sender, ItemClickEventArgs e)
            {
                
                Uri url = new Uri(((Station)e.ClickedItem).URL);
                Player.Source = url;
                Player.Play();
    
            }

    элемент определяется так

    <MediaElement Name='Player' AutoPlay='False' AudioCategory="BackgroundCapableMedia" MediaFailed="Player_MediaFailed_1"/>
    мне не удалось разобраться, почему при клике по итему срабатывает добавление url  к Source, но воспроизведение не начинается, я создал текстовую метку, чтобы определять состояния медиа элемента, оказалось, что он переходит в паузу вместо Play. При этом если разместить кнопку на аппбаре например и определить для нее метод Play(), то он срабатывает...


    29 апреля 2013 г. 18:07

Ответы

  • Не совсем верное понимание значения этого свойства... AutoPlay - указывает "будет ли автоматически начинаться воспроизведение мультимедиа при задании свойства Source."
    • Помечено в качестве ответа Andev 30 апреля 2013 г. 16:09
    30 апреля 2013 г. 9:46

Все ответы

  • Здравствуйте!

    Здесь вы найдете все ответы на ваши вопросы :)

    я там читал :) может быть невнимательно, можете ткнуть носом в нужный абзац? :) дело в том, что если разместить кнопки управления на аппбаре внизу например, то они все нормально работают, а на гриде не хотят...
    29 апреля 2013 г. 19:51
  • Приведите XAML кнопок и код обработки, так будет более понятно в чем ошибка.
    29 апреля 2013 г. 20:38
  • Попробуйте определить в MediaElement обработчики для событий Stop и Pause. Также при создании URI задайте вторым параметром явно Absolute путь

    Для связи [mail]

    30 апреля 2013 г. 7:48
  • Приведите XAML кнопок и код обработки, так будет более понятно в чем ошибка.

    метод ItemView_ItemClick подписан на событие ItemClick сетки GridView, ничего лишнего нет, у XAML кнопок на аппбаре обычный код вида <Button Content="Play" Click="Button_Click" />, где в теле метода Button_Click указан метод Player.Play()
    30 апреля 2013 г. 7:51
  • А Source для MediaElement в Button_Click как устанавливается?
    30 апреля 2013 г. 8:58
  • А Source для MediaElement в Button_Click как устанавливается?
    для простых кнопок на аппбаре оно не устаналивается у меня, только на элементах грида, так уж задумано
    30 апреля 2013 г. 9:00
  • Ну а значение MediaElement.Source чему в этот момент равно?
    30 апреля 2013 г. 9:07
  • Попробуйте определить в MediaElement обработчики для событий Stop и Pause. Также при создании URI задайте вторым параметром явно Absolute путь

    Для связи [mail]

    спасибо за совет, а почему именно для Stop и Pause? Я не понимаю, как должен выглядеть такой обработчик и что он должен делать:(
    30 апреля 2013 г. 9:12
  • Ну а значение MediaElement.Source чему в этот момент равно?
    в момент запуска оно пустое, соотвественно рабочая кнопка на аппбаре не сработает из-за пустого Source, если нажать на Item-элемент сетки GridView (метод ItemView_ItemClick), то происходит присвоение адреса Source, затем можно нажать кнопку Play на аппбаре и музыка пойдет, но не срабатывает метод Play() при клике на Item-элемент сетки GridView, отслеживание статуса по событиям MediaElement показывает следующее: Открытие - Буферизация - Пауза. Метод Play() не срабатывает. Затем если нажать кнопку Play на аппбаре, для которой определент тот же метод Player.Play(), воспроизведение идет. Если затем опять же нажать Item-элемент сетки GridView, то снова "Пауза".

    • Изменено Andev 30 апреля 2013 г. 9:21
    30 апреля 2013 г. 9:18
  • Если у вас в момент запуска приложения MediaElement.Source == null, зачем вы тогда устанавливали AutoPlay = false? Попробуйте убрать. Или же выложите проект куда-нибудь - посмотрим.
    30 апреля 2013 г. 9:31
  • Если у вас в момент запуска приложения MediaElement.Source == null, зачем вы тогда устанавливали AutoPlay = false? Попробуйте убрать. Или же выложите проект куда-нибудь - посмотрим.
    поскольку оно null, поэтому автозапуск запрещен, разве неправильно?
    30 апреля 2013 г. 9:40
  • Не совсем верное понимание значения этого свойства... AutoPlay - указывает "будет ли автоматически начинаться воспроизведение мультимедиа при задании свойства Source."
    • Помечено в качестве ответа Andev 30 апреля 2013 г. 16:09
    30 апреля 2013 г. 9:46
  • Не совсем верное понимание значения этого свойства... AutoPlay - указывает "будет ли автоматически начинаться воспроизведение мультимедиа при задании свойства Source."
    это интересно:) спасибо, попробую
    30 апреля 2013 г. 11:51
  • коллеги,

    столкнулся с интересной проблемой, оказалось, что кнопка Стоп медиаэлемента не работает для некоторых элементов GridView, при этом Плей и Пауза работают нормально, я даже не знаю в каком направлении искать ответ на этот вопрос, имеется динамическая коллекция, методы Stop(), Play(), Pause() для соответствующих кнопок управления проигрывателем описаны один раз, свойство Source принимает значение при клике на элементе коллекции.

    6 мая 2013 г. 16:39
  • мое наблюдение показало, что кнопка Стоп не работает для тех потоков, для которых нет буферизации, специальное поле отображает статус медиа, если происходит такой порядок "открытие - буферизация", то кнопка Стоп работает, если только "Открытие", то Стоп не работает, только Пауза.
    6 мая 2013 г. 20:12