Wenn Sie API-Level 8 und höher (Android 2.2) anvisieren können, dann schauen Sie sich die AudioManager und zwar requestAudioFocus()
mit AUDIOFOCUS_GAIN_TRANSIENT
y AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
y abandonAudioFocus()
.
Diese geben dem gerade abgespielten Musik-Stream Hinweise darauf, dass Ihre App einen kurzen Ton abspielen möchte. Wenn Sie AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
mit requestAudioFocus()
können Sie einen schönen Effekt erzielen, bei dem die bereits laufende Musik pausiert, Ihr Ton abgespielt wird und die laufende Musik wieder eingeblendet wird, wenn Sie die abandonAudioFocus()
.
Dies funktioniert gut mit den integrierten Media-Playern auf den 2.2-Geräten, mit denen ich es ausprobiert habe (Samsung Galaxy S Wi-Fi und HTC Wildfire). Ich habe es nicht ausgiebig mit anderen Musikwiedergabe-Apps ausprobiert, aber es funktioniert zumindest mit Spotify und ist der offizielle Weg, um genau das zu tun, was Sie tun möchten.
Beachten Sie, dass Sie selbst herausfinden müssen, wann Sie anrufen müssen abandonAudioFocus()
da die meisten Töne asynchron abgespielt werden. Glücklicherweise können sowohl MediaPlayer
y TextToSpeech
Rückrufmechanismen bereitstellen, damit sie Ihnen einen Hinweis geben können, wenn sie mit der Wiedergabe Ihres Tons fertig sind (dies ist nicht in Bezug auf SoundPool
Das ist also eher lästig, wenn man den Audio-Fokus verwenden will).