Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Danneman101

macrumors 6502
Original poster
Aug 14, 2008
361
1
Since <embed sound> in UIWebView html-pages does not seem to work in 2.2 (worked fine in 2.0/2.1, see my post at https://forums.macrumors.com/threads/661650/), Ive had to find another way to play sounds.

Im trying to use the MPMoviePlayerController instead, and have used the attached code below.

However, I keep getting the following errors:
----------------------------------------
"Linking /Volumes/.../myApp.app/myApp (2 errors)
(x) ".objc_class_name_MPMoviePlayerController", referenced from:
literal-pointer@_OBJC@_cls_refs@MPMoviePlayerController in myViewController.o
(x)"_MPMoviePlayerPlaybackDidFinishNotification", referenced from:
_MPMoviePlayerPlaybackDidFinishNotification$non_lazy_ptr in myViewController.o
symbol(s) not found
collect2: Id returned 1 exit status"
----------------------------------------

Code:
// in myViewController.h
// --------------------------

#import <MediaPlayer/MediaPlayer.h>




// in myViewController.m
// --------------------------

playMovieAtURL:@"test.wav";  // calls the function playMovieAtURL, and is placed within another function.

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

	theMovie.scalingMode=MPMovieScalingModeAspectFill;

	//theMovie.userCanShowTransportControls=NO;
	theMovie.movieControlMode = MPMovieControlModeHidden;

	// Register for the playback finished notification.
	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie]; 

	// Movie playback is asynchronous, so this method returns immediately.
	[theMovie play];
}

// When the movie is done,release the controller.
-(void)myMovieFinishedCallback:(NSNotification*)aNotification
{
	MPMoviePlayerController* theMovie=[aNotification object];

	[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];

	// Release the movie instance created in playMovieAtURL
	[theMovie release];
}

Does anybody have a clue to what the mumbo-jumbo in the error-message is about?


Alternatively, can you suggest a better objc-method of playing mp3-sounds (need to be mp3 because of the compression - app becomes way to big with wav/aif)?
 

Danneman101

macrumors 6502
Original poster
Aug 14, 2008
361
1
you have to add the MediaPlayer.framework to the frameworks of your project

to do this:
right click on frameworks, add existing framework, select the MediaPlayer.framework (which is located in /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/System/library/Frameworks )
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.