Проблемы с потоковой передачей нелокального видео из Google Фото без загрузки.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с потоковой передачей нелокального видео из Google Фото без загрузки.

Сообщение Anonymous »

Я создаю приложение, в котором пользователь может выбрать видео из галереи и запустить его позже, используя программу просмотра по умолчанию.
Моя первоначальная попытка выглядела так

Код: Выделить всё

Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Video"), REQUEST_TAKE_GALLERY_VIDEO);
Использование Intent.ACTION_GET_CONTENT.
Когда выбирается файл, хранящийся локально, я получаю Uri, который выглядит следующим образом:

Код: Выделить всё

content://media/picker_get_content/0/com.android.providers.media.photopicker/media/1000004435
В этом сценарии все работает именно так, как хотелось бы. Я могу использовать этот Uri для последующего запуска видео в onActivityResult с помощью

Код: Выделить всё

String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(selectedImageUri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();

File videoFile = new File(cursor.getString(column_index));
Uri fileUri = FileProvider.getUriForFile(this, "{yourpackagename}.fileprovider", videoFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, "video/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
Проблема возникает, когда выбрано видео, которое не хранится локально.
В такой ситуации я сначала получаю экран ниже, а видео загружается:
Изображение
В зависимости от размера видео приложение может зависать в этом всплывающем окне очень долго, прежде чем оно вернется к onActivityResult, и если видео очень длинное, я получаю сообщение о том, что файл не может быть использован.
Когда приложение возвращается к onActivityResult, результирующий Uri выглядит так: content://media/picker_get_content/0/com.google.android.apps.photos.cloudpicker/media/d88dd574-2790-4025 -939a-51ba0b62d8bb-1_all_38433
и благодаря этому я могу использовать Uri для запуска видео так же, как и раньше.
Проблема:

Я пытаюсь исключить этот период ожидания загрузки и просто получить ссылку на видео и иметь возможность запускать его для потоковой передачи так же, как при выборе видео из галереи, не хранящееся локально, оно запускается почти сразу, и вы не можете сказать, что оно не хранится на диске.
Что я пробовал:

Поскольку загрузка происходит до того, как приложение возвращается в onActivityResult, я подумал, что можно избежать этого, используя Intent.setAction(Intent.ACTION_PICK);

code> вместо Intent.setAction(Intent.ACTION_GET_CONTENT);.
Когда я переключился на это и выбрал файл, хранящийся не локально, он возвращается к onActivityResult немедленно, но приложение все равно зависает, прежде чем управление будет возвращено пользователю. Результирующий Uri выглядит следующим образом: content://com.google.android.apps.photos.contentprovider/0/2/mediakey%3A%2Flocal%253A0db79025-b636-4c2d-85f1-f2b13a9a6bac/ORIGINAL/NONE/video%2Fmpeg/2041542951. .
и когда я пытаюсь запустить его через приложение, как и раньше, происходит сбой.

Код: Выделить всё

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.herculestournamettracker/com.example.herculestournamettracker.TournamentSelectionScreen}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.Iterator java.util.ArrayList.iterator()' on a null object reference
Вопрос:

есть ли способ заставить пользователя выбрать видео и, не загружая его, сохранить Uri или ссылку на него, чтобы позже запустить? и если видео не хранится локально, запустите его для потоковой передачи из Интернета и работайте так же, как при выборе видео, не хранящегося локально, из галереи.
Надеюсь, я объяснил это ясно .
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/787 ... ownloading
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»