Управление AudioSession из кода - PullRequest
0 голосов
/ 09 февраля 2012

В моем проекте у меня есть функция, которая воспроизводит музыку

-(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 Ответ

1 голос
/ 09 февраля 2012

Все это довольно четко изложено в документации .

1) Используйте вызов метода playAtTime: вместо play. Передайте время в секундах.

2) Установите свойство volume на AVAudioPlayer. Обратите внимание, что это усиление проигрывателя, и оно будет модулироваться с текущей громкостью системы.

3) Установите свойство numberOfLoops. Присвойте огромное значение, например NSIntegerMax, чтобы цикл продолжался бесконечно.

...