Autore Topic: Salvataggio foto  (Letto 472 volte)

Offline Rino63

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Mostra profilo
Salvataggio foto
« il: 16 Giugno 2014, 16:10:00 CEST »
0
sto cercando di realizzare un'app che scatti delle foto. tutto procede bene fin quando non tento di salvare lo scatto effettuato.
Riporto parte del codice utilizzato e il logcat. (Riporto anche l'impostazione di myDir nell' onCreate e definita come
Codice (Java): [Seleziona]
private String myDir=null;)

Codice (Java): [Seleziona]
 myDir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();          

PictureCallback after_photo = new PictureCallback() {
                public void onPictureTaken(byte[] data, Camera camera) {
                    //salviamo la foto
                            String filename = new SimpleDateFormat("yyMMddHHmmss").format(Calendar.getInstance().getTime()).toString() + ".jpg";           
                            String PicturesDir =myDir+"/MiaCamera/";                             
                            new File(PicturesDir).mkdir();     
                    File file = new File (PicturesDir, filename);              
                    try {  
                 
                           file.createNewFile();
                           FileOutputStream out = new FileOutputStream(file);
                           Bitmap bp = BitmapFactory.decodeByteArray(data,0,data.length,null);
                           bp.compress(Bitmap.CompressFormat.JPEG, 100, out);
                           out.flush();
                           out.close();
                    } catch (Exception e) {
                           e.printStackTrace();
                    }
                           
                           
                /*la preview della camera si blocca quando scattiamo una foto,
                    va fatta ripartire*/

                    camera.startPreview();
         
                }
        };
il logcat invece è il seguente
Codice (Java): [Seleziona]
06-16 13:43:08.217: V/PicturesDir(550): /mnt/sdcard/Pictures/MiaCamera/
06-16 13:43:08.217: V/File(550): /mnt/sdcard/Pictures/MiaCamera/140616134308.jpg


06-16 13:43:08.237: W/System.err(550): java.io.IOException: open failed: ENOENT (No such file or directory)
06-16 13:43:08.248: W/System.err(550):  at java.io.File.createNewFile(File.java:940)
06-16 13:43:08.257: W/System.err(550):  at com.MiaCamera.MainActivity$1.onPictureTaken(MainActivity.java:82)
06-16 13:43:08.257: W/System.err(550):  at android.hardware.Camera$EventHandler.handleMessage(Camera.java:687)
06-16 13:43:08.267: W/System.err(550):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 13:43:08.277: W/System.err(550):  at android.os.Looper.loop(Looper.java:137)
06-16 13:43:08.277: W/System.err(550):  at android.app.ActivityThread.main(ActivityThread.java:4424)
06-16 13:43:08.287: W/System.err(550):  at java.lang.reflect.Method.invokeNative(Native Method)
06-16 13:43:08.297: W/System.err(550):  at java.lang.reflect.Method.invoke(Method.java:511)
06-16 13:43:08.307: W/System.err(550):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-16 13:43:08.307: W/System.err(550):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-16 13:43:08.317: W/System.err(550):  at dalvik.system.NativeStart.main(Native Method)
06-16 13:43:08.328: W/System.err(550): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
06-16 13:43:08.337: W/System.err(550):  at libcore.io.Posix.open(Native Method)
06-16 13:43:08.347: W/System.err(550):  at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
06-16 13:43:08.347: W/System.err(550):  at java.io.File.createNewFile(File.java:933)
06-16 13:43:08.357: W/System.err(550):  ... 10 more

come si vede il percorso ed il nome file sembrano impostati correttamente eppure viene rilasciato una serie di errori che fanno riferimento a  file.createNewFile(); I permessi nel manifest write_external_storage sono impostati correttamente. Dove sbaglio? Grazie per l'attenzione.

Offline maverik1408

  • Utente junior
  • **
  • Post: 100
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Salvataggio foto
« Risposta #1 il: 18 Giugno 2014, 09:00:05 CEST »
0
prova eliminando ".getAbsolutePath();"

io faccio così

Codice: [Seleziona]
       File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
       File file = new File(path, folderName + "/" + fileName);
Maverik @ Google Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Mostra profilo
Re:Salvataggio foto
« Risposta #2 il: 18 Giugno 2014, 11:11:59 CEST »
0
grazie ma nulla da fare- rilascia sempre lo stesso messaggio di errore. aggiungo gli sdk indicati nel manifest sperando che siano indicativi di qualcosa..         
android:minSdkVersion="14"
android:targetSdkVersion="19"

Offline maverik1408

  • Utente junior
  • **
  • Post: 100
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Salvataggio foto
« Risposta #3 il: 18 Giugno 2014, 13:02:09 CEST »
0
i miei sono

android:minSdkVersion="8"
android:targetSdkVersion="15"
Maverik @ Google Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Mostra profilo
Re:Salvataggio foto
« Risposta #4 il: 18 Giugno 2014, 13:26:23 CEST »
0
appena provato. non funziona. ho girato tutti i siti ma tutti lo fanno allo stesso modo. a qualcuno funziona a qualcuno no. tutti quelli con problemi poi non hanno risolto....... :(

Offline maverik1408

  • Utente junior
  • **
  • Post: 100
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Salvataggio foto
« Risposta #5 il: 18 Giugno 2014, 13:37:43 CEST »
0
ovviamente ci sono i permessi di scrittura sulla memoria esterna !!!

ma anche provando solo questo codice di t'ha lo stesso errore

Codice: [Seleziona]
      File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
      File file = new File(path, folderName + "/" + fileName);
      file.getParentFile().mkdirs();
Maverik @ Google Play Store

Offline Rino63

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Mostra profilo
Re:Salvataggio foto
« Risposta #6 il: 18 Giugno 2014, 14:06:00 CEST »
0
purtroppo si. non cambia nulla.

Post unito: [time]18 Giugno 2014, 14:28:17 CEST[/time]
o meglio, il path+nomefile è giusto ma non lo crea. ovviamente i permessi di scrittura ci sono

Post unito: [time]18 Giugno 2014, 15:08:26 CEST[/time]
per adesso aggiungo un link ad un articolo che forse può rappresentare un punto di partenza
http://www.chainfire.eu/articles/113/Is_Google_blocking_apps_writing_to_SD_cards_/

Post unito: 18 Giugno 2014, 15:39:01 CEST
e credo si debba lavorare su questo. https://developer.android.com/guide/topics/providers/document-provider.html io ho installato api 19  api 18 e api 15 (per l'unico emulatore che riesco a far funzionare) forse è per questo che tutto il codice precedente non funziona.
« Ultima modifica: 18 Giugno 2014, 15:39:01 CEST da Rino63, Reason: Merged DoublePost »