Top
首页 > 老文章 > 正文

Media Player 跨iPhone版本的问题

Media Player 跨iPhone版本的问题
发布时间:2010-07-09 10:41        来源:        作者:萧萧
【赛迪网讯】when Run on Device 3.1.2, why it also pass if(NSClassFromString(@"MPMoviePlayerViewController") != nil) and do code of iOS4 then it will crash , how to fix this issues?
if(NSClassFromString(@"MPMoviePlayerViewController") != nil) {
                    // iOS 4 code
                    NSLog(@"MPMoviePlayerViewController");
                    MPMoviePlayerViewController *mp =
 [[MPMoviePlayerViewController alloc] initWithContentURL:
[NSURL URLWithString:AppDelegate.PushLink]];
                    if (mp) {
                        // save the movie player object
                        self.theMovie4 = mp;
                        [mp release];
                        //Present                       
[self presentMoviePlayerViewControllerAnimated:self.theMovie4];
                        // Play the movie!
                        self.theMovie4.moviePlayer.movieSourceType 
= MPMovieSourceTypeStreaming;
                        [self.theMovie4.moviePlayer play];
                    }
                }
                else {
                    //iOS 3 Code
                    AppDelegate = nil;
                    AppDelegate = [[UIApplication sharedApplication] 
delegate];
                    [AppDelegate ForceHideNavigationBar];
                    theMovie3 = nil;
                    [[NSNotificationCenter defaultCenter]
 addObserver:self 
                   
selector:@selector(moviePreloadDidFinish:) 
name:MPMoviePlayerContentPreloadDidFinishNotification 
 object:theMovie3];
                    [[NSNotificationCenter defaultCenter] addObserver:self 
  selector:@selector(moviePlayBackDidFinish:) 
 name:MPMoviePlayerPlaybackDidFinishNotification 
object:theMovie3];
// Register to receive a notification when the movie scaling mode has changed. 
[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(movieScalingModeDidChange:) 
name:MPMoviePlayerScalingModeDidChangeNotification 
object:theMovie3];
theMovie3 = [[MPMoviePlayerController alloc] initWithContentURL:
 [NSURL URLWithString:AppDelegate.PushLink]];
[theMovie3 play];
                }
1 Answer
------------------------------------------
- (void) playMovieAtURL: (NSURL*) theURL {
    NSLog(@"playMovieAtURL");
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 3.2) {
            NSLog(@"> 3.2");
            MPMoviePlayerViewController *mp = 
[MPMoviePlayerViewController alloc] initWithContentURL:theURL];
            if (mp)
            {
                // save the movie player object
                //self.moviePlayerViewController = mp;
                //[mp release];
                [self presentMoviePlayerViewControllerAnimated:mp];
                mp.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
                [mp.moviePlayer play];
                [mp release];
            }
        } 
    else if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2) {
            NSLog(@"< 3.2");
            MPMoviePlayerController* theMovie = [
[MPMoviePlayerController alloc] initWithContentURL: theURL];
            theMovie.scalingMode = MPMovieScalingModeAspectFill;
            // Register for the playback finished notification
            [[NSNotificationCenter defaultCenter]
             addObserver: self
             selector: @selector(myMovieFinishedCallback:)
             name: MPMoviePlayerPlaybackDidFinishNotification
             object: theMovie];
            // Movie playback is asynchronous, so this method returns immediately.
            [theMovie play];
        }
    }

(实习编辑:HJ)

加载更多

专题访谈

合作站点
stat