在iOS应用中播放mp3文件
问题描述:
我无法弄清楚如何在iPhone游戏中播放音乐文件。在iOS应用中播放mp3文件
我创建一个游戏,我试图找出如何在应用程序启动时播放音乐。
我尝试这样做:
- (void)awakeFromNib {
NSString *path = [[NSBundle mainBundle] pathForResource:@"musicamenu" ofType:@"mp3"];
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
[theAudio play];
}
答
这就是你是如何做到的。在您的v1AppDelegate.h文件中添加
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
@interface v1AppDelegate : UIResponder <UIApplicationDelegate>
{
AVAudioPlayer *myAudioPlayer;
}
@property (nonatomic, retain) AVAudioPlayer *myAudioPlayer;
@property (strong, nonatomic) UIWindow *window;
@end
现在,在您v1AppDelegate.m文件中添加此
#import "v1AppDelegate.h"
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
@implementation v1AppDelegate
@synthesize window = _window;
@synthesize myAudioPlayer;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//start a background sound
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Soothing_Music2_Long" ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:soundFilePath ];
myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
myAudioPlayer.numberOfLoops = -1; //infinite loop
[myAudioPlayer play];
// Override point for customization after application launch.
return YES;
}
如果你想停止或从代码中的任何地方启动这个音乐,那么只需添加本
#import "v1AppDelegate.h"
- (IBAction)stopMusic
{
v1AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate.myAudioPlayer stop];
}
- (IBAction)startMusic
{
v1AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate.myAudioPlayer play];
}
+0
我很喜欢工作!谢谢大家! – user2444410
答
我建议加播放音乐方法applicationDidBecomeActive:
方法。因为您希望每次启动应用时播放音乐。请注意,您应该持有对玩家的参考。否则音乐将不会播放。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Play music on another queue so that the main queue is not blocked.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self playMusic];
});
}
- (void)playMusic
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"done" ofType:@"mp3"];
NSError *error = nil;
NSURL *url = [NSURL fileURLWithPath:path];
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
[self.player play];
}
+1
“请注意,你应该持有一个参考,否则音乐将不会播放“。救了我 –
答
对于雨燕3.1:
使用该两名外援:
0为发挥private var mAudioPlayer : AVAudioPlayer?
使用此功能你是存储在您的应用程序一个声音:
import AVFoundation
import AudioToolbox
为您AVAudioPlayer参考
func onTapSound(){
let soundFile = Bundle.main.path(forResource: "slap_placeholder.wav", ofType: nil)
let url = URL(fileURLWithPath: soundFile!)
self.mAudioPlayer = try! AVAudioPlayer(contentsOf: url as URL)
self.mAudioPlayer?.play()
}
你可能想看看这个前面的问题。 http://stackoverflow.com/questions/1296786/how-do-i-programmatically-play-an-mp3-on-an-iphone – dotToString