Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid Custom Camera app picture not appearing in gallery until I reboot my phone
    primarykey
    data
    text
    <p>I have been working on a camera app, I want it to be when I press the "Capture" button it takes a picture and saves it to the SDcard so it can be viewed in the gallery. </p> <p>However at current it fails to save how I want it to. At current when I press capture it takes a picture, but the picture is only shown in the gallery after I fully restart my phone.</p> <p>This problem has been messing with me for weeks, I have mostly followed the tutorial android gives.</p> <p>Here is my code for the main class which handle pictures.</p> <pre><code> private PictureCallback mPicture = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); if (pictureFile == null){ Log.d(TAG, "Error creating media file, check storage permissions: "); return; } try { FileOutputStream fos = new FileOutputStream(pictureFile); fos.write(data); fos.close(); } catch (FileNotFoundException e) { // Log.d(TAG, "File not found: " + e.getMessage()); } catch (IOException e) { // Log.d(TAG, "Error accessing file: " + e.getMessage()); } } }; private static File getOutputMediaFile(int type){ // To be safe, you should check that the SDCard is mounted // using Environment.getExternalStorageState() before doing this. File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "MyCameraApp"); // This location works best if you want the created images to be shared // between applications and persist after your app has been uninstalled. // Create the storage directory if it does not exist if (! mediaStorageDir.exists()){ if (! mediaStorageDir.mkdirs()){ Log.d("MyCameraApp", "failed to create directory"); return null; } } // Create a media file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); File mediaFile; if (type == MEDIA_TYPE_IMAGE){ mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg"); } else if(type == MEDIA_TYPE_VIDEO) { mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_"+ timeStamp + ".mp4"); } else { return null; } return mediaFile; } public void onClick(View v) { mCamera.takePicture(null, null, mPicture); Context context = getApplicationContext(); CharSequence text = "Click Detected"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show(); } </code></pre> <p>My log cat shows the following when I click capture</p> <p>Level: E Tag: Camera Text: in handlemessage for CAMERA_MSG_RAW_IMAGE</p> <p>My permissions are <br></p> <pre><code>uses-permission android:name="android.permission.CAMERA" uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" </code></pre> <p>Any help is much appreciated. Thanks</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload