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();