播放背景音乐,用户可以停止或重新启动或暂停音乐

Posted

技术标签:

【中文标题】播放背景音乐,用户可以停止或重新启动或暂停音乐【英文标题】:playing background music and the user can stop or restart or pause the music 【发布时间】:2013-05-02 20:55:07 【问题描述】:

我正在开发一个 android 游戏,我为我们的介绍播放了一些背景音乐(我们有一个介绍活动),但我希望它继续播放到下一个活动,并且也许能够从任何地方停止或再次播放音乐在应用程序中。

我已经创建了服务类来做到这一点

一切正常,但我只需要当用户停止播放音乐时媒体播放器保存 getCurrentPosition();这样我就可以播放由 seekTo(msec) 计数的音乐;

重点是如果用户在长度的中间停止音乐,则音乐不会从头开始(就像用户可以暂停音乐并继续音乐)

我用

startService(new Intent(this, MyService.class));

开始音乐

我用

stopService(new Intent(this, MyService.class));

停止音乐

这是我的 MyService 类

public class MyService extends Service 
    private static final String TAG = "MyService";
    MediaPlayer player;

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

    @Override
    public void onCreate() 
        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onCreate");

        player = MediaPlayer.create(this, R.raw.game_music3);
        player.setLooping(false); // Set looping

    

    @Override
    public void onDestroy() 
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
        player.stop();
    

    @Override
    public void onStart(Intent intent, int startid) 
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        player.start();
    

    protected void onNewIntent() 
        player.pause();
    

如果您有任何不清楚的地方,请评论我的问题,我会尽力解释更多 感谢您的帮助

【问题讨论】:

【参考方案1】:

您为什么不尝试将您的音乐曲目的当前位置保存在SharedPreferences 上?

查看 Android 文档中的 Storage options。

【讨论】:

我知道如何保存当前位置以及如何再次播放它,但是当用户播放我调用 startService(new Intent(this, MyService.class ));我对 SharedPreferences 没有任何想法,请您解释一下并感谢您的帮助 @MohammedDwekat 你的答案在我给你的第二个链接上。

以上是关于播放背景音乐,用户可以停止或重新启动或暂停音乐的主要内容,如果未能解决你的问题,请参考以下文章

如何暂停、停止和重置 AUFilePlayer?

如何停止或暂停 SKAction 播放音乐? - 斯威夫特

带背景音乐的 Flutter App(外部)

无法拦截 Siri Remote 上的“暂停”按钮 - 始终停止背景音乐并且从不继续播放

退出/暂停应用程序时如何暂停背景音乐服务?

应用程序运行时如何使用MonoTouch播放背景音乐