iphone - iPad 3.2 & [MPMoviePlayerController setFullScreen:] not showing up -
i have universal application plays movies internet. has support 3.1.x 4.x.
in order work, have branch in code detects pre-3.2 devices , utilizes mpmovieplayercontroller supposed work there.
this how prepare player play remote movie:
- (void)registerformovienotifications { //for 3.2 devices , above if ([movieplayer respondstoselector:@selector(loadstate)]) { log(@"movieplayer responds loadstate, 3.2+ device"); //register notification movie ready play [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(movieplayerloadstatechanged:) name:mpmovieplayerloadstatedidchangenotification object:nil]; [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(didexitfullscreen:) name:mpmovieplayerdidexitfullscreennotification object:nil]; log(@"preparing movieplayer..."); [movieplayer preparetoplay]; } else { //for pre-3.2 devices log(@"this 3.1.x device"); //register notification movie ready play [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(moviepreloaddidfinish:) name:mpmovieplayercontentpreloaddidfinishnotification object:nil]; } //handle when movie finished [[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(movieplaybackdidfinish:) name:mpmovieplayerplaybackdidfinishnotification object:nil]; } - (void)readyplayer { if (!movieplayer) { movieplayer = [[mpmovieplayercontroller alloc] initwithcontenturl:movieurl]; } else { [movieplayer setcontenturl:movieurl]; } [self registerformovienotifications]; } later on notification, , sets movie player's view, etc.
- (void) movieplayerloadstatechanged:(nsnotification*)notification { log(@"3.2/4.x - movieplayerloadstatechanged:"); //unless state unknown, start playback if ([movieplayer loadstate] != mpmovieloadstateunknown) { //remove observer [[nsnotificationcenter defaultcenter] removeobserver:self name:mpmovieplayerloadstatedidchangenotification object:nil]; //set frame of movie player match self.view.autoresizessubviews = yes; [[movieplayer view] setframe:self.view.bounds]; [[movieplayer view] setautoresizingmask:uiviewautoresizingflexiblewidth | uiviewautoresizingflexibleheight]; [[movieplayer view] setautoresizessubviews:yes]; //add movie player subview [self.view addsubview:movieplayer.view]; [movieplayer setfullscreen:yes]; //play movie [movieplayer play]; } } and movie plays. works on iphone 4.2, 4.3, ipad 4.2, 4.3, fails on ipad 3.2. movie plays black screen.
if remove [movieplayer setfullscreen:yes] call visible playing movie in 3.2, isn't "fullscreen" , doesn't have done button , there's no way me dismiss screen.
i'd love on what's going on here. thanks!
i able come acceptable solution, still feel might bug.
if skip call setfullscreen , instead manually set controlstyle mpmoviecontrolstylefullscreen gives me view correct (the toolbar 40 pixels low).
then can done button, triggers movieplayer:didfinishplaying callback.
so stinks have smelly if 3.2 branch of logic in code, people on 4.0 anyway.
Comments
Post a Comment