1

カメラのプレビューを表示するサーフェスビューを作成しました。ただし、仮想 Android フォンで開くと、実際のカメラ画像ではなく、市松模様の白黒の背景と大きな動く緑色のボックスが表示されます。

サーフェスビューのコードは次のとおりです。

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{

private Camera camera;
private SurfaceHolder surfaceholder;

public CameraPreview(Context context) {
    super(context);
    surfaceholder= getHolder();
    surfaceholder.addCallback(this);
    surfaceholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)   {
    Camera.Parameters parameters = camera.getParameters();
    parameters.setPreviewSize(width, height);
    parameters.setPictureFormat(PixelFormat.JPEG);
    camera.setParameters(parameters);
    camera.startPreview();      
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
    try {
        camera.setPreviewDisplay(surfaceholder);
    } catch (IOException e) {}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    stopCam();
}
public void stopCam(){
    if (camera!=null){
        camera.stopPreview();
        camera.release();
    }
}
 }
4

1 に答える 1

2

「仮想Androidフォン」はエミュレーターを意味すると仮定します。ほとんどのカメラはエミュレーターでサポートされていないため (いくつかの特別な例外を除く)、コードに問題はありません。 .

私の知る限り、エミュレータで実際のプライマリ カメラをサポートする唯一の方法は、Mac OS X で 4.0.x エミュレータ イメージを使用することです。この場合、組み込みの iSight カメラを検出して使用できます。それ以外の場合は、次の記事で説明されているように、エミュレータへの Web カメラ接続をサポートする特別なコードを記述する必要があります: http://www.tomgibara.com/android/camera-source

HTH

于 2012-06-19T19:31:28.773 に答える