Android的MediaPlayer的停止和播放 [英] Android MediaPlayer Stop and Play

查看:199
本文介绍了Android的MediaPlayer的停止和播放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建Android应用程序包含了2个按钮,在点击每个按钮扮演的MP3文件。 问题是,当我玩按钮1 小青 Sound1例子,当我点击按钮2 小青 SOUND2

I'm creating Android application contains 2 buttons, on click on each button play a mp3 file. The problem is when I play button1 it plays sound1, when I click button2 it plays sound2.

我检查每个按钮上的其他球员,如果它的工作,我停止和播放点击一个

I check on each button the other player if it's working and I stop it and play the clicked one

不过,如果我点击同一按钮两次,它是保持第一音频播放的背景下,再次扮演另一个

But If I click on same button twice it's keep first audio playing in the background and play another one again

我试图检查 IsPlaying模块(),并阻止它,但它不工作!

I tried to check isPlaying() and to stop it, but it doesn't work!

我想如果我点击按钮1 发挥它 Sound1例子,如果点击它再次就停止和播放再次从开始。

I want If I click on button1 it play sound1 and if clicked on it again it stop it and play it again from beginning.

我的code:

package com.hamoosh.playaudio;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class PlayaudioActivity extends Activity {
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b= (Button) findViewById(R.id.button1);
        Button b2= (Button) findViewById(R.id.button2);
        final TextView t= (TextView) findViewById(R.id.textView1);

        final MediaPlayer mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.far);
        final MediaPlayer mp1 = MediaPlayer.create(PlayaudioActivity.this, R.raw.beet);

        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (mp1.isPlaying()) {

                    mp1.stop();
                }

                mp.start();
            }

        });

        b2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (mp.isPlaying()) {

                    mp.stop();
                }
                mp1.start();
            }
        });
    }
}

希望有没有什么更好的code,可以使用多个按钮的数组或东西不检查每一个按钮,玩家每一次。

Hope if there any better code that can use multiple buttons as an array or something to not check each button and player every time.

推荐答案

您应该只使用一个MediaPlayer对象

You should use only one mediaplayer object

    public class PlayaudioActivity extends Activity {

        private MediaPlayer mp;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button b = (Button) findViewById(R.id.button1);
            Button b2 = (Button) findViewById(R.id.button2);
            final TextView t = (TextView) findViewById(R.id.textView1);

            b.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    stopPlaying();
                    mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.far);
                    mp.start();
                }

            });

            b2.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    stopPlaying();
                    mp = MediaPlayer.create(PlayaudioActivity.this, R.raw.beet);
                    mp.start();
                }
            });
        }

        private void stopPlaying() {
            if (mp != null) {
                mp.stop();
                mp.release();
                mp = null;
           }
        }
    }

这篇关于Android的MediaPlayer的停止和播放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆