Cal*_*inS 10 android media-player
我将song.mp3复制到我项目的资产目录并编写了这段代码:
private MediaPlayer mp;
Uri uri = Uri.parse("file:///android_asset/song.mp3");
mp=MediaPlayer.create(this, uri);
Run Code Online (Sandbox Code Playgroud)
运行create语句后,变量mp为null.怎么了?
谢谢.
Red*_*dax 21
试试这个:
try {
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
player.prepare();
player.start();
}
catch (IllegalArgumentException e) { }
catch (IllegalStateException e) { }
catch (IOException e) { }
Run Code Online (Sandbox Code Playgroud)
试试这个,看看是否有任何异常被捕获:
try {
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(this, uri);
}
catch (NullReferenceArgument e) {
Log.d(TAG, "NullReferenceException: " + e.getMessage());
}
catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
Log.d(TAG, "SecurityException: " + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
捕获的异常将解释您的创建中出现的问题.根据文档,静态创建方法只是上面的try块中的简写.我可以看到的主要区别是静态方法create不会在setDataSource执行时抛出.
| 归档时间: |
|
| 查看次数: |
16450 次 |
| 最近记录: |