1

カメラ サーフェス ビューが正常に作成され、アプリの起動/再起動時に機能します。しかし、ゲームを一時停止して再開すると(ホーム画面を押すと)、黒い画面が表示されるだけです。ここで何か不足していますか?

サーフェスのコードは次のとおりです (メイン アクティビティから作成されます)。

public class CameraView extends SurfaceView implements SurfaceHolder.Callback{

static Camera camera = null;
Surface camSurface;
String TAG = "CameraView";
static SurfaceHolder mHolder;

public CameraView(Context context) {
    super(context);
    getHolder().addCallback(this);
    getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    // TODO Auto-generated constructor stub
}

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
    // TODO Auto-generated method stub

    Log.e(TAG, "Camera view created");

    mHolder = getHolder();

    if(camera == null){
        camera = Camera.open();
    }

    if(camera == null){
        Log.e(TAG, "Null camera");
    }

    try {
        camera.setPreviewDisplay(getHolder());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        camera.release();
        camera = null;
        e.printStackTrace();
    }

}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
    // TODO Auto-generated method stub
    synchronized(mHolder){
        if(camera!=null){
            camera.stopPreview();
            camera.release();
            camera = null;
        }
    }
}
}
4

1 に答える 1

1

アプリを離れて戻ってきた場合でも、ある時点で camera.startPreview() を呼び出す必要があります。これを surfaceChanged() メソッドに入れます。

最初に起動したときと同じように、カメラの有効なインスタンスがあることを確認してください。

于 2013-05-29T03:37:16.683 に答える