2009-07-20 3 views
1

Ich habe eine App mit verschiedenen Ansichten. Das Hauptmenü hat keine Sounds, aber die nächsten Ansichten spielen Sounds mit der AVAudioPlayer-Klasse.Standardmethode zum Hinzufügen von Sound zu einer iPhone App (globale Lautstärkeanzeige)

Also, wenn jemand die App startet und ist in dem Hauptmenü, wenn er die Lautstärke auf seinem Gerät ändert, ändert er tatsächlich die „Ringer“ Volumen. Wenn er zu den anderen Ansichten weitergeht (wo wir Ton haben), wenn er die Lautstärke auf dem Gerät ändert, ändert er das Volumen des Spiels, nicht der Wecker.

Gibt es eine Möglichkeit, sie haben die App-Volumen jedes Mal, von Anfang meiner App, bevor ich irgendwelche Instanzen von AVAudioPlayer ?? (einige missverstanden das. Was ich meine, ist das Quadrat, dass das Betriebssystem überlagert auf dem Bildschirm jedes Mal drücken Sie die Lautstärketasten. Wenn Sie auf dem Startbildschirm sind, ändern Sie den "Klingelton". Wenn Sie in einem Spiel sind Ändern Sie die Lautstärke der App).

PS: Ich initialisiere die AudioSession auf meinem Hauptmenü, aber das macht keinen Unterschied. Die einzige hack Ich habe gefunden, ist eine Instanz von AVAudioPlayer in meinem Hauptmenü erstellen und legen Sie es auf "preparedToPlay". Aber ich würde lieber hören, was die anderen machen (eine richtige Lösung).

Antwort

0

Es gibt eine Klasse namens MPVolumeView, die für diesen Zweck verwendet wird. Hier ist ein good link explaining the use of MPVolumeView

Wenn Sie MPVolumeView zu Ihrer Ansicht hinzufügen, wird ein iPod ähnlicher Lautstärkeregler erstellt, der sich ändert, wenn Sie die Lautstärke mit den Wipptasten ändern. Der Wert wird automatisch von der AVAudioPlayer-Klasse verwendet.

Um den Überblick über Lautstärke zu halten, ohne den Schieber

Die Wipp-Tasten standardmäßig nur die App Lautstärke ändern, wenn einige Audio abgespielt wird. Es gibt eine Problemumgehung für dieses Problem - this SO thread behandelt einige Problemumgehungen.

+0

Ich denke, meine Frage ist missverstanden ... Ich muss es wahrscheinlich umformulieren ... Ich möchte den Benutzern keinen Schieberegler geben, um die Lautstärke zu ändern. Aber wenn sie die Lautstärke ändern (von den Tasten auf der Seite des Gerätes) möchte ich das "App Volume" anstelle der "Ruftonlautstärke" ändern. – Dimitris

+0

Ok. siehe bearbeitete Antwort – lostInTransit

+0

Ah, ok. Also mein * Hack * ist eigentlich was andere auch machen ... Danke. – Dimitris

1

Die Lautstärketasten wirken sich auf die Ruftonlautstärke aus, wenn Ihre Anwendung gerade kein Audio wiedergibt. Einige Apps umgehen dies, indem sie eine stille Audiodatei abspielen. Überlegen Sie sich jedoch genau, wie Sie das tun: Passt die App-Lautstärke an, wenn sie tatsächlich nicht wirklich nützlich ist?

Es scheint, als ob Sie tun können, was Sie wollen, indem Sie die AudioSession-Eigenschaften ändern, aber ich habe nicht herausgefunden, wie (wenn es möglich ist).

+0

Das ist, was ich dachte, aber für meine App denke ich, dass die Standard-AudioSession die beste ist, also ändere ich nichts. Wie bei Ihrem ersten Absatz ist es sehr nützlich, die Lautstärke von Audiodaten auch dann ändern zu können, wenn sie gerade nicht abgespielt wird. Stellen Sie sich eine App vor, die kurze Pieptöne abspielt - Sie müssten Ihren Finger mit den Pieptönen absenken ihr Volumen ...). – Dimitris

Verwandte Themen