2009-07-25 10 views
2

Es scheint, dass es nicht möglich ist, einen WarntonPlay-Alarm Ton (Vibrieren) Während Audioqueue ist die Aufnahme

AudioServicesPlayAlertSound (kSystemSoundID_Vibrate) zu spielen;

während die AudioQueue zur Audioaufnahme verwendet wird. Ist das korrekt? Vielleicht mache ich etwas falsch. Gibt es eine Möglichkeit, dies zu tun, außer die Aufnahme anzuhalten?

TIA.

+0

Ich bin gespannt, ob die Vibration als Ton in der Audioaufnahme auftauchen würde. –

Antwort

4

Aus dem Lesen von Apples Entwicklerforen behaupten einige Entwickler, dies sei ein Fehler, der eingereicht wurde. Wenn Sie Ihren Sitzungstyp auf kAudioSessionCategory_PlayAndRecord einstellen, sollte es funktionieren. Tut es aber nicht.

+0

Ich werde Ihnen diesen Titel vergeben, wenn Sie den Forum-Beitrag, auf den Sie sich beziehen, als Referenz verwenden. –

+0

Der spezifische Beitrag ist: https://devforums.apple.com/message/79080 – justinb

0

Nur eine wilde Vermutung, aber ist Ihre Audiositzung auf kAudioSessionCategory_PlayAndRecord eingestellt?

+0

Ok. Also fügte ich das dem AudioQueue-Initialisierungscode hinzu: UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (audioCategory), & audioCategory); aber ich habe immer noch das gleiche Problem, z.B. playalertound bewirkt nicht, dass das Gerät während der Aufnahme vibriert. Irgendwelche anderen Gedanken? Danke. –

1

Versuchen Sie folgendes:

UInt32 category = kAudioSessionCategory_PlayAndRecord; 
status |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category); 
UInt32 allowMixing = true; 
status |= AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, // 1 
            sizeof(allowMixing),         // 2 
            &allowMixing);           // 3 
status |= AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck, // 1 
            sizeof(allowMixing),         // 2 
            &allowMixing);          // 3 

Die letzten beiden AudioSessionSetProperty Anrufe in der 3.0 OS neu sind. Dadurch kann ich während der Aufnahme sowohl Töne spielen als auch vibrieren.

+0

jede Lösung, die jetzt in der neuesten SDK funktioniert? – rahulg

1

Ich habe versucht, was sehugg vorgeschlagen, aber kein Glück? Aktivierst du es so?

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; 
UInt32 doSetProperty = 1; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty); 
AudioSessionSetProperty (kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(doSetProperty), &doSetProperty); 
[[AVAudioSession sharedInstance] setActive: YES error: nil]; 
0

Der Sound ist sehr ruhig, da die SDK leitet den Ton über den Hörerlautsprecher, wenn Sie die VAudioSessionCategoryPlayAndRecord aktivieren. Dies dient vermutlich dazu, eine Rückkopplung in der Aufzeichnung zu verhindern. Sie müssen die Audio-Route im PlayAndRecord-Modus manuell überschreiben, um die Ausgabe erneut an den Lautsprecher zu senden. Etwas wie das:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, 
            sizeof(UInt32), &audioRouteOverride); 
Verwandte Themen