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;
public class newActivity extends Activity {
final int CAMERA_PIC_REQUEST = 1888;
ImageView imageview ;
@Override
public void onCreate(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
Button camera = (Button) findViewById(R.id.button);
camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_PIC_REQUEST ) {
Bitmap image = (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;
public class PermissionUtils {
public static final int REQUEST_EXTERNAL_STORAGE = 1000;
public static final int REQUEST_CAMERA = 2000;
public static void requestExternal(Activity context) {
if (!checkExternal(context)) {
ActivityCompat.requestPermissions(context, new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_EXTERNAL_STORAGE);
}
}
public static void requestCamera(Activity context) {
if (!checkCamera(context)) {
ActivityCompat.requestPermissions(context, new String[]{
Manifest.permission.CAMERA},
REQUEST_CAMERA);
}
}
public static boolean checkExternal(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);
}
public static boolean checkCamera(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
@Override
public void onCreate(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:
public void capturePhoto() {
String myTargetImageFilePath = Environment.getExternalStorageDirectory().toString() + "/test.jpg";
File cameraPhotoFile = new File(myTargetImageFilePath);
Uri CameraFileUri = 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);
}
}
public static void callToCamera(Activity theActivity, final Uri theCameraFileUri) {
System.out.println("theCameraFileUri:" + theCameraFileUri);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, theCameraFileUri); // set the image file name
theActivity.startActivityForResult(intent, SELECT_IMAGE_FROM_CAMERA_CODE);
}
@Override
protected void onActivityResult(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 camera
if (data == null) {
myImageViewSelected.setImageBitmap(createBitmap(myTargetImageFilePath.toString(), 300, 300));
}
}
}
public static Bitmap createBitmap(String theTargetFile, int theReqHight, int theReqWidth) {
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(theTargetFile, bmOptions);
bitmap = Bitmap.createScaledBitmap(bitmap, theReqWidth, theReqHight, true);
return bitmap;
}
Post a Comment for "Camera Not Working?"