Нулевой мультимедийный опыт при воспроизведении видео с плагина в 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);
}
}