2010-02-19 5 views
6

Tout ce que je veux faire est de simplement contrôler la musique de fond dans mon application via un service afin que je puisse le démarrer et l'arrêter de toute activité.Android Service contrôle MediaPlayer

J'ai tout mis en place parfaitement quand je dis le service à Toast quand il est démarré et détruit mais dès que je mets le jeu média là-bas au lieu Il commence très bien et commence à jouer de la musique, mais dès qu'un clic bouton pour arrêter le service, je reçois une erreur et une force proche. S'IL VOUS PLAÎT quelqu'un m'aider à voir ce que je fais mal .. Je suis assez nouveau pour développer Android, je suppose que ça va être quelque chose de facile.

Voici mon code:

import android.app.Service; 

import android.content.Intent; 

import android.media.MediaPlayer; 

import android.os.IBinder; 

import android.widget.Toast; 

public class MyService extends Service { 

    private MediaPlayer player; 

    @Override 
    public IBinder onBind(Intent intent) { 

     return null; 

    } 

    @Override 
    public void onCreate() { 

     super.onCreate(); 

     Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); 

     MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 

     player.start(); 

     player.setLooping(true); 

    } 

    @Override 
    public void onDestroy() { 

     super.onDestroy(); 

     player.stop(); 

     Toast.makeText(this, "Service Stopped", Toast.LENGTH_SHORT).show(); 

    } 

} 
+0

Pouvez-vous poster l'erreur s'il vous plaît. Il semblerait que vous fermez le service de façon incorrecte :) Mais l'erreur nous dira exactement quoi. – Steve

+0

Vérifiez ma réponse à votre poste en double http://stackoverflow.com/questions/2298817/problem-with-my-android-service-please-help et voir si cela aide – snctln

Répondre

0

onBind méthode renvoie null seulement si elle est un "service local". Si je vous ai bien compris, vous voulez créer un service à distance.

afficher la section de service à distance dans this reference site.

5

player.stop(); ----- cette ligne doit être vous donner nullPointerException.

private MediaPlayer player; Ici, vous créez uniquement une référence.Mais l'objet que vous créez en onCreate() a une portée locale uniquement. Veuillez créer un objet ayant une portée au niveau de la classe, alors cela fonctionnera.

0

Vous avez l'objet joueur déclaré local au OnCreate procédure, retirer la déclaration locale, voir ci-dessous:

//MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 
player = MediaPlayer.create(MyService.this, R.raw.my_music); 
0

Comme écrit ** Rick D ** le problème a été déclaré dans Mediaplayer vous avez déclaré joueur avant, il suffit de mettre:

player = MediaPlayer.create(ForegroundService.this, R.raw.my_music);