impossible de décoder les flux de java.io.FileNotFoundException /storage/emulated/0 open a échoué:ENOENT(Aucun fichier ou répertoire
bonjour, je suis en train d'enregistrer des photos prises sur mon application, mais quand j'essaie d'accéder à la mémoire de placer les données, une erreur qui vient de sortir
impossible de décoder les flux de java.io.FileNotFoundException /storage/emulated/0 open a échoué:ENOENT(Aucun fichier ou répertoire)
c'est mon code.
Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
//TODO Auto-generated method stub
if (data != null){
//Intent mIntent = new Intent();
//mIntent.putExtra("image",imageData);
mCamera.stopPreview();
mPreviewRunning = false;
mCamera.release();
try{
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bitmap= BitmapFactory.decodeByteArray(data, 0, data.length,opts);
bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int newWidth = 300;
int newHeight = 300;
//calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
//createa matrix for the manipulation
Matrix matrix = new Matrix();
//resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
//rotate the Bitmap
matrix.postRotate(-90);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
width, height, matrix, true);
Camera_local_db.image.setImageBitmap(resizedBitmap);
}catch(Exception e){
e.printStackTrace();
}
//StoreByteImage(mContext, imageData, 50,"ImageName");
//setResult(FOTO_MODE, mIntent);
setResult(585);
finish();
}
}
};
Camera.PictureCallback jpegCallback = new Camera. PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File dir_image2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"dddd.jpg");
dir_image2.mkdirs(); //AGAIN CHOOSING FOLDER FOR THE PICTURE(WHICH IS LIKE A SURFACEVIEW
//SCREENSHOT)
if (!dir_image2.mkdirs()) {
Log.e(TAG, "Directory not created");
}
File tmpFile = new File(dir_image2,"TempGhost.jpg"); //MAKING A FILE IN THE PATH
//dir_image2(SEE RIGHT ABOVE) AND NAMING IT "TempGhost.jpg" OR ANYTHING ELSE
try {//SAVING
FileOutputStream fos = new FileOutputStream(tmpFile);
fos.write(data);
fos.close();
//grabImage();
} catch (FileNotFoundException e) {
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
}
//String path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_MOVIES); File file = new File(path, "/" + dir_image2);
//String path = (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+
// File.separator+"TempGhost.jpg");//<---
BitmapFactory.Options options = new BitmapFactory.Options();//<---
options.inPreferredConfig = Bitmap.Config.ARGB_8888;//<---
bmp1 = BitmapFactory.decodeFile(tmpFile.toString(), options);//<---
//THE LINES ABOVE READ THE FILE WE SAVED BEFORE AND CONVERT IT INTO A BitMap
Camera_local_db.image.setImageBitmap(bmp1);
//camera_image.setImageBitmap(bmp1); //SETTING THE BitMap AS IMAGE IN AN IMAGEVIEW(SOMETHING
//LIKE A BACKGROUNG FOR THE LAYOUT)
//TakeScreenshot();//CALLING THIS METHOD TO TAKE A SCREENSHOT
}
};
OriginalL'auteur Andonirock | 2014-08-23
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'écrire pour le stockage externe, assurez-vous que vous avez ajouté l'autorisation:
Vérifie si le stockage externe est disponible pour lire et écrire:
Utiliser la racine de l'annuaire public au lieu d'utiliser la racine de Android.
Si vous souhaitez enregistrer les fichiers publics sur le stockage externe, utilisez la getExternalStoragePublicDirectory()
Si vous souhaitez enregistrer les fichiers qui sont privés de votre application, utilisez le getExternalFilesDir()
Plus d'informations sur le lien http://developer.android.com/training/basics/data-storage/files.html
OriginalL'auteur Jairo Correa
J'ai eu la même erreur, et le seul problème a été la permission android manifest.
OriginalL'auteur Calixto
Tout d'abord, vous l'écriture de l'image à un autre endroit que vous le lisez. Plutôt que de les reconstruire
path
, utilisez letmpFile
valeur que vous avez déjà.Deuxième, ne pas utiliser de
getRootDirectory()
pour obtenir leDCIM
répertoire. UtilisationgetExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
.Troisième, l'utilisation
Log
méthodes pour enregistrer des exceptions, plutôt que de simplement afficher uneToast
, comme vous l'avez peut-être raté l'Toast
et vous n'obtenez pas la trace de la pile associée à votre exception.OriginalL'auteur CommonsWare
J'ai résolu en utilisant ceci:
OriginalL'auteur JackTurky
Ajouter cette autorisation dans le Manifeste Android.
Si elle ne parvient pas à la présente autorisation est présent, alors vous devez vérifier que votre application cible du SDK. Si c'est targetSdkVersion => le 23, alors vous avez besoin de demander des autorisations au Moment de l'Exécution.
Ici
OriginalL'auteur Annada