zoukankan      html  css  js  c++  java
  • 学习Windows Phone手机开发:播放音乐的3种方法

    1)使用MediaElement

    音乐文件:XAP程序安装包内的文件,隔离存储区内的文件,互联网络上的文件。

    注意事项:播放隔离存储区内的文件时,必须设置AutoPlay属性为True(C#代码或XAML文件中均可),否则会抓狂的。

    补充:可以自己编写一个继承于MediaStreamSource的子类,使用SetSource方法传给MediaElement,以实现播放的个性自定义,但这需要了解一些音乐文件编码解码的东西。

    举例:

    //播放隔离存储区内的音乐文件
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        IsolatedStorageFileStream stream = store.OpenFile(mp3FileName, FileMode.Open,  FileAccess.Read);
        mediaPlayback.AutoPlay = true;
        mediaPlayback.SetSource(stream);
        mediaPlayback.Play();
    }
    
    //程序安装包内或远程网络上的文件
    mediaPlayback.Source = new Uri(mp3FileName, UriKind.Relative);
    mediaPlayback.Play();

    2)使用MediaPlayerLauncher

    引入 Microsoft.Phone.Tasks 命名空间

    音乐文件:XAP程序安装包内的文件,隔离存储区内的文件。

    注意事项:Launcher会挡住你的程序的原来的页面,而且是整个屏幕都被挡住了,按Back键会返回程序页面,手机上的Zune播放器就是使用这个。

    举例:

    MediaPlayerLauncher player = new MediaPlayerLauncher();
    player.Location = MediaLocationType.Data;
    player.Media = new Uri("ILoveYou.mp3", UriKind.RelativeOrAbsolute);
    player.Orientation = MediaPlayerOrientation.Portrait;
    player.Controls = MediaPlaybackControls.All;
    player.Show();

    3)使用MediaPlayer

    引入 Microsoft.Xna.Framework.Media 命名空间。

    音乐文件:XAP程序安装包内的文件,互联网络上的文件。

    注意事项:如果是Silverlight程序,则需要特别处理XNA的刷新机制。

    定义实现IApplicationService

    public class XNADispatcherService : IApplicationService
    {
        private DispatcherTimer frameworkDispatcherTimer;
    
        public void StartService(ApplicationServiceContext context)
        {
            this.frameworkDispatcherTimer.Start();
        }
    
        public void StopService()
        {
            this.frameworkDispatcherTimer.Stop();
        }
    
        public XNADispatcherService()
        {
            this.frameworkDispatcherTimer = new DispatcherTimer();
            this.frameworkDispatcherTimer.Interval = TimeSpan.FromTicks(333333);
            this.frameworkDispatcherTimer.Tick += frameworkDispatcherTimer_Tick;
            FrameworkDispatcher.Update();
        }
    
        void frameworkDispatcherTimer_Tick(object sender, EventArgs e)
        {
            FrameworkDispatcher.Update();
        }
    }

    在App.xaml中实例化XNADispatcherService:

    <Application.ApplicationLifetimeObjects>
        <!--Required object that handles lifetime events for the application-->
        <shell:PhoneApplicationService 
            Launching="Application_Launching" Closing="Application_Closing" 
            Activated="Application_Activated" Deactivated="Application_Deactivated"/>
        <local:XNADispatcherService/>
    </Application.ApplicationLifetimeObjects>

    举例:

    Song mp3Song = Song.FromUri(mp3Title, new Uri(mp3FileURL, UriKind.RelativeOrAbsolute));
    MediaPlayer.Play(mp3Song);
  • 相关阅读:
    脏矩形(高效绘图 13.3)
    矢量图形(高效绘图 13.2)
    软件绘图(高效绘图 13.1)
    Instruments(性能调优 12.3)
    测量,而不是猜测(性能调优 12.2)
    CPU VS GPU(性能调优 12.1)
    物理模拟(基于定时器的动画 11.2)
    RHEL Server 6.3下MySQL5.5.25a源码安装
    Linux rpm 命令参数使用详解
    db2 用户权限
  • 原文地址:https://www.cnblogs.com/glowworm/p/2218667.html
Copyright © 2011-2022 走看看