Начать обрезку видео-активности с намерением

Теперь я могу взять видео с намерением, какие детали нужно создать для намерения начать работу триммера видео по умолчанию? И проверьте, присутствует ли это на устройстве?

Это решение зависит от версии установленного на устройстве пакета AOSP Gallery2. Вы можете сделать это следующим образом:

// The Intent action is not yet published as a constant in the Intent class // This one is served by the com.android.gallery3d.app.TrimVideo activity // which relies on having the Gallery2 app or a compatible derivative installed Intent trimVideoIntent = new Intent("com.android.camera.action.TRIM"); // The key for the extra has been discovered from com.android.gallery3d.app.PhotoPage.KEY_MEDIA_ITEM_PATH trimVideoIntent.putExtra("media-item-path", getFilePathFromVideoURI(this, videoUri)); trimVideoIntent.setData(videoUri); // Check if the device can handle the Intent List<ResolveInfo> list = getPackageManager().queryIntentActivities(trimVideoIntent, 0); if (null != list && list.size() > 0) { startActivity(trimVideoIntent); // Fires TrimVideo activity into being active } 

Метод getFilePathFromVideURI основан на ответе на этот вопрос: Получить имя файла и путь из URI из медиастора

 public String getFilePathFromVideoURI(Context context, Uri contentUri) { Cursor cursor = null; try { String[] proj = { MediaStore.Video.Media.DATA }; cursor = context.getContentResolver().query(contentUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } finally { if (cursor != null) { cursor.close(); } } } 

videoUri – это Uri указывающий на что-то вроде этого: content://media/external/video/media/43 . Вы можете собрать его, выпустив намерение ACTION_PICK:

 Intent pickVideoUriIntent = new Intent(Intent.ACTION_PICK, MediaStore.Video.Media.EXTERNAL_CONTENT_URI); startActivityForResult(pickVideoUriIntent, PICK_VIDEO_REQUEST); 

В onActivityResult получите uri так:

 .... case PICK_VIDEO_REQUEST: Uri videoUri = data.getData(); ... 

Это решение работает на моем Galaxy Nexus с Android 4.3 Jelly Bean.

Я не уверен, что это доступно на всех устройствах Android. Более надежным решением может быть разветвление приложения Gallery2 и перенос активности TrimVideo вместе со своими зависимостями в библиотеку, которая может быть доставлена ​​вместе с вашим приложением. Надеюсь, это все равно поможет.

Попробуйте это, возможно, это поможет

 Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); intent.putExtra("android.intent.extra.durationLimit", 30000); intent.putExtra("EXTRA_VIDEO_QUALITY", 0); startActivityForResult(intent, ActivityRequests.REQUEST_TAKE_VIDEO); 

Этот код хорошо работает на API> = 2.2, но предел продолжительности не работает в API 2.1