2012-01-04 21 views
0

ウェブアプリケーションとphonegapを使用してビデオを再生する際に問題が発生しました。私のWebアプリには、mp4ファイルに直接リンクするリンクがあります。私はこのタイプのURLのハンドラをphonegapのAppDelegateクラスに追加しました。PhoneGapアプリが背景で動画を再生します(非表示)

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest: 
(NSURLRequest *)request navigationType: 
(UIWebViewNavigationType)navigationType 
{ 
    NSURL *url = [request URL]; 
    NSLog(@"redirect detected"); 
    if ([[[url path] pathExtension] isEqualToString:@"mp4" ] || [[[url path] pathExtension] isEqualToString:@"m4v" ] || [[[url path] pathExtension] isEqualToString:@"m3u8" ]) { 
     //video files are .mp4 or m4v, stream indexes are m3u8 
     //it's a movie, go play! 
     NSLog(@"Movie detected - playing"); 
     NSLog([url path]); 
     [self playMovieAtURL:url]; 
     return NO; 
    } else { 
     return [ super webView:theWebView shouldStartLoadWithRequest:request 
       navigationType:navigationType ]; 
    } 
} 

これは正常に動作し、ムービー再生のためのメソッドが呼び出されます。この方法は、このように実装(1)されます。

-(void) playMovieAtURL: (NSURL*) theURL { 
    NSLog(@"PlayMovieAtUrl"); 
    MPMoviePlayerController* theMovie = 
    [[MPMoviePlayerController alloc] initWithContentURL: theURL]; 
    [self presentMoviePlayerViewControllerAnimated:theMovie]; 
} 

も(2)これを試してみました:

-(void) playMovieAtURL: (NSURL*) theURL { 
    NSLog(@"PlayMovieAtUrl"); 
    MPMoviePlayerController* theMovie = 
    [[MPMoviePlayerController alloc] initWithContentURL: theURL]; 

    [theMovie setControlStyle:MPMovieControlStyleFullscreen]; 
    [theMovie setFullscreen:YES]; 


    // Register for the playback finished notification 
    [[NSNotificationCenter defaultCenter] 
    addObserver: self 
    selector: @selector(myMovieFinishedCallback:) 
    name: MPMoviePlayerPlaybackDidFinishNotification 
    object: theMovie]; 
    NSLog(@"About to play"); 
    // Movie playback is asynchronous, so this method returns immediately. 
    [theMovie play]; 
} 

しかし、どちらの場合に作成プレーヤーであり、それが果たしています。問題は隠されていることだけです。音は聞こえますが、絵は聞こえません。 WebViewは引き続き表示されます。 (1)は、他の場所の投稿に基づいた設定なしで動作するはずです。問題は、AppDelegateクラスで呼び出され、Controllerクラスでは呼び出されないということです。しかし、私はこの使用のPhoneGap :(任意のアイデアを実装する方法が分からない?

+0

もっと情報が必要な場合は、私に知らせてください –

答えて

0

私はこの問題を解決するために管理。問題は、私はWebViewのののViewControllerにアクセスすることができなかったことだった。しかし、私は著者がモーダルを使用していますhttps://gist.github.com/527494を見つけました私はViewControllerをして​​いたときのPhoneGapを持つウィンドウが - 。それは簡単でした:)

MPMoviePlayerViewController* theMovie = 
    [[MPMoviePlayerViewController alloc] initWithContentURL: theURL]; 
    [super.viewController presentMoviePlayerViewControllerAnimated:theMovie]; 

私は誰かに役立ちます願っています。私はそれを解決するために一日中私を連れていった;)

関連する問題