2010-06-01 5 views
0

J'essaie de recadrer une photo à utiliser dans un fond d'écran animé, mais je reçois une exception FileNotFoundException lorsque l'activité de recadrage tente de sauvegarder ma nouvelle image recadrée. Voici le code que je utilise:FileNotFoundException lors du recadrage d'une photo

File file = new File(getFilesDir(), "wallpaper.jpg"); 

Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setData(uri); 

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

intent.putExtra("outputX", metrics.widthPixels * 2); 
intent.putExtra("outputY", metrics.heightPixels); 
intent.putExtra("aspectX", metrics.widthPixels * 2); 
intent.putExtra("aspectY", metrics.heightPixels); 
intent.putExtra("scale", true); 
intent.putExtra("noFaceDetection", true); 
intent.putExtra("output", Uri.parse("file:/" + file.getAbsolutePath())); 

startActivityForResult(intent, REQUEST_CROP_IMAGE); 

Le fichier wallpaper.jpg semble exister sur l'explorateur de fichiers DDMS donc je ne suis pas sûr de ce que je fais mal. Tout conseil est grandement appréciée.

Répondre

0

getFilesDir() retourne le répertoire privé de votre application. La caméra ne peut pas accéder à votre répertoire privé. Pour rendre wallpaper.jpg accessible par Camera placez-le dans un dossier publix. Par exemple, comme Alex a dit qu'il peut être la carte SD racine. Le code fixe serait:

File file = new File(Environment.getExternalStorageDirectory(), "wallpaper.jpg"); 
0

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Si vous utilisez l'API de niveau 7 ou moins, utilisation getExternalStorageDirectory(), à ouvrir un fichier représentant la racine de le stockage externe. Vous devriez alors écrire vos données dans le répertoire suivant:

/Android/data // fichiers/ Le est votre style Java nom du package, comme "com.example.android.app". Si l'appareil de l'utilisateur exécute le niveau d'API 8 ou supérieur et qu'il désinstalle votre application , ce répertoire et tous ses contenus seront supprimés .

Questions connexes