android - 应用关闭时如何停止MediaPlayer的声音?

标签 android audio media-player main-activity

我有三个问题。

  • 如何切换/关闭应用程序/ Activity 时MediaPlayer的声音停止?
  • 当我按下sound2时,如何使sound1停止?
  • 如何停止一个按钮并播放声音?我的意思是,当我按下一次button1时,声音开始,再次按下他时,声音停止,依此类推。

  • 我已经尝试过了,但是没有用。

    这是我的MainActivity:
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    
    
            Button button1;
            Button button2;
            boolean w;
            boolean b;
    
            private MediaPlayer mp;
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                button1 = (Button) findViewById(R.id.button1);
                button2= (Button) findViewById(R.id.button2);
                w = true;
                b = true;
        //Button1
                button1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(b == true){
                        mp= MediaPlayer.create(MainActivity.this, R.raw.song1);
                        mp.start();
                            b = false;
                    }else{
                            mp.stop();
                            b = true;
                        }
    
                    }
                });
        //Button 2
                button2.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(w == true){
    
                            mp= MediaPlayer.create(MainActivity.this, R.raw.sound2);
                            mp.start();
                            w = false;
                        }else{
                            mp.stop();
                            w = true;
    
                    }}
                });
            }
        //Stopping the sound when switching or closing the App
            @Override
            public void onPause() {
                mp.stop();
                super.onPause();
            }
    
    
    
    }
    

    你能告诉我如何解决我的问题吗?

    我是Android Studio的新用户,对我的英语不好表示歉意:)

    最佳答案

    答案似乎很简单:保留对媒体播放器的引用。就目前而言,您每次都创建一个新的MediaPlayer。但是您还应该注意MediaPlayer的状态,这很挑剔。

    采取以下示例流程:

  • 启动应用程序> [mp = null,b = false,w = false]
  • 单击按钮1> [mp = instance1,b = true,w = false]> [instance1正在播放]
  • 单击按钮2> [mp = instance2,b = true,w = true]> [instance1在播放,instance2在播放]
  • 单击按钮1> [mp = instance2,b = false,w = true]> [instance1正在播放,instance2已停止]
  • 暂停应用程序> [mp = instance2,b = false,w = true]> [instance1正在播放,instance2已停止]

  • 暂停播放时,将媒体播放器release()也很重要

    关于android - 应用关闭时如何停止MediaPlayer的声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461888/

    相关文章:

    android - 如何检索从 Google Glass 安装的 apk 文件?

    java - 如何在类内部执行从类内部适配器访问的内部类

    Android RTSP - MediaPlayer 初始化失败/PVMFFailure

    android - VideoView内联/全屏模式切换

    android - Mediaplayer 准备显示非法状态异常

    android - 检查Android中的颜色是深还是浅

    audio - FFMPEG amix过滤器音量问题与不同持续时间的输入

    android - Android中的虚拟合成器(基于jar) - 原生jni?

    algorithm - 如何对采样音频信号进行频谱反转

    android - 您可以从命令行检查项目的 Android Gradle 插件版本吗?