1

LOCAL mp3 ファイルのパスを JavaScript に送信し、そこからソースが入力されたオーディオ タグを作成しようとしています。しかし、これを試してみると、「オーディオ ファイルを再生できません」というメッセージが表示されます。ファイル自体はアプリ固有のサンドボックスから来ているため、パスは次のようになります

/Users/username/Library/Application Support/iPhone Simulator/6.0/Applications/818263D7-4246-4DEC-9186-6AC14F0175A3/Documents/audiofile.mp3

問題は、アプリケーション自体のサンドボックスまたはローカル ファイル システムに保存されているものではなく、同じ方法を使用してデスクトップから mp3 を再生できることです。これは、パスを取得し、webview を介して javascript に送信するために使用しているコードです。どんな助けでも大歓迎です。

UIWebView *webContainer = [[UIWebView alloc] initWithFrame: self.view.bounds];
webContainer.backgroundColor = [UIColor grayColor];
webContainer.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight );
[webContainer setBackgroundColor:[UIColor clearColor]];
webContainer.delegate = self;
[self.view addSubview:webContainer];

NSString *imagePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,         NSUserDomainMask, YES) objectAtIndex:0];

NSString *imPath = [NSString stringWithFormat:@"%@/angels.mp3",imagePath];
imPath = [imPath stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

[webContainer stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setupAudio('%@');", imPath]];
4

2 に答える 2

1

パスが「audiofile.mp3」で終わっている場合、ファイル「angels.mp3」は再生されないと思います。

ただし、MPMoviePlayerControllerを使用してファイルを再生することもできます。

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,             NSUserDomainMask, YES) objectAtIndex:0];

NSString *audioPath = [NSString stringWithFormat:@"%@/angels.mp3",docPath];

MPMoviePlayerController* moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: audioPath];

[moviePlayer.view  setFrame:self.view.bounds]; 

//add it to your view
[viewController.view addSubview:moviePlayer.view];

//if you don't want any controls
[moviePlayer setControlStyle:MPMovieControlStyleNone];

//play!
[moviePlayer prepareToPlay];

いくつかの例から変更されたソース。

このトピックに関する他の便利な関連質問は、ここにあります。

于 2012-11-19T23:01:10.167 に答える
1

を使用する必要がありUIWebView、オーディオ ファイルのみを使用したい場合は、URL リクエストを使用して直接読み込むことができます (当然、ファイルがその URL に存在することを確認してください! )。

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *audioPath = [NSString stringWithFormat:@"%@/angels.mp3",docPath];

NSURL *url = [NSURL fileURLWithPath:audioPath isDirectory:NO];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

[webContainer loadRequest:request];
于 2012-11-19T23:10:11.763 に答える