Не могу воспроизвести это видео Xamarin.Android - PullRequest
0 голосов
/ 07 апреля 2019

Мне нужно воспроизвести видео с SDCard на VideoView и всегда появляется сообщение «Не удается воспроизвести это видео-сообщение».Я тестирую на физическом устройстве.Файл находится на внешнем хранилище и без проблем может быть воспроизведен встроенными телефонными приложениями.

Я уже читал некоторые темы и пытался изменить формат и разрешение файла без эффекта.

Второе предположениебыл путь к файлу, поэтому попытался изменить его несколько раз во многих вариантах, используя Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, создав переменную File и получив путь от File.Path.

Получил TextView, где я каждый раз помещал путь, и онвсегда правильно.

Понятия не имею, почему это не работает.

Код:

Java.IO.File file = new Java.IO.File (Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/myimage/", "video.mp4");

tView.Text = file.Path;

MediaController mediaController = new MediaController(context: this);
vView.SetMediaController(mediaController);
mediaController.SetAnchorView(vView);
vView.SetVideoPath(file.Path);
vView.Start();

File.Path значение:

"/storage/emulated/0/myimage/video.mp4"

РЕДАКТИРОВАТЬ: Я создал "raw" папку в файле, помещенном в ресурс, а затем использовал следующий путь:

vView.SetVideoPath("android.resource://" + PackageName + "/" + Resource.Raw.video);

Это работает, но если кто-то знает, какполучить правильный путь к папке на SDCard?

1 Ответ

0 голосов
/ 11 апреля 2019

Наконец я понял это.Проблема заключалась в том, что на моем телефоне была установлена ​​карта в пути / хранилище / xxxx-xxxx / мое исследование показало, что имя директории происходит от серийного номера тома (где android автоматически монтирует карту), а ExternalStorageDirectory ссылается на другие местоположения в каждом устройстве Android.Иногда это внутреннее, иногда запоминающее устройство USB.

В любом случае не удалось найти метод, который возвращает путь, поэтому был создан следующий метод:

string GetCardMountPoint()
    {
        string[] listOfDirs = Directory.GetDirectories("/storage/");
        string path = null;

        foreach ( string dir in listOfDirs)
        {
            if(dir.Contains('-'))
            {
                path = dir;
            }
        }

        return path;

Это не очень сложное решение, но оно работаетна данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...