Estoy tratando de poner la cámara en una superficie Ver en orientación vertical en el teléfono Android. Usé http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html para poner la cámara en SurfaceView. Sin embargo, la cámara gira 90 grados, por lo que traté de hacer setDisplayOrientation (90) para solucionarlo, pero esto aplasta la imagen (¿Probablemente no está redimensionando la superficie correctamente?). ¿Cómo puedo hacerlo para que la cámara no quede aplastada?La cámara se extiende en modo retrato
Respuesta
Debe cambiar el tamaño de la imagen de acuerdo con la rotación. Ver here para un ejemplo.
Si usaba demostraciones de Android API, debe modificar la función OnLayout()
.
Básicamente, la demostración de la API de Android establece el tamaño de vista previa de acuerdo con la relación de aspecto para que la imagen de vista previa se aplaste y se muestre en el centro de la pantalla con un tamaño pequeño en modo vertical.
Incluso si configuramos la orientación de la pantalla en el modo vertical, el ancho y el alto de la vista previa no se modifican. Es por eso que la imagen de vista previa fue aplastada.
uso de esta función tamaño de imagen para la que será de utilidad para usted
public Bitmap resize(Bitmap img,int Width,int Height){
int width = img.getWidth();
int height = img.getHeight();
int newWidth = (int) Width;
int newHeight = (int) Height;
// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
//matrix.postRotate(45);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);
return resizedBitmap;
}
Lo único que trabajó para mí es
En el código mCamera.setDisplayOrientation(90);
El diseño tiene fill_parent
para ambos height
y width
.
Y archivo de manifiesto tiene android:screenOrientation="portrait"
- 1. Modo de retrato forzado en la cámara
- 2. Forzar que una cámara se abra siempre en modo retrato en android
- 3. Cámara Android en retrato en SurfaceView
- 4. Captura de video MediaRecorder en modo retrato
- 5. orientación de retrato de cámara para Android
- 6. Modo retrato y paisaje en iOS6
- 7. UISplitViewController modo retrato que falta UIBarButtonItem
- 8. cámara de Android estirada en modo horizontal
- 9. modo de retrato Cocos2d no funciona en iPhone
- 10. Bloquear programáticamente en modo retrato para ciertas operaciones
- 11. Las imágenes de la cámara del iPhone se giran cuando se cargan en la Web
- 12. cómo cambiar la cámara Android al retrato en la vista de superficie?
- 13. ios6 Problema de rotación del modo paisaje al retrato
- 14. ¿Clase que se extiende?
- 15. Cámara Vista de superficie Las imágenes se muestran estiradas
- 16. "tomar una foto y presentarla" en modo retrato en Samsung Galaxy S
- 17. bloquear UIImagePickerController en el modo vertical en la aplicación ios
- 18. cámara androide
- 19. Enum <? se extiende la interfaz>
- 20. Zxing - Cambio de la vista de la cámara -90 grados
- 21. ¿Cómo puedo usar 2 fondos diferentes entre el modo paisaje y el modo retrato
- 22. Uso de la cámara con orientación vertical
- 23. clase interna que se extiende
- 24. Django: ¿se extiende o incluye?
- 25. cómo cambiar la orientación de video en MediaRecorder a retrato
- 26. java force una clase que se extiende
- 27. Android: la conmutación entre paisaje y modo retrato hace que Intent pierda valores
- 28. El texto nunca aparece con iconos en modo retrato en SherlockActionBar
- 29. ¿Cómo se extiende el prototipo en mecanografiado?
- 30. UIImagePickerController en el modo de cámara se moja o 'pegado' con el obturador cerrado
¿Qué deben altura y anchura de estar en ese ejemplo? Quiero que la vista previa sea aproximadamente la mitad de la pantalla, pero no quiero codificar los valores para que pueda funcionar en diferentes tamaños de pantalla – user1154920
Este es el método de devolución de llamada de SurfaceHolder, por lo que los parámetros de altura y ancho del método serán establecidos por hardware. Si desea que su vista previa sea la mitad de la pantalla, simplemente configúrelos en las declaraciones 'if' como: parameters.setPreviewSize (width/2, height/2); –