Comment Android mediaplayers continuant à jouer des chansons lorsque l'application est fermée?
Vous demandez-vous comment les chansons sont jouées une fois l'application est fermée, comme si le fait de jouer l'intégralité d'un CD ou une liste de lecture...
Par "application est fermée," voulez-vous dire ne s'affiche pas dans le gestionnaire de tâches, ou tout simplement dans le fond?
Je suppose que je veux dire quand il est en arrière-plan.
Je suppose que je veux dire quand il est en arrière-plan.
OriginalL'auteur Metallicraft | 2011-07-12
Vous devez vous connecter pour publier un commentaire.
Les médias joueur ne joue qu'une seule piste audio. Ce joueurs de médias faire, c'est écouter sur le onCompletion événement et lire la piste suivante.
Le MediaPlayer est liée au processus, et non pas l'activité, de sorte qu'il continue à jouer tant que le processus s'exécute. L'activité peut être mise en pause ou détruit, mais qui n'auront pas d'incidence sur le filetage interne, que MediaPlayer utilise.
Je suis en train de construire un lecteur audio pour apprendre Android, vous pouvez voir le service qui joue des fichiers audio ici
modifier
concernant le premier commentaire: Le service de garde en cours d'exécution sur le fond et continue de fonctionner après la "sortie" de l'application, car le cycle de vie du service et des Activités sont différentes.
Pour jouer la piste suivante, le service enregistre une fonction de callback sur le MediaPlayer de sorte que le service est informé lorsqu'un flux audio terminée. Lorsque l'audio est terminée, le service de nettoyage des ressources utilisées par le lecteur multimédia, en appelant MediaPlayer.release(), puis crée un nouveau lecteur multimédia avec la prochaine piste audio pour jouer et s'enregistre à nouveau une notification lorsque que la piste audio est terminée, à l'infini :).
Le MediaPlayer de classe ne comprend pas les listes de lecture, de sorte que le service est responsable de la lecture d'une piste après piste précédente est terminée.
Dans le AudioPlayer de service que j'ai créé, une activité files d'attente des pistes dans l'AudioPlayer et l'AudioPlayer est responsable pour les jouer dans l'ordre.
J'espère que c'est clair et encore une fois, si vous avez un peu de temps, veuillez vérifier le code de AudioPlayer de service que j'ai mis ci-dessus. Ce n'est pas la beauté pure, mais il fait son boulot.
veuillez cochez la case modifier les!
J'ai créé un projet avec un bouton, pas une liste comme vous avez, à essayer ce que vous êtes en train de faire. Il a été très utile. Je n'ai pas fait de la liaison de service avant. Quand je le lance bien et appuyez sur Retour ou d'ouvrir les préférences , ou même la touche d'accueil, le son s'arrête. Est-il quelque chose de spécial à faire, il persister?
Hmm, j'ai des toasts qui affichera téléphone de l'état...ceux qui sont encore tirer bien (même si la musique s'est arrêté). Donc, ce qui semble signifier que le service est encore en cours d'exécution...
OriginalL'auteur Augusto
Vous pouvez créer un Service pour garder le lecteur multimédia à jouer une fois que votre application soit ferme ou qu'elle est en pause. Pour obtenir le MediaPlayer à jouer titres consécutifs, vous pouvez enregistrer un onCompletionListener qui décidera de la piste de lecture. Voici un exemple simple de service qui fait cela:
Vous pouvez démarrer ce Service dans une Activité comme suit:
et de les arrêter comme ceci:
Votre code a l'pistes intégré dans le service, est-ce différent que si il y avait une liste de lecture? Ou pouvez-vous envoyer une liste de chansons dans un tableau ou quelque chose dans le service?
Bien sûr, dans l'esprit de garder l'exemple simple que j'ai juste intégré une liste de pistes dans le Service. Vous pouvez transmettre la liste de lecture/pistes pour le service par l'intermédiaire d'un Bundle, tel que décrit here. Si vous voulais plus élaboré de contrôle, vous pouvez créer une borne de service. Pour comprendre comment ce genre de service diffère le code ci-dessus, la lecture de ceci.
Vous pouvez utiliser le MediaController si vous voulez une interface utilisateur interactive ou vous pouvez rouler votre propre interface utilisateur. Il y a un exemple de code here montrant comment utiliser le MediaController avec un lecteur multimédia.
J'ai vu le MediaController lien que vous avez mentionné. Qui n'utilise pas de lecteur multimédia en tant que service. Si media player est un service, ne mediacontroller (sans doute à l'activité qui a créé le mediaplayer de service) ont un crochet ou quelque chose pour obtenir au mediaplayer? Si l'activité va dans le fond et est ramené à l'avant quelque temps plus tard, ne mediacontroller toujours avoir une "connexion" pour le lecteur multimédia?
OriginalL'auteur jengelsma
mediap joueur doit courir à partir du service, ici, j'ai transmis la liste de tableaux de chansons de l'activité de service et tous les morceaux sont exécutés par la lecture de la liste de tableaux
public class MyService s'étend Service implémente OnCompletionListener,
MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener{
OriginalL'auteur Issac Balaji
La réponse est que les Services en Android comme décrit ici: http://developer.android.com/guide/topics/fundamentals.html comme
Vous allez créer un service et lorsque vous recevez commande de lecture à partir de votre application, votre application va vous envoyer un message de service d'arrière-plan à jouer de la musique. Services ne sont pas exécutés en premier plan, donc même si vous mettez votre écran de veille, il joue de la musique.
Jouer à BG de la Musique à Travers des Activités dans Android
Non, pas du tout. Services de ne pas consommer beaucoup de ressources système, à moins qu'ils travaillent activement. Il peut toujours travailler si vous voulez, même si votre application est à l'arrêt. exemples de services: SMS récepteur d'Alarme.
Je suppose que je devrais avoir formulé différemment. Je veux dire, dans le but de jouer des chansons en continu, créez-vous un service, puis, quand la chanson est terminée, vous détruisez le service et en créer un nouveau pour la prochaine chanson dans la playlist? Ou pouvez-vous vous passer d'une liste de chansons à jouer, et le service reste actif jusqu'à ce que son joué tous?
Vous pouvez passer d'une liste ou vous pouvez envoyer un message "lecture en cours de lecture de musique et de commencer à la place" pour le service. il est tout au sujet de la façon dont vous programme le service. vous ne tuez pas le service. si vous tuez le service. il réapparaît automatiquement. parce que les services sont censés travailler toujours aussi longue que l'app dit qu'il doit être en cours d'exécution.
OriginalL'auteur AhmetB - Google
Veuillez noter que le Service de l'exécuter dans les avant sol.
Veuillez consulter la documentation officielle. Il explique avec un exemple de code.
À l'aide d'un Service avec MediaPlayer:
http://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices
Cours d'exécution comme un avant-plan service
Services sont souvent utilisés pour effectuer des tâches en arrière-plan
Mais prenons le cas d'un service qui joue de la musique. Clairement, c'est un service que l'utilisateur est activement à la connaissance et l'expérience serait gravement touchés par l'interruption. En outre, c'est un service que l'utilisateur sera susceptible de souhaitez interagir au cours de son exécution. Dans ce cas, le service doit s'exécuter en tant que "premier plan". Un premier plan de services titulaire d'un niveau plus élevé de l'importance au sein du système—le système ne sera presque jamais tuer le service, car il est d'une importance immédiate pour l'utilisateur. Lors de l'exécution au premier plan, le service doit également fournir un état de notification de la barre de s'assurer que les utilisateurs sont conscients de l'exécution du service et de leur permettre d'ouvrir une activité qui peut interagir avec le service.
Afin de transformer votre service dans un premier plan de service, vous devez créer une Notification de la barre d'état et appel startForeground() du Service
OriginalL'auteur