Android pour jouer de la musique et de s'arrêter sur Pause et Stop
Je suis la mise en œuvre de MediaPlayer classe dans mon application et je veux de la musique jouée sur le fond, j'ai donc utilisé le Service au lieu de l'Activité ou BroadcastReciever. Maintenant, le problème est, si l'utilisateur existe pas ou la mettre en pause l'application, jouer de la musique sans arrêt. J'ai fait ajouter onStop et onPause méthodes, mais le problème tient. Et je ne peux pas appeler super.onPause() la méthode comme je le fais dans l'Activité de la classe.
Après quelques recherches, j'ai découvert le maintient en service actif même application des pauses ou des arrêts.(Je ne sais pas c'est vrai), mais avec mon expérience, je pense que c'est vrai. Que dois-je faire? J'ai cherché sur google et stackoverflow pour une réponse, mais ne pouvait pas obtenir une réponse.
Voici un code.
package in.isuru.animation;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
public class PlayMusic extends Service{
private static final String TAG = null;
MediaPlayer player;
public void onCreate(){
super.onCreate();
Log.d(TAG, "Music service started onCreate()");
player = MediaPlayer.create(this, R.raw.oh_holy_night);
player.setLooping(true);
//player.setVolume(100, 100);
}
public int onStartCommand(Intent intent, int flags, int startId){
player.start();
Log.d(TAG, "Player started!");
if(player.isLooping() != true){
Log.d(TAG, "Player not playing any file.");
}
return 1;
}
public void onStart(Intent intent, int startId){
}
public IBinder onUnBinder(Intent arg0){
return null;
}
public void onStop(){
player.stop();
player.release();
}
public void onPause(){
player.stop();
player.release();
}
public void onDestroy(){
player.stop();
player.release();
Log.d(TAG, "Player destroyed");
}
public void onLowMemory(){
player.release();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
}
Vous devez vous connecter pour publier un commentaire.
Tout d'abord que vous n'aurez jamais la possibilité de faire quelque chose de long cours d'exécution dans un BroadcastReceiver parce que le système ne sera pas comme vous.
Donc je suis un peu confus. Vous voulez de la musique à jouer dans l'arrière-plan de sorte que vous utilisé un Service. Qui est correct.
Mais maintenant, vous dire que lorsque l'utilisateur quitte ou des pauses de votre activité de la musique est toujours en cours de lecture? Eh bien oui, il va, n'est-ce pas la raison pour laquelle vous le mettez dans un Service pour commencer??
Vous avez 2 options. Vous pouvez déplacer les appels pour démarrer et arrêter votre lecteur multimédia dans onStart()/onResume() et onPause()/onStop() de votre activité. Qui ne fera que jouer de la musique lorsque l'Activité a l'avant-plan.
Votre deuxième option est de conserver la MediaPlaying dans le Service. Toutefois, vous aurez besoin d'envoyer une Intention à votre Service pour laisser savoir quand arrêter de jouer de la musique. La meilleure façon todo, ce pack est un PendingIntent à donner au Gestionnaire de Notification qui va commencer une Activité qui a des boutons sur elle que va faire une pause et de jouer votre musique. Si vous ne fournissez pas une façon pour l'utilisation de reprendre une Activité qui contrôle un service alors votre musique sera diffusée à la fin et l'utilisateur n'aura pas une belle façon de l'éteindre.
Service
arrêter quand je minimiser l'application ou de la détruire, mais pas lorsque je passe à un autreActivity
? Je veux de la musique à jouer tout au long de mon application.Le problème est la communication.
Vous avez utilisé
player.start()
dansonStartCommand()
,d'où le service peut démarrer la lecture.Arrêter/mettre en pause la musique n'a jamais été communiqués au Service et donc le problème.