【问题标题】:Making Sound Button stop after start启动后使声音按钮停止
【发布时间】:2014-04-02 08:24:53
【问题描述】:

我需要一个在按下时会启动并在再次按下时停止的按钮。否则我有重叠的声音。你们中的任何人都可以帮我写代码吗?下面是我目前拥有的,当再次单击时无法让按钮停止,所以目前它只是在播放并在声音完成时停止,导致声音重叠。当另一个被按下时让一个停止也是理想的,但我不知道如何轻松地合并它。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_boardone);

    Button one = (Button) findViewById(R.id.button1);
    one.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MediaPlayer mp = MediaPlayer.create(BoardoneActivity.this, R.raw.mouse_laughter);  
            mp.start();

        }
    });

    Button two = (Button) findViewById(R.id.button2);
    two.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MediaPlayer mp = MediaPlayer.create(BoardoneActivity.this, R.raw.evil_laugh);  
            mp.start();
        }
    });

【问题讨论】:

  • 试试下面的代码,让我知道它是否有效。

标签: android button audio


【解决方案1】:

不要使用两个媒体播放器对象。 Bleow 是我项目中方法的 sn-p。如果有任何错误让我知道。

private MediaPlayerManager mRecordingPlayer = null;



        private void initAudioPlayer(){
        if(mRecordingPlayer == null){
            mRecordingPlayer = new MediaPlayerManager();

        }
    }


        private void playMusic(int position){
        initAudioPlayer();
        mRecordingPlayer.resetPlayer();
        mRecordingPlayer.setupPlayback("your reasource");
        mRecordingPlayer.startPlaying();
    }

       private void stopPlaying(){
        initAudioPlayer();
        if(mRecordingPlayer.isPlaying()){
            mRecordingPlayer.pausePlaying();

        }

    }


    @Override
    public void onPause() {
        clearAudioPlayer();
        super.onPause();
    }


    private void clearAudioPlayer(){
        if(mRecordingPlayer != null ){
            mRecordingPlayer.resetPlayer();
        }
    }


   @Override
    public void onClick(View view) {

        boolean on = ((ToggleButton) view).isChecked();
            if(on){
                playMusic("play music");
                ((ToggleButton) view).setChecked(true);
            }else{
                stopPlaying();
            }

    }

【讨论】:

  • 您好,谢谢您的回复,我已经尝试过您的方法 Innocent,不确定 Ranjith 关于录音。我正在创建一个音板。我试着玩弄代码,但仍然没有。你能用我的代码来举个例子吗?我已经花了几个小时,仍然无法弄清楚这一点,而且 Youtube 上没有任何内容。谢谢你们的帮助。我真的希望你们中的一个人能为我完成这项工作。
【解决方案2】:

用下面的代码试试吧。

mPlayPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (mp.isPlaying()) {
                    if (mp != null) {
                        mp.pause();
                        mPlayPause.setText("Play");
                    }
                } else {
                    if (mp != null) {
                        mp.start();
                        mPlayPause.setText("Pause");
                    }
                }
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多