1

ボタンがあります。クリックすると音楽が再生されます。2 回目にクリックすると音楽が停止します。

 Button two = (Button)this.findViewById(R.id.button2);
            final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);
            two.setOnClickListener(new OnClickListener(){

                public void onClick(View v) {
                    mp2.start();
                }
            });  

わかりました、これは機能します:

Button one = (Button)this.findViewById(R.id.button1);
    final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.n);
    one.setOnClickListener(new OnClickListener(){

        @Override
            public void onClick(View v) {
            if (mp1.isPlaying()) {
                mp2.pause();
                } 
                else {
                mp2.start();
            }
        ;
    }});

その上に一時停止があるものは機能しますが、音楽を停止したい場合は機能しません。以下が機能しない:

@Override
        public void onClick(View v) {
        if (mp1.isPlaying()) {
            mp2.stop();
            } 
            else {
            mp2.start();
        }
    ;
}});

エラーが発生しました: 状態 0 エラーで呼び出された開始
(-38, 0)

4

9 に答える 9

1

これは、私が音楽の開始と停止に使用したものです。MediaPlayer を再生用に準備する必要があります。注: これにより、停止した場所から音楽が開始されます。

Mediaplayer prepare() メソッド

音楽をストリーミングしている場合は、 prepareAsync () を使用する必要があります

musicButton = (Button) findViewById(R.id.btn_dj_player);
    musicButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mp.isPlaying()) {//check if a song is already playing
                mp.stop();
                try {
                    mp.prepare();//get the mediaplayer reeady for playback
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }else {
                mp.start();
            }
        }   
    });
于 2014-04-26T13:32:46.507 に答える
0

この問題を手動で解決しました。サウンドが再生されている場合は、サウンドを begin(seekTo(0)) にラップしてから、サウンドを一時停止しました。サウンドが既に一時停止されている場合は、 seekTo(0) のみが呼び出されます。

 public void onClick(View v) {
       if(mp.isPlaying()){
          mp.seekTo(0);
          mp.pause();
        }
        else{
            mp.seekTo(0);
        }
    }    ;
于 2015-05-06T15:21:57.933 に答える
0

私は次のようにこれを達成しました:

ブール変数を宣言しました:

boolean isButtonClicked = false;

次に、次のようなメソッドで if else を設定します。

initPlaySound()
{
    if(isButtonClicked)
    {
       player.start();
    } else{
       player.stop();
}

最後に、メソッド内でボタンの onClick を設定します。

button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            isButtonClicked = !isButtonClicked;
            initPlaySound();
        }
    });

基本的に、ボタンが最初にクリックされると、ブール値は現在の状態の反対に設定され (false から true)、if 内のコードが実行されます。ボタンがもう一度クリックされると、ブール値が再び反対に設定され (true から false)、サウンドが停止します。

于 2014-06-03T01:58:21.197 に答える
0

機能を使ってみましたseekTo()か?

何かのようなもの:

if (mp.isPlaying()) {
            mp.stop();
            mp.prepareAsync();
            mp.seekTo(0);
        } else {
            mp.start();
        }
    }

ここは推測ですが、調べてみる価値はあると思います。:-)

于 2014-01-04T18:34:49.237 に答える