You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2012/03/12 23:57:51 UTC
[1/3] ios commit: Fixed CB-148,
CB-316: Playing HTTP / HTTPS urls using the Media API is not working
Updated Branches:
refs/heads/master f47a9a083 -> 0984e4def
Fixed CB-148, CB-316: Playing HTTP / HTTPS urls using the Media API is not working
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/0984e4de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/0984e4de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/0984e4de
Branch: refs/heads/master
Commit: 0984e4def9065009d2db521d9aa442cbc5542791
Parents: 234319a
Author: Shazron Abdullah <sh...@apache.org>
Authored: Mon Mar 12 15:56:49 2012 -0700
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Mon Mar 12 15:56:49 2012 -0700
----------------------------------------------------------------------
CordovaLib/Classes/CDVSound.m | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/0984e4de/CordovaLib/Classes/CDVSound.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVSound.m b/CordovaLib/Classes/CDVSound.m
index e615e56..d6d77d1 100644
--- a/CordovaLib/Classes/CDVSound.m
+++ b/CordovaLib/Classes/CDVSound.m
@@ -23,6 +23,7 @@
#define DOCUMENTS_SCHEME_PREFIX @"documents://"
#define HTTP_SCHEME_PREFIX @"http://"
+#define HTTPS_SCHEME_PREFIX @"https://"
@implementation CDVSound
@@ -37,7 +38,7 @@
// first try to find HTTP:// or Documents:// resources
- if ([resourcePath hasPrefix:HTTP_SCHEME_PREFIX]){
+ if ([resourcePath hasPrefix:HTTP_SCHEME_PREFIX] || [resourcePath hasPrefix:HTTPS_SCHEME_PREFIX]){
// if it is a http url, use it
NSLog(@"Will use resource '%@' from the Internet.", resourcePath);
resourceURL = [NSURL URLWithString:resourcePath];
@@ -223,11 +224,21 @@
} else {
NSURLRequest *request = [NSURLRequest requestWithURL:resourceURL];
NSURLResponse *response = nil;
- NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&playerError];
+ NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&playerError];
if (playerError) {
NSLog(@"Unable to download audio from: %@", [resourceURL absoluteString]);
} else {
- audioFile.player = [[[ CDVAudioPlayer alloc ] initWithData:data error:&playerError] autorelease];
+
+ // bug in AVAudioPlayer when playing downloaded data in NSData - we have to download the file and play from disk
+ CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
+ CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, uuidRef);
+ NSString* filePath = [NSString stringWithFormat:@"%@/%@.mp3", NSTemporaryDirectory(), uuidString];
+ CFRelease(uuidString);
+ CFRelease(uuidRef);
+
+ [data writeToFile:filePath atomically:YES];
+ NSURL* fileURL = [NSURL fileURLWithPath:filePath];
+ audioFile.player = [[[ CDVAudioPlayer alloc ] initWithContentsOfURL:fileURL error:&playerError] autorelease];
}
}