by JoyLakh » Fri Sep 11, 2009 5:50 am
Hey manemannen,
Apart from Jonpro's version, below pasted code segment worked for me in HTC Magic, I should say this is another form of Jonpro's code.
All the best.
public class VideoRecorder extends Activity
{
private final static String TAG = "Playing";
private MediaRecorder recorder;
private Preview mPreview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
recorder = new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mPreview = new Preview(this,recorder);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(mPreview);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, 0, 0, "StartRecording");
menu.add(0, 1, 0, "StopRecording");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case 0:
try {
recorder.start();
} catch (Exception e) {
String message = e.getMessage();
Log.w(TAG, e);
recorder.release();
}
break;
case 1: //GoToAllNotes
recorder.stop();
recorder.release();
recorder = null;
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
class Preview extends SurfaceView implements SurfaceHolder.Callback
{
SurfaceHolder mHolder;
MediaRecorder tempRecorder;
Preview(Context context, MediaRecorder recorder)
{
super(context);
tempRecorder = recorder;
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public Surface getSurface()
{
return mHolder.getSurface();
}
public void surfaceCreated(SurfaceHolder holder)
{
tempRecorder.setOutputFile("/sdcard/myVideo.3gp");
tempRecorder.setPreviewDisplay(mHolder.getSurface());
try{
tempRecorder.prepare();
} catch (Exception e) {
String message = e.getMessage();
tempRecorder.release();
tempRecorder = null;
}
}
public void surfaceDestroyed(SurfaceHolder holder)
{
if(tempRecorder!=null)
{
tempRecorder.release();
tempRecorder = null;
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
{
}
}
Celebrate Life.