First, the surface type needs to be push buffers. In your Preview constructor, add the following:
getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); Second, you need to tell the media player where to display the video. You have a line commented out: //mp.setDisplay(mPreview.getHolder().getSurface()); It should look like this: mp.setDisplay(mPreview.getHolder()); If you get stuck, take a look at the VideoView.java widget source code on android.git.kernel.org. It's in the frameworks/base project at core/ java/widget/VideoView.java On Feb 8, 2:58 pm, Ash <ashwin.disco...@gmail.com> wrote: > Play video on android > ------------------------------------- > > I'm trying to play video files on android...can anyone please help > me... > I'm not able to see the video but audio works fine... here is the code > > PLEASE HELP ME... BY GUIDING ME.. BY CORRECTING THE CODE > OR WITH ANY NEW CODE > > package com.vi3; > > import java.io.IOException; > import android.app.Activity; > import android.os.Bundle; > import android.content.Context; > import android.graphics.PixelFormat; > import android.media.MediaPlayer; > import android.media.MediaPlayer.OnBufferingUpdateListener; > import android.media.MediaPlayer.OnCompletionListener; > import android.media.MediaPlayer.OnErrorListener; > import android.util.Log; > import android.view.Menu; > import android.view.SurfaceHolder; > import android.view.SurfaceView; > import android.view.Surface; > import android.view.Window; > //import android.view.Menu.Item; > > public class vi3 extends Activity > { > private static final String LOG_TAG = "|||||||||||||||||"; > private MediaPlayer mp; > > private Preview mPreview; > //private myAcListener myListener = new myAcListener()this; > /** Called when the activity is first created. */ > @Override > public void onCreate(Bundle icicle) > { > super.onCreate(icicle); > Log.i(LOG_TAG, "CameraApp.onCreate"); > mPreview = new Preview(this); > //requestWindowFeature(W); > > // stopMedia(); > // releaseMedia(); > setContentView(R.layout.main); > > //setContentView(mPreview); > playMedia(""); > > } > > private void playMedia(String s_filePath) > { > setContentView(mPreview); > //s_filePath = "/tmp/mp4.mp4"; > s_filePath = "/data/local/video/test_qcif_200_aac_64.mp4"; > //s_filePath = "/tmp/test.mpg"; > //s_filePath = "/tmp/3.3gp"; > Log.i(LOG_TAG, "CameraApp.playMedia"); > mp = new MediaPlayer(); > try > { > mp.setDataSource(s_filePath); > } > catch (IllegalArgumentException e) > { > // TODO Auto-generated catch block > Log.v(LOG_TAG, > "CameraApp.playMedia:IllegalArgumentException"); > e.printStackTrace(); > } > catch (IOException e) > { > Log.v(LOG_TAG, "CameraApp.playMedia:IOException"); > // TODO Auto-generated catch block > e.printStackTrace(); > } > try > { > > //mp.setDisplay(mPreview.getHolder().getSurface()); > mp.prepare(); > int i = mp.getDuration(); > Log.i(LOG_TAG, "Duration:" + String.valueOf(i)); > mp.start(); > } > catch (Exception e) > { > Log.v(LOG_TAG, e.toString()); > mp.stop(); > mp.release(); > } > //setContentView(mPreview); > } > > private void pauseMedia() > { > Log.i(LOG_TAG, "CameraApp.pauseMedia"); > if (null != mp) > { > mp.pause(); > } > } > > private void stopMedia() > { > Log.i(LOG_TAG, "CameraApp.stopMedia"); > if (null != mp) > { > mp.stop(); > } > } > private void releaseMedia() > { > Log.i(LOG_TAG, "CameraApp.releaseMedia"); > if (null != mp) > { > mp.release(); > } > } > class Preview extends SurfaceView implements > SurfaceHolder.Callback > { > SurfaceHolder mHolder; > private boolean mHasSurface; > Preview(Context context) { > super(context); > > mHolder = getHolder(); > mHolder.addCallback(this); > mHasSurface = false; > > //mHolder.setFixedSize(320, 240); > mHolder.setFixedSize(176, 144); > //mHolder.setFixedSize(192, 242); > } > > public void surfaceCreated(SurfaceHolder holder) { > // The Surface has been created, start our main acquisition > thread. > mHasSurface = true; > } > > public void surfaceDestroyed(SurfaceHolder holder) { > // Surface will be destroyed when we return. Stop the > preview. > mHasSurface = false; > } > > public void surfaceChanged(SurfaceHolder holder, int format,int > w, int h) { > // Surface size or format has changed. This should not > happen in this > // example. > } > } > > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---