From ae663440952fe0cffcfe4413b7268f045727454d Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 25 Jan 2017 21:22:15 +0100 Subject: reworked videocompression --- .../pixart/messenger/ui/ConversationActivity.java | 70 ++++------------------ .../de/pixart/messenger/ui/ShareWithActivity.java | 35 ++++------- .../ui/ShowFullscreenMessageActivity.java | 35 +++++++---- .../pixart/messenger/ui/UiInformableCallback.java | 5 ++ 4 files changed, 54 insertions(+), 91 deletions(-) create mode 100644 src/main/java/de/pixart/messenger/ui/UiInformableCallback.java (limited to 'src/main/java/de/pixart/messenger/ui') diff --git a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java index a68765632..529c926aa 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationActivity.java @@ -117,7 +117,6 @@ public class ConversationActivity extends XmppActivity final private List mPendingImageUris = new ArrayList<>(); final private List mPendingPhotoUris = new ArrayList<>(); final private List mPendingFileUris = new ArrayList<>(); - final private List mPendingVideoUris = new ArrayList<>(); private String mOpenConversation = null; private boolean mPanelOpen = true; private AtomicBoolean mShouldPanelBeOpen = new AtomicBoolean(false); @@ -674,9 +673,10 @@ public class ConversationActivity extends XmppActivity chooser = true; break; case ATTACHMENT_CHOICE_CHOOSE_VIDEO: - intent.setAction(Intent.ACTION_GET_CONTENT); - intent.setType("video/*"); chooser = true; + intent.setType("video/*"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setAction(Intent.ACTION_GET_CONTENT); break; case ATTACHMENT_CHOICE_TAKE_PHOTO: Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri(); @@ -1370,7 +1370,6 @@ public class ConversationActivity extends XmppActivity private void clearPending() { mPendingImageUris.clear(); mPendingFileUris.clear(); - mPendingVideoUris.clear(); mPendingPhotoUris.clear(); mPendingGeoUri = null; mPostponedActivityResult = null; @@ -1509,11 +1508,6 @@ public class ConversationActivity extends XmppActivity attachPhotoToConversation(getSelectedConversation(), i.next()); } - for (Iterator i = mPendingVideoUris.iterator(); i.hasNext(); i.remove()) { - Log.d(Config.LOGTAG, "ConversationActivity.onBackendConnected() - attaching video to conversations. stopping=" + Boolean.toString(stopping)); - attachVideoToConversation(getSelectedConversation(), i.next()); - } - for (Iterator i = mPendingFileUris.iterator(); i.hasNext(); i.remove()) { Log.d(Config.LOGTAG, "ConversationActivity.onBackendConnected() - attaching file to conversations. stopping=" + Boolean.toString(stopping)); attachFileToConversation(getSelectedConversation(), i.next()); @@ -1659,7 +1653,7 @@ public class ConversationActivity extends XmppActivity } } } - } else if (requestCode == ATTACHMENT_CHOICE_CHOOSE_FILE || requestCode == ATTACHMENT_CHOICE_RECORD_VOICE) { + } else if (requestCode == ATTACHMENT_CHOICE_CHOOSE_FILE || requestCode == ATTACHMENT_CHOICE_RECORD_VOICE || requestCode == ATTACHMENT_CHOICE_CHOOSE_VIDEO) { final List uris = extractUriFromIntent(data); final Conversation c = getSelectedConversation(); final OnPresenceSelected callback = new OnPresenceSelected() { @@ -1682,29 +1676,6 @@ public class ConversationActivity extends XmppActivity } else { selectPresence(c, callback); } - } else if (requestCode == ATTACHMENT_CHOICE_CHOOSE_VIDEO) { - final List uris = extractUriFromIntent(data); - final Conversation c = getSelectedConversation(); - final OnPresenceSelected callback = new OnPresenceSelected() { - @Override - public void onPresenceSelected() { - mPendingVideoUris.clear(); - mPendingVideoUris.addAll(uris); - if (xmppConnectionServiceBound) { - for (Iterator i = mPendingVideoUris.iterator(); i.hasNext(); i.remove()) { - Log.d(Config.LOGTAG, "ConversationActivity.onActivityResult() - attaching video to conversations. CHOOSE_VIDEO"); - attachVideoToConversation(c, i.next()); - } - } - } - }; - if (c == null || c.getMode() == Conversation.MODE_MULTI - || FileBackend.allFilesUnderSize(this, uris, getMaxHttpUploadSize(c)) - || c.getNextEncryption() == Message.ENCRYPTION_OTR) { - callback.onPresenceSelected(); - } else { - selectPresence(c, callback); - } } else if (requestCode == ATTACHMENT_CHOICE_TAKE_PHOTO) { if (mPendingPhotoUris.size() == 1) { Uri uri = FileBackend.getIndexableTakePhotoUri(mPendingPhotoUris.get(0)); @@ -1831,41 +1802,26 @@ public class ConversationActivity extends XmppActivity } final Toast prepareFileToast = Toast.makeText(getApplicationContext(), getText(R.string.preparing_file), Toast.LENGTH_LONG); prepareFileToast.show(); - xmppConnectionService.attachFileToConversation(conversation, uri, new UiCallback() { + xmppConnectionService.attachFileToConversation(conversation, uri, new UiInformableCallback() { @Override - public void success(Message message) { - hidePrepareFileToast(prepareFileToast); - xmppConnectionService.sendMessage(message); - } - - @Override - public void error(final int errorCode, Message message) { + public void inform(final String text) { hidePrepareFileToast(prepareFileToast); runOnUiThread(new Runnable() { @Override public void run() { - replaceToast(getString(errorCode)); + replaceToast(text); } }); - - } - - @Override - public void userInputRequried(PendingIntent pi, Message message) { - hidePrepareFileToast(prepareFileToast); } - }); - } - private void attachVideoToConversation(Conversation conversation, final Uri uri) { - if (conversation == null) { - return; - } - final Toast prepareFileToast = Toast.makeText(getApplicationContext(), getText(R.string.preparing_video), Toast.LENGTH_LONG); - prepareFileToast.show(); - xmppConnectionService.attachVideoToConversation(conversation, uri, new UiCallback() { @Override public void success(Message message) { + runOnUiThread(new Runnable() { + @Override + public void run() { + hideToast(); + } + }); hidePrepareFileToast(prepareFileToast); xmppConnectionService.sendMessage(message); } diff --git a/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java b/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java index 870812cc4..c2cf95241 100644 --- a/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShareWithActivity.java @@ -49,7 +49,6 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer private class Share { public List uris = new ArrayList<>(); public boolean image; - public boolean video; public String account; public String contact; public String text; @@ -66,7 +65,17 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer private Toast mToast; private AtomicInteger attachmentCounter = new AtomicInteger(0); - private UiCallback attachFileCallback = new UiCallback() { + private UiInformableCallback attachFileCallback = new UiInformableCallback() { + + @Override + public void inform(final String text) { + runOnUiThread(new Runnable() { + @Override + public void run() { + replaceToast(text); + } + }); + } @Override public void userInputRequried(PendingIntent pi, Message object) { @@ -86,8 +95,6 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer resId = R.string.shared_images_with_x; } else if (share.image) { resId = R.string.shared_image_with_x; - } else if (share.video) { - resId = R.string.shared_video_with_x; } else { resId = R.string.shared_file_with_x; } @@ -219,7 +226,6 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer this.share.uris.clear(); this.share.uris.add(uri); this.share.image = type.startsWith("image/") || isImage(uri); - this.share.video = type.startsWith("video/") || isVideo(uri); } else { if (subject != null) { this.share.text = format("[%s]%n%s", subject, text); @@ -265,15 +271,6 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer } } - protected boolean isVideo(Uri uri) { - try { - String guess = URLConnection.guessContentTypeFromName(uri.toString()); - return (guess != null && guess.startsWith("video/")); - } catch (final StringIndexOutOfBoundsException ignored) { - return false; - } - } - @Override void onBackendConnected() { if (xmppConnectionServiceBound && share != null @@ -341,24 +338,16 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer .attachImageToConversation(conversation, i.next(), attachFileCallback); } - } else if (share.video) { - Log.d(Config.LOGTAG, "ShareWithActivity share() video " + share.uris.size() + " uri(s) " + share.uris.toString()); - replaceToast(getString(R.string.preparing_video)); - ShareWithActivity.this.xmppConnectionService - .attachVideoToConversation(conversation, share.uris.get(0), - attachFileCallback); } else { Log.d(Config.LOGTAG, "ShareWithActivity share() file " + share.uris.size() + " uri(s) " + share.uris.toString()); replaceToast(getString(R.string.preparing_file)); ShareWithActivity.this.xmppConnectionService - .attachFileToConversation(conversation, share.uris.get(0), - attachFileCallback); + .attachFileToConversation(conversation, share.uris.get(0), attachFileCallback); } } }; if (account.httpUploadAvailable() && ((share.image && !neverCompressPictures()) - || share.video || conversation.getMode() == Conversation.MODE_MULTI || FileBackend.allFilesUnderSize(this, share.uris, max)) && conversation.getNextEncryption() != Message.ENCRYPTION_OTR) { diff --git a/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java b/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java index 5f1fdc3c7..a8253fd1c 100644 --- a/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java @@ -30,8 +30,6 @@ import java.io.InputStream; import de.pixart.messenger.Config; import de.pixart.messenger.R; -import de.pixart.messenger.persistance.FileBackend; -import de.pixart.messenger.services.XmppConnectionService; import de.pixart.messenger.utils.ExifHelper; import uk.co.senab.photoview.PhotoView; import uk.co.senab.photoview.PhotoViewAttacher; @@ -50,8 +48,6 @@ public class ShowFullscreenMessageActivity extends Activity { int height = 0; int width = 0; int rotation = 0; - FileBackend mFileBackend; - XmppConnectionService mXmppConnectionService; @Override public void onCreate(Bundle savedInstanceState) { @@ -194,18 +190,35 @@ public class ShowFullscreenMessageActivity extends Activity { retriever.setDataSource(uri.getPath()); height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); - Log.d(Config.LOGTAG, "Video height: " + height + ", width: " + width); + rotation = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION)); + Log.d(Config.LOGTAG, "Video height: " + height + ", width: " + width + ", rotation: " + rotation); if (width > height) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE); + if (rotation == 0 || rotation == 180) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE); + } else { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } } else { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); + } else { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } } else if (width <= height) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); + if (rotation == 90 || rotation == 270) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); + } else { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } else { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); + } else { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } } try { diff --git a/src/main/java/de/pixart/messenger/ui/UiInformableCallback.java b/src/main/java/de/pixart/messenger/ui/UiInformableCallback.java new file mode 100644 index 000000000..53ed044cc --- /dev/null +++ b/src/main/java/de/pixart/messenger/ui/UiInformableCallback.java @@ -0,0 +1,5 @@ +package de.pixart.messenger.ui; + +public interface UiInformableCallback extends UiCallback { + void inform(String text); +} \ No newline at end of file -- cgit v1.2.3