2

このカメラプレビューアプリケーションをAndroidアプリに使用しています。

カメラのプレビューを全画面表示にしたいので、Android APIの例を使用して、プレビューを全画面表示に設定してみました。これが私がやろうとしている方法です:

if (!cameraConfigured) {
    Camera.Parameters parameters=camera.getParameters();
    Camera.Size size = getOptimalPreviewSize(mSupportedPreviewSizes, width, height);
    if (size != null) {
        parameters.setPreviewSize(size.width, size.height);

      camera.setParameters(parameters);
      cameraConfigured=true;
    }

レイアウトとして相対レイアウトを使用しています。私のレイアウト設定は次のとおりです。

<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

それでも、画面全体でカメラをプレビューすることはできません。画面全体をプレビューする方法を教えてください。

4

4 に答える 4

3

問題を見つけました。Androidマニフェストファイルに以下の設定を追加しました

<supports-screens android:largeScreens="true"
                    android:normalScreens="true"
                    android:smallScreens="true" android:xlargeScreens="true"/>

カメラを全画面で見ることができます。

于 2012-07-04T05:11:31.777 に答える
0

コードがSurfaceViewを拡張するクラス内にあり、displayViewをディスプレイと同じ大きさのFrameLayout内に配置すると仮定します。

コードで行っていないのは、SurfaceViewをディスプレイと同じサイズに設定することです。これは、次のコードブロックで、レイアウトを取得し、幅と高さを設定することによって行われます。

次のコードを使用して、画面のサイズまで拡大します。

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {

    ...

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

      ...

      final DisplayMetrics dm = this.getResources().getDisplayMetrics();
      Camera.Parameters parameters = mCamera.getParameters();
      parameters.setPreviewSize(cameraSize.width, cameraSize.height);
      mCamera.setParameters(parameters);
      //Here you get the SurfaceView layout and subsequently set its width and height
      FrameLayout.LayoutParams frameParams = (FrameLayout.LayoutParams) this.getLayoutParams();
      frameParams.width = LayoutParams.MATCH_PARENT;// dm.widthPixels should also work
      frameParams.height = LayoutParams.MATCH_PARENT;//dm.heightPixels should also work
      this.setLayoutParams(frameParams);
      //And we should have things set now...

      ....

    }

    ...
}

これがお役に立てば幸いです。統合する重要な部分は、これらの内部コメントの間にあります

于 2012-07-04T03:49:09.513 に答える
0

画面の寸法を取得する

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

この幅と高さを使用して、プレビューサイズを取得します。

于 2018-03-13T08:06:26.963 に答える
-1

まず、ディスプレイの幅と高さを取得します。

   int dw = currentDisplay.getWidth();    // dw == display width
   int dh = currentDisplay.getHeight();   // dh == display height

次に、サポートされているプレビューサイズをループし、最大のサイズを選択します。if(size.width <= dw && size.height <= dh)。このifステートメントが失敗した場合は、前の値を使用します(prevWidthやprevHeightのようなものを、1つ戻るための迅速で簡単な方法として設定できます...テストした後、それらのそれぞれを設定することを忘れないでください。画面サイズよりも大きいプレビューサイズをヒットし、ループから抜け出します。

後で、
-jim

于 2012-07-02T03:16:00.790 に答える