2011年12月17日土曜日

Android:カメラで撮影:hardware.Camera

画面にカメラの映像は映さないで、
ボタンを押して撮影してSDカードに保存するだけのソース。


package com.android_test;

import java.io.FileOutputStream;

import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;

public class AndroidTestActivity extends Activity {
 private String filePath;

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // カメラの総数
  int numberOfCameras = Camera.getNumberOfCameras();
  Log.d("個数", String.valueOf(numberOfCameras));

  //保存フォルダの取得
  filePath = Environment.getExternalStorageDirectory().getPath();// /mnt/sdcard
  Log.d("SDカードのパス", filePath );
    }
    //ボタンが押された時の処理
    public void SetButtonOnClick(View v) {
     Camera camera = Camera.open(1);//カメラを開く
     //カメラ画像を取得
     camera.takePicture(null, null, mPictureListener);
 }

 // JPEGイメージ生成後に呼ばれるコールバック
 private Camera.PictureCallback mPictureListener = new Camera.PictureCallback() {
  public void onPictureTaken(byte[] data, Camera camera) {
   // SDカードにJPEGデータを保存する
   if (data != null) {
    FileOutputStream myFOS = null;
    try {
     myFOS = new FileOutputStream( filePath + "/DCIM/Camera/camera_test.jpg");
     myFOS.write(data);
     myFOS.close();
    } catch (Exception e) {
     e.printStackTrace();
    }
    camera.release();
   }
  }
 };
}

マニフェストファイルに追加
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />

撮影した画像 640x480


USBカメラを接続して撮影した画像
Camera.open(0);

関連記事

0 件のコメント:

コメントを投稿