V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
fofoone
V2EX  ›  分享创造

分享开源一个自己写的 ios 的电台播放器吧

  •  
  •   fofoone · 2014-08-30 03:16:08 +08:00 · 6017 次点击
    这是一个创建于 3520 天前的主题,其中的信息可能已经有所发展或是发生改变。
    其实我最早想做,是因为是看到v2有个同学通过豆瓣电台然后去搜索网易云音乐达到让64kbps到320kbps的音质做,再者当时豆瓣fm很多功能不是很全做,于是开了这个坑。
    后来看豆瓣fm4.0功能已经很全了,于是没啥动力了,希望对大家有些用处。

    基本播放流程
    歌词
    后台锁屏播放和控制
    锁屏后封面+歌词

    http://bcs.duapp.com/postquery/img1.PNG
    http://bcs.duapp.com/postquery/img2.PNG
    http://bcs.duapp.com/postquery/img3.PNG
    14 条回复    2014-09-30 18:56:27 +08:00
    11
        1
    11  
       2014-08-30 03:19:50 +08:00
    咕~~(╯﹏╰)b 地址呢。。
    fofoone
        2
    fofoone  
    OP
       2014-08-30 03:20:40 +08:00
    这里!!
    https://github.com/jovisayhehe/fmpro

    居然忘记最重要的!
    qq2511296
        4
    qq2511296  
       2014-08-30 09:01:58 +08:00
    已fork 挺不错的说 没有真机 只能模拟器上跑 模拟器好像不支持锁屏后台播放和锁屏歌词滚动

    锁屏歌词滚动的实现原理是什么?
    eato
        5
    eato  
       2014-08-30 10:22:58 +08:00   ❤️ 1
    DouBanApi 里的是豆瓣的用户名和密码吗?
    fofoone
        6
    fofoone  
    OP
       2014-08-30 11:18:22 +08:00
    @eato
    (´゚Д゚`)天呐,我改了,低级失误。
    fofoone
        7
    fofoone  
    OP
       2014-08-30 11:48:14 +08:00
    @qq2511296
    先通过notify_register_check("com.apple.iokit.hid.displayStatus", &token);
    获取屏幕是否点亮。
    在锁屏点亮的时候就在 封面上绘制歌词,然后每次更新歌词就通过 MPNowPlayingInfoCenter 的setNowPlayingInfo 更新锁屏封面。
    Hysteria
        8
    Hysteria  
       2014-08-30 15:10:58 +08:00
    赞一个!
    djyde
        9
    djyde  
       2014-08-30 18:56:48 +08:00   ❤️ 1
    @fofoone 楼主,你难道不知道git是可以看历史commit的?
    fofoone
        10
    fofoone  
    OP
       2014-08-30 20:08:38 +08:00
    @djyde
    知道,所以两边都改了。
    parkman
        11
    parkman  
       2014-09-06 10:00:36 +08:00
    这个是什么原因导致的。 是不是SD 版本不对

    http://photo.weibo.com/1738495452/photos/detail/photo_id/3751743321175886
    parkman
        12
    parkman  
       2014-09-06 10:17:36 +08:00
    FIX , SD新版本要改下代码
    parkman
        13
    parkman  
       2014-09-06 10:18:01 +08:00
    [self.cover setImageWithURL:[NSURL URLWithString:track.picture] placeholderImage:nil options:SDWebImageRefreshCached];

    __weak typeof(self) weakSelf = self;

    //[self.cover sd_setImageWithURL:[NSURL URLWithString:track.picture] placeholderImage:nil options:SDWebImageRefreshCached completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL)

    [self.cover setImageWithURL:[NSURL URLWithString:track.picture] placeholderImage:nil options:SDWebImageRefreshCached completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
    CGImageRef imgRef = image.CGImage;
    CGFloat width = CGImageGetWidth(imgRef);
    CGFloat height = CGImageGetHeight(imgRef);
    CGAffineTransform transform = CGAffineTransformIdentity;
    CGRect bounds = CGRectMake(0, 0, width, height);
    CGFloat scaleRatio = 1;
    transform = CGAffineTransformMakeTranslation(0.0, height);
    transform = CGAffineTransformScale(transform, 1.0, -1.0);
    UIGraphicsBeginImageContext(bounds.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextScaleCTM(context, scaleRatio, -scaleRatio);
    CGContextTranslateCTM(context, 0, -height);
    CGContextConcatCTM(context, transform);
    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
    UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    weakSelf.bgcover.image = imageCopy;

    }];
    siri
        14
    siri  
       2014-09-30 18:56:27 +08:00
    lz求认识~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5283 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:48 · PVG 13:48 · LAX 22:48 · JFK 01:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.