From 818bdf40a737a56df149c0ee7d91aefe2d5b87b1 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Thu, 28 Nov 2019 21:35:17 +0100 Subject: [PATCH] Add option to see RAW result through share option --- demo/src/main/AndroidManifest.xml | 19 ++++++- .../demo/PicturePreviewActivity.java | 57 ++++++++++++++++++- .../cameraview/demo/VideoPreviewActivity.java | 36 +++++++++++- demo/src/main/res/drawable/ic_share.xml | 5 ++ demo/src/main/res/menu/share.xml | 8 +++ demo/src/main/res/values/styles.xml | 3 - demo/src/main/res/xml/filepaths.xml | 4 ++ 7 files changed, 124 insertions(+), 8 deletions(-) create mode 100644 demo/src/main/res/drawable/ic_share.xml create mode 100644 demo/src/main/res/menu/share.xml create mode 100644 demo/src/main/res/xml/filepaths.xml diff --git a/demo/src/main/AndroidManifest.xml b/demo/src/main/AndroidManifest.xml index 77976f9a..e7e1162e 100644 --- a/demo/src/main/AndroidManifest.xml +++ b/demo/src/main/AndroidManifest.xml @@ -15,7 +15,6 @@ @@ -24,9 +23,23 @@ - + + + - + + + diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java index 0c0b803c..18321413 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java @@ -1,23 +1,36 @@ package com.otaliastudios.cameraview.demo; import android.app.Activity; +import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.net.Uri; import android.os.Bundle; import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.FileProvider; import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; import android.widget.ImageView; import android.widget.Toast; +import com.otaliastudios.cameraview.CameraUtils; +import com.otaliastudios.cameraview.FileCallback; import com.otaliastudios.cameraview.size.AspectRatio; import com.otaliastudios.cameraview.BitmapCallback; import com.otaliastudios.cameraview.PictureResult; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; -public class PicturePreviewActivity extends Activity { + +public class PicturePreviewActivity extends AppCompatActivity { private static PictureResult picture; @@ -78,4 +91,46 @@ public class PicturePreviewActivity extends Activity { setPictureResult(null); } } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.share, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == R.id.share) { + Toast.makeText(this, "Sharing...", Toast.LENGTH_SHORT).show(); + String extension; + switch (picture.getFormat()) { + case JPEG: extension = "jpg"; break; + case DNG: extension = "dng"; break; + default: throw new RuntimeException("Unknown format."); + } + File file = new File(getFilesDir(), "picture." + extension); + CameraUtils.writeToFile(picture.getData(), file, new FileCallback() { + @Override + public void onFileReady(@Nullable File file) { + if (file != null) { + Context context = PicturePreviewActivity.this; + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("image/*"); + Uri uri = FileProvider.getUriForFile(context, + context.getPackageName() + ".provider", + file); + intent.putExtra(Intent.EXTRA_STREAM, uri); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + startActivity(intent); + } else { + Toast.makeText(PicturePreviewActivity.this, + "Error while writing file.", + Toast.LENGTH_SHORT).show(); + } + } + }); + return true; + } + return super.onOptionsItemSelected(item); + } } diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java index 1d26fcc9..a37192cc 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java @@ -1,22 +1,33 @@ package com.otaliastudios.cameraview.demo; import android.app.Activity; +import android.content.Context; +import android.content.Intent; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.FileProvider; import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.MediaController; +import android.widget.Toast; import android.widget.VideoView; +import com.otaliastudios.cameraview.CameraUtils; +import com.otaliastudios.cameraview.FileCallback; import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.size.AspectRatio; +import java.io.File; -public class VideoPreviewActivity extends Activity { + +public class VideoPreviewActivity extends AppCompatActivity { private VideoView videoView; @@ -97,4 +108,27 @@ public class VideoPreviewActivity extends Activity { setVideoResult(null); } } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.share, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == R.id.share) { + Toast.makeText(this, "Sharing...", Toast.LENGTH_SHORT).show(); + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("video/*"); + Uri uri = FileProvider.getUriForFile(this, + this.getPackageName() + ".provider", + videoResult.getFile()); + intent.putExtra(Intent.EXTRA_STREAM, uri); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + startActivity(intent); + return true; + } + return super.onOptionsItemSelected(item); + } } diff --git a/demo/src/main/res/drawable/ic_share.xml b/demo/src/main/res/drawable/ic_share.xml new file mode 100644 index 00000000..f37b0d49 --- /dev/null +++ b/demo/src/main/res/drawable/ic_share.xml @@ -0,0 +1,5 @@ + + + diff --git a/demo/src/main/res/menu/share.xml b/demo/src/main/res/menu/share.xml new file mode 100644 index 00000000..bb3236e7 --- /dev/null +++ b/demo/src/main/res/menu/share.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/demo/src/main/res/values/styles.xml b/demo/src/main/res/values/styles.xml index d1cf4963..5885930d 100644 --- a/demo/src/main/res/values/styles.xml +++ b/demo/src/main/res/values/styles.xml @@ -8,7 +8,4 @@ @color/colorAccent -