I want to open a camera of a device when we click on a button in our app. Please help me out.
            Asked
            
        
        
            Active
            
        
            Viewed 3.7k times
        
    5
            
            
        - 
                    If you want to use the picture taken in your app use the code provided here [tutorial](http://achorniy.wordpress.com/2010/04/26/howto-launch-android-camera-using-intents/) – pumpkee Apr 26 '11 at 09:36
4 Answers
18
            
            
        Inside Button's onClick,
 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
 startActivityForResult(intent, 0); 
And add Camers Uses Permission in your manifest file.
 <uses-permission android:name="android.permission.CAMERA"></uses-permission>
See the additional discussion here Android camera intent
 
    
    
        Community
        
- 1
- 1
 
    
    
        Kartik Domadiya
        
- 29,868
- 19
- 93
- 104
- 
                    @Kartik using your answer other camera applications are also being in the choice to use do u able to rectify that only default system camera app will open. – PiyushMishra Jan 30 '12 at 11:16
- 
                    i got error Can't connect to camera through this what the solution of it ?? – Nirav Mehta Jun 11 '14 at 08:43
- 
                    You don't need to add `android.permission.CAMERA` to AndroidManifest.xml because you don't use the device cameras, but only run _another application_ called Camera which uses the cameras. – Maksim Dmitriev Jul 08 '14 at 14:05
2
            
            
        Use this
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);
    }
});
 
    
    
        TheWanderer
        
- 16,775
- 6
- 49
- 63
 
    
    
        Guru
        
- 186
- 14
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);
}
 
    
    
        ASHISH KUMAR Tiwary
        
- 568
- 4
- 14
0
            
            
        First you need to filter the system application and then you can check for the camera activity, i just answer the similar question here.
 
    
    
        Community
        
- 1
- 1
 
    
    
        PiyushMishra
        
- 5,743
- 6
- 37
- 57
