Сейчас я программирую видеоигру в Android Studio с помощью LibGDX, которая может работать как на настольном ПК, так и на устройствах Android.
В некоторых частях игры я хочу воспроизвести звуковой эффект, используя звукпеременная:
public Sound sound5;
В функции экрана () экрана я инициализирую звук, задав путь к звуковому звуковому файлу:
sound5 = Gdx.audio.newSound(Gdx.files.internal("C:/Users/coder/Desktop/Catacombs - Copy/android/res/raw/nff_confirm_02.wav"));
Затем вФункция hide (), я располагаю переменную звука:
sound5.dispose();
В одной из функций моей кнопки я играю звук:
sound5.play();
Когда я запускаю игру на рабочем столе,игра прекрасно работает и воспроизводит звуковой файл всякий раз, когда я нажимаю кнопку, но когда я пытаюсь запустить свою игру на устройстве Android, игра вылетает с FileNotFoundException, как только она запускается.Вот журнал для аварии:
E/AndroidRuntime: FATAL EXCEPTION: GLThread 24292
Process: com.efe.gamedev.catacombs, PID: 24651
com.badlogic.gdx.utils.GdxRuntimeException: Error loading audio file: C:/Users/coder/Desktop/Catacombs - Copy/android/res/raw/nff_confirm_02.wav
Note: Internal audio files must be placed in the assets directory.
at com.badlogic.gdx.backends.android.AndroidAudio.newSound(AndroidAudio.java:181)
at com.efe.gamedev.catacombs.MenuScreen.show(MenuScreen.java:117)
at com.badlogic.gdx.Game.setScreen(Game.java:61)
at com.efe.gamedev.catacombs.CatacombsGame.showMenuScreen(CatacombsGame.java:25)
at com.efe.gamedev.catacombs.CatacombsGame.create(CatacombsGame.java:20)
at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:311)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1537)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253)
Caused by: java.io.FileNotFoundException: C:/Users/coder/Desktop/Catacombs - Copy/android/res/raw/nff_confirm_02.wav
at android.content.res.AssetManager.openAssetFd(Native Method)
at android.content.res.AssetManager.openFd(AssetManager.java:370)
at com.badlogic.gdx.backends.android.AndroidFileHandle.getAssetFileDescriptor(AndroidFileHandle.java:237)
at com.badlogic.gdx.backends.android.AndroidAudio.newSound(AndroidAudio.java:176)
at com.efe.gamedev.catacombs.MenuScreen.show(MenuScreen.java:117)
at com.badlogic.gdx.Game.setScreen(Game.java:61)
at com.efe.gamedev.catacombs.CatacombsGame.showMenuScreen(CatacombsGame.java:25)
at com.efe.gamedev.catacombs.CatacombsGame.create(CatacombsGame.java:20)
at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:311)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1537)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253)
Аудиофайл "nff_confirm_02.wav" существует в папке raw внутри моей папки res.Имя файла не имеет заглавных букв или пробелов, поэтому это не должно быть проблемой.
Я пробовал несколько путей к аудиофайлу, например:
sound5 = Gdx.audio.newSound(Gdx.files.internal("android/res/raw/nff_confirm_02.wav"));
или просто:
sound5 = Gdx.audio.newSound(Gdx.files.internal("raw/nff_confirm_02.wav"));
Однако оба должны быть неверными, поскольку игра вылетает как на рабочем столе, так и на Android.Я не уверен, что мне нужно сделать, чтобы устройство Android не выдало мне исключение FileNotFoundException.
Кстати, я посмотрел в журнале на наличие сбоев и обнаружил, что там написано:
Note: Internal audio files must be placed in the assets directory.
В каталоге android моего проекта LibGDX есть каталог "assets", но всякий раз, когда я пытаюсь вставить используемый мной аудиофайл в каталог assets, он автоматически помещает файл в каталог "res"в каталоге android, так что я не думал, что это была проблема.
Любой совет, который поможет мне иметь возможность воспроизводить звуковой файл в LibGDX, без моего пути к файлу, дающего мне FileNotFoundException.