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?"