7

-play で開始しAVAudioPlayer、 nowPlaying 辞書を次のように設定します。

NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
        
MPMediaItemArtwork *albumArt = [[MPMediaItemArtwork alloc] initWithImage: [UIImage imagedNamed:@"AlbumArt"]];
[songInfo setObject:@"Audio Title" forKey:MPMediaItemPropertyTitle];
[songInfo setObject:@"Audio Author" forKey:MPMediaItemPropertyArtist];
[songInfo setObject:@"Audio Album" forKey:MPMediaItemPropertyAlbumTitle];
[songInfo setObject:albumArt forKey:MPMediaItemPropertyArtwork];
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];

ロック画面には常に一時停止ボタンが表示されます。リモコン イベントを正しく受信し、リモコン イベントを介して再生/一時停止を切り替えることができますが、再生中でもロック画面に「一時停止」と表示され続けます。

これで、MPMoviePlayerController で動作することがわかりました。MPNowPlayingInfoCenter が再生ボタンまたは一時停止ボタンを表示するかどうかを決定する方法を誰か説明できますか?

4

3 に答える 3

1

に正しい設定をAVAudioSessionCategoryしましたAudioSessionか? AVAudioSessionCategoryPlaybackそれを機能させるには、私が信じる必要があります。

于 2013-12-03T15:13:17.497 に答える
0

MPNowPlaying現時点では使用していませんが、ロック画面に表示されるオーディオ情報を取得するために使用する必要があるようです。

ただし、@ user3061915 が言ったことに加えて、play/pauseボタンを管理するために使用しましたが、 /ボタンUIEventTypeRemoteControlを制御するのに最適です。playpause

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    //if it is a remote control event handle it correctly
    if (event.type == UIEventTypeRemoteControl)
    {
        if (event.subtype == UIEventSubtypeRemoteControlPlay)
        {
            [self playAudio];
        }
        else if (event.subtype == UIEventSubtypeRemoteControlPause)
        {
            [self pauseAudio];
        }
        else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause)
        {
            [self togglePlayPause]; //This method will handle the toggling.
        }
    }
于 2013-12-03T21:53:02.353 に答える
0

自分のアプリでこのような問題を修正しました。私はもともと [[AVAudioSession sharedInstance] setCategory:withOptions:error:] を使用し、AVAudioSessionCategoryOptionMixWithOthers と AVAudioSessionCategoryOptionDuckOthers を提供していました。これが私の問題であることが判明しました。他と mix を設定すると、リモート コントロール イベントは取得されません。彼らはまだiPodアプリに行きます。ダック・アザーズを設定すると、リモート・コントロール・イベントが発生しますが、説明した問題が発生するように見えます: 再生/一時停止ボタンに間違ったものが表示されます。理由はわかりません。オプションを 0 に設定するか、実際には setCategory:error: を呼び出すだけで、再生/一時停止ボタンが動作するようになりました。

于 2014-09-21T22:27:10.810 に答える