From 155332f65b5fc5baaaff845f2c288056d7ae12ec Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 14 Dec 2018 22:03:33 +0100 Subject: limit video transcoding to api >= 18 and other api 16 fixes --- libs/android-transcoder/build.gradle | 8 ++++++-- .../androidtranscoder/format/AndroidStandardFormatStrategy.java | 3 +++ src/main/java/de/pixart/messenger/persistance/FileBackend.java | 9 ++++++++- .../messenger/services/AttachFileToConversationRunnable.java | 6 ++++-- src/main/java/de/pixart/messenger/ui/ConversationFragment.java | 4 +++- src/main/java/de/pixart/messenger/ui/ConversationsActivity.java | 1 + src/main/java/de/pixart/messenger/ui/EditAccountActivity.java | 4 ++-- 7 files changed, 27 insertions(+), 8 deletions(-) diff --git a/libs/android-transcoder/build.gradle b/libs/android-transcoder/build.gradle index 62936b5d9..6b1f1086d 100644 --- a/libs/android-transcoder/build.gradle +++ b/libs/android-transcoder/build.gradle @@ -6,13 +6,17 @@ buildscript { apply plugin: 'com.android.library' +dependencies { + implementation 'com.android.support:support-v13:28.0.0' +} + android { - compileSdkVersion 27 + compileSdkVersion 28 buildToolsVersion '28.0.3' defaultConfig { minSdkVersion 18 - targetSdkVersion 26 + targetSdkVersion 28 } buildTypes { diff --git a/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/format/AndroidStandardFormatStrategy.java b/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/format/AndroidStandardFormatStrategy.java index a6bf40b9c..7783f731a 100644 --- a/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/format/AndroidStandardFormatStrategy.java +++ b/libs/android-transcoder/src/main/java/net/ypresto/androidtranscoder/format/AndroidStandardFormatStrategy.java @@ -17,6 +17,8 @@ package net.ypresto.androidtranscoder.format; import android.media.MediaCodecInfo; import android.media.MediaFormat; +import android.os.Build; +import android.support.annotation.RequiresApi; import android.util.Log; class AndroidStandardFormatStrategy implements MediaFormatStrategy { @@ -47,6 +49,7 @@ class AndroidStandardFormatStrategy implements MediaFormatStrategy { mAudioChannels = audioChannels; } + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) @Override public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); diff --git a/src/main/java/de/pixart/messenger/persistance/FileBackend.java b/src/main/java/de/pixart/messenger/persistance/FileBackend.java index ddc0e6ee8..5efadd3ff 100644 --- a/src/main/java/de/pixart/messenger/persistance/FileBackend.java +++ b/src/main/java/de/pixart/messenger/persistance/FileBackend.java @@ -21,6 +21,7 @@ import android.os.Environment; import android.os.ParcelFileDescriptor; import android.provider.MediaStore; import android.provider.OpenableColumns; +import android.support.annotation.RequiresApi; import android.support.v4.content.FileProvider; import android.system.Os; import android.system.StructStat; @@ -1158,7 +1159,12 @@ public class FileBackend { if (dimensions != null) { return dimensions; } - int rotation = extractRotationFromMediaRetriever(metadataRetriever); + final int rotation; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { + rotation = extractRotationFromMediaRetriever(metadataRetriever); + } else { + rotation = 0; + } boolean rotated = rotation == 90 || rotation == 270; int height; try { @@ -1179,6 +1185,7 @@ public class FileBackend { return rotated ? new Dimensions(width, height) : new Dimensions(height, width); } + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) private static int extractRotationFromMediaRetriever(MediaMetadataRetriever metadataRetriever) { String r = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION); try { diff --git a/src/main/java/de/pixart/messenger/services/AttachFileToConversationRunnable.java b/src/main/java/de/pixart/messenger/services/AttachFileToConversationRunnable.java index 1581638ae..d2f623c45 100644 --- a/src/main/java/de/pixart/messenger/services/AttachFileToConversationRunnable.java +++ b/src/main/java/de/pixart/messenger/services/AttachFileToConversationRunnable.java @@ -3,6 +3,7 @@ package de.pixart.messenger.services; import android.net.Uri; import android.os.Build; import android.os.ParcelFileDescriptor; +import android.support.annotation.RequiresApi; import android.util.Log; import net.ypresto.androidtranscoder.MediaTranscoder; @@ -54,7 +55,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod } public boolean isVideoMessage() { - return this.isVideoMessage; + return this.isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2; } private void processAsFile() { @@ -89,6 +90,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod } } + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) private void processAsVideo() throws FileNotFoundException { Log.d(Config.LOGTAG, "processing file as video"); mXmppConnectionService.startForcingForegroundNotification(); @@ -161,7 +163,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod @Override public void run() { - if (isVideoMessage) { + if (this.isVideoMessage()) { try { processAsVideo(); } catch (FileNotFoundException e) { diff --git a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java index d87377b72..e5ad20447 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationFragment.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationFragment.java @@ -1764,7 +1764,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke case ATTACHMENT_CHOICE_CHOOSE_FILE: chooser = true; intent.setType("*/*"); - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); + } intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setAction(Intent.ACTION_GET_CONTENT); break; diff --git a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java index f1eaf4b61..40cd5ee09 100644 --- a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java @@ -276,6 +276,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio private void openBatteryOptimizationDialogIfNeeded() { if (hasAccountWithoutPush() && isOptimizingBattery() + && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && getPreferences().getBoolean(getBatteryOptimizationPreferenceKey(), true)) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.battery_optimizations_enabled); diff --git a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java index ca7f0285a..bb579b8f1 100644 --- a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java +++ b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java @@ -1251,7 +1251,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat private void showOsOptimizationWarning(boolean showBatteryWarning, boolean showDataSaverWarning) { this.binding.osOptimization.setVisibility(showBatteryWarning || showDataSaverWarning ? View.VISIBLE : View.GONE); - if (showDataSaverWarning) { + if (showDataSaverWarning && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { this.binding.osOptimizationHeadline.setText(R.string.data_saver_enabled); this.binding.osOptimizationBody.setText(R.string.data_saver_enabled_explained); this.binding.osOptimizationDisable.setText(R.string.allow); @@ -1265,7 +1265,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat Toast.makeText(EditAccountActivity.this, R.string.device_does_not_support_data_saver, Toast.LENGTH_SHORT).show(); } }); - } else if (showBatteryWarning) { + } else if (showBatteryWarning && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { this.binding.osOptimizationDisable.setText(R.string.disable); this.binding.osOptimizationHeadline.setText(R.string.battery_optimizations_enabled); this.binding.osOptimizationBody.setText(R.string.battery_optimizations_enabled_explained); -- cgit v1.2.3