[英]Android MediaPlayer unknown error
我正在这样在MainActivity的onCreate()方法中创建MediaPlayer实例
MediaPlayer mPlayer = MediaPlayer.create(this, Uri.fromFile(new File("/storage/emulated/0/soundrecorder/My recording #26.wav")));
它创建成功,但是出现此错误:
07-06 18:33:44.266 18366-18366/com.audiorecorder.wel.voicerecorder E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
07-06 18:33:44.267 18366-18366/com.audiorecorder.wel.voicerecorder E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0
也尝试过此操作,但在logcat上出现相同的错误:
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(this, Uri.fromFile(new File("/storage/emulated/0/soundrecorder/My recording #26.wav")));
} catch (IOException e) {
e.printStackTrace();
}
mp.prepareAsync();
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
我尝试了不同格式的不同音频文件,但结果是相同的错误。 我也尝试过搜索关于stackoverflow的答案,但无法解决问题。 你能帮我吗?
您的文件似乎有问题。 对此进行更新:
musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
然后按照下列步骤操作:
1. getLoaderManager().initLoader(0,null,this);
2. @Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
switch (id){
case 0 : return new CursorLoader(getApplicationContext(),musicUri,null,null,null,null);
return new Loader<>(this);
}
3. @Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
switch (loader.getId()) {
case 0 :
if(data != null && data.moveToFirst()) {
songTitleColumnIndex = data.getColumnIndex(MediaStore.Audio.Media.TITLE);
do {
songTitle = data.getString(songTitleColumnIndex);
songsList.add(songTitle);
} while (data.moveToNext());
}
break;
因此,将SongTitles放置在SongList中,后者是String类型的ArraList。
希望这可以帮助。
尝试使用FileInputStream来使用FileDescriptor启动MediaPlayer:
String yourFilePath = "/wherever/your/file/is.wav";
MediaPlayer mPlayer = new MediaPlayer();
try{
FileInputStream inputStream = new FileInputStream(yourFilePath);
mPlayer.setDataSource(inputStream.getFD());
inputStream.close();
mPlayer.prepare();
mPlayer.start();
}catch (IOException e){
Log.e("IOException", e.getMessage());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.