【问题标题】:Android - play the same sound from the beginning at each button clickAndroid - 在每次单击按钮时从头开始播放相同的声音
【发布时间】:2015-04-29 06:56:19
【问题描述】:

我用按钮和声音文件 (mp3) 创建简单的代码, 现在,当我按下按钮时,声音文件正在播放,但如果我按下它几次(快速),它只是在播放第一次点击,直到 mp3 结束......我希望每次点击都播放从一开始的声音。

public class TrafficLightsActivity extends Activity implements OnClickListener {


private ImageButton Upbutton ;
private ImageButton Downbutton ;
private ImageView Image ;

private MediaPlayer mp1 ;
private MediaPlayer mp2 ;


int counter=5 ;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.traffic_lights);


    Upbutton = (ImageButton) findViewById (R.id.button1) ;
    Downbutton = (ImageButton) findViewById (R.id.button2) ;
    Image = (ImageView) findViewById(R.id.imageView1) ;

    mp1 = MediaPlayer.create(this, R.raw.nextsound) ;
    mp2 = MediaPlayer.create(this, R.raw.backsound) ;



    Upbutton.setOnClickListener(this) ; 
    Downbutton.setOnClickListener(this) ; }

@Override
    public void onClick(View v) {



        if (Upbutton == v){
            if (mp1.isPlaying()){
                mp1.stop() ;
            }
            counter= counter+1 ;
            System.out.println("Number of clicks is: " + counter) ;
            mp1.start();


        }   }

【问题讨论】:

  • 尝试 mp1 = MediaPlayer.create(this, R.raw.nextsound) ; mp2 = MediaPlayer.create(this, R.raw.backsound) ;内部按钮点击

标签: android button


【解决方案1】:

您可以调用seekTo(0) 方法,该方法可以让声音从头开始重放,而无需完成声音:

if (Upbutton == v){
        if(mp1.isPlaying())
            mp1.seekTo(0);
        mp1.start();
    } 

【讨论】:

    【解决方案2】:

    试试这个方法

    @Override
    public void onClick(View v) {
    
       if(mp1!=null){
    
             try{
    
    
                    mediaPlayer.stop();
                    mediaPlayer=null;
                    mediaPlayer.release();
    
                }
                }
                catch(IllegalStateException e){
    
                    //System.out.println(e);
                }
                catch(Exception e){
    
                    //System.out.println(e);
                }
     else{
    
        mp1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    
            @Override
            public void onPrepared(MediaPlayer mp) {
                // TODO Auto-generated method stub
    
    
                mp.start();
    
            }
        });
    
    
        mp1.setOnCompletionListener(new      MediaPlayer.OnCompletionListener() {             
    
        @Override
        public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
            mp.release();
        }
    });
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多