• 学习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);
  • 相关阅读:
    Network In Network
    UNIX环境高级编程之第4章:文件和文件夹-习题
    SqlServer 错误日志切换和查看
    hihoCoder
    Mono源码学习笔记:Console类(四)
    Java transientkeyword使用小记
    高速排序算法具体解释与实现
    The Triangle
    iOS开发实践之GET和POST请求
    C#重构经典全面汇总
  • 原文地址:https://www.cnblogs.com/glowworm/p/2218667.html
Copyright © 2020-2023  润新知