【问题标题】:Control AudioSession from code从代码控制 AudioSession
【发布时间】: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.如何设置它的循环属性?

提前致谢

【问题讨论】:

    标签: iphone ios5 avaudioplayer avaudiosession


    【解决方案1】:

    这一切都在the documentation 中非常清楚地列出。

    1) 使用playAtTime: 方法调用而不是play。以秒为单位传递时间。

    2) 在AVAudioPlayer 上设置volume 属性。请注意,这是播放器的增益,将根据当前系统音量进行调制。

    3) 设置numberOfLoops 属性。分配一个像NSIntegerMax 这样的巨大值以无限期地循环。

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 2018-11-27
      • 2014-12-16
      相关资源
      最近更新 更多