Reputation: 81
All I want to do is simply control background music in my app through a service so I am able to start it and stop it from any activity.
I have everything set up perfectly when I tell the service to Toast when it is started and destroyed but as soon as I put the media playin in there instead It starts fine and starts playing the music but as soon as a click a button to stop the service I get an error and a force close.
PLEASE someone help me see what I am doing wrong.. I am pretty new to android developing I'm guessing it's going to be something easy.
Here is my 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();
}
}
Upvotes: 6
Views: 11214
Reputation: 15
Like wrote ** Rick D** the problem was declared in Mediaplayer you've declared player before, just put:
player = MediaPlayer.create(ForegroundService.this, R.raw.my_music);
Upvotes: 0
Reputation: 1
You have the player object declared local to the OnCreate Procedure, remove the local declaration, see below:
//MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music);
player = MediaPlayer.create(MyService.this, R.raw.my_music);
Upvotes: 0
Reputation: 622
onBind
method returns null only if it is a "Local Service".
If I understand you correctly, you want to create remote service.
show the remote service section in this reference site.
Upvotes: 0
Reputation: 16729
player.stop();
----- this line must be giving you nullPointerException
.
private MediaPlayer player;
here you are creating only reference.But object you are creating in onCreate()
has local scope only. Please create an object having class level scope, then it will work.
Upvotes: 6