Android MediaPlayer无法读取SDCARD?

时间:2015-03-20 12:28:21

标签: android android-mediaplayer

几年前我写了一个Android应用程序(使用Eclipse和ADT)。最近,我不得不使用 Android Studio 回到它,因为它神秘地停止了工作。

我已将问题追溯到MediaPlayer。如果它正在尝试访问外部存储( sdcard0 ),则无法再创建MediaPlayer。多年前工作的Android权限今天仍然可以使用,所以我不知道问题是什么。

我的应用程序从Internet复制音频文件并将它们放在外部存储中。这证明 sdcard0 工作正常。

违规代码是:

mp = MediaPlayer.create(getApplicationContext(), "/storage/sdcard0/Android/data/com.somename.myapp/files/beach.mp3");

这给了我一个NullPointerException

如果我将此音频文件复制到我的资源中并执行此操作:

mp = MediaPlayer.create(getApplicationContext(), R.raw.beach);

它工作正常。

我的设备没问题。问题也出现在另一台设备上。

那魔鬼究竟发生了什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

  

在某些Android应用程序中,我们可能会从中下载mp3文件   互联网并将其保存在SD卡中。在这种情况下,我们会找到并发挥   URI的音频文件。如果你想创建一个Android音乐播放器   应用程序,这将是处理音乐的正确方法。

MediaPlayer mPlayer = new MediaPlayer();
Uri myUri = Uri.parse("file:///sdcard/path/to/your/example.mp3");
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(getApplicationContext(), myUri);
mPlayer.prepare();
mPlayer.start();