Android: почему при чтении OBB файла воспроизводится предупреждение

Этот класс JCAudio

   public JcAudio(String title, String path, Origin origin) {
         this.id = -1;
        this.position = -1;
        this.title = title;
        this.path = path;
        this.origin = origin;
    }
    public static JcAudio createFromFilePath(String title, String filePath) {
        return new JcAudio(title, filePath, Origin.FILE_PATH);
    }

Основная деятельность

recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
player = (JcPlayerView) findViewById(R.id.jcplayer);
ZipResourceFile expansionFile = null;
try {
    expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this, 3, 0);
} catch (IOException e) {
    e.printStackTrace();
}

if (expansionFile != null) {
    ZipResourceFile.ZipEntryRO[] fd = expansionFile.getAllEntries();
    String oldsong = fd[0].mFileName;
ArrayList<JcAudio> jcAudios = new ArrayList<>();
jcAudios.add(JcAudio.createFromFilePath("Old Song", fd[0].mFile.getAbsolutePath() + "/" + oldsong));
player.initPlaylist(jcAudios);
player.registerInvalidPathListener(this);
player.registerStatusListener(this);
adapterSetup();

Я пытаюсь воспроизвести mp3, почему я не могу воспроизвести mp3 из файла obb? что не так с моим кодом? кто-нибудь может мне помочь? я имел

я показываю подробности из андроид студии

05-31 20:37:52.407 29286-29286/com.tjcorp.tonykeane.song W/System.err: com.tjcorp.tonykeane.song.tjplayer.JcPlayerExceptions.AudioFilePathInvalidException: The file path is not a valid path: /storage/emulated/0/Android/obb/com.tjcorp.tonykeane.song/main.3.com.tjcorp.tonykeane.song.obb/oldsong.mp3
05-31 20:37:52.407 29286-29286/com.tjcorp.tonykeane.song W/System.err: Have you add File Access Permission?
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.tjcorp.tonykeane.song.tjplayer.JcPlayerService.throwError(JcPlayerService.java:320)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.tjcorp.tonykeane.song.tjplayer.JcPlayerService.play(JcPlayerService.java:236)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.tjcorp.tonykeane.song.tjplayer.JcAudioPlayer.playAudio(JcAudioPlayer.java:85)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.tjcorp.tonykeane.song.tjplayer.JcPlayerView.playAudio(JcPlayerView.java:347)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.tjcorp.tonykeane.song.HomeActivity$1.onItemClick(HomeActivity.java:272)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.tjcorp.tonykeane.song.AudioAdapter$AudioAdapterViewHolder$1.onClick(AudioAdapter.java:133)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at android.view.View.performClick(View.java:5207)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at android.view.View$PerformClick.run(View.java:21177)
05-31 20:37:52.408 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
05-31 20:37:52.409 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
05-31 20:37:52.409 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at android.os.Looper.loop(Looper.java:148)
05-31 20:37:52.409 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5442)
05-31 20:37:52.409 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
05-31 20:37:52.409 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
05-31 20:37:52.409 29286-29286/com.tjcorp.tonykeane.song W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

Я дал разрешение на доступ уже в Manifest.xml, спасибо за вашу помощь

Когда я использую этот код ниже, я могу воспроизводить mp3, но я не знаю, как добавить его к списку повторных просмотров? как изменить его на arraylist

AssetFileDescriptor fd1 = expansionFile.getAssetFileDescriptor("oldsong.mp3");
MediaPlayer mediaPlayer = new MediaPlayer();
try {
    mediaPlayer.setDataSource( fd.getFileDescriptor(),
            fd.getStartOffset(),fd.getLength());
} catch (IOException e) {
    e.printStackTrace();
}
try {
    mediaPlayer.prepare();
} catch (IOException e) {
    e.printStackTrace();
}
mediaPlayer.start();

0 ответов

Другие вопросы по тегам