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

标签 java android service 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();
    }
}

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

最佳答案

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;

    }
}

如果你需要播放音乐

startService(new Intent(MainActivity.this, BackGroundMusic.class))

如果你想停止音乐

stopService(new Intent(MainActivity.this, BackGroundMusic.class)).. 

关于java - 如何在 Android 应用程序的后台播放音乐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41222671/

相关文章:

安卓 2.2 : How to update textviews automatically with a timer?

linux - Wildfly 服务无法启动

android - Intent 始终为 null onStartCommand

java - 将 List<Object[]> 转换为 JSON

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure - Caused by: java.net.UnknownHostException: null: 未知错误

java - 异常 : org. hibernate.MappingException:实体映射中的重复列

android - 使用 Android API 获取用户代理

android - 揭开这个命令行构建序列的神秘面纱

java - 如何使用java从e​​xcel表中读取数据?

javascript - 变量未定义 : AngularJS