mar*_*n's 8 iphone avaudioplayer ios
我创建了一个自定义类来处理音频播放.
AudioPlayback.h
#import <Foundation/Foundation.h>
#import "AVFoundation/AVAudioPlayer.h"
#import <AVFoundation/AVFoundation.h>
@interface AudioPlayback : NSObject <AVAudioPlayerDelegate> {
AVAudioPlayer *player;
BOOL playing;
NSTimeInterval duration;
}
@property (nonatomic, assign) AVAudioPlayer *player;
@property (readonly) BOOL playing;
@property (readonly) NSTimeInterval duration;
-(NSTimeInterval)GetSoundFileDuration:(NSString *) sound_file_name;
-(void)PlaySoundFile:(NSString *) sound_file_name;
-(void)play;
-(void)stop;
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
@end
Run Code Online (Sandbox Code Playgroud)
然后,在AudioPlayback.h中
#import "AudioPlayback.h"
@implementation AudioPlayback
@synthesize player;
-(id)init
{
self = [super init];
if (self != nil)
{
player = [[AVAudioPlayer alloc] init];
[player initWithContentsOfURL:nil error:nil];
player.delegate = self;
}
return self;
}
-(void)PlaySoundFile:(NSString *) sound_file_name
{
NSURL *sound_file = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:sound_file_name ofType:@"mp3"]];
[player initWithContentsOfURL:sound_file error:nil];
[player prepareToPlay];
[player play];
[sound_file release];
}
...
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"audioPlayerDidFinishPlaying");
}
Run Code Online (Sandbox Code Playgroud)
回调永远不会触发.我错过了什么明显的东西?
Sol*_*ola 34
我觉得" player.delegate = self"打电话太早了.你" initWithContentsOfURL"再次出现在你的" PlaySoundFile"中,我认为这会导致问题.
尝试在" "方法player.delegate = self中将" [player prepareToPlay]" 放在" "之前PlaySoundFile
| 归档时间: |
|
| 查看次数: |
10094 次 |
| 最近记录: |