2012-05-17 149 views
1

有人可以幫助我解決這個奇怪的問題,我想從SDCard播放音頻文件,這是代碼,我知道這是正確的文件路徑,但MediaPlayer給了我一個空例外。任何幫助將不勝感激!Android MediaPlayer提供空例外

File file = new File(android.os.Environment.getExternalStorageDirectory()+"/rockstar.mp3"); 
MediaPlayer m = MediaPlayer.create(getApplicationContext(), Uri.fromFile(file)); 
m.start(); 

這是stacktarce

顯示java.lang.NullPointerException

+0

問題始終把logcat的 –

+1

確保你的SD卡是不是在大容量存儲模式下。由此,您的SD卡將無法供您的應用程序讀取。 –

回答

2

你是不是缺少.getAbsolutePath()

File file = new File(android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+"/rockstar.mp3"); 
+0

謝謝,這個按預期工作,我會在我的代碼中使用它,很多再次感謝! – abaraga

+0

如果它適合你接受答案:)。 –

0

一定要添加正確的許可,您AndroidManifest.xml,這是<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />。 登錄logcat的路徑中的URI,看看是否一切正常,並啓動媒體播放器這樣的:

MediaPlayer player = new MediaPlayer(); 
    player.setDataSource("mnt/sdcard/music.mp3"); 
    player.prepare(); 
    player.start(); 
+0

謝謝!這工作正常! – abaraga

+0

很高興知道這一點。只需要知道,使用'Environment.getExternalStorageDirectory()。getAbsolutePath()+「/ rockstar.mp3」'設置你的音樂文件路徑爲Bo。提及。我用硬編碼的字符串做了這個,只是爲了向你展示這個想法。從未使用過這種方法。 –

0

試試這個:

String path = Environment.getExternalStorageDirectory().getAbsolutePath(); 
path+="/music.mp3" 
mp.setDataSource(path) 
mp.prepare(); 
mp.start();