2014-06-23 2 views
1

Je développe une application dans laquelle je dois passer du mode capture au mode enregistrement (vidéo) et vice versa.comment passer le mode capture en mode vidéo dans Android par programmation

S'il vous plaît aidez-moi pour cela, je suis cluless ici, s'il vous plaît me suggérer si un tutoriel disponible pour cela.

Tout type d'aide apprécié. Merci.

+0

Comment voulez-vous changer le mode? Sur le bouton cliquer? –

+0

Non, je suis en train de changer de mode à l'aide du contrôle du commutateur. –

Répondre

0

Utilisez cette méthode pour ouvrir l'appareil photo en mode vidéo

private void dispatchTakeVideoIntent() { 
     Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
     if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
      startActivityForResult(takeVideoIntent, 1); 
     } 
    } 

s'il vous plaît passer par cette URL pour plus video basics

Utilisez la classe suivante

public class CaptureVideo extends Activity implements OnClickListener, SurfaceHolder.Callback{ 

    MediaRecorder recorder; 
    SurfaceHolder holder; 
    boolean recording=false; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

     recorder = new MediaRecorder();// Instantiate our media recording object 
     initialiseRecorder(); 
     setContentView(R.layout.view); 

     SurfaceView cameraView = (SurfaceView) findViewById(R.id.surface_view); 
     holder = cameraView.getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

     cameraView.setClickable(true); 
     cameraView.setOnClickListener((OnClickListener) this); 
    } 

    private void initialiseRecorder() { 
     File OutputFile = new File(Environment.getExternalStorageDirectory().getPath()); 
     String video= "/DCIM/100MEDIA/Video"; 
     CamcorderProfile cpHigh = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
     recorder.setProfile(cpHigh);   

     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// generally used also includes h264 and best for flash 
     recorder.setOutputFile(OutputFile.getAbsolutePath()+video+".3gp"); 
     recorder.setMaxDuration(600000); 
    } 
    private void prepareRecorder() { 
     recorder.setPreviewDisplay(holder.getSurface()); 
     try { 
      recorder.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
      finish(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      finish(); 
     } 
    } 
    public void onClick(View v) { 
     if (recording) { 
      recorder.stop(); 
      recording = false; 
      initialiseRecorder(); 
      prepareRecorder(); 
      Toast display = Toast.makeText(this, "Stopped Recording", Toast.LENGTH_SHORT);// toast shows a display of little sorts 
      display.show(); 
     } else { 
      recorder.start(); 
      recording = true; 
     } 
    } 
    public void surfaceCreated(SurfaceHolder holder) { 
     initialiseRecorder(); 
     prepareRecorder(); 
    } 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, 
      int height) { 
    } 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     if (recording) { 
      recorder.stop(); 
      recording = false; 
     } 
     recorder.release(); 
     finish(); 
    } 

}

+0

Je pense que vous ne me recevez pas exactement. J'utilise la vue de surface pour utiliser camara. –

+0

Désolé ... je pensais que c'était en utilisant l'intention. Mise à jour ma réponse –

0

Créer une variable booléenne Boolean video = false; Maintenant, en fonction de l'état du commutateur, basculez la valeur de la variable. Ensuite, chaque fois que vous voulez commencer à enregistrer/prendre une photo, il suffit de vérifier la valeur de la variable video.

static final int REQUEST_IMAGE_CAPTURE = 1; 
static final int REQUEST_VIDEO_CAPTURE = 2; 

if(video) { 

    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
    if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE); 
    } 
} else { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 

} 
+0

merci pour votre réponse. Je veux faire la même chose que la fonctionnalité intégrée de camara. camara est déjà début, ne veulent pas atteindre via l'intention. –

+0

http://stackoverflow.com/questions/14029057/how-to-open-camera-then-switch-to-image-mode-vice-versa –

+0

Aucune réponse acceptée n'y était. –

Questions connexes