开发者社区 问答 正文

关于使用avaudioplayer播放音乐问题

Error:couldn't get default input device, id = 0,err =0
求解答,另外,有时候url什么的都正确就是不能播放,也不报错

展开
收起
爵霸 2016-03-06 08:24:19 2738 分享 版权
1 条回答
写回答
取消 提交回答
  • 要使用AVAudioPlayer播放音乐文件,首先要往项目中导入AVFoundation.framework,然后在具体的ViewController内实现"AVAudioPlayerDelegate"协议方法。具体实现代码如下:点击button,开始播放音乐。

    [objc] view plain copy
    #import "ViewController.h"  
    /** 
     *  导入框架 
     */  
    #import <AVFoundation/AVFoundation.h>  
    /** 
     *  添加代理 
     */  
    @interface ViewController ()<AVAudioPlayerDelegate>  
    {  
        AVAudioPlayer *audioPlayer;  
    }  
    @end  
      
    @implementation ViewController  
      
    - (void)viewDidLoad {  
        [super viewDidLoad];  
        //找到音乐的播放路劲  
        NSString *path=[[NSBundle mainBundle]pathForResource:@"hightemper1" ofType:@"mp3"];  
        NSData *musicData=[NSData dataWithContentsOfFile:path];  
        audioPlayer=[[AVAudioPlayer alloc]initWithData:musicData error:nil];  
        audioPlayer.delegate=self;  
        UIButton *btn=[[UIButton alloc]initWithFrame:CGRectMake(110, 200, 100, 44)];  
        [btn setTitle:@"播放" forState:UIControlStateNormal];  
        [btn addTarget:self action:@selector(startPlay) forControlEvents:UIControlEventTouchUpInside];  
        btn.backgroundColor=[UIColor redColor];  
        [self.view addSubview:btn];  
        // Do any additional setup after loading the view, typically from a nib.  
    }  
      
      
    -(void)startPlay{  
        if (audioPlayer.prepareToPlay) {  
            //准备日就绪,开始播放  
            [audioPlayer play];  
        }  
    }  
    /** 
     *  代理方法的实现 
     */  
      
    -(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{  
        NSLog(@"播放中断");  
    }  
      
    -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{  
        NSLog(@"播放完成");  
    }  
    -(void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{  
        NSLog(@"中断事件结束----->一般在此方法内重新播放音乐");  
        if (flags == AVAudioSessionInterruptionOptionShouldResume) {  
            [audioPlayer play];  
        }  
    }  
    2019-07-17 18:53:54
    赞同 展开评论
问答地址: