要给工程中添加音频,首先要导入音频的框架 avfoundation.framework
然后新建一个类继承于uiviewcontroller, 我这里就叫firstvc.
首先在 appdelegate.m中初始化根视图
- (void)dealloc
{
[_window release];
[super dealloc];
}
- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions
{
self.window = [[[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]] autorelease];
// override point for customization after application launch.
firstvc *firstvc = [[firstvc alloc] init];
self.window.rootviewcontroller = firstvc;
[firstvc release];
self.window.backgroundcolor = [uicolor whitecolor];
[self.window makekeyandvisible];
return yes;
}
#import <uikit/uikit.h>
//要想使用封装好的音频类,导入框,导入类头文件,缺一不可;
#import <avfoundation/avfoundation.h>
@interface firstvc : uiviewcontroller<avaudioplayerdelegate>
{
avaudioplayer *avaudioplayer; //播放器player
uiprogressview *progressv; //播放进度
uislider *volumeslider; //声音控制
nstimer *timer; //监控音频播放进度
}
@end
//声音开关控件(静音)
uiswitch *swith = [[uiswitch alloc] initwithframe:cgrectmake(100, 20, 60, 40)];
[swith addtarget:self action:@selector(onoroff:) forcontrolevents:uicontroleventvaluechanged];
//默认状态为打开
swith.on = yes;
[self.view addsubview:swith];
[swith release];
}
//播放音量控制
- (void)volumechange
{
avaudioplayer.volume = volumeslider.value;
}
//播放完成时调用的方法 (代理里的方法),需要设置代理才可以调用
- (void)audioplayerdidfinishplaying:(avaudioplayer *)player successfully:(bool)flag
{
[timer invalidate]; //nstimer暂停 invalidate 使...无效;
}
最后运行起来的就是这个样子
如果想要播放网络音乐,那么遗憾的是ios中的avaudioplayer不支持边下边播,所以只能下载到本地再播放。
方法:
总结:
下面说一下我遇到的各种问题:
1、由于添加了all exception断点,导致每次都在初始化的时候自动断到,因为不是oc异常,又无异常信息显示。这时应该编辑断点,将其类型由all改为oc。这个异常并不会导致程序的崩溃,所以可以不作处理。
2、网上有的说不能播放,解决方案是应该在 appdelegate.m文件中的
application didfinishlaunchingwithoptions 添加这样一句代码:
如对本文有疑问, 点击进行留言回复!!
牛客编程巅峰赛S1第6场 - 黄金&钻石&王者题解
纵横字谜的答案 Crossword Answers, ACM/ICPC World Finals 1994, UVa232
HDU - 5880 Family View (AC自动机修改母串)
iOS14Beta3续航怎么样 iOS14Beta3续航能力介绍
iOS14Beta3稳定性怎么样 iOS14Beta3升级建议介绍
网友评论