Windows Phone 7 声音播放

 

 
Windows phone 7支持Silverlight和XNA两种音乐播放方式。其中,Silverlight方式可以使用MediaElement控件,XNA方式可以使用MediaPlayer类,还可以通过Lanucher方式调用系统音乐播放器来播放音乐。支持的音乐文件格式有wav,mp3,wma。 MediaElement控件 mediaElement.Source = new Uri(SleepAway.mp3, UriKind.Relative);
  

  Windows phone 7支持Silverlight和XNA两种音乐播放方式。其中,Silverlight方式可以使用MediaElement控件,XNA方式可以使用MediaPlayer类,还可以通过Lanucher方式调用系统音乐播放器来播放音乐。支持的音乐文件格式有wav,mp3,wma。

  MediaElement控件

  mediaElement.Source = new Uri(“SleepAway.mp3″, UriKind.Relative);

  mediaElement.Play();

  音乐文件也可以为远程地址,例如:

  mediaElement.Source = new Uri(“http://example.com/SleepAway.mp3″, UriKind.Absolute);

  也可以在xaml中指定Source。

  需要注意的是本地文件的build action需要设置为content,远程地址不支持http跳转,uri所指向文件的后缀必须为支持的格式。

  Lanucher方式

  引入Microsoft.Phone.Tasks命名空间

  MediaPlayerLauncher mediaPlayerLauncher = new MediaPlayerLauncher();

  mediaPlayerLauncher.Location = MediaLocationType.Install;

  mediaPlayerLauncher.Media = new Uri(“SleepAway.mp3″, UriKind.Relative);

  mediaPlayerLauncher.Show();

  可以使用mediaPlayerLauncher. Controls指定音乐播放器要显示的按钮。

  需要注意的是,如果是播放的是本地文件需要设定mediaPlayerLauncher.Location,它的有效合法值可以为Install和Data。Install表示文件位于程序内部,Data表示文件位于程序的独立存储(Isolated storage)中。

  Lanuncher方式会使调用程序被墓碑化处理(Tombstoneed)。

  XNA方式

  Song song = Song.FromUri(“SleepAway”, new Uri(“SleepAway.mp3″, UriKind.Relative));

  MediaPlayer.Play(song);

  需要在初始化的时候,

  DispatcherTimer dt = new DispatcherTimer();

  dt.Interval = TimeSpan.FromMilliseconds(33);

  dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };

  dt.Start();

  Music & Video Hub

  windows phone 7里引入了hub的设计,其中包括Music &Video hub。Music & Video hub支持3种状态,分别是最近播放,正在播放和最新更新。状态包括图片和标题。调用这些API需要有相应的权限,为了测试,可以在WMAppMainfest.xml中将App标签的HubType属性设置为1,如下:

< App xmlns=” " ProductID=” {00000000-0000-0000-0000-000000000000}

Title=”WindowsPhoneApplication” RuntimeType=”Silverlight”

Version=”1.0.0.0″ Genre=”NormalApp” Author=”"
 Description=” "

Publisher=”"
 HubType=”1″>

  当支持Music & Video hub的程序安装到手机上,该程序的名称会显示在Music & Video hub中的Marquee里。

  最近播放

  最近播放的图片大小为173*173,代码如下:

MediaHistoryItem mediaHistoryItem =  new MediaHistoryItem();

//<hubTileImageStream> must be a valid ImageStream.

mediaHistoryItem.ImageStream = <hubTileImageStream>;

mediaHistoryItem.Source = “”;

mediaHistoryItem.Title = ” Song Name “;

mediaHistoryItem.PlayerContext.Add(“keyString”, “Song Name”);

MediaHistory.Instance.WriteRecentPlay(mediaHistoryItem);

  微软的文档上说mediaHistoryItem.Source目前不被支持。在实际应用中发现目前的mediaHistoryItem.Title也尚未支持。(或许在程序通过签名后会被支持。)

  正在播放

  正在播放的图片大小为358*358,代码如下:

MediaHistoryItem mediaHistoryItem =  new MediaHistoryItem();

//<hubTileImageStream> must be a valid ImageStream.

mediaHistoryItem.ImageStream = < hubTileImageStream>;

mediaHistoryItem.Source = “”;

mediaHistoryItem.Title = ” Song Name “;

mediaHistoryItem.PlayerContext.Add(“keyString”, “Song Name”);

MediaHistory.Instance.NowPlaying = mediaHistoryItem;

  最新更新

  最近播放的图片大小为173*173

MediaHistoryItem mediaHistoryItem =  new MediaHistoryItem();

//<hubTileImageStream> must be a valid ImageStream.

mediaHistoryItem.ImageStream = < hubTileImageStream>;

mediaHistoryItem.Source = “”;

mediaHistoryItem.Title = ” Song Name “;

mediaHistoryItem.PlayerContext.Add(“keyString”, “Song Name”);

MediaHistory.Instance.WriteAcquiredItem(mediaHistoryItem);

  本文来自Lyghost的博客,原文地址:http://www.cnblogs.com/lyghost/archive/2012/03/28/2422497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值