从内部存储路径播放音频视频文件

问题描述:

我的应用程序无法播放视频和音频文件。我使用内部存储器来保存音频视频文件。这里有我的代码视频和音频不播放错误,显示我的代码是:尝试调用虚拟方法'void android.media.MediaPlayer.setDataSource(java.lang.String) “对空对象引用从内部存储路径播放音频视频文件

public class VideoFileActivity extends Activity { 
String filePath, fileName; 
MediaPlayer mp; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.activity_video_dialogue); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_launcher); 
    SharedPreferences pref = getSharedPreferences("import_pkid", MODE_PRIVATE); 
    filePath = pref.getString("file_path", ""); 
    fileName = pref.getString("file_name", ""); 

    Bundle extras = getIntent().getExtras(); 
     if(extras != null){ 
      filePath = extras.getString("file_path"); 
      fileName = extras.getString("file_name"); 
     } 

     DownloadFiles(); 
     MusicPlay(); 

} 
public void DownloadFiles() { 
    //Downloads Files 
} 
public void MusicPlay() 
    { 
      try { 
       mp.setDataSource(filePath+"/"+fileName); 
      } catch (IllegalArgumentException e1) { 
       e1.printStackTrace(); 
      } catch (IllegalStateException e1) { 
       e1.printStackTrace(); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
     try { 
      mp.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     mp.setLooping(true); 
     mp.start(); 
    } 

}

使用日志语句获取的filePath价值和fileName

我使用mp.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/......./" + name.mp3)播放内部存储音频

你忘了初始化MediaPlayer。

在'mp'上调用方法前添加以下内容。

MediaPlayer mp=new MediaPlayer();