Нулевой мультимедийный опыт при воспроизведении видео с плагина в Windows Media Center - PullRequest
0 голосов
/ 18 декабря 2009

В нашем плагине Windows Media Center мы используем API PlayMedia для воспроизведения видео. Это документированный API от MS для воспроизведения видео, который задокументирован в SDK.

Например.

AddInHost.Current.MediaCenterEnvironment.PlayMedia(Microsoft.MediaCenter.MediaType.Video, path, false) 

В Vista, после этого звонка, у нас есть опыт работы со СМИ: AddInHost.Current.MediaCenterEnvironment.MediaExperience

Однако в Windows 7 материал немного более неустойчивый , и кажется, что MediaExperience отправляется в поиски земли через определенное время или определенные случайные действия.

Как мне последовательно воспроизводить видео и переходить на полный экран в Windows 7?

Существуют ли обходные пути, чтобы этот API работал постоянно в 100% случаев.

Кажется, что удаленный канал просто умирает или что-то в этом роде.

1 Ответ

0 голосов
/ 28 января 2010

В случае, если у другой бедной души есть эта проблема, вот обходной путь для победы 7, MS очень медленно, когда дело доходит до исправления этого.

        var mce = AddInHost.Current.MediaCenterEnvironment.MediaExperience;

        // great window 7 has bugs, lets see if we can work around them 
        if (mce == null) {
            System.Threading.Thread.Sleep(200);
            mce = AddInHost.Current.MediaCenterEnvironment.MediaExperience;
            if (mce == null) {
                try {
                    var fi = AddInHost.Current.MediaCenterEnvironment.GetType()
                        .GetField("_checkedMediaExperience", BindingFlags.NonPublic | BindingFlags.Instance);
                    if (fi != null) {
                        fi.SetValue(AddInHost.Current.MediaCenterEnvironment, false);
                        mce = AddInHost.Current.MediaCenterEnvironment.MediaExperience;
                    }

                } catch (Exception e) { 
                    // give up ... I do not know what to do 
                    Logger.ReportException("AddInHost.Current.MediaCenterEnvironment.MediaExperience is null", e);
                }

            }
...