<!-- カメラ機能へアクセスする権限 -->
<uses-permission android:name="android.permission.CAMERA"/>
<!-- カメラ機能のない端末へのインストールを制限する -->
<uses-feature android:name="android.hardware.camera"/>
<!-- カメラActivityの追加と設定 -->
<activity
android:name=".view.CameraActivity"
android:screenOrientation="portrait"/>
<!--
screenOrientationでActivityの画面向きを固定する
portrait = 縦固定
landscape = 横固定
-->
以下のレイアウトファイルを追加。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/camera_preview"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
import android.content.Context;
import android.hardware.Camera;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
public class CameraPreview
extends SurfaceView
implements SurfaceHolder.Callback
{
private Context _context;
private Camera _camera;
public CameraPreview(
Context context,
Camera camera)
{
_context = context;
_camera = camera;
SurfaceHolder holder = getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.
SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(
SurfaceHolder holder)
{
try
{
_camera.setPreviewDisplay(holder);
_camera.startPreview();
}
catch (Exception e)
{
Log.d("Failed to create surfaceview.");
}
}
@Override
public void surfaceDestroyed(
SurfaceHolder holder)
{}
@Override
public void surfaceChanged(
SurfaceHolder holder,
int format,
int width,
int height)
{}
}
import android.app.Activity;
import android.os.Bundle;
import android.widget.FrameLayout;
import android.hardware.Camera;
public class CameraActivity
extends Activity
{
private Camera _camera;
private CameraPreview _preview;
@Override
public void onCreate(
Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
try
{
_camera = Camera.open();
FrameLayout layout = (FrameLayout)
findViewById(R.id.camera_preview);
_preview = new CameraPreview(this, _camera);
layout.addView(_preview);
}
catch (Exception e)
{
Log.d("Failed to initialize a camera instance.");
finish();
}
}
@Override
public void onPause()
{
super.onPause();
if (_camera != null) {
_camera.release();
_camera = null;
}
}
}