Силата на звука на AVAudioPlayer не е същата като системната

Използвам AVAudioPlayer за възпроизвеждане на звук, но понякога силата на звука става много ниска и не е същата като системната. Когато променя силата на звука на системата чрез натискане на бутона за сила на звука, това става нормално. Как се случва?

кодът е по-долу:

- (void)prepareAudioSession {
    AVAudioSession *session = [AVAudioSession sharedInstance];
    NSError *setCategoryError = nil;
    if (![session setCategory:AVAudioSessionCategoryPlayback
              withOptions:AVAudioSessionCategoryOptionMixWithOthers
                    error:&setCategoryError]) {
        // handle error
    }

    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    NSError *error = nil;
    BOOL result = [audioSession setActive:YES withOptions:0 error:&error];

    if (!result && error) {
        // deal with the error
    }
}

- (void)playWithAudioPath:(NSString *)path {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    NSError *error;
    NSURL *audioFileURL = [NSURL fileURLWithPath:path];
    self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];

    audioPlayer.delegate = self;

    if (error == nil) {

        [self prepareAudioSession];

        [audioPlayer setCurrentTime:0];
        [audioPlayer play];
    }
    else {
        NSLog(@"%@", error.description);
    }
});}

person lixiaoyu    schedule 02.03.2015    source източник


Отговори (1)


Не сте извикали [audioPlayer setVolume: 1.0];, за да зададете силата на звука във вашия код.

person Jake Lin    schedule 02.03.2015
comment
къде трябва да извикам този код след [self prepareAudioSession];? И този метод прави ли силата на звука максимален обем? - person lixiaoyu; 02.03.2015
comment
преди [възпроизвеждане на аудиоплейър]; Ще настрои силата на звука да бъде максимална, защото използваме 1.0 - person Jake Lin; 03.03.2015
comment
Но не искам максималния обем, искам да използвам системния обем. - person lixiaoyu; 03.03.2015
comment
опитайте първо да го получите от кода по-долу и след това да го зададете обратно. Обем на Float32; UInt32 dataSize = sizeof(Float32); Float32 currentVolume= AudioSessionGetProperty ('chov', &dataSize, &volume); - person Jake Lin; 03.03.2015