android - 在 MediaPlayer App 中播放音乐的服务或 Activity

标签 android android-activity android-service android-mediaplayer

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

我的应用程序中有 Fragments,当我点击音乐列表中的其中一项时,我想播放一首歌曲,但我真的不知道我应该使用这两种技术中的哪一种用于让音乐即使在导航过程中或应用程序外也能继续播放。

在播放歌曲时启动一个新的 Activity 然后保持 Activity 运行或启动一个 Service 等待一些更好吗事件?

提前致谢。

最佳答案

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

i) 使用前端可视化您的应用(例如选择要播放的音乐、暂停、转发和其他功能)

ii) 启动在后台运行的服务,即使 Activity 已关闭,它也会在后台继续 Activity 进程..

您可以通过实现以下 -> 来完成此操作 ->

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

我认为这对您有所帮助..

关于android - 在 MediaPlayer App 中播放音乐的服务或 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22035392/

相关文章:

android - 模拟 Android 的低网络连接

java - LayoutResultCallback() 在 LayoutResultCallback 中不公开;生成pdf时无法从外部包错误访问

java - Android - 抽屉导航实现 Activity 更改

java - Android 最佳实践 - 重构一个大的 Activity 类

android - IntentService - 查找队列中等待的 Intents 数量

android - 通过 Backendless 中的 API 在 GeoPoint 半径范围内搜索,从用户表中检索用户名列表

Java 2 Objective-C NSArray

java - Android 在调用 FragmentTransaction Replace 方法时崩溃?

java - 从 Activity 与服务进行通信

java - Android开发者文档IntentService : Are we defining the same class twice?