package com.example.android.recipe064;
import java.io.IOException;
import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
public class Recipe064 extends Activity {
// ビューを重ねて表示するためのレイアウト
private FrameLayout mFrameLayout;
// カメラプレビューのためのSurfaceView
private SurfaceView mCameraView;
// 重ねるビュー
private OverlayView mOverlayView;
// カメラ
private Camera mCamera;
private SurfaceHolder.Callback mSurfaceHolderCallback =
new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
// カメラを起動(オープン)します
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
}
public void surfaceChanged(SurfaceHolder holder,
int format, int width, int height) {
// カメラのプレビューを開始します
mCamera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// カメラのプレビューを停止します
mCamera.stopPreview();
// カメラを停止(解放)します
mCamera.release();
mCamera = null;
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// フルスクリーン表示にします
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// タイトルバーを非表示にします
requestWindowFeature(Window.FEATURE_NO_TITLE);
// レイアウトとビューを生成して
mFrameLayout = new FrameLayout(this);
mCameraView = new SurfaceView(this);
mOverlayView = new OverlayView(this);
// SurfaceHolderにコールバックとタイプを指定
SurfaceHolder holder = mCameraView.getHolder();
holder.addCallback(mSurfaceHolderCallback);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// 重ねます
mFrameLayout.addView(mCameraView);
// 後にaddViewしたビューが手前に表示されます。
mFrameLayout.addView(mOverlayView);
setContentView(mFrameLayout);
}
}