2010-11-25 26 views
0

Je suis en train de lancer l'activité de la caméra en utilisant le code suivant:EXTRA_OUTPUT ignoré Eris, provoque des données pour retourner null sur G1

//In public void captureImage() 
... 
Intent cameraIntent = new Intent(MediaStore.ACTION_CAPTURE_IMAGE); 
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
         Uri.fromFile(new File("/sdcard/image.jpg"))); 
startActivityForResult(cameraIntent, REQUEST_CAMERA); 

Et puis pour gérer le résultat:

//In onActivityResult() 
... 
case REQUEST_CAMERA: 
    Intent intent = new Intent (CurrentScreen.this, NextScreen.this); 
    intent.putExtra(data); 
    startActivity(intent); 
    CurrentScreen.this.finish(); 
... 

Où j'utilise intent.putExtra(data) pour attacher le petit bitmap à l'intention, et l'utiliser comme une vignette dans l'activité suivante, et le fichier en taille réelle est censé être enregistré comme /sdcard/image.jpg.

C'est le comportement attendu (selon la documentation), pour avoir un petit bitmap pour une vignette, et un gros fichier enregistré. Cependant, en testant ceci sur un G1 et un Eris, j'ai observé un comportement étrange.

Sur le G1:

  • Bien que le resultCode montre RESULT_OK, les données intention qui est renvoyée au gestionnaire de résultat est nul.
  • Aussi EXTRA_OUTPUT semble être complètement ignoré, je ne sais pas où il enregistre l'image.

Sur le Eris:

  • Les données intention revient OK
  • EXTRA_OUTPUT est également ignoré, mais il sauve les images au magasin régulier des médias à /sdcard/dcim/100media

Alors Ma question est la suivante: y at-il un moyen d'obtenir un comportement cohérent pour ce que j'essaie de faire en utilisant l'activité de la caméra standard? Je pourrais écrire une activité personnalisée pour essayer de la faire fonctionner comme je veux, mais je préférerais éviter cette route.

Répondre

0

Je n'ai pas de réponses à votre question car je suis nouveau dans le monde du développement Java/Android. Mais je tente quelque chose de similaire à ce que vous faites, sauf que je veux simplement prendre la photo puis l'attacher à un message électronique.

J'ai implémenté une partie de votre exemple et j'ai pu vérifier que la caméra a créé le fichier que j'ai spécifié et que si j'utilise le même nom de fichier pour l'image suivante, elle écrase le fichier précédent. Mais ce que j'allais vraiment dire, c'est peut-être que vous devrez tester si le pat "/ sdcard/..." existe réellement ou pas. Vous pouvez également simplifier votre processus en transmettant le chemin à l'activité suivante.

Bonne chance,

Jamie Irwin

+0

fait, je ne le contrôle ont mis en place dans ma demande, mais j'omis cette partie dans mon post de garder les choses plus courtes. Ce que je vais finir par devoir faire est très probablement écrire ma propre activité de caméra parce que d'après ce que j'ai lu, l'incohérence est due aux différentes applications de caméra que les différents fabricants incluent avec leurs combinés. Ils ne gèrent pas tous l'intention ACTION_IMAGE_CAPTURE correctement. – jvergeldedios