有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不能从本地文件系统播放音乐,但可以从SD卡播放

我正在开发一个测试应用程序,它除了播放音乐什么都不做。这个应用背后的想法是,通常你有一个音乐播放器,需要很长时间才能加载,并且有所有没有人,或者至少没有你,使用的额外小工具和小发明。此应用仅播放音乐,句号。它几乎可以瞬间加载

但我得到了一些有趣的东西。我需要找到一种方法让用户从文件系统中选择一首歌曲,但我还没有做到这一点,所以我使用一个固定的歌曲URI来播放它。当我将这首歌放在本地文件系统(即/storage/emulated/0/Music/SongName.mp3)上时,应用程序在按下播放按钮时崩溃。但是,当我把歌曲放在SD卡上时(即/storage/extSdCard/Music/SongName.mp3),它工作得很好

嗯,我让它工作了,但我不知道它是怎么工作的,也不知道为什么。通常我会感到惊讶,不会再碰那段代码,这样它就能继续工作,但这次我在学习Android编程,我想知道它为什么能工作

这是从SD卡播放的代码(works):

p = new MediaPlayer();
p.setAudioStreamType(AudioManager.STREAM_MUSIC);
p.setDataSource(getApplicationContext(), Uri.fromFile(new File("/storage/extSdCard/Tests/Take Back The Night.mp3")));
p.prepare();
p.start();

这是从本地fs播放的代码(不起作用):

p = new MediaPlayer();
p.setAudioStreamType(AudioManager.STREAM_MUSIC);
p.setDataSource(getApplicationContext(), Uri.fromFile(new File("/storage/emulated/0/Music/heybrother.mp3")));
p.prepare();
p.start();

正如您所看到的,这几乎是一样的,所以我得出结论,URI中可能有错误。但我看不到任何打字错误,我重复了多次。URI的格式是否有误


共 (1) 个答案

  1. # 1 楼答案

    我让它工作了

    首先,您需要获得音乐文件夹的路径,如下所示:

    String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
                  .getPath() + "/";
    

    然后,您可以将文件名附加到音乐文件夹中:

    String file = path + "ThatOneSong.mp3";
    

    然后像平常一样玩。(或者你可以排一长队,但那有点杂乱无章。)