limit video transcoding to api >= 18 and other api 16 fixes
This commit is contained in:
		
							parent
							
								
									c071a53595
								
							
						
					
					
						commit
						ae9bfe1643
					
				| @ -19,6 +19,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; | ||||
| @ -299,7 +300,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 { | ||||
| @ -320,6 +326,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 { | ||||
|  | ||||
| @ -5,6 +5,7 @@ import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.ParcelFileDescriptor; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.support.annotation.RequiresApi; | ||||
| import android.util.Log; | ||||
| 
 | ||||
| import net.ypresto.androidtranscoder.MediaTranscoder; | ||||
| @ -88,6 +89,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(); | ||||
| @ -158,7 +160,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod | ||||
| 
 | ||||
| 	@Override | ||||
| 	public void run() { | ||||
| 		if (isVideoMessage) { | ||||
| 		if (isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { | ||||
| 			try { | ||||
| 				processAsVideo(); | ||||
| 			} catch (FileNotFoundException e) { | ||||
|  | ||||
| @ -1522,7 +1522,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke | ||||
|             switch (attachmentChoice) { | ||||
|                 case ATTACHMENT_CHOICE_CHOOSE_IMAGE: | ||||
|                     intent.setAction(Intent.ACTION_GET_CONTENT); | ||||
|                     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.setType("image/*"); | ||||
|                     chooser = true; | ||||
|                     break; | ||||
| @ -1540,7 +1542,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; | ||||
|  | ||||
| @ -41,10 +41,12 @@ import android.content.Intent; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.databinding.DataBindingUtil; | ||||
| import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.provider.Settings; | ||||
| import android.support.annotation.IdRes; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.annotation.RequiresApi; | ||||
| import android.support.v7.app.ActionBar; | ||||
| import android.support.v7.app.AlertDialog; | ||||
| import android.support.v7.widget.Toolbar; | ||||
| @ -218,6 +220,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); | ||||
|  | ||||
| @ -1143,7 +1143,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); | ||||
| @ -1157,7 +1157,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); | ||||
|  | ||||
| @ -2,6 +2,8 @@ package eu.siacs.conversations.utils; | ||||
| 
 | ||||
| import android.media.MediaCodecInfo; | ||||
| import android.media.MediaFormat; | ||||
| import android.os.Build; | ||||
| import android.support.annotation.RequiresApi; | ||||
| import android.util.Log; | ||||
| 
 | ||||
| import net.ypresto.androidtranscoder.format.MediaFormatExtraConstants; | ||||
| @ -26,6 +28,7 @@ public class Android360pFormatStrategy implements MediaFormatStrategy { | ||||
|         mAudioChannels = 2; | ||||
|     } | ||||
| 
 | ||||
|     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) | ||||
|     @Override | ||||
|     public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { | ||||
|         int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); | ||||
|  | ||||
| @ -2,6 +2,8 @@ package eu.siacs.conversations.utils; | ||||
| 
 | ||||
| import android.media.MediaCodecInfo; | ||||
| import android.media.MediaFormat; | ||||
| import android.os.Build; | ||||
| import android.support.annotation.RequiresApi; | ||||
| import android.util.Log; | ||||
| 
 | ||||
| import net.ypresto.androidtranscoder.format.MediaFormatExtraConstants; | ||||
| @ -26,6 +28,7 @@ public class Android720pFormatStrategy implements MediaFormatStrategy { | ||||
|         mAudioChannels = 2; | ||||
|     } | ||||
| 
 | ||||
|     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) | ||||
|     @Override | ||||
|     public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { | ||||
|         int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch