I am loading a MP3 file into UIWebView control on an iPad Application, I have a UIButton called done the user expected to dismiss the UIWebView and stop the music, here is a code snippet:
// points to the mp3 file path
NSURL *url = [NSURL fileURLWithPath:self.sFilePath];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[web loadRequest:request];
When the user hit done I do the following:
[self.webview removeFromSuperview];
[self.webview release];
But that does not stop the music from playing, I noticed that loading mp3 files on UIWebView opens the QuickTime player is that correct way?
I am greatly appreciative of any guidance or help.
Looks like a dupe of Video/audio streaming does not stop even if UIWebView is closed - iPad
The solution there:
[self.webContent loadRequest:NSURLRequestFromString(#"about:blank")];
I suggest that you play the sound yourself using for example AVAudioPlayer (probably the easiest way to play and control sounds in iOS).
Something like this:
NSURL *url = [NSURL fileURLWithPath:self.sFilePath];
NSData *mySound = [NSData dataWithContentsOfURL:url];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData:mySound error:NULL];
audioPlayer.numberOfLoops = 0;
[audioPlayer play];
You can then stop the sound as simple as:
[audioPlayer stop];
or
[audioPlayer pause];
Don't forget to include the AVFoundation.framework in your project.
Related
I have an iOS app which is going to provide a sound pad for the user - i.e. when they tap a button a short sound clip is played.
At the moment, the app is designed around using SystemSoundID.
Would it now be advised to use AVAudioPlayer now over this? If so, what would be the ideal code to use? Would it be the standard:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:#"yoursoundfile"
ofType:#"mp3"]];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:nil];
[audioPlayer play];
I have a soundtrack I would like to play throughout my app even when users change view controllers and such. I have a loop from a soundtrack that I want to repeat once it finishes. I am currently playing sounds through:
NSString *soundFile = [[NSBundle mainBundle]
pathForResource:#"Click03" ofType:#"wav"];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:[NSURL fileURLWithPath: soundFile]
error:nil];
[audioPlayer start];
// or [audioPlayer stop];
I am not quite sure if this the best way of playing sounds. Can someone explain to me how to do what I asked above? Thanks in advance!
Basically you are trying to play an background audio..
Check the following links this would help you
Play music in the background using AVAudioplayer
http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/
For repeating audio check this link
How do I repeat a AVAudioPlayer?
Write code to play sound in Appdelegate.
-(void)PlaySound:(NSString*)strSoundFileName
{
fileURL=[[NSURL alloc] initFileURLWithPath:strSoundFileName];
audioPlayer=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
audioPlayer.delegate=self;
[audioPlayer prepareToPlay];
audioPlayer.currentTime=0;
[audioPlayer play];
audioPlayer.numberOfLoops=-1;
}
i'm developing an iphone app which can play youtube links using a web view
Every things fine. but except it goes to the next video automatically. is thr any way to stop this.
Here is my code.
NSString *urlAddress = #"http://www.youtube.com/embed/wh0ZK5QJMWk"; //http://www.youtube.com/embed/wh0ZK5QJMWk
NSURL *url = [[[NSURL alloc] initWithString:urlAddress] autorelease];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
Thanks
I got an app wich include several animations. To load these animations i use the MPMoviePlayerController.
The problem is that if the user is currently listening to some music with an app in background mode, the MPMoviePlayerController fade out the music, even if my animation didn't include any sounds.
Here is the code i use to instantiate my player
NSString *moviePath = [[NSBundle mainBundle] pathForResource:#"anim-geoloc" ofType:#"mp4"];
NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];
player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
player.repeatMode = MPMovieRepeatModeOne;
player.controlStyle = MPMovieControlStyleNone;
player.movieSourceType = MPMovieSourceTypeFile;
player.shouldAutoplay = YES;
player.useApplicationAudioSession = YES;
[player prepareToPlay];
[movieURL release];
I have tried to change the useApplicationAudioSession attribute but it changes nothing.
How can i play my animation without loosing the music playback ? Is there a better way to perform an animation ?
Thanks
Ok i figured out what's going out. When you use the MPMoviePlayerController and you want to share the audio session with others apps, you must create an audio session like this.
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryAmbient error:NULL];
[session setActive:YES error:NULL];
With this, my animation doesn't stop the iPod app's sound anymore.
I want to play a remote mp3 with AVPlayer. I can't make it work and I can't see the reason why it doesn't work. Code:
NSString *urlstr=#"..some link to a mp3"
NSURL *url=[NSURL URLWithString:urlstr];
self.player = [[[AVPlayer alloc] initWithURL:url] retain];
[player play];
The link is valid. If I load it in a webView it plays right away.
Please help.
I have get a solution. Please try the following code:
NSString *urlstr=#"http://www.3rdeyelab.com/mp3/mp3/tailtoddle_lo.mp3"
NSURL *url=[NSURL URLWithString:urlstr];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
player = [[AVPlayer playerWithPlayerItem:playerItem] retain];
[player play];
player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
Hope it will work for you!!!
If you use a local link as URL, so you should initiate url with fileURLWithPath method:
NSURL *url = [NSURL fileURLWithPath:urlstr];
The NSURLConnection class, regardless of whether the URL is local or remote, should always be used whenever a URL is concerned. It's the only thread-safe, non-intrusive means of loading a AVPlayerItem or AVAsset. Remember: your app shares the iPhone with other apps; and, this is the way to be responsible insodoing.