zoukankan      html  css  js  c++  java
  • 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);

    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);

  • 相关阅读:
    [JSOI2007][BZOJ1031] 字符加密Cipher|后缀数组
    leetcode Flatten Binary Tree to Linked List
    leetcode Pascal's Triangle
    leetcode Triangle
    leetcode Valid Palindrome
    leetcode Word Ladder
    leetcode Longest Consecutive Sequence
    leetcode Sum Root to Leaf Numbers
    leetcode Clone Graph
    leetcode Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/lyghost/p/2422497.html
Copyright © 2011-2022 走看看