L'Image enregistrée dans le mauvais sens

Je suis en utilisant ce code:

https://github.com/commonsguy/cw-advandroid/blob/master/Camera/Picture/src/com/commonsware/android/picture/PictureDemo.java

où dans Manifest, Activity Orientation est fixé à Paysage.

Donc, comme son permettant à l'utilisateur de prendre des photos uniquement en mode Paysage, et si la photo est prise en tenant l'appareil en mode portrait, l'image enregistrée est comme ceci:

L'Image enregistrée dans le mauvais sens

un angle de 90 ° rotation de l'image.

Après la recherche d'une solution, j'ai trouvé ceci:

Android - aperçu de l'Appareil photo est sur le côté

où la solution est:

dans surfaceChanged() vérifier

Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
display.getRotation();

et modifier le Caméra displayOrientation en conséquence.

camera.setDisplayOrientation(90);

Mais pas n'importe comment beaucoup de fois j'ai faites pivoter l'appareil, surfaceChanged() n'est jamais appelé.

J'ai même essayé de l'enlever orientation="Landscape" dans le Manifest.xml, mais alors l'aperçu lui-même est indiqué sur le côté(peut-être parce que par défaut android.view.SurfaceView est censé être dans mode Paysage?).

  • suivez ce lien, il peut être utile pour vous. stackoverflow.com/questions/5157984/...
  • Eh bien, il ya des raisons pourquoi je ne suis plus couvrant ce code dans le livre... 🙂 je l'ai laissé dans le repo pour des raisons historiques, mais il y a certainement des problèmes avec elle. FWIW, je ne plan à revoir ce sujet dans les mois à venir, avec un oeil vers le repassage ce genre de problème, et j'ai fait une note pour enquêter sur cette époque. Cependant, pour l'instant, je n'ai pas de conseils particuliers pour vous, toutes mes excuses.
InformationsquelleAutor Archie.bpgc | 2013-04-19