dispositif Droid - ne tournera pas l'image capturée de la caméra? (Camera.Parameters)

StackOverflow https://stackoverflow.com/questions/1934378

  •  20-09-2019
  •  | 
  •  

Question

J'utilise ce code de la caméra pour demander à l'appareil photo pour faire pivoter les données d'image capturée:

Camera.Parameters params = camera.getParameters();
params.set("rotation", 90);
camera.setParameters(params);

cela semble fonctionner sur tous les téléphones, à l'exception du Droid. Quelqu'un d'autre a-t-il vu cela? Les données d'image est toujours paysage, cependant, l'application de la caméra natif sur le Droid produit des images de portrait ok.

Je me demande si le Droid ne respecte la nouvelle méthode de Camera.Parameters.setRotation(), mais cela semble ne sera disponible que dans le niveau de l'API 5?

Était-ce utile?

La solution

dans le document setRotation La rotation peut juste être stocké dans l'en-tête jpeg exif comme expliqué. Le Droid qui est en fait le cas. Vous pouvez utiliser des outils de lecture d'en-tête jpeg comme jhead pour vérifier cela. Vous pouvez également utiliser le ExifInterface API pour lire l'étiquette d'orientation dans votre programme.

Autres conseils

setRotation ne semble pas aussi travailler pour moi sur Nexus One, mais je l'ai fait faire une rotation d'image pour travailler en suivant l'exemple de l'application de l'appareil photo Android lui-même.
Le code source est disponible ici: https://android.googlesource.com/platform/packages/apps/Camera

Commencez par le Camera.java, mais vous aussi rechercher à ImageManager.java, Util.java et d'autres fichiers.

L'idée de base est, vous écoutez des changements d'orientation et de capturer ce que l'orientation est au moment où vous Snapped l'image. Ensuite, lorsque vous obtenez l'image octets dans le rappel, vous manipuler le bitmap, faire une rotation sur le bitmap. Ensuite, convertir le bitmap pivotée retour à jpeg. Lorsque vous avez terminé, vous aurez dû copier une quantité choquante de code de l'application appareil photo juste pour cette rotation.

Le Droid exécute les applications 2,0 (bien, maintenant 2.0.1) qui sont des niveaux d'API 5 et 6, respectivement.

Il est donc tout à fait possible que le Droid respecte seulement (plus sensible) 2.0+ API pour la rotation.

Cependant, je suppose que votre préoccupation est la compatibilité entre les différents types de périphériques et les versions OS, donc je suppose que vous auriez à invoquer l'API 2.0+ par réflexion après la détection de la version du système d'exploitation (à l'aide android.os.Build.VERSION_CODES).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top