Skip to content Skip to sidebar Skip to footer

Camera Not Working?

I was developing an app just to open camera and capture images. I am new to this and I cannot understand what am I doing wrong. Please someone help me with this, I am posting my ja

Solution 1:

Try this

package com.chiragsharmaengineer.linked_layouts;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;



publicclassnewActivityextendsActivity {

finalintCAMERA_PIC_REQUEST=1888;
ImageView imageview ;
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the view from new_activity.xml
setContentView(R.layout.activity_new);

//Camera
 imageview = findViewById(R.id.camera); //sets imageview as Buttoncamera= (Button) findViewById(R.id.button);
camera.setOnClickListener(newView.OnClickListener() {
    @OverridepublicvoidonClick(View v) {

        IntentcameraIntent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

       }
     });

    }

    @OverridepublicvoidonActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
   if (requestCode == CAMERA_PIC_REQUEST ) {
    Bitmapimage= (Bitmap) data.getExtras().get("data");
    imageview.setImageBitmap(image);
    } 
 }

Solution 2:

You forgot to request the permisssions, since Marshmallow you need to request them at runtime:

1) Create a new java class PermissionUtils and paste this code:

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;

publicclassPermissionUtils {

    publicstatic final int REQUEST_EXTERNAL_STORAGE = 1000;
    publicstatic final int REQUEST_CAMERA = 2000;



    publicstaticvoidrequestExternal(Activity context) {
        if (!checkExternal(context)) {
            ActivityCompat.requestPermissions(context, newString[]{
                            Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    REQUEST_EXTERNAL_STORAGE);
        }
    }


    publicstaticvoidrequestCamera(Activity context) {
        if (!checkCamera(context)) {
            ActivityCompat.requestPermissions(context, newString[]{
                            Manifest.permission.CAMERA},
                    REQUEST_CAMERA);
        }
    }


    publicstaticbooleancheckExternal(Context context) {
        return !(ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED);
    }


    publicstaticbooleancheckCamera(Context context) {
        return !(ActivityCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED);
    }
}

2) Then in your newActivity class add those 2 lines in onCreate() method

@OverridepublicvoidonCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Get the view from new_activity.xml // Premission check lines go here!PermissionUtils.requestCamera(this);
    PermissionUtils.requestExternal(this);

Now the app will ask you for a permission when started and the camera intent will work. I also aded EXTERNAL_STORAGE permission because I guess you would like to save the picture later on, right?

Solution 3:

publicvoidcapturePhoto() {
        StringmyTargetImageFilePath= Environment.getExternalStorageDirectory().toString() + "/test.jpg";

        FilecameraPhotoFile=newFile(myTargetImageFilePath);
        UriCameraFileUri=null;
        if (cameraPhotoFile == null) {
            Toast.makeText(this,
                    "01 - Error: While getting the storage Name file for Camera ... ",
                    Toast.LENGTH_LONG).show();
        } else {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                CameraFileUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName()
                                + ".provider",
                        cameraPhotoFile);
            } else {
                CameraFileUri = Uri.fromFile(cameraPhotoFile);
            }
            callToCamera(this,
                    CameraFileUri);

        }
    }

    publicstaticvoidcallToCamera(Activity theActivity, final Uri theCameraFileUri) {

            System.out.println("theCameraFileUri:" + theCameraFileUri);
            Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, theCameraFileUri); // set the image file name
            theActivity.startActivityForResult(intent, SELECT_IMAGE_FROM_CAMERA_CODE);
    }


        @OverrideprotectedvoidonActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == SELECT_IMAGE_FROM_CAMERA_CODE) {
            //Here data is null because we are selecting image from cameraif (data == null) {
                myImageViewSelected.setImageBitmap(createBitmap(myTargetImageFilePath.toString(), 300, 300));
            }
        }
    }


    publicstatic Bitmap createBitmap(String theTargetFile, int theReqHight, int theReqWidth) {
        BitmapFactory.OptionsbmOptions=newBitmapFactory.Options();
        Bitmapbitmap= BitmapFactory.decodeFile(theTargetFile, bmOptions);
        bitmap = Bitmap.createScaledBitmap(bitmap, theReqWidth, theReqHight, true);
        return bitmap;
    }

Post a Comment for "Camera Not Working?"