Camera周りを少々

越野亮さんの「Androidアプリ開発超入門」を参考に。

CameraSample.java

package jp.android.camerasample;

import android.app.Activity;
import android.os.Bundle;

public class CameraSample extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        setContentView(new MyCameraView(this));
    }
}

MyCameraView.java

package jp.android.camerasample;

import java.io.IOException;
import android.content.Context;
import android.hardware.Camera;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


public class MyCameraView extends SurfaceView implements SurfaceHolder.Callback{
	private SurfaceHolder m_holder;
	private Camera m_camera;
	
	public MyCameraView(Context context) {
		super(context);
		m_holder = getHolder();
		m_holder.addCallback(this);
		//オプションにGPUやHWがあるから実機だと、そっちで処理してくれるんだろうか^^;
		m_holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	}
	
	public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){
		Camera.Parameters parameters = m_camera.getParameters();
		parameters.setPreviewSize(width, height);
		m_camera.setParameters(parameters);
		m_camera.startPreview();
	}
	
	public void surfaceCreated(SurfaceHolder holder){
		m_camera = Camera.open();
		try{
			m_camera.setPreviewDisplay(holder);
		}catch(IOException e){
			
		}
	}
	
	public void surfaceDestroyed(SurfaceHolder holder){
		m_camera.stopPreview();
		m_camera = null;
	}
}

って、動かしてみようって、動かねぇ〜w;