Android MediaPlayer.create 失败
Android MediaPlayer.create failing
所以我一直在尝试使用 MediaPlayer 做一些事情,如果我这样做的话它会起作用:
mediaPlayer = MediaPlayer.create(this, R.raw.over);
但是,显然这只允许我启动那个文件。
所以,如果我尝试这样的事情:
Uri myUri = Uri.parse("R.raw.over");
mediaPlayer = MediaPlayer.create(this, myUri);
那么 mediaPlayer 不会被创建。任何方法调用
mediaPlayer.start()
抛出 NullPointerException。
我的想法是,如果我让它工作,那么最终我可以从包含 URI 的 ArayList 播放文件。
请尝试应用此代码:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
如果您要播放的所有文件都在 raw 文件夹中,那么您不需要解析 Uri,您只需将它们存储在一个数组中并通过该数组播放即可:
int[] files = {R.raw.over, R.raw.over1, R.raw.over2}
mediaPlayer = MediaPlayer.create(this, files[0]);
所以我一直在尝试使用 MediaPlayer 做一些事情,如果我这样做的话它会起作用:
mediaPlayer = MediaPlayer.create(this, R.raw.over);
但是,显然这只允许我启动那个文件。 所以,如果我尝试这样的事情:
Uri myUri = Uri.parse("R.raw.over");
mediaPlayer = MediaPlayer.create(this, myUri);
那么 mediaPlayer 不会被创建。任何方法调用
mediaPlayer.start()
抛出 NullPointerException。
我的想法是,如果我让它工作,那么最终我可以从包含 URI 的 ArayList 播放文件。
请尝试应用此代码:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
如果您要播放的所有文件都在 raw 文件夹中,那么您不需要解析 Uri,您只需将它们存储在一个数组中并通过该数组播放即可:
int[] files = {R.raw.over, R.raw.over1, R.raw.over2}
mediaPlayer = MediaPlayer.create(this, files[0]);