Я пытаюсь поместить камеру в поверхностьView в портретной ориентации на Android-телефоне. Я использовал http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html, чтобы поместить камеру в surfaceView. Однако камера поворачивается на 90 градусов, поэтому я попытался сделать setDisplayOrientation (90), чтобы исправить ее, но это сквозит изображение (это, вероятно, неправильно изменяет поверхностьView?). Как я могу сделать это, чтобы камера не хлюпала?Камера растягивается в портретном режиме
ответ
Необходимо изменить размер изображения в соответствии с оборотом. См. Пример here.
Если вы использовали демонстрационные версии Android API, вам необходимо изменить функцию OnLayout()
.
В основном демо-версия Android API устанавливает размер предварительного просмотра в соответствии с соотношением сторон, так что изображение предварительного просмотра сжимается и отображается в центре экрана с небольшими размерами в портретном режиме.
Даже если мы установили ориентацию экрана в портретном режиме, ширина и высота предварительного просмотра не будут изменены. Вот почему изображение предварительного просмотра было зажато.
использовать эту функцию для изменения размера изображения, это будет полезно для вас
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;
}
Единственное, что работал для меня
В коде mCamera.setDisplayOrientation(90);
Схема имеет fill_parent
для обоих height
и width
.
И файл манифеста имеет android:screenOrientation="portrait"
- 1. Камера просто работает в портретном режиме
- 2. OpenCV Android - улучшенная камера в портретном режиме
- 3. Android-камера Сохранение изображений в портретном режиме
- 4. Принудительная камера в портретном режиме с использованием кордово-ионного приложения
- 5. Камера автоматически поворачивается на 90 градусов в портретном режиме
- 6. Прокрутка в портретном режиме
- 7. MPMoviePlayerController в портретном режиме?
- 8. Застрял в портретном режиме
- 9. Отключить масштабирование в портретном режиме
- 10. Принудительная ориентация в портретном режиме
- 11. Центр видео в портретном режиме
- 12. UISplitViewController установлен в портретном режиме
- 13. Сплит-просмотр в портретном режиме!
- 14. iPhone заблокирован в портретном режиме
- 15. Запирание телефона в портретном режиме
- 16. Предварительный просмотр камеры в портретном режиме
- 17. Получение zxing для работы в портретном режиме
- 18. Камера не растягивается до ширины устройства Android
- 19. Принудительно открыть камеру в портретном режиме в андроиде
- 20. Камера Android находится в ландшафтном исполнении, но используется в портретном режиме.
- 21. Ориентация камеры в портретном режиме в android
- 22. Камера в ландшафтном режиме не в полноэкранном режиме
- 23. Swift, камера в ландшафтном режиме
- 24. Камера Android в фоновом режиме
- 25. андроид камера в фоновом режиме
- 26. VideoView играет в портретном режиме, но не в ландшафтном режиме
- 27. Ipad в ландшафтном режиме и iphone в портретном режиме
- 28. Заблокировать изображение в портретном режиме на Android
- 29. self.view.bounds не работает в портретном режиме
- 30. Dont hide SplitViewController в портретном режиме
Что высота и ширина должна быть в этом примере? Я хочу, чтобы предварительный просмотр был примерно на половину экрана, но мне не нужны значения жесткого кода, поэтому он может работать на разных размерах экрана. – user1154920
Это метод обратного вызова SurfaceHolder, поэтому параметры высоты и ширины метода будут задаваться с помощью аппаратное обеспечение. Если вы хотите, чтобы ваш предварительный просмотр был половиной экрана, просто установите их в выражениях «if», таких как: parameters.setPreviewSize (width/2, height/2); –