AudioServicesPlaySystemSound(1105); zeitversetzt...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • AudioServicesPlaySystemSound(1105); zeitversetzt...

    Hallo zusammen!

    Äußerst eigenartig... onTouch auf einen Button möchte ich gerne eine Vibration und einen Ton...

    Das mit der Vibration funktioniert prächtig...

    Das mit dem Ton checke ich nicht - es funktioniert grundsätzlich allerdings zeitversetzt...

    Der Ton ertönt also erst ein paar Millisekunden später... Vibrieren tut das Phone allerdings sofort in Echtzeit bei Touch...

    Wie kann das sein?

    Hier der Code:

    Quellcode

    1. - (IBAction)reset {
    2. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    3. if([defaults boolForKey:@"setting_tone"]) {
    4. AudioServicesPlaySystemSound(1105);
    5. }
    6. if([defaults boolForKey:@"setting_vibration"]) {
    7. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    8. }
    9. [self toIt];
    10. }
    Alles anzeigen


    Hat jemand eine Idee?

    Bis dann,
    inonnics
  • Ich denke die Millisekunde wird gebraucht um die Sounddatei zu laden. Je nachdem wie groß die ist, kann es so zu einem lag kommen.
    Ich habe das Problem zu Hause schon mal gelöst - wenn ich mich recht erinnere kann man mit dem AVAudioPlayer die Sounds vorladen und dann ohne lag abspielen. Eventuell könnte das eine Lösung für dich sein.
  • Hab ich mir auch schon gedacht aber was ich vorhin vergessen habe - was das ganze noch spannender macht ist:

    Erster Klick auf den Button: Vibriert sofort // Ton ein paar Millisekunden später

    Weitere Klicks (nach dem ersten) unter 5 Sekunden: Vibriert sofort // Ton sofort

    Weitere Klicks (nach dem ersten) grösser 5 Sekunden: Vibriert sofort // Ton ein paar Millisekunden später

    Ähm... hallo? Bin ich im falschen Film?!

    Dieses Szenario ist immer das selbe... auch wenn ich "AudioServicesPlaySystemSound(1105);" in die toIt schmeisse oder die Reihenfolge im Quellcode verändere... immer der gleiche sche...

    Bis dann,
    inonnics
  • Naja, Du wirfst eine undokumentierte Konstante in die Funktion, da ist es doch schon Glück, dass da überhaupt etwas rauskommt.

    Der Multimedia Programming Guide sagt dazu:

    Note: System-supplied alert sounds and system-supplied user-interface sound effects are not available to your application. For example, using the kSystemSoundID_UserPreferredAlert constant as a parameter to the AudioServicesPlayAlertSound function will not play anything.
    Multigrad - 360°-Produktfotografie für den Mac
  • Hallo nochmal!

    Ich bitte Euch noch um ein kurzes Feedback zu folgender Lösung - besser oder =)

    Quellcode

    1. - (IBAction)reset {
    2. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    3. if([defaults boolForKey:@"setting_tone"]) {
    4. CFBundleRef mainBundle = CFBundleGetMainBundle();
    5. CFURLRef soundFileURLRef;
    6. soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"tigg", CFSTR ("wav"), NULL);
    7. UInt32 soundID;
    8. AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    9. AudioServicesPlaySystemSound(soundID);
    10. }
    11. if([defaults boolForKey:@"setting_vibration"]) {
    12. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    13. }
    14. [self toIt];
    15. }
    Alles anzeigen


    Am Handy kann ich es erst am Abend probieren... also weiß ich noch nicht ob es nun so will wie ich will...

    Bis dann,
    inonnics
  • Verhält sich auch mit dieser Version komplett identisch:

    Erster Klick auf den Button: Vibriert sofort // Ton ein paar Millisekunden später

    Weitere Klicks (nach dem ersten) unter 5 Sekunden: Vibriert sofort // Ton sofort -----> da passt es also -> nach dem ersten Klick und zwischen 0 und 5 Sekunden

    Weitere Klicks (nach dem ersten) grösser 5 Sekunden: Vibriert sofort // Ton ein paar Millisekunden später ----->ab 6 Sekunden wieder das gleiche...

    Ich kann dieses Verhalten einfach nicht nachvollziehen... jemand noch eine Idee?
  • Hallo smk,

    thx! Das probiere ich...

    Trotzdem finde ich es so eigenartig das es zwischen 0 und 5 Sekunden funktioniert wie es soll und erst ab der 6ten Sekunden faxen macht... als wie wenn da eine interne Routine laufen würde und ab 5 Sekunden etwas verändert...

    Bis dann,
    inonnics
  • inonnics schrieb:

    Trotzdem finde ich es so eigenartig das es zwischen 0 und 5 Sekunden funktioniert wie es soll und erst ab der 6ten Sekunden faxen macht... als wie wenn da eine interne Routine laufen würde und ab 5 Sekunden etwas verändert...

    Ich schätze, da wird halt was eine Weile gecached und wenn der Kram dann diese Weile lang nicht gebraucht wird, wird er halt aus dem Speicher geschmissen.

    Michael