分享开源一个自己写的 ios 的电台播放器吧 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
fofoone

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

  •  
  •   fofoone Aug 30, 2014 6859 views
    This topic created in 4261 days ago, the information mentioned may be changed or developed.
    其实我最早想做,是因为是看到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 replies    2014-09-30 18:56:27 +08:00
    11
        1
    11  
       Aug 30, 2014
    咕~~()b 地址呢。。
    fofoone
        2
    fofoone  
    OP
       Aug 30, 2014
    这里!!
    https://github.com/jovisayhehe/fmpro

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

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

    http://photo.weibo.com/1738495452/photos/detail/photo_id/3751743321175886
    parkman
        12
    parkman  
       Sep 6, 2014
    FIX , SD新版本要改下代码
    parkman
        13
    parkman  
       Sep 6, 2014
    [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  
       Sep 30, 2014
    lz求认识~
    About     Help     Advertise     Blog     API     FAQ     Solana     2621 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 12:37 PVG 20:37 LAX 05:37 JFK 08:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86