MediaElement在使用时的注意点
在Windows Phone 7 中,有4种方法为程序添加音频:1、使用MediaElement 2、使用MediaPlayerLauncher 3、使用MediaPlayer 4、BackgroundAudio。接下来将给大家介绍一些他们的使用时注意关键点。
今天就说说MediaElement吧。
MediaElement对象用来向页面中添加音频(支持视频播放),MediaElement控件可以在XAML中创建,也可以在代码中动态创建。它可以播放XAP程序安装包内的文件,隔离存储区内的文件,互联网络上的文件。注意事项:播放隔离存储区内的文件时,必须设置AutoPlay属性为True(C#代码或XAML文件中均可)。
<MediaElement x:Name="media" Source="xbox.wmv" Width="300" Height="300" /> (若要从网络获取,只要改变Source为网络地址就行)
这个方式比较简单,详细请看MSDN:MediaElement
使用代码创建如下:
这里要注意:样创建必须要把MediaElement对象加入到容器中,否则MediaElement将不能播放
用MediaElement播放音频时,一次只能播放一个音频,如果你创建了两个或两个以上MediaElement对象时,其中能播放起作用的只有一个Source,如果你停止上一个音频后或是直接播放第二个对象音频,必须其他对象的Source为null,或者其他对象从容器中称除。
也就是说有多个对象MediaElement时,保证容器中只有一个对象的Source起作用
在我的例子代码中,创建了两个MediaElement,一个用XAML创建,一个用代码动态创建。我是这样停止的
在之前,我尝试过用Stop,可惜没有成功。
当然也可以不用这样去除,如果只有一个MediaElement对象的话或者是当前播放的音频和接下来要播放的音频用的是同一个MediaElement对象,只要改变一下Souce就可以了。
接下来说下从隔离存储区内的音乐文件,以下这段代码我是从网络去获取一个mp3音频流,然后转换为IsolatedStorageFileStream
对于public void SetSource(Stream stream);这个API,只能用IsolatedStorageFileStream的流,所以要转化为IsolatedStorageFileStream的流,否则会抛一个导常。
补充:你可以自己编写一个继承于MediaStreamSource的子类,使用SetSource方法传给MediaElement,以实现播放的个性自定义,但这需要了解一些音乐文件编码解码的东西。
注意:在使用MediaElement时,只能有一个MediaElement对象在播放,并且播放之前确保加入到容器中。
最好的方式是只创建一个MediaElement,然后对其Source进行操作
Source是最主要的,其他的属性都可当作是辅助功能,所以有多个对象MediaElement时,保证容器中只有一个Source起作用
接下来就上测试代码吧,一切在源码面前毫无秘密可言!
点击下载:MediaElementTest
相关链接:http://www.sdkhome.com/thread-329-1-1.html
注:SDKhome移动平台开发的交流平台 http://www.sdkhome.com