1

私は初心者です。オーディオの再生を再生し、ボタンを1つだけ停止しようとしましたが、現在問題が発生しています。

オーディオの再生中にボタンをタッチすると、オーディオが再度再生されても停止せず、二重の音が鳴ります。

これが私のコードです

public class ProjectisengActivity extends Activity{
    ImageButton mainkan;
    MediaPlayer mp;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test2);

        mainkan=(ImageButton)findViewById(R.id.imageButton1);
        mainkan.setOnClickListener(new OnClickListener(){
             @Override
            public void onClick(View v){

                go();
             }

            });

         public void go(){
    mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
    if(mp.isPlaying()){
        mp.stop();
        try {
            mp.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mp.seekTo(0);
}
    else {
    mp.start();

    }

私はAndroid3.0(HoneyComb)用に作成しています

4

4 に答える 4

2

go関数で以下のコードを試してください。

public void go() {
  if(mp == null) {
    mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);
  }

  if(mp.isPlaying()){
    mp.stop();
    try {
        mp.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mp.seekTo(0);
  }
  else {
   mp.start();
  }
}
于 2012-10-05T09:44:59.370 に答える
2

簡単です。これを実現するには、次の手順に従う必要があります。

  1. test2.xmlで、startとstopという名前の2つのボタンを作成します。

  2. android:visibilityxmlファイルで停止ボタンの属性を設定します。

  3. 次に、アクティビティでこれら2つのボタンのIDを取得し、メディアプレーヤーを開始および停止するためのコードを記述します。

  4. 開始クリックで表示属性を設定し、停止ボタンを表示し、停止クリックでその反対を実行します。

于 2012-10-05T09:52:31.393 に答える
1

私はあなたがこの行を間違っていると思います:

 mp=MediaPlayer.create(ProjectisengActivity.this, R.raw.test);

ユーザーがボタンをクリックするたびに新しいインスタンスを作成するため、インスタンスが再生されることはなく、再開されます。この行をonCreateではなくに入れてくださいgo()

于 2012-10-05T09:36:29.247 に答える
0

これも試してみてください

public class MainActivity extends Activity {
    MediaPlayer mPlayer;
    int flag = 0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button mButton = (Button) findViewById(R.id.button1);

        mButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                if (flag == 0) {
                    Log.v("Inside if", "Success" + "");
                    mPlayer = MediaPlayer.create(getApplicationContext(),
                            R.raw.sample);
                    mPlayer.start();
                    flag++;
                } else {
                    Log.v("Inside else", "Success" + "");
                    mPlayer.stop();
                    mPlayer.release();
                    flag = 0;
                }


            }

        });
    }



}
于 2012-10-05T09:46:40.420 に答える