我在项目中创建了一个res / raw文件夹,我在其中放置了一个文件t.mp4。我打算使用textureview通过实现相关接口,使用SurfaceTextureAvailable监听器来播放视频文件。
我在onSurfaceTextureAvailable方法
中创建了一个mediaplayer对象public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Surface s = new Surface(surface);
Log.d("debug", "Surface Texture Available");
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.t));
Log.d("debug", "data source set");
mMediaPlayer.setSurface(s);
Log.d("debug", "Surface set");
mMediaPlayer.prepare();
Log.d("debug", "prepared");
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
Log.d("debug", "listeners set");
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
}
}
我运行应用程序的前几次运行正常,但在处理了我项目的另一个(非相关)部分后,它突然停止工作。
在日志中,我不断收到IOException,我90%肯定是因为应用程序无法找到该文件。
发生了什么事?
干杯
答案 0 :(得分:0)
您可以使用MediaPlayer.create()代替new MediaPlayer()
/ setDataSource()
轻松为原始资源创建MediaPlayer:
mMediaPlayer = MediaPlayer.create(this, R.raw.t);