web-dev-qa-db-ja.com

iOS 7のロック画面で現在の再生時間と経過時間を設定するにはどうすればよいですか?

IOS 5以降、すべての音楽プレーヤーは、タイトル、アーティスト、アルバムタイトル、アートワークなどの現在再生中の音楽情報を[MPNowPlayingInfoCenter defaultCenter] .nowPlayingInfoに設定して、ロック画面に表示できます。

IOS 7では、再生位置スライダー、継続時間、経過時間の情報がロック画面とコントロールセンターの両方に追加されます。しかし、これらの情報を設定し、スライダーで再生位置を変更できるドキュメントが見つかりません。

この問題を解決する方法はありますか?

19
idearibosome

ドキュメントにデフォルトで1.0と記載されている場合でも、再生速度を1.0fに設定する必要があります。

NSDictionary *mediaInfo = @{
    MPMediaItemPropertyTitle: audio.title,
    MPMediaItemPropertyArtist: audio.artist,
    MPMediaItemPropertyPlaybackDuration: audio.duration,
    MPNowPlayingInfoPropertyPlaybackRate: @(1.0)
};

[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:mediaInfo];
36
ren6

それらはすべて MPNowPlayingInfoCenter のリファレンスに記載されています。現在再生中のプロパティはオプションの値であり、設定される場合とされない場合があります。それへのリンクは、通常の再生プロパティのリストの最後にある文にあります。

canで設定できる追加のプロパティについては、このドキュメントの 「追加のメタデータプロパティ」で説明しています。 ” 。 (私の強調)

関心のあるプロパティは、MPNowPlayingInfoPropertyElapsedPlaybackTimeおよびMPMediaItemPropertyPlaybackDurationです。

この情報はすべて公開されており、iOS 7 SDKはまだ公開されていないようです(2013年9月14日現在)ので、そのバージョンのiOSより前にも利用可能だったと思います。

8
Petesh

警告:Appleのドキュメントではこれが明確にされていません-MPMusicPlayerControllerを使用している場合、音楽は「音楽」アプリによって内部で再生され、nowPlayingInfoCenterを制御することはできません。また、ロック画面に適用されたユーザーアクション(再生/一時停止など)によって生成されたリモートコントロールイベントは、nowPlayingInfoCenterを介して自分のアプリではなく「音楽」アプリに伝達されるため、受信しません。 AVやAvAudioなどの他のメディアプレーヤーを使用する場合は、nowPlayingInfoCenterを制御して、リモートコントロールイベントを受信できます。ただし、AVAudioSessionCategoryOptions.MixWithOthersを使用してAVプレーヤーを設定する場合は、nowPlayingInfoCenterも制御できません。 Appleこれらの詳細をより適切に文書化したいと思います。

3
xyz