如何在Android应用程序的后台播放音乐?

Sak*_*nis 3 java service android background

我希望在我的应用程序中,无论应用程序中发生什么,都可以播放音乐。我正在尝试使用Service. 这是MyService.class

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

public class MyService extends Service implements MediaPlayer.OnPreparedListener {

    MediaPlayer mMediaPlayer = null;
    private static final String ACTION_PLAY = "com.example.action.PLAY";

    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    public int onStartCommand(Intent intent, int flags, int startId) {

        if (intent.getAction().equals(ACTION_PLAY)) {
            mMediaPlayer = MediaPlayer.create(this, R.raw.theme_song);
            mMediaPlayer.setOnPreparedListener(this);
            mMediaPlayer.prepareAsync(); // prepare async to not block main thread
            return 1;
        } else {
            return 0;
        }
    }

    public void onPrepared(MediaPlayer player) {
        player.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

您能否帮助我了解我如何Service在 MyActivity 中使用以及需要在MyService.class 中定义哪些其他方法才能获得正确的结果。

Mr.*_*lar 7

public class BackGroundMusic extends Service {
    MediaPlayer mediaPlayer;
    AudioManager audioManager;
    int volume;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        mediaPlayer = MediaPlayer.create(this, R.raw.tune);
        mediaPlayer.start();
        return super.onStartCommand(intent, flags, startId);
    }


    @Override
    public boolean stopService(Intent name) {

        return super.stopService(name);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mediaPlayer.stop();
        mediaPlayer.release();
        mediaPlayer = null;

    }
}
Run Code Online (Sandbox Code Playgroud)

如果你需要播放音乐

startService(new Intent(MainActivity.this, BackGroundMusic.class))
Run Code Online (Sandbox Code Playgroud)

如果你想停止音乐

stopService(new Intent(MainActivity.this, BackGroundMusic.class)).. 
Run Code Online (Sandbox Code Playgroud)