Как прочитать путь к файлу мультимедиа, который находится в raw dir (native)? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть собственная реализация JNI, и сейчас у меня есть медиа-файлы в каталоге приложения /storage/emulated/0/Android/data/com.my_app.debug/files/Models/my_media_file.mp4, чтобы начать читать один из файлов, мне нужно передать путь к JNI, где внутри я использую такой метод, который ожидает получить path_to_mp4_file

bool Decoder::InitFromFile(std::string const &filename)
{
    m_file.open(filename, std::ios::binary);
    if (!m_file.is_open())
    {
        return false;
    }
...
}

И все работает, но теперь мне нужно прочитать из папки build-in raw, так что теперь, чтобы получить путь к моему файлу, я использую этот способ

fun foo()
{
...
        val path = "android.resource://" + activity!!.packageName + "/" + R.raw.my_media_file
        val uri = Uri.parse(path)
        JNIImplementation.InitFromFile(uri.path)
...
}

Но теперь uri = android.resource://com.my_app.debug/2131492865, если я получу uri.path = /2131492865.

Проблема в том, что если я передам этот uri.path как путь к методу InitFromFile, я получу ошибку, потому что я не могу открыть файл по пути /2131492865.

Итак, насколько я понимаю, должен быть способ чтения из папки raw or assert собственным способом или что-то подобное

Как сделать это?

Или, может быть, есть способ, как поместить этот файл мультимедиа в приложение (build-in) и получить доступ к пути к обычному файлу? Я имею в виду как-то смотреть на этот файл не как ресурс, а как простой файл?

...