0

アンドロイドプログラミングの新しいim..私はここで問題があります。

カメラからの実際のビューの上にオーバーレイを描画するアプリケーションを作成したいと思います。カメラからの画像を保持するために表面ビューを使用します。

ここに私の主な活動のための私のXML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
        <SurfaceView
            android:id="@+id/preview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        />
        <com.openit.razer.overlayPreview
            android:id="@+id/overlayprev"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
        <com.openit.razer.overlayImage
            android:id="@+id/overlayimg"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
</RelativeLayout>

これが私の主な活動クラスです:p

ublic void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ar);

        overPrev = (overlayPreview)findViewById(R.id.overlayprev);
        overImg = (overlayImage)findViewById(R.id.overlayimg);

        overImg.setZOrderOnTop(true);
        overImg.getHolder().setFormat(PixelFormat.TRANSPARENT);


        preview=(SurfaceView)findViewById(R.id.preview);
        previewHolder=preview.getHolder();
        previewHolder.addCallback(surfaceCallback);
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() {
        public void surfaceCreated(SurfaceHolder holder) {
          try {
            camera.setPreviewDisplay(previewHolder);
          }
          catch (Throwable t) {
            Log.e("PreviewDemo-surfaceCallback",
                  "Exception in setPreviewDisplay()", t);
            Toast
              .makeText(ARrazerNav.this, t.getMessage(), Toast.LENGTH_LONG)
              .show();
          }
        }

        public void surfaceChanged(SurfaceHolder holder,
                                   int format, int width,
                                   int height) {

          Camera.Parameters parameters=camera.getParameters();
          //Camera.Size size=getBestPreviewSize(width, height,
                                             // parameters);
          List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
          Camera.Size selected = sizes.get(0);
          parameters.setPreviewSize(selected.width, selected.height);
          camera.setParameters(parameters);
          if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
              camera.setDisplayOrientation(90);
          }
          else{
              camera.setDisplayOrientation(0);
          }
          //camera.setDisplayOrientation(90);
          //camera.setDisplayOrientation(0);
          camera.startPreview();
        }

        public void surfaceDestroyed(SurfaceHolder holder) {
          // no-op
        }
      };

しかし、私は誤りを犯しました

FATAL EXCEPTION:main
...
...
...
caused by: android.view.InflateException: Binary XML file line #10: Error inflating class blablabla

私の問題を解決するのを手伝ってもらえますか。この問題で立ち往生していたのは3日間でした。

そして、SurfaceViewとその上にオーバーレイ画像を使用してカメラを実装するための最良の方法は何ですか?

前もって感謝します

4

1 に答える 1

1

他のビューの上にビューを配置するには、FrameLayoutを使用する必要があります。最初にSurfaceViewを表示し、次にその上に必要なビューを表示します。

私は実際にこれを自分で行い、カメラのプレビューに画像を配置しました。その上にSurfaceViewとImageViewを備えたFrameLayoutを使用しました。かなりうまくいった。

于 2012-05-31T21:10:30.880 に答える