Файл не найден Исключение возникает при доступе к активам флаттера - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь написать плагин для воспроизведения аудиофайлов, которые хранятся в папке активов пакета флаттера и сделали так:

if(call.method.equals("playMusic"))
{
    Log.d(TAG, "onMethodCall: play music function called");

    String fileLocation = call.argument("file");
    Log.d(TAG, "onMethodCall: file requested is "+fileLocation);
    AssetManager assetManager = registrar.context().getAssets();
    String key = registrar.lookupKeyForAsset(fileLocation);
    Log.d(TAG, "onMethodCall: key is "+key);
    AssetFileDescriptor fd;
    MediaPlayer mediaPlayer = new MediaPlayer();
    try {
        Log.d(TAG, "onMethodCall: found assets " + Arrays.toString(assetManager.list("assets/")));
        fd= assetManager.openFd(key);
        mediaPlayer.setDataSource(fd.getFileDescriptor(),fd.getStartOffset(),fd.getLength());
        fd.close();
        mediaPlayer.prepare();
        mediaPlayer.start();
        result.success("played successfully");
  }
  catch (Exception e){
    Log.d(TAG, "onMethodCall: exception occured "+e.toString());
    result.success("playing failed");
  }
}

Расположение файла правильно передается как

assets / river.m4a

Я проверил и обнаружил, что ключ, который просматривает регистратор:

flutter_assets / assets / river.m4a

и файл присутствует в пакете по адресу

assets / flutter_assets / assets / river.m4a

, но все равно при запуске приложения он выдает

D / TunePlugin: onMethodCall: произошло исключение java.io.FileNotFoundException: flutter_assets / assets / river.m4a

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Внутри вашего файла pubspec.yaml добавьте это ...

flutter:
    assets:
-assets/flutter_assets/assets/river.m4a
0 голосов
/ 02 мая 2019

Обычно это происходит, когда вы пытаетесь получить доступ к сжатым файлам.

Вы можете добавить следующую директиву к вашему build.gradle, расположенному по адресу android/app/build.gradle:

aaptOptions {
    noCompress 'm4a'
}
0 голосов
/ 19 октября 2018

Меня удивило то, что когда я запускал одно и то же приложение через терминал, т.е. Git bash, это не доставляло мне никаких проблем, и песня воспроизводилась без каких-либо ошибок.Когда я запускаю то же самое приложение через Android Studio, оно выдает FileNotFoundException

...