android sdcard读取时报错PVMFErrNotSupported
16lz
2021-01-23
今天做android的一个音乐播放器时,当播放列表里的歌曲时,总是报一个错误:PVMFErrNotSupported
Prepare failed.: status=0x1
检查了半天也没看出是哪里的错误;后来经过查阅资料发现里面有一段代码:
try{
mp = new MediaPlayer();
mp.setDataSource(somePathToAudioFile);
mp.prepare();
mp.start();
}catch(Exception e){
}
里面mp.setDataSource(somePathToAudioFile);这个方法中调用的是setDataSource(String);在Java中有一个FileDescriptor;我们可以通过getFD()方法得到一个FileDescriptor;以避免这些错误;
代码修改后如下:
String audioFilePath = getFilesDir().getAbsolutePath() + File.separator + "aa.mp4";
try {
File file = new File(audioFilePath);
FileInputStream fis = new FileInputStream(file);
mediaPlayer.setDataSource(fis.getFD());
mediaPlayer.prepare();
mediaPlayer.start();
} catch(FileNotFoundException e){
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}
经过测试通过;
Prepare failed.: status=0x1
检查了半天也没看出是哪里的错误;后来经过查阅资料发现里面有一段代码:
try{
mp = new MediaPlayer();
mp.setDataSource(somePathToAudioFile);
mp.prepare();
mp.start();
}catch(Exception e){
}
里面mp.setDataSource(somePathToAudioFile);这个方法中调用的是setDataSource(String);在Java中有一个FileDescriptor;我们可以通过getFD()方法得到一个FileDescriptor;以避免这些错误;
代码修改后如下:
String audioFilePath = getFilesDir().getAbsolutePath() + File.separator + "aa.mp4";
try {
File file = new File(audioFilePath);
FileInputStream fis = new FileInputStream(file);
mediaPlayer.setDataSource(fis.getFD());
mediaPlayer.prepare();
mediaPlayer.start();
} catch(FileNotFoundException e){
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}
经过测试通过;
更多相关文章
- Android .so abi兼容,通用armeabi-v7a和arm64-v8a架构的方法
- Android 首选网络模式默认值的修改方法
- Android代码内存优化建议-OnTrimMemory优化
- Android学习笔记-Android非布局activity中布局文件及控件加载方
- Android基于OpenGL的GLSurfaceView创建一个Activity实现方法
- 【转】Android-Action Bar使用方法
- Gears Android WIFI/基站定位源代码分析