oncompletionlistener mediaplayer插入代码中

时间:2014-09-22 19:14:19

标签: android android-mediaplayer

我想在下面的程序中添加onCompletionlistener mediaplayer,所以当我的音频完成后,它应该通过Toast通知,texthow应该设置为" &#34 ;. 但它不会损坏我的代码,反之亦然。

package project.kalmas;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class one extends Activity {
    MediaPlayer mp=null;
    TextView textshow; 
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.one);


     }

     public void onclick2(View view)
     {
         Intent i=new Intent("project.two");
         startActivity(i);
     }

                public void onclick3(View view) {
                     textshow=(TextView)findViewById(R.id.textshow);
                    if (mp == null) {
                        mp = MediaPlayer.create(one.this, R.raw.one);
                        mp.start();
                        Toast.makeText(getBaseContext(), "Playing", Toast.LENGTH_SHORT).show();
                        textshow.setText("Playing...");
                        textshow.setTextColor(Color.GREEN);
                    } else {
                        mp.stop();
                        mp = null;
                        Toast.makeText(getBaseContext(), "Stopped", Toast.LENGTH_SHORT).show();
                        textshow.setText("Stopped...");
                        textshow.setTextColor(Color.RED);
                    }

}
}

2 个答案:

答案 0 :(得分:0)

通过创建MediaPlayer.OnCompletionListener侦听器来执行此操作:

MediaPlayer.OnCompletionListener completionListener
                      = new MediaPlayer.OnCompletionListener(){    
    @Override
    public void onCompletion(MediaPlayer arg0) {
     // TODO Auto-generated method stub
      // set TextView text here
      // show Toast here
   }
};

通过调用MediaPlayer将其设为setOnCompletionListener

mp = MediaPlayer.create(one.this, R.raw.one);
mp.setOnCompletionListener(completionListener);
mp.start();

答案 1 :(得分:0)

这是我编辑过的东西所建议的更新代码。
包project.kalmas;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class one extends Activity {
    MediaPlayer mp=null;
    TextView textshow;

     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.one);


     }
        MediaPlayer.OnCompletionListener completionListener
        = new MediaPlayer.OnCompletionListener(){    
         @Override
    public void onCompletion(MediaPlayer arg0) {

    textshow.setText(" ");
    Toast.makeText(getBaseContext(), "Finished", Toast.LENGTH_SHORT).show();
}
};

     public void onclick2(View view)
     {
         Intent i=new Intent("project.two");
         startActivity(i);
     }

                public void onclick3(View view) {
                     textshow=(TextView)findViewById(R.id.textshow);
                    if (mp == null) {
                        mp = MediaPlayer.create(one.this, R.raw.one);
                        mp.start();
                        Toast.makeText(getBaseContext(), "Playing", Toast.LENGTH_SHORT).show();
                        textshow.setText("Playing...");
                        textshow.setTextColor(Color.GREEN);
                    } else {
                        mp.stop();
                        mp = null;
                        Toast.makeText(getBaseContext(), "Stopped", Toast.LENGTH_SHORT).show();
                        textshow.setText("Stopped...");
                        textshow.setTextColor(Color.RED);
                    }               
                    mp = MediaPlayer.create(one.this, R.raw.one);
                    mp.setOnCompletionListener(completionListener);
                    mp.start();

}
}