mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 20:03:05 +02:00
Merge pull request #4270 from hssm/audio-record-fixes
Fix audio recording not saving and cases where recorder stops
This commit is contained in:
commit
81c1a836f0
@ -195,6 +195,19 @@ public class AudioView extends LinearLayout {
|
||||
if (mRecord != null) {
|
||||
mRecord.update();
|
||||
}
|
||||
if (mRecorder != null && mStatus == Status.RECORDING) {
|
||||
mRecorder.stop();
|
||||
mStatus = Status.IDLE;
|
||||
if (mOnRecordingFinishEventListener != null) {
|
||||
mOnRecordingFinishEventListener.onRecordingFinish(AudioView.this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void notifyReleaseRecorder() {
|
||||
if (mRecorder != null) {
|
||||
mRecorder.release();
|
||||
}
|
||||
}
|
||||
|
||||
protected class PlayPauseButton extends ImageButton {
|
||||
@ -396,13 +409,7 @@ public class AudioView extends LinearLayout {
|
||||
|
||||
case RECORDING:
|
||||
setImageResource(mResRecordStopImage);
|
||||
mRecorder.stop();
|
||||
mStatus = Status.IDLE; // Back to idle, so if play
|
||||
// pressed, initialize player
|
||||
notifyStopRecord();
|
||||
if (mOnRecordingFinishEventListener != null) {
|
||||
mOnRecordingFinishEventListener.onRecordingFinish(AudioView.this);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -162,18 +162,21 @@ public class MultimediaEditFieldActivity extends AnkiActivity
|
||||
switch (item.getItemId()) {
|
||||
case R.id.multimedia_edit_field_to_text:
|
||||
Timber.i("To text field button pressed");
|
||||
mFieldController.onFocusLost();
|
||||
toTextField();
|
||||
supportInvalidateOptionsMenu();
|
||||
return true;
|
||||
|
||||
case R.id.multimedia_edit_field_to_image:
|
||||
Timber.i("To image button pressed");
|
||||
mFieldController.onFocusLost();
|
||||
toImageField();
|
||||
supportInvalidateOptionsMenu();
|
||||
return true;
|
||||
|
||||
case R.id.multimedia_edit_field_to_audio:
|
||||
Timber.i("To audio button pressed");
|
||||
mFieldController.onFocusLost();
|
||||
toAudioField();
|
||||
supportInvalidateOptionsMenu();
|
||||
return true;
|
||||
|
@ -44,6 +44,7 @@ public class BasicAudioFieldController extends FieldControllerBase implements IF
|
||||
*/
|
||||
private String tempAudioPath;
|
||||
private String origAudioPath;
|
||||
private AudioView mAudioView;
|
||||
|
||||
|
||||
@Override
|
||||
@ -74,10 +75,9 @@ public class BasicAudioFieldController extends FieldControllerBase implements IF
|
||||
}
|
||||
}
|
||||
|
||||
AudioView audioView = AudioView.createRecorderInstance(mActivity, R.drawable.av_play, R.drawable.av_pause,
|
||||
mAudioView = AudioView.createRecorderInstance(mActivity, R.drawable.av_play, R.drawable.av_pause,
|
||||
R.drawable.av_stop, R.drawable.av_rec, R.drawable.av_rec_stop, tempAudioPath);
|
||||
|
||||
audioView.setOnRecordingFinishEventListener(new AudioView.OnRecordingFinishEventListener() {
|
||||
mAudioView.setOnRecordingFinishEventListener(new AudioView.OnRecordingFinishEventListener() {
|
||||
@Override
|
||||
public void onRecordingFinish(View v) {
|
||||
// currentFilePath.setText("Recording done, you can preview it. Hit save after finish");
|
||||
@ -85,22 +85,27 @@ public class BasicAudioFieldController extends FieldControllerBase implements IF
|
||||
mField.setHasTemporaryMedia(true);
|
||||
}
|
||||
});
|
||||
layout.addView(audioView, LinearLayout.LayoutParams.FILL_PARENT);
|
||||
layout.addView(mAudioView, LinearLayout.LayoutParams.FILL_PARENT);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDone() {
|
||||
mAudioView.notifyStopRecord();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFocusLost() {
|
||||
mAudioView.notifyReleaseRecorder();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
mAudioView.notifyReleaseRecorder();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -178,6 +178,11 @@ public class BasicImageFieldController extends FieldControllerBase implements IF
|
||||
setPreviewImage(mField.getImagePath(), getMaxImageSize());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFocusLost() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDone() {
|
||||
|
@ -317,6 +317,11 @@ public class BasicTextFieldController extends FieldControllerBase implements IFi
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFocusLost() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param context
|
||||
|
@ -62,6 +62,8 @@ public interface IFieldController {
|
||||
// called back on result.
|
||||
void onActivityResult(int requestCode, int resultCode, Intent data);
|
||||
|
||||
// Called when the controller has stopped showing the field in favor of another one
|
||||
void onFocusLost();
|
||||
|
||||
// Is called to apply in the field new data from UI.
|
||||
void onDone();
|
||||
|
Loading…
Reference in New Issue
Block a user