0

カメラをプレビューするために、以下にコード セグメントを記述しました。プレビューを取得できませんでした。問題を解決するのを手伝ってもらえますか?

アクセス許可を使用してアプリケーションを構成しました。

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

表面の場所を作成しました

<SurfaceView
    android:id="@+id/cameraView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />

カメラをプレビューするコード セグメントを以下に記述しました。

public class MainActivity extends Activity  {

SurfaceView surfaceView;
SurfaceHolder surfaceHolder;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWindow().setFormat(PixelFormat.UNKNOWN);
        surfaceView = (SurfaceView)findViewById(R.id.cameraView);
        surfaceHolder = surfaceView.getHolder();
}

 private void preview ( ) {

    try {
             camera.setPreviewDisplay(surfaceHolder);
             camera.startPreview();
    } catch ( IOException void_) {
        ;
    }
}
4

3 に答える 3

1

を使用してカメラから画像をキャプチャできます。

  1. インテント(デフォルトのカメラを開いて画像をキャプチャ)
  2. Camera API (画像のプレビューを取得し、カメラ機能をカスタマイズすることもできます)

この記事を段階的な解決策を読んでください。これは非常に役立つことがわかりました

Android カメラ API - チュートリアル

これで何か問題があれば教えてください。私はすでにやっています

編集:

管理ポリシーを使用してカメラを無効にすることができます

こちらの公式ドキュメントとサンプルコードを確認してください。この記事も役立つ場合があります

于 2013-01-15T12:03:12.193 に答える
0

4.0 より前の Google が提供する Android SDK は、スタンドイン アニメーション以外のカメラ エミュレーションを提供していません。Google はまだ実用的な実装を提供していないため (または、利用可能になる日付さえも) ありません。

要件を達成するのに役立つ特定のリンクがあります。これこのリンクを参照してください。

それがあなたを助けることを願っています:)

于 2013-01-15T10:12:28.930 に答える
0

カメラ プレビュー用にこのクラスを実装し、アクティビティの oncreate メソッドでそのコンストラクターを呼び出します。

    public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    private SurfaceHolder mSurfaceHolder;
    private Camera mCamera;

    @SuppressWarnings("deprecation")
    public CameraPreview(Context context, Camera camera) {
        super(context);
        this.mCamera = camera;
        this.mSurfaceHolder = this.getHolder();
        this.mSurfaceHolder.addCallback(this);
        this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        try {
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();
        } catch (IOException e) {
            // left blank for now
        }
    }


    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        mCamera.stopPreview();
        mCamera.release();
    }


    public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
            int width, int height) {
        // start preview with new settings
        try {
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();
        } catch (Exception e) {
            // intentionally left blank for a test
        }
    }
}
于 2013-01-15T11:19:01.013 に答える