2013-04-05

iPhoneアプリ開発: 音楽再生時にステータスバー上に再生アイコンを表示する

iPhoneで動画や音楽を再生する際、画面上のステータスバー上に三角の再生アイコンを表示する方法をメモしておきます。

実装済みのサンプルコードはこちら

まず、ステータスバー上のアイコンにはいくつかあり、例えばネットワークアクセス時のインジケーターアイコンがあります。これは容易に表示/非表示できます。

(参考)インジケーターアイコンの表示/非表示コード例:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

しかし、再生アイコンも似たように表示できるのかと思いきや、こちらは少しやっかいです。
再生アイコンは、ある条件下かつ、MPMoviePlayerController等のプレイヤーインスタンスの再生時に副次的に表示されるようです。
具体的には、次のコードを前処理として実行し、その後にプレイヤーを再生させる必要があります。

- (void)initializeBackgroundPlayback
{
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    NSError *e = nil;
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:&e];
    if (e)
    {
        // error handling
    }
    e = nil;
    [audioSession setActive:YES error:&e];
    if (e)
    {
        // error handling
    }
    //    self.moviePlayer.useApplicationAudioSession = YES;
}

- (void)initializeRemoteControl
{
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

その他サンプルコードには、RemoteControl(イヤホン付属の音楽コントローラ、またはホームボタンをダブルクリック>マルチタスクアプリ一覧を右スワイプすると表示される音楽コントローラ)のイベントハンドラも実装してあります。RemoteControlからの再生でも再生アイコンが表示されます。

参考:iOSイベント処理ガイド (英語版: Event Handling Guide for iOS)


iPhone Core Audioプログラミング
永野 哲久 / ソフトバンククリエイティブ / 売り上げランキング: 28301
おすすめ度の平均: 4.5
4 iPhoneプログラマは持っていて損のない良書
5 オーディオ系アプリ開発のバイブル
5 あまり知られたくない本です。
4 必要な事は書かれてます。
5 明快な説明と実践的なサンプルコードがすばらしい
posted with amazlet at 2011.2.18

0 件のコメント: