2010-10-18 10 views
5

Sto utilizzando la fotocamera del telefono in un'applicazione Android per scattare una foto. Sto usando Intenti per utilizzare l'applicazione della fotocamera integrata e sto utilizzando il seguente codice:Utilizzando la fotocamera del telefono tramite Intento: l'attività non ritorna mai?

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(FILEPATH))); 
startActivityForResult(intent, ACTIVITY_NATIVE_CAMERA_AQUIRE); 

Funziona benissimo e la fotocamera è cresciuto. Posso scattare una foto e il telefono mi presenta con tre opzioni: Annulla, Ripeti, OK. Le prime due operazioni, premendo cancel riporta l'utente all'app, ma premendo OK e non accade nulla. Apparentemente onActivityResult non viene chiamato e la fotocamera rimane sullo schermo. Nulla nel debugger neanche.

Esecuzione dell'applicazione su un Nexus One con Android 2.2.1. Lo stesso problema sull'emulatore con Android 2.0.

Modifica: Test su HTC Desire con Android 2.2 con interfaccia utente Sense di HTC: funziona perfettamente. Nulla sull'emalatore né su Google N1.

Edit2: sembra che l'HTC Desire attività immagine acquisendo funziona meglio, nel senso che essa fa ritorno, ma non tiene conto della EXTRA_OUTPUT -setting e restituisce solo una piccola immagine nel onActivityResult-Call. Controllo della console ddms mentre il telefono è collegato al computer Vedo che il telefono sta memorizzando l'immagine sulla scheda SD, ma il percorso non viene passato alla mia applicazione. Sta iniziando a sembrare che non ci sia un modo affidabile per usare l'intento della telecamera e recuperare un'immagine di dimensioni ragionevoli. Male male male.

risposta

1

Dopo un po 'di ricerche, test e pura fortuna sono riuscito a risolvere questo problema.

Se l'opzione EXTRA_OUTPUT per l'intento contiene un URI di file che punta alla memoria interna del dispositivo, la chiamata avrà esito negativo. Come fallisce, dipende dal dispositivo. L'HTC Desire funziona bene in superficie, ma non riesce a restituire l'immagine a dimensione intera. D'altra parte, Google N1 si rifiuta di abbandonare l'attività della videocamera.

Quando ho cambiato l'URI del file per puntare alla scheda di memoria, ha funzionato perfettamente sia per il Desiderio che per Google N1.

Quindi riassumendo: il percorso per memorizzare l'immagine intera DEVE indicare la scheda SD.

+0

Quindi non c'è modo di evitare la scheda SD? Se non è disponibile, non è possibile ottenere l'immagine a dimensione intera? Sto affrontando un problema simile. Ecco il mio post http://stackoverflow.com/questions/4632231/is-there-any-way-to-store-full-size-image-returned-from-camera-activity-in-intern – Pritam

Problemi correlati