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

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

  •  
  •   fofoone · 2014 年 8 月 30 日 · 6711 次点击
    这是一个创建于 4157 天前的主题,其中的信息可能已经有所发展或是发生改变。
    其实我最早想做,是因为是看到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 年 8 月 30 日
    咕~~(╯﹏╰)b 地址呢。。
    fofoone
        2
    fofoone  
    OP
       2014 年 8 月 30 日
    这里!!
    https://github.com/jovisayhehe/fmpro

    居然忘记最重要的!
    qq2511296
        4
    qq2511296  
       2014 年 8 月 30 日
    已fork 挺不错的说 没有真机 只能模拟器上跑 模拟器好像不支持锁屏后台播放和锁屏歌词滚动

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

    http://photo.weibo.com/1738495452/photos/detail/photo_id/3751743321175886
    parkman
        12
    parkman  
       2014 年 9 月 6 日
    FIX , SD新版本要改下代码
    parkman
        13
    parkman  
       2014 年 9 月 6 日
    [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 年 9 月 30 日
    lz求认识~
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:32 · PVG 03:32 · LAX 11:32 · JFK 14:32
    ♥ Do have faith in what you're doing.