【问题标题】:How to pause/stop music when home or back button is pressed?按下主页或返回按钮时如何暂停/停止音乐?
【发布时间】:2018-09-04 19:08:52
【问题描述】:

这是我的代码。我对 Java 很陌生,我知道这个问题已经发布,但我仍然没有得到预期的前哨,所以我不得不发布。

public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final MediaPlayer policeSound = MediaPlayer.create(this, R.raw.police);
        Button policeSounds = (Button) this.findViewById(R.id.police);
        policeSounds.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (policeSound.isPlaying()){
                    policeSound.stop();
                }
                else {
                    policeSound.start();
                }
            }
        });
    }
}

我尝试在其中添加onBackPressed() 代码,但它无法检测到“policeSound”,因为它在之前的方法中被检测到!

还有人请教我如何使用@Override注解!

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    要在其他方法中检测“policeSound”,您需要将其设为类的字段:

    private MediaPlayer policeSound;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        policeSound = MediaPlayer.create(this, R.raw.police);
        Button policeSounds = (Button) this.findViewById(R.id.police);
        policeSounds.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (policeSound.isPlaying()) {
                            policeSound.stop();
                        } else {
                            policeSound.start();
                        }
                    }
                }
        );
    }
    

    【讨论】:

    • 非常感谢 Oleh 的回复!
    • @VipulPriyadarshi 如果你觉得我的回答有用,请投票
    • 正如你所说,我把它作为一个类的字段,它工作得很好。按下后退按钮会暂停音乐,如果再次按下重新打开应用程序,它就会播放。但对于主页按钮或最近按钮,情况并非如此,按下它们后音乐会暂停,但如果我再次打开应用程序并按下播放按钮,它不会播放,直到应用程序关闭或从最近的应用程序中删除并再次启动。仅供参考,我正在使用 onPause() 和 onStop() 方法。
    • @VipulPriyadarshi 请用新案例创建新问题并在那里发布您的新代码
    【解决方案2】:

    在您的代码中,policeSound 是一个局部变量,仅在 Oncreate() 方法中可见,正如 Oleh Sokolov 所说,您应该将 policeSound 声明为类的字段.

    关于@Override,你可以see this good explanation

    在android studio中,当你在java类文件中按下ctrl + o时,你可以重写超类方法,IDE会自动为你添加@Override

    【讨论】:

    • 哦,是的!感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多