Stworzyłem aplikację na podstawie samouczka. Klasa podglądu, której używam, pochodzi z api-Demos "CameraPreview". Dodałem modyfikację z here (podgląd zawsze był obracany o 90 °). Tak ustawiłem rozmiar podglądu:Podgląd obrazu z kamery w niewłaściwym formacie
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
Camera.Parameters parameters = mCamera.getParameters();
Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
if (display.getRotation() == Surface.ROTATION_0) {
parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
mCamera.setDisplayOrientation(90);
}
if (display.getRotation() == Surface.ROTATION_90) {
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
}
if (display.getRotation() == Surface.ROTATION_180) {
parameters.setPreviewSize(mPreviewSize.height, mPreviewSize.width);
}
if (display.getRotation() == Surface.ROTATION_270) {
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
mCamera.setDisplayOrientation(180);
}
parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
requestLayout();
mCamera.setParameters(parameters);
mCamera.startPreview();
}
Ale podgląd jest wyświetlany przy niewłaściwym współczynniku kształtu. Czy to z powodu powyższego kodu lub prawdopodobnie ze względu na układ używam ?:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button_capture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="@string/capture" />
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="100dp"
android:layout_height="match_parent"/>
Więc jak uzyskać prawidłowe proporcje? Z góry dziękuję.
P.S. Przeczytałem odpowiedź od: Android camera preview look strange Ale to nie działa dla mnie.
może można zamknąć ten kwestia ? – Poutrathor
dlaczego? co się zmieniło? – dermoritz
najpierw nie musisz wierzyć, 2. Nie mam czasu na wypróbowanie innych rozwiązań (opublikowanych rok po zamieszczeniu pytania). Gdy tylko spróbuję innych odpowiedzi, udzielę informacji zwrotnej. Do tego czasu wszystko jest w porządku ... – dermoritz