-1

私はAndroidプログラミングに非常に慣れていません。やりたいことは、カメラを開いて次のようなパラメータを設定できるように、表面ビューでカメラアプリを開くことだけですか?

Camera camera = Camera.open();
 Parameters p = camera.getParameters();
 p.setFlashMode(Parameters.FLASH_MODE_ON);
 camera.setParameters(p);
 camera.startPreview();        
 camera.release();

表面を通過しなければならないというコメントに出くわしました。だから私は次の表面を作成しました:

package com.example.fcloader;

import java.io.IOException;

import android.content.Context;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
import android.hardware.Camera;


public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback
{
        private SurfaceHolder holder;
        private Camera camera;

        public CameraSurfaceView(Context context) 
        {
                super(context);

                //Initiate the Surface Holder properly
                this.holder = this.getHolder();
                this.holder.addCallback(this);
                this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) 
        {
                try
                {
                        //Open the Camera in preview mode
                        this.camera = Camera.open();
                        this.camera.setPreviewDisplay(this.holder);
                }
                catch(IOException ioe)
                {
                        ioe.printStackTrace(System.out);
                }
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
        {
                // Now that the size is known, set up the camera parameters and begin
                // the preview.
                Camera.Parameters parameters = camera.getParameters();
                parameters.setPreviewSize(width, height);
                camera.setParameters(parameters);
                camera.startPreview();
        }


        @Override
        public void surfaceDestroyed(SurfaceHolder holder) 
        {
                // Surface will be destroyed when replaced with a new screen
                //Always make sure to release the Camera instance
                camera.stopPreview();
                camera.release();
                camera = null;
        }

        public Camera getCamera()
        {
                return this.camera;
        }
}

これは私がオンラインで入手した基本サーフェスのコードです。私の質問は、これらを相互に機能させるには何を変更すればよいですか?

4

2 に答える 2

1

カメラを設定camera.startPreview()するために書き込む必要がある後。を拡張および実装するクラスのオブジェクトです。preview.setCamera(camera)previewSurfaceViewSurfaceHolder.Callback

camera.startPreview();
preview.setCamera(camera);
于 2014-06-10T10:19:32.327 に答える
0

マニフェストには以下を含める必要があります。

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />
 <uses-feature android:name="android.hardware.camera.autofocus" />

レイアウトに追加CameraSurfaceViewしましたか? にデプロイするか、プログラムでにlayout.xml追加できます。onCreate()layout.addView

于 2013-10-30T03:04:13.683 に答える