2010-02-19 10 views
6

Todo lo que quiero hacer es simplemente controlar la música de fondo en mi aplicación a través de un servicio, así puedo iniciarla y detenerla de cualquier actividad.Servicio Android que controla MediaPlayer

Tengo todo perfectamente configurado cuando le digo al servicio de Toast cuando se inicia y se destruye, pero en cuanto pongo los medios en ese lugar comienza bien y comienza a reproducir la música, pero tan pronto como haga clic en para detener el servicio, recibo un error y una fuerza cercana.

POR FAVOR alguien me ayude a ver lo que estoy haciendo mal .. Soy bastante nuevo en el desarrollo de Android Supongo que va a ser algo fácil.

Aquí está mi código:

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

Puede publicar el error por favor. Parece que estás cerrando el servicio incorrectamente :) Pero el error nos dirá qué exactamente. – Steve

+0

Consulte mi respuesta a su publicación duplicada http://stackoverflow.com/questions/2298817/problem-with-my-android-service-please-help y vea si eso ayuda – snctln

Respuesta

0

onBind método devuelve sólo si se trata de un "servicio local". Si le entiendo correctamente, quiere crear un servicio remoto.

muestran la sección de asistencia remota de this reference site.

5

player.stop(); ----- esta línea debe estar dando nullPointerException.

private MediaPlayer player; aquí está creando solo la referencia. Pero el objeto que está creando en onCreate() tiene alcance local solamente. Por favor crea un objeto que tenga un alcance de nivel de clase, entonces funcionará.

0

Usted tiene el objeto de reproductor declaró local al Procedimiento OnCreate, retire la declaración local, ver más abajo:

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

Como escribió Rick ** D ** el problema fue declarado en reproductor de medios que ha declarado el jugador antes, simplemente ponga:

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