几年前我写了一个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);
它工作正常。
我的设备没问题。问题也出现在另一台设备上。
那魔鬼究竟发生了什么?
答案 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();