试图在同一按钮上为我的录音机实现播放/暂停功能



我一直在stackoverflow搜索与我的问题相关的答案,但到目前为止还没有找到任何东西。这是我的代码片段,我不确定我是否在正确的轨道上与我的onClick方法在onCreate,因为我是相对较新的Java。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    duration = (TextView) findViewById(R.id.audioDuration);
    seekbar = (SeekBar) findViewById(R.id.seek_bar);
    outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";
    Button b1 = (Button) findViewById(R.id.btnRecord);
    b1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    startRecording();
                    break;
                case MotionEvent.ACTION_UP:
                    stopRecording();
                    seekbar.clearAnimation();
                    break;
            }
            return false;
        }
    });
    final Button play = (Button) findViewById(R.id.play);
    play.setOnClickListener(new View.OnClickListener(){
        @Override
            public void onClick(View view){
        }
    });
} 
    public void playRecording(View view){
    try{
        mediaPlayer.setDataSource(outputFile);
    }
    catch(IOException e){
        e.printStackTrace();
    }
    try{
        mediaPlayer.prepare();
    }
    catch (IOException e){
        e.printStackTrace();
    }
    mediaPlayer.start();
    timeElapsed = mediaPlayer.getCurrentPosition();
    durationHandler.postDelayed(updateSeekBarTime, 100);
    Toast.makeText(getApplicationContext(), "Playing Audio..", Toast.LENGTH_LONG).show();
}

这很简单-只需添加一个play.setText("Play/Pause")。对于你的代码,你可以这样做-

final Button play = (Button) findViewById(R.id.play);
boolean isPlaying = false;
play.setOnClickListener(new View.OnClickListener(){
    @Override
        public void onClick(View view){
        if (isPlaying) {
           play.setText("Pause");
           isPlaying = false;
           //ADD CODE TO PAUSE HERE
        } else {
           play.setText("Play");
           isPlaying = true;
           //ADD CODE TO PLAY HERE
        }
    }
});

有问题就问。此外,如果这对你有效,请将此答案标记为selected

是的,你在正确的轨道上,你可以把布尔字段放在你的类,并检查它是否像这样播放

public void onClick(View view){
      if(playing){
        //pause
        playing = false;
      }
      else{
        //play
        playing = true;
      }
}

最新更新