2011-04-26 20 views
5

Quiero abrir una cámara de un dispositivo cuando hacemos clic en un botón en nuestra aplicación. Por favor, ayúdame.lanzamiento de la cámara en el botón clic en android

+0

Si desea utilizar la imagen tomada en su aplicación para utilizar el código proporcionado aquí [ tutorial] (http://achorniy.wordpress.com/2010/04/26/howto-launch-android-camera-using-intents/) – pumpkee

Respuesta

17

Dentro onClick del botón,

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
startActivityForResult(intent, 0); 

y añadir Camers Usos permiso en el archivo de manifiesto.

<uses-permission android:name="android.permission.CAMERA"></uses-permission> 

Véase la discusión adicional aquí Android camera intent

+0

Bhai ACTION_CAMERA_BUTTON nahi le raha hai. No funciona –

+0

Oye, por error, escribí eso..ver la respuesta editada .. –

+0

@Kartik usando su respuesta, otras aplicaciones de la cámara también están en la opción de usar ¿puede rectificar que solo se abrirá la aplicación predeterminada de la cámara del sistema? . – PiyushMishra

0

primer lugar es necesario filtrar la aplicación del sistema y luego se puede comprobar la actividad de la cámara, acabo de responder a la pregunta similar here.

0

Utilice esta

` BtnSelectImage.setOnClickListener(new Button.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       startCamera(); 
       Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, 
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI.getPath()); 
       startActivityForResult(intent, 1); 
      } 
     });                        ` 
0
#initialize in main activity 
    path = Environment.getExternalStorageDirectory() 
      + "/images/make_machine_example.jpg"; # 
    ImageView image=(ImageView)findViewById(R.id.image); 
//--------------------------------------------------|| 

public void FromCamera(View) { 

    Log.i("camera", "startCameraActivity()"); 
    File file = new File(path); 
    Uri outputFileUri = Uri.fromFile(file); 
    Intent intent = new Intent(
      android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, 1); 

} 

public void FromCard() { 
    Intent i = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(i, 2); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 2 && resultCode == RESULT_OK 
      && null != data) { 

     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     bitmap = BitmapFactory.decodeFile(picturePath); 
     image.setImageBitmap(bitmap); 

     if (bitmap != null) { 
      ImageView rotate = (ImageView) findViewById(R.id.rotate); 

     } 

    } else { 

     Log.i("SonaSys", "resultCode: " + resultCode); 
     switch (resultCode) { 
     case 0: 
      Log.i("SonaSys", "User cancelled"); 
      break; 
     case -1: 
      onPhotoTaken(); 
      break; 

     } 

    } 

} 

protected void onPhotoTaken() { 
    // Log message 
    Log.i("SonaSys", "onPhotoTaken"); 
    taken = true; 
    imgCapFlag = true; 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inSampleSize = 4; 
    bitmap = BitmapFactory.decodeFile(path, options); 
    image.setImageBitmap(bitmap); 


} 
-2

Esto funciona (en el método de ciclo de vida de un fragmento onCreateView):

Button button1 = (Button) view.findViewById(R.id.button1); 
    button1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)); 
     } 
    }); 
Cuestiones relacionadas