【WP7】MediaPlayer与关闭音乐的方法

本文介绍在Windows Phone 7 (WP7) SDK 7.1环境下,由于缺乏直接关闭音乐播放器API的情况下,如何通过特定的方法实现音乐播放器的关闭。主要探讨了通过触发异常来关闭后台音乐服务的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

和相机的LED灯一样,WP7 SDK 7.1 也没有提供相应的API供我们操作媒体播放器

当音乐打开后,WP7是不会关闭音乐的(在锁屏界面和音量界面可以看到音乐的界面),只有关机重启后,音乐才会被关闭,当然,不关闭音乐基本也不会占用内存

  这里说的关闭音乐指的是:在锁屏和音量界面看不到音乐的界面

通过摸索,关闭音乐功能有三种途径

  1、关机

  2、打开一个视频,这样,系统会自动关闭后台的音乐功能,也可以实现关闭音乐的功能(尝试了一下,很难通过代码来实现,操作麻烦)

  3、通过异常让系统关闭后台音乐功能(下面用此方法关闭音乐)

首先要用到系统的媒体播放器

    使用媒体播放器播放应用程序的音乐文件的时候,当程序关闭或墓碑化时,音乐会停止播放,只有媒体库中的音乐才能在后台播放

  首先准备一个音乐文件(用来辅助关闭音乐功能,越小越好),假设为00.mp3

  用到的类:  MediaPlayer

  添加引用:  Microsoft.Xna.Framework

首先是MediaPlayer的用法

  由于在XNA中每33fp就会更新画面一次,所以在Silverlight Application中需要透过指定一个定期执行 FrameworkDispatcher.Update() 的事件。

        //设置定时器
        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromMilliseconds(33);
        timer.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
        timer.Start();

  接下来通过Song创建音频对象
    Song没有构造函数,通过静态函数FromUri创建

        Song song = Song.FromUri("MySong", new Uri("00.mp3", UriKind.Relative));

    播放音乐

       MediaPlayer.Play(song);

  MediaPlayer属性和方法(不支持快进/快退,不支持设置进度)

    IsMuted          静音设置    

    IsRepeating        重复播放

    IsShuffled         随机播放

    MoveNext/MovePrevious   下一曲/上一曲

    Play/Stop           播放/停止

    Pause/Resume       暂停/恢复  

    PlayPosition        进度(只读)

    State           状态

Song.FromUri创建Song对象的音频文件只能是资源文件,不能是独立存储中的文件。暂时没有API可以用

 

关闭音乐的思路:

把前面注册 FrameworkDispatcher.Update() 的事件去掉,这样在调用MediaPlayer播放器播放音乐的时候就会出现异常

通过两次调用,就可以关闭掉音乐服务,当然,程序也会关闭,可以写一个磁贴贴在Start界面上,关闭音乐后自动关闭程序

    MediaPlayer.Play(song);
    MediaPlayer.Play(song);

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值