2010-08-17 18 views
9

W tej chwili próbuję ustawić aparat w telefonie Motorola Droid, aby zrobić zdjęcie pasujące do rozmiaru mojego ekranu (854 x 480 pikseli) i próbuję wykonać to za pomocą parametry aparatu jako takie:Ustawianie rozmiaru obrazu kamery w systemie Android

Camera.Parameters parameters = this.mCamera.getParameters(); 
Log.i(TAG, "CAMERA SIZE: (" + this.mCameraView.getWidth() + ", " + this.mCameraView.getHeight() + ")"); 
parameters.setPictureSize(this.mCameraView.getWidth(), this.mCameraView.getHeight()); 
this.mCamera.setParameters(parameters); 
this.mCamera.takePicture(null, null, this); 

mam moja aktywność wdrożyć metodę Camera.PictureCallback z onPictureTaken (z wyłączeniem połączeń dziennika), więc gdy metoda takePicture nazywa się go prowadzi ten sposób:

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length); 
    //Size imageSize = camera.getParameters().getPictureSize(); 
    //image = Bitmap.createBitmap(image, 0, 0, imageSize.width, imageSize.height); 
    this.mCameraView.setBackgroundDrawable(new BitmapDrawable(image)); 
} 

Z jakiegoś powodu mój aparat robi zdjęcia w 1280 roku x 960. Czy jest to minimalny rozmiar, w którym aparat może przechwycić obraz? W przypadku wywołań dzienników widzę, że parametry aparatu są nadal ustawione na rozmiar obrazu 854 x 480, ale obraz nadal wychodzi jako 1280 x 960. Czy odszyfrowuję obraz niepoprawnie, czy ustawiam niepoprawnie parametry kamery, czy też Robię coś złego?

Z góry dziękujemy za pomoc, którą możesz udzielić!

Pozdrawiam, celestialorb.

Odpowiedz

20

Tak, istnieją metody dostarczania rozmiarów obrazu obsługiwanych przez aparat. Metoda klasy parametrów aparatu, która zapewnia obsługiwane rozmiary obrazu aparatem to getSupportedPictureSizes(); Za pomocą tej metody można uzyskać obsługiwany rozmiar aparatem. Fragment kodu wyglądałby następująco: -

Camera camera = Camera.open(); 
Parameters params = camera.getParameters(); 
List<Camera.Size> sizes = params.getSupportedPictureSizes(); 

Mam nadzieję, że to pomoże.

Dzięki Nawab

+0

Kamera została wycofana i zastąpiona Camera2 ale nie mogę znaleźć analogiczną metodę w nowym API – Price

2

Znalazłem odpowiedź, podobno moja własna rozdzielczość ekranu nie jest obsługiwanym rozmiarem kamery. Nie wiedziałem, że kamera obsługuje tylko niektóre rozmiary, ponieważ programuję z SDK 1.6.

Czy istnieje sposób na odzyskanie obsługiwanych rozmiarów aparatu dla wersji 1.5/1.6?

Powiązane problemy