Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 14th, 2012  |  syntax: None  |  size: 4.44 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Record Video from Camera via Version Android 2.2
  2. package app.raceway.com;
  3.  
  4. import java.io.File;
  5. import java.io.IOException;
  6.  
  7. import android.app.Activity;
  8. import android.content.pm.ActivityInfo;
  9. import android.hardware.Camera;
  10. import android.media.CamcorderProfile;
  11. import android.media.MediaRecorder;
  12. import android.os.Bundle;
  13. import android.os.Environment;
  14. import android.util.Log;
  15. import android.view.SurfaceHolder;
  16. import android.view.SurfaceView;
  17. import android.view.View;
  18. import android.view.View.OnClickListener;
  19. import android.view.Window;
  20. import android.view.WindowManager;
  21. import android.widget.Toast;
  22.  
  23. public class VideoCapture extends Activity implements  SurfaceHolder.Callback {
  24.     MediaRecorder recorder;
  25.     SurfaceHolder holder;
  26.     public Camera camera;
  27.     File video;
  28.     String filePath;
  29.     boolean recording = false;
  30.       private static final int FRAME_RATE = 15;
  31.  
  32.       private static final int CIF_WIDTH = 320;
  33.  
  34.       private static final int CIF_HEIGHT = 240;
  35. @Override
  36. public void onCreate(Bundle savedInstanceState) {
  37.     super.onCreate(savedInstanceState);
  38.     requestWindowFeature(Window.FEATURE_NO_TITLE);
  39.     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  40.             WindowManager.LayoutParams.FLAG_FULLSCREEN);
  41.     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  42.  
  43.  
  44.     recorder = new MediaRecorder();
  45.  
  46.     setContentView(R.layout.main);
  47.  
  48.     SurfaceView cameraView = (SurfaceView) findViewById(R.id.cameraView);
  49.     holder = cameraView.getHolder();
  50.     holder.addCallback(this);
  51.     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  52.  
  53.     String path=Environment.getExternalStorageDirectory().getAbsolutePath()+
  54.     "/video/videocapture_example.mpg4";
  55.     // make sure the directory we plan to store the recording in exists
  56.     File sampleDir = Environment.getExternalStorageDirectory();
  57.     try {
  58.         video = new File(sampleDir+"/videofile.3gp");
  59.         sampleDir.createNewFile();
  60.           //video = File.createTempFile("videofile", ".3gp", sampleDir);
  61.       }
  62.       catch (IOException e)
  63.       {
  64.           Log.e("deneme","sdcard access error");
  65.  
  66.       }
  67.       filePath=video.getAbsolutePath();
  68.  
  69. }
  70.  
  71. private void initRecorder() {
  72.  
  73.     recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
  74.     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  75.  
  76. }
  77. private void prepareRecorder() throws IOException{
  78.     recorder.setCamera(camera);
  79.     recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
  80.     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  81.     recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
  82.     recorder.setOutputFile(filePath);
  83.     recorder.setMaxDuration(50000); // 50 seconds
  84.     recorder.setMaxFileSize(5000000); // Approximately 5 megabytes
  85. try {
  86.  
  87. } catch (IllegalStateException e) {
  88.     // TODO Auto-generated catch block
  89.     e.printStackTrace();
  90. }
  91.  
  92.  
  93. }
  94.  
  95.  
  96.  
  97. public void onclickSaveVideo(View v) throws IOException {
  98.     if (recording) {
  99.     Toast t=new Toast(getApplicationContext());
  100.     t.makeText(getApplicationContext(), "Video Recording stopped",Toast.LENGTH_SHORT);
  101.     t.show();
  102.         recorder.stop();
  103.         recording = false;
  104.  
  105.         // Let's initRecorder so we can record again
  106.         initRecorder();    
  107.     } else {
  108.         try {
  109.             prepareRecorder();
  110.             //recorder.prepare();
  111.         } catch (IllegalStateException e) {
  112.             // TODO Auto-generated catch block
  113.             e.printStackTrace();
  114.         }
  115.         recording = true;
  116.         recorder.prepare();
  117.         recorder.start();
  118.         try {
  119.             Thread.sleep(10000);
  120.         } catch (InterruptedException e) {
  121.             // TODO Auto-generated catch block
  122.             e.printStackTrace();
  123.         }
  124.         recorder.stop();
  125.         Toast t=new Toast(getApplicationContext());
  126.         t.makeText(getApplicationContext(), "Video Recording started",Toast.LENGTH_SHORT);
  127.         t.show();
  128.     }
  129. }
  130. @Override
  131. public void surfaceCreated(SurfaceHolder holder) {
  132.     camera=Camera.open();
  133.  
  134.     try {
  135.         camera.setPreviewDisplay(holder);
  136.     } catch (IOException e1) {
  137.         // TODO Auto-generated catch block
  138.         e1.printStackTrace();
  139.     }
  140.     camera.startPreview();
  141.     camera.unlock();
  142. }
  143. @Override
  144. public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  145.  
  146. }
  147. @Override
  148. public void surfaceDestroyed(SurfaceHolder holder) {
  149.     if (recording) {
  150.         recorder.stop();
  151.         recording = false;
  152.     }
  153.     recorder.release();
  154.     finish();
  155.     camera.release();
  156. }
  157.  
  158.  
  159. }