2016-12-16 49 views
2

我试着让用户打开一个音频文件并播放这个文件。但是,MediaPlayer.create()方法返回null。这里是我的代码:android:mediaplayer.create()返回null

MediaPlayer mediaPlayer; 

public void start(View v) { 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("audio/*"); 
    startActivityForResult(intent,1); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode == RESULT_OK) { 
     Uri uri = data.getData(); 
     mediaPlayer = MediaPlayer.create(this,uri); 
     //startThread(); 
     mediaPlayer.start(); 
    } else { 
     mediaPlayer.start(); 
    } 
} 

我试过用mp3文件,我的设备没有问题与其他玩家玩。 Uri我看起来像这样"content://media/external/audio/media/137650" 我在做什么错了?

+0

create()API如果以某种方式失败,则返回null。 在这种情况下,原因是由于损坏的MP3文件。你尝试过不同的文件吗? –

+1

确保您具有'READ_EXTERNAL_STORAGE'权限。这反过来又要求您申请运行时权限,如果您的'targetSdkVersion'为23或更高,并且您正在测试Android 6.0或更高版本。您也可以检查LogCat中是否有任何相关消息,因为“MediaPlayer”倾向于在警告严重性的情况下记录东西并且不会抛出异常。另外,不要在你的'else'块中调用'mediaPlayer.start()',因为你还没有初始化'mediaPlayer'。 – CommonsWare

+0

是的,正如我所说,其他玩家可以播放这些文件。他们肯定没有腐败 – Ginso

回答

0

尝试用下面的代码:

MediaPlayer mPlayer = new MediaPlayer(); 
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mPlayer.setDataSource(getApplicationContext(), uri); 
mPlayer.prepare(); 
mPlayer.start(); 
0

这发生在我一次错误是无法创建的媒体,这是这是造成错误文件的.wav当我用MP3播放错误是文件不在

+0

这与问题有什么关系(OP没有那个错误 - 他们得到一个'null'!) –

+0

'mediaPlayer = MediaPlayer.create(this,uri);'这行产生的错误是因为在这种情况下从uri获得的文件格式。所以在这行之后,如果你做'mediaPlayer.start()'这将产生空的异常......所以我的意思是文件格式是这个异常背后的核心问题,至少对于我的情况 – Tabish

+0

这部分是为了添加一个答案OP的问题,不是用你的代码描述问题,而是你如何修复它! –