Enregistrement d'image Android
Bonjour,
Je me permet de poster sur ce forum car je ne trouves vraiment pas de solution a mon problème !
Je souhaite prendre une photo et l'enregistrer sur le téléphone
J'ai mis en place une SurfaceView pour prendre la photo mais lors de l'enregistrement sa bloque !
En effet j'ai une erreur dans le log cat qui me dit (Permission Denied)
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
//String fl = "test.jpg";
File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/DCIM/Camera/pictures/test.jpg");
// Current state of the external media
String extState = Environment.getExternalStorageState();
// External media can be written onto
if (extState.equals(Environment.MEDIA_MOUNTED))
{
try {
// Make sure the path exists
// boolean exists = (new File(path2)).exists();
/* if (!exists){
new File(path2).mkdirs();
} */
// Open output stream
FileOutputStream fOut = new FileOutputStream(path);
// Log.e("lol", path+fl);
fOut.write(data);
// Close output stream
fOut.flush();
fOut.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}; |
Et voici l'erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
05-11 09:04:57.156: W/System.err(3702): java.io.FileNotFoundException: /mnt/sdcard/DCIM/Camera/pictures/test.jpg (Permission denied)
05-11 09:04:57.195: W/System.err(3702): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
05-11 09:04:57.195: W/System.err(3702): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
05-11 09:04:57.195: W/System.err(3702): at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
05-11 09:04:57.195: W/System.err(3702): at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
05-11 09:04:57.195: W/System.err(3702): at com.test.android.AppareilPhotoActivity$1.onPictureTaken(AppareilPhotoActivity.java:163)
05-11 09:04:57.195: W/System.err(3702): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:612)
05-11 09:04:57.195: W/System.err(3702): at android.os.Handler.dispatchMessage(Handler.java:99)
05-11 09:04:57.195: W/System.err(3702): at android.os.Looper.loop(Looper.java:132)
05-11 09:04:57.195: W/System.err(3702): at android.app.ActivityThread.main(ActivityThread.java:4134)
05-11 09:04:57.195: W/System.err(3702): at java.lang.reflect.Method.invokeNative(Native Method)
05-11 09:04:57.195: W/System.err(3702): at java.lang.reflect.Method.invoke(Method.java:491)
05-11 09:04:57.195: W/System.err(3702): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-11 09:04:57.195: W/System.err(3702): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-11 09:04:57.195: W/System.err(3702): at dalvik.system.NativeStart.main(Native Method)
05-11 09:04:57.203: W/System.err(3702): java.io.FileNotFoundException: /mnt/sdcard/DCIM/Camera/pictures/test.jpg (Permission denied)
05-11 09:04:57.203: W/System.err(3702): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
05-11 09:04:57.203: W/System.err(3702): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
05-11 09:04:57.203: W/System.err(3702): at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
05-11 09:04:57.203: W/System.err(3702): at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
05-11 09:04:57.203: W/System.err(3702): at com.test.android.AppareilPhotoActivity$1.onPictureTaken(AppareilPhotoActivity.java:163)
05-11 09:04:57.203: W/System.err(3702): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:618)
05-11 09:04:57.203: W/System.err(3702): at android.os.Handler.dispatchMessage(Handler.java:99)
05-11 09:04:57.203: W/System.err(3702): at android.os.Looper.loop(Looper.java:132)
05-11 09:04:57.203: W/System.err(3702): at android.app.ActivityThread.main(ActivityThread.java:4134)
05-11 09:04:57.203: W/System.err(3702): at java.lang.reflect.Method.invokeNative(Native Method)
05-11 09:04:57.203: W/System.err(3702): at java.lang.reflect.Method.invoke(Method.java:491)
05-11 09:04:57.203: W/System.err(3702): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
05-11 09:04:57.203: W/System.err(3702): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
05-11 09:04:57.203: W/System.err(3702): at dalvik.system.NativeStart.main(Native Method) |
Pourtant j'ai bien déclaré les droits dans mon manifest voici un extrait de celui ci !
Code:
1 2 3 4 5 6 7 8 9
|
<uses-permission android:name="android.permision.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permision.WRITE_SECURE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> |
J'ai fait un test j'ai essayé ce code :
Code:
1 2 3 4 5
|
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/test");
if (!f.exists()) {
f.mkdir();
} |
Sans succès, il y a donc un problème de droit d'écriture !!!
Mais je ne vois pas du tout ce qu'il manque !
Si quelqu'un a une idée
Cordialement