diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java index cc1b522..50eedb0 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java @@ -307,10 +307,16 @@ public class RecordingActivity extends AppCompatActivity { } } - RecordingService.startService(this, targetFile.getName(), thread != null); + boolean recording = thread != null; - if (thread != null) + RecordingService.startService(this, targetFile.getName(), recording); + + if (recording) { pitch.record(); + } else { + if (editSample != -1) + edit(true, false); + } } @Override @@ -318,7 +324,7 @@ public class RecordingActivity extends AppCompatActivity { super.onPause(); Log.d(TAG, "onPause"); updateBufferSize(true); - edit(false, true); + editPlay(false); pitch.stop(); } @@ -334,7 +340,10 @@ public class RecordingActivity extends AppCompatActivity { @Override public boolean onTouch(View v, MotionEvent event) { edit(true, true); - editSample = pitch.edit(event.getX()) * samplesUpdate; + float x = event.getX(); + if (x < 0) + x = 0; + editSample = pitch.edit(x) * samplesUpdate; return true; } }); @@ -388,6 +397,7 @@ public class RecordingActivity extends AppCompatActivity { editSample = -1; setState("pause"); editPlay(false); + pitch.edit(-1); pitch.stop(); View box = findViewById(R.id.recording_edit_box); diff --git a/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java b/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java index ec5744d..ccd664c 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java +++ b/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java @@ -64,7 +64,7 @@ public class PitchView extends ViewGroup { Runnable edit; // index - int editPos = 0; + int editPos = -1; boolean editFlash = false; // current playing position in samples float playPos = -1; @@ -176,7 +176,7 @@ public class PitchView extends ViewGroup { right = 1; } - if ((edit != null || play != null) && i >= editPos) + if (editPos != -1 && i >= editPos) p = cutColor; // left channel pitch @@ -185,12 +185,14 @@ public class PitchView extends ViewGroup { canvas.drawLine(x, mid, x, mid + mid * right + 1, p); } - if ((edit != null || play != null) && editFlash) { + // paint edit mark + if (editPos != -1 && editFlash) { float x = editPos * pitchSize + pitchSize / 2f; canvas.drawLine(x, 0, x, getHeight(), editPaint); } - if (play != null && playPos > 0) { + // paint play mark + if (playPos != -1) { float x = playPos * pitchSize + pitchSize / 2f; canvas.drawLine(x, 0, x, getHeight(), playPaint); } @@ -253,10 +255,10 @@ public class PitchView extends ViewGroup { public int getEnd() { int end = data.size() - 1; - if (edit != null) { + if (editPos != -1) { end = editPos; } - if (play != null) { + if (playPos != -1) { end = (int) playPos; } @@ -422,7 +424,6 @@ public class PitchView extends ViewGroup { return db; } - // draw in edit mode public void draw() { graph.invalidate(); current.invalidate(); @@ -489,9 +490,11 @@ public class PitchView extends ViewGroup { public long edit(float offset) { if (offset < 0) - offset = 0; + editPos = -1; + else + editPos = ((int) offset) / pitchSize; - editPos = ((int) offset) / pitchSize; + playPos = -1; if (editPos >= pitchScreenCount) editPos = pitchScreenCount - 1; @@ -554,10 +557,12 @@ public class PitchView extends ViewGroup { if (edit != null) handler.removeCallbacks(edit); edit = null; + editPos = -1; if (play != null) handler.removeCallbacks(play); play = null; + playPos = -1; if (draw == null) { time = System.currentTimeMillis();