无法解析方法' SetDataSource(android.net.Uri)'

时间:2016-10-07 04:12:36

标签: android

班级代码:

package com.example.chirag.cook;
import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
 import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


public class YourMovieActivity extends Activity implements     SurfaceHolder.Callback {
private MediaPlayer mp = null;
//...
SurfaceView mSurfaceView=null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mp = new MediaPlayer();
    mSurfaceView = (SurfaceView) findViewById(R.id.surface);
    //...
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    Uri video = Uri.parse("android.resource://" + getPackageName() + "/"
            + R.raw.bgvideo);

    mp.setDataSource(video);
    mp.prepare();

    //Get the dimensions of the video
    int videoWidth = mp.getVideoWidth();
    int videoHeight = mp.getVideoHeight();

    //Get the width of the screen
    int screenWidth = getWindowManager().getDefaultDisplay().getWidth();

    //Get the SurfaceView layout parameters
    android.view.ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();

    //Set the width of the SurfaceView to the width of the screen
    lp.width = screenWidth;

    //Set the height of the SurfaceView to match the aspect ratio of the video
    //be sure to cast these as floats otherwise the calculation will likely be 0
    lp.height = (int) (((float)videoHeight / (float)videoWidth) * (float)screenWidth);

    //Commit the layout parameters
    mSurfaceView.setLayoutParams(lp);

    //Start video
    mp.start();
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}

并且,mp.prepare向我展示了一个java.io.IOException。 此代码用于在后台播放视频。 mp.setDataSource(视频);向我显示一条错误,上面写着"无法解析方法' SetDataSource(android.net.Uri)'"

1 个答案:

答案 0 :(得分:1)

试试这个

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mp = new MediaPlayer();
        mSurfaceView = (SurfaceView) findViewById(R.id.surface);
        holder = mSurfaceView .getHolder();
        //...
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        // TODO Auto-generated method stub
        mp.setDisplay(holder);
        Uri video = Uri.parse("android.resource://" + getPackageName() + "/"
                + R.raw.bgvideo);
        try{
            mp.setDataSource(this,video);
            mp.prepare();
            mp.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }    
    }