从代码控制 AudioSession
Posted
技术标签:
【中文标题】从代码控制 AudioSession【英文标题】:Control AudioSession from code 【发布时间】:2012-02-08 23:15:26 【问题描述】:在我的项目中,我有一个播放音乐的功能
-(void)playPlin
AudiosessionSetActive(true);
// Set up audio session, to prevent iPhone from deep sleeping, while playing sounds
UInt32 category = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (
kAudioSessionProperty_AudioCategory,
sizeof (category),
&category
);
//UInt32 category = kAudioSessionCategory_MediaPlayback;
OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(category), &category);
if (result)
NSLog(@"ERROR SETTING AUDIO CATEGORY!\n");
result = AudioSessionSetActive(true);
if (result)
NSLog(@"ERROR SETTING AUDIO SESSION ACTIVE!\n");
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"chimes" ofType:@"wav"];
NSData *sampleData = [[NSData alloc] initWithContentsOfFile:soundFilePath];
NSError *audioError = nil;
AVAudioPlayer *alarmAudioPlayer = [[AVAudioPlayer alloc] initWithData:sampleData error:&audioError];
[sampleData release];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
if(audioError != nil)
NSLog(@"An audio error occurred: \"%@\"", audioError);
else
[alarmAudioPlayer play];
文件播放正常,但我有三个问题:
1.如何使音频文件不是从头开始,而是从我通过的秒数开始?例如,如果我步进值为 300 的音频文件应该从它的第二个 300 开始
2.如何设置音频文件的音量?
3.如何设置它的循环属性?
提前致谢
【问题讨论】:
【参考方案1】:这一切都在the documentation 中非常清楚地列出。
1) 使用playAtTime:
方法调用而不是play
。以秒为单位传递时间。
2) 在AVAudioPlayer
上设置volume
属性。请注意,这是播放器的增益,将根据当前系统音量进行调制。
3) 设置numberOfLoops
属性。分配一个像NSIntegerMax
这样的巨大值以无限期地循环。
【讨论】:
以上是关于从代码控制 AudioSession的主要内容,如果未能解决你的问题,请参考以下文章