MediaCenter开发整理(三)C#部分

本文介绍MediaCenter编程的基础概念,包括MCML与C#的交互方式、关键类如SessionClass的作用及程序生命周期管理。同时,提供了基本类和接口的示例代码。
部署运行你感兴趣的模型镜像

其实MediaCenter的模式于asp.net的方式非常相似,C#代码相当于MCML代码部分的后台。其实这一部分的内容不需要了解很多就可以上手写MC的程序了,扫一遍API也就基本上可以了。

贴上这部分的整理结果。

MediaCenter编程C#

MCMLC#通过.net properties进行通信

MCMl不能使用C#的变量,只能定义properties   含有getset

它应该是基于ModeItem并且在set里应该包含FirePropertyChanged

 

Session class

程序的入口类  维护状态和数据以及一些选项

 

media center程序创建时将创建两个类

第一个是Session class继承ModeItem它将维持在一个media center程序的整个生命周期  

第二个是一个继承了IAddinModuleIAddInEntryPoint的类

它将实现IAddinModuleIntializeUnintialize两个接口

         IAddInEntryPointLaunch一个接口

 

IntializeUnintialize

在程序启动和结束时调用,Intialize里不要做过多的加载工作,它会阻塞显示直到它执行完返回

甚至一个小的操作都可能导致Media Center报告程序被锁死

在保存一些数据的时候会经常发生这种找不到程序的情况

Launch

新的MCML要被显示或者一些参数传递给程序是将调用词函数

同样的 ,这个函数里不要做太多的操作

一般情况是新建一个PageSession后就立即返回

 

PageSession

每个程序至少包含一个,负责跟踪程序进程

经常用到的一个是HistoryOrientedPageSession

它将记录用户的浏览轨迹等很多信息并且支持backspace之类的回退命令

事实上用户的界面显示是从这个类开始的  通过调用接口Navigate

 

一个程序需要的基本类和接口代码:

Public class Base:IAddInModule, IAddInEntryPoint

{

       Public static HistoryOrientedPageSeeion History;

       Public void Intialize(Dictionary<String, Objiect> appInfo,

Dictionary<String,Object> entryPointInfo)

       {}

       Public void Unintialize()

       {}

       Public void Launch(AddInHost host)

{

       History = new HistoryOrientedPageSession();

       History.Go(“resx://Assm………”);

}

}

 

程序被拉起时,先调用Intialize  然后调用Launch

创建一个HistoryOrientedPageSession   开始记录管理我们的路径

然后进入mcml

最后程序退出时  将调用Unintialize  可以把没有做完的事情放在这里做,但是还是尽量使其操作越少越好!!!

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

1、基本属性  URL 指定媒体位置,本机或网络地址 例如:axWindowsMediaPlayer1.URL = @"f:\aa.mp3"; uiMode 播放器界面模式,可为Full, Mini, None, Invisible ;Full:有下面的控制条; None:只有播放部份没有控制条 例如:axWindowsMediaPlayer1.uiMode = "Invisible"; playState 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 enableContextMenu 启用/禁用右键菜单 fullScreen 是否全屏显示 stretchToFit 非全屏状态时是否伸展到最佳大小 2、播放器基本控制 Ctlcontrols.play(); 播放 Ctlcontrols.pause(); 暂停 Ctlcontrols.stop(); 停止 Ctlcontrols.currentPosition 当前进度 Ctlcontrols.currentPositionString 当前进度,字符串格式。如“00:23” Ctlcontrols.fastForward(); 快进 Ctlcontrols.fastReverse(); 快退 Ctlcontrols.next(); 下一曲 Ctlcontrols.previous(); 上一曲 3、播放器基本设置 settings.volume 音量,0-100 settings.balance 声道,通过它应该可以进行立体声、左声道、右声道的控制。 settings.autoStart 是否自动播放 settings.mute 是否静音 settings.playCount 播放次数 settings.rate 播放速度 4、当前媒体属性 currentMedia.duration 媒体总长度 currentMedia.durationString 媒体总长度,字符串格式。如“03:24” currentMedia.getItemInfo(const string) 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 currentMedia.setItemInfo(const string) 通过属性名设置媒体信息 currentMedia.name 同 currentMedia.getItemInfo("Title")
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值