首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当按下back按钮或其他音频按钮时,如何停止mediaPlayer?

当按下back按钮或其他音频按钮时,如何停止mediaPlayer?
EN

Stack Overflow用户
提问于 2019-03-29 20:29:38
回答 1查看 57关注 0票数 0

我对android程序有问题。我想告诉你这个问题。我有几个扣子。当我们点击它们时,播放机正在运行。但是在先前的声音结束后,这个声音就不会播放了。另外,当我们按后退按钮时,它会等待声音结束,然后执行后退按钮的功能。

我添加了onBackPressed和onPause。但是这个程序在第一部音频播放之后失败了。

代码语言:javascript
复制
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class officeSounds extends AppCompatActivity implements View.OnClickListener{

    ImageButton sofitukker,millieturner,jacobbanks,jameshersey;
    MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //fullscreen - start
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //fullscreen - end
        setContentView(R.layout.activity_office_sounds);

        sofitukker=findViewById(R.id.sofitukker);
        sofitukker.setOnClickListener(this);
        millieturner=findViewById(R.id.millieturner);
        millieturner.setOnClickListener(this);
        jacobbanks=findViewById(R.id.jacobbanks);
        jacobbanks.setOnClickListener(this);
        jameshersey=findViewById(R.id.jameshersey);
        jameshersey.setOnClickListener(this);
    }
    public void onClick(View view){
        switch(view.getId()){
            case R.id.sofitukker:
                mp = MediaPlayer.create(this, R.raw.sofitukkersound);
                break;
            case R.id.millieturner:
                mp = MediaPlayer.create(this, R.raw.millieturnersound);
                break;
            case R.id.jacobbanks:
                mp = MediaPlayer.create(this, R.raw.jacobbankssound);
                break;
            case R.id.jameshersey:
                mp = MediaPlayer.create(this, R.raw.jamesherseysound);
                break;
            default:
                return;
        }

        mp.start();
        while (mp.isPlaying()) {
        }
        mp.release();

    }
}

我想停止以前的声音时,后退按钮和一个不同的声音被切换。

编辑:当我在while (mp.isPlaying()) { //here }中添加开关-case语句时,

应用程序不期望声音结束。结合了声音。当第二声音被按下后,第一声音被按下,第二声音在按住第一声音之前播放。所以这两种声音在一起播放了一段时间。

EN

回答 1

Stack Overflow用户

发布于 2019-03-29 21:17:51

您可以尝试每次单击屏幕时添加mp.release(),这样播放媒体就会自动发布:

代码语言:javascript
复制
public void onClick(View view){
    mp.release();
    switch(view.getId()){
        case R.id.sofitukker:
            mp = MediaPlayer.create(this, R.raw.sofitukkersound);
            break;
        case R.id.millieturner:
            mp = MediaPlayer.create(this, R.raw.millieturnersound);
            break;
        case R.id.jacobbanks:
            mp = MediaPlayer.create(this, R.raw.jacobbankssound);
            break;
        case R.id.jameshersey:
            mp = MediaPlayer.create(this, R.raw.jamesherseysound);
            break;
        default:
            return;
    }

并将其添加到back按下方法(如果不需要保留mp,则更喜欢使用mp.stop() ):

代码语言:javascript
复制
@Override
public void onBackPressed() {
mp.release();
}

MediaPlayer安卓

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55425066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档