diff --git a/OsmAnd/res/drawable-v21/progress_photo_circular.xml b/OsmAnd/res/drawable-v21/progress_photo_circular.xml
new file mode 100644
index 0000000000..04165bdc0f
--- /dev/null
+++ b/OsmAnd/res/drawable-v21/progress_photo_circular.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OsmAnd/res/drawable/progress_photo_circular.xml b/OsmAnd/res/drawable/progress_photo_circular.xml
new file mode 100644
index 0000000000..7e0a4cb693
--- /dev/null
+++ b/OsmAnd/res/drawable/progress_photo_circular.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OsmAnd/res/layout/recording_note_fragment_fullscreen.xml b/OsmAnd/res/layout/recording_note_fragment_fullscreen.xml
index 05c5be3d9f..9098c51b4f 100644
--- a/OsmAnd/res/layout/recording_note_fragment_fullscreen.xml
+++ b/OsmAnd/res/layout/recording_note_fragment_fullscreen.xml
@@ -21,6 +21,13 @@
+
+
-
+ android:layout_gravity="center_vertical">
+
+
+
+
+
+
fragmentRef = findMenuFragment();
if (fragmentRef != null) {
@@ -54,6 +74,7 @@ public class AudioVideoNoteRecordingMenuFullScreen extends AudioVideoNoteRecordi
centerButtonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ stopProgress();
finishRecording();
}
});
@@ -82,4 +103,58 @@ public class AudioVideoNoteRecordingMenuFullScreen extends AudioVideoNoteRecordi
}
return null;
}
+
+ public void showFinalPhoto(final byte[] data, long duration) {
+ setImage(data);
+ imageview.setVisibility(View.VISIBLE);
+ viewfinder.setVisibility(View.GONE);
+
+ startProgress(duration);
+ }
+
+ public void hideFinalPhoto() {
+ stopProgress();
+
+ AudioVideoNotesPlugin.CurrentRecording recording = plugin.getCurrentRecording();
+ boolean show = showViewfinder && recording != null && recording.getType() != AudioVideoNotesPlugin.AVActionType.REC_AUDIO;
+ imageview.setVisibility(View.GONE);
+ progressBar.setVisibility(View.INVISIBLE);
+ viewfinder.setVisibility(show ? View.VISIBLE : View.GONE);
+ }
+
+ private void startProgress(long duration) {
+ stopProgress();
+
+ progressBar.setProgress(0);
+ ViewCompat.setAlpha(progressBar, 1f);
+ progressBar.setVisibility(View.VISIBLE);
+
+ animatorCompat = AnimatorCompatHelper.emptyValueAnimator();
+ final Interpolator interpolator = new LinearInterpolator();
+ animatorCompat.setDuration(duration);
+ animatorCompat.setTarget(progressBar);
+ animatorCompat.addUpdateListener(new AnimatorUpdateListenerCompat() {
+ @Override
+ public void onAnimationUpdate(ValueAnimatorCompat animation) {
+ float fraction = interpolator.getInterpolation(animation.getAnimatedFraction());
+ progressBar.setProgress((int)(500 * fraction));
+ }
+ });
+ animatorCompat.start();
+ }
+
+ private void stopProgress() {
+ if (animatorCompat != null)
+ animatorCompat.cancel();
+ }
+
+ private void setImage(final byte[] data) {
+ Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);
+ DisplayMetrics dm = new DisplayMetrics();
+ getMapActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
+
+ //imageview.setMinimumHeight(dm.heightPixels);
+ //imageview.setMinimumWidth(dm.widthPixels);
+ imageview.setImageBitmap(bm);
+ }
}
diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java
index c677a60fc2..16a2c7feb1 100644
--- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java
+++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java
@@ -137,9 +137,10 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
public static final int AV_CAMERA_FOCUS_INFINITY = 3;
public static final int AV_CAMERA_FOCUS_MACRO = 4;
public static final int AV_CAMERA_FOCUS_CONTINUOUS = 5;
- // shoto shot:
+ // photo shot:
private static int shotId = 0;
private SoundPool sp = null;
+ public static final int FULL_SCEEN_RESULT_DELAY_MS = 5000;
public final CommonPreference AV_CAMERA_PICTURE_SIZE;
public final CommonPreference AV_CAMERA_FOCUS_TYPE;
@@ -1909,6 +1910,9 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
}
}
+ if (recordingMenu != null) {
+ recordingMenu.showFinalPhoto(data, FULL_SCEEN_RESULT_DELAY_MS);
+ }
startPhotoTimer();
}
}
@@ -1923,7 +1927,7 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
public void run() {
finishPhotoRecording(false);
}
- }, 4000);
+ }, FULL_SCEEN_RESULT_DELAY_MS);
}
private void cancelPhotoTimer() {
@@ -1940,6 +1944,9 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
try {
cam.cancelAutoFocus();
cam.stopPreview();
+ if (recordingMenu != null) {
+ recordingMenu.hideFinalPhoto();
+ }
cam.startPreview();
internalShoot();