1

AVPlayer を使用してさまざまなメディアを再生しています。プレーヤー インターフェイス全体を再設計し、出力レベルを制御する MPVolumeView を追加しました。スライダーまたは音量ボタン (yje 出力音量が変更されます) のいずれかを使用して問題なく動作しますが、ユーザーは音量が変化していることを視覚的に示すことはできません。Apple のビルトイン ビデオ アプリを使用している場合、ボタンを使用して出力音量を変更すると、現在の音量を示す素敵な hud が表示されます。どうすれば表示できますか? ありがとう。

4

1 に答える 1

0

実際のところ、VolumeView がシステムへの通知の配信をブロックしているようです。このように機能させるには、 AudioSessionAddPropertyListener を使用する必要がありました

AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange,
                                         audioRouteChangeListenerCallback,
                                         self);

そしてコールバック

// detecting outplugg of the iPhone
void audioRouteChangeListenerCallback (void                      *inClientData,
                                   AudioSessionPropertyID    inID,
                                   UInt32                    inDataSize,
                                   const void                *inData)
{
    CFDictionaryRef routeChangeDictionary = inData;

    CFNumberRef routeChangeReasonRef =
    CFDictionaryGetValue (routeChangeDictionary,
                      CFSTR (kAudioSession_AudioRouteChangeKey_Reason));

    SInt32 routeChangeReason;

    CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason);

    if (routeChangeReason == kAudioSessionRouteChangeReason_OldDeviceUnavailable)
    {
        // Headset is unplugged..
        [(VideoPlayerViewController*)inClientData pause];
    }
}
于 2012-12-03T14:32:12.767 に答える