Jouer à BG de la Musique à Travers des Activités dans Android
Bonjour! D'abord le temps de poser une question sur stackoverflow. Passionnant! Haha.
Nous sommes en train de développer un jeu Android et nous jouer une musique de fond pour notre intro (nous avons une Intro de l'Activité) mais nous voulons continuer à jouer à la prochaine Activité, et peut-être en mesure d'arrêter ou de jouer de la musique à partir de n'importe où dans l'application.
Ce que nous faisons en ce moment est de jouer le bgm utilisation du lecteur multimédia à notre Intro de l'Activité. Cependant, nous nous arrêtons à la musique dès que l'utilisateur quitte cette Activité. Devons-nous utiliser quelque chose comme Services? Ou est-MediaPlayer/SoundPool assez? Si quelqu'un connaît la réponse, nous l'aurions volontiers reconnaissants de votre partage avec nous. Merci!
- Je viens d'être confronté au même problème, et je me demandais comment savoir quand arrêter la musique? Si vous arrêtez le service onDestroy puis il va l'arrêter entre les sousactivités - comment savez-vous quand la dernière activité de jeu est fermé pour arrêter la musique?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également créer un service qui jouer de la musique à l'aide du lecteur multimédia comme ci-dessous.
Créer un statique SoundManager en utilisant soit des SoundPools ou MediaPlayers.
Créer un statique indicateur appelé keepMusicGoing.
Commencer la musique lors de la première activité est créée.
Lors de la commutation de données défini keepMusicGoing de vrai.
Sur le onStop cas de vos activités de vérifier si keepMusicGoing est vrai,si oui laissez la musique, puis définissez keepMusicGoing à false.
Si elles appuyez sur le bouton d'accueil de l'keepMusicGoing drapeau sera faux si la musique s'arrête lorsque l'activité perd le focus.
M'envoyer un Email et je peux vous envoyer quelques SoundManagers que j'ai écrit on utilise MediaPlayers et les autres SoundPools
Tchad
Si je comprends votre situation correctement, puis j'ai confronté au même problème de temps en temps. Je suis en utilisant un thread différent à jouer de la musique dans mes applications. Cette mise en œuvre passe par un point de référence fixe à un Contexte que je sais qu'il sera en vie pour le moment que la musique se joue.
Vous pouvez essayer d'utiliser le AsyncPlayer mais vous devez garder une référence à la classe afin d'arrêter la lecture du son.
Vous pouvez créer une Uri d'une ressource locale à l'aide de
Uri uri = Uri.parse("android.resource://com.stackoverlof.android/raw/
.beep.mp3");
Espère que cette aide.
J'ai d'abord utilisé la méthode pour garder un "keepMusicPlaying" drapeau fournis par le Tchad. Je pense que c'est plus élégant d'utiliser le démarrage et onStop méthodes de votre activitys.
Créer une classe "SoundManager" et d'appeler certains onStart et onStop des catégories à partir de tous vos activitys onStart et onStop (ou utiliser une base de l'activité de la classe). Garder une trace de la onStart et onStop avec un startCounter(startCounter++ dans onstart et startCounter-- dans onstop). Parce que le début d'une nouvelle activité est appelée avant la onStop de l'ancienne activité, vous savez toujours si le démarrage est appelé pour la première Fois (startCounter == 1) ou a commencé à partir d'une autre de votre activitys (startCounter == 2). Même avec la onStope(startCounter == 0 signifie que l'Application a été fermée, startCounter == 1 signifie que l'arrêt d'une activité ancienne, mais il y a une nouvelle).
De cette façon, vous encapsuler le tout dans votre SoundManager au lieu d'avoir à appeler quelques keepMusicPlaying de la méthode/de l'indicateur sur toutes les activités commencer à l'intérieur de votre application.