ウェブアプリケーションと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 :(任意のアイデアを実装する方法が分からない?
もっと情報が必要な場合は、私に知らせてください –