类似微信发送语音,按下录音,松开结束录音;并且可播放

需要导入

#import <AVFoundation/AVFoundation.h>

利用此框架中的

AVAudioRecorder和AVAudioPlayer来录音和播放以下是AVAudioRecorder录音的使用方法:

- (IBAction)downAction:(id)sender {

按下录音

if ([self canRecord]) {

NSError *error = nil;

必须真机上测试,模拟器上可能会崩溃

recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:playName] settings:recorderSettingsDict error:&error];

if (recorder) {

是否允许刷新电平表,默认是off

recorder.meteringEnabled = YES;

创建文件,并准备录音

[recorder prepareToRecord];

开始录音

[recorder record];

启动定时器,为了更新电平

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

} else

{

int errorCode = CFSwapInt32HostToBig ([error code]);

NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode);

}

}

}

- (IBAction)upAction:(id)sender {

松开 结束录音

录音停止

[recorder stop];

recorder = nil;

结束定时器

[timer invalidate];

timer = nil;

图片重置

soundLodingImageView.image = [UIImage imageNamed:[volumImages objectAtIndex:0]];

}

[cpp] view plain copy

- (IBAction)downAction:(id)sender {

按下录音

if ([self canRecord]) {

NSError *error = nil;

必须真机上测试,模拟器上可能会崩溃

recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:playName] settings:recorderSettingsDict error:&error];

if (recorder) {

是否允许刷新电平表,默认是off

recorder.meteringEnabled = YES;

创建文件,并准备录音

[recorder prepareToRecord];

开始录音

[recorder record];

启动定时器,为了更新电平

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

} else

{

int errorCode = CFSwapInt32HostToBig ([error code]);

NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode);

}

}

}

- (IBAction)upAction:(id)sender {

松开 结束录音

录音停止

[recorder stop];

recorder = nil;

结束定时器

[timer invalidate];

timer = nil;

图片重置

soundLodingImageView.image = [UIImage imageNamed:[volumImages objectAtIndex:0]];

}

以下是AVAudioPlayer播放器的使用方法:

- (IBAction)playAction:(id)sender {

NSError *playerError;

播放

player = nil;

player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:playName] error:&playerError];

if (player == nil)

{

NSLog(@"ERror creating player: %@", [playerError description]);

}else{

[player play];

}

}

- (IBAction)playAction:(id)sender {

NSError *playerError;

播放

player = nil;

player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:playName] error:&playerError];

if (player == nil)

{

NSLog(@"ERror creating player: %@", [playerError description]);

}else{

[player play];

}

}

提示:如果是7.0,第一次运行会提示,是否允许使用麦克风

if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending)

{

7.0第一次运行会提示,是否允许使用麦克风

AVAudioSession *session = [AVAudioSession sharedInstance];

NSError *sessionError;

AVAudioSessionCategoryPlayAndRecord用于录音和播放

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

if(session == nil)

NSLog(@"Error creating session: %@", [sessionError description]);

else

[session setActive:YES error:nil];

}

if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending)

{

7.0第一次运行会提示,是否允许使用麦克风

AVAudioSession *session = [AVAudioSession sharedInstance];

NSError *sessionError;

AVAudioSessionCategoryPlayAndRecord用于录音和播放

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

if(session == nil)

NSLog(@"Error creating session: %@", [sessionError description]);

else

[session setActive:YES error:nil];

}

时间: 2024-10-26 20:22:35

类似微信发送语音,按下录音,松开结束录音;并且可播放的相关文章

类似微信的语音连播的递归算法

本算法实现了微信的语音连播功能:即自动读取本条之后的未读语音消息:连播一般都是一条播放完成,在接着播放下一条. - (void)clickCellVoice:(VMessageEntity *)model { __weak VChatsViewController *weakSelf = self; if ([self.keyBoardView isFirstResponder]) { [self tapAnywhereToDismissKeyboard:nil]; } if (model) {

[Android]实现点击持续录音,松开结束录音,并实现随着分贝的大小改变图片

显示录音大小的DIALOG实现 public class VioceDomio { private Context mContext; private AlertDialog dialog ; private AlertDialog.Builder adialogbuile; private ImageView vioce_show; public VioceDomio(Context mContext) { this.mContext=mContext; } public void showR

实现类似微信语音播放动画的效果

要求就是点击播放按钮,小喇叭开始动,当语音结束后,停止动画.如图: 这需要用到UIImageView的帧动画,该动画可以让一系列图片在特定的时间内按顺序显示出来.需要的素材如下: audio_icon_1 *****分割线***** audio_icon_2 *******分割线*******audio_icon_3 代码如下: // 添加播放时候的动画图片 [_audioBtn addSubview:self.animationview]; [_audioBtn setImage:[UIIma

发送语音+讯飞翻译 项目案例

数据结构 public LongSparseArray<RecordBean> recordList=new LongSparseArray<>(); 封装所有相关数据的Bean public class RecordBean { public static final String VOICE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "vo

ios xmpp 发送语音图片解决方案

ios xmpp 发送语音,图片解决方案,有需要的朋友可以参考下. 目前做IM多是用的xmpp.因为项目需求需要实现语音和图片的发送.发送语音图片有三种方法.1,xmpp smack.文件传输方式.2,文本流.3,服务器中转.因为项目工期等原因,最终选择了通过服务器中转的方式来实现这些功能,本博客只是用于自己工作的记录,有什么不对的地方欢迎指正.发送语言消息需要和安卓共通,本来预期的方案是选择使用amr格式的音频.这样工作量都压在ios这边.所以和安卓协商后选择使用了mp3格式的音频编码.首先是

【转】swift实现ios类似微信输入框跟随键盘弹出的效果

swift实现ios类似微信输入框跟随键盘弹出的效果 为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么这是怎么实现的呢,也许你会说直接在键盘弹出的时候把输入框也向上移动不就行了?但是我使用这种方法的时候,发现效果十分不理想,会有明显的滞后现象,原因有以下几点: 键盘弹出动画并不是匀速,键盘和输入框的时间曲线不完全一致,运动不同步 各种键盘的高度不一样(比如

TP3.23开发的分答微信版语音问答系统源码

演示地址:http://yd.168282.com (请在微信中打开演示) 公众号演示:(请直接扫码演示) 9月最新功能如下:1.易答:付费你(我)问,我(你)答,有人付费听,你我分钱.2.录音时自动转MP3格式,支持所有移动端设备3.每晚程序自动结算4.收入.支出 账目明细5.赞赏:如果你觉得答主答得漂亮,可以直接为他点赞6.问题搜索:搜人不够,还想搜问题,我们已经实现了这功能7.拒绝回答:不想回答的问题直接拒绝8.多级分类9.增强答主审核机制10.图文回答,图文提问,可后台开启11.追问功能

android 实现类似微信缓存和即时更新好友头像

引言 使用微信时我们会发现,首次进入微信的好友列表时,会加载好友头像,但是再次进入时,就不用重新加载了,而且其他页面都不用重新加载,说明微信的好友头像是缓存在本地的,然后好友修改头像后,又会及时的更新,这个功能是如何实现的呢,我们来分析一下 分析 关于头像缓存的实现 头像是网络图片,而且数据量较大,如果用我们常用的SharedPreferences将头像以Bitmap的形式存储,势必会造成OOM,这个方法是行不通的,我们存储的只能是图片的地址,但是如果只存储地址的话,要转化成图片,还是要通过网络

iOS开发&gt;学无止境 - AKTabBarController:类似微信的第三方库

自从有了评论之后,就可以很方便的和大家交流.以前都是我一个人默默的发文章,看不出大家对文章的看法.评论开通之后,就可以很快速的获取大家对文章的看法. 有人会指出文章里有错误的地方,真的很感激他们,非常的认真:有人会对文章说出自己的见解,加深自己的印象,同时,也能帮助到其他的朋友:有人也会在评论里,提出一些问题,但是鉴于评论的字数限制,只能简单的回答一下. 在昨天的文章评论里面,有一个朋友提出了一个问题,关于微信导航栏的. 问题分析和解答 问: 自定义导航栏怎么写?就像微信那样,tabBar的四个