AudioServicesAddSystemSoundCompletion tilbakeringing ikke bli kalt i stillemodus

stemmer
3

Hvis jeg setter enheten i lydløs modus med bryter, AudioServicesAddSystemSoundCompletionbetyr tilbakeringing metoden ikke får ringt. Hvis bryteren er på, mener jeg hvis enheten ikke er i stille modus, blir metode som kalles perfekt.

Har noen opplevd noe sånt som dette. Er dette en feil?

Publisert på 27/11/2011 klokken 18:20
kilden bruker
På andre språk...                            


3 svar

stemmer
2

Jeg hadde det samme problemet. Det er ikke en bug. Hvis lyden ikke spilles på grunn av enheten blir dempet samtalen tilbake aldri blir kalt.

Et arbeid rundt er å bruke en NSTimer som er samme lengde som lyden som skal spilles. Hvis lyden ikke spiller timeren ringe tilbake blir kalt. Som kan utføre den samme koden som tilbakeringing.

Svarte 26/01/2012 kl. 17:04
kilden bruker

stemmer
2

Her er hvordan du kan bruke NSTimer for soundDidFinishPlaying tilbakeringing selv i Silent Mode.

    - (IBAction)playSelectedSound:(id)sender {

    if (!self.isPlaying)
    {        

        // playing the sound

        NSString *fileName = [soundsFileNames objectAtIndex:self.selectedIndex];

        SystemSoundID topClick;
        NSBundle *bundle = [NSBundle mainBundle];
        NSString *topClikFile = [bundle pathForResource:fileName ofType:@"aiff"];

        AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL URLWithString:topClikFile], &topClick);
        AudioServicesPlaySystemSound(topClick);

        // getting the file duration

        AudioFileID audioFileID;
        AudioFileOpenURL((__bridge CFURLRef)[NSURL URLWithString:topClikFile], kAudioFileReadPermission, 0, &audioFileID);

        NSTimeInterval seconds;
        UInt32 propertySize = sizeof(seconds);
        OSStatus st = AudioFileGetProperty(audioFileID, kAudioFilePropertyEstimatedDuration, &propertySize, &seconds);

        // fire the timer
        if (st == 0)
        {
            [NSTimer scheduledTimerWithTimeInterval:seconds target:self selector:@selector(soundDidFinishPlaying) userInfo:nil repeats:NO];
        }

        self.isPlaying = YES;

    }
}



- (void)soundDidFinishPlaying {

    self.isPlaying = NO;
}
Svarte 24/03/2012 kl. 20:03
kilden bruker

stemmer
0

Kildekoden for Sound Switch (med demo prosjekt) viser at tilbakeringing gjør faktisk også oppstå hvis enheten er i stille modus.

Jeg har bare prøvd dette med iOS 8.1 på en iPhone 5 og stille modus slås av / på med knappen på enheten.

Svarte 26/01/2015 kl. 08:04
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more