(iOS 4) バックグラウンド動作するラジオアプリを作ってみる
プログラム関係の仕事をするときはたいてい、ネットラジオを使って部屋の中にBGMを流している。最近のお気に入りはSomaFMのチルアウト/アンビエント系専門チャンネル"Groove Salad"だ。いい感じで生活の邪魔にならない音楽を絶え間なく提供してくれる。
つい先日ようやくiPhone 4を導入したので、できればバックグランドで動作するネットラジオアプリを入れてGroove Saladを垂れ流しにしたい。ただ、「バックグラウンドで動作するネットラジオアプリ」で無料かつ使いやすいものというのは、なかなか存在しないようだ。
まあ、無いなら自分で作ってしまおう。
ストリーミング再生
iOS 4を使ってネットラジオ的なものを作るのは難しくない。AV Foundation FrameworkのAVPlayerクラスを使えば簡単に実現できる。例えばGroove Saladを再生するのだったら、以下のようにすればいい。
#import <AVFoundation/AVFoundation.h> AVPlayer *player; NSURL *url = [NSURL URLWithString:@"http://ice.somafm.com/groovesalad"]; player = [[AVPlayer playerWithURL:url] retain]; [player play];
基本的にはこれだけだ。
バッググラウンド再生
これもググれば必要な情報はすぐに見つかる。今回はとりあえず以下の2点をおさえておけばいいようだ。
オーディオセッションのカテゴリー設定
今回のアプリのようにバックグラウンドで垂れ流し再生を行う場合は、オーディオセッションのカテゴリーを「プレイバック」にしておく必要があるらしい。具体的には以下のようにする。
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
見た目
基本的にはこれだけで用件を満たすことができるのだけれど、せっかくだから見た目の体裁も最低限整えておこう。ちょうど都合のよいことに、Groove Saladの素材を制作している人がいた。
http://www.teknoel.com/desktops/
今回は個人用途なので、これを利用させていただくことにしよう。
UIは……まあこんな感じでいいか。
ビューはUIImageView
にして、画像をはめ込むことにしよう。
Retina対応のアイコンなども用意して、なんとかアプリらしく見えるようにした。