Hi all I am trying to write a sample program to record the video (say camcorder application). When i run my program using the emulator (I have android-sdk- windows-1.5_r3) I see java.io.IOException: prepare failed. error in logcat output.
Further I can see that I have came across this error when i call MediaRecorder.prepare() from CamcorderActivity.surfaceCreated() But I am surprised to see that activity got launched and I am seeing the camera preview! Again the preview is seen only in half of the screen! Its weird!!! Further when i do recorder.start() to record the video I get java.lang.IllegalStateException. Yes this is obvious since the prepare () has failed. But the question is why prepare() has failed ? Can someone please help me to understand whats happening here! Am i missing something ??? thanks in advance ~pp Here is my code ... package com.example; import java.io.IOException; import android.app.Activity; import android.graphics.PixelFormat; import android.media.MediaRecorder; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; public class CamcorderActivity extends Activity implements SurfaceHolder.Callback { private MediaRecorder recorder; private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private boolean recording = false; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // configure the surface getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.main); surfaceView = (SurfaceView) findViewById(R.id.camcordersurface); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); configureRecorder(); } private void configureRecorder() { // configure media recorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); } private void stopRecorder() { try { if (recorder == null) { return; } recorder.stop(); recorder.reset(); recorder.release(); recording = false; recorder = null; } finally { if (recorder != null) { recorder.release(); } } } private void startRecorder() { recorder.start(); recording = true; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { // if not recording then start if (!recording) { startRecorder(); } else { // if already recording then stop stopRecorder(); finish(); } return true; } return super.onKeyDown(keyCode, event); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // do nothing } @Override public void surfaceCreated(SurfaceHolder holder) { recorder.setOutputFile("/sdcard/test" + System.currentTimeMillis() + ".mp4"); recorder.setPreviewDisplay(holder.getSurface()); try { recorder.prepare(); } catch (IOException e) { Log.e("error -- ", e.toString(), e); // TODO: // show error message } } @Override public void surfaceDestroyed(SurfaceHolder holder) { stopRecorder(); } } And the layout ... <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <SurfaceView android:id="@+id/camcordersurface" android:layout_width="fill_parent" android:layout_height="10dip" android:layout_weight="1"> </SurfaceView> </LinearLayout> --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---