Работа с файлами Андроид, C#

Программирование для iPhone & Android

Работа с файлами Андроид, C#

Сообщение hennessy 27 янв 2018, 00:31

Доброго времени суток!
Уже несколько дней ковыряю форумы в поисках ответа на следующие вопросы:
Каким образом работать с файловой системой андроид через Unity?
Как загрузить в приложение внешний файл? (причем именно ВНЕШНИЙ файл, не из Application.datapath, а, допустим, из /storage/0/Gallery/bubbles.jpg)
Как произвести поиск файлов и получить полные url файлов?
Как я понял, для того, чтобы приложение имело доступ к файлам, Адроид должен разрешить это, в связи с этим еще один вопрос, как реализовать этот запрос в своем приложении перед открытием файла?
P.S. В частности работаю с видеопроигрывателем, встроенным в игру, в основе компонент VideoPlayer, прикрепленный к Squad. Он спокойно читает файлы из любой папки на компьютере (к примеру "D:/Films/Terminal.avi"), но как передать компоненту url файла на андроиде?
P.S.S. Желательно на С#!
Буду рад любой информации! Заранее спасибо!
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: Работа с файлами Андроид, C#

Сообщение hennessy 27 янв 2018, 04:14

В общем, наткнулся я на истину: Unity не поддерживает напрямую ряд функций (пушеры, запрос на использование данных, микрофона, включение/выключение фонарика и т.д), которые можно было бы реализовать в своей игре (Unity проекте). Для решения предусмотрено использование плагинов (.aar, .jar и тд.). Как я понял для работы с файловой системой мне нужно будет разработать плагин, который будет проводить поиск файлов и возвращать их url в мои родные C# скрипты в сам Unity. К Android Studio еще ни разу не обращался, плагины не изучал.
Главный мой вопрос теперь :) : я на правильном пути? или плагины - это гиблая тема и стоит продолжить поиски в самом Unity?
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: Работа с файлами Андроид, C#

Сообщение hennessy 28 янв 2018, 00:56

Постепенно разбираюсь в теме, попытаюсь сам себе ответить на некоторые вопросы, да и вдруг кому поможет.
Как я понял, для того, чтобы приложение имело доступ к файлам, Адроид должен разрешить это, в связи с этим еще один вопрос, как реализовать этот запрос в своем приложении перед открытием файла?

Запрос на разрешение реализуется следующим образом:
1) Найти файл AndroidManifest.xml (скачать из интернета, извлечь из Android Studio, достать из других проектов и т.д.) Мой способ - скопировать отсюда: \Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk\
2) В него нужно будет добавить вот такую строчку (добавлял с помощью Visual Studio):
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> (эта строчка реализует запрос на использование файлов на телефоне, включая sd-карту, запрашивается во время установки приложения)
3) Кинуть этот в файл в Unity-проект, в папку Assets/Android/Plugins/ (если нету - создать).
Вот кстати список всех возможных permissions https://developer.android.com/reference/android/Manifest.permission.html?hl=ru
К слову у всех apk есть свой один единственный AndroidManifest.xml. Unity при компилировании собирает все Манифесты в один, поэтому когда мы добавляли свой в Плагины, он просто соединится с основным.
Как загрузить в приложение внешний файл? (причем именно ВНЕШНИЙ файл, не из Application.datapath, а, допустим, из /storage/0/Gallery/bubbles.jpg)?

....но как передать компоненту url файла на андроиде?

Прям так и грузить, передать url=/storage/0/Gallery/bubbles.jpg (но в мое случае внутренняя память начиналась с /sdcard/). Проблема как раз в том, что приложение не сможет прочитать этот файл пока Андроид-система не даст ему разрешение... Путь к съемной карте памяти у всех разный, можно проверить через проводник на самом девайсе.
Как произвести поиск файлов и получить полные url файлов?

Все это делается с помощью Android - плагинов. До конца еще не разобрался, поэтому пока ничего здесь напишу. В планах написать плагин, который будет отыскивать все видео-файлы на телефоне, и передавать их url в Unity.

Но теперь столкнулся в другой проблемой - Форматы видеофайлов. Компонент VideoPlayer отлично справился с файлами mp4, но вот фильм в .avi не грузит, причем в Unity грузит, а на Андроид нет.
Какие форматы вообще поддерживает это компонент на Андроид?
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00

Re: Работа с файлами Андроид, C#

Сообщение LexaMV 21 фев 2018, 00:14

Короче, то же долго искал как работать с фалами в Android. В документации к Unity так и написано - используйте плагины. Пишим плагин и работаем с Android. Идея такая, берем библиотеку из Unity, импортируем в Android Studio, пишим плагин, сохраняем, импортируем в Unity, и в Unity он будет присутствовать как игровой объект.

Короче лучше особо не заморачиваться, а использовать готовые assets. Один из них Android Native Plugin (https://unionassets.com/android-native-plugin/camera-and-gallery-93)
LexaMV
UNец
 
Сообщения: 3
Зарегистрирован: 11 сен 2017, 01:19

Re: Работа с файлами Андроид, C#

Сообщение hennessy 21 фев 2018, 15:54

Почему-то не думал об assets, сам написал уже) зато изучил Android Studio немного, и надеюсь больше туда не возвращаться.... :ymsick:
Apps published: VR Cinema 2018
©DailyDreams
hennessy
UNец
 
Сообщения: 48
Зарегистрирован: 26 янв 2018, 22:00


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3