Próbuję umieścić aparat na powierzchni. Widok w orientacji pionowej na telefonie z Androidem. Użyłem http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html, aby umieścić kamerę w SurfaceView. Jednak kamera obraca się o 90 stopni, więc próbowałem naprawić setDisplayOrientation (90), ale to powoduje zgniatanie obrazu (prawdopodobnie nie zmienia rozmiaru właściwie surfaceView). Jak mogę to zrobić, aby aparat nie został zgnieciony?Aparat się rozciąga w trybie portretowym.
Odpowiedz
Należy zmienić rozmiar obrazu zgodnie z ruchem obrotowym. Zobacz przykład here.
Jeśli korzystasz z demonstracji Androida API, musisz zmodyfikować funkcję OnLayout()
.
Zasadniczo wersja demonstracyjna interfejsu API systemu Android, ustawia rozmiar podglądu zgodnie ze współczynnikiem proporcji, tak aby obraz podglądu został zgnieciony i wyświetlany na środku ekranu z niewielkim rozmiarem w trybie portretu.
Nawet jeśli ustawimy orientację ekranu na tryb portretowy, szerokość i wysokość podglądu nie ulegną zmianie. Dlatego obraz podglądu został spłaszczony.
Funkcja ta służy do zmiany rozmiaru obrazu będzie przydatna
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;
}
Jedyną rzeczą, która pracowała dla mnie jest
W kodzie mCamera.setDisplayOrientation(90);
Układ ma fill_parent
zarówno height
i width
.
I plik manifestu ma android:screenOrientation="portrait"
- 1. Przechwytywanie wideo MediaRecorder w trybie portretowym
- 2. Ukrywanie nakładki UISplitViewController w trybie portretowym
- 3. AVMutableVideoComposition obrócone wideo przechwycone w trybie portretowym
- 4. Blokuj UIImagePickerController w trybie portretowym w aplikacji ios
- 5. Raspberry Pi 2 - Zniekształcenie podczas przesuwania obiektów w trybie portretowym
- 6. eksportowanie zasobów wideo za pośrednictwem AVAssetExportSession w trybie portretowym
- 7. Galaxy S3 - zrobienie zdjęcia w trybie portretowym niszczy aktywność
- 8. Zagnieżdżony rozciąga się w generycznych
- 9. Pasek akcji z ikoną i tekstem w trybie portretowym
- 10. Aparat z Androidem w trybie Portret na SurfaceView
- 11. Flex iframe nie rozciąga się w IE11
- 12. StringIO jak klasy, która rozciąga się django.core.files.File
- 13. coffeescript jak używać rozciąga się na tablicy
- 14. Scrollview rozciąga się poza dolną krawędź ekranu
- 15. imageView nie rozciąga się na ekranie
- 16. Jak otworzyć aparat photosphere?
- 17. UIAlertView zmienia krajobraz, gdy aplikacja jest zablokowana tylko w trybie portretowym w iOS8
- 18. klatek Aparat spadł po zmianie aparat iOS
- 19. dlaczego rozmiar tła CSS: okładka nie działa w trybie portretowym na iOS?
- 20. setRotation (90), aby zrobić zdjęcie w trybie portretowym nie działa na urządzeniach samsung
- 21. Rozmiar ramki nie zmienia się w trybie poziomym
- 22. Klawiatura otwiera się w trybie pełnoekranowym w trybie poziomym.
- 23. Aparat z Androidem Intent nie zwraca się w przypadku RESULT_OK
- 24. Aparat z Androidem - Czasami, gdy robię zdjęcia, aplikacja zawiesza się, a aparat nie nadaje się do użytku.
- 25. Jak korzystać z Zxing w trybie pionowym?
- 26. Twitter bootstrap table rozciąga się poza kontenerem po prawej
- 27. Chrome rozciąga się na wysokość mojego obrazu o maksymalnej szerokości
- 28. Aparat iPhone i OpenCV
- 29. HTML/CSS: Dlaczego ciało nie rozciąga się do jego zawartości?
- 30. Przyklejona stopka, a raczej: treść nie rozciąga się do stopki.
Jaka powinna być wysokość i szerokość w tym przykładzie? Chcę, żeby podgląd był mniej więcej w połowie ekranu, ale nie chcę kodować wartości, aby mógł działać na różnych rozmiarach ekranu. – user1154920
Jest to metoda wywołania zwrotnego SurfaceHolder, więc parametry wysokości i szerokości metody zostaną ustawione przez sprzęt komputerowy. Jeśli chcesz, aby podgląd był połowę ekranu, po prostu ustaw je w instrukcjach "if", takich jak: parameters.setPreviewSize (width/2, height/2); –