开发者

Android Service controlling MediaPlayer

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.开发者_JAVA百科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();

    }

}


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.


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.


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);


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);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜