2013-05-08 3 views
8

L'aggiunta del percorso file in più all'intenzione di acquisizione delle immagini causa il malfunzionamento dell'applicazione fotocamera sul tablet Android TF300t con la versione 4.2.1 del sistema di scorta. Premendo il pulsante "done" non si fa nulla, nemmeno la chiusura dell'attività della fotocamera. Nessun risultato è stato restituito.Scattare foto "semplicemente" non funziona

Il codice che sto utilizzando è stato estratto da Adroid developers site

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
File imageFile = createImageFile(); 
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile)); 
startActivityForResult(cameraIntent, THIS_CAMERA_REQUEST); 

Con createImageFile() definito come:

private File createImageFile() throws IOException { 
    File outputDir = getBaseContext().getCacheDir(); 

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "photo_" + timeStamp + "_"; 
    File image = new File(outputDir, imageFileName); 

    return image; 
} 

Quando viene rimosso linea

cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile)); 

, fotocamera l'app funziona come previsto.

Esiste una soluzione accettabile? Preferirei non costruire io stesso un'app per fotocamere solo per scattare una foto.

risposta

4

linea Problematica:

File outputDir = getBaseContext().getCacheDir(); 

ho sostituito con:

private File createImageFile() throws IOException { 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "1mind_" + timeStamp + ".jpg"; 
    File photo = new File(Environment.getExternalStorageDirectory(), imageFileName); 
    return photo; 
} 

scopre, immagine deve essere memorizzati su storage esterno non nella cache dir.

+2

Ha subito lo stesso problema. Insetto molto ingannevole senza messaggi di errore. Stavo cercando di salvare la foto direttamente nella memoria privata della mia applicazione e questo è un no-no. Grazie per il tuo post. –