2013-03-18 19 views
5

Oggi devo fare i conti con una cosa difficile.Android salva l'immagine della telecamera nella memoria locale

Avvio la fotocamera e voglio salvare l'immagine presa direttamente nella memoria interna, senza spostarla in essa.

File targetDir = new File(getApplicationContext().getFilesDir()+File.separator+"PROJECTMAIN"+File.separator+"SUBFORDER"); 
    targetDir.mkdirs(); //create the folder if they don't exist 

    File externalFile = new File(targetDir, "picturename.jpg"); 
    Uri imageURI = Uri.fromFile(externalFile); 

    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageURI); 
    startActivityForResult(takePictureIntent, actionCode); 

Sembra che se provo a salvarli direttamente nella memoria interna, la fotocamera ignora il mio click sul pulsante "ok" dopo prendo l'immagine. Penso che ci sia qualcosa di sbagliato nell'URI "interno", perché se uso Environment.getExternalStorageDirectory() invece di getApplicationContext().getFilesDir() per extra_output, tutto funziona correttamente, ma poi devo spostare il file in seguito nella memoria interna (il processo di spostamento funziona bene per "getApplicationContext"() .getFilesDir() ")

La fotocamera non fa nulla quando scatto una foto e premo il pulsante ok per continuare con l'URI interno ... Non posso credere che sia così difficile con l'archiviazione in Android.

Qualche idea? forse la fotocamera consente solo di salvare le immagini nella memoria esterna?

+0

fare riferimento al post http://stackoverflow.com/questions/12193607/how-to-save-capture-image-in-sdcard –

risposta

3

Try seguente codice

File dir= context.getDir("dirname", Context.MODE_PRIVATE); //Creates Dir inside internal memory 
File file= new File(dir, "filename"); //It has directory details and file name 
FileOutputStream fos = new FileOutputStream(file); 
+0

se questa risposta ti ha aiutato, per favore accetta questa risposta .. – Aju

0

Per una maggiore versione di Android 7.0 utilizzare questo codice,

<application 
    ...> 
    <activity> 
    .... 
    </activity> 
    <provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.your.package.fileProvider" 
     android:grantUriPermissions="true" 
     android:exported="false"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/file_paths" /> 
    </provider> 
    </application> 

ora creare un file nella cartella delle risorse xml,

<?xml version="1.0" encoding="utf-8"?> 
<paths> 
    <external-path path="Android/data/com.your.package/" name="files_root" /> 
    <external-path path="." name="external_storage_root" /> 
</paths> 

allora ogni volta che l'uso per l'intento della telecamera usa questo,

Problemi correlati