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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---