Playing video using MediaPlayer class

26,885

You can override the onSizeChanged() function of the SurfaceView class to get and set the size of the view.

protected void onSizeChanged (int w, int h, int oldw, int oldh)

When ever the screen size has changed, this class is called.

As a second alternative, you may be able to set the size by setting the layout parameters (unsure if this works with ScrollView):

@Override
public void surfaceCreated(SurfaceHolder holder) {
    android.view.ViewGroup.LayoutParams lp = this.getLayoutParams();
    lp.width = 1000; // required width
    lp.height = 1000; // required height
    this.setLayoutParams(lp);
}
Share:
26,885
Chaitanya K
Author by

Chaitanya K

I Like to share knowledge and learn new things. Please vote my questions and answers up if you get benefitted from them. Please do check my articles at: http://chaitanyaidm.wordpress.com http://chaitanyaiam.blogspot.com http://chaitanyasailpoint.wordpress.com

Updated on January 05, 2020

Comments

  • Chaitanya K
    Chaitanya K over 4 years

    I am trying to make use of MediaPlayer class for playing a video file. The problem is video is not getting displayed at all though I can hear the sound in the video playing.

    Following is the code of activity

    public class MainActivity extends Activity implements OnClickListener {
    
    private SurfaceView surfaceView;
    private Button btnPlay;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        addListener();
    
    }
    
    private void init() {
        // TODO Auto-generated method stub
        surfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
        btnPlay = (Button) findViewById(R.id.btnPlay);
    }
    
    private void addListener() {
        // TODO Auto-generated method stub
    
        btnPlay.setOnClickListener(this);
    }
    
    MediaPlayer mediaPlayer = null;
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btnPlay:
            try{
            if (mediaPlayer != null) {
                mediaPlayer.reset();
                mediaPlayer.release();
            }else{
            getWindow().setFormat(PixelFormat.UNKNOWN);
            MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.wildlife);
            SurfaceHolder surfaceHolder = surfaceView.getHolder();
    
            surfaceHolder.setFixedSize(176, 144);
            surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            mediaPlayer.setDisplay(surfaceHolder);
            mediaPlayer.start();}
            }catch (Exception e) {
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
            break;
    
        default:
            break;
        }
      }
       }
    

    Following is the code of layout xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    
    <SurfaceView
        android:id="@+id/surfaceView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />
    
    <Button
        android:id="@+id/btnPlay"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/surfaceView1"
        android:layout_alignTop="@+id/surfaceView1"
        android:text="@string/play" />
    
    </RelativeLayout>
    

    please tell me what needs to be done? Thanks in advance.