下载音频文件后,如何使用Android MediaPlayer播放?
播放歌曲(下载后)时,我在下载音频文件后,如何使用Android MediaPlayer播放?,android,android-mediaplayer,Android,Android Mediaplayer,播放歌曲(下载后)时,我在mplayer.setDataSource(fis.getFD())处遇到异常。为什么我在这里会有例外 while (isDownloading) { try { String filePath = PATH + sponser; FileInputStream fis = new FileInputStream(filePath);
mplayer.setDataSource(fis.getFD())处遇到异常代码>。为什么我在这里会有例外
while (isDownloading)
{
try
{
String filePath = PATH + sponser;
FileInputStream fis = new FileInputStream(filePath);
mplayer.setDataSource(fis.getFD() );
mplayer.setOnPreparedListener(new OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp) {
}
});
mplayer.prepare();
mplayer.start();
mplayer.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
isDownloading = false;
}
}
日志:
03-07 17:20:14.400: W/System.err(3942): java.lang.NullPointerException
03-07 17:20:14.400: W/System.err(3942): at com.nelitemusic.MyMixes$CustomAdapter$1.onClick(MyMixes.java:399)
03-07 17:20:14.410: W/System.err(3942): at android.view.View.performClick(View.java:3127)
03-07 17:20:14.410: W/System.err(3942): at android.view.View$PerformClick.run(View.java:12025)
03-07 17:20:14.410: W/System.err(3942): at android.os.Handler.handleCallback(Handler.java:587)
03-07 17:20:14.410: W/System.err(3942): at android.os.Handler.dispatchMessage(Handler.java:92)
03-07 17:20:14.420: W/System.err(3942): at android.os.Looper.loop(Looper.java:132)
03-07 17:20:14.420: W/System.err(3942): at android.app.ActivityThread.main(ActivityThread.java:4126)
03-07 17:20:14.420: W/System.err(3942): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 17:20:14.420: W/System.err(3942): at java.lang.reflect.Method.invoke(Method.java:491)
03-07 17:20:14.420: W/System.err(3942): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
03-07 17:20:14.420: W/System.err(3942): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
03-07 17:20:14.420: W/System.err(3942): at dalvik.system.NativeStart.main(Native Method)
下载歌曲后,您必须运行媒体扫描程序。然后你就可以播放那首歌了
//Broadcast the Media Scanner Intent to trigger it
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
MediaScanner扫描Android SD卡以查找新文件。使用媒体播放器的数据源方法,如下所示
mediaPlayer.setDataSource(fd.getFileDescriptor(),fd.getStartOffset(), fd.getLength());
以避免问题,并确保视频已正确下载 我正在下载另一个活动中的歌曲,并希望在此活动中播放。下载歌曲后,您必须扫描sd卡才能使用该歌曲。