Android 在MediaPlayer应用程序中播放音乐的服务或活动

Android 在MediaPlayer应用程序中播放音乐的服务或活动,android,android-activity,android-service,android-mediaplayer,Android,Android Activity,Android Service,Android Mediaplayer,我想自己为Android开发一个媒体播放器,但我有一个概念问题:我应该只为播放器使用服务还是活动 我的应用程序中有片段,我想在单击音乐列表中的一个项目时播放一首歌曲,但我真的不知道应该使用这两种技术中的哪一种,即使在导航或应用程序外,也可以让音乐继续播放 在播放歌曲时启动新活动,然后保持活动运行或启动服务等待某些事件是否更好 提前感谢。如果您想在后台播放音乐,您一定要使用该服务。仅将活动用于与UI相关的操作。因为播放音乐不是与用户界面相关的操作,所以应该在服务中完成。请看这里:如果你想在后台播放

我想自己为Android开发一个媒体播放器,但我有一个概念问题:我应该只为播放器使用服务还是活动

我的应用程序中有片段,我想在单击音乐列表中的一个项目时播放一首歌曲,但我真的不知道应该使用这两种技术中的哪一种,即使在导航或应用程序外,也可以让音乐继续播放

在播放歌曲时启动新活动,然后保持活动运行或启动服务等待某些事件是否更好


提前感谢。

如果您想在后台播放音乐,您一定要使用该服务。仅将活动用于与UI相关的操作。因为播放音乐不是与用户界面相关的操作,所以应该在服务中完成。请看这里:

如果你想在后台播放音乐,你一定要使用这项服务。仅将活动用于与UI相关的操作。因为播放音乐不是与用户界面相关的操作,所以应该在服务中完成。请看这里:

您的应用程序的最佳解决方案可能是

我将你的应用程序与前端可视化,比如选择要播放的音乐、暂停、转发和其他功能

ii启动在后台运行的服务,即使活动已关闭,该服务仍在后台继续活动进程

您可以通过实现以下功能来完成此任务->

public class MyService extends Service implements MediaPlayer.OnPreparedListener {
    private static final String ACTION_PLAY = "com.example.action.PLAY";
    MediaPlayer mMediaPlayer = null;
    public int onStartCommand(Intent intent, int flags, int startId) {
        ...
        if (intent.getAction().equals(ACTION_PLAY)) {
            mMediaPlayer = ... // initialize it here
            mMediaPlayer.setOnPreparedListener(this);
            mMediaPlayer.prepareAsync(); // prepare async to not block main thread
        }
    }

    /** Called when MediaPlayer is ready */
    public void onPrepared(MediaPlayer player) {
        player.start();
    }
}

我认为这对您有一定帮助。

您的应用程序的最佳解决方案可能是

我将你的应用程序与前端可视化,比如选择要播放的音乐、暂停、转发和其他功能

ii启动在后台运行的服务,即使活动已关闭,该服务仍在后台继续活动进程

您可以通过实现以下功能来完成此任务->

public class MyService extends Service implements MediaPlayer.OnPreparedListener {
    private static final String ACTION_PLAY = "com.example.action.PLAY";
    MediaPlayer mMediaPlayer = null;
    public int onStartCommand(Intent intent, int flags, int startId) {
        ...
        if (intent.getAction().equals(ACTION_PLAY)) {
            mMediaPlayer = ... // initialize it here
            mMediaPlayer.setOnPreparedListener(this);
            mMediaPlayer.prepareAsync(); // prepare async to not block main thread
        }
    }

    /** Called when MediaPlayer is ready */
    public void onPrepared(MediaPlayer player) {
        player.start();
    }
}

我认为这对你有帮助。

使用将在后台运行的服务使用将在后台运行的服务