Нулевой мультимедийный опыт при воспроизведении видео с плагина в Windows Media Center

В нашем плагине 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 ответ

Решение

В случае, если у другой бедной души есть эта проблема, вот обходной путь для победы 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);
                }

            }
Другие вопросы по тегам