2009-04-11 6 views
1

Dies ist der Klappentext, der der Audio-Services-Funktion AudioServicesSetProperty beiliegt. Es ist ein bisschen über meinem Kopf. Kann mir jemand ein Beispiel geben, wie man das wirklich nutzt? Vielen Dank.Hilfe mit der Audiodienste-Funktion

AudioServicesSetProperty Legt den Wert für einen bestimmten Systemsignal Immobilien-Dienstleistungen.

OSStatus AudioServicesSetProperty (
AudioServicesPropertyID inPropertyID, UInt32 inSpecifierSize, const void * inSpecifier, UInt32 inPropertyDataSize, const void * inPropertyData);

Parameter:

inPropertyID: Die Eigenschaft, deren Wert Sie festlegen möchten.

inSpecifierSize: Die Größe des Puffers , auf den der Parameter inSpecifier zeigt. Übergeben Sie 0, wenn kein Spezifizierer Puffer benötigt wird.

inSpecifier: Ein Zeiger auf einen Spezifikations Puffer, wenn ein solcher Puffer durch die Eigenschaft erforderlich ist, über die Sie Informationen abrufen möchten. Übergeben Sie NULL, wenn kein Spezifizierer erforderlich ist.

inPropertyDataSize: Die Größe in Bytes, des Puffers, auf den der Parameter outPropertyData zeigt.

inPropertyData: Der Eigenschaftswert, den Sie setzen möchten.

+1

Diese Frage scheint ein bisschen rückwärts. Was versuchst du zu machen? Was verstehst du nicht? –

Antwort

6

Wenn Sie einen kurzen Systemsound (kürzer als 30 Sekunden) mit dem System-Sound Services Mechanismus spielen (Code würde in etwa wie folgt aussehen)

#include <AudioToolbox/AudioToolbox.h> 

    SystemSoundID aSoundID; 

/* Setup */ 
    SystemSoundID aSoundID; 
    OSStatus error = 
      AudioServicesCreateSystemSoundID((CFURLRef)aFileURL, &aSoundID); 
    if (error == kAudioServicesNoError) { // success 
     _soundID = aSoundID; 
    } 

/* Play */ 
    AudioServicesPlaySystemSound(aSoundID); 

/* Dispose */ 
    AudioServicesDisposeSystemSoundID(aSoundID); 

Sie AudioServicesSetProperty können Sie einstellen, zwei Eigenschaften, die diese Funktion verwenden.

Sie sind: kAudioServicesPropertyIsUISound = 'Isui', kAudioServicesPropertyCompletePlaybackIfAppDies = 'ifdi'

kAudioServicesPropertyIsUISound, wenn es auf 1 gesetzt ist, bedeutet, dass für die Audiodatei durch ein System festgelegt in der inSpecifier bestanden Ton Parameter berücksichtigt der System Sound Server die Benutzereinstellung in der Einstellung Sound Effects und ist lautlos, wenn der Benutzer Soundeffekte ausschaltet.

Diese Eigenschaft ist standardmäßig auf 1 festgelegt. Setzen Sie den Wert auf 0, damit der Systemsound immer an AudioServicesPlaySystemSound weitergegeben wird, unabhängig von der Einstellung des Benutzers in den Soundeinstellungen.

kAudioServicesPropertyCompletePlaybackIfAppDies, wenn es auf 1 gesetzt ist, bedeutet, dass die Audiodatei von einem System in parametrierbaren inSpecifier geben klingen sollte beenden, auch wenn die Client-Anwendung zu spielen beendet. Dies kann zum Beispiel passieren, wenn der Benutzer beendet wird oder die Anwendung unerwartet beendet wird, während der Sound wiedergegeben wird.Der Standardwert ist 0. Das heißt, Sie müssen den Wert dieser Eigenschaft explizit auf 1 setzen, wenn der Sound vollständig abgespielt werden soll, selbst wenn die Anwendung beendet wird.

EDIT: Beim Re-Lektüre Ihrer Frage, es scheint, kann es sein, „Wie kann ich eine Eigenschaft“ als „was hat das tun“ In diesem Fall wird folgendes nützlicher sein:

Angenommen, stellen Sie den Ton, wie ich oben angegeben, können Sie dies insbesondere SystemSoundID Objekt einstellen könnten die „stille“ -Einstellung auf der Seite des Telefons zu ignorieren, indem Sie folgendermaßen vorgehen:

UInt32 flag = 0; 
err = AudioServicesSetProperty(kAudioServicesPropertyIsUISound, 
           sizeof(UInt32), 
           &aSoundID, 
           sizeof(UInt32), 
           &flag); 
0

ich konnte nicht bekommen die App, um den Ton im unbeaufsichtigten Modus abzuspielen, obwohl kAudioServicesPropertyIsUISound wie von mmc vorgeschlagen eingestellt wurde.

Jeder andere hat Glück dabei?