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.os.ParcelFileDescriptor; | ||||||
| import android.provider.MediaStore; | import android.provider.MediaStore; | ||||||
| import android.provider.OpenableColumns; | import android.provider.OpenableColumns; | ||||||
|  | import android.support.annotation.RequiresApi; | ||||||
| import android.support.v4.content.FileProvider; | import android.support.v4.content.FileProvider; | ||||||
| import android.system.Os; | import android.system.Os; | ||||||
| import android.system.StructStat; | import android.system.StructStat; | ||||||
| @ -299,7 +300,12 @@ public class FileBackend { | |||||||
|         if (dimensions != null) { |         if (dimensions != null) { | ||||||
|             return dimensions; |             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; |         boolean rotated = rotation == 90 || rotation == 270; | ||||||
|         int height; |         int height; | ||||||
|         try { |         try { | ||||||
| @ -320,6 +326,7 @@ public class FileBackend { | |||||||
|         return rotated ? new Dimensions(width, height) : new Dimensions(height, width); |         return rotated ? new Dimensions(width, height) : new Dimensions(height, width); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) | ||||||
|     private static int extractRotationFromMediaRetriever(MediaMetadataRetriever metadataRetriever) { |     private static int extractRotationFromMediaRetriever(MediaMetadataRetriever metadataRetriever) { | ||||||
|         String r = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION); |         String r = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION); | ||||||
|         try { |         try { | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ import android.net.Uri; | |||||||
| import android.os.Build; | import android.os.Build; | ||||||
| import android.os.ParcelFileDescriptor; | import android.os.ParcelFileDescriptor; | ||||||
| import android.preference.PreferenceManager; | import android.preference.PreferenceManager; | ||||||
|  | import android.support.annotation.RequiresApi; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| 
 | 
 | ||||||
| import net.ypresto.androidtranscoder.MediaTranscoder; | 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 { | 	private void processAsVideo() throws FileNotFoundException { | ||||||
| 		Log.d(Config.LOGTAG,"processing file as video"); | 		Log.d(Config.LOGTAG,"processing file as video"); | ||||||
| 		mXmppConnectionService.startForcingForegroundNotification(); | 		mXmppConnectionService.startForcingForegroundNotification(); | ||||||
| @ -158,7 +160,7 @@ public class AttachFileToConversationRunnable implements Runnable, MediaTranscod | |||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public void run() { | 	public void run() { | ||||||
| 		if (isVideoMessage) { | 		if (isVideoMessage && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { | ||||||
| 			try { | 			try { | ||||||
| 				processAsVideo(); | 				processAsVideo(); | ||||||
| 			} catch (FileNotFoundException e) { | 			} catch (FileNotFoundException e) { | ||||||
|  | |||||||
| @ -1522,7 +1522,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke | |||||||
|             switch (attachmentChoice) { |             switch (attachmentChoice) { | ||||||
|                 case ATTACHMENT_CHOICE_CHOOSE_IMAGE: |                 case ATTACHMENT_CHOICE_CHOOSE_IMAGE: | ||||||
|                     intent.setAction(Intent.ACTION_GET_CONTENT); |                     intent.setAction(Intent.ACTION_GET_CONTENT); | ||||||
|  |                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { | ||||||
|                         intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); |                         intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); | ||||||
|  |                     } | ||||||
|                     intent.setType("image/*"); |                     intent.setType("image/*"); | ||||||
|                     chooser = true; |                     chooser = true; | ||||||
|                     break; |                     break; | ||||||
| @ -1540,7 +1542,9 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke | |||||||
|                 case ATTACHMENT_CHOICE_CHOOSE_FILE: |                 case ATTACHMENT_CHOICE_CHOOSE_FILE: | ||||||
|                     chooser = true; |                     chooser = true; | ||||||
|                     intent.setType("*/*"); |                     intent.setType("*/*"); | ||||||
|  |                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { | ||||||
|                         intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); |                         intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); | ||||||
|  |                     } | ||||||
|                     intent.addCategory(Intent.CATEGORY_OPENABLE); |                     intent.addCategory(Intent.CATEGORY_OPENABLE); | ||||||
|                     intent.setAction(Intent.ACTION_GET_CONTENT); |                     intent.setAction(Intent.ACTION_GET_CONTENT); | ||||||
|                     break; |                     break; | ||||||
|  | |||||||
| @ -41,10 +41,12 @@ import android.content.Intent; | |||||||
| import android.content.pm.PackageManager; | import android.content.pm.PackageManager; | ||||||
| import android.databinding.DataBindingUtil; | import android.databinding.DataBindingUtil; | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
|  | import android.os.Build; | ||||||
| import android.os.Bundle; | import android.os.Bundle; | ||||||
| import android.provider.Settings; | import android.provider.Settings; | ||||||
| import android.support.annotation.IdRes; | import android.support.annotation.IdRes; | ||||||
| import android.support.annotation.NonNull; | import android.support.annotation.NonNull; | ||||||
|  | import android.support.annotation.RequiresApi; | ||||||
| import android.support.v7.app.ActionBar; | import android.support.v7.app.ActionBar; | ||||||
| import android.support.v7.app.AlertDialog; | import android.support.v7.app.AlertDialog; | ||||||
| import android.support.v7.widget.Toolbar; | import android.support.v7.widget.Toolbar; | ||||||
| @ -218,6 +220,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio | |||||||
|     private void openBatteryOptimizationDialogIfNeeded() { |     private void openBatteryOptimizationDialogIfNeeded() { | ||||||
|         if (hasAccountWithoutPush() |         if (hasAccountWithoutPush() | ||||||
|                 && isOptimizingBattery() |                 && isOptimizingBattery() | ||||||
|  |                 && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M | ||||||
|                 && getPreferences().getBoolean(getBatteryOptimizationPreferenceKey(), true)) { |                 && getPreferences().getBoolean(getBatteryOptimizationPreferenceKey(), true)) { | ||||||
|             AlertDialog.Builder builder = new AlertDialog.Builder(this); |             AlertDialog.Builder builder = new AlertDialog.Builder(this); | ||||||
|             builder.setTitle(R.string.battery_optimizations_enabled); |             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) { |     private void showOsOptimizationWarning(boolean showBatteryWarning, boolean showDataSaverWarning) { | ||||||
|         this.binding.osOptimization.setVisibility(showBatteryWarning || showDataSaverWarning ? View.VISIBLE : View.GONE); |         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.osOptimizationHeadline.setText(R.string.data_saver_enabled); | ||||||
|             this.binding.osOptimizationBody.setText(R.string.data_saver_enabled_explained); |             this.binding.osOptimizationBody.setText(R.string.data_saver_enabled_explained); | ||||||
|             this.binding.osOptimizationDisable.setText(R.string.allow); |             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(); |                     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.osOptimizationDisable.setText(R.string.disable); | ||||||
|             this.binding.osOptimizationHeadline.setText(R.string.battery_optimizations_enabled); |             this.binding.osOptimizationHeadline.setText(R.string.battery_optimizations_enabled); | ||||||
|             this.binding.osOptimizationBody.setText(R.string.battery_optimizations_enabled_explained); |             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.MediaCodecInfo; | ||||||
| import android.media.MediaFormat; | import android.media.MediaFormat; | ||||||
|  | import android.os.Build; | ||||||
|  | import android.support.annotation.RequiresApi; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| 
 | 
 | ||||||
| import net.ypresto.androidtranscoder.format.MediaFormatExtraConstants; | import net.ypresto.androidtranscoder.format.MediaFormatExtraConstants; | ||||||
| @ -26,6 +28,7 @@ public class Android360pFormatStrategy implements MediaFormatStrategy { | |||||||
|         mAudioChannels = 2; |         mAudioChannels = 2; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) | ||||||
|     @Override |     @Override | ||||||
|     public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { |     public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { | ||||||
|         int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); |         int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); | ||||||
|  | |||||||
| @ -2,6 +2,8 @@ package eu.siacs.conversations.utils; | |||||||
| 
 | 
 | ||||||
| import android.media.MediaCodecInfo; | import android.media.MediaCodecInfo; | ||||||
| import android.media.MediaFormat; | import android.media.MediaFormat; | ||||||
|  | import android.os.Build; | ||||||
|  | import android.support.annotation.RequiresApi; | ||||||
| import android.util.Log; | import android.util.Log; | ||||||
| 
 | 
 | ||||||
| import net.ypresto.androidtranscoder.format.MediaFormatExtraConstants; | import net.ypresto.androidtranscoder.format.MediaFormatExtraConstants; | ||||||
| @ -26,6 +28,7 @@ public class Android720pFormatStrategy implements MediaFormatStrategy { | |||||||
|         mAudioChannels = 2; |         mAudioChannels = 2; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) | ||||||
|     @Override |     @Override | ||||||
|     public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { |     public MediaFormat createVideoOutputFormat(MediaFormat inputFormat) { | ||||||
|         int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); |         int width = inputFormat.getInteger(MediaFormat.KEY_WIDTH); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch