0

私はアンドロイドプログラミングの初心者です。私の最初のアプリケーションは、Android メディア プレーヤーです。

2 つのボタンを作成しました。1 つは曲を再生するボタンで、もう 1 つは曲を停止するボタンです。

私のアプリケーションは正しく動作しています。問題は、再生して停止することはできますが、曲を再度再生できないことです。

使用しようとしましsetDataSource()たが、エラーが発生します。

コードは次のとおりです。ファイルはraw/song.mp3

    package com.example.test6;

    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.View;
    import android.widget.Button;

    public class MainActivity extends Activity {

    MediaPlayer mp; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

    setContentView(R.layout.activity_main);
     final Button btnPlay = (Button)this.findViewById(R.id.button1);
    final Button btnStop = (Button)this.findViewById(R.id.button2);

    btnPlay.setOnClickListener(new View.OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {
                mp.start();

        }
    });

    btnStop.setOnClickListener(new View.OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {       
                mp.stop();
                mp.reset();
        if(mp.isPlaying()){
                mp.stop();
                }else{

        mp.setDataSource("res/raw/song.mp3");
            mp.prepare();
            mp.start();                    
        }               
    }); 
   }    
}
4

1 に答える 1

0

まず、次のように作成する場合は、データ ソースを手動で設定する必要はありMediaPlayer.create(this, R.raw.song);ません。prepare()MediaPlayer.create()

この種のアプローチをお勧めします(すでに再生中の場合、スタートボタンで何もしたくないと仮定します):

開始ボタン リスナー:

if (mp==null) {
     mp = MediaPlayer.create(this, R.raw.song);
}
if (!mp.isPlaying()) {
     mp.start();
}

停止ボタン リスナー:

if (mp!=null) {
     if (mp.isPlaying()) {
          mp.stop();
     }
     mp.release();
     mp = null;
}

私はこれをテストしていないので、あなたの反応を楽しみにしています

于 2013-02-26T08:08:58.767 に答える