Re: [android-beginners] Help Needed : MediaRecorder error: java.io.IOException: prepare failed

2010-03-16 Thread LG ZHU
hi:all ,i'm seeing same issue .can you help me ?




2009/9/8 preetam_pict preetam.pa...@gmail.com


 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 Beginners group.
 To post to this group, send email to android-beginners@googlegroups.com
 To unsubscribe from this group, send email to
 

[android-beginners] Help Needed : MediaRecorder error: java.io.IOException: prepare failed

2009-09-08 Thread preetam_pict

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 Beginners group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en