IOS开发之AVAudioPlayer的基本使用

IOS开发之AVAudioPlayer的基本使用

1.这是播放效果,可以按下play和pause播放和暂停,进度条自动改变进度

,我用的是mac mini产生很多错误,没有声音,换个耳机就可以了!!

滑动条拖动的时候,音乐播放改变会有噪音,解决方法如下

100343_Q3ZL_2683146.png

不要勾这个就行

2.改变声音的方法,设置当前音量和最小音量0-1的数值

101208_Rc1F_2683146.png

以下实现音乐播放的代码:

//

//  ViewController.m

//  01-AVAudiioPlayer

//

//  Created by 鹿微微鹿. on 16/5/6.

//  Copyright (c) 2016 鹿微微鹿. All rights reserved.

//

//AVAudioPlayer:专门用来播放音频的工具

//1.导入import <AVFoundation/AVFoundation.h>

//2.声明一个音频全局变量AVAudioPlayer *_player

#import “ViewController.h”

#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVAudioPlayerDelegate>

{

    //声明一个音频播放器对象

    AVAudioPlayer *_player;

    

 

}

@property (weak, nonatomic) IBOutlet UISlider *progressSlider;

@end

@implementation ViewController

– (void)viewDidLoad {

 

    [super viewDidLoad];

    //定时器

    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];

 

    [self preparePlay];

}

//更新进度

– (void)updateSlider{

    //获取当前进入

    //当前进度就是当前播放的时刻/总的时间

    self.progressSlider.value = _player.currentTime/_player.duration;

}

#pragma mark – 按钮点击

– (IBAction)play:(id)sender {

    //播放

    [_player play];

}

– (IBAction)pause:(id)sender {

    //暂停

    [_player pause];

}

– (IBAction)sliderChangeValue:(UISlider *)sender {

    //改变播放进度

    

    //获取当前音乐的总时间

    CGFloat duration = _player.duration ;

    

    //设置当前的播放进度

    _player.currentTime =  duration * sender.value;

    

    

}

– (IBAction)stpperChangeValue:(UIStepper *)sender {

    

  //  NSLog(@”%lf”,sender.value);

    _player.volume = sender.value;

    

}

#pragma mark –音乐播放完毕的时候

//一个音频播放结束的时候调用这个方法

– (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{

    

    NSLog(@”播放结束);

}

//打断的时候会调用这个方法

– (void)audioPlayerBeginInterruption:(AVAudioPlayer *)player{

    [player pause];

}

//打断结束的时候调用该方法

– (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags{

    //一般在这个方法中继续播放

    [_player play];

    

}

#pragma mark – 准备音频播放器

– (void)preparePlay{

    

    NSString *path = [[NSBundle mainBundle]pathForResource:@”亡灵序曲.mp3″ ofType:nil];

    

    

    //1.实例化音频播放器(既可以播放网上的也可以播放本地的)

    _player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];

    

    //2.准备播放

    [_player prepareToPlay];

    

    //3.开始播放

    [_player play];

    

    //设置代理

    _player.delegate =self;

    

    NSLog(@”1″);

}

@end



转载于:https://my.oschina.net/luhoney/blog/670703

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109038.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Python全栈工程师(集合、函数)

    Python全栈工程师(集合、函数)ParisGabrielParisGabriel感谢大家的支持你们的阅读评价就是我最好的动力我会坚持把排版内容以及偶尔的错误做的越来越好每天坚持一天一篇点个订阅吧灰常感谢当个死粉也

  • UDP协议详解[通俗易懂]

    UDP协议详解[通俗易懂]目录1、简介2、UDP协议3、端口4、UDP和ARP之间的交互5、UDP适用场景6、UDP洪水1、简介UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据

  • 神经网络知识点总结_经典神经网络

    神经网络知识点总结_经典神经网络本文基于文章,对神经网络的知识点做一个总结,可能不会对某些概念性的东西做详细介绍,因此需要对神经网络有基本的了解。FNN:前馈神经网络  神经网络的最基本也是最经典的形式,结果包括输入层,隐藏层和输出层,根据隐藏层的多少,分为shallownetwork和deepnetwork(deeplearning由此而来)Activationfunction  在神经网络的每

  • Depix初体验

    Depix初体验前情提要这几天有一个同学给我发了一张马赛克图,问我能不能还原?图片如上。我一看,这被马成什么鬼样子了,谁能还原得了?不过我忽然想到,我在公众号上看到一个名字叫做”Depix”的Github项目。然而近期在Github上,又出现了一款号称能抹去马赛克让原图重现的神器,引发海内外热议。这款工具名为Depix,上线没几天就在GitHub上标星已超过一万多,截止目前累计分支也超过了1.3k个。让它火出圈子的,就是下面这张效果图:如图所示,第一行是打了一层巨厚马赛克完全像素化后的文本内容,看不出

  • AVA测试框架内部的Promise异步流程控制模型

    AVA测试框架内部的Promise异步流程控制模型作者:肖磊个人主页:github最近将内部测试框架的底层库从mocha迁移到了AVA,迁移的原因之一是因为AVA提供了更好的流程控制。我们从一个例子开始入手:有A,B,C,D4个case,我要实现A–>>B–>>(C|D),A最先执行,B等待A执行完再执行,最后是(C|D)并发执行,使用ava提供的API来完成case就是:constava…

    2022年10月31日
  • 基于DNS的全局负载均衡(GSLB)详解(下篇)[通俗易懂]

    基于DNS的全局负载均衡(GSLB)详解(下篇)[通俗易懂]基于DNS的全局负载均衡(GSLB)详解(下篇)前言基于DNS的流量调度和宕机切换流量负载方式DNS流量调度准确性健康检查和宕机切换基于DNS的混合流量负载(调度)前言上篇我们介绍了DNS流量负载和容灾切换功能的意义如果你想了解DNS访问的整个流程,可以先查看DNS的基本原理(可查看文章DNS原理及解析过程详解)。对于更好地讲解全局流量负载有所帮助。基于DNS的流量调度和宕机切换流量负载…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号