当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)

Posted

技术标签:

【中文标题】当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)【英文标题】:How can I stop MediaPlayer when I leave my application, but not when I move to another Activity (Android Studio) 【发布时间】:2020-05-21 10:20:49 【问题描述】:

我正在尝试在 android studio 上制作一个游戏,即使您切换活动,背景音乐也会连续播放,但我希望音乐在用户离开应用程序时停止。我搜索了***,并尝试使用从下面的here 找到的解决方案:

public class BackgroundSoundService extends Service 
    private static final String TAG = null;
    MediaPlayer player;
    public IBinder onBind(Intent arg0) 

        return null;
    
    @Override
    public void onCreate() 
        super.onCreate();
        player = MediaPlayer.create(this, R.raw.idil);
        player.setLooping(true); // Set looping
        player.setVolume(100,100);

    
    public int onStartCommand(Intent intent, int flags, int startId) 
        player.start();
        return 1;
    



    @Override
    public void onDestroy() 
        player.stop();
        player.release();
    


MediaPlayer 在所有活动中播放的声音问题是当我使用主页按钮离开应用程序或仅在我实际关闭帮助时锁定手机时声音不会停止。

如有任何帮助,我们将不胜感激。

【问题讨论】:

检查这些***.com/questions/6559636/… ***.com/questions/8209858/… 【参考方案1】:

您可以使用进程生命周期来监听应用何时进入后台并停止它

    在 build.gradle 中添加依赖项
    implementation "androidx.lifecycle:lifecycle-process:2.2.0"
    创建自定义Application,别忘了在AndroidManifest中声明
    public class CustomApplication extends Application implements LifecycleObserver 
        @Override
        public void onCreate() 
            super.onCreate();
            ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
        

        @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
        public void onAppBackgrounded() 
            // your app come to background
            stopService(new Intent(this, BackgroundSoundService.class));
        

        @OnLifecycleEvent(Lifecycle.Event.ON_START)
        public void onAppForegrounded() 
            // your app come to foreground
        
    

【讨论】:

以上是关于当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)的主要内容,如果未能解决你的问题,请参考以下文章

如何在按下按钮时播放音频并在我的手指离开同一个按钮时立即停止?

离开 UIControllerView 时 MapBox 停止位置

当应用程序被刷掉时服务停止

灯箱关闭时停止并播放 Iframe 视频

如何以编程方式断开播放设备(苹果电视)?

如何通过jQuery停止鼠标离开太快而缩短背景图像过渡