Android MediaPlayer - I / O错误 - 找不到文件

时间:2015-01-08 23:46:55

标签: android io android-mediaplayer

我在项目中创建了一个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%肯定是因为应用程序无法找到该文件。

发生了什么事?

干杯

1 个答案:

答案 0 :(得分:0)

您可以使用MediaPlayer.create()代替new MediaPlayer() / setDataSource()轻松为原始资源创建MediaPlayer:

mMediaPlayer = MediaPlayer.create(this, R.raw.t);