MPMoviePlayerController - 插入耳机时自动恢复

Posted

技术标签:

【中文标题】MPMoviePlayerController - 插入耳机时自动恢复【英文标题】:MPMoviePlayerController - Auto-Resume on headphone plugged in 【发布时间】:2012-02-10 10:46:59 【问题描述】:

MPMoviePlayerController 有一点问题。我正在播放电影,如果用户从音频插孔中拔下耳机,它会暂停电影(标准 ios 功能)。

但是,当用户将耳机重新插入插孔时。电影不会自动恢复。

我有什么遗漏吗?

谢谢。

【问题讨论】:

【参考方案1】:

MPMoviePlayerController - 自动暂停

监听 kAudioSessionProperty_AudioRouteChange 属性

#import <AudioToolbox/AudioToolbox.h>

void callbackHeadphone_func ( void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData ) 
        if ( inID == kAudioSessionProperty_AudioRouteChange ) 

        
    


    - (void) isHeadsetPluggedIn 

        UInt32 routeSize = sizeof (CFStringRef); CFStringRef route;

        AudioSessionGetProperty (kAudioSessionProperty_AudioRoute, &routeSize, &route);

        AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange, callbackHeadphone_func, self);
        /* Known values of route:
         "Headset"
         "Headphone"
         "Speaker"
         "SpeakerAndMicrophone"
         "HeadphonesAndMicrophone"
         "HeadsetInOut"
         "ReceiverAndMicrophone"
         "Lineout" */

        NSString* routeStr = (NSString*)route;
        NSLog(@"%@",routeStr);
    

【讨论】:

【参考方案2】:

您何时将耳机放回插孔中,您的视频或音乐不会继续播放。 iOS的这个功能。

您需要以编程方式确定用户何时连接耳机,然后以编程方式继续播放。 为了确定耳机的状态,我使用了示例 aurioTouch(来自 Apple)的函数“propListener”。 https://developer.apple.com/library/ios/samplecode/aurioTouch/aurioTouch.zip

【讨论】:

以上是关于MPMoviePlayerController - 插入耳机时自动恢复的主要内容,如果未能解决你的问题,请参考以下文章

如何显示 MPMoviePlayerController 控件?

MPMoviePlayerController 隐藏 AirPlay 按钮

MPMoviePlayerController 上的专辑封面

MPMoviePlayerController 已弃用,现在怎么办?

用 MPMoviePlayerController 替换 AVPlayer

“MPMoviePlayerController”的“initialPlaybackTime”不起作用