Κοινή χρήση τεχνολογίας

Παίξτε AAC χρησιμοποιώντας τις Υπηρεσίες ήχου της Εργαλειοθήκης ήχου

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Παίξτε AAC χρησιμοποιώντας τις Υπηρεσίες ήχου της Εργαλειοθήκης ήχου

Παίξτε AAC χρησιμοποιώντας τις Υπηρεσίες ήχου της Εργαλειοθήκης ήχου

Χωρίζεται κυρίως σε 3 βήματα:

  1. χρήση AudioServicesCreateSystemSoundID Δημιουργήστε ήχους συστήματος.
  2. χρήση AudioServicesAddSystemSoundCompletion Ορισμός επανάκλησης.
  3. χρήση AudioServicesPlaySystemSound Ξεκινήστε να παίζετε.

σχετικά με AudioServicesPlaySystemSound λειτουργία:

Αυτή η λειτουργία αναπαράγει έναν σύντομο ήχο (διάρκειας 30 δευτερόλεπτα ή λιγότερο). Επειδή ο ήχος μπορεί να αναπαράγεται για αρκετά δευτερόλεπτα, αυτή η λειτουργία εκτελείται ασύγχρονα.Για να μάθετε πότε τελείωσε η αναπαραγωγή ενός ήχου, καλέστεAudioServicesAddSystemSoundCompletion λειτουργία για να καταχωρήσετε μια λειτουργία επανάκλησης.

Σε ορισμένες συσκευές iOS, μπορείτε AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) να προκληθεί δόνηση. Σε άλλες συσκευές iOS, η κλήση αυτής της λειτουργίας με αυτήν τη σταθερά δεν έχει κανένα αποτέλεσμα.

Οι παρακάτω είναι οι περιορισμοί των αρχείων ήχου που μπορεί να αναπαράγει αυτή η λειτουργία:

  • Διάρκεια όχι μεγαλύτερη από 30 δευτερόλεπτα
  • Σε γραμμική μορφή PCM ή IMA4 (IMA/ADPCM).
  • Συσκευασμένο σε α .caf, .aif, ή .wav αρχείο

Αλλά στην πραγματικότητα, τα αρχεία AAC μπορούν επίσης να αναπαραχθούν κανονικά. Επιπλέον, αυτή η λειτουργία έχει πολλούς περιορισμούς:

  • Ο ήχος αναπαράγεται στην τρέχουσα ένταση ήχου του συστήματος, χωρίς προγραμματισμένο έλεγχο έντασης.
  • Ο ήχος ακούγεται αμέσως.
  • Το Looping και η στερεοφωνική τοποθέτηση δεν υποστηρίζονται.
  • Δεν είναι δυνατή η ταυτόχρονη αναπαραγωγή, μόνο ένας ήχος μπορεί να αναπαραχθεί τη φορά.
  • Ο ήχος αναπαράγεται τοπικά στα ηχεία της συσκευής και δεν χρησιμοποιεί δρομολόγηση ήχου.

Κωδικός πυρήνα:

- (void)btnClick:(UIButton *)sender
{
    self.mButton.hidden = YES;
    NSURL *audioUrl = [[NSBundle mainBundle] URLForResource:@"music" withExtension:@"aac"];
    SystemSoundID soundID;
    // create a system sound object
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)audioUrl, &soundID);
    // register a callback function that is invoked when a specified system sound finishes playing
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, &playCallback, (__bridge void *_Nullable)(self));
    // play a system sound object
    AudioServicesPlaySystemSound(soundID);
}

void playCallback(SystemSoundID ssID, void  *clientData)
{
    ViewController *vc = (__bridge ViewController *)clientData;
    vc->_mButton.hidden = NO;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Διεύθυνση έργου: https://github.com/UestcXiye/AudioToolboxSystemSound.