我一直在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;
}
}