Following activity takes a picture, stores it in storage and displays it in the ImageView of the Activity. When I click a photo and hit okay button, a message 'Unfortunately, Camera has stopped' appears and Camera activity screen is displayed. ImageView is not set. Images clicked are stored in the storage (Checked with File explorer)
Camera.java
public class Camera extends AppCompatActivity {
static final int REQUEST_TAKE_PHOTO = 1;
String mCurrentPhotoPath;
ImageView ivCaptured;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
ivCaptured = (ImageView) findViewById(R.id.ivCaptured);
dispatchTakePictureIntent();
}
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
}
// Continue only if the File was successfully created
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(Camera.this, "com.example.android.fileprovider", photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
//galleryAddPic();
setPic();
}
}
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = "file:" + image.getAbsolutePath();
return image;
}
/*private void galleryAddPic() {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(mCurrentPhotoPath);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}*/
private void setPic() {
// Get the dimensions of the View
int targetW = ivCaptured.getLayoutParams().width;
int targetH = ivCaptured.getLayoutParams().height;
// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outWidth;
// Determine how much to scale down the image
int scaleFactor = Math.min(photoW / targetW, photoH / targetH);
// Decode the image file into a Bitmap sized to fill the View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
ivCaptured.setImageBitmap(bitmap);
}
}
activity_camera.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:layout_width="250dp"
android:layout_height="250dp"
android:id="@+id/ivCaptured"
android:src="@drawable/photo"
android:baselineAlignBottom="false" />
</LinearLayout>
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kjsce.beproject.samarthan">
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Home" />
<activity android:name=".Camera" />
<activity android:name=".History"></activity>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true"
android:readPermission="com.company.app.fileprovider.READ">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
</manifest>
file_paths.xml:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images" path="Android/data/com.kjsce.beproject.samarthan/files/Pictures" />
</paths>
LogCat:
09-01 18:23:38.278 11159-11159/? D/dalvikvm: Late-enabling CheckJNI
09-01 18:23:38.378 11159-11159/com.kjsce.beproject.samarthan I/ActivityThread: Pub com.example.android.fileprovider: android.support.v4.content.FileProvider
09-01 18:23:38.438 11159-11159/com.kjsce.beproject.samarthan W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
09-01 18:23:38.442 11159-11159/com.kjsce.beproject.samarthan I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested
09-01 18:23:38.442 11159-11159/com.kjsce.beproject.samarthan W/dalvikvm: VFY: unable to resolve interface method 14517: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
09-01 18:23:38.442 11159-11159/com.kjsce.beproject.samarthan D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
09-01 18:23:38.442 11159-11159/com.kjsce.beproject.samarthan I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode
09-01 18:23:38.442 11159-11159/com.kjsce.beproject.samarthan W/dalvikvm: VFY: unable to resolve interface method 14521: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
09-01 18:23:38.442 11159-11159/com.kjsce.beproject.samarthan D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002
09-01 18:23:38.494 11159-11159/com.kjsce.beproject.samarthan I/dalvikvm: Could not find method android.view.ViewGroup.onRtlPropertiesChanged, referenced from method android.support.v7.widget.Toolbar.onRtlPropertiesChanged
09-01 18:23:38.494 11159-11159/com.kjsce.beproject.samarthan W/dalvikvm: VFY: unable to resolve virtual method 14417: Landroid/view/ViewGroup;.onRtlPropertiesChanged (I)V
09-01 18:23:38.506 11159-11159/com.kjsce.beproject.samarthan D/dalvikvm: VFY: replacing opcode 0x6f at 0x0007
09-01 18:23:38.518 11159-11159/com.kjsce.beproject.samarthan I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations
09-01 18:23:38.518 11159-11159/com.kjsce.beproject.samarthan W/dalvikvm: VFY: unable to resolve virtual method 407: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
09-01 18:23:38.518 11159-11159/com.kjsce.beproject.samarthan D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
09-01 18:23:38.522 11159-11159/com.kjsce.beproject.samarthan I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
09-01 18:23:38.522 11159-11159/com.kjsce.beproject.samarthan W/dalvikvm: VFY: unable to resolve virtual method 429: Landroid/content/res/TypedArray;.getType (I)I
09-01 18:23:38.522 11159-11159/com.kjsce.beproject.samarthan D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
09-01 18:23:38.778 11159-11163/com.kjsce.beproject.samarthan D/dalvikvm: GC_CONCURRENT freed 207K, 3% free 10939K/11271K, paused 151ms+1ms, total 214ms
09-01 18:23:38.814 11159-11159/com.kjsce.beproject.samarthan D/libEGL: loaded /system/lib/egl/libEGL_genymotion.so
09-01 18:23:38.830 11159-11159/com.kjsce.beproject.samarthan D/libEGL: loaded /system/lib/egl/libGLESv1_CM_genymotion.so
09-01 18:23:38.834 11159-11159/com.kjsce.beproject.samarthan D/libEGL: loaded /system/lib/egl/libGLESv2_genymotion.so
09-01 18:23:38.866 11159-11159/com.kjsce.beproject.samarthan W/EGL_genymotion: eglSurfaceAttrib not implemented
09-01 18:23:38.874 11159-11159/com.kjsce.beproject.samarthan D/OpenGLRenderer: Enabling debug mode 0
09-01 18:23:38.962 11159-11159/com.kjsce.beproject.samarthan D/OpenGLRenderer: TextureCache::get: create texture(0xb9615438): name, size, mSize = 2, 4096, 4096
09-01 18:23:40.690 11159-11159/com.kjsce.beproject.samarthan W/EGL_genymotion: eglSurfaceAttrib not implemented
09-01 18:23:41.906 11159-11159/com.kjsce.beproject.samarthan D/dalvikvm: GC_FOR_ALLOC freed 47K, 3% free 11140K/11399K, paused 4ms, total 4ms
09-01 18:23:41.914 11159-11159/com.kjsce.beproject.samarthan D/OpenGLRenderer: TextureCache::flush: target size: 2457
09-01 18:23:41.914 11159-11159/com.kjsce.beproject.samarthan D/OpenGLRenderer: TextureCache::callback: name, removed size, mSize = 2, 4096, 0
09-01 18:23:46.990 11159-11159/com.kjsce.beproject.samarthan W/EGL_genymotion: eglSurfaceAttrib not implemented
09-01 18:23:46.994 11159-11159/com.kjsce.beproject.samarthan D/OpenGLRenderer: TextureCache::get: create texture(0xb9615438): name, size, mSize = 6, 4096, 4096