豆瓣电台 for windows phone 7.5开发笔记

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 06:03 点击:

 

暑假来深圳实习终于有了点闲钱买了台HD7,一直就想抽空把PC上的豆瓣电台移动到Windows Phone上,但是总抽不出时间。国庆的时候放假7天,抽了3天的尝试了移植,初步能够实现大部分功能了。很欣慰的是之前的DoubanAPI只在网络通信部分改动了一些细节,几乎不费任何力气就移植到了WP7上。在开发期间,主要的瓶颈在于后台播放模块,也就是7.1 SDK里新增加的Background Audio Agent类,因此在这里总结一下。

Windows Phone 7.5的Background Audio Agent在我的理解非常类似于Win32窗体的消息回调函数。函数是由开发者自己设计的,但是却不能由开发者的程序调用。两部分代码属于不同的进程(静态类成员不能被共享访问),因为在两部分代码间共享数据就成了最大的问题。起初我是考虑使用独立存储进行通信,但是却不知道为什么总是会出现一边已经只保存了数据,但是另外一边读出来还是旧的数据的情况。后来考虑的方法是利用BackgroundAudioPlayer.Instance静态对象里的Tag属性在两部分代码间传递数据。BackgroundAudioPlayer.Instance是BackgroundAudio Service里最重要的一个对象,一个系统同时只能有一个BackgroundAudio的实例,如果两个应用的都使用了后台播放服务,后启动的就会把之前的一个覆盖掉。

关于Tag共享部分的代码如下

public static void ChangeTrackTag(int TagIndex, string NewTag)

{

    if (BackgroundAudioPlayer.Instance.Track == null)

    {

        BackgroundAudioPlayer.Instance.Track = new AudioTrack(

            new Uri("http://douban.fm"),

            "",

            "",

            "",

            null,

            "|||||",

            EnabledPlayerControls.Pause | EnabledPlayerControls.SkipNext

       );

    }

    

    string[] Tags = BackgroundAudioPlayer.Instance.Track.Tag.Split('|');

    Tags[TagIndex] = NewTag;

 

    for (int i = 0; i < Tags.Length - 1; ++i)

    {

        Tags[i] += "|";

    }

 

    AudioTrack at = BackgroundAudioPlayer.Instance.Track;

    BackgroundAudioPlayer.Instance.Track = new AudioTrack(

        new Uri("http://douban.fm"),

        at.Title,

        at.Artist,

        at.Album,

        at.AlbumArt,

        string.Concat(Tags),

        EnabledPlayerControls.Pause | EnabledPlayerControls.SkipNext

    );

    

}

 

public static string GetTrackTag(int TagIndex)

{

    if (BackgroundAudioPlayer.Instance.Track == null)

        return "";

    try

    {

        return BackgroundAudioPlayer.Instance.Track.Tag.Split('|')[TagIndex];

    }

    catch

    {

        return "";

    }

}

目前的代码里是利用这样的方法实现两部分代码数据交换,今天求教了一高人,回复说用MVVM可以完

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Windows Phone 项目实战之我的微盘(下)
      • Windows Phone 实用开发技巧(26):对DataTemplate中的元素播放
      • Windows Phone 实用开发技巧(25):Windows Phone读取本地数据
      • Windows Phone 实用开发技巧(27):创建透明Tile
      • Windows Phone 知识锦(12月版)
      • Windows Phone实用开发技巧(31):密码加密
      • Windows Phone 项目实战之我的微盘(上)
      • WP7实例篇之土豆搜索器(2)
      • [翻译]WP7 QuickStart-第七篇-布局
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1